aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2019-07-21 01:49:58 +0200
committerTreeston <treeston.mmoc@gmail.com>2019-07-21 01:50:52 +0200
commit0e7c66cb4c7ff7d44e232d0b50703a48605ffd24 (patch)
tree4ffe19100d1173ff3641bf6d4be82d826d729924 /src/server/game/Entities/Unit
parenteba10f309eb541a7246754285bea6b821710d9fd (diff)
Core/AI: Finally move the "is creature engaged" flag to be a property of the creature AI, where it honestly always belonged. Fixes #17981 and #23602 for real this time.
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.h10
2 files changed, 6 insertions, 6 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index a8271cd64bd..dee11e65a3b 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -294,7 +294,7 @@ Unit::Unit(bool isWorldObject) :
m_ControlledByPlayer(false), m_AutoRepeatFirstCast(false), m_procDeep(0), m_transformSpell(0),
m_removedAurasCount(0), m_unitMovedByMe(nullptr), m_playerMovingMe(nullptr), m_charmer(nullptr), m_charmed(nullptr),
i_motionMaster(new MotionMaster(this)), m_regenTimer(0), m_vehicle(nullptr), m_vehicleKit(nullptr),
- m_unitTypeMask(UNIT_MASK_NONE), m_Diminishing(), m_isEngaged(false), m_combatManager(this), m_threatManager(this),
+ m_unitTypeMask(UNIT_MASK_NONE), m_Diminishing(), m_combatManager(this), m_threatManager(this),
m_aiLocked(false), m_comboTarget(nullptr), m_comboPoints(0), m_spellHistory(new SpellHistory(this))
{
m_objectType |= TYPEMASK_UNIT;
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 2e262910b6a..16d1ffb5e34 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1027,10 +1027,10 @@ class TC_GAME_API Unit : public WorldObject
/// ====================== THREAT & COMBAT ====================
bool CanHaveThreatList() const { return m_threatManager.CanHaveThreatList(); }
- // This value can be different from IsInCombat:
+ // This value can be different from IsInCombat, for example:
// - when a projectile spell is midair against a creature (combat on launch - threat+aggro on impact)
// - when the creature has no targets left, but the AI has not yet ceased engaged logic
- bool IsEngaged() const { return m_isEngaged; }
+ virtual bool IsEngaged() const { return IsInCombat(); }
bool IsEngagedBy(Unit const* who) const { return CanHaveThreatList() ? IsThreatenedBy(who) : IsInCombatWith(who); }
void EngageWithTarget(Unit* who); // Adds target to threat list if applicable, otherwise just sets combat state
// Combat handling
@@ -1769,11 +1769,12 @@ class TC_GAME_API Unit : public WorldObject
void ProcessPositionDataChanged(PositionFullTerrainStatus const& data) override;
virtual void ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional<LiquidData> const& liquidData);
+ // notifiers
virtual void AtEnterCombat() { }
virtual void AtExitCombat();
- virtual void AtEngage(Unit* /*target*/) { m_isEngaged = true; }
- virtual void AtDisengage() { m_isEngaged = false; }
+ virtual void AtEngage(Unit* /*target*/) {}
+ virtual void AtDisengage() {}
private:
@@ -1800,7 +1801,6 @@ class TC_GAME_API Unit : public WorldObject
DiminishingReturn m_Diminishing[DIMINISHING_MAX];
// Threat+combat management
- bool m_isEngaged;
friend class CombatManager;
CombatManager m_combatManager;
friend class ThreatManager;