* Add support for basedmg and baserangeddmg values in creature_classlevelstats.

* Remove mindmg, maxdmg, attackpower and ranged field in creature_template and add Dmg_Mod, Rangeddmg_Mod field.

--HG--
branch : trunk
This commit is contained in:
win32
2010-01-21 13:48:27 +02:00
parent 1c310c887b
commit 2572e9ef8e
13 changed files with 507 additions and 34 deletions
+24 -6
View File
@@ -89,10 +89,7 @@ struct CreatureInfo
float speed;
float scale;
uint32 rank;
float mindmg;
float maxdmg;
uint32 dmgschool;
uint32 attackpower;
float dmg_multiplier;
uint32 baseattacktime;
uint32 rangeattacktime;
@@ -104,9 +101,6 @@ struct CreatureInfo
uint32 trainer_spell;
uint32 trainer_class;
uint32 trainer_race;
float minrangedmg;
float maxrangedmg;
uint32 rangedattackpower;
uint32 type; // enum CreatureType values
uint32 type_flags; // enum CreatureTypeFlags mask values
uint32 lootid;
@@ -129,6 +123,8 @@ struct CreatureInfo
float ModHealth;
float ModMana;
float ModArmor;
float ModDmg;
float ModRangedDmg;
bool RacialLeader;
uint32 questItems[6];
uint32 movementId;
@@ -175,6 +171,8 @@ struct TRINITY_DLL_SPEC CreatureBaseStats
uint32 BaseHealth[MAX_CREATURE_BASE_HP];
uint32 BaseMana;
uint32 BaseArmor;
uint32 BaseDmg;
uint32 BaseRangedDmg;
// Helpers
@@ -197,6 +195,26 @@ struct TRINITY_DLL_SPEC CreatureBaseStats
return uint32((BaseArmor * info->ModArmor) + 0.5f);
}
uint32 GenerateMinDmg(CreatureInfo const* info) const
{
return uint32((BaseDmg * (info->baseattacktime / 1000.0f) / 2.5f) * info->ModDmg + 0.5f);
}
uint32 GenerateMaxDmg(CreatureInfo const* info) const
{
return uint32((BaseDmg * (info->baseattacktime / 1000) - GenerateMinDmg(info)) * info->ModDmg + 0.5f);
}
uint32 GenerateAttackPower(CreatureInfo const* info) const
{
return uint32(((GenerateMinDmg(info) + GenerateMaxDmg(info)) / 2.0f * 0.3f) * info->ModDmg + 0.5f);
}
uint32 GenerateRangedDmg(CreatureInfo const* info) const
{
return uint32((BaseDmg * (info->baseattacktime / 1000.0f) * info->ModRangedDmg) + 0.5f);
}
static CreatureBaseStats const* GetBaseStats(uint32 level, uint8 unitClass);
};