mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
[9165] Implement speed reduction at creatures DoFleeToGetAssistance
Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
parent
1e8e8f5fd2
commit
23a77a1d36
4 changed files with 23 additions and 6 deletions
|
|
@ -557,6 +557,8 @@ void Creature::DoFleeToGetAssistance()
|
||||||
cell_lock->Visit(cell_lock, grid_creature_searcher, *GetMap(), *this, radius);
|
cell_lock->Visit(cell_lock, grid_creature_searcher, *GetMap(), *this, radius);
|
||||||
|
|
||||||
SetNoSearchAssistance(true);
|
SetNoSearchAssistance(true);
|
||||||
|
UpdateSpeed(MOVE_RUN, false);
|
||||||
|
|
||||||
if(!pCreature)
|
if(!pCreature)
|
||||||
SetFeared(true, getVictim()->GetGUID(), 0 ,sWorld.getConfig(CONFIG_CREATURE_FAMILY_FLEE_DELAY));
|
SetFeared(true, getVictim()->GetGUID(), 0 ,sWorld.getConfig(CONFIG_CREATURE_FAMILY_FLEE_DELAY));
|
||||||
else
|
else
|
||||||
|
|
@ -1242,7 +1244,12 @@ void Creature::setDeathState(DeathState s)
|
||||||
if (canFly() && FallGround())
|
if (canFly() && FallGround())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SetNoSearchAssistance(false);
|
if (HasSearchedAssistance())
|
||||||
|
{
|
||||||
|
SetNoSearchAssistance(false);
|
||||||
|
UpdateSpeed(MOVE_RUN, false);
|
||||||
|
}
|
||||||
|
|
||||||
Unit::setDeathState(CORPSE);
|
Unit::setDeathState(CORPSE);
|
||||||
}
|
}
|
||||||
if (s == JUST_ALIVED)
|
if (s == JUST_ALIVED)
|
||||||
|
|
|
||||||
|
|
@ -91,9 +91,7 @@ TargetedMovementGenerator<T>::_setTargetLocation(T &owner)
|
||||||
template<>
|
template<>
|
||||||
void TargetedMovementGenerator<Creature>::Initialize(Creature &owner)
|
void TargetedMovementGenerator<Creature>::Initialize(Creature &owner)
|
||||||
{
|
{
|
||||||
if (owner.HasSearchedAssistance())
|
if (owner.isInCombat())
|
||||||
owner.AddMonsterMoveFlag(MONSTER_MOVE_WALK);
|
|
||||||
else if (owner.isInCombat())
|
|
||||||
owner.RemoveMonsterMoveFlag(MONSTER_MOVE_WALK);
|
owner.RemoveMonsterMoveFlag(MONSTER_MOVE_WALK);
|
||||||
|
|
||||||
if (((Creature*)&owner)->canFly())
|
if (((Creature*)&owner)->canFly())
|
||||||
|
|
|
||||||
|
|
@ -8174,7 +8174,12 @@ bool Unit::AttackStop(bool targetSwitch /*=false*/)
|
||||||
if(!targetSwitch && GetTypeId()==TYPEID_UNIT )
|
if(!targetSwitch && GetTypeId()==TYPEID_UNIT )
|
||||||
{
|
{
|
||||||
((Creature*)this)->SetNoCallAssistance(false);
|
((Creature*)this)->SetNoCallAssistance(false);
|
||||||
((Creature*)this)->SetNoSearchAssistance(false);
|
|
||||||
|
if (((Creature*)this)->HasSearchedAssistance())
|
||||||
|
{
|
||||||
|
((Creature*)this)->SetNoSearchAssistance(false);
|
||||||
|
UpdateSpeed(MOVE_RUN, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SendMeleeAttackStop(victim);
|
SendMeleeAttackStop(victim);
|
||||||
|
|
@ -10464,6 +10469,13 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// for creature case, we check explicit if mob searched for assistance
|
||||||
|
if (GetTypeId() == TYPEID_UNIT)
|
||||||
|
{
|
||||||
|
if (((Creature*)this)->HasSearchedAssistance())
|
||||||
|
speed *= 0.66f; // best guessed value, so this will be 33% reduction. Based off initial speed, mob can then "run", "walk fast" or "walk".
|
||||||
|
}
|
||||||
|
|
||||||
// Apply strongest slow aura mod to speed
|
// Apply strongest slow aura mod to speed
|
||||||
int32 slow = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_DECREASE_SPEED);
|
int32 slow = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_DECREASE_SPEED);
|
||||||
if (slow)
|
if (slow)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "9164"
|
#define REVISION_NR "9165"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue