aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-03-10 20:53:29 +0100
committerShauren <shauren.trinity@gmail.com>2015-03-10 20:53:29 +0100
commitc8944d73b32697456b8baeaa72f98378044d3800 (patch)
tree6f0279c9f4e667c36657d48fa82f23c6b4b95ec7
parent654d7fc7d5612cc90d0f2f4324d540bad5d55ac5 (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.cpp9
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
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);
}