diff options
| author | Ryan <roc13x@gmail.com> | 2017-09-15 20:23:41 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-09-15 21:23:41 +0200 |
| commit | 115dffde983019acb1f167583b60f0ce1aaa90de (patch) | |
| tree | 6713a964debd945ef472cdbe86320c330a1e6395 /src/server/game/Entities/Item | |
| parent | 6eb997394722fcd4b5248646b5abfa185a7ec58f (diff) | |
Core/Items: Implement ItemLevelSelector.db2 (#20325)
ItemLevelSelector replaced ITEM_BONUS_ITEM_LEVEL_OVERRIDE in 7.2
Diffstat (limited to 'src/server/game/Entities/Item')
| -rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 32 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/Item.h | 2 |
2 files changed, 10 insertions, 24 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 20fc96a2394..abb36054914 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -2170,21 +2170,18 @@ uint32 Item::GetItemLevel(Player const* owner) const return MIN_ITEM_LEVEL; uint32 itemLevel = stats->GetBaseItemLevel(); - if (_bonusData.HasItemLevelBonus || !_bonusData.ItemLevelOverride) + if (ScalingStatDistributionEntry const* ssd = sScalingStatDistributionStore.LookupEntry(GetScalingStatDistribution())) { - if (ScalingStatDistributionEntry const* ssd = sScalingStatDistributionStore.LookupEntry(GetScalingStatDistribution())) - { - uint32 level = owner->getLevel(); - if (uint32 fixedLevel = GetModifier(ITEM_MODIFIER_SCALING_STAT_DISTRIBUTION_FIXED_LEVEL)) - level = fixedLevel; - if (uint32 heirloomIlvl = uint32(sDB2Manager.GetCurveValueAt(ssd->ItemLevelCurveID, level))) - itemLevel = heirloomIlvl; - } - - itemLevel += _bonusData.ItemLevelBonus; + uint32 level = owner->getLevel(); + if (uint32 fixedLevel = GetModifier(ITEM_MODIFIER_SCALING_STAT_DISTRIBUTION_FIXED_LEVEL)) + level = fixedLevel; + else + level = std::min(std::max(level, ssd->MinLevel), ssd->MaxLevel); + if (uint32 heirloomIlvl = uint32(sDB2Manager.GetCurveValueAt(ssd->ItemLevelCurveID, level))) + itemLevel = heirloomIlvl; } - else - itemLevel = _bonusData.ItemLevelOverride; + + itemLevel += _bonusData.ItemLevelBonus; if (ItemUpgradeEntry const* upgrade = sItemUpgradeStore.LookupEntry(GetModifier(ITEM_MODIFIER_UPGRADE_ID))) itemLevel += upgrade->ItemLevelBonus; @@ -2509,13 +2506,11 @@ void BonusData::Initialize(ItemTemplate const* proto) AppearanceModID = 0; RepairCostMultiplier = 1.0f; ScalingStatDistribution = proto->GetScalingStatDistribution(); - ItemLevelOverride = 0; RelicType = -1; HasItemLevelBonus = false; _state.AppearanceModPriority = std::numeric_limits<int32>::max(); _state.ScalingStatDistributionPriority = std::numeric_limits<int32>::max(); - _state.ItemLevelOverridePriority = std::numeric_limits<int32>::max(); _state.HasQualityBonus = false; } @@ -2599,13 +2594,6 @@ void BonusData::AddBonus(uint32 type, int32 const (&values)[2]) _state.ScalingStatDistributionPriority = values[1]; } break; - case ITEM_BONUS_ITEM_LEVEL_OVERRIDE: - if (values[1] < _state.ItemLevelOverridePriority) - { - ItemLevelOverride = static_cast<uint32>(values[0]); - _state.ItemLevelOverridePriority = values[1]; - } - break; case ITEM_BONUS_BONDING: Bonding = ItemBondingType(values[0]); break; diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 84e3e0f200a..b1721ed98a7 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -86,7 +86,6 @@ struct BonusData uint32 AppearanceModID; float RepairCostMultiplier; uint32 ScalingStatDistribution; - uint32 ItemLevelOverride; uint32 GemItemLevelBonus[MAX_ITEM_PROTO_SOCKETS]; int32 GemRelicType[MAX_ITEM_PROTO_SOCKETS]; uint16 GemRelicRankBonus[MAX_ITEM_PROTO_SOCKETS]; @@ -102,7 +101,6 @@ private: { int32 AppearanceModPriority; int32 ScalingStatDistributionPriority; - int32 ItemLevelOverridePriority; bool HasQualityBonus; } _state; }; |
