diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-06-24 16:02:14 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-24 20:16:45 +0200 |
commit | f229a6b42a2f6f92597e67983822892d447312f2 (patch) | |
tree | 82cc77b7aebce505dacb6ae2fb749de7ce2c054d /src | |
parent | de6f87d2504e1c18100428b2cf8101f92616a161 (diff) |
Core/Spells: Implemented SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT
(cherry picked from commit 0b8eed2d547acc0ba115198cb306c4f9127af807)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/SpellHistory.cpp | 5 |
3 files changed, 8 insertions, 5 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 5edcd644c8c..54851fe3ef9 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -780,7 +780,7 @@ enum SpellAttr9 : uint32 SPELL_ATTR9_DO_NOT_DISPLAY_POWER_COST = 0x00008000, // TITLE Do Not Display Power Cost (client only) SPELL_ATTR9_NEXT_MODAL_SPELL_REQUIRES_SAME_UNIT_TARGET = 0x00010000, // TITLE Next modal spell requires same unit target DESCRIPTION Prevents automatically casting the spell from SpellClassOptions::ModalNextSpell after current spell if target was changed (client only) SPELL_ATTR9_AUTOCAST_OFF_BY_DEFAULT = 0x00020000, // TITLE AutoCast Off By Default - SPELL_ATTR9_UNK18 = 0x00040000, // TITLE Unknown attribute 18@Attr9 + SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT = 0x00040000, // TITLE Ignore School Lockout SPELL_ATTR9_UNK19 = 0x00080000, // TITLE Unknown attribute 19@Attr9 SPELL_ATTR9_UNK20 = 0x00100000, // TITLE Unknown attribute 20@Attr9 SPELL_ATTR9_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr9 diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index 1e8f8fd7ce2..48ed3a37641 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1456,7 +1456,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr9>::ToString(SpellAttr9 value) case SPELL_ATTR9_DO_NOT_DISPLAY_POWER_COST: return { "SPELL_ATTR9_DO_NOT_DISPLAY_POWER_COST", "Do Not Display Power Cost (client only)", "" }; case SPELL_ATTR9_NEXT_MODAL_SPELL_REQUIRES_SAME_UNIT_TARGET: return { "SPELL_ATTR9_NEXT_MODAL_SPELL_REQUIRES_SAME_UNIT_TARGET", "Next modal spell requires same unit target", "Prevents automatically casting the spell from SpellClassOptions::ModalNextSpell after current spell if target was changed (client only)" }; case SPELL_ATTR9_AUTOCAST_OFF_BY_DEFAULT: return { "SPELL_ATTR9_AUTOCAST_OFF_BY_DEFAULT", "AutoCast Off By Default", "" }; - case SPELL_ATTR9_UNK18: return { "SPELL_ATTR9_UNK18", "Unknown attribute 18@Attr9", "" }; + case SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT: return { "SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT", "Ignore School Lockout", "" }; case SPELL_ATTR9_UNK19: return { "SPELL_ATTR9_UNK19", "Unknown attribute 19@Attr9", "" }; case SPELL_ATTR9_UNK20: return { "SPELL_ATTR9_UNK20", "Unknown attribute 20@Attr9", "" }; case SPELL_ATTR9_UNK21: return { "SPELL_ATTR9_UNK21", "Unknown attribute 21@Attr9", "" }; @@ -1500,7 +1500,7 @@ TC_API_EXPORT SpellAttr9 EnumUtils<SpellAttr9>::FromIndex(size_t index) case 15: return SPELL_ATTR9_DO_NOT_DISPLAY_POWER_COST; case 16: return SPELL_ATTR9_NEXT_MODAL_SPELL_REQUIRES_SAME_UNIT_TARGET; case 17: return SPELL_ATTR9_AUTOCAST_OFF_BY_DEFAULT; - case 18: return SPELL_ATTR9_UNK18; + case 18: return SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT; case 19: return SPELL_ATTR9_UNK19; case 20: return SPELL_ATTR9_UNK20; case 21: return SPELL_ATTR9_UNK21; @@ -1541,7 +1541,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr9>::ToIndex(SpellAttr9 value) case SPELL_ATTR9_DO_NOT_DISPLAY_POWER_COST: return 15; case SPELL_ATTR9_NEXT_MODAL_SPELL_REQUIRES_SAME_UNIT_TARGET: return 16; case SPELL_ATTR9_AUTOCAST_OFF_BY_DEFAULT: return 17; - case SPELL_ATTR9_UNK18: return 18; + case SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT: return 18; case SPELL_ATTR9_UNK19: return 19; case SPELL_ATTR9_UNK20: return 20; case SPELL_ATTR9_UNK21: return 21; diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 144a45a5687..a19f56bbf4d 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -275,7 +275,7 @@ void SpellHistory::HandleCooldowns(SpellInfo const* spellInfo, uint32 itemId, Sp bool SpellHistory::IsReady(SpellInfo const* spellInfo, uint32 itemId /*= 0*/) const { - if (spellInfo->PreventionType & SPELL_PREVENTION_TYPE_SILENCE) + if (!spellInfo->HasAttribute(SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT) && spellInfo->PreventionType & SPELL_PREVENTION_TYPE_SILENCE) if (IsSchoolLocked(spellInfo->GetSchoolMask())) return false; @@ -774,6 +774,9 @@ void SpellHistory::LockSpellSchool(SpellSchoolMask schoolMask, Duration lockoutT if (!(spellInfo->PreventionType & SPELL_PREVENTION_TYPE_SILENCE)) continue; + if (spellInfo->HasAttribute(SPELL_ATTR9_IGNORE_SCHOOL_LOCKOUT)) + continue; + if (!(schoolMask & spellInfo->GetSchoolMask())) continue; |