diff options
author | shennetsind <ind@henn.et> | 2013-01-28 17:37:22 -0200 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2013-01-28 17:37:22 -0200 |
commit | 9f75e121fd20aaa20e337c8664ba9a57fe90fe21 (patch) | |
tree | e9ab1c0a067165a785e2db5f67ef8b46273cb031 | |
parent | c1e85710adac6f38eacd5b27b2236415abcfc237 (diff) | |
download | hercules-9f75e121fd20aaa20e337c8664ba9a57fe90fe21.tar.gz hercules-9f75e121fd20aaa20e337c8664ba9a57fe90fe21.tar.bz2 hercules-9f75e121fd20aaa20e337c8664ba9a57fe90fe21.tar.xz hercules-9f75e121fd20aaa20e337c8664ba9a57fe90fe21.zip |
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 <ind@henn.et>
-rw-r--r-- | src/map/skill.c | 6 | ||||
-rw-r--r-- | src/map/status.c | 2 | ||||
-rw-r--r-- | src/map/unit.c | 6 |
3 files changed, 8 insertions, 6 deletions
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; |