aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormaximius <none@none>2009-11-17 20:50:38 -0800
committermaximius <none@none>2009-11-17 20:50:38 -0800
commitd03c14e0b7f37fb09048b8cb2be363cb20e30b7a (patch)
treeb25ad95c445bc225418126846647bfd13eaba234 /src
parent27d3bf466c447f8df587eb29f5be48d837b6027c (diff)
*Furor now stores and restores Energy properly, thanks lobuz
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellAuras.cpp21
-rw-r--r--src/game/Unit.cpp15
2 files changed, 17 insertions, 19 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 7a00ca56739..2a420a3c7f2 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -3522,7 +3522,7 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real, bool changeAmoun
break;
}
- if(apply)
+ if (apply)
{
// remove other shapeshift before applying a new one
if(m_target->m_ShapeShiftFormSpellId)
@@ -3535,9 +3535,9 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real, bool changeAmoun
if(PowerType != POWER_MANA)
{
- uint32 oldVal = m_target->GetPower(PowerType);
+ uint32 oldPower = m_target->GetPower(PowerType);
// reset power to default values only at power change
- if(m_target->getPowerType()!=PowerType)
+ if(m_target->getPowerType() != PowerType)
m_target->setPowerType(PowerType);
switch(form)
@@ -3547,20 +3547,19 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real, bool changeAmoun
case FORM_DIREBEAR:
{
// get furor proc chance
- int32 FurorChance = 0;
- if(AuraEffect const * dummy = m_target->GetDummyAura(SPELLFAMILY_DRUID, 238, 0))
- FurorChance = dummy->GetAmount();
+ uint32 FurorChance = 0;
+ if (AuraEffect const * dummy = m_target->GetDummyAura(SPELLFAMILY_DRUID, 238, 0))
+ FurorChance = dummy->GetAmount() > 0 ? uint32(dummy->GetAmount()) : 0;
if (GetMiscValue() == FORM_CAT)
{
- int32 basePoints = (FurorChance < oldVal ? FurorChance : oldVal);
- m_target->CastCustomSpell(m_target,17099,&basePoints,NULL,NULL,true,NULL,this);
+ int32 basePoints = int32(std::min(oldPower, FurorChance));
+ m_target->CastCustomSpell(m_target, 17099, &basePoints, NULL, NULL, true, NULL, this);
}
else
{
- m_target->SetPower(POWER_RAGE,0);
- if(urand(1,100) <= FurorChance)
- m_target->CastSpell(m_target,17057,true,NULL,this);
+ uint32 newEnergy = std::min(m_target->GetPower(POWER_ENERGY), FurorChance);
+ m_target->SetPower(POWER_ENERGY, newEnergy);
}
break;
}
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index e5eaadbedff..bd5e96c9adc 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -8012,20 +8012,19 @@ void Unit::setPowerType(Powers new_powertype)
case POWER_MANA:
break;
case POWER_RAGE:
- SetMaxPower(POWER_RAGE,GetCreatePowers(POWER_RAGE));
- SetPower( POWER_RAGE,0);
+ SetMaxPower(POWER_RAGE, GetCreatePowers(POWER_RAGE));
+ SetPower(POWER_RAGE, 0);
break;
case POWER_FOCUS:
- SetMaxPower(POWER_FOCUS,GetCreatePowers(POWER_FOCUS));
- SetPower( POWER_FOCUS,GetCreatePowers(POWER_FOCUS));
+ SetMaxPower(POWER_FOCUS, GetCreatePowers(POWER_FOCUS));
+ SetPower(POWER_FOCUS, GetCreatePowers(POWER_FOCUS));
break;
case POWER_ENERGY:
- SetMaxPower(POWER_ENERGY,GetCreatePowers(POWER_ENERGY));
- SetPower( POWER_ENERGY,0);
+ SetMaxPower(POWER_ENERGY, GetCreatePowers(POWER_ENERGY));
break;
case POWER_HAPPINESS:
- SetMaxPower(POWER_HAPPINESS,GetCreatePowers(POWER_HAPPINESS));
- SetPower(POWER_HAPPINESS,GetCreatePowers(POWER_HAPPINESS));
+ SetMaxPower(POWER_HAPPINESS, GetCreatePowers(POWER_HAPPINESS));
+ SetPower(POWER_HAPPINESS, GetCreatePowers(POWER_HAPPINESS));
break;
}
}