diff options
author | megamage <none@none> | 2009-01-09 16:43:23 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-01-09 16:43:23 -0600 |
commit | 1ffb1cef3344206dfea149cb78146c30449d51c2 (patch) | |
tree | 655ac591f6f5aaca3dc65d67f3940f589e2394db /src/game/StatSystem.cpp | |
parent | 5c8f52d134899e10484dd47e91b612e2228842bf (diff) | |
parent | 90a82a81ad5d20d5e7188d6e9d660280f0b1eab4 (diff) |
*Merge.
--HG--
branch : trunk
Diffstat (limited to 'src/game/StatSystem.cpp')
-rw-r--r-- | src/game/StatSystem.cpp | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index dde5a2cfb40..50f0ed66bd7 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -982,23 +982,6 @@ void Pet::UpdateAttackPowerAndDamage(bool ranged) frost = 0; SetBonusDamage( int32(frost * 0.4f)); } - //force of nature - else if(GetEntry() == 1964) - { - int32 spellDmg = int32(owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE)) - owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE); - if(spellDmg > 0) - SetBonusDamage(int32(spellDmg * 0.09f)); - } - //greater fire elemental - else if(GetEntry() == 15438) - { - if(Unit* shaman = owner->GetOwner()) - { - int32 spellDmg = int32(shaman->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE)) - shaman->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - if(spellDmg > 0) - SetBonusDamage(int32(spellDmg * 0.4f)); - } - } } SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, val + bonusAP); @@ -1024,11 +1007,33 @@ void Pet::UpdateDamagePhysical(WeaponAttackType attType) if(attType > BASE_ATTACK) return; + float bonusDamage = 0.0f; + if(Unit* owner = GetOwner()) + { + //force of nature + if(GetEntry() == 1964) + { + int32 spellDmg = int32(owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE)) - owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE); + if(spellDmg > 0) + bonusDamage = spellDmg * 0.09f; + } + //greater fire elemental + else if(GetEntry() == 15438) + { + if(Unit* shaman = owner->GetOwner()) + { + int32 spellDmg = int32(shaman->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE)) - shaman->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + if(spellDmg > 0) + bonusDamage = spellDmg * 0.4f; + } + } + } + UnitMods unitMod = UNIT_MOD_DAMAGE_MAINHAND; float att_speed = float(GetAttackTime(BASE_ATTACK))/1000.0f; - float base_value = GetModifierValue(unitMod, BASE_VALUE) + GetTotalAttackPowerValue(attType)/ 14.0f * att_speed; + float base_value = GetModifierValue(unitMod, BASE_VALUE) + GetTotalAttackPowerValue(attType)/ 14.0f * att_speed + bonusDamage; float base_pct = GetModifierValue(unitMod, BASE_PCT); float total_value = GetModifierValue(unitMod, TOTAL_VALUE); float total_pct = GetModifierValue(unitMod, TOTAL_PCT); |