aboutsummaryrefslogtreecommitdiff
path: root/src/game/StatSystem.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-06-01 21:59:55 -0500
committermegamage <none@none>2009-06-01 21:59:55 -0500
commit670a901fe121f00f24426d1af46c0cedbb9d490f (patch)
treee7ea6ea66a2c7a1a2ffb92df8b8a844c51a8478c /src/game/StatSystem.cpp
parent7344a5ef6f776f355cda34da77d2aed01f228b47 (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.cpp63
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));