diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 3 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 12 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 302c80bf757..87b66c3922d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -410,8 +410,7 @@ struct Areas enum RuneCooldowns { - RUNE_BASE_COOLDOWN = 10000, - RUNE_MISS_COOLDOWN = 1500 // cooldown applied on runes when the spell misses + RUNE_BASE_COOLDOWN = 10000 }; struct Runes diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 300a3155fff..eb43009aa1f 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4909,8 +4909,11 @@ void Spell::SendSpellGo() && HasPowerTypeCost(POWER_RUNES) && !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_COST)) { - castFlags |= CAST_FLAG_NO_GCD; // not needed, but Blizzard sends it - castFlags |= CAST_FLAG_RUNE_LIST; // rune cooldowns list + castFlags |= CAST_FLAG_NO_GCD; // not needed, but it's being sent according to sniffs + + // Only send rune cooldowns when there has been a change + if (m_runesState != m_caster->ToPlayer()->GetRunesState()) + castFlags |= CAST_FLAG_RUNE_LIST; // rune cooldowns list } if (m_targets.HasTraj()) @@ -5677,6 +5680,9 @@ void Spell::TakeRunePower(bool didHit) Player* player = m_caster->ToPlayer(); m_runesState = player->GetRunesState(); // store previous state + if (!didHit) + return; + int32 runeCost = std::accumulate(m_powerCost.begin(), m_powerCost.end(), 0, [](int32 totalCost, SpellPowerCost const& cost) { return totalCost + (cost.Power == POWER_RUNES ? cost.Amount : 0); @@ -5686,7 +5692,7 @@ void Spell::TakeRunePower(bool didHit) { if (!player->GetRuneCooldown(i) && runeCost > 0) { - player->SetRuneCooldown(i, didHit ? player->GetRuneBaseCooldown() : uint32(RUNE_MISS_COOLDOWN)); + player->SetRuneCooldown(i, player->GetRuneBaseCooldown()); --runeCost; } } |