diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-09-29 13:57:41 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-09-29 13:57:41 +0000 |
commit | 3fed87361c9edc2ab38e56b6558c143fb2f96e5a (patch) | |
tree | e43cb6a78aea232903ef28a4b09f2400f89b043e /src/map/unit.c | |
parent | 8601d24575d5880716bae8855021814975222da8 (diff) | |
download | hercules-3fed87361c9edc2ab38e56b6558c143fb2f96e5a.tar.gz hercules-3fed87361c9edc2ab38e56b6558c143fb2f96e5a.tar.bz2 hercules-3fed87361c9edc2ab38e56b6558c143fb2f96e5a.tar.xz hercules-3fed87361c9edc2ab38e56b6558c143fb2f96e5a.zip |
- Added a check un unit_run when unit_walktoxy fails. Should fix running getting you stuck sometimes when running on diagonals near obstacles.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8900 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/unit.c')
-rw-r--r-- | src/map/unit.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/map/unit.c b/src/map/unit.c index 751460c54..b7f42447e 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -393,7 +393,21 @@ int unit_run(struct block_list *bl) clif_status_change(bl, SI_BUMP, 0); return 0; } - unit_walktoxy(bl, to_x, to_y, 1); + if (unit_walktoxy(bl, to_x, to_y, 1)) + return 1; + //There must be an obstacle nearby. Attempt walking one cell at a time. + do { + to_x -= dir_x; + to_y -= dir_y; + } while (--i > 0 && !unit_walktoxy(bl, to_x, to_y, 1)); + if (i==0) { + clif_status_change(bl, SI_BUMP, 1); + status_change_end(bl,SC_RUN,-1); + skill_blown(bl,bl,skill_get_blewcount(TK_RUN,sc->data[SC_RUN].val1)|0x10000); + clif_fixpos(bl); + clif_status_change(bl, SI_BUMP, 0); + return 0; + } return 1; } |