mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
Core/Auras: Implemented SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD (suppress aura applications while dead without removing the aura)
(cherry picked from commit 0f7dd4eadf)
This commit is contained in:
@@ -171,9 +171,9 @@ enum UnitFlags : uint32
|
||||
UNIT_FLAG_SILENCED | UNIT_FLAG_NON_ATTACKABLE_2 | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED |
|
||||
UNIT_FLAG_IN_COMBAT | UNIT_FLAG_ON_TAXI | UNIT_FLAG_DISARMED | UNIT_FLAG_CONFUSED | UNIT_FLAG_FLEEING |
|
||||
UNIT_FLAG_POSSESSED | UNIT_FLAG_SKINNABLE | UNIT_FLAG_MOUNT | UNIT_FLAG_UNK_28 |
|
||||
UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_SHEATHE | UNIT_FLAG_IMMUNE),
|
||||
UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_SHEATHE | UNIT_FLAG_IMMUNE), // SKIP
|
||||
|
||||
UNIT_FLAG_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG_DISALLOWED)
|
||||
UNIT_FLAG_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG_DISALLOWED) // SKIP
|
||||
};
|
||||
|
||||
DEFINE_ENUM_FLAG(UnitFlags);
|
||||
@@ -222,9 +222,9 @@ enum UnitFlags2 : uint32
|
||||
/* UNIT_FLAG2_PLAY_DEATH_ANIM | */ UNIT_FLAG2_ALLOW_CHEAT_SPELLS | UNIT_FLAG2_UNUSED_1 |
|
||||
UNIT_FLAG2_UNUSED_2 | UNIT_FLAG2_UNUSED_3 | UNIT_FLAG2_UNUSED_4 | UNIT_FLAG2_UNUSED_5 |
|
||||
UNIT_FLAG2_UNUSED_6 | UNIT_FLAG2_UNUSED_7 | UNIT_FLAG2_UNUSED_8 | UNIT_FLAG2_UNUSED_9 |
|
||||
UNIT_FLAG2_UNUSED_10 | UNIT_FLAG2_UNUSED_11 | UNIT_FLAG2_UNUSED_12 | UNIT_FLAG2_UNUSED_13),
|
||||
UNIT_FLAG2_UNUSED_10 | UNIT_FLAG2_UNUSED_11 | UNIT_FLAG2_UNUSED_12 | UNIT_FLAG2_UNUSED_13), // SKIP
|
||||
|
||||
UNIT_FLAG2_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG2_DISALLOWED)
|
||||
UNIT_FLAG2_ALLOWED = (0xFFFFFFFF & ~UNIT_FLAG2_DISALLOWED) // SKIP
|
||||
};
|
||||
|
||||
DEFINE_ENUM_FLAG(UnitFlags2);
|
||||
|
||||
@@ -2597,6 +2597,9 @@ void UnitAura::Remove(AuraRemoveMode removeMode)
|
||||
|
||||
void UnitAura::FillTargetMap(std::unordered_map<Unit*, uint8>& targets, Unit* caster)
|
||||
{
|
||||
if (GetSpellInfo()->HasAttribute(SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD) && !GetUnitOwner()->IsAlive())
|
||||
return;
|
||||
|
||||
Unit* ref = caster;
|
||||
if (!ref)
|
||||
ref = GetUnitOwner();
|
||||
|
||||
@@ -664,7 +664,7 @@ enum SpellAttr7 : uint32
|
||||
{
|
||||
SPELL_ATTR7_UNK0 = 0x00000001, // TITLE Unknown attribute 0@Attr7
|
||||
SPELL_ATTR7_IGNORE_DURATION_MODS = 0x00000002, // TITLE Ignore duration modifiers
|
||||
SPELL_ATTR7_REACTIVATE_AT_RESURRECT = 0x00000004, // TITLE Reactivate at resurrect (client only)
|
||||
SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD = 0x00000004, // TITLE Disable Aura While Dead
|
||||
SPELL_ATTR7_IS_CHEAT_SPELL = 0x00000008, // TITLE Is cheat spell DESCRIPTION Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS
|
||||
SPELL_ATTR7_UNK4 = 0x00000010, // TITLE Unknown attribute 4@Attr7 DESCRIPTION Soulstone related?
|
||||
SPELL_ATTR7_SUMMON_PLAYER_TOTEM = 0x00000020, // TITLE Summons player-owned totem
|
||||
|
||||
@@ -1173,7 +1173,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr7>::ToString(SpellAttr7 value)
|
||||
{
|
||||
case SPELL_ATTR7_UNK0: return { "SPELL_ATTR7_UNK0", "Unknown attribute 0@Attr7", "" };
|
||||
case SPELL_ATTR7_IGNORE_DURATION_MODS: return { "SPELL_ATTR7_IGNORE_DURATION_MODS", "Ignore duration modifiers", "" };
|
||||
case SPELL_ATTR7_REACTIVATE_AT_RESURRECT: return { "SPELL_ATTR7_REACTIVATE_AT_RESURRECT", "Reactivate at resurrect (client only)", "" };
|
||||
case SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD: return { "SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD", "Disable Aura While Dead", "" };
|
||||
case SPELL_ATTR7_IS_CHEAT_SPELL: return { "SPELL_ATTR7_IS_CHEAT_SPELL", "Is cheat spell", "Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS" };
|
||||
case SPELL_ATTR7_UNK4: return { "SPELL_ATTR7_UNK4", "Unknown attribute 4@Attr7", "Soulstone related?" };
|
||||
case SPELL_ATTR7_SUMMON_PLAYER_TOTEM: return { "SPELL_ATTR7_SUMMON_PLAYER_TOTEM", "Summons player-owned totem", "" };
|
||||
@@ -1217,7 +1217,7 @@ TC_API_EXPORT SpellAttr7 EnumUtils<SpellAttr7>::FromIndex(size_t index)
|
||||
{
|
||||
case 0: return SPELL_ATTR7_UNK0;
|
||||
case 1: return SPELL_ATTR7_IGNORE_DURATION_MODS;
|
||||
case 2: return SPELL_ATTR7_REACTIVATE_AT_RESURRECT;
|
||||
case 2: return SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD;
|
||||
case 3: return SPELL_ATTR7_IS_CHEAT_SPELL;
|
||||
case 4: return SPELL_ATTR7_UNK4;
|
||||
case 5: return SPELL_ATTR7_SUMMON_PLAYER_TOTEM;
|
||||
@@ -1258,7 +1258,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr7>::ToIndex(SpellAttr7 value)
|
||||
{
|
||||
case SPELL_ATTR7_UNK0: return 0;
|
||||
case SPELL_ATTR7_IGNORE_DURATION_MODS: return 1;
|
||||
case SPELL_ATTR7_REACTIVATE_AT_RESURRECT: return 2;
|
||||
case SPELL_ATTR7_DISABLE_AURA_WHILE_DEAD: return 2;
|
||||
case SPELL_ATTR7_IS_CHEAT_SPELL: return 3;
|
||||
case SPELL_ATTR7_UNK4: return 4;
|
||||
case SPELL_ATTR7_SUMMON_PLAYER_TOTEM: return 5;
|
||||
|
||||
Reference in New Issue
Block a user