summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-24 22:20:06 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-05-24 22:20:06 +0000
commit7ac8ddc2d5c0827c86a4b3813a5fa2b29541f684 (patch)
treed4072b0c2c08d147bc166f34e386a2fa4d24560f /src
parent21aab2567e2059bd2d377d70fc1b437e5cc28b0e (diff)
downloadhercules-7ac8ddc2d5c0827c86a4b3813a5fa2b29541f684.tar.gz
hercules-7ac8ddc2d5c0827c86a4b3813a5fa2b29541f684.tar.bz2
hercules-7ac8ddc2d5c0827c86a4b3813a5fa2b29541f684.tar.xz
hercules-7ac8ddc2d5c0827c86a4b3813a5fa2b29541f684.zip
Fixed bugreport:5809 Ice Wall should now block mobs properly.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16146 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/mob.c3
-rw-r--r--src/map/skill.c6
2 files changed, 7 insertions, 2 deletions
diff --git a/src/map/mob.c b/src/map/mob.c
index cf2e8ed6e..b1deb5b81 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -1074,12 +1074,15 @@ static int mob_ai_sub_hard_activesearch(struct block_list *bl,va_list ap)
((*target) == NULL || !check_distance_bl(&md->bl, *target, dist)) &&
battle_check_range(&md->bl,bl,md->db->range2)
) { //Pick closest target?
+
if( map[bl->m].icewall_num &&
!path_search_long(NULL,bl->m,md->bl.x,md->bl.y,bl->x,bl->y,CELL_CHKICEWALL) ) {
if( !check_distance_bl(&md->bl, bl, status_get_range(&md->bl) ) )
return 0;
+
}
+
(*target) = bl;
md->target_id=bl->id;
md->min_chase= dist + md->db->range3;
diff --git a/src/map/skill.c b/src/map/skill.c
index 0916f33bd..f373ab08f 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -9954,12 +9954,14 @@ static int skill_icewall_block(struct block_list *bl,va_list ap) {
if( !md->target_id )
return 0;
nullpo_ret( ( target = map_id2bl(md->target_id) ) );
-
+
if( path_search_long(NULL,bl->m,bl->x,bl->y,target->x,target->y,CELL_CHKICEWALL) )
return 0;
- if( !check_distance_bl(bl, target, status_get_range(bl) ) )
+ if( !check_distance_bl(bl, target, status_get_range(bl) ) ) {
mob_unlocktarget(md,gettick());
+ mob_stop_walking(md,1);
+ }
return 0;
}