diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-08-19 15:42:05 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-08-19 15:42:05 +0200 |
commit | 69cfc0f7bfc927f209d326534e9ad35291f67ff0 (patch) | |
tree | 938cfcee371b4900e92fb3f1d59e000b3218c438 /src | |
parent | 56495da72eca5dfe08ebf3d43adb68eb11653dc3 (diff) |
Core/Players: Fixed setting rune regen fields, thanks Lordron for noticing
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 13 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 3 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/StatSystem.cpp | 14 |
3 files changed, 10 insertions, 20 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b56a58e0744..1e85afd47b1 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23805,18 +23805,15 @@ void Player::UpdateCharmedAI() } } -uint32 Player::GetRuneBaseCooldown(uint8 index) +uint32 Player::GetRuneTypeBaseCooldown(RuneType runeType) const { - uint8 rune = GetBaseRune(index); - uint32 cooldown = RUNE_BASE_COOLDOWN; + float cooldown = RUNE_BASE_COOLDOWN; float hastePct = 0.0f; AuraEffectList const& regenAura = GetAuraEffectsByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for (AuraEffectList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i) - { - if ((*i)->GetMiscValue() == POWER_RUNES && (*i)->GetMiscValueB() == rune) - cooldown = cooldown*(100-(*i)->GetAmount())/100; - } + if ((*i)->GetMiscValue() == POWER_RUNES && (*i)->GetMiscValueB() == runeType) + cooldown *= 1.0f - (*i)->GetAmount() / 100.0f; // Runes cooldown are now affected by player's haste from equipment ... hastePct = GetRatingBonusValue(CR_HASTE_MELEE); @@ -23920,7 +23917,7 @@ void Player::InitRunes() m_runes->SetRuneState(i); } - for (uint8 i = 0; i < MAX_RUNES; ++i) + for (uint8 i = 0; i < NUM_RUNE_TYPES; ++i) SetFloatValue(PLAYER_RUNE_REGEN_1 + i, 0.1f); // set a base regen timer equal to 10 sec } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index a57c1fe908c..d4da03d3b53 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2508,7 +2508,8 @@ class Player : public Unit, public GridObject<Player> RuneType GetBaseRune(uint8 index) const { return RuneType(m_runes->runes[index].BaseRune); } RuneType GetCurrentRune(uint8 index) const { return RuneType(m_runes->runes[index].CurrentRune); } uint32 GetRuneCooldown(uint8 index) const { return m_runes->runes[index].Cooldown; } - uint32 GetRuneBaseCooldown(uint8 index); + uint32 GetRuneBaseCooldown(uint8 index) const { return GetRuneTypeBaseCooldown(GetBaseRune(index)); } + uint32 GetRuneTypeBaseCooldown(RuneType runeType) const; bool IsBaseRuneSlotsOnCooldown(RuneType runeType) const; RuneType GetLastUsedRune() { return m_runes->lastUsedRune; } void SetLastUsedRune(RuneType type) { m_runes->lastUsedRune = type; } diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 1f221b14713..f5b313987e3 100755 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -730,17 +730,9 @@ void Player::UpdateRuneRegen(RuneType rune) void Player::UpdateAllRunesRegen() { - uint32 cooldown = 0; - - for (uint8 i = 0; i < MAX_RUNES; ++i) - { - cooldown = GetRuneBaseCooldown(i); - if (cooldown) - { - float regen = float(1 * IN_MILLISECONDS) / float(cooldown); - SetFloatValue(PLAYER_RUNE_REGEN_1 + i, regen); - } - } + for (uint8 i = 0; i < NUM_RUNE_TYPES; ++i) + if (uint32 cooldown = GetRuneTypeBaseCooldown(RuneType(i))) + SetFloatValue(PLAYER_RUNE_REGEN_1 + i, float(1 * IN_MILLISECONDS) / float(cooldown)); } void Player::_ApplyAllStatBonuses() |