diff options
author | maximius <none@none> | 2009-11-17 20:50:38 -0800 |
---|---|---|
committer | maximius <none@none> | 2009-11-17 20:50:38 -0800 |
commit | d03c14e0b7f37fb09048b8cb2be363cb20e30b7a (patch) | |
tree | b25ad95c445bc225418126846647bfd13eaba234 /src | |
parent | 27d3bf466c447f8df587eb29f5be48d837b6027c (diff) |
*Furor now stores and restores Energy properly, thanks lobuz
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 21 | ||||
-rw-r--r-- | src/game/Unit.cpp | 15 |
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; } } |