diff --git a/data/sql/updates/db_world/2025_11_07_00.sql b/data/sql/updates/db_world/2025_11_07_00.sql new file mode 100644 index 000000000..1e41d2b83 --- /dev/null +++ b/data/sql/updates/db_world/2025_11_07_00.sql @@ -0,0 +1,3 @@ +-- DB update 2025_11_06_01 -> 2025_11_07_00 +-- +DELETE FROM `creature` WHERE `guid` = 3564 AND `id1` = 1135; diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index 8099a5278..2833447f9 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -1873,8 +1873,13 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16& dest, Item* pItem, bool return EQUIP_ERR_NOT_DURING_ARENA_MATCH; } - if (IsInCombat() && (pProto->Class == ITEM_CLASS_WEAPON || pProto->InventoryType == INVTYPE_RELIC) && m_weaponChangeTimer != 0) - return EQUIP_ERR_CANT_DO_RIGHT_NOW; // maybe exist better err + if (IsInCombat() && (pProto->Class == ITEM_CLASS_WEAPON || pProto->InventoryType == INVTYPE_RELIC)) + { + uint32 cooldownSpell = IsClass(CLASS_ROGUE, CLASS_CONTEXT_WEAPON_SWAP) ? 6123 : 6119; + uint32 startRecoveryTime = sSpellMgr->GetSpellInfo(cooldownSpell)->StartRecoveryTime; + if (m_weaponChangeTimer != 0 && m_weaponChangeTimer != startRecoveryTime) + return EQUIP_ERR_CANT_DO_RIGHT_NOW; // maybe exist better err + } if (IsNonMeleeSpellCast(false)) return EQUIP_ERR_CANT_DO_RIGHT_NOW;