From 8990332f8e4af8ac589b22ec6b06a62cef12209b Mon Sep 17 00:00:00 2001 From: shennetsind Date: Fri, 30 Dec 2011 13:24:41 +0000 Subject: Fixed ancient MvP dmotion/walkdelay/hitlock exploit, bugreport:1851 -- The fix on this commit works thanks to a previous commit i did weeks ago to fix other mob walk delay bug git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15330 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/status.c | 6 ++++-- src/map/unit.c | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/map/status.c b/src/map/status.c index a9fd25869..40e083595 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -4563,8 +4563,10 @@ static unsigned short status_calc_dmotion(struct block_list *bl, struct status_c { if( !sc || !sc->count || map_flag_gvg(bl->m) || map[bl->m].flag.battleground ) return cap_value(dmotion,0,USHRT_MAX); - - if( sc->data[SC_ENDURE] ) + /** + * It has been confirmed on official servers that MvP mobs have no dmotion even without endure + **/ + if( sc->data[SC_ENDURE] || ( bl->type == BL_MOB && (((TBL_MOB*)bl)->status.mode&MD_BOSS) ) ) return 0; if( sc->data[SC_CONCENTRATION] ) return 0; diff --git a/src/map/unit.c b/src/map/unit.c index d9faf46c6..14c90453c 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -962,6 +962,12 @@ int unit_set_walkdelay(struct block_list *bl, unsigned int tick, int delay, int struct unit_data *ud = unit_bl2ud(bl); if (delay <= 0 || !ud) return 0; + /** + * MvP mobs have no walk delay + **/ + if( bl->type == BL_MOB && (((TBL_MOB*)bl)->status.mode&MD_BOSS) ) + return 0; + if (type) { if (DIFF_TICK(ud->canmove_tick, tick+delay) > 0) return 0; -- cgit v1.2.3-70-g09d2