diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-01-16 13:56:17 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-01-16 13:56:17 +0000 |
commit | 8ff8d0f9ee285452ba7820c3fb333eddb042272b (patch) | |
tree | 167718cd574dbaa83ed3c4baf4ede65a0c5266f3 /src/map/unit.c | |
parent | e2d3ae9dc682afc1ac34a536006ef79370040b04 (diff) | |
download | hercules-8ff8d0f9ee285452ba7820c3fb333eddb042272b.tar.gz hercules-8ff8d0f9ee285452ba7820c3fb333eddb042272b.tar.bz2 hercules-8ff8d0f9ee285452ba7820c3fb333eddb042272b.tar.xz hercules-8ff8d0f9ee285452ba7820c3fb333eddb042272b.zip |
- Added function unit_escape to simplify the run-away code a bit in the mob ai.
- Some cleaning on the mob_ai to enable mobs to run away from their current target when they are rude-attacked by them.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9658 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/unit.c')
-rw-r--r-- | src/map/unit.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/map/unit.c b/src/map/unit.c index 8684c0732..a03b24d74 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -413,6 +413,19 @@ int unit_run(struct block_list *bl) return 1; } +//Makes bl attempt to run dist cells away from target. Uses hard-paths. +int unit_escape(struct block_list *bl, struct block_list *target, int dist) +{ + int dir = map_calc_dir(target, bl->x, bl->y); + while (dist > 0 && map_getcell(bl->m, + bl->x + dist*dirx[dir], bl->y + dist*diry[dir], + CELL_CHKNOREACH)) + dist--; + return (dist > 0 && unit_walktoxy(bl, + bl->x + dist*dirx[dir], bl->y + dist*diry[dir], + 0)); +} + //Instant warp function. int unit_movepos(struct block_list *bl,int dst_x,int dst_y, int easy, int checkpath) { |