summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormalufett <malufett.eat.my.binaries@gmail.com>2013-02-21 21:27:35 +0800
committermalufett <malufett.eat.my.binaries@gmail.com>2013-02-21 21:27:35 +0800
commit064dad8c094d9c694a73a0110189932c9ab4f257 (patch)
treece9c6d96c0de5963a38964c713c5c8f77a92b897
parent625981b877c90a69b1ae644013edcd59f9143e9c (diff)
downloadhercules-064dad8c094d9c694a73a0110189932c9ab4f257.tar.gz
hercules-064dad8c094d9c694a73a0110189932c9ab4f257.tar.bz2
hercules-064dad8c094d9c694a73a0110189932c9ab4f257.tar.xz
hercules-064dad8c094d9c694a73a0110189932c9ab4f257.zip
Fixed Bug #7066 and Follow up Bug #4832
-Where KG and OB can hit there Zanzoe. -Ankle Snare should now work properly in GvG. Signed-off-by: malufett <malufett.eat.my.binaries@gmail.com>
-rw-r--r--src/map/battle.c2
-rw-r--r--src/map/status.c1
-rw-r--r--src/map/unit.c6
3 files changed, 2 insertions, 7 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 3140fbc18..924c9d8a5 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -5195,7 +5195,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
case BL_MOB:
if(((((TBL_MOB*)target)->special_state.ai == 2 || //Marine Spheres
(((TBL_MOB*)target)->special_state.ai == 3 && battle_config.summon_flora&1)) && //Floras
- s_bl->type == BL_PC && src->type != BL_MOB) || ((TBL_MOB*)target)->special_state.ai == 4) //Zanzoe
+ s_bl->type == BL_PC && src->type != BL_MOB) || ((TBL_MOB*)target)->special_state.ai == 4 && t_bl->id != src->id) //Zanzoe
{ //Targettable by players
state |= BCT_ENEMY;
strip_enemy = 0;
diff --git a/src/map/status.c b/src/map/status.c
index edac88af0..d61503a0e 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -998,6 +998,7 @@ 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;
diff --git a/src/map/unit.c b/src/map/unit.c
index 4ca64d7f8..388c3757d 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -353,8 +353,6 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
map_random_dir(bl, &ud->to_x, &ud->to_y);
if(ud->walktimer != INVALID_TIMER) {
- if( !battle_config.skill_trap_type && sc && map_flag_gvg(bl->m) && sc->data[SC_ANKLE] ) // Ankle disallows you from changing your path
- return 0;
// When you come to the center of the grid because the change of destination while you're walking right now
// Call a function from a timer unit_walktoxy_sub
ud->state.change_walk_target = 1;
@@ -430,8 +428,6 @@ int unit_walktobl(struct block_list *bl, struct block_list *tbl, int range, int
map_random_dir(bl, &ud->to_x, &ud->to_y);
if(ud->walktimer != INVALID_TIMER) {
- if( !battle_config.skill_trap_type && sc && map_flag_gvg(bl->m) && sc->data[SC_ANKLE] ) // Ankle disallows you from changing your path
- return 0;
ud->state.change_walk_target = 1;
set_mobstate(bl, flag&2);
return 1;
@@ -938,8 +934,6 @@ int unit_can_move(struct block_list *bl) {
)
return 0;
- if( sc->data[SC_ANKLE] && ( battle_config.skill_trap_type || ( !map_flag_gvg(bl->m) && !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;