diff options
author | rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-06-01 14:52:13 +0000 |
---|---|---|
committer | rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-06-01 14:52:13 +0000 |
commit | c7e61f1ad2d02b5ee9605d6f7c83a7456ecaff09 (patch) | |
tree | 8106e6329419f438c59c2b437f34dcabfbd69c96 | |
parent | e48d77bc2d05725ebabfc8b314800c1ab808da04 (diff) | |
download | hercules-c7e61f1ad2d02b5ee9605d6f7c83a7456ecaff09.tar.gz hercules-c7e61f1ad2d02b5ee9605d6f7c83a7456ecaff09.tar.bz2 hercules-c7e61f1ad2d02b5ee9605d6f7c83a7456ecaff09.tar.xz hercules-c7e61f1ad2d02b5ee9605d6f7c83a7456ecaff09.zip |
Fixed bugreport:5889 GC_ROLLINGCUTTER range and behavior are now updated.
Fixed part of bugreport:5880
-Fixed damage formula of NC_SELFDESTRUCTION.
-Fixed damage formula of GC_CROSSRIPPERSLASHER.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16206 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | db/pre-re/skill_cast_db.txt | 4 | ||||
-rw-r--r-- | db/pre-re/skill_db.txt | 2 | ||||
-rw-r--r-- | db/re/skill_cast_db.txt | 4 | ||||
-rw-r--r-- | db/re/skill_db.txt | 2 | ||||
-rw-r--r-- | src/map/battle.c | 18 | ||||
-rw-r--r-- | src/map/config/const.h | 6 | ||||
-rw-r--r-- | src/map/map.c | 1 | ||||
-rw-r--r-- | src/map/skill.c | 1 |
8 files changed, 22 insertions, 16 deletions
diff --git a/db/pre-re/skill_cast_db.txt b/db/pre-re/skill_cast_db.txt index 9fe7b4872..d3182678b 100644 --- a/db/pre-re/skill_cast_db.txt +++ b/db/pre-re/skill_cast_db.txt @@ -1138,8 +1138,8 @@ 2034,0,1000,0,0,0,0 //-- GC_HALLUCINATIONWALK 2035,0,0,0,30000:35000:40000:45000:50000,25000,300000 -//-- GC_ROLLINGCUTTER //CHECK duration 1 (should be as long as esma status?) -2036,0,200,0,4000,0,0 +//-- GC_ROLLINGCUTTER +2036,0,200,0,3000,0,0 //-- GC_CROSSRIPPERSLASHER 2037,0,1000,0,0,0,0 //========================================== diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 308ad84f5..5e0dd7724 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -742,7 +742,7 @@ 2033,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0, GC_CLOAKINGEXCEED,Cloaking Exceed 2034,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,0, GC_PHANTOMMENACE,Phantom Menace 2035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0, GC_HALLUCINATIONWALK,Hallucination Walk -2036,0,6,4,-1,0x2,1,5,1,no,0,0,0,weapon,0, GC_ROLLINGCUTTER,Rolling Cutter +2036,0,6,4,-1,0x2,1:1:1:1:2,5,1,no,0,0,0,weapon,0, GC_ROLLINGCUTTER,Rolling Cutter 2037,7,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, GC_CROSSRIPPERSLASHER,Cross Ripper Slasher //**** diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt index 14291896f..203e40b79 100644 --- a/db/re/skill_cast_db.txt +++ b/db/re/skill_cast_db.txt @@ -1139,8 +1139,8 @@ 2034,0,1000,0,0,0,0,0 //-- GC_HALLUCINATIONWALK 2035,0,0,0,30000:35000:40000:45000:50000,25000,300000,0 -//-- GC_ROLLINGCUTTER //CHECK duration 1 (should be as long as esma status?) -2036,0,200,0,4000,0,0,0 +//-- GC_ROLLINGCUTTER +2036,0,200,0,3000,0,0,0 //-- GC_CROSSRIPPERSLASHER 2037,0,1000,0,0,0,0,0 //========================================== diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index ad907e8ab..24f7eddb3 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -743,7 +743,7 @@ 2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0, GC_CLOAKINGEXCEED,Cloaking Exceed 2034,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,0, GC_PHANTOMMENACE,Phantom Menace 2035,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0, GC_HALLUCINATIONWALK,Hallucination Walk -2036,0,6,4,-1,0x2,1,5,1,no,0,0,0,weapon,0, GC_ROLLINGCUTTER,Rolling Cutter +2036,0,6,4,-1,0x2,1:1:1:1:2,5,1,no,0,0,0,weapon,0, GC_ROLLINGCUTTER,Rolling Cutter 2037,7,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, GC_CROSSRIPPERSLASHER,Cross Ripper Slasher //**** diff --git a/src/map/battle.c b/src/map/battle.c index 2c74ed240..7d6517c8e 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2077,11 +2077,13 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo break; case GC_ROLLINGCUTTER: skillratio += 20 * skill_lv; + RE_LVL_DMOD(); break; case GC_CROSSRIPPERSLASHER: - skillratio += 60 + 40 * skill_lv; + skillratio += 300 + 80 * skill_lv; + RE_LVL_DMOD(); if( sc && sc->data[SC_ROLLINGCUTTER] ) - skillratio += 25 * sc->data[SC_ROLLINGCUTTER]->val1; + skillratio += sc->data[SC_ROLLINGCUTTER]->val1 * sstatus->agi; break; /** * Arch Bishop @@ -3927,7 +3929,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * break; case RK_DRAGONBREATH: md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; - RE_LVL_MDMOD(); + RE_LVL_MDMOD(150); if (sd) md.damage = md.damage * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; md.flag |= BF_LONG|BF_WEAPON; break; @@ -3946,10 +3948,12 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * * Mechanic **/ case NC_SELFDESTRUCTION: - md.damage = (sd?pc_checkskill(sd,NC_MAINFRAME):10) * skill_lv * (status_get_sp(src) + sstatus->vit); - RE_LVL_MDMOD(); - if (sd) md.damage = md.damage + status_get_hp(src); - status_set_sp(src, 0, 0); + { + short totaldef = tstatus->def2 + (short)status_get_def(target); + md.damage = ( (sd?pc_checkskill(sd,NC_MAINFRAME):10) + 8 ) * ( skill_lv + 1 ) * ( status_get_sp(src) + sstatus->vit ); + RE_LVL_MDMOD(100); + md.damage += status_get_hp(src) - totaldef; + } break; case GN_THORNS_TRAP: md.damage = 100 + 200 * skill_lv + sstatus->int_; diff --git a/src/map/config/const.h b/src/map/config/const.h index 7acc5e522..b67ed050f 100644 --- a/src/map/config/const.h +++ b/src/map/config/const.h @@ -87,9 +87,9 @@ #define RE_LVL_DMOD() \ if( status_get_lv(src) > 100 ) \ skillratio = skillratio * status_get_lv(src) / 100; - #define RE_LVL_MDMOD() \ - if( status_get_lv(src) > 100 ) \ - md.damage = md.damage * status_get_lv(src) / 150; + #define RE_LVL_MDMOD(val) \ + if( status_get_lv(src) > 100 && val > 0) \ + md.damage = md.damage * status_get_lv(src) / val; /* ranger traps special */ #define RE_LVL_TMDMOD() \ if( status_get_lv(src) > 100 ) \ diff --git a/src/map/map.c b/src/map/map.c index 073901204..1c831c5f1 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -403,6 +403,7 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick) if (sc->data[SC_PROPERTYWALK] && sc->data[SC_PROPERTYWALK]->val3 >= skill_get_maxcount(sc->data[SC_PROPERTYWALK]->val1,sc->data[SC_PROPERTYWALK]->val2) ) status_change_end(bl,SC_PROPERTYWALK,INVALID_TIMER); + status_change_end(bl, SC_ROLLINGCUTTER, INVALID_TIMER); //If you move, you lose your counters. } else if (bl->type == BL_NPC) npc_unsetcells((TBL_NPC*)bl); diff --git a/src/map/skill.c b/src/map/skill.c index dc93a498c..27997c713 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7770,6 +7770,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in pc_setmadogear(sd, 0); clif_skill_nodamage(src, bl, skillid, skilllv, 1); skill_castend_damage_id(src, src, skillid, skilllv, tick, flag); + status_set_sp(src, 0, 0); } break; |