diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-05-02 19:29:51 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-05-02 19:29:51 +0200 |
| commit | 076c63c766d10697cea17da8bd5194862a682cbe (patch) | |
| tree | a52bd66f822118e361465d34f6b7371cfe563fa2 /src/server/game/Spells/Spell.cpp | |
| parent | acda6f9dcf411a1406b81e1a100125dbe34f942b (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.cpp | 7 |
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; |
