aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/Creature.cpp8
-rw-r--r--src/game/TargetedMovementGenerator.cpp4
-rw-r--r--src/game/Unit.cpp14
3 files changed, 21 insertions, 5 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp
index 384eec4ebdb..8868b24c768 100644
--- a/src/game/Creature.cpp
+++ b/src/game/Creature.cpp
@@ -696,6 +696,8 @@ void Creature::DoFleeToGetAssistance()
cell_lock->Visit(cell_lock, grid_creature_searcher, *GetMap(), *this, radius);
SetNoSearchAssistance(true);
+ UpdateSpeed(MOVE_RUN, false);
+
if(!pCreature)
//SetFeared(true, getVictim()->GetGUID(), 0 ,sWorld.getConfig(CONFIG_CREATURE_FAMILY_FLEE_DELAY));
//TODO: use 31365
@@ -1464,7 +1466,11 @@ void Creature::setDeathState(DeathState s)
if ( LootTemplates_Skinning.HaveLootFor(GetCreatureInfo()->SkinLootId) )
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
- SetNoSearchAssistance(false);
+ if (HasSearchedAssistance())
+ {
+ SetNoSearchAssistance(false);
+ UpdateSpeed(MOVE_RUN, false);
+ }
//Dismiss group if is leader
if(m_formation && m_formation->getLeader() == this)
diff --git a/src/game/TargetedMovementGenerator.cpp b/src/game/TargetedMovementGenerator.cpp
index 3b001c1ed3c..80e80433821 100644
--- a/src/game/TargetedMovementGenerator.cpp
+++ b/src/game/TargetedMovementGenerator.cpp
@@ -153,9 +153,7 @@ template<class T>
void
TargetedMovementGenerator<T>::Initialize(T &owner)
{
- if (owner.GetTypeId() == TYPEID_UNIT && ((Creature*)&owner)->HasSearchedAssistance())
- owner.AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
- else
+ if (owner.isInCombat())
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
_setTargetLocation(owner);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 268de0d0f05..04de0f4840a 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -8927,7 +8927,12 @@ bool Unit::AttackStop()
if (GetTypeId() == TYPEID_UNIT)
{
((Creature*)this)->SetNoCallAssistance(false);
- ((Creature*)this)->SetNoSearchAssistance(false);
+
+ if (((Creature*)this)->HasSearchedAssistance())
+ {
+ ((Creature*)this)->SetNoSearchAssistance(false);
+ UpdateSpeed(MOVE_RUN, false);
+ }
}
SendMeleeAttackStop(victim);
@@ -11714,6 +11719,13 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
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
int32 slow = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_DECREASE_SPEED);
if (slow)