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://svn.code.sf.net/p/rathena/svn/trunk@15330 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
shennetsind 2011-12-30 13:24:41 +00:00
parent 6e0b7ee4c0
commit ea2417cc0f
2 changed files with 10 additions and 2 deletions

View File

@ -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;

View File

@ -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;