From 4dc27b53eb7cb21ac9ff6e10d0261806edeac8bd Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 8 Jul 2019 15:30:12 +0200 Subject: [PATCH] Core/Misc: corrected a few gametime replacements --- src/server/game/Entities/Player/Player.cpp | 4 ++-- src/server/game/Server/WorldSession.cpp | 2 +- src/server/scripts/Spells/spell_generic.cpp | 23 +++++++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 30826f5a30a..4bef45d91f5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6815,8 +6815,8 @@ void Player::RewardReputation(Quest const* quest) void Player::UpdateHonorFields() { /// called when rewarding honor and at each save - time_t now = time_t(GameTime::GetGameTime()); - time_t today = time_t(GameTime::GetGameTime() / DAY) * DAY; + time_t now = GameTime::GetGameTime(); + time_t today = GameTime::GetGameTime() / DAY * DAY; if (m_lastHonorUpdateTime < today) { diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index ab357048997..8fd4327a062 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -243,7 +243,7 @@ void WorldSession::SendPacket(WorldPacket const* packet, bool forced /*= false*/ static uint64 sendPacketCount = 0; static uint64 sendPacketBytes = 0; - static time_t firstTime = GameTime::GetGameTime(); + static time_t firstTime = time(nullptr); static time_t lastTime = firstTime; // next 60 secs start time static uint64 sendLastPacketCount = 0; diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 89dc73f84e7..5bbb5c59e5a 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -4975,6 +4975,28 @@ class spell_gen_launch_quest : public SpellScript } }; +// Used for some spells cast by vehicles or charmed creatures that do not send a cooldown event on their own +class spell_gen_charmed_unit_spell_cooldown : public SpellScript +{ + PrepareSpellScript(spell_gen_charmed_unit_spell_cooldown); + + void HandleCast() + { + Unit* caster = GetCaster(); + if (Player* owner = caster->GetCharmerOrOwnerPlayerOrPlayerItself()) + { + WorldPacket data; + caster->GetSpellHistory()->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_NONE, GetSpellInfo()->Id, GetSpellInfo()->RecoveryTime); + owner->SendDirectMessage(&data); + } + } + + void Register() override + { + OnCast += SpellCastFn(spell_gen_charmed_unit_spell_cooldown::HandleCast); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -5089,4 +5111,5 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_mirror_image_aura); RegisterSpellScript(spell_gen_reverse_cast_ride_vehicle); RegisterSpellScript(spell_gen_launch_quest); + RegisterSpellScript(spell_gen_charmed_unit_spell_cooldown); }