Core/Spells: Corrected implementation of SPELL_ATTR1_ALLOW_WHILE_STEALTHED and SPELL_ATTR2_ALLOW_WHILE_INVISIBLE to use DispelType instead of checking effect types
Port From (https://github.com/TrinityCore/TrinityCore/commit/9cfc74d8c8a8579cd8160b6d7d1fa52b5ed1f068)
This commit is contained in:
@@ -2802,11 +2802,13 @@ namespace Game.Entities
|
|||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Aura GetAuraOfRankedSpell(uint spellId, ObjectGuid casterGUID = default, ObjectGuid itemCasterGUID = default, uint reqEffMask = 0)
|
public Aura GetAuraOfRankedSpell(uint spellId, ObjectGuid casterGUID = default, ObjectGuid itemCasterGUID = default, uint reqEffMask = 0)
|
||||||
{
|
{
|
||||||
var aurApp = GetAuraApplicationOfRankedSpell(spellId, casterGUID, itemCasterGUID, reqEffMask);
|
var aurApp = GetAuraApplicationOfRankedSpell(spellId, casterGUID, itemCasterGUID, reqEffMask);
|
||||||
return aurApp?.GetBase();
|
return aurApp?.GetBase();
|
||||||
}
|
}
|
||||||
|
|
||||||
AuraApplication GetAuraApplicationOfRankedSpell(uint spellId, ObjectGuid casterGUID = default, ObjectGuid itemCasterGUID = default, uint reqEffMask = 0, AuraApplication except = null)
|
AuraApplication GetAuraApplicationOfRankedSpell(uint spellId, ObjectGuid casterGUID = default, ObjectGuid itemCasterGUID = default, uint reqEffMask = 0, AuraApplication except = null)
|
||||||
{
|
{
|
||||||
uint rankSpell = Global.SpellMgr.GetFirstSpellInChain(spellId);
|
uint rankSpell = Global.SpellMgr.GetFirstSpellInChain(spellId);
|
||||||
@@ -2872,10 +2874,10 @@ namespace Game.Entities
|
|||||||
case SpellAuraInterruptFlags.ActionDelayed:
|
case SpellAuraInterruptFlags.ActionDelayed:
|
||||||
if (interruptSource != null)
|
if (interruptSource != null)
|
||||||
{
|
{
|
||||||
if (interruptSource.HasAttribute(SpellAttr1.AllowWhileStealthed) && auraSpellInfo.HasAura(AuraType.ModStealth))
|
if (interruptSource.HasAttribute(SpellAttr1.AllowWhileStealthed) && auraSpellInfo.Dispel == DispelType.Stealth)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (interruptSource.HasAttribute(SpellAttr2.AllowWhileInvisible) && auraSpellInfo.HasAura(AuraType.ModInvisibility))
|
if (interruptSource.HasAttribute(SpellAttr2.AllowWhileInvisible) && auraSpellInfo.Dispel == DispelType.Invisibility)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2885,6 +2887,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsInterruptFlagIgnoredForSpell(SpellAuraInterruptFlags2 flag, Unit unit, SpellInfo auraSpellInfo, SpellInfo interruptSource)
|
bool IsInterruptFlagIgnoredForSpell(SpellAuraInterruptFlags2 flag, Unit unit, SpellInfo auraSpellInfo, SpellInfo interruptSource)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user