diff options
| author | ccrs <ccrs@users.noreply.github.com> | 2017-04-27 14:16:40 +0200 |
|---|---|---|
| committer | funjoker <funjoker109@gmail.com> | 2020-04-28 14:59:05 +0200 |
| commit | 8c12f36915b2fddd48a5e4c9244c2b0498a64ae9 (patch) | |
| tree | a0a266cf765bccc213c1ce07af194a8426e7f3ee /src | |
| parent | 5d411e0b21b1f1a4653d274d9b1cc7fef17f232b (diff) | |
Core/Spell: move creature focus
bellow the possible interruptions
(cherry picked from commit df96e053a554692127cce7148447147477351da8)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 1590ffb5c2a..85388dc5821 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2953,15 +2953,6 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered else m_casttime = m_spellInfo->CalcCastTime(m_caster->getLevel(), this); - if (m_caster->GetTypeId() == TYPEID_UNIT && !m_caster->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED)) // _UNIT actually means creature. for some reason. - if (!(m_spellInfo->IsNextMeleeSwingSpell() || IsAutoRepeat() || (_triggeredCastFlags & TRIGGERED_IGNORE_SET_FACING))) - { - if (m_targets.GetObjectTarget() && m_caster != m_targets.GetObjectTarget()) - m_caster->ToCreature()->FocusTarget(this, m_targets.GetObjectTarget()); - else if (m_spellInfo->HasAttribute(SPELL_ATTR5_DONT_TURN_DURING_CAST)) - m_caster->ToCreature()->FocusTarget(this, nullptr); - } - // don't allow channeled spells / spells with cast time to be cast while moving // exception are only channeled spells that have no casttime and SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING // (even if they are interrupted on moving, spells with almost immediate effect get to have their effect processed before movement interrupter kicks in) @@ -2978,6 +2969,18 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered } } + // focus if not controlled creature + if (m_caster->GetTypeId() == TYPEID_UNIT && !m_caster->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED)) + { + if (!(m_spellInfo->IsNextMeleeSwingSpell() || IsAutoRepeat() || (_triggeredCastFlags & TRIGGERED_IGNORE_SET_FACING))) + { + if (m_targets.GetObjectTarget() && m_caster != m_targets.GetObjectTarget()) + m_caster->ToCreature()->FocusTarget(this, m_targets.GetObjectTarget()); + else if (m_spellInfo->HasAttribute(SPELL_ATTR5_DONT_TURN_DURING_CAST)) + m_caster->ToCreature()->FocusTarget(this, nullptr); + } + } + // set timer base at cast time ReSetTimer(); |
