aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e3e3936009c..b7c67a252ce 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -9435,7 +9435,7 @@ void Player::SetSheath(SheathState sheathed)
uint8 Player::FindEquipSlot(ItemPrototype const* proto, uint32 slot, bool swap) const
{
- uint8 pClass = getClass();
+ uint8 playerClass = getClass();
uint8 slots[4];
slots[0] = NULL_SLOT;
@@ -9486,7 +9486,7 @@ uint8 Player::FindEquipSlot(ItemPrototype const* proto, uint32 slot, bool swap)
slots[1] = EQUIPMENT_SLOT_TRINKET2;
break;
case INVTYPE_CLOAK:
- slots[0] = EQUIPMENT_SLOT_BACK;
+ slots[0] = EQUIPMENT_SLOT_BACK;
break;
case INVTYPE_WEAPON:
{
@@ -9497,7 +9497,7 @@ uint8 Player::FindEquipSlot(ItemPrototype const* proto, uint32 slot, bool swap)
if (CanDualWield())
slots[1] = EQUIPMENT_SLOT_OFFHAND;
break;
- };
+ }
case INVTYPE_SHIELD:
slots[0] = EQUIPMENT_SLOT_OFFHAND;
break;
@@ -9506,13 +9506,26 @@ uint8 Player::FindEquipSlot(ItemPrototype const* proto, uint32 slot, bool swap)
break;
case INVTYPE_2HWEAPON:
slots[0] = EQUIPMENT_SLOT_MAINHAND;
- if (Item *mhWeapon = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND))
- if (ItemPrototype const *mhWeaponProto = mhWeapon->GetProto())
+ if (Item* mhWeapon = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND))
+ {
+ if (ItemPrototype const* mhWeaponProto = mhWeapon->GetProto())
+ {
if (mhWeaponProto->SubClass == ITEM_SUBCLASS_WEAPON_POLEARM || mhWeaponProto->SubClass == ITEM_SUBCLASS_WEAPON_STAFF)
{
- const_cast<Player *>(this)->AutoUnequipOffhandIfNeed(true);
+ const_cast<Player*>(this)->AutoUnequipOffhandIfNeed(true);
break;
}
+ }
+ }
+
+ if (Item* ohWeapon = GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND))
+ {
+ if (proto->SubClass == ITEM_SUBCLASS_WEAPON_POLEARM || proto->SubClass == ITEM_SUBCLASS_WEAPON_STAFF)
+ {
+ const_cast<Player*>(this)->AutoUnequipOffhandIfNeed(true);
+ break;
+ }
+ }
if (CanDualWield() && CanTitanGrip() && proto->SubClass != ITEM_SUBCLASS_WEAPON_POLEARM && proto->SubClass != ITEM_SUBCLASS_WEAPON_STAFF)
slots[1] = EQUIPMENT_SLOT_OFFHAND;
break;
@@ -9542,26 +9555,26 @@ uint8 Player::FindEquipSlot(ItemPrototype const* proto, uint32 slot, bool swap)
break;
case INVTYPE_RELIC:
{
- switch(proto->SubClass)
+ switch (proto->SubClass)
{
case ITEM_SUBCLASS_ARMOR_LIBRAM:
- if (pClass == CLASS_PALADIN)
+ if (playerClass == CLASS_PALADIN)
slots[0] = EQUIPMENT_SLOT_RANGED;
break;
case ITEM_SUBCLASS_ARMOR_IDOL:
- if (pClass == CLASS_DRUID)
+ if (playerClass == CLASS_DRUID)
slots[0] = EQUIPMENT_SLOT_RANGED;
break;
case ITEM_SUBCLASS_ARMOR_TOTEM:
- if (pClass == CLASS_SHAMAN)
+ if (playerClass == CLASS_SHAMAN)
slots[0] = EQUIPMENT_SLOT_RANGED;
break;
case ITEM_SUBCLASS_ARMOR_MISC:
- if (pClass == CLASS_WARLOCK)
+ if (playerClass == CLASS_WARLOCK)
slots[0] = EQUIPMENT_SLOT_RANGED;
break;
case ITEM_SUBCLASS_ARMOR_SIGIL:
- if (pClass == CLASS_DEATH_KNIGHT)
+ if (playerClass == CLASS_DEATH_KNIGHT)
slots[0] = EQUIPMENT_SLOT_RANGED;
break;
}