diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-01-10 00:14:45 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-05-20 23:39:39 +0200 |
| commit | 65c0a0ee4d5c299f3caab04b6cb3fcd7a4a93e2e (patch) | |
| tree | 32d719777c358074e00a03aaf7cea60840cdf5a5 /src/server/game/Entities/Unit | |
| parent | 91753a94b33b73185ebb0ef551c02bae422b1a46 (diff) | |
Core/Entities: Updated updatefields to 7.0.1.20810
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 36 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 |
2 files changed, 14 insertions, 24 deletions
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index f5660efe00e..deb163fde7e 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -752,6 +752,10 @@ void Player::ApplyHealthRegenBonus(int32 amount, bool apply) void Player::UpdateManaRegen() { + uint32 manaIndex = GetPowerIndex(POWER_MANA); + if (manaIndex == MAX_POWERS) + return; + // Mana regen from spirit float spirit_regen = OCTRegenMPPerSpirit(); // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen @@ -763,36 +767,22 @@ void Player::UpdateManaRegen() // Set regen rate in cast state apply only on spirit based regen int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, base_regen + CalculatePct(spirit_regen, modManaRegenInterrupt)); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, 0.001f + spirit_regen + base_regen); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + manaIndex, base_regen + CalculatePct(spirit_regen, modManaRegenInterrupt)); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + manaIndex, 0.001f + spirit_regen + base_regen); } -void Player::UpdateRuneRegen(RuneType rune) +void Player::UpdateAllRunesRegen() { - if (rune >= NUM_RUNE_TYPES) + if (getClass() != CLASS_DEATH_KNIGHT) return; - uint32 cooldown = 0; - - for (uint32 i = 0; i < MAX_RUNES; ++i) - if (GetBaseRune(i) == rune) - { - cooldown = GetRuneBaseCooldown(i); - break; - } - - if (cooldown <= 0) + uint32 runeIndex = GetPowerIndex(POWER_RUNES); + if (runeIndex == MAX_POWERS) return; - float regen = float(1 * IN_MILLISECONDS) / float(cooldown); - SetFloatValue(PLAYER_RUNE_REGEN_1 + uint8(rune), regen); -} - -void Player::UpdateAllRunesRegen() -{ - 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)); + uint32 cooldown = GetRuneTypeBaseCooldown(); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + runeIndex, float(1 * IN_MILLISECONDS) / float(cooldown)); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + runeIndex, float(1 * IN_MILLISECONDS) / float(cooldown)); } void Player::_ApplyAllStatBonuses() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 4328af96d90..271b84364de 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8234,7 +8234,7 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto crit_chance = 0.0f; // For other schools else if (GetTypeId() == TYPEID_PLAYER) - crit_chance = GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1 + GetFirstSchoolInMask(schoolMask)); + crit_chance = GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1); else { crit_chance = (float)m_baseSpellCritChance; |
