mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-27 12:22:39 +01:00
Core/Items: Fixed default display for items that don't have any entry with appearancemod = 0
This commit is contained in:
@@ -624,6 +624,9 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
|
||||
{
|
||||
ASSERT(appearanceMod->ItemID <= 0xFFFFFF);
|
||||
_itemModifiedAppearancesByItem[appearanceMod->ItemID | (appearanceMod->AppearanceModID << 24)] = appearanceMod;
|
||||
auto defaultAppearance = _itemDefaultAppearancesByItem.find(appearanceMod->ItemID);
|
||||
if (defaultAppearance == _itemDefaultAppearancesByItem.end() || defaultAppearance->second->Index > appearanceMod->Index)
|
||||
_itemDefaultAppearancesByItem[appearanceMod->ItemID] = appearanceMod;
|
||||
}
|
||||
|
||||
for (ItemSetSpellEntry const* itemSetSpell : sItemSetSpellStore)
|
||||
@@ -1238,12 +1241,18 @@ ItemModifiedAppearanceEntry const* DB2Manager::GetItemModifiedAppearance(uint32
|
||||
return itr->second;
|
||||
|
||||
// Fall back to unmodified appearance
|
||||
if (appearanceModId)
|
||||
{
|
||||
itr = _itemModifiedAppearancesByItem.find(itemId);
|
||||
if (itr != _itemModifiedAppearancesByItem.end())
|
||||
return itr->second;
|
||||
}
|
||||
itr = _itemDefaultAppearancesByItem.find(itemId);
|
||||
if (itr != _itemDefaultAppearancesByItem.end())
|
||||
return itr->second;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ItemModifiedAppearanceEntry const* DB2Manager::GetDefaultItemModifiedAppearance(uint32 itemId) const
|
||||
{
|
||||
auto itr = _itemDefaultAppearancesByItem.find(itemId);
|
||||
if (itr != _itemDefaultAppearancesByItem.end())
|
||||
return itr->second;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -284,6 +284,7 @@ public:
|
||||
bool HasItemCurrencyCost(uint32 itemId) const { return _itemsWithCurrencyCost.count(itemId) > 0; }
|
||||
uint32 GetItemDisplayId(uint32 itemId, uint32 appearanceModId) const;
|
||||
ItemModifiedAppearanceEntry const* GetItemModifiedAppearance(uint32 itemId, uint32 appearanceModId) const;
|
||||
ItemModifiedAppearanceEntry const* GetDefaultItemModifiedAppearance(uint32 itemId) const;
|
||||
std::vector<ItemSetSpellEntry const*> const* GetItemSetSpells(uint32 itemSetId) const;
|
||||
std::vector<ItemSpecOverrideEntry const*> const* GetItemSpecOverrides(uint32 itemId) const;
|
||||
static LfgDungeonsEntry const* GetLfgDungeon(uint32 mapId, Difficulty difficulty);
|
||||
@@ -335,6 +336,7 @@ private:
|
||||
ItemChildEquipmentContainer _itemChildEquipment;
|
||||
std::unordered_set<uint32> _itemsWithCurrencyCost;
|
||||
ItemModifiedAppearanceByItemContainer _itemModifiedAppearancesByItem;
|
||||
ItemModifiedAppearanceByItemContainer _itemDefaultAppearancesByItem;
|
||||
ItemToBonusTreeContainer _itemToBonusTree;
|
||||
ItemSetSpellContainer _itemSetSpells;
|
||||
ItemSpecOverridesContainer _itemSpecOverrides;
|
||||
|
||||
@@ -2004,7 +2004,8 @@ uint32 Item::GetDisplayId(Player const* owner) const
|
||||
transmogModifier = AppearanceModifierSlotBySpec[owner->GetActiveTalentGroup()];
|
||||
|
||||
if (ItemModifiedAppearanceEntry const* transmog = sItemModifiedAppearanceStore.LookupEntry(GetModifier(transmogModifier)))
|
||||
return sDB2Manager.GetItemDisplayId(transmog->ItemID, transmog->AppearanceModID);
|
||||
if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(transmog->AppearanceID))
|
||||
return itemAppearance->DisplayID;
|
||||
|
||||
return sDB2Manager.GetItemDisplayId(GetEntry(), GetAppearanceModId());
|
||||
}
|
||||
@@ -2101,6 +2102,9 @@ void BonusData::Initialize(ItemTemplate const* proto)
|
||||
SocketColor[i] = proto->GetSocketColor(i);
|
||||
|
||||
AppearanceModID = 0;
|
||||
if (ItemModifiedAppearanceEntry const* defaultAppearance = sDB2Manager.GetDefaultItemModifiedAppearance(proto->GetId()))
|
||||
AppearanceModID = defaultAppearance->AppearanceModID;
|
||||
|
||||
RepairCostMultiplier = 1.0f;
|
||||
ScalingStatDistribution = proto->GetScalingStatDistribution();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user