From f19e1a271618a35515512ce2a64330f21133616c Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 3 Jul 2024 16:18:06 +0200 Subject: Core/Spells: Remove spell range increase when caster or target move backwards --- src/server/game/Spells/Spell.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index ad802f400d4..2fe22b2cc7e 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -7407,6 +7407,13 @@ SpellCastResult Spell::CheckRange(bool strict) const return SPELL_CAST_OK; } +bool Spell::CanIncreaseRangeByMovement(Unit const* unit) +{ + // forward running only + return unit->HasUnitMovementFlag(MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT | MOVEMENTFLAG_FALLING) + && !unit->IsWalking(); +} + std::pair Spell::GetMinMaxRange(bool strict) const { float rangeMod = 0.0f; @@ -7448,7 +7455,7 @@ std::pair Spell::GetMinMaxRange(bool strict) const } } - if (target && unitCaster && unitCaster->isMoving() && target->isMoving() && !unitCaster->IsWalking() && !target->IsWalking() && + if (target && unitCaster && CanIncreaseRangeByMovement(target) && CanIncreaseRangeByMovement(unitCaster) && ((m_spellInfo->RangeEntry->Flags & SPELL_RANGE_MELEE) || target->GetTypeId() == TYPEID_PLAYER)) rangeMod += 8.0f / 3.0f; } -- cgit v1.2.3