diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 1cf00dad0b..46dcb95c99 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5817,8 +5817,15 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint if (target != m_caster) { // Must be behind the target - if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET) && target->HasInArc(static_cast(M_PI), m_caster)) - return SPELL_FAILED_NOT_BEHIND; + if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET)) + { + float arcAngle = static_cast(M_PI); + if (target->IsCreature() && target->ToCreature()->HasStaticFlag(CREATURE_STATIC_FLAG_5_240_DEGREE_BACK_ARC)) + arcAngle -= static_cast(M_PI / 3); + + if (target->HasInArc(arcAngle, m_caster)) + return SPELL_FAILED_NOT_BEHIND; + } // Target must be facing you if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER) && !target->HasInArc(static_cast(M_PI), m_caster))