aboutsummaryrefslogtreecommitdiff
path: root/src/game/StatSystem.cpp
diff options
context:
space:
mode:
authorMachiavelli <none@none>2009-06-22 23:53:37 +0200
committerMachiavelli <none@none>2009-06-22 23:53:37 +0200
commit2ce88f44aa47757b542d23e1f97101227073fcfd (patch)
tree72aff353a9a382556df306455fa836b23bc16d39 /src/game/StatSystem.cpp
parent8533946ac1b6548d21492b3f1ec41b60a73a5bd2 (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.cpp58
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);
}
/*#######################################