diff options
Diffstat (limited to 'src')
-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; |