From 962883552c82f655ad576dacf1ea76017574730a Mon Sep 17 00:00:00 2001 From: Schmoozerd Date: Fri, 31 May 2013 11:02:45 +0100 Subject: [PATCH] [c12596] Change default reaction on aggro for non-combat movement mobs --- src/game/CreatureAI.cpp | 30 ++++++++++++++++++++++++++++++ src/shared/revision_nr.h | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/game/CreatureAI.cpp b/src/game/CreatureAI.cpp index fc20e00c3..97e3600f4 100644 --- a/src/game/CreatureAI.cpp +++ b/src/game/CreatureAI.cpp @@ -122,3 +122,33 @@ bool CreatureAI::DoMeleeAttackIfReady() { return m_creature->UpdateMeleeAttackingState(); } + +void CreatureAI::SetCombatMovement(bool enable, bool stopOrStartMovement /*=false*/) +{ + m_isCombatMovement = enable; + + if (enable) + m_creature->clearUnitState(UNIT_STAT_NO_COMBAT_MOVEMENT); + else + m_creature->addUnitState(UNIT_STAT_NO_COMBAT_MOVEMENT); + + if (stopOrStartMovement && m_creature->getVictim()) // Only change current movement while in combat + { + if (enable) + m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim(), m_attackDistance, m_attackAngle); + else if (!enable && m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) + m_creature->StopMoving(); + } +} + +void CreatureAI::HandleMovementOnAttackStart(Unit* victim) +{ + if (m_isCombatMovement) + m_creature->GetMotionMaster()->MoveChase(victim, m_attackDistance, m_attackAngle); + // TODO - adapt this to only stop OOC-MMGens when MotionMaster rewrite is finished + else if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == WAYPOINT_MOTION_TYPE || m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == RANDOM_MOTION_TYPE) + { + m_creature->GetMotionMaster()->MoveIdle(); + m_creature->StopMoving(); + } +} diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4e3e400ac..f23428e52 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "12595" + #define REVISION_NR "12596" #endif // __REVISION_NR_H__