Core/Spells: Implement SPELL_ATTR7_BYPASS_NO_RESURRECT_AURA

Port From (https://github.com/TrinityCore/TrinityCore/commit/2ae67de4c0f327edc60d5da9cc815016d48b7228)
This commit is contained in:
hondacrx
2022-05-05 09:36:14 -04:00
parent 3baad2a8c5
commit 1daa90dfb9
3 changed files with 10 additions and 6 deletions
@@ -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
+8 -4
View File
@@ -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);
}
+1 -1
View File
@@ -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;