summaryrefslogtreecommitdiff
path: root/src/map/mob.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-02-22 15:27:04 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-02-22 15:27:04 +0000
commit4d1e84d0d9af4fcad025e039544a37a76c91aa1a (patch)
tree6a321009e67b491bc9bb5fb736b043953d8eee94 /src/map/mob.c
parent8f639ee19e832b9748f4315a9f44a45551e96526 (diff)
downloadhercules-4d1e84d0d9af4fcad025e039544a37a76c91aa1a.tar.gz
hercules-4d1e84d0d9af4fcad025e039544a37a76c91aa1a.tar.bz2
hercules-4d1e84d0d9af4fcad025e039544a37a76c91aa1a.tar.xz
hercules-4d1e84d0d9af4fcad025e039544a37a76c91aa1a.zip
- Added map chk cells types CELL_CHKREACH and CELL_CHKNOREACH, they are the same as their PASS/NOPASS equivalents, but will ignore the cell-stacking mod when enabled.
- Updated path.c with jA's implementation, which should make long path searching more efficient. - Also added some typedefs from jA for the common structure types (PC/MOB/NPC, etc) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5366 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/mob.c')
-rw-r--r--src/map/mob.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/map/mob.c b/src/map/mob.c
index 93198ddb4..48ed37475 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -604,11 +604,7 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
easy = 1;
break;
}
-#ifdef CELL_NOSTACK
- //In no stack mode, do these path searches ignoring other players as it's just
- //for reachability judging, not the actual path used. [Skotlex]
- easy |= 0x30000;
-#endif
+
if( md->bl.m != bl->m) // ˆá‚¤ƒƒbƒv
return 0;
@@ -622,7 +618,7 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
wpd.path_len=0;
wpd.path_pos=0;
wpd.path_half=0;
- if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x,bl->y,easy)!=-1)
+ if(path_search_real(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x,bl->y,easy,CELL_CHKNOREACH)!=-1)
return 1;
// It judges whether it can adjoin or not.
@@ -630,10 +626,10 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range, int state
dy=abs(bl->y - md->bl.y);
dx=(dx>0)?1:((dx<0)?-1:0);
dy=(dy>0)?1:((dy<0)?-1:0);
- if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x-dx,bl->y-dy,easy)!=-1)
+ if(path_search_real(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x-dx,bl->y-dy,easy,CELL_CHKNOREACH)!=-1)
return 1;
for(i=0;i<9;i++){
- if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x-1+i/3,bl->y-1+i%3,easy)!=-1)
+ if(path_search_real(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x-1+i/3,bl->y-1+i%3,easy, CELL_CHKNOREACH)!=-1)
return 1;
}
return 0;