Core/Spells: Implement SPELL_ATTR7_BYPASS_NO_RESURRECT_AURA
Port From (https://github.com/TrinityCore/TrinityCore/commit/2ae67de4c0f327edc60d5da9cc815016d48b7228)
This commit is contained in:
@@ -1845,7 +1845,7 @@ namespace Framework.Constants
|
||||
Unk24 = 0x1000000, // 24 Motivate, Mutilate, Perform Speech, Shattering Throw
|
||||
Unk25 = 0x2000000, // 25
|
||||
Unk26 = 0x4000000, // 26
|
||||
Unk27 = 0x8000000, // 27 Not Set
|
||||
BypassNoResurrectAura = 0x8000000, // 27 Bypass No Resurrect Aura
|
||||
ConsolidatedRaidBuff = 0x10000000, // 28 Related To Player Positive Buff
|
||||
Unk29 = 0x20000000, // 29 Only 69028, 71237
|
||||
Unk30 = 0x40000000, // 30 Burning Determination, Divine Sacrifice, Earth Shield, Prayer Of Mending
|
||||
|
||||
@@ -512,13 +512,17 @@ namespace Game
|
||||
[WorldPacketHandler(ClientOpcodes.SelfRes)]
|
||||
void HandleSelfRes(SelfRes selfRes)
|
||||
{
|
||||
if (_player.HasAuraType(AuraType.PreventResurrection))
|
||||
return; // silent return, client should display error by itself and not send this opcode
|
||||
|
||||
List<uint> selfResSpells = _player.m_activePlayerData.SelfResSpells;
|
||||
if (!selfResSpells.Contains(selfRes.SpellId))
|
||||
return;
|
||||
|
||||
|
||||
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(selfRes.SpellId, _player.GetMap().GetDifficultyID());
|
||||
if (spellInfo == null)
|
||||
return;
|
||||
|
||||
if (_player.HasAuraType(AuraType.PreventResurrection) && !spellInfo.HasAttribute(SpellAttr7.BypassNoResurrectAura))
|
||||
return; // silent return, client should display error by itself and not send this opcode
|
||||
|
||||
_player.CastSpell(_player, selfRes.SpellId, new CastSpellExtraArgs(_player.GetMap().GetDifficultyID()));
|
||||
_player.RemoveSelfResSpell(selfRes.SpellId);
|
||||
}
|
||||
|
||||
@@ -1160,7 +1160,7 @@ namespace Game.Spells
|
||||
if (ExcludeTargetAuraSpell != 0 && unitTarget.HasAura(ExcludeTargetAuraSpell))
|
||||
return SpellCastResult.TargetAurastate;
|
||||
|
||||
if (unitTarget.HasAuraType(AuraType.PreventResurrection))
|
||||
if (unitTarget.HasAuraType(AuraType.PreventResurrection) && !HasAttribute(SpellAttr7.BypassNoResurrectAura))
|
||||
if (HasEffect(SpellEffectName.SelfResurrect) || HasEffect(SpellEffectName.Resurrect))
|
||||
return SpellCastResult.TargetCannotBeResurrected;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user