From 33954538bc30650f639e258eeb057c1340f4c949 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 3 Jan 2023 12:42:39 +0100 Subject: Core/Auras: Implemented SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES and SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS attributes Closes #28658 --- src/server/game/Miscellaneous/SharedDefines.h | 4 ++-- src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 12 ++++++------ src/server/game/Spells/Auras/SpellAuras.cpp | 3 +++ 3 files changed, 11 insertions(+), 8 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 02bf5a512fb..99285a33fbb 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -886,13 +886,13 @@ enum SpellAttr12 : uint32 SPELL_ATTR12_UNK28 = 0x10000000, // TITLE Unknown attribute 28@Attr12 SPELL_ATTR12_UNK29 = 0x20000000, // TITLE Unknown attribute 29@Attr12 SPELL_ATTR12_UNK30 = 0x40000000, // TITLE Unknown attribute 30@Attr12 - SPELL_ATTR12_UNK31 = 0x80000000 // TITLE Unknown attribute 31@Attr12 + SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES = 0x80000000 // TITLE Only Proc From Class Abilities }; // EnumUtils: DESCRIBE THIS enum SpellAttr13 : uint32 { - SPELL_ATTR13_UNK0 = 0x00000001, // TITLE Unknown attribute 0@Attr13 + SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS = 0x00000001, // TITLE Allow Class Ability Procs SPELL_ATTR13_UNK1 = 0x00000002, // TITLE Unknown attribute 0@Attr13 SPELL_ATTR13_PASSIVE_IS_UPGRADE = 0x00000004, // TITLE Is Upgrade DESCRIPTION Displays "Upgrade" in spell tooltip instead of "Passive" SPELL_ATTR13_UNK3 = 0x00000008, // TITLE Unknown attribute 3@Attr13 diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index 60be1fd2ddd..fd36c97078b 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1835,7 +1835,7 @@ TC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr12 value) case SPELL_ATTR12_UNK28: return { "SPELL_ATTR12_UNK28", "Unknown attribute 28@Attr12", "" }; case SPELL_ATTR12_UNK29: return { "SPELL_ATTR12_UNK29", "Unknown attribute 29@Attr12", "" }; case SPELL_ATTR12_UNK30: return { "SPELL_ATTR12_UNK30", "Unknown attribute 30@Attr12", "" }; - case SPELL_ATTR12_UNK31: return { "SPELL_ATTR12_UNK31", "Unknown attribute 31@Attr12", "" }; + case SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES: return { "SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES", "Only Proc From Class Abilities", "" }; default: throw std::out_of_range("value"); } } @@ -1879,7 +1879,7 @@ TC_API_EXPORT SpellAttr12 EnumUtils::FromIndex(size_t index) case 28: return SPELL_ATTR12_UNK28; case 29: return SPELL_ATTR12_UNK29; case 30: return SPELL_ATTR12_UNK30; - case 31: return SPELL_ATTR12_UNK31; + case 31: return SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES; default: throw std::out_of_range("index"); } } @@ -1920,7 +1920,7 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(SpellAttr12 value) case SPELL_ATTR12_UNK28: return 28; case SPELL_ATTR12_UNK29: return 29; case SPELL_ATTR12_UNK30: return 30; - case SPELL_ATTR12_UNK31: return 31; + case SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES: return 31; default: throw std::out_of_range("value"); } } @@ -1933,7 +1933,7 @@ TC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr13 value) { switch (value) { - case SPELL_ATTR13_UNK0: return { "SPELL_ATTR13_UNK0", "Unknown attribute 0@Attr13", "" }; + case SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS: return { "SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS", "Allow Class Ability Procs", "" }; case SPELL_ATTR13_UNK1: return { "SPELL_ATTR13_UNK1", "Unknown attribute 0@Attr13", "" }; case SPELL_ATTR13_PASSIVE_IS_UPGRADE: return { "SPELL_ATTR13_PASSIVE_IS_UPGRADE", "Is Upgrade", "Displays \042Upgrade\042 in spell tooltip instead of \042Passive\042" }; case SPELL_ATTR13_UNK3: return { "SPELL_ATTR13_UNK3", "Unknown attribute 3@Attr13", "" }; @@ -1977,7 +1977,7 @@ TC_API_EXPORT SpellAttr13 EnumUtils::FromIndex(size_t index) { switch (index) { - case 0: return SPELL_ATTR13_UNK0; + case 0: return SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS; case 1: return SPELL_ATTR13_UNK1; case 2: return SPELL_ATTR13_PASSIVE_IS_UPGRADE; case 3: return SPELL_ATTR13_UNK3; @@ -2018,7 +2018,7 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(SpellAttr13 value) { switch (value) { - case SPELL_ATTR13_UNK0: return 0; + case SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS: return 0; case SPELL_ATTR13_UNK1: return 1; case SPELL_ATTR13_PASSIVE_IS_UPGRADE: return 2; case SPELL_ATTR13_UNK3: return 3; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index ee837ef013d..98a7be4cf07 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1799,6 +1799,9 @@ uint32 Aura::GetProcEffectMask(AuraApplication* aurApp, ProcEventInfo& eventInfo if (spell->GetSpellInfo()->HasAttribute(SPELL_ATTR4_SUPPRESS_WEAPON_PROCS) && GetSpellInfo()->HasAttribute(SPELL_ATTR6_AURA_IS_WEAPON_PROC)) return 0; + + if (GetSpellInfo()->HasAttribute(SPELL_ATTR12_ONLY_PROC_FROM_CLASS_ABILITIES) && !spell->GetSpellInfo()->HasAttribute(SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS)) + return 0; } // check don't break stealth attr present -- cgit v1.2.3