diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.h | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Item/ItemTemplate.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp | 12 |
6 files changed, 26 insertions, 26 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index c66d5e5e076..90bbb1c2278 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1735,28 +1735,28 @@ void Item::ItemContainerDeleteLootMoneyAndLootItemsFromDB() ItemContainerDeleteLootItemsFromDB(); } -uint32 Item::GetItemLevel() const +uint32 Item::GetItemLevel(Player const* owner) const { ItemTemplate const* stats = GetTemplate(); if (!stats) return MIN_ITEM_LEVEL; uint32 itemLevel = stats->GetBaseItemLevel(); - if (Player const* owner = GetOwner()) - if (ScalingStatDistributionEntry const* ssd = sScalingStatDistributionStore.LookupEntry(stats->GetScalingStatDistribution())) - if (uint32 heirloomIlvl = sDB2Manager.GetHeirloomItemLevel(ssd->ItemLevelCurveID, owner->getLevel())) - itemLevel = heirloomIlvl; + if (ScalingStatDistributionEntry const* ssd = sScalingStatDistributionStore.LookupEntry(stats->GetScalingStatDistribution())) + if (uint32 heirloomIlvl = sDB2Manager.GetHeirloomItemLevel(ssd->ItemLevelCurveID, owner->getLevel())) + itemLevel = heirloomIlvl; return std::min(std::max(itemLevel + _bonusData.ItemLevel, uint32(MIN_ITEM_LEVEL)), uint32(MAX_ITEM_LEVEL)); } -int32 Item::GetItemStatValue(uint32 index) const +int32 Item::GetItemStatValue(uint32 index, Player const* owner) const { ASSERT(index < MAX_ITEM_PROTO_STATS); - if (uint32 randomPropPoints = GetRandomPropertyPoints(GetItemLevel(), GetQuality(), GetTemplate()->GetInventoryType(), GetTemplate()->GetSubClass())) + uint32 itemLevel = GetItemLevel(owner); + if (uint32 randomPropPoints = GetRandomPropertyPoints(itemLevel, GetQuality(), GetTemplate()->GetInventoryType(), GetTemplate()->GetSubClass())) { float statValue = float(_bonusData.ItemStatAllocation[index] * randomPropPoints) * 0.0001f; - if (GtItemSocketCostPerLevelEntry const* gtCost = sGtItemSocketCostPerLevelStore.EvaluateTable(GetItemLevel() - 1, 0)) + if (GtItemSocketCostPerLevelEntry const* gtCost = sGtItemSocketCostPerLevelStore.EvaluateTable(itemLevel - 1, 0)) statValue -= float(int32(_bonusData.ItemStatSocketCostMultiplier[index] * gtCost->ratio)); return int32(std::floor(statValue + 0.5f)); diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 810bbdac704..545d402b699 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -375,14 +375,14 @@ class Item : public Object bool IsConjuredConsumable() const { return GetTemplate()->IsConjuredConsumable(); } bool IsRangedWeapon() const { return GetTemplate()->IsRangedWeapon(); } uint32 GetQuality() const { return _bonusData.Quality; } - uint32 GetItemLevel() const; + uint32 GetItemLevel(Player const* owner) const; int32 GetRequiredLevel() const { return _bonusData.RequiredLevel; } int32 GetItemStatType(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_STATS); return _bonusData.ItemStatType[index]; } - int32 GetItemStatValue(uint32 index) const; + int32 GetItemStatValue(uint32 index, Player const* owner) const; SocketColor GetSocketColor(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_SOCKETS); return SocketColor(_bonusData.SocketColor[index]); } uint32 GetAppearanceModId() const { return _bonusData.AppearanceModID; } - uint32 GetArmor() const { return GetTemplate()->GetArmor(GetItemLevel()); } - void GetDamage(float& minDamage, float& maxDamage) const { GetTemplate()->GetDamage(GetItemLevel(), minDamage, maxDamage); } + uint32 GetArmor(Player const* owner) const { return GetTemplate()->GetArmor(GetItemLevel(owner)); } + void GetDamage(Player const* owner, float& minDamage, float& maxDamage) const { GetTemplate()->GetDamage(GetItemLevel(owner), minDamage, maxDamage); } uint32 GetDisplayId() const; // Item Refund system diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index a21a4f1aa3f..bbb923fddf6 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -37,7 +37,7 @@ char const* ItemTemplate::GetDefaultLocaleName() const uint32 ItemTemplate::GetArmor(uint32 itemLevel) const { - uint32 quality = GetQuality() != ITEM_QUALITY_HEIRLOOM ? GetQuality() : ITEM_QUALITY_RARE; + uint32 quality = ItemQualities(GetQuality()) != ITEM_QUALITY_HEIRLOOM ? GetQuality() : ITEM_QUALITY_RARE; if (quality > ITEM_QUALITY_ARTIFACT) return 0; @@ -74,7 +74,7 @@ uint32 ItemTemplate::GetArmor(uint32 itemLevel) const void ItemTemplate::GetDamage(uint32 itemLevel, float& minDamage, float& maxDamage) const { minDamage = maxDamage = 0.0f; - uint32 quality = GetQuality() != ITEM_QUALITY_HEIRLOOM ? GetQuality() : ITEM_QUALITY_RARE; + uint32 quality = ItemQualities(GetQuality()) != ITEM_QUALITY_HEIRLOOM ? GetQuality() : ITEM_QUALITY_RARE; if (GetClass() != ITEM_CLASS_WEAPON || quality > ITEM_QUALITY_ARTIFACT) return; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 21e9516bace..3365b1c79dd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7634,7 +7634,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) if (statType == -1) continue; - int32 val = item->GetItemStatValue(i); + int32 val = item->GetItemStatValue(i, this); if (val == 0) continue; @@ -7800,7 +7800,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) } } - if (uint32 armor = item->GetArmor()) + if (uint32 armor = item->GetArmor(this)) { UnitModifierType modType = TOTAL_VALUE; if (proto->GetClass() == ITEM_CLASS_ARMOR) @@ -7860,7 +7860,7 @@ void Player::_ApplyWeaponDamage(uint8 slot, Item* item, bool apply) } float minDamage, maxDamage; - item->GetDamage(minDamage, maxDamage); + item->GetDamage(this, minDamage, maxDamage); if (minDamage > 0) { @@ -24633,7 +24633,7 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot) --loot->unlootedCount; if (sObjectMgr->GetItemTemplate(item->itemid)) - if (newitem->GetQuality() > ITEM_QUALITY_EPIC || (newitem->GetQuality() == ITEM_QUALITY_EPIC && newitem->GetItemLevel() >= MinNewsItemLevel[sWorld->getIntConfig(CONFIG_EXPANSION)])) + if (newitem->GetQuality() > ITEM_QUALITY_EPIC || (newitem->GetQuality() == ITEM_QUALITY_EPIC && newitem->GetItemLevel(this) >= MinNewsItemLevel[sWorld->getIntConfig(CONFIG_EXPANSION)])) if (Guild* guild = GetGuild()) guild->AddGuildNews(GUILD_NEWS_ITEM_LOOTED, GetGUID(), 0, item->itemid); @@ -25975,7 +25975,7 @@ float Player::GetAverageItemLevel() continue; if (m_items[i] && m_items[i]->GetTemplate()) - sum += m_items[i]->GetItemLevel(); + sum += m_items[i]->GetItemLevel(this); ++count; } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 3106ac4bc5a..4dcd0e681e9 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1511,7 +1511,7 @@ void Spell::DoCreateItem(uint32 /*i*/, uint32 itemtype) // send info to the client player->SendNewItem(pItem, num_to_add, true, bgType == 0); - if (pItem->GetQuality() > ITEM_QUALITY_EPIC || (pItem->GetQuality() == ITEM_QUALITY_EPIC && pItem->GetItemLevel() >= MinNewsItemLevel[sWorld->getIntConfig(CONFIG_EXPANSION)])) + if (pItem->GetQuality() > ITEM_QUALITY_EPIC || (pItem->GetQuality() == ITEM_QUALITY_EPIC && pItem->GetItemLevel(player) >= MinNewsItemLevel[sWorld->getIntConfig(CONFIG_EXPANSION)])) if (Guild* guild = player->GetGuild()) guild->AddGuildNews(GUILD_NEWS_ITEM_CRAFTED, player->GetGUID(), 0, pProto->GetId()); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 385a208b5ad..a8cad32333b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -777,8 +777,8 @@ class instance_ulduar : public InstanceMapScript if (Player* player = itr->GetSource()) for (uint8 slot = EQUIPMENT_SLOT_MAINHAND; slot <= EQUIPMENT_SLOT_RANGED; ++slot) if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) - if (item->GetItemLevel() > _maxWeaponItemLevel) - _maxWeaponItemLevel = item->GetItemLevel(); + if (item->GetItemLevel(player) > _maxWeaponItemLevel) + _maxWeaponItemLevel = item->GetItemLevel(player); } else if (state == IN_PROGRESS) { @@ -797,11 +797,11 @@ class instance_ulduar : public InstanceMapScript { if (slot >= EQUIPMENT_SLOT_MAINHAND && slot <= EQUIPMENT_SLOT_RANGED) { - if (item->GetItemLevel() > _maxWeaponItemLevel) - _maxWeaponItemLevel = item->GetItemLevel(); + if (item->GetItemLevel(player) > _maxWeaponItemLevel) + _maxWeaponItemLevel = item->GetItemLevel(player); } - else if (item->GetItemLevel() > _maxArmorItemLevel) - _maxArmorItemLevel = item->GetItemLevel(); + else if (item->GetItemLevel(player) > _maxArmorItemLevel) + _maxArmorItemLevel = item->GetItemLevel(player); } } } |