diff options
author | Machiavelli <none@none> | 2009-06-22 23:53:37 +0200 |
---|---|---|
committer | Machiavelli <none@none> | 2009-06-22 23:53:37 +0200 |
commit | 2ce88f44aa47757b542d23e1f97101227073fcfd (patch) | |
tree | 72aff353a9a382556df306455fa836b23bc16d39 /src/game/StatSystem.cpp | |
parent | 8533946ac1b6548d21492b3f1ec41b60a73a5bd2 (diff) |
* Update creature damage calculation by synchronising Creature::UpdateAttackPowerAndDamage and Creature::UpdateDamagePhysical with MaNGOS.
--HG--
branch : trunk
Diffstat (limited to 'src/game/StatSystem.cpp')
-rw-r--r-- | src/game/StatSystem.cpp | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index bb7b1273ac0..bd283c81fc5 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -851,70 +851,32 @@ void Creature::UpdateAttackPowerAndDamage(bool ranged) //automatically update weapon damage after attack power modification if(ranged) - UpdateDamagePhysical(RANGED_ATTACK); - else - { - UpdateDamagePhysical(BASE_ATTACK); - UpdateDamagePhysical(OFF_ATTACK); - } + return; + //automatically update weapon damage after attack power modification + UpdateDamagePhysical(BASE_ATTACK); } void Creature::UpdateDamagePhysical(WeaponAttackType attType) { - UnitMods unitMod; - switch(attType) - { - case BASE_ATTACK: - default: - unitMod = UNIT_MOD_DAMAGE_MAINHAND; - break; - case OFF_ATTACK: - unitMod = UNIT_MOD_DAMAGE_OFFHAND; - break; - case RANGED_ATTACK: - unitMod = UNIT_MOD_DAMAGE_RANGED; - break; - } - - //float att_speed = float(GetAttackTime(attType))/1000.0f; + if(attType > BASE_ATTACK) + return; - float weapon_mindamage = GetWeaponDamageRange(attType, MINDAMAGE); - float weapon_maxdamage = GetWeaponDamageRange(attType, MAXDAMAGE); + UnitMods unitMod = UNIT_MOD_DAMAGE_MAINHAND; - //float base_value = GetModifierValue(unitMod, BASE_VALUE) - // + (weapon_mindamage + weapon_maxdamage) - // * GetTotalAttackPowerValue(attType) / (getLevel() * 30); float base_value = GetModifierValue(unitMod, BASE_VALUE) + GetTotalAttackPowerValue(attType); float base_pct = GetModifierValue(unitMod, BASE_PCT); float total_value = GetModifierValue(unitMod, TOTAL_VALUE); float total_pct = GetModifierValue(unitMod, TOTAL_PCT); float dmg_multiplier = GetCreatureInfo()->dmg_multiplier; - if(!CanUseAttackType(attType)) - { - weapon_mindamage = 0; - weapon_maxdamage = 0; - } + float weapon_mindamage = GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE); + float weapon_maxdamage = GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE); float mindamage = ((base_value + weapon_mindamage) * base_pct + total_value) * total_pct * dmg_multiplier; float maxdamage = ((base_value + weapon_maxdamage) * base_pct + total_value) * total_pct * dmg_multiplier; - switch(attType) - { - case BASE_ATTACK: - default: - SetStatFloatValue(UNIT_FIELD_MINDAMAGE,mindamage); - SetStatFloatValue(UNIT_FIELD_MAXDAMAGE,maxdamage); - break; - case OFF_ATTACK: - SetStatFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE,mindamage); - SetStatFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE,maxdamage); - break; - case RANGED_ATTACK: - SetStatFloatValue(UNIT_FIELD_MINRANGEDDAMAGE,mindamage); - SetStatFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE,maxdamage); - break; - } + SetStatFloatValue(UNIT_FIELD_MINDAMAGE, mindamage); + SetStatFloatValue(UNIT_FIELD_MAXDAMAGE, maxdamage); } /*####################################### |