aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-05-02 19:29:51 +0200
committerShauren <shauren.trinity@gmail.com>2022-05-02 19:29:51 +0200
commit076c63c766d10697cea17da8bd5194862a682cbe (patch)
treea52bd66f822118e361465d34f6b7371cfe563fa2 /src/server/game/Spells/Spell.cpp
parentacda6f9dcf411a1406b81e1a100125dbe34f942b (diff)
Core/Spells: Implemented SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 094bb17489f..21f5caaf65c 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -5514,6 +5514,9 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32
if (Unit* unitCaster = m_caster->ToUnit())
{
+ if (m_spellInfo->HasAttribute(SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED) && unitCaster->IsCharmed())
+ return SPELL_FAILED_CHARMED;
+
// only check at first call, Stealth auras are already removed at second call
// for now, ignore triggered spells
if (strict && !(_triggeredCastFlags & TRIGGERED_IGNORE_SHAPESHIFT))
@@ -6447,7 +6450,7 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32
return SPELL_FAILED_NO_PET;
if (!pet->GetCharmerGUID().IsEmpty())
- return SPELL_FAILED_CHARMED;
+ return SPELL_FAILED_ALREADY_HAVE_CHARM;
break;
}
case SPELL_AURA_MOD_POSSESS:
@@ -6480,7 +6483,7 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32
return SPELL_FAILED_CANT_BE_CHARMED;
if (!target->GetCharmerGUID().IsEmpty())
- return SPELL_FAILED_CHARMED;
+ return SPELL_FAILED_ALREADY_HAVE_CHARM;
if (target->GetOwner() && target->GetOwner()->GetTypeId() == TYPEID_PLAYER)
return SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED;