aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorMorgoporc <j.fraisse45@laposte.net>2014-09-22 01:05:13 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-09-22 01:05:13 +0100
commitec59c3ab0377f4077a2d63e7b242f2a3693dd2d4 (patch)
tree0238645a8170d8f6141eee7ec5284620a15f9487 /src/server/game/Entities/Unit
parent84efd8b92bec4af04263eb7b86a598572164a20b (diff)
Core/Players/DK: Implement Rune Grace Period mechanic
Closes #11736 Fixes #6122
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index c4569887abf..a3b8adf85d0 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -7604,7 +7604,7 @@ bool Unit::HandleAuraProc(Unit* victim, uint32 damage, Aura* triggeredByAura, Sp
player->GetBaseRune(i) != RUNE_BLOOD)
continue;
}
- if (player->GetRuneCooldown(i) != player->GetRuneBaseCooldown(i))
+ if (player->GetRuneCooldown(i) != (player->GetRuneBaseCooldown(i) - player->GetLastRuneGraceTimer(i)))
continue;
--runesLeft;
@@ -11760,6 +11760,16 @@ void Unit::ClearInCombat()
m_CombatTimer = 0;
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
+ // Reset rune flags after combat
+ if (GetTypeId() == TYPEID_PLAYER && getClass() == CLASS_DEATH_KNIGHT)
+ {
+ for (uint8 i = 0; i < MAX_RUNES; ++i)
+ {
+ ToPlayer()->SetRuneTimer(i, 0xFFFFFFFF);
+ ToPlayer()->SetLastRuneGraceTimer(i, 0);
+ }
+ }
+
// Player's state will be cleared in Player::UpdateContestedPvP
if (Creature* creature = ToCreature())
{