diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2019-07-21 01:49:58 +0200 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2019-07-21 01:50:52 +0200 |
| commit | 0e7c66cb4c7ff7d44e232d0b50703a48605ffd24 (patch) | |
| tree | 4ffe19100d1173ff3641bf6d4be82d826d729924 /src/server/game/Entities/Unit | |
| parent | eba10f309eb541a7246754285bea6b821710d9fd (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.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 10 |
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; |
