diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-03-10 20:53:29 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-03-10 20:53:29 +0100 |
commit | c8944d73b32697456b8baeaa72f98378044d3800 (patch) | |
tree | 6f0279c9f4e667c36657d48fa82f23c6b4b95ec7 | |
parent | 654d7fc7d5612cc90d0f2f4324d540bad5d55ac5 (diff) |
Core/Players: Set holy power decay timer to 20 seconds after leaving combat (also added OnCombatExit hook for stuff like this)
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 56df1419056..a25111df730 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2446,7 +2446,7 @@ void Player::Regenerate(Powers power) case POWER_HOLY_POWER: // Regenerate holy power { if (!IsInCombat()) - addvalue += -1.0f; // remove 1 each 10 sec + addvalue += -1.0f; // remove 1 every 10 sec, first one removed 20s after leaving combat } break; case POWER_RUNES: @@ -26110,6 +26110,13 @@ VoidStorageItem* Player::GetVoidStorageItem(uint64 id, uint8& slot) const return NULL; } +void Player::OnCombatExit() +{ + UpdatePotionCooldown(); + if (getClass() == CLASS_PALADIN) + m_holyPowerRegenTimerCount = 20000; // first charge of holy power decays 20 seconds after leaving combat +} + void Player::SendMovementSetCanTransitionBetweenSwimAndFly(bool apply) { Movement::PacketSender(this, static_cast<OpcodeServer>(NULL_OPCODE), apply ? diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4e3a8f859cc..79ee97e16c9 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2627,6 +2627,8 @@ class Player : public Unit, public GridObject<Player> VoidStorageItem* GetVoidStorageItem(uint8 slot) const; VoidStorageItem* GetVoidStorageItem(uint64 id, uint8& slot) const; + void OnCombatExit(); + protected: // Gamemaster whisper whitelist GuidList WhisperList; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index ff17d843f08..b26211a4b5d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9831,7 +9831,7 @@ void Unit::ClearInCombat() return; } else - ToPlayer()->UpdatePotionCooldown(); + ToPlayer()->OnCombatExit(); RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT); } |