diff options
author | tisk <jean.francois.baltzinger@gmail.com> | 2022-05-06 23:01:36 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-05-06 23:01:36 +0200 |
commit | 24434c687d8662eff42202c96d11c45fcf00e2f0 (patch) | |
tree | 08949d6ff1c97c3f122e62d47fc1e42d91d73331 | |
parent | 26d424d9167946b0258b115e35ad20f566e8c08a (diff) |
Core/Spells: Implemented SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index bedb84f795f..7b604ec8662 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -11490,8 +11490,13 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16 &dest, Item* pItem, bool if (IsInCombat() && (pProto->GetClass() == ITEM_CLASS_WEAPON || pProto->GetInventoryType() == INVTYPE_RELIC) && m_weaponChangeTimer != 0) return EQUIP_ERR_ITEM_COOLDOWN; - if (IsNonMeleeSpellCast(false)) - return EQUIP_ERR_CLIENT_LOCKED_OUT; + if (Spell* currentGenericSpell = GetCurrentSpell(CURRENT_GENERIC_SPELL)) + if (!currentGenericSpell->GetSpellInfo()->HasAttribute(SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING)) + return EQUIP_ERR_CLIENT_LOCKED_OUT; + + if (Spell* currentChanneledSpell = GetCurrentSpell(CURRENT_CHANNELED_SPELL)) + if (!currentChanneledSpell->GetSpellInfo()->HasAttribute(SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING)) + return EQUIP_ERR_CLIENT_LOCKED_OUT; } Optional<ContentTuningLevels> requiredLevels; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 022b29cae54..0c28038d232 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -643,7 +643,7 @@ enum SpellAttr6 : uint32 SPELL_ATTR6_AI_PRIMARY_RANGED_ATTACK = 0x00004000, /*NYI*/ // TITLE AI Primary Ranged Attack SPELL_ATTR6_NO_PUSHBACK = 0x00008000, /*NYI*/ // TITLE No Pushback SPELL_ATTR6_NO_JUMP_PATHING = 0x00010000, /*NYI*/ // TITLE No Jump Pathing - SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING = 0x00020000, /*NYI*/ // TITLE Allow Equip While Casting + SPELL_ATTR6_ALLOW_EQUIP_WHILE_CASTING = 0x00020000, // TITLE Allow Equip While Casting SPELL_ATTR6_ORIGINATE_FROM_CONTROLLER = 0x00040000, // TITLE Originate From Controller DESCRIPTION Client will prevent casting if not possessed, charmer will be caster for all intents and purposes SPELL_ATTR6_DELAY_COMBAT_TIMER_DURING_CAST = 0x00080000, /*NYI*/ // TITLE Delay Combat Timer During Cast SPELL_ATTR6_AURA_ICON_ONLY_FOR_CASTER_LIMIT_10 = 0x00100000, // TITLE Aura Icon Only For Caster (Limit 10) (client only) |