aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp9
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h2
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)