From 8e88f4501d8e3b537e96fa56ad7dd25a61dff968 Mon Sep 17 00:00:00 2001 From: ccrs Date: Sat, 3 Aug 2019 18:12:53 +0200 Subject: Core/Creature: add a const spell-focus-check method and remove a nasty const_cast from IsMovementPreventedByCasting() closes #23670 maybe #22857 ? --- src/server/game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Entities/Creature/Creature.h | 1 + src/server/game/Entities/Unit/Unit.h | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index e0ef6a70e27..819d19b4f09 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -3184,7 +3184,7 @@ bool Creature::IsMovementPreventedByCasting() const return false; } - if (const_cast(this)->HandleSpellFocus(nullptr, true)) + if (HasSpellFocusTarget()) return true; if (HasUnitState(UNIT_STATE_CASTING)) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 96832971515..41170334aac 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -351,6 +351,7 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma void SetSpellFocusTarget(Spell const* focusSpell, WorldObject const* target); bool HandleSpellFocus(Spell const* focusSpell = nullptr, bool withDelay = false) override; void ReleaseSpellFocus(Spell const* focusSpell = nullptr, bool withDelay = true); + bool HasSpellFocusTarget() const override { return IsAlive() && (_focusSpell || _spellFocusDelay); } bool IsMovementPreventedByCasting() const override; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 36542083450..4b8a1da607a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1358,6 +1358,7 @@ class TC_GAME_API Unit : public WorldObject int32 GetCurrentSpellCastTime(uint32 spell_id) const; virtual bool HandleSpellFocus(Spell const* /*focusSpell*/ = nullptr, bool /*withDelay*/ = false) { return false; } + virtual bool HasSpellFocusTarget() const { return false; } virtual bool IsMovementPreventedByCasting() const; SpellHistory* GetSpellHistory() { return m_spellHistory; } -- cgit v1.2.3