mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[7819] Correct use item ScalingStatValues data (ScalingStatValues.dbc):
- ScalingStatDistribution stats multiplier - Armor bonus from ssv - Damage from ssv - Feral AP from ssv - Feral AP from ssv dps bonus Use item->StatsCount in apply mods Not allow equip item if level > ScalingStatDistribution->maxlevel field TODO find more info about ScalingStatValuesEntry->spellBonus Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
parent
fd71c2bd6f
commit
bfe2e187a6
4 changed files with 106 additions and 70 deletions
|
|
@ -1136,7 +1136,7 @@ struct RandomPropertiesPointsEntry
|
|||
struct ScalingStatDistributionEntry
|
||||
{
|
||||
uint32 Id;
|
||||
uint32 StatMod[10];
|
||||
int32 StatMod[10];
|
||||
uint32 Modifier[10];
|
||||
uint32 MaxLevel;
|
||||
};
|
||||
|
|
@ -1145,7 +1145,58 @@ struct ScalingStatValuesEntry
|
|||
{
|
||||
uint32 Id;
|
||||
uint32 Level;
|
||||
uint32 Multiplier[17];
|
||||
uint32 ssdMultiplier[5]; // Multiplier for ScalingStatDistribution
|
||||
uint32 armorMod[4]; // Armor for level
|
||||
uint32 dpsMod[6]; // DPS mod for level
|
||||
uint32 spellBonus; // not sure.. TODO: need more info about
|
||||
uint32 feralBonus; // Feral AP bonus
|
||||
|
||||
uint32 getssdMultiplier(uint32 mask) const
|
||||
{
|
||||
if (mask&0x001F)
|
||||
{
|
||||
if(mask & 0x00000001) return ssdMultiplier[0];
|
||||
if(mask & 0x00000002) return ssdMultiplier[1];
|
||||
if(mask & 0x00000004) return ssdMultiplier[2];
|
||||
if(mask & 0x00000008) return ssdMultiplier[3];
|
||||
if(mask & 0x00000010) return ssdMultiplier[4];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
uint32 getArmorMod(uint32 mask) const
|
||||
{
|
||||
if (mask&0x01E0)
|
||||
{
|
||||
if(mask & 0x00000020) return armorMod[0];
|
||||
if(mask & 0x00000040) return armorMod[1];
|
||||
if(mask & 0x00000080) return armorMod[2];
|
||||
if(mask & 0x00000100) return armorMod[3];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
uint32 getDPSMod(uint32 mask) const
|
||||
{
|
||||
if (mask&0x7E00)
|
||||
{
|
||||
if(mask & 0x00000200) return dpsMod[0];
|
||||
if(mask & 0x00000400) return dpsMod[1];
|
||||
if(mask & 0x00000800) return dpsMod[2];
|
||||
if(mask & 0x00001000) return dpsMod[3];
|
||||
if(mask & 0x00002000) return dpsMod[4];
|
||||
if(mask & 0x00004000) return dpsMod[5];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
uint32 getSpellBonus(uint32 mask) const
|
||||
{
|
||||
if (mask & 0x00008000) return spellBonus;
|
||||
return 0;
|
||||
}
|
||||
uint32 getFeralBonus(uint32 mask) const
|
||||
{
|
||||
if (mask & 0x00010000) return feralBonus;
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
//struct SkillLineCategoryEntry{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue