diff options
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 23 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.h | 1 |
2 files changed, 9 insertions, 15 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index e616c3fd459..5683328a00f 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1744,7 +1744,7 @@ int32 const ItemTransmogrificationSlots[MAX_INVTYPE] = { -1, // INVTYPE_NON_EQUIP EQUIPMENT_SLOT_HEAD, // INVTYPE_HEAD - EQUIPMENT_SLOT_NECK, // INVTYPE_NECK + -1, // INVTYPE_NECK EQUIPMENT_SLOT_SHOULDERS, // INVTYPE_SHOULDERS EQUIPMENT_SLOT_BODY, // INVTYPE_BODY EQUIPMENT_SLOT_CHEST, // INVTYPE_CHEST @@ -1755,19 +1755,19 @@ int32 const ItemTransmogrificationSlots[MAX_INVTYPE] = EQUIPMENT_SLOT_HANDS, // INVTYPE_HANDS -1, // INVTYPE_FINGER -1, // INVTYPE_TRINKET - -1, // INVTYPE_WEAPON + EQUIPMENT_SLOT_MAINHAND, // INVTYPE_WEAPON EQUIPMENT_SLOT_OFFHAND, // INVTYPE_SHIELD EQUIPMENT_SLOT_MAINHAND, // INVTYPE_RANGED EQUIPMENT_SLOT_BACK, // INVTYPE_CLOAK - -1, // INVTYPE_2HWEAPON + EQUIPMENT_SLOT_MAINHAND, // INVTYPE_2HWEAPON -1, // INVTYPE_BAG EQUIPMENT_SLOT_TABARD, // INVTYPE_TABARD EQUIPMENT_SLOT_CHEST, // INVTYPE_ROBE EQUIPMENT_SLOT_MAINHAND, // INVTYPE_WEAPONMAINHAND - EQUIPMENT_SLOT_OFFHAND, // INVTYPE_WEAPONOFFHAND + EQUIPMENT_SLOT_MAINHAND, // INVTYPE_WEAPONOFFHAND EQUIPMENT_SLOT_OFFHAND, // INVTYPE_HOLDABLE -1, // INVTYPE_AMMO - EQUIPMENT_SLOT_MAINHAND, // INVTYPE_THROWN + -1, // INVTYPE_THROWN EQUIPMENT_SLOT_MAINHAND, // INVTYPE_RANGEDRIGHT -1, // INVTYPE_QUIVER -1 // INVTYPE_RELIC @@ -1809,22 +1809,15 @@ bool Item::CanTransmogrifyItemWithItem(Item const* item, ItemModifiedAppearanceE case ITEM_CLASS_ARMOR: if (source->GetSubClass() != ITEM_SUBCLASS_ARMOR_COSMETIC) return false; + if (source->GetInventoryType() != target->GetInventoryType()) + if (ItemTransmogrificationSlots[source->GetInventoryType()] != ItemTransmogrificationSlots[target->GetInventoryType()]) + return false; break; default: return false; } } - if (source->GetInventoryType() != target->GetInventoryType()) - { - int32 sourceSlot = ItemTransmogrificationSlots[source->GetInventoryType()]; - if (sourceSlot == -1 && source->GetInventoryType() == INVTYPE_WEAPON && (target->GetInventoryType() == INVTYPE_WEAPONMAINHAND || target->GetInventoryType() == INVTYPE_WEAPONOFFHAND)) - sourceSlot = ItemTransmogrificationSlots[target->GetInventoryType()]; - - if (sourceSlot != ItemTransmogrificationSlots[target->GetInventoryType()]) - return false; - } - return true; } diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index d2d67afebf0..2f1afb66096 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -70,6 +70,7 @@ enum ItemUpdateState bool ItemCanGoIntoBag(ItemTemplate const* proto, ItemTemplate const* pBagProto); extern ItemModifier const AppearanceModifierSlotBySpec[MAX_SPECIALIZATIONS]; extern ItemModifier const IllusionModifierSlotBySpec[MAX_SPECIALIZATIONS]; +extern int32 const ItemTransmogrificationSlots[MAX_INVTYPE]; struct BonusData { |