From a4238c21464e3bf61150795d49f9478293cae586 Mon Sep 17 00:00:00 2001 From: Inkfish Date: Fri, 22 May 2009 15:36:41 +0000 Subject: 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 --- src/map/skill.c | 6 +++++- src/map/status.c | 9 +++++++++ src/map/unit.c | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/map') 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) { -- cgit v1.2.3-70-g09d2