Core/Spells: Implemented SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED

This commit is contained in:
Shauren authored and Ovahlord committed 2022-09-30 02:08:33 +02:00
1 parent 8fa4b57925
commit 4cfd439d34
4 files changed
+11 -2

No files matched your search

+1 -1
View File
@@ -21358,7 +21358,7 @@ void Player::VehicleSpellInitialize()
{
uint32 spellId = vehicle->m_spells[i];
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId);
if (!spellInfo)
if (!spellInfo || !spellInfo->HasAttribute(SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED))
{
data << uint16(0) << uint8(0) << uint8(i+8);
continue;
+6
View File
@@ -9732,6 +9732,9 @@ void CharmInfo::InitPossessCreateSpells()
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId);
if (spellInfo)
{
if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED))
continue;
if (spellInfo->IsPassive())
_unit->CastSpell(_unit, spellInfo->Id, true);
else
@@ -9764,6 +9767,9 @@ void CharmInfo::InitCharmCreateSpells()
continue;
}
if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED))
continue;
if (spellInfo->IsPassive())
{
_unit->CastSpell(_unit, spellInfo->Id, true);
@@ -548,7 +548,7 @@ enum SpellAttr5 : uint32
SPELL_ATTR5_IMPLIED_TARGETING = 0x00000800, // TITLE Implied Targeting (client only)
SPELL_ATTR5_MELEE_CHAIN_TARGETING = 0x00001000, // TITLE Melee Chain Targeting
SPELL_ATTR5_SPELL_HASTE_AFFECTS_PERIODIC = 0x00002000, // TITLE Spell Haste Affects Periodic
SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED = 0x00004000, /*NYI*/ // TITLE Not Available While Charmed
SPELL_ATTR5_NOT_AVAILABLE_WHILE_CHARMED = 0x00004000, // TITLE Not Available While Charmed
SPELL_ATTR5_TREAT_AS_AREA_EFFECT = 0x00008000, /*NYI*/ // TITLE Treat as Area Effect
SPELL_ATTR5_AURA_AFFECTS_NOT_JUST_REQ_EQUIPPED_ITEM = 0x00010000, // TITLE Aura Affects Not Just Req. Equipped Item
SPELL_ATTR5_ALLOW_WHILE_FLEEING = 0x00020000, // TITLE Allow While Fleeing
+3
View File
@@ -5627,6 +5627,9 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
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))