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
|
Unk24 = 0x1000000, // 24 Motivate, Mutilate, Perform Speech, Shattering Throw
|
||||||
Unk25 = 0x2000000, // 25
|
Unk25 = 0x2000000, // 25
|
||||||
Unk26 = 0x4000000, // 26
|
Unk26 = 0x4000000, // 26
|
||||||
Unk27 = 0x8000000, // 27 Not Set
|
BypassNoResurrectAura = 0x8000000, // 27 Bypass No Resurrect Aura
|
||||||
ConsolidatedRaidBuff = 0x10000000, // 28 Related To Player Positive Buff
|
ConsolidatedRaidBuff = 0x10000000, // 28 Related To Player Positive Buff
|
||||||
Unk29 = 0x20000000, // 29 Only 69028, 71237
|
Unk29 = 0x20000000, // 29 Only 69028, 71237
|
||||||
Unk30 = 0x40000000, // 30 Burning Determination, Divine Sacrifice, Earth Shield, Prayer Of Mending
|
Unk30 = 0x40000000, // 30 Burning Determination, Divine Sacrifice, Earth Shield, Prayer Of Mending
|
||||||
|
|||||||
@@ -512,13 +512,17 @@ namespace Game
|
|||||||
[WorldPacketHandler(ClientOpcodes.SelfRes)]
|
[WorldPacketHandler(ClientOpcodes.SelfRes)]
|
||||||
void HandleSelfRes(SelfRes 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;
|
List<uint> selfResSpells = _player.m_activePlayerData.SelfResSpells;
|
||||||
if (!selfResSpells.Contains(selfRes.SpellId))
|
if (!selfResSpells.Contains(selfRes.SpellId))
|
||||||
return;
|
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.CastSpell(_player, selfRes.SpellId, new CastSpellExtraArgs(_player.GetMap().GetDifficultyID()));
|
||||||
_player.RemoveSelfResSpell(selfRes.SpellId);
|
_player.RemoveSelfResSpell(selfRes.SpellId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1160,7 +1160,7 @@ namespace Game.Spells
|
|||||||
if (ExcludeTargetAuraSpell != 0 && unitTarget.HasAura(ExcludeTargetAuraSpell))
|
if (ExcludeTargetAuraSpell != 0 && unitTarget.HasAura(ExcludeTargetAuraSpell))
|
||||||
return SpellCastResult.TargetAurastate;
|
return SpellCastResult.TargetAurastate;
|
||||||
|
|
||||||
if (unitTarget.HasAuraType(AuraType.PreventResurrection))
|
if (unitTarget.HasAuraType(AuraType.PreventResurrection) && !HasAttribute(SpellAttr7.BypassNoResurrectAura))
|
||||||
if (HasEffect(SpellEffectName.SelfResurrect) || HasEffect(SpellEffectName.Resurrect))
|
if (HasEffect(SpellEffectName.SelfResurrect) || HasEffect(SpellEffectName.Resurrect))
|
||||||
return SpellCastResult.TargetCannotBeResurrected;
|
return SpellCastResult.TargetCannotBeResurrected;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user