From 03ac2b977ef873044018ed88a42c79838cf758be Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 10 May 2006 16:18:16 +0000 Subject: [PATCH] - Changed the state of Asura back to explosionspirits, added a hardcoded move_enable check when invoking Asura and NOT while in BladeStop or a Combo. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6552 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 3 ++ db/skill_require_db.txt | 2 +- src/map/skill.c | 84 +++++++++++++++++------------------------ 3 files changed, 38 insertions(+), 51 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 2020d69cd5..fb74d56695 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/05/10 + * Changed the state of Asura back to explosionspirits, added a hardcoded + move_enable check when invoking Asura and NOT while in BladeStop or a + Combo. [Skotlex] * Added back SC_XMAS to status.c, it got lost sometime during all the previous reworkings. [Skotlex] * Changed wedding costumes to use setoption rather than changebase. diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index d568d52a2e..b71a28f5c0 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -193,7 +193,7 @@ 268,0,0,1,0,50,0,99,0,0,none,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_STEELBODY## 269,0,0,10,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_BLADESTOP#n# 270,0,0,15,0,0,0,99,0,0,none,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_EXPLOSIONSPIRITS#g# -271,0,0,1,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,move_enable,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_EXTREMITYFIST#Ce# +271,0,0,1,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,explosionspirits,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_EXTREMITYFIST#Ce# 272,0,0,11:12:13:14:15,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_CHAINCOMBO#Aŏ# 273,0,0,11:12:13:14:15,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MO_COMBOFINISH#җ# diff --git a/src/map/skill.c b/src/map/skill.c index aebb74dbd1..4e74491855 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2625,54 +2625,38 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl,int s case KN_CHARGEATK: case MO_EXTREMITYFIST: /* ?CeP? */ + if (skillid == MO_EXTREMITYFIST && sc && sc->count) { - if (skillid == MO_EXTREMITYFIST && sc && sc->count) - { - if (sc->data[SC_EXPLOSIONSPIRITS].timer != -1) - status_change_end(src, SC_EXPLOSIONSPIRITS, -1); - if (sc->data[SC_BLADESTOP].timer != -1) - status_change_end(src,SC_BLADESTOP,-1); - } - if(!check_distance_bl(src, bl, 2)) { //Need to move to target. - int dx,dy; - - dx = bl->x - src->x; - dy = bl->y - src->y; - if(dx > 0) dx++; - else if(dx < 0) dx--; - if (dy > 0) dy++; - else if(dy < 0) dy--; - - if (skillid == KN_CHARGEATK) //Store distance in flag [Skotlex] - flag = distance_bl(src, bl); - - if (!unit_movepos(src, src->x+dx, src->y+dy, 1, 1)) { - if (sd) clif_skill_fail(sd,skillid,0,0); - break; - } - clif_slide(src,src->x,src->y); - if (skillid != MO_EXTREMITYFIST || battle_check_target(src, bl, BCT_ENEMY) > 0) //Check must be done here because EF should be broken this way.. [Skotlex] - skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); - else if (sd) - clif_skill_fail(sd,skillid,0,0); - /* Should be uneeded as you "slide", not run to the target. - struct unit_data *ud; - ud = unit_bl2ud(src); - if (ud) { - if(dx < 0) dx = -dx; - if(dy < 0) dy = -dy; - if(dy > dx) dx = dy; - dy = status_get_speed(src); - ud->attackabletime = tick + 100 + dy*dx; - unit_set_walkdelay(src, tick, 100 + dy*dx, 1); - if(DIFF_TICK(ud->canact_tick,ud->canmove_tick)<0) - ud->canact_tick = ud->canmove_tick; - } - */ - } - else //Assume minimum distance of 1 for Charge. - skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,skillid == KN_CHARGEATK?1:flag); + if (sc->data[SC_EXPLOSIONSPIRITS].timer != -1) + status_change_end(src, SC_EXPLOSIONSPIRITS, -1); + if (sc->data[SC_BLADESTOP].timer != -1) + status_change_end(src,SC_BLADESTOP,-1); } + if(!check_distance_bl(src, bl, 2)) { //Need to move to target. + int dx,dy; + + dx = bl->x - src->x; + dy = bl->y - src->y; + if(dx > 0) dx++; + else if(dx < 0) dx--; + if (dy > 0) dy++; + else if(dy < 0) dy--; + + if (skillid == KN_CHARGEATK) //Store distance in flag [Skotlex] + flag = distance_bl(src, bl); + + if (!unit_movepos(src, src->x+dx, src->y+dy, 1, 1)) { + if (sd) clif_skill_fail(sd,skillid,0,0); + break; + } + clif_slide(src,src->x,src->y); + if (skillid != MO_EXTREMITYFIST || battle_check_target(src, bl, BCT_ENEMY) > 0) //Check must be done here because EF should be broken this way.. [Skotlex] + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); + else if (sd) + clif_skill_fail(sd,skillid,0,0); + } + else //Assume minimum distance of 1 for Charge. + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,skillid == KN_CHARGEATK?1:flag); break; /* ?n??U?XL */ @@ -7767,10 +7751,6 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ case MO_EXTREMITYFIST: // ?CeP? // if(sd->sc.data[SC_EXTREMITYFIST].timer != -1) //To disable Asura during the 5 min skill block uncomment this... // return 0; - if(sd->sc.data[SC_EXPLOSIONSPIRITS].timer == -1) { - clif_skill_fail(sd,skill,0,0); - return 0; - } if(sd->sc.data[SC_BLADESTOP].timer!=-1) spiritball--; else if (sd->sc.data[SC_COMBO].timer != -1) { @@ -7781,6 +7761,10 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ else if (sd->sc.data[SC_COMBO].val1 == CH_CHAINCRUSH) spiritball = sd->spiritball?sd->spiritball:1; //It should consume whatever is left as long as it's at least 1. + } else if(!unit_can_move(&sd->bl)) + { //Placed here as ST_MOVE_ENABLE should not apply if rooted or on a combo. [Skotlex] + clif_skill_fail(sd,skill,0,0); + return 0; } break;