diff options
author | megamage <none@none> | 2009-06-01 21:59:55 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-06-01 21:59:55 -0500 |
commit | 670a901fe121f00f24426d1af46c0cedbb9d490f (patch) | |
tree | e7ea6ea66a2c7a1a2ffb92df8b8a844c51a8478c /src/game/StatSystem.cpp | |
parent | 7344a5ef6f776f355cda34da77d2aed01f228b47 (diff) |
Warlock pet scaling off Lock stats. By arcx and nesocip
--HG--
branch : trunk
Diffstat (limited to 'src/game/StatSystem.cpp')
-rw-r--r-- | src/game/StatSystem.cpp | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp index 87bd8a46825..416352bb25b 100644 --- a/src/game/StatSystem.cpp +++ b/src/game/StatSystem.cpp @@ -893,7 +893,7 @@ bool Pet::UpdateStats(Stats stat) float value = GetTotalStatValue(stat); Unit *owner = GetOwner(); - if ( stat == STAT_STAMINA ) + if ( stat == STAT_STAMINA && !owner->getClass() == CLASS_WARLOCK) { if(owner) value += float(owner->GetStat(stat)) * 0.3f; @@ -905,6 +905,15 @@ bool Pet::UpdateStats(Stats stat) value += float(owner->GetStat(stat)) * 0.3f; } + // warlock pet stat scaling as calculated from nesocip for patch 3.0.9 and 3.1.0 + if(getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK) + { + if(owner && stat == STAT_STAMINA) + { + value += float(owner->GetStat(STAT_STAMINA)) * 0.75f; + } + } + SetStat(stat, int32(value)); switch(stat) @@ -976,10 +985,39 @@ void Pet::UpdateMaxHealth() { UnitMods unitMod = UNIT_MOD_HEALTH; float stamina = GetStat(STAT_STAMINA) - GetCreateStat(STAT_STAMINA); + float multiplicator = 10.0f; + + // nesocips warlock pet stats calculation + switch(GetEntry()) + { + case 416: // imp + multiplicator = 8.4f; + break; + + case 1860: // voidwalker + multiplicator = 11.0f; + break; + + case 1863: // succubus + multiplicator = 9.1f; + break; + + case 417: // felhunter + multiplicator = 9.5f; + break; + + case 17252: // felguard + multiplicator = 11.0f; + break; + + default: + multiplicator = 10.0f; + break; + } float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreateHealth(); value *= GetModifierValue(unitMod, BASE_PCT); - value += GetModifierValue(unitMod, TOTAL_VALUE) + stamina * 10.0f; + value += GetModifierValue(unitMod, TOTAL_VALUE) + stamina * multiplicator; value *= GetModifierValue(unitMod, TOTAL_PCT); SetMaxHealth((uint32)value); @@ -990,10 +1028,29 @@ void Pet::UpdateMaxPower(Powers power) UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + power); float addValue = (power == POWER_MANA) ? GetStat(STAT_INTELLECT) - GetCreateStat(STAT_INTELLECT) : 0.0f; + float multiplicator = 15.0f; + + switch(GetEntry()) + { + case 416: // imp + multiplicator = 4.95f; + break; + + case 1860: // voidwalker + case 1863: // succubus + case 417: // felhunter + case 17252: // felguard + multiplicator = 11.5f; + break; + + default: + multiplicator = 15.0f; + break; + } float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreatePowers(power); value *= GetModifierValue(unitMod, BASE_PCT); - value += GetModifierValue(unitMod, TOTAL_VALUE) + addValue * 15.0f; + value += GetModifierValue(unitMod, TOTAL_VALUE) + addValue * multiplicator; value *= GetModifierValue(unitMod, TOTAL_PCT); SetMaxPower(power, uint32(value)); |