diff options
author | Inkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-05-22 15:36:41 +0000 |
---|---|---|
committer | Inkfish <Inkfish@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2009-05-22 15:36:41 +0000 |
commit | a4238c21464e3bf61150795d49f9478293cae586 (patch) | |
tree | 6a57b1b11073ef6175de38fb37a3c1d334366e56 /src | |
parent | 4b9b06cc7dad8a7dd9ba729fbed753b7acd49367 (diff) | |
download | hercules-a4238c21464e3bf61150795d49f9478293cae586.tar.gz hercules-a4238c21464e3bf61150795d49f9478293cae586.tar.bz2 hercules-a4238c21464e3bf61150795d49f9478293cae586.tar.xz hercules-a4238c21464e3bf61150795d49f9478293cae586.zip |
NPC_STOP now stops both sides and will be canceled if either side teleports or dies.(bugreport:3099)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13803 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/skill.c | 6 | ||||
-rw-r--r-- | src/map/status.c | 9 | ||||
-rw-r--r-- | src/map/unit.c | 3 |
3 files changed, 16 insertions, 2 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index 208b6afd5..8baf27b95 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3604,7 +3604,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case PF_MEMORIZE: case PA_SACRIFICE: case ASC_EDP: - case NPC_STOP: case PF_DOUBLECASTING: case SG_SUN_COMFORT: case SG_MOON_COMFORT: @@ -3621,6 +3620,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; + case NPC_STOP: + if( clif_skill_nodamage(src,bl,skillid,skilllv, + sc_start2(bl,type,100,skilllv,src->id,skill_get_time(skillid,skilllv)) ) ) + sc_start2(src,type,100,skilllv,bl->id,skill_get_time(skillid,skilllv)); + break; case HP_ASSUMPTIO: if( sd && dstmd ) clif_skill_fail(sd,skillid,0,0); diff --git a/src/map/status.c b/src/map/status.c index 7fe6b2326..7839330e4 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -6553,6 +6553,15 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) // from here it's not neccesary to continue return 1; break; + case SC_STOP: + if( sce->val2 ) + { + struct block_list* tbl = map_id2bl(sce->val2); + sce->val2 = 0; + if( tbl && (sc = status_get_sc(tbl)) && sc->data[SC_STOP] && sc->data[SC_STOP]->val2 == bl->id ) + status_change_end(tbl, SC_STOP, -1); + } + break; } opt_flag = 1; diff --git a/src/map/unit.c b/src/map/unit.c index 3dd1b30e4..44dbaf741 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1750,7 +1750,7 @@ int unit_remove_map_(struct block_list *bl, int clrtype, const char* file, int l status_change_end(bl,SC_BASILICA,-1); status_change_end(bl,SC_ANKLE,-1); status_change_end(bl,SC_TRICKDEAD,-1); - status_change_end(bl,SC_BLADESTOP,-1); + status_change_end(bl,SC_BLADESTOP_WAIT,-1); status_change_end(bl,SC_RUN,-1); skill_stop_dancing(bl); status_change_end(bl,SC_WARM,-1); @@ -1765,6 +1765,7 @@ int unit_remove_map_(struct block_list *bl, int clrtype, const char* file, int l if (sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_SELF) status_change_end(bl,SC_GOSPEL,-1); status_change_end(bl,SC_CHANGE,-1); + status_change_end(bl,SC_STOP,-1); } if (bl->type&BL_CHAR) { |