diff options
author | megamage <none@none> | 2009-08-12 20:30:17 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-12 20:30:17 -0500 |
commit | d575793f6d6cbc2e252d3f96f36f0ae21e63705c (patch) | |
tree | 90aa43edc47ded4545a42fe499a0c0339533df6e /src/game/Player.cpp | |
parent | 4f4775a31bd6f6aa8e3896100aeded0f23c7169d (diff) |
[8343] Extand level allowed range for item use to upper values if it end at max player level. Author: VladimirMangos
Also add DEFAULT_MAX_LEVEL define for store current used client expection about max player level.
For example for current supported this is 80.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r-- | src/game/Player.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index c54679ad623..6e758df7a77 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -6690,13 +6690,20 @@ void Player::_ApplyItemMods(Item *item, uint8 slot,bool apply) void Player::_ApplyItemBonuses(ItemPrototype const *proto, uint8 slot, bool apply, bool only_level_scale /*= false*/) { - if(slot >= INVENTORY_SLOT_BAG_END || !proto) + if (slot >= INVENTORY_SLOT_BAG_END || !proto) return; ScalingStatDistributionEntry const *ssd = proto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(proto->ScalingStatDistribution) : NULL; - ScalingStatValuesEntry const *ssv = proto->ScalingStatValue ? sScalingStatValuesStore.LookupEntry(getLevel()) : NULL; + if (only_level_scale && !ssd) + return; + + // req. check at equip, but allow use for extended range if range limit max level, set proper level + uint32 ssd_level = getLevel(); + if (ssd && ssd_level > ssd->MaxLevel) + ssd_level = ssd->MaxLevel; - if(only_level_scale && !(ssd && ssv)) + ScalingStatValuesEntry const *ssv = proto->ScalingStatValue ? sScalingStatValuesStore.LookupEntry(ssd_level) : NULL; + if (only_level_scale && !ssv) return; for (uint8 i = 0; i < MAX_ITEM_PROTO_STATS; ++i) @@ -10145,7 +10152,8 @@ uint8 Player::CanEquipItem( uint8 slot, uint16 &dest, Item *pItem, bool swap, bo } ScalingStatDistributionEntry const *ssd = pProto->ScalingStatDistribution ? sScalingStatDistributionStore.LookupEntry(pProto->ScalingStatDistribution) : 0; - if (ssd && ssd->MaxLevel < getLevel()) + // check allowed level (extend range to upper values if MaxLevel more or equal max player level, this let GM set high level with 1...max range items) + if (ssd && ssd->MaxLevel < DEFAULT_MAX_LEVEL && ssd->MaxLevel < getLevel()) return EQUIP_ERR_ITEM_CANT_BE_EQUIPPED; uint8 eslot = FindEquipSlot( pProto, slot, swap ); |