From de0374e0afa0fe11e5609d619a222754a5e879c5 Mon Sep 17 00:00:00 2001 From: rud0lp20 Date: Thu, 10 Jan 2013 18:17:32 +0000 Subject: Implemented official walk path dealing with obstacle.(bugreport:6159) -see 'src/config/core.h' for settings[OFFICIAL_WALKPATH]. Fixed bugreport:7057 where HP_ASSUMPTIO should only double eDEF & eMDEF. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17091 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/unit.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/map/unit.c') diff --git a/src/map/unit.c b/src/map/unit.c index e0dc69d15..0104e9a42 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -315,16 +315,21 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag) { struct unit_data* ud = NULL; struct status_change* sc = NULL; - +#ifdef OFFICIAL_WALKPATH + struct walkpath_data wpd; +#endif nullpo_ret(bl); ud = unit_bl2ud(bl); if( ud == NULL) return 0; -// disabled until we find the correct algorithm. [malufett] -//#ifdef OFFICIAL_WALKPATH -// if( !path_search_long(NULL, bl->m, bl->x, bl->y, x, y, CELL_CHKWALL) ) return 0; -//#endif + +#ifdef OFFICIAL_WALKPATH + if( path_search(&wpd, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS) // Check if there is an obstacle between + && wpd.path_len > 14 ) // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett] + return 0; +#endif + if (flag&4 && DIFF_TICK(ud->canmove_tick, gettick()) > 0 && DIFF_TICK(ud->canmove_tick, gettick()) < 2000) { // Delay walking command. [Skotlex] -- cgit v1.2.3-60-g2f50