[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:
DiSlord 2009-05-14 00:10:14 +04:00
parent fd71c2bd6f
commit bfe2e187a6
4 changed files with 106 additions and 70 deletions

View file

@ -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{