From 9f75e121fd20aaa20e337c8664ba9a57fe90fe21 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Mon, 28 Jan 2013 17:37:22 -0200 Subject: Fixed Bug #4832 Fixed Ankle Snare to behave as in official servers, you only stop walking when you reach your destination and activates all other traps in the path. http://hercules.ws/board/tracker/issue-4832-hunter-ht-anklesnare-serious-bug/ Signed-off-by: shennetsind --- src/map/skill.c | 6 ++++-- src/map/status.c | 2 -- src/map/unit.c | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/map/skill.c b/src/map/skill.c index 8e0bbabeb..5f3036565 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11445,8 +11445,10 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns const struct TimerData* td = tsc->data[type]?get_timer(tsc->data[type]->timer):NULL; if( td ) sec = DIFF_TICK(td->tick, tick); - unit_movepos(bl, src->bl.x, src->bl.y, 0, 0); - clif_fixpos(bl); + if( sg->unit_id == UNT_MANHOLE ) { + unit_movepos(bl, src->bl.x, src->bl.y, 0, 0); + clif_fixpos(bl); + } sg->val2 = bl->id; } else sec = 3000; //Couldn't trap it? diff --git a/src/map/status.c b/src/map/status.c index e615d5595..8167e9949 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -997,7 +997,6 @@ void initChangeTables(void) { StatusIconChangeTable[SC_HALLUCINATION] = SI_BLANK; /* StatusChangeState (SCS_) NOMOVE */ - StatusChangeStateTable[SC_ANKLE] |= SCS_NOMOVE; StatusChangeStateTable[SC_AUTOCOUNTER] |= SCS_NOMOVE; StatusChangeStateTable[SC_TRICKDEAD] |= SCS_NOMOVE; StatusChangeStateTable[SC_BLADESTOP] |= SCS_NOMOVE; @@ -8632,7 +8631,6 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_CONFUSION: case SC_CLOSECONFINE: case SC_CLOSECONFINE2: - case SC_ANKLE: case SC_SPIDERWEB: case SC_ELECTRICSHOCKER: case SC_BITE: diff --git a/src/map/unit.c b/src/map/unit.c index 0104e9a42..5d2a6c794 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -890,8 +890,7 @@ int unit_is_walking(struct block_list *bl) /*========================================== * Determines if the bl can move based on status changes. [Skotlex] *------------------------------------------*/ -int unit_can_move(struct block_list *bl) -{ +int unit_can_move(struct block_list *bl) { struct map_session_data *sd; struct unit_data *ud; struct status_change *sc; @@ -931,6 +930,9 @@ int unit_can_move(struct block_list *bl) sc->data[SC_CLOAKING]->val1 < 3 && !(sc->data[SC_CLOAKING]->val4&1)) ) return 0; + + if( sc->data[SC_ANKLE] && !unit_is_walking(bl) ) // Ankle only stops you after you're done moving + return 0; if (sc->opt1 > 0 && sc->opt1 != OPT1_STONEWAIT && sc->opt1 != OPT1_BURNING && (sc->opt1 != OPT1_CRYSTALIZE && bl->type != BL_MOB)) return 0; -- cgit v1.2.3-70-g09d2