aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp15
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp3
-rw-r--r--src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp7
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp11
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldTB.cpp7
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.cpp3
-rw-r--r--src/server/game/BlackMarket/BlackMarketMgr.cpp9
-rw-r--r--src/server/game/Calendar/CalendarMgr.cpp3
-rw-r--r--src/server/game/Calendar/CalendarMgr.h3
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp15
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp7
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.h4
-rw-r--r--src/server/game/Entities/Corpse/Corpse.cpp8
-rw-r--r--src/server/game/Entities/Corpse/Corpse.h2
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp47
-rw-r--r--src/server/game/Entities/Creature/Creature.h7
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp34
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h17
-rw-r--r--src/server/game/Entities/Item/Item.cpp7
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp8
-rw-r--r--src/server/game/Entities/Player/Player.cpp70
-rw-r--r--src/server/game/Entities/Player/RestMgr.cpp3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Events/GameEventMgr.cpp19
-rw-r--r--src/server/game/Garrison/Garrison.cpp7
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp3
-rw-r--r--src/server/game/Grids/ObjectGridLoader.cpp3
-rw-r--r--src/server/game/Guilds/Guild.cpp18
-rw-r--r--src/server/game/Guilds/Guild.h4
-rw-r--r--src/server/game/Guilds/GuildFinderMgr.cpp3
-rw-r--r--src/server/game/Handlers/BattlefieldHandler.cpp3
-rw-r--r--src/server/game/Handlers/CalendarHandler.cpp17
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp6
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp5
-rw-r--r--src/server/game/Handlers/DuelHandler.cpp3
-rw-r--r--src/server/game/Handlers/GuildFinderHandler.cpp9
-rw-r--r--src/server/game/Handlers/HotfixHandler.cpp2
-rw-r--r--src/server/game/Handlers/LFGHandler.cpp3
-rw-r--r--src/server/game/Handlers/MailHandler.cpp13
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp8
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp2
-rw-r--r--src/server/game/Handlers/PetHandler.cpp2
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.cpp11
-rw-r--r--src/server/game/Mails/Mail.cpp3
-rw-r--r--src/server/game/Maps/Map.cpp12
-rw-r--r--src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp3
-rw-r--r--src/server/game/Scenarios/InstanceScenario.cpp3
-rw-r--r--src/server/game/Server/Packets/MailPackets.cpp5
-rw-r--r--src/server/game/Server/Protocol/PacketLog.cpp3
-rw-r--r--src/server/game/Server/WorldSession.cpp9
-rw-r--r--src/server/game/Server/WorldSocket.cpp3
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp2
-rw-r--r--src/server/game/Support/SupportMgr.cpp13
-rw-r--r--src/server/game/Time/GameTime.cpp4
-rw-r--r--src/server/game/World/World.cpp30
-rw-r--r--src/server/scripts/Commands/cs_ban.cpp5
-rw-r--r--src/server/scripts/Commands/cs_event.cpp5
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp3
-rw-r--r--src/server/scripts/Commands/cs_instance.cpp7
-rw-r--r--src/server/scripts/Commands/cs_list.cpp5
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp6
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp3
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp32
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp7
-rw-r--r--src/server/scripts/Northrend/zone_wintergrasp.cpp3
-rw-r--r--src/server/scripts/Spells/spell_item.cpp2
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp2
-rw-r--r--src/server/scripts/World/npcs_special.cpp4
68 files changed, 342 insertions, 265 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 37b58dee9c3..63d202e1c27 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -22,6 +22,7 @@
#include "CellImpl.h"
#include "ChatTextBuilder.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
#include "Guild.h"
@@ -265,7 +266,7 @@ void PlayerAchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, Pre
if (criteriaResult)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
do
{
Field* fields = criteriaResult->Fetch();
@@ -505,7 +506,7 @@ void PlayerAchievementMgr::CompletedAchievement(AchievementEntry const* achievem
TC_LOG_INFO("criteria.achievement", "PlayerAchievementMgr::CompletedAchievement(%u). %s", achievement->ID, GetOwnerInfo().c_str());
CompletedAchievementData& ca = _completedAchievements[achievement->ID];
- ca.Date = time(nullptr);
+ ca.Date = GameTime::GetGameTime();
ca.Changed = true;
if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
@@ -668,7 +669,7 @@ void PlayerAchievementMgr::SendAchievementEarned(AchievementEntry const* achieve
achievementEarned.Earner = _owner->GetGUID();
achievementEarned.EarnerNativeRealm = achievementEarned.EarnerVirtualRealm = GetVirtualRealmAddress();
achievementEarned.AchievementID = achievement->ID;
- achievementEarned.Time = time(nullptr);
+ achievementEarned.Time = GameTime::GetGameTime();
if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG))
_owner->SendMessageToSetInRange(achievementEarned.Write(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), true);
else
@@ -699,7 +700,7 @@ void GuildAchievementMgr::Reset()
WorldPackets::Achievement::GuildAchievementDeleted guildAchievementDeleted;
guildAchievementDeleted.AchievementID = iter->first;
guildAchievementDeleted.GuildGUID = guid;
- guildAchievementDeleted.TimeDeleted = time(nullptr);
+ guildAchievementDeleted.TimeDeleted = GameTime::GetGameTime();
SendPacket(guildAchievementDeleted.Write());
}
@@ -751,7 +752,7 @@ void GuildAchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, Prep
if (criteriaResult)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
do
{
Field* fields = criteriaResult->Fetch();
@@ -940,7 +941,7 @@ void GuildAchievementMgr::CompletedAchievement(AchievementEntry const* achieveme
SendAchievementEarned(achievement);
CompletedAchievementData& ca = _completedAchievements[achievement->ID];
- ca.Date = time(nullptr);
+ ca.Date = GameTime::GetGameTime();
ca.Changed = true;
if (achievement->Flags & ACHIEVEMENT_FLAG_SHOW_GUILD_MEMBERS)
@@ -1006,7 +1007,7 @@ void GuildAchievementMgr::SendAchievementEarned(AchievementEntry const* achievem
WorldPackets::Achievement::GuildAchievementEarned guildAchievementEarned;
guildAchievementEarned.AchievementID = achievement->ID;
guildAchievementEarned.GuildGUID = _owner->GetGUID();
- guildAchievementEarned.TimeEarned = time(nullptr);
+ guildAchievementEarned.TimeEarned = GameTime::GetGameTime();
SendPacket(guildAchievementEarned.Write());
}
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index 9c023806f92..a9de265d3ba 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -29,6 +29,7 @@
#include "DB2Stores.h"
#include "DisableMgr.h"
#include "GameEventMgr.h"
+#include "GameTime.h"
#include "Garrison.h"
#include "Group.h"
#include "InstanceScript.h"
@@ -978,7 +979,7 @@ void CriteriaHandler::SetCriteriaProgress(Criteria const* criteria, uint64 chang
}
progress->Changed = true;
- progress->Date = time(nullptr); // set the date to the latest update.
+ progress->Date = GameTime::GetGameTime(); // set the date to the latest update.
progress->PlayerGUID = referencePlayer ? referencePlayer->GetGUID() : ObjectGuid::Empty;
Seconds timeElapsed = Seconds::zero();
diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
index a1dbb211070..bd7c156211d 100644
--- a/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
+++ b/src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
@@ -17,6 +17,7 @@
#include "AuctionHouseBotBuyer.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "Item.h"
#include "ItemTemplate.h"
#include "Log.h"
@@ -97,7 +98,7 @@ bool AuctionBotBuyer::Update(AuctionHouseType houseType)
uint32 AuctionBotBuyer::GetItemInformation(BuyerConfiguration& config)
{
config.SameItemInfo.clear();
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
uint32 count = 0;
AuctionHouseObject* house = sAuctionMgr->GetAuctionsById(sAuctionBotConfig->GetAuctionHouseId(config.GetHouseType()));
@@ -254,7 +255,7 @@ bool AuctionBotBuyer::RollBidChance(BuyerItemInfo const* ahInfo, AuctionPosting
void AuctionBotBuyer::PrepareListOfEntry(BuyerConfiguration& config)
{
// now - 5 seconds to leave out all old entries but keep the ones just updated a moment ago
- time_t now = time(nullptr) - 5;
+ time_t now = GameTime::GetGameTime() - 5;
for (CheckEntryMap::iterator itr = config.EligibleItems.begin(); itr != config.EligibleItems.end();)
{
@@ -270,7 +271,7 @@ void AuctionBotBuyer::PrepareListOfEntry(BuyerConfiguration& config)
// Tries to bid and buy items based on their prices and chances set in configs
void AuctionBotBuyer::BuyAndBidItems(BuyerConfiguration& config)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
AuctionHouseObject* auctionHouse = sAuctionMgr->GetAuctionsById(sAuctionBotConfig->GetAuctionHouseId(config.GetHouseType()));
CheckEntryMap& items = config.EligibleItems;
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 42f376f5080..c388b043563 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -22,6 +22,7 @@
#include "CellImpl.h"
#include "CreatureTextMgr.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
@@ -86,7 +87,7 @@ void Battlefield::HandlePlayerEnterZone(Player* player, uint32 /*zone*/)
else // No more vacant places
{
/// @todo Send a packet to announce it to player
- m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = time(nullptr) + 10;
+ m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = GameTime::GetGameTime() + 10;
InvitePlayerToQueue(player);
}
}
@@ -165,7 +166,7 @@ bool Battlefield::Update(uint32 diff)
// Kick players who chose not to accept invitation to the battle
if (m_uiKickDontAcceptTimer <= diff)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
for (uint8 team = 0; team < BG_TEAMS_COUNT; ++team)
for (PlayerTimerMap::iterator itr = m_InvitedPlayers[team].begin(); itr != m_InvitedPlayers[team].end(); ++itr)
if (itr->second <= now)
@@ -251,7 +252,7 @@ void Battlefield::InvitePlayersInZoneToWar()
if (m_PlayersInWar[player->GetTeamId()].size() + m_InvitedPlayers[player->GetTeamId()].size() < m_MaxPlayer)
InvitePlayerToWar(player);
else // Battlefield is full of players
- m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = time(nullptr) + 10;
+ m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = GameTime::GetGameTime() + 10;
}
}
}
@@ -281,7 +282,7 @@ void Battlefield::InvitePlayerToWar(Player* player)
if (player->getLevel() < m_MinLevel)
{
if (m_PlayersWillBeKick[player->GetTeamId()].count(player->GetGUID()) == 0)
- m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = time(nullptr) + 10;
+ m_PlayersWillBeKick[player->GetTeamId()][player->GetGUID()] = GameTime::GetGameTime() + 10;
return;
}
@@ -290,7 +291,7 @@ void Battlefield::InvitePlayerToWar(Player* player)
return;
m_PlayersWillBeKick[player->GetTeamId()].erase(player->GetGUID());
- m_InvitedPlayers[player->GetTeamId()][player->GetGUID()] = time(nullptr) + m_TimeForAcceptInvite;
+ m_InvitedPlayers[player->GetTeamId()][player->GetGUID()] = GameTime::GetGameTime() + m_TimeForAcceptInvite;
player->GetSession()->SendBfInvitePlayerToWar(GetQueueId(), m_ZoneId, m_TimeForAcceptInvite);
}
diff --git a/src/server/game/Battlefield/Zones/BattlefieldTB.cpp b/src/server/game/Battlefield/Zones/BattlefieldTB.cpp
index 8335c3efbd0..a5ddeb42526 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldTB.cpp
+++ b/src/server/game/Battlefield/Zones/BattlefieldTB.cpp
@@ -28,6 +28,7 @@
#include "Battleground.h"
#include "CreatureTextMgr.h"
#include "GameObject.h"
+#include "GameTime.h"
#include "MapManager.h"
#include "ObjectAccessor.h"
#include "Player.h"
@@ -346,8 +347,8 @@ void BattlefieldTB::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt
packet.Worldstates.emplace_back(uint32(TB_WS_ALLIANCE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
packet.Worldstates.emplace_back(uint32(TB_WS_HORDE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TB_WS_TIME_BATTLE_END), int32(IsWarTime() ? time(nullptr) + (m_Timer / 1000) : 0));
- packet.Worldstates.emplace_back(uint32(TB_WS_TIME_NEXT_BATTLE), int32(!IsWarTime() ? time(nullptr) + (m_Timer / 1000) : 0));
+ packet.Worldstates.emplace_back(uint32(TB_WS_TIME_BATTLE_END), int32(IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
+ packet.Worldstates.emplace_back(uint32(TB_WS_TIME_NEXT_BATTLE), int32(!IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
// Not sure if TB
//packet.Worldstates.emplace_back(uint32(TB_WS_65_UNKNOWN), int32(0));
@@ -745,7 +746,7 @@ void BattlefieldTB::TowerDestroyed(TBTowerId tbTowerId)
// Add 5 minute bonus time
m_Timer += m_BonusTime;
- SendUpdateWorldState(TB_WS_TIME_BATTLE_END, uint32(time(nullptr) + (m_Timer / 1000)));
+ SendUpdateWorldState(TB_WS_TIME_BATTLE_END, uint32(GameTime::GetGameTime() + (m_Timer / 1000)));
SendWarning(TBTowers[tbTowerId].textDamaged);
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
index 423edd6cf07..c4ee56d41f5 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
@@ -24,6 +24,7 @@
#include "Battleground.h"
#include "CreatureTextMgr.h"
#include "GameObject.h"
+#include "GameTime.h"
#include "DB2Stores.h"
#include "Log.h"
#include "MapManager.h"
@@ -1150,7 +1151,7 @@ void BattlefieldWG::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt
packet.Worldstates.emplace_back(uint32(BATTLEFIELD_WG_WORLD_STATE_SHOW_WORLDSTATE), int32(IsWarTime() ? 1 : 0));
for (uint32 i = 0; i < 2; ++i)
- packet.Worldstates.emplace_back(ClockWorldState[i], int32(time(nullptr) + (m_Timer / 1000)));
+ packet.Worldstates.emplace_back(ClockWorldState[i], int32(GameTime::GetGameTime() + (m_Timer / 1000)));
packet.Worldstates.emplace_back(uint32(BATTLEFIELD_WG_WORLD_STATE_VEHICLE_H), int32(GetData(BATTLEFIELD_WG_DATA_VEHICLE_H)));
packet.Worldstates.emplace_back(uint32(BATTLEFIELD_WG_WORLD_STATE_MAX_VEHICLE_H), int32(GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H)));
diff --git a/src/server/game/BlackMarket/BlackMarketMgr.cpp b/src/server/game/BlackMarket/BlackMarketMgr.cpp
index 4b0395da208..ab092f2ae7a 100644
--- a/src/server/game/BlackMarket/BlackMarketMgr.cpp
+++ b/src/server/game/BlackMarket/BlackMarketMgr.cpp
@@ -21,6 +21,7 @@
#include "CharacterCache.h"
#include "Containers.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "Item.h"
#include "Language.h"
#include "Log.h"
@@ -110,7 +111,7 @@ void BlackMarketMgr::LoadAuctions()
return;
}
- _lastUpdate = time(nullptr); //Set update time before loading
+ _lastUpdate = GameTime::GetGameTime(); //Set update time before loading
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
do
@@ -143,7 +144,7 @@ void BlackMarketMgr::LoadAuctions()
void BlackMarketMgr::Update(bool updateTime)
{
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
for (BlackMarketEntryMap::iterator itr = _auctions.begin(); itr != _auctions.end(); ++itr)
{
BlackMarketEntry* entry = itr->second;
@@ -405,12 +406,12 @@ BlackMarketTemplate const* BlackMarketEntry::GetTemplate() const
uint32 BlackMarketEntry::GetSecondsRemaining() const
{
- return _secondsRemaining - (time(nullptr) - sBlackMarketMgr->GetLastUpdate());
+ return _secondsRemaining - (GameTime::GetGameTime() - sBlackMarketMgr->GetLastUpdate());
}
time_t BlackMarketEntry::GetExpirationTime() const
{
- return time(nullptr) + GetSecondsRemaining();
+ return GameTime::GetGameTime() + GetSecondsRemaining();
}
bool BlackMarketEntry::IsCompleted() const
diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp
index 3aa43bb0cfc..5b76703ccdc 100644
--- a/src/server/game/Calendar/CalendarMgr.cpp
+++ b/src/server/game/Calendar/CalendarMgr.cpp
@@ -27,6 +27,9 @@
#include "Player.h"
#include <sstream>
+CalendarInvite::CalendarInvite() : _inviteId(1), _eventId(0), _invitee(), _senderGUID(), _responseTime(0),
+_status(CALENDAR_STATUS_INVITED), _rank(CALENDAR_RANK_PLAYER), _note("") { }
+
CalendarInvite::~CalendarInvite()
{
sCalendarMgr->FreeInviteId(_inviteId);
diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h
index 352f67e17f6..349ac555e84 100644
--- a/src/server/game/Calendar/CalendarMgr.h
+++ b/src/server/game/Calendar/CalendarMgr.h
@@ -148,8 +148,7 @@ struct TC_GAME_API CalendarInvite
_note = calendarInvite.GetNote();
}
- CalendarInvite() : _inviteId(1), _eventId(0), _invitee(), _senderGUID(), _responseTime(0),
- _status(CALENDAR_STATUS_INVITED), _rank(CALENDAR_RANK_PLAYER), _note("") { }
+ CalendarInvite();
CalendarInvite(uint64 inviteId, uint64 eventId, ObjectGuid invitee, ObjectGuid senderGUID, time_t responseTime,
CalendarInviteStatus status, CalendarModerationRank rank, std::string note) :
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 430e30d5a2f..5321387ccfb 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -20,6 +20,7 @@
#include "DB2Stores.h"
#include "DisableMgr.h"
#include "GameEventMgr.h"
+#include "GameTime.h"
#include "Group.h"
#include "GroupMgr.h"
#include "InstanceSaveMgr.h"
@@ -287,7 +288,7 @@ void LFGMgr::Update(uint32 diff)
if (!isOptionEnabled(LFG_OPTION_ENABLE_DUNGEON_FINDER | LFG_OPTION_ENABLE_RAID_BROWSER))
return;
- time_t currTime = time(nullptr);
+ time_t currTime = GameTime::GetGameTime();
// Remove obsolete role checks
for (LfgRoleCheckContainer::iterator it = RoleChecksStore.begin(); it != RoleChecksStore.end();)
@@ -540,13 +541,13 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons)
ticket.RequesterGuid = guid;
ticket.Id = GetQueueId(gguid);
ticket.Type = WorldPackets::LFG::RideType::Lfg;
- ticket.Time = int32(time(nullptr));
+ ticket.Time = int32(GameTime::GetGameTime());
std::string debugNames = "";
if (grp) // Begin rolecheck
{
// Create new rolecheck
LfgRoleCheck& roleCheck = RoleChecksStore[gguid];
- roleCheck.cancelTime = time_t(time(nullptr)) + LFG_TIME_ROLECHECK;
+ roleCheck.cancelTime = time_t(GameTime::GetGameTime()) + LFG_TIME_ROLECHECK;
roleCheck.state = LFG_ROLECHECK_INITIALITING;
roleCheck.leader = guid;
roleCheck.dungeons = dungeons;
@@ -585,7 +586,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons)
LfgRolesMap rolesMap;
rolesMap[guid] = roles;
LFGQueue& queue = GetQueue(guid);
- queue.AddQueueData(guid, time(nullptr), dungeons, rolesMap);
+ queue.AddQueueData(guid, GameTime::GetGameTime(), dungeons, rolesMap);
if (!isContinue)
{
@@ -770,7 +771,7 @@ void LFGMgr::UpdateRoleCheck(ObjectGuid gguid, ObjectGuid guid /* = ObjectGuid::
{
SetState(gguid, LFG_STATE_QUEUED);
LFGQueue& queue = GetQueue(gguid);
- queue.AddQueueData(gguid, time_t(time(nullptr)), roleCheck.dungeons, roleCheck.roles);
+ queue.AddQueueData(gguid, time_t(GameTime::GetGameTime()), roleCheck.dungeons, roleCheck.roles);
RoleChecksStore.erase(itRoleCheck);
}
else if (roleCheck.state != LFG_ROLECHECK_INITIALITING)
@@ -1039,7 +1040,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, ObjectGuid guid, bool accept)
bool sendUpdate = proposal.state != LFG_PROPOSAL_SUCCESS;
proposal.state = LFG_PROPOSAL_SUCCESS;
- time_t joinTime = time(nullptr);
+ time_t joinTime = GameTime::GetGameTime();
LFGQueue& queue = GetQueue(guid);
LfgUpdateData updateData = LfgUpdateData(LFG_UPDATETYPE_GROUP_FOUND);
@@ -1208,7 +1209,7 @@ void LFGMgr::InitBoot(ObjectGuid gguid, ObjectGuid kicker, ObjectGuid victim, st
LfgPlayerBoot& boot = BootsStore[gguid];
boot.inProgress = true;
- boot.cancelTime = time_t(time(nullptr)) + LFG_TIME_BOOT;
+ boot.cancelTime = time_t(GameTime::GetGameTime()) + LFG_TIME_BOOT;
boot.reason = reason;
boot.victim = victim;
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index 6e747e6d0b8..90c0ff93df3 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -17,6 +17,7 @@
#include "ObjectDefines.h"
#include "Containers.h"
+#include "GameTime.h"
#include "Group.h"
#include "LFGQueue.h"
#include "LFGMgr.h"
@@ -79,6 +80,10 @@ char const* GetCompatibleString(LfgCompatibility compatibles)
}
}
+LfgQueueData::LfgQueueData() : joinTime(GameTime::GetGameTime()), tanks(LFG_TANKS_NEEDED),
+healers(LFG_HEALERS_NEEDED), dps(LFG_DPS_NEEDED)
+{ }
+
std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) const
{
if (check.empty())
@@ -535,7 +540,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
}
// Create a new proposal
- proposal.cancelTime = time(nullptr) + LFG_TIME_PROPOSAL;
+ proposal.cancelTime = GameTime::GetGameTime() + LFG_TIME_PROPOSAL;
proposal.state = LFG_PROPOSAL_INITIATING;
proposal.leader.Clear();
proposal.dungeonId = Trinity::Containers::SelectRandomContainerElement(proposalDungeons);
diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h
index 46393b991ee..da970ea6fcb 100644
--- a/src/server/game/DungeonFinding/LFGQueue.h
+++ b/src/server/game/DungeonFinding/LFGQueue.h
@@ -52,9 +52,7 @@ struct LfgCompatibilityData
/// Stores player or group queue info
struct LfgQueueData
{
- LfgQueueData(): joinTime(time_t(time(nullptr))), tanks(LFG_TANKS_NEEDED),
- healers(LFG_HEALERS_NEEDED), dps(LFG_DPS_NEEDED)
- { }
+ LfgQueueData();
LfgQueueData(time_t _joinTime, LfgDungeonSet const& _dungeons, LfgRolesMap const& _roles):
joinTime(_joinTime), tanks(LFG_TANKS_NEEDED), healers(LFG_HEALERS_NEEDED),
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp
index 77e9bcfa808..5fabe946041 100644
--- a/src/server/game/Entities/Corpse/Corpse.cpp
+++ b/src/server/game/Entities/Corpse/Corpse.cpp
@@ -20,6 +20,7 @@
#include "Corpse.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "Log.h"
#include "Map.h"
#include "ObjectAccessor.h"
@@ -36,7 +37,7 @@ Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type
m_updateFlag.Stationary = true;
- m_time = time(nullptr);
+ m_time = GameTime::GetGameTime();
lootRecipient = nullptr;
}
@@ -164,6 +165,11 @@ void Corpse::DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransact
CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
+void Corpse::ResetGhostTime()
+{
+ m_time = GameTime::GetGameTime();
+}
+
bool Corpse::LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields)
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
diff --git a/src/server/game/Entities/Corpse/Corpse.h b/src/server/game/Entities/Corpse/Corpse.h
index cbf57781fe1..2135fb3358d 100644
--- a/src/server/game/Entities/Corpse/Corpse.h
+++ b/src/server/game/Entities/Corpse/Corpse.h
@@ -102,7 +102,7 @@ class TC_GAME_API Corpse : public WorldObject, public GridObject<Corpse>
}
time_t const& GetGhostTime() const { return m_time; }
- void ResetGhostTime() { m_time = time(nullptr); }
+ void ResetGhostTime();
CorpseType GetType() const { return m_type; }
CellCoord const& GetCellCoord() const { return _cellCoord; }
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 3763b166890..c7fe527aade 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -56,6 +56,9 @@
#include <G3D/g3dmath.h>
#include <sstream>
+VendorItemCount::VendorItemCount(uint32 _item, uint32 _count)
+ : itemId(_item), count(_count), lastIncrementTime(GameTime::GetGameTime()) { }
+
bool VendorItem::IsGoldRequired(ItemTemplate const* pProto) const
{
return pProto->GetFlags2() & ITEM_FLAG2_DONT_IGNORE_BUY_PRICE || !ExtendedCost;
@@ -410,7 +413,7 @@ void Creature::RemoveCorpse(bool setSpawnTime, bool destroyForNearbyPlayers)
if (m_respawnCompatibilityMode)
{
- m_corpseRemoveTime = time(nullptr);
+ m_corpseRemoveTime = GameTime::GetGameTime();
setDeathState(DEAD);
RemoveAllAuras();
loot.clear();
@@ -423,7 +426,7 @@ void Creature::RemoveCorpse(bool setSpawnTime, bool destroyForNearbyPlayers)
// Should get removed later, just keep "compatibility" with scripts
if (setSpawnTime)
- m_respawnTime = std::max<time_t>(time(nullptr) + respawnDelay, m_respawnTime);
+ m_respawnTime = std::max<time_t>(GameTime::GetGameTime() + respawnDelay, m_respawnTime);
// if corpse was removed during falling, the falling will continue and override relocation to respawn position
if (IsFalling())
@@ -456,7 +459,7 @@ void Creature::RemoveCorpse(bool setSpawnTime, bool destroyForNearbyPlayers)
if (setSpawnTime)
{
uint32 respawnDelay = m_respawnDelay;
- m_respawnTime = std::max<time_t>(time(nullptr) + respawnDelay, m_respawnTime);
+ m_respawnTime = std::max<time_t>(GameTime::GetGameTime() + respawnDelay, m_respawnTime);
SaveRespawnTime(0, false);
}
@@ -695,7 +698,7 @@ void Creature::Update(uint32 diff)
break;
case DEAD:
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (m_respawnTime <= now)
{
// First check if there are any scripts that object to us respawning
@@ -752,7 +755,7 @@ void Creature::Update(uint32 diff)
else
m_groupLootTimer -= diff;
}
- else if (m_corpseRemoveTime <= time(nullptr))
+ else if (m_corpseRemoveTime <= GameTime::GetGameTime())
{
RemoveCorpse(false);
TC_LOG_DEBUG("entities.unit", "Removing corpse... %u ", GetEntry());
@@ -1698,7 +1701,7 @@ bool Creature::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap,
// Is the creature script objecting to us spawning? If yes, delay by a little bit (then re-check in ::Update)
if (m_respawnCompatibilityMode && !m_respawnTime && !sScriptMgr->CanSpawn(spawnId, GetEntry(), GetCreatureData(), map))
- m_respawnTime = time(nullptr)+urand(4,7);
+ m_respawnTime = GameTime::GetGameTime()+urand(4,7);
if (m_respawnTime) // respawn on Update
{
@@ -1851,7 +1854,7 @@ bool Creature::IsInvisibleDueToDespawn() const
if (Unit::IsInvisibleDueToDespawn())
return true;
- if (IsAlive() || isDying() || m_corpseRemoveTime > time(nullptr))
+ if (IsAlive() || isDying() || m_corpseRemoveTime > GameTime::GetGameTime())
return false;
return true;
@@ -1976,7 +1979,7 @@ void Creature::setDeathState(DeathState s)
if (s == JUST_DIED)
{
- m_corpseRemoveTime = time(nullptr) + m_corpseDelay;
+ m_corpseRemoveTime = GameTime::GetGameTime() + m_corpseDelay;
uint32 respawnDelay = m_respawnDelay;
if (uint32 scalingMode = sWorld->getIntConfig(CONFIG_RESPAWN_DYNAMICMODE))
@@ -1987,14 +1990,14 @@ void Creature::setDeathState(DeathState s)
if (IsDungeonBoss() && !m_respawnDelay)
m_respawnTime = std::numeric_limits<time_t>::max(); // never respawn in this instance
else
- m_respawnTime = time(nullptr) + respawnDelay + m_corpseDelay;
+ m_respawnTime = GameTime::GetGameTime() + respawnDelay + m_corpseDelay;
}
else
{
if (IsDungeonBoss() && !m_respawnDelay)
m_respawnTime = std::numeric_limits<time_t>::max(); // never respawn in this instance
else
- m_respawnTime = time(nullptr) + respawnDelay;
+ m_respawnTime = GameTime::GetGameTime() + respawnDelay;
}
// always save boss respawn time at death to prevent crash cheating
@@ -2184,7 +2187,7 @@ void Creature::ForcedDespawn(uint32 timeMSToDespawn, Seconds const& forceRespawn
uint32 respawnDelay = m_respawnDelay;
if (uint32 scalingMode = sWorld->getIntConfig(CONFIG_RESPAWN_DYNAMICMODE))
GetMap()->ApplyDynamicModeRespawnScaling(this, m_spawnId, respawnDelay, scalingMode);
- m_respawnTime = time(nullptr) + respawnDelay;
+ m_respawnTime = GameTime::GetGameTime() + respawnDelay;
SaveRespawnTime();
}
@@ -2468,7 +2471,7 @@ void Creature::SaveRespawnTime(uint32 forceDelay, bool savetodb)
return;
}
- time_t thisRespawnTime = forceDelay ? time(nullptr) + forceDelay : m_respawnTime;
+ time_t thisRespawnTime = forceDelay ? GameTime::GetGameTime() + forceDelay : m_respawnTime;
GetMap()->SaveRespawnTime(SPAWN_TYPE_CREATURE, m_spawnId, GetEntry(), thisRespawnTime, GetMap()->GetZoneId(GetPhaseShift(), GetHomePosition()), Trinity::ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId(), savetodb && m_creatureData && m_creatureData->dbData);
}
@@ -2670,13 +2673,18 @@ bool Creature::HasSpell(uint32 spellID) const
time_t Creature::GetRespawnTimeEx() const
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (m_respawnTime > now)
return m_respawnTime;
else
return now;
}
+void Creature::SetRespawnTime(uint32 respawn)
+{
+ m_respawnTime = respawn ? GameTime::GetGameTime() + respawn : 0;
+}
+
void Creature::GetRespawnPosition(float &x, float &y, float &z, float* ori, float* dist) const
{
if (m_creatureData)
@@ -2707,7 +2715,7 @@ void Creature::AllLootRemovedFromCorpse()
if (LootTemplates_Skinning.HaveLootFor(GetCreatureTemplate()->SkinLootId))
AddUnitFlag(UNIT_FLAG_SKINNABLE);
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
// Do not reset corpse remove time if corpse is already removed
if (m_corpseRemoveTime <= now)
return;
@@ -2867,7 +2875,7 @@ uint32 Creature::GetVendorItemCurrentCount(VendorItem const* vItem)
VendorItemCount* vCount = &*itr;
- time_t ptime = time(nullptr);
+ time_t ptime = GameTime::GetGameTime();
if (time_t(vCount->lastIncrementTime + vItem->incrtime) <= ptime)
if (ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(vItem->item))
@@ -2905,7 +2913,7 @@ uint32 Creature::UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 us
VendorItemCount* vCount = &*itr;
- time_t ptime = time(nullptr);
+ time_t ptime = GameTime::GetGameTime();
if (time_t(vCount->lastIncrementTime + vItem->incrtime) <= ptime)
if (ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(vItem->item))
@@ -3235,7 +3243,12 @@ bool Creature::IsMovementPreventedByCasting() const
void Creature::StartPickPocketRefillTimer()
{
- _pickpocketLootRestore = time(nullptr) + sWorld->getIntConfig(CONFIG_CREATURE_PICKPOCKET_REFILL);
+ _pickpocketLootRestore = GameTime::GetGameTime() + sWorld->getIntConfig(CONFIG_CREATURE_PICKPOCKET_REFILL);
+}
+
+bool Creature::CanGeneratePickPocketLoot() const
+{
+ return _pickpocketLootRestore <= GameTime::GetGameTime();
}
void Creature::SetTextRepeatId(uint8 textGroup, uint8 id)
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 3fb716d85d8..6c8ebd2db22 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -40,8 +40,7 @@ enum MovementGeneratorType : uint8;
struct VendorItemCount
{
- VendorItemCount(uint32 _item, uint32 _count)
- : itemId(_item), count(_count), lastIncrementTime(time(nullptr)) { }
+ VendorItemCount(uint32 _item, uint32 _count);
uint32 itemId;
uint32 count;
@@ -192,7 +191,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
Loot loot;
void StartPickPocketRefillTimer();
void ResetPickPocketRefillTimer() { _pickpocketLootRestore = 0; }
- bool CanGeneratePickPocketLoot() const { return _pickpocketLootRestore <= time(nullptr); }
+ bool CanGeneratePickPocketLoot() const;
ObjectGuid GetLootRecipientGUID() const { return m_lootRecipient; }
Player* GetLootRecipient() const;
Group* GetLootRecipientGroup() const;
@@ -240,7 +239,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
time_t const& GetRespawnTime() const { return m_respawnTime; }
time_t GetRespawnTimeEx() const;
- void SetRespawnTime(uint32 respawn) { m_respawnTime = respawn ? time(nullptr) + respawn : 0; }
+ void SetRespawnTime(uint32 respawn);
void Respawn(bool force = false);
void SaveRespawnTime(uint32 forceDelay = 0, bool savetodb = true) override;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index a91ec5c23ff..13ecb688257 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -589,7 +589,7 @@ void GameObject::Update(uint32 diff)
case GAMEOBJECT_TYPE_FISHINGNODE:
{
// fishing code (bobber ready)
- if (time(nullptr) > m_respawnTime - FISHING_BOBBER_READY_TIME)
+ if (GameTime::GetGameTime() > m_respawnTime - FISHING_BOBBER_READY_TIME)
{
// splash bobber (bobber ready now)
Unit* caster = GetOwner();
@@ -623,7 +623,7 @@ void GameObject::Update(uint32 diff)
{
if (m_respawnTime > 0) // timer on
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (m_respawnTime <= now) // timer expired
{
ObjectGuid dbtableHighGuid = ObjectGuid::Create<HighGuid::GameObject>(GetMapId(), GetEntry(), m_spawnId);
@@ -903,7 +903,7 @@ void GameObject::Update(uint32 diff)
uint32 respawnDelay = m_respawnDelayTime;
if (uint32 scalingMode = sWorld->getIntConfig(CONFIG_RESPAWN_DYNAMICMODE))
GetMap()->ApplyDynamicModeRespawnScaling(this, this->m_spawnId, respawnDelay, scalingMode);
- m_respawnTime = time(nullptr) + respawnDelay;
+ m_respawnTime = GameTime::GetGameTime() + respawnDelay;
// if option not set then object will be saved at grid unload
// Otherwise just save respawn time to map object memory
@@ -1139,7 +1139,7 @@ bool GameObject::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap
m_respawnTime = GetMap()->GetGORespawnTime(m_spawnId);
// ready to respawn
- if (m_respawnTime && m_respawnTime <= time(nullptr))
+ if (m_respawnTime && m_respawnTime <= GameTime::GetGameTime())
{
m_respawnTime = 0;
GetMap()->RemoveRespawnTime(SPAWN_TYPE_GAMEOBJECT, m_spawnId);
@@ -1246,7 +1246,7 @@ Unit* GameObject::GetOwner() const
void GameObject::SaveRespawnTime(uint32 forceDelay, bool savetodb)
{
- if (m_goData && m_respawnTime > time(nullptr) && m_spawnedByDefault)
+ if (m_goData && m_respawnTime > GameTime::GetGameTime() && m_spawnedByDefault)
{
if (m_respawnCompatibilityMode)
{
@@ -1254,7 +1254,7 @@ void GameObject::SaveRespawnTime(uint32 forceDelay, bool savetodb)
return;
}
- uint32 thisRespawnTime = forceDelay ? time(nullptr) + forceDelay : m_respawnTime;
+ uint32 thisRespawnTime = forceDelay ? GameTime::GetGameTime() + forceDelay : m_respawnTime;
GetMap()->SaveRespawnTime(SPAWN_TYPE_GAMEOBJECT, m_spawnId, GetEntry(), thisRespawnTime, GetZoneId(), Trinity::ComputeGridCoord(GetPositionX(), GetPositionY()).GetId(), m_goData->dbData ? savetodb : false);
}
}
@@ -1319,11 +1319,26 @@ uint8 GameObject::GetLevelForTarget(WorldObject const* target) const
return 1;
}
+time_t GameObject::GetRespawnTimeEx() const
+{
+ time_t now = GameTime::GetGameTime();
+ if (m_respawnTime > now)
+ return m_respawnTime;
+ else
+ return now;
+}
+
+void GameObject::SetRespawnTime(int32 respawn)
+{
+ m_respawnTime = respawn > 0 ? GameTime::GetGameTime() + respawn : 0;
+ m_respawnDelayTime = respawn > 0 ? respawn : 0;
+}
+
void GameObject::Respawn()
{
if (m_spawnedByDefault && m_respawnTime > 0)
{
- m_respawnTime = time(nullptr);
+ m_respawnTime = GameTime::GetGameTime();
GetMap()->RemoveRespawnTime(SPAWN_TYPE_GAMEOBJECT, m_spawnId, true);
}
}
@@ -2454,6 +2469,11 @@ void GameObject::SetLootState(LootState state, Unit* unit)
}
}
+void GameObject::SetLootGenerationTime()
+{
+ m_lootGenerationTime = GameTime::GetGameTime();
+}
+
void GameObject::SetGoState(GOState state)
{
SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::State), state);
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index a0700a24fc5..ea4d55f963d 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -150,20 +150,9 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
uint32 GetSpellId() const { return m_spellId;}
time_t GetRespawnTime() const { return m_respawnTime; }
- time_t GetRespawnTimeEx() const
- {
- time_t now = time(nullptr);
- if (m_respawnTime > now)
- return m_respawnTime;
- else
- return now;
- }
+ time_t GetRespawnTimeEx() const;
- void SetRespawnTime(int32 respawn)
- {
- m_respawnTime = respawn > 0 ? time(nullptr) + respawn : 0;
- m_respawnDelayTime = respawn > 0 ? respawn : 0;
- }
+ void SetRespawnTime(int32 respawn);
void Respawn();
bool isSpawned() const
{
@@ -210,7 +199,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void AddLootMode(uint16 lootMode) { m_LootMode |= lootMode; }
void RemoveLootMode(uint16 lootMode) { m_LootMode &= ~lootMode; }
void ResetLootMode() { m_LootMode = LOOT_MODE_DEFAULT; }
- void SetLootGenerationTime() { m_lootGenerationTime = time(nullptr); }
+ void SetLootGenerationTime();
uint32 GetLootGenerationTime() const { return m_lootGenerationTime; }
void AddToSkillupList(ObjectGuid const& PlayerGuidLow) { m_SkillupList.insert(PlayerGuidLow); }
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 89426fd40d2..a955c5904ca 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -27,6 +27,7 @@
#include "DatabaseEnv.h"
#include "DB2Stores.h"
#include "GameTables.h"
+#include "GameTime.h"
#include "ItemEnchantmentMgr.h"
#include "ItemPackets.h"
#include "Log.h"
@@ -432,7 +433,7 @@ Item::Item()
m_container = nullptr;
m_lootGenerated = false;
mb_in_trade = false;
- m_lastPlayedTimeUpdate = time(nullptr);
+ m_lastPlayedTimeUpdate = GameTime::GetGameTime();
m_paidMoney = 0;
m_paidExtendedCost = 0;
@@ -1743,7 +1744,7 @@ void Item::UpdatePlayedTime(Player* owner)
// Get current played time
uint32 current_playtime = m_itemData->CreatePlayedTime;
// Calculate time elapsed since last played time update
- time_t curtime = time(nullptr);
+ time_t curtime = GameTime::GetGameTime();
uint32 elapsed = uint32(curtime - m_lastPlayedTimeUpdate);
uint32 new_playtime = current_playtime + elapsed;
// Check if the refund timer has expired yet
@@ -1764,7 +1765,7 @@ void Item::UpdatePlayedTime(Player* owner)
uint32 Item::GetPlayedTime()
{
- time_t curtime = time(nullptr);
+ time_t curtime = GameTime::GetGameTime();
uint32 elapsed = uint32(curtime - m_lastPlayedTimeUpdate);
return *m_itemData->CreatePlayedTime + elapsed;
}
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index d7aef0df8c4..d66e0b859e6 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -235,7 +235,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
break;
}
- SetPetNameTimestamp(uint32(time(nullptr)));
+ SetPetNameTimestamp(uint32(GameTime::GetGameTime()));
SetCreatorGUID(owner->GetGUID());
InitStatsForLevel(petlevel);
@@ -317,7 +317,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
owner->SetMinion(this, true);
map->AddToMap(ToCreature());
- uint32 timediff = uint32(time(nullptr) - fields[13].GetUInt32());
+ uint32 timediff = uint32(GameTime::GetGameTime() - fields[13].GetUInt32());
_LoadAuras(timediff);
// load action bar, if data broken will fill later by default spells.
@@ -472,7 +472,7 @@ void Pet::SavePetToDB(PetSaveMode mode)
stmt->setString(12, GenerateActionBarData());
- stmt->setUInt32(13, time(nullptr));
+ stmt->setUInt32(13, GameTime::GetGameTime());
stmt->setUInt32(14, m_unitData->CreatedBySpell);
stmt->setUInt8(15, getPetType());
stmt->setUInt16(16, m_petSpecialization);
@@ -556,7 +556,7 @@ void Pet::Update(uint32 diff)
{
case CORPSE:
{
- if (getPetType() != HUNTER_PET || m_corpseRemoveTime <= time(nullptr))
+ if (getPetType() != HUNTER_PET || m_corpseRemoveTime <= GameTime::GetGameTime())
{
Remove(PET_SAVE_NOT_IN_SLOT); //hunters' pets never get removed because of death, NEVER!
return;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 2ee7b488f13..0fbb9ceaa6b 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -230,7 +230,7 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this)
m_bgBattlegroundQueueID[j].joinTime = 0;
}
- m_logintime = time(nullptr);
+ m_logintime = GameTime::GetGameTime();
m_Last_tick = m_logintime;
m_Played_time[PLAYED_TIME_TOTAL] = 0;
m_Played_time[PLAYED_TIME_LEVEL] = 0;
@@ -288,7 +288,7 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this)
m_spellPenetrationItemMod = 0;
// Honor System
- m_lastHonorUpdateTime = time(nullptr);
+ m_lastHonorUpdateTime = GameTime::GetGameTime();
m_IsBGRandomWinner = false;
@@ -495,7 +495,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac
SetCreateCurrency(CURRENCY_TYPE_JUSTICE_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_JUSTICE_POINTS));
// Played time
- m_Last_tick = time(nullptr);
+ m_Last_tick = GameTime::GetGameTime();
m_Played_time[PLAYED_TIME_TOTAL] = 0;
m_Played_time[PLAYED_TIME_LEVEL] = 0;
@@ -911,7 +911,7 @@ void Player::Update(uint32 p_time)
return;
// undelivered mail
- if (m_nextMailDelivereTime && m_nextMailDelivereTime <= time(nullptr))
+ if (m_nextMailDelivereTime && m_nextMailDelivereTime <= GameTime::GetGameTime())
{
SendNewMail();
++unReadMails;
@@ -933,7 +933,7 @@ void Player::Update(uint32 p_time)
Unit::Update(p_time);
SetCanDelayTeleport(false);
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
UpdatePvPFlag(now);
@@ -2653,7 +2653,7 @@ void Player::UpdateNextMailTimeAndUnreads()
{
// calculate next delivery time (min. from non-delivered mails
// and recalculate unReadMail
- time_t cTime = time(nullptr);
+ time_t cTime = GameTime::GetGameTime();
m_nextMailDelivereTime = 0;
unReadMails = 0;
for (PlayerMails::iterator itr = m_mail.begin(); itr != m_mail.end(); ++itr)
@@ -2670,7 +2670,7 @@ void Player::UpdateNextMailTimeAndUnreads()
void Player::AddNewMailDeliverTime(time_t deliver_time)
{
- if (deliver_time <= time(nullptr)) // ready now
+ if (deliver_time <= GameTime::GetGameTime()) // ready now
{
++unReadMails;
SendNewMail();
@@ -3458,7 +3458,7 @@ bool Player::ResetTalents(bool noCost)
UpdateCriteria(CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS, 1);
SetTalentResetCost(cost);
- SetTalentResetTime(time(nullptr));
+ SetTalentResetTime(GameTime::GetGameTime());
}
/* when prev line will dropped use next line
@@ -4213,7 +4213,7 @@ void Player::DeleteOldCharacters(uint32 keepDays)
TC_LOG_INFO("entities.player", "Player::DeleteOldCharacters: Deleting all characters which have been deleted %u days before...", keepDays);
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_OLD_CHARS);
- stmt->setUInt32(0, uint32(time(nullptr) - time_t(keepDays * DAY)));
+ stmt->setUInt32(0, uint32(GameTime::GetGameTime() - time_t(keepDays * DAY)));
PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (result)
@@ -6451,8 +6451,8 @@ void Player::RewardReputation(Quest const* quest)
void Player::UpdateHonorFields()
{
/// called when rewarding honor and at each save
- time_t now = time_t(time(nullptr));
- time_t today = time_t(time(nullptr) / DAY) * DAY;
+ time_t now = GameTime::GetGameTime();
+ time_t today = GameTime::GetGameTime() / DAY * DAY;
if (m_lastHonorUpdateTime < today)
{
@@ -8739,7 +8739,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type, bool aeLooting/* = fa
// loot was generated and respawntime has passed since then, allow to recreate loot
// to avoid bugs, this rule covers spawned gameobjects only
- if (go->isSpawnedByDefault() && go->getLootState() == GO_ACTIVATED && !go->loot.isLooted() && go->GetLootGenerationTime() + go->GetRespawnDelay() < time(nullptr))
+ if (go->isSpawnedByDefault() && go->getLootState() == GO_ACTIVATED && !go->loot.isLooted() && go->GetLootGenerationTime() + go->GetRespawnDelay() < GameTime::GetGameTime())
go->SetLootState(GO_READY);
if (go->getLootState() == GO_READY)
@@ -9771,7 +9771,7 @@ void Player::SendBattlefieldWorldStates() const
{
SendUpdateWorldState(BATTLEFIELD_WG_WORLD_STATE_ACTIVE, wg->IsWarTime() ? 0 : 1);
uint32 timer = wg->IsWarTime() ? 0 : (wg->GetTimer() / 1000); // 0 - Time to next battle
- SendUpdateWorldState(ClockWorldState[1], uint32(time(nullptr) + timer));
+ SendUpdateWorldState(ClockWorldState[1], uint32(GameTime::GetGameTime() + timer));
}
}
@@ -9781,8 +9781,8 @@ void Player::SendBattlefieldWorldStates() const
{
SendUpdateWorldState(TB_WS_FACTION_CONTROLLING, uint32(tb->GetDefenderTeam() + 1));
uint32 timer = tb->GetTimer() / 1000;
- SendUpdateWorldState(TB_WS_TIME_BATTLE_END, uint32(tb->IsWarTime() ? uint32(time(nullptr) + timer) : 0));
- SendUpdateWorldState(TB_WS_TIME_NEXT_BATTLE, uint32(!tb->IsWarTime() ? uint32(time(nullptr) + timer) : 0));
+ SendUpdateWorldState(TB_WS_TIME_BATTLE_END, uint32(tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
+ SendUpdateWorldState(TB_WS_TIME_NEXT_BATTLE, uint32(!tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
}
}
}
@@ -13847,7 +13847,7 @@ void Player::AddItemToBuyBackSlot(Item* pItem)
GetName().c_str(), GetGUID().ToString().c_str(), pItem->GetEntry(), slot);
m_items[slot] = pItem;
- time_t base = time(nullptr);
+ time_t base = GameTime::GetGameTime();
uint32 etime = uint32(base - m_logintime + (30 * 3600));
uint32 eslot = slot - BUYBACK_SLOT_START;
@@ -15585,7 +15585,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver)
AddTimedQuest(quest_id);
questStatusData.Timer = limittime * IN_MILLISECONDS;
- qtime = static_cast<uint32>(time(nullptr)) + limittime;
+ qtime = static_cast<uint32>(GameTime::GetGameTime()) + limittime;
}
else
questStatusData.Timer = 0;
@@ -18579,8 +18579,8 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder* holder)
SaveRecallPosition();
- time_t now = time(nullptr);
- time_t logoutTime = fields.logout_time;
+ time_t now = GameTime::GetGameTime();
+ time_t logoutTime = time_t(fields.logout_time);
// since last logout (in seconds)
uint32 time_diff = uint32(now - logoutTime); //uint64 is excessive for a time_diff in seconds.. uint32 allows for 136~ year difference.
@@ -20305,7 +20305,7 @@ void Player::SendRaidInfo()
{
WorldPackets::Instance::InstanceInfo instanceInfo;
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
for (auto difficultyItr = m_boundInstances.begin(); difficultyItr != m_boundInstances.end(); ++difficultyItr)
{
@@ -20659,7 +20659,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_TOTAL]);
stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_LEVEL]);
stmt->setFloat(index++, finiteAlways(_restMgr->GetRestBonus(REST_TYPE_XP)));
- stmt->setUInt64(index++, time(nullptr));
+ stmt->setUInt64(index++, GameTime::GetGameTime());
stmt->setUInt8(index++, (HasPlayerFlag(PLAYER_FLAGS_RESTING) ? 1 : 0));
//save, far from tavern/city
//save, but in tavern/city
@@ -20801,7 +20801,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_TOTAL]);
stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_LEVEL]);
stmt->setFloat(index++, finiteAlways(_restMgr->GetRestBonus(REST_TYPE_XP)));
- stmt->setUInt64(index++, time(nullptr));
+ stmt->setUInt64(index++, GameTime::GetGameTime());
stmt->setUInt8(index++, (HasPlayerFlag(PLAYER_FLAGS_RESTING) ? 1 : 0));
//save, far from tavern/city
//save, but in tavern/city
@@ -20963,7 +20963,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba
loginStmt->setUInt32(3, realm.Id.Realm);
loginStmt->setString(4, GetName());
loginStmt->setUInt64(5, GetGUID().GetCounter());
- loginStmt->setUInt32(6, time(nullptr));
+ loginStmt->setUInt32(6, GameTime::GetGameTime());
loginTransaction->Append(loginStmt);
// save pet (hunter pet level and experience and all type pets health/mana).
@@ -21794,7 +21794,7 @@ void Player::UpdateSpeakTime()
if (GetSession()->HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHAT_SPAM))
return;
- time_t current = time(nullptr);
+ time_t current = GameTime::GetGameTime();
if (m_speakTime > current)
{
uint32 max_count = sWorld->getIntConfig(CONFIG_CHATFLOOD_MESSAGE_COUNT);
@@ -23648,7 +23648,7 @@ void Player::UpdatePvPState(bool onlyFFA)
else // in friendly area
{
if (IsPvP() && !HasPlayerFlag(PLAYER_FLAGS_IN_PVP) && !pvpInfo.EndTimer)
- pvpInfo.EndTimer = time(nullptr); // start toggle-off
+ pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
}
@@ -23668,7 +23668,7 @@ void Player::UpdatePvP(bool state, bool _override)
}
else
{
- pvpInfo.EndTimer = time(nullptr);
+ pvpInfo.EndTimer = GameTime::GetGameTime();
SetPvP(state);
}
}
@@ -25019,13 +25019,13 @@ void Player::SetDailyQuestStatus(uint32 quest_id)
if (!qQuest->IsDFQuest())
{
AddDynamicUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::DailyQuestsCompleted)) = quest_id;
- m_lastDailyQuestTime = time(nullptr); // last daily quest time
+ m_lastDailyQuestTime = GameTime::GetGameTime(); // last daily quest time
m_DailyQuestChanged = true;
}
else
{
m_DFQuests.insert(quest_id);
- m_lastDailyQuestTime = time(nullptr);
+ m_lastDailyQuestTime = GameTime::GetGameTime();
m_DailyQuestChanged = true;
}
}
@@ -25419,7 +25419,7 @@ void Player::UpdateForQuestWorldObjects()
bool Player::HasSummonPending() const
{
- return m_summon_expire >= time(nullptr);
+ return m_summon_expire >= GameTime::GetGameTime();
}
void Player::SendSummonRequestFrom(Unit* summoner)
@@ -25435,7 +25435,7 @@ void Player::SendSummonRequestFrom(Unit* summoner)
if (HasAura(23445))
return;
- m_summon_expire = time(nullptr) + MAX_PLAYER_SUMMON_DELAY;
+ m_summon_expire = GameTime::GetGameTime() + MAX_PLAYER_SUMMON_DELAY;
m_summon_location.WorldRelocate(*summoner);
WorldPackets::Movement::SummonRequest summonRequest;
@@ -25454,7 +25454,7 @@ void Player::SummonIfPossible(bool agree)
}
// expire and auto declined
- if (m_summon_expire < time(nullptr))
+ if (m_summon_expire < GameTime::GetGameTime())
return;
// stop taxi flight at summon
@@ -25895,7 +25895,7 @@ uint32 Player::GetCorpseReclaimDelay(bool pvp) const
else if (!sWorld->getBoolConfig(CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE))
return 0;
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
// 0..2 full period
// should be ceil(x)-1 but not floor(x)
uint64 count = (now < m_deathExpireTime - 1) ? (m_deathExpireTime - 1 - now) / DEATH_EXPIRE_STEP : 0;
@@ -25910,7 +25910,7 @@ void Player::UpdateCorpseReclaimDelay()
(!pvp && !sWorld->getBoolConfig(CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE)))
return;
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (now < m_deathExpireTime)
{
@@ -25954,7 +25954,7 @@ int32 Player::CalculateCorpseReclaimDelay(bool load) const
}
time_t expected_time = corpse->GetGhostTime() + copseReclaimDelay[count];
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (now >= expected_time)
return -1;
@@ -28592,7 +28592,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
pet->SetPetNextLevelExperience(1000);
pet->SetFullHealth();
pet->SetFullPower(POWER_MANA);
- pet->SetPetNameTimestamp(uint32(time(nullptr)));
+ pet->SetPetNameTimestamp(uint32(GameTime::GetGameTime()));
break;
default:
break;
diff --git a/src/server/game/Entities/Player/RestMgr.cpp b/src/server/game/Entities/Player/RestMgr.cpp
index 13083a0a74a..8d7efea8be9 100644
--- a/src/server/game/Entities/Player/RestMgr.cpp
+++ b/src/server/game/Entities/Player/RestMgr.cpp
@@ -16,6 +16,7 @@
*/
#include "RestMgr.h"
+#include "GameTime.h"
#include "Log.h"
#include "Player.h"
#include "Random.h"
@@ -100,7 +101,7 @@ void RestMgr::SetRestFlag(RestFlag restFlag, uint32 triggerID)
if (!oldRestMask && _restFlagMask) // only set flag/time on the first rest state
{
- _restTime = time(nullptr);
+ _restTime = GameTime::GetGameTime();
_player->AddPlayerFlag(PLAYER_FLAGS_RESTING);
}
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 2e28c5bef97..e3c088700af 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12211,7 +12211,7 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au
GetCharmInfo()->SetPetNumber(sObjectMgr->GeneratePetNumber(), true);
// if charmed two demons the same session, the 2nd gets the 1st one's name
- SetPetNameTimestamp(uint32(time(nullptr)));
+ SetPetNameTimestamp(uint32(GameTime::GetGameTime()));
}
}
playerCharmer->CharmSpellInitialize();
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index 407da426f24..d4425eb9c7d 100644
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -23,6 +23,7 @@
#include "DB2Stores.h"
#include "GameObject.h"
#include "GameObjectAI.h"
+#include "GameTime.h"
#include "Language.h"
#include "Log.h"
#include "MapManager.h"
@@ -45,7 +46,7 @@ bool GameEventMgr::CheckOneGameEvent(uint16 entry) const
default:
case GAMEEVENT_NORMAL:
{
- time_t currenttime = time(nullptr);
+ time_t currenttime = GameTime::GetGameTime();
// Get the event information
return mGameEvent[entry].start < currenttime
&& currenttime < mGameEvent[entry].end
@@ -62,7 +63,7 @@ bool GameEventMgr::CheckOneGameEvent(uint16 entry) const
// if inactive world event, check the prerequisite events
case GAMEEVENT_WORLD_INACTIVE:
{
- time_t currenttime = time(nullptr);
+ time_t currenttime = GameTime::GetGameTime();
for (std::set<uint16>::const_iterator itr = mGameEvent[entry].prerequisite_events.begin(); itr != mGameEvent[entry].prerequisite_events.end(); ++itr)
{
if ((mGameEvent[*itr].state != GAMEEVENT_WORLD_NEXTPHASE && mGameEvent[*itr].state != GAMEEVENT_WORLD_FINISHED) || // if prereq not in nextphase or finished state, then can't start this one
@@ -78,7 +79,7 @@ bool GameEventMgr::CheckOneGameEvent(uint16 entry) const
uint32 GameEventMgr::NextCheck(uint16 entry) const
{
- time_t currenttime = time(nullptr);
+ time_t currenttime = GameTime::GetGameTime();
// for NEXTPHASE state world events, return the delay to start the next event, so the followup event will be checked correctly
if ((mGameEvent[entry].state == GAMEEVENT_WORLD_NEXTPHASE || mGameEvent[entry].state == GAMEEVENT_WORLD_FINISHED) && mGameEvent[entry].nextstart >= currenttime)
@@ -138,13 +139,13 @@ bool GameEventMgr::StartEvent(uint16 event_id, bool overwrite)
ApplyNewEvent(event_id);
if (overwrite)
{
- mGameEvent[event_id].start = time(nullptr);
+ mGameEvent[event_id].start = GameTime::GetGameTime();
if (data.end <= data.start)
data.end = data.start + data.length;
}
// When event is started, set its worldstate to current time
- sWorld->setWorldState(event_id, time(nullptr));
+ sWorld->setWorldState(event_id, GameTime::GetGameTime());
return false;
}
else
@@ -185,7 +186,7 @@ void GameEventMgr::StopEvent(uint16 event_id, bool overwrite)
if (overwrite && !serverwide_evt)
{
- data.start = time(nullptr) - data.length * MINUTE;
+ data.start = GameTime::GetGameTime() - data.length * MINUTE;
if (data.end <= data.start)
data.end = data.start + data.length;
}
@@ -1023,7 +1024,7 @@ void GameEventMgr::StartArenaSeason()
uint32 GameEventMgr::Update() // return the next event delay in ms
{
- time_t currenttime = time(nullptr);
+ time_t currenttime = GameTime::GetGameTime();
uint32 nextEventDelay = max_ge_check_delay; // 1 day
uint32 calcDelay;
std::set<uint16> activate, deactivate;
@@ -1618,7 +1619,7 @@ bool GameEventMgr::CheckOneGameEventConditions(uint16 event_id)
// set the followup events' start time
if (!mGameEvent[event_id].nextstart)
{
- time_t currenttime = time(nullptr);
+ time_t currenttime = GameTime::GetGameTime();
mGameEvent[event_id].nextstart = currenttime + mGameEvent[event_id].length * 60;
}
return true;
@@ -1734,7 +1735,7 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event)
bool singleDate = ((holiday->Date[0] >> 24) & 0x1F) == 31; // Events with fixed date within year have - 1
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
for (int i = 0; i < MAX_HOLIDAY_DATES && holiday->Date[i]; ++i)
{
uint32 date = holiday->Date[i];
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
index 913c9516f2f..799791d569b 100644
--- a/src/server/game/Garrison/Garrison.cpp
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -20,6 +20,7 @@
#include "DatabaseEnv.h"
#include "DB2Stores.h"
#include "GameObject.h"
+#include "GameTime.h"
#include "GarrisonMgr.h"
#include "Log.h"
#include "Map.h"
@@ -386,7 +387,7 @@ void Garrison::PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId)
{
placeBuildingResult.BuildingInfo.GarrPlotInstanceID = garrPlotInstanceId;
placeBuildingResult.BuildingInfo.GarrBuildingID = garrBuildingId;
- placeBuildingResult.BuildingInfo.TimeBuilt = time(nullptr);
+ placeBuildingResult.BuildingInfo.TimeBuilt = GameTime::GetGameTime();
Plot* plot = GetPlot(garrPlotInstanceId);
uint32 oldBuildingId = 0;
@@ -461,7 +462,7 @@ void Garrison::CancelBuildingConstruction(uint32 garrPlotInstanceId)
placeBuildingResult.Result = GARRISON_SUCCESS;
placeBuildingResult.BuildingInfo.GarrPlotInstanceID = garrPlotInstanceId;
placeBuildingResult.BuildingInfo.GarrBuildingID = restored;
- placeBuildingResult.BuildingInfo.TimeBuilt = time(nullptr);
+ placeBuildingResult.BuildingInfo.TimeBuilt = GameTime::GetGameTime();
placeBuildingResult.BuildingInfo.Active = true;
plot->SetBuildingInfo(placeBuildingResult.BuildingInfo, _owner);
@@ -832,7 +833,7 @@ bool Garrison::Building::CanActivate() const
if (PacketInfo)
{
GarrBuildingEntry const* building = sGarrBuildingStore.AssertEntry(PacketInfo->GarrBuildingID);
- if (PacketInfo->TimeBuilt + building->BuildSeconds <= time(nullptr))
+ if (PacketInfo->TimeBuilt + building->BuildSeconds <= GameTime::GetGameTime())
return true;
}
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 2afa5d6f75c..77b05ce2982 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -28,6 +28,7 @@
#include "GameObject.h"
#include "GameObjectAIFactory.h"
#include "GameTables.h"
+#include "GameTime.h"
#include "GridDefines.h"
#include "GossipDef.h"
#include "GroupMgr.h"
@@ -6050,7 +6051,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp)
{
uint32 oldMSTime = getMSTime();
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
tm lt;
localtime_r(&curTime, &lt);
TC_LOG_INFO("misc", "Returning mails current time: hour: %d, minute: %d, second: %d ", lt.tm_hour, lt.tm_min, lt.tm_sec);
diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp
index 678f1027a96..acff2940241 100644
--- a/src/server/game/Grids/ObjectGridLoader.cpp
+++ b/src/server/game/Grids/ObjectGridLoader.cpp
@@ -25,6 +25,7 @@
#include "CreatureAI.h"
#include "DynamicObject.h"
#include "GameObject.h"
+#include "GameTime.h"
#include "Log.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
@@ -148,7 +149,7 @@ void LoadHelper(CellGuidSet const& guid_set, CellCoord &cell, GridRefManager<T>
// If script is blocking spawn, don't spawn but queue for a re-check in a little bit
if (!(group->flags & SPAWNGROUP_FLAG_COMPATIBILITY_MODE) && !sScriptMgr->CanSpawn(guid, cdata->id, cdata, map))
{
- map->SaveRespawnTime(SPAWN_TYPE_CREATURE, guid, cdata->id, time(nullptr) + urand(4,7), map->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), cdata->spawnPoint), Trinity::ComputeGridCoord(cdata->spawnPoint.GetPositionX(), cdata->spawnPoint.GetPositionY()).GetId(), false);
+ map->SaveRespawnTime(SPAWN_TYPE_CREATURE, guid, cdata->id, GameTime::GetGameTime() + urand(4,7), map->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), cdata->spawnPoint), Trinity::ComputeGridCoord(cdata->spawnPoint.GetPositionX(), cdata->spawnPoint.GetPositionY()).GetId(), false);
delete obj;
continue;
}
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 79326a97a38..50caa2fae3e 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -26,6 +26,7 @@
#include "Config.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "GuildFinderMgr.h"
#include "GuildMgr.h"
#include "GuildPackets.h"
@@ -118,6 +119,8 @@ inline uint32 Guild::LogHolder::GetNextGUID()
return m_nextGUID;
}
+Guild::LogEntry::LogEntry(ObjectGuid::LowType guildId, uint32 guid) : m_guildId(guildId), m_guid(guid), m_timestamp(GameTime::GetGameTime()) { }
+
// EventLogEntry
void Guild::EventLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const
{
@@ -147,7 +150,7 @@ void Guild::EventLogEntry::WritePacket(WorldPackets::Guild::GuildEventLogQueryRe
eventEntry.PlayerGUID = playerGUID;
eventEntry.OtherGUID = otherGUID;
eventEntry.TransactionType = uint8(m_eventType);
- eventEntry.TransactionDate = uint32(::time(nullptr) - m_timestamp);
+ eventEntry.TransactionDate = uint32(GameTime::GetGameTime() - m_timestamp);
eventEntry.RankID = uint8(m_newRank);
packet.Entry.push_back(eventEntry);
}
@@ -190,7 +193,7 @@ void Guild::BankEventLogEntry::WritePacket(WorldPackets::Guild:: GuildBankLogQue
WorldPackets::Guild::GuildBankLogEntry bankLogEntry;
bankLogEntry.PlayerGUID = logGuid;
- bankLogEntry.TimeOffset = int32(time(nullptr) - m_timestamp);
+ bankLogEntry.TimeOffset = int32(GameTime::GetGameTime() - m_timestamp);
bankLogEntry.EntryType = int8(m_eventType);
if (hasStack)
@@ -517,7 +520,7 @@ Guild::Member::Member(ObjectGuid::LowType guildId, ObjectGuid guid, uint8 rankId
m_class(0),
_gender(0),
m_flags(GUILDMEMBER_STATUS_NONE),
- m_logoutTime(::time(nullptr)),
+ m_logoutTime(GameTime::GetGameTime()),
m_accountId(0),
m_rankId(rankId),
m_bankWithdrawMoney(0),
@@ -592,6 +595,11 @@ void Guild::Member::ChangeRank(CharacterDatabaseTransaction& trans, uint8 newRan
CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
+void Guild::Member::UpdateLogoutTime()
+{
+ m_logoutTime = GameTime::GetGameTime();
+}
+
void Guild::Member::SaveToDB(CharacterDatabaseTransaction& trans) const
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER);
@@ -662,7 +670,7 @@ float Guild::Member::GetInactiveDays() const
{
if (IsOnline())
return 0.0f;
- return float(::time(nullptr) - GetLogoutTime()) / float(DAY);
+ return float(GameTime::GetGameTime() - GetLogoutTime()) / float(DAY);
}
// Decreases amount of slots left for today.
@@ -1146,7 +1154,7 @@ bool Guild::Create(Player* pLeader, std::string const& name)
m_info = "";
m_motd = "No message set.";
m_bankMoney = 0;
- m_createdDate = ::time(nullptr);
+ m_createdDate = GameTime::GetGameTime();
_CreateLogHolders();
TC_LOG_DEBUG("guild", "GUILD: creating guild [%s] for leader %s (%s)",
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 17cb2a3d7f6..bd21c92d733 100644
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -355,7 +355,7 @@ class TC_GAME_API Guild
void ChangeRank(CharacterDatabaseTransaction& trans, uint8 newRank);
- inline void UpdateLogoutTime() { m_logoutTime = ::time(nullptr); }
+ inline void UpdateLogoutTime();
inline bool IsRank(uint8 rankId) const { return m_rankId == rankId; }
inline bool IsRankNotLower(uint8 rankId) const { return m_rankId <= rankId; }
inline bool IsSamePlayer(ObjectGuid guid) const { return m_guid == guid; }
@@ -401,7 +401,7 @@ class TC_GAME_API Guild
class LogEntry
{
public:
- LogEntry(ObjectGuid::LowType guildId, uint32 guid) : m_guildId(guildId), m_guid(guid), m_timestamp(::time(nullptr)) { }
+ LogEntry(ObjectGuid::LowType guildId, uint32 guid);
LogEntry(ObjectGuid::LowType guildId, uint32 guid, time_t timestamp) : m_guildId(guildId), m_guid(guid), m_timestamp(timestamp) { }
virtual ~LogEntry() { }
diff --git a/src/server/game/Guilds/GuildFinderMgr.cpp b/src/server/game/Guilds/GuildFinderMgr.cpp
index a6ff56d015e..4628bff0555 100644
--- a/src/server/game/Guilds/GuildFinderMgr.cpp
+++ b/src/server/game/Guilds/GuildFinderMgr.cpp
@@ -18,6 +18,7 @@
#include "GuildFinderMgr.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "Guild.h"
#include "GuildMgr.h"
#include "GuildFinderPackets.h"
@@ -26,7 +27,7 @@
#include "Player.h"
#include "World.h"
-MembershipRequest::MembershipRequest() : _availability(0), _classRoles(0), _interests(0), _time(time(nullptr))
+MembershipRequest::MembershipRequest() : _availability(0), _classRoles(0), _interests(0), _time(GameTime::GetGameTime())
{
}
diff --git a/src/server/game/Handlers/BattlefieldHandler.cpp b/src/server/game/Handlers/BattlefieldHandler.cpp
index 82fd6a65ef1..d8fe4153d5a 100644
--- a/src/server/game/Handlers/BattlefieldHandler.cpp
+++ b/src/server/game/Handlers/BattlefieldHandler.cpp
@@ -19,6 +19,7 @@
#include "Battlefield.h"
#include "BattlefieldMgr.h"
#include "BattlefieldPackets.h"
+#include "GameTime.h"
#include "Player.h"
/**
@@ -35,7 +36,7 @@ void WorldSession::SendBfInvitePlayerToWar(uint64 queueId, uint32 zoneId, uint32
WorldPackets::Battlefield::BFMgrEntryInvite bfMgrEntryInvite;
bfMgrEntryInvite.QueueID = queueId;
bfMgrEntryInvite.AreaID = zoneId;
- bfMgrEntryInvite.ExpireTime = time(nullptr) + acceptTime;
+ bfMgrEntryInvite.ExpireTime = GameTime::GetGameTime() + acceptTime;
SendPacket(bfMgrEntryInvite.Write());
}
diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp
index e80a8b3add6..54a67a67e91 100644
--- a/src/server/game/Handlers/CalendarHandler.cpp
+++ b/src/server/game/Handlers/CalendarHandler.cpp
@@ -40,6 +40,7 @@ Copied events should probably have a new owner
#include "CharacterCache.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "Guild.h"
#include "GuildMgr.h"
#include "InstanceSaveMgr.h"
@@ -54,7 +55,7 @@ Copied events should probably have a new owner
void WorldSession::HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& /*calendarGetCalendar*/)
{
ObjectGuid guid = _player->GetGUID();
- time_t currTime = time(nullptr);
+ time_t currTime = GameTime::GetGameTime();
WorldPackets::Calendar::CalendarSendCalendar packet;
packet.ServerTime = currTime;
@@ -136,7 +137,7 @@ void WorldSession::HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEve
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
- if (calendarAddEvent.EventInfo.Time < (time(nullptr) - time_t(86400L)))
+ if (calendarAddEvent.EventInfo.Time < (GameTime::GetGameTime() - time_t(86400L)))
return;
CalendarEvent* calendarEvent = new CalendarEvent(sCalendarMgr->GetFreeEventId(), guid, UI64LIT(0), CalendarEventType(calendarAddEvent.EventInfo.EventType), calendarAddEvent.EventInfo.TextureID,
@@ -181,7 +182,7 @@ void WorldSession::HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpd
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
- if (calendarUpdateEvent.EventInfo.Time < (time(nullptr) - time_t(86400L)))
+ if (calendarUpdateEvent.EventInfo.Time < (GameTime::GetGameTime() - time_t(86400L)))
return;
if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarUpdateEvent.EventInfo.EventID))
@@ -214,7 +215,7 @@ void WorldSession::HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyE
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
- if (calendarCopyEvent.Date < (time(nullptr) - time_t(86400L)))
+ if (calendarCopyEvent.Date < (GameTime::GetGameTime() - time_t(86400L)))
return;
if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(calendarCopyEvent.EventID))
@@ -339,7 +340,7 @@ void WorldSession::HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEve
}
CalendarInviteStatus status = calendarEventSignUp.Tentative ? CALENDAR_STATUS_TENTATIVE : CALENDAR_STATUS_SIGNED_UP;
- CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEventSignUp.EventID, guid, guid, time(nullptr), status, CALENDAR_RANK_PLAYER, "");
+ CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEventSignUp.EventID, guid, guid, GameTime::GetGameTime(), status, CALENDAR_RANK_PLAYER, "");
sCalendarMgr->AddInvite(calendarEvent, invite);
sCalendarMgr->SendCalendarClearPendingAction(guid);
}
@@ -363,7 +364,7 @@ void WorldSession::HandleCalendarRsvp(WorldPackets::Calendar::CalendarRSVP& cale
if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarRSVP.InviteID))
{
invite->SetStatus(CalendarInviteStatus(calendarRSVP.Status));
- invite->SetResponseTime(time(nullptr));
+ invite->SetResponseTime(GameTime::GetGameTime());
sCalendarMgr->UpdateInvite(invite);
sCalendarMgr->SendCalendarEventStatus(*calendarEvent, *invite);
@@ -500,7 +501,7 @@ void WorldSession::HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSaved
void WorldSession::SendCalendarRaidLockout(InstanceSave const* save, bool add)
{
- time_t currTime = time(nullptr);
+ time_t currTime = GameTime::GetGameTime();
if (add)
{
WorldPackets::Calendar::CalendarRaidLockoutAdded calendarRaidLockoutAdded;
@@ -529,7 +530,7 @@ void WorldSession::SendCalendarRaidLockoutUpdated(InstanceSave const* save)
ObjectGuid guid = _player->GetGUID();
TC_LOG_DEBUG("network", "SMSG_CALENDAR_RAID_LOCKOUT_UPDATED [%s] Map: %u, Difficulty %u", guid.ToString().c_str(), save->GetMapId(), save->GetDifficultyID());
- time_t currTime = time(nullptr);
+ time_t currTime = GameTime::GetGameTime();
WorldPackets::Calendar::CalendarRaidLockoutUpdated packet;
packet.DifficultyID = save->GetDifficultyID();
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 6245b50a9d6..66275e774bd 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -187,7 +187,7 @@ bool LoginQueryHolder::Initialize()
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_MAILCOUNT);
stmt->setUInt64(0, lowGuid);
- stmt->setUInt64(1, uint64(time(nullptr)));
+ stmt->setUInt64(1, GameTime::GetGameTime());
res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_MAIL_COUNT, stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_MAILDATE);
@@ -2579,7 +2579,7 @@ void WorldSession::HandleUndeleteCooldownStatusCallback(PreparedQueryResult resu
if (result)
{
uint32 lastUndelete = result->Fetch()[0].GetUInt32();
- uint32 now = uint32(time(nullptr));
+ uint32 now = uint32(GameTime::GetGameTime());
if (lastUndelete + maxCooldown > now)
cooldown = std::max<uint32>(0, lastUndelete + maxCooldown - now);
}
@@ -2606,7 +2606,7 @@ void WorldSession::HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCha
{
uint32 lastUndelete = result->Fetch()[0].GetUInt32();
uint32 maxCooldown = sWorld->getIntConfig(CONFIG_FEATURE_SYSTEM_CHARACTER_UNDELETE_COOLDOWN);
- if (lastUndelete && (lastUndelete + maxCooldown > time(nullptr)))
+ if (lastUndelete && (lastUndelete + maxCooldown > GameTime::GetGameTime()))
{
SendUndeleteCharacterResponse(CHARACTER_UNDELETE_RESULT_ERROR_COOLDOWN, undeleteInfo.get());
return;
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index 1bdf5d1140b..ad0c2435685 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -24,6 +24,7 @@
#include "Common.h"
#include "DB2Stores.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
#include "Guild.h"
@@ -170,7 +171,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,
if (!CanSpeak())
{
- std::string timeStr = secsToTimeString(m_muteTime - time(nullptr));
+ std::string timeStr = secsToTimeString(m_muteTime - GameTime::GetGameTime());
SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());
return;
}
@@ -588,7 +589,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)
if (!CanSpeak())
{
- std::string timeStr = secsToTimeString(m_muteTime - time(nullptr));
+ std::string timeStr = secsToTimeString(m_muteTime - GameTime::GetGameTime());
SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());
return;
}
diff --git a/src/server/game/Handlers/DuelHandler.cpp b/src/server/game/Handlers/DuelHandler.cpp
index c4a9c51b749..aa40d210cc6 100644
--- a/src/server/game/Handlers/DuelHandler.cpp
+++ b/src/server/game/Handlers/DuelHandler.cpp
@@ -17,6 +17,7 @@
#include "Common.h"
#include "DuelPackets.h"
+#include "GameTime.h"
#include "WorldSession.h"
#include "Log.h"
#include "Player.h"
@@ -68,7 +69,7 @@ void WorldSession::HandleDuelAccepted()
TC_LOG_DEBUG("network", "Player 1 is: %s (%s)", player->GetGUID().ToString().c_str(), player->GetName().c_str());
TC_LOG_DEBUG("network", "Player 2 is: %s (%s)", plTarget->GetGUID().ToString().c_str(), plTarget->GetName().c_str());
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
player->duel->startTimer = now;
plTarget->duel->startTimer = now;
diff --git a/src/server/game/Handlers/GuildFinderHandler.cpp b/src/server/game/Handlers/GuildFinderHandler.cpp
index 4c53712a53d..b3aebf0b12d 100644
--- a/src/server/game/Handlers/GuildFinderHandler.cpp
+++ b/src/server/game/Handlers/GuildFinderHandler.cpp
@@ -17,6 +17,7 @@
#include "CharacterCache.h"
#include "WorldSession.h"
+#include "GameTime.h"
#include "Guild.h"
#include "GuildFinderMgr.h"
#include "GuildFinderPackets.h"
@@ -42,7 +43,7 @@ void WorldSession::HandleGuildFinderAddRecruit(WorldPackets::GuildFinder::LFGuil
return;
MembershipRequest request = MembershipRequest(GetPlayer()->GetGUID(), lfGuildAddRecruit.GuildGUID, lfGuildAddRecruit.Availability,
- lfGuildAddRecruit.ClassRoles, lfGuildAddRecruit.PlayStyle, lfGuildAddRecruit.Comment, time(nullptr));
+ lfGuildAddRecruit.ClassRoles, lfGuildAddRecruit.PlayStyle, lfGuildAddRecruit.Comment, GameTime::GetGameTime());
sGuildFinderMgr->AddMembershipRequest(lfGuildAddRecruit.GuildGUID, request);
}
@@ -125,8 +126,8 @@ void WorldSession::HandleGuildFinderGetApplications(WorldPackets::GuildFinder::L
applicationData.ClassRoles = guildSettings.GetClassRoles();
applicationData.PlayStyle = guildSettings.GetInterests();
applicationData.Availability = guildSettings.GetAvailability();
- applicationData.SecondsSinceCreated = time(nullptr) - application->GetSubmitTime();
- applicationData.SecondsUntilExpiration = application->GetExpiryTime() - time(nullptr);
+ applicationData.SecondsSinceCreated = GameTime::GetGameTime() - application->GetSubmitTime();
+ applicationData.SecondsUntilExpiration = application->GetExpiryTime() - GameTime::GetGameTime();
applicationData.Comment = application->GetComment();
}
@@ -165,7 +166,7 @@ void WorldSession::HandleGuildFinderGetRecruits(WorldPackets::GuildFinder::LFGui
if (!guild)
return;
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
WorldPackets::GuildFinder::LFGuildRecruits lfGuildRecruits;
lfGuildRecruits.UpdateTime = now;
if (std::unordered_map<ObjectGuid, MembershipRequest> const* recruitsList = sGuildFinderMgr->GetAllMembershipRequestsForGuild(guild->GetGUID()))
diff --git a/src/server/game/Handlers/HotfixHandler.cpp b/src/server/game/Handlers/HotfixHandler.cpp
index d1786bb6088..82d32e87b05 100644
--- a/src/server/game/Handlers/HotfixHandler.cpp
+++ b/src/server/game/Handlers/HotfixHandler.cpp
@@ -52,7 +52,7 @@ void WorldSession::HandleDBQueryBulk(WorldPackets::Hotfix::DBQueryBulk& dbQuery)
else
{
TC_LOG_TRACE("network", "CMSG_DB_QUERY_BULK: %s requested non-existing entry %u in datastore: %u", GetPlayerInfo().c_str(), record.RecordID, dbQuery.TableHash);
- dbReply.Timestamp = time(nullptr);
+ dbReply.Timestamp = GameTime::GetGameTime();
}
SendPacket(dbReply.Write());
diff --git a/src/server/game/Handlers/LFGHandler.cpp b/src/server/game/Handlers/LFGHandler.cpp
index f84ebc3d67e..0b75b20a555 100644
--- a/src/server/game/Handlers/LFGHandler.cpp
+++ b/src/server/game/Handlers/LFGHandler.cpp
@@ -18,6 +18,7 @@
#include "CharacterCache.h"
#include "DB2Stores.h"
#include "WorldSession.h"
+#include "GameTime.h"
#include "Group.h"
#include "LFGMgr.h"
#include "LFGPackets.h"
@@ -418,7 +419,7 @@ void WorldSession::SendLfgBootProposalUpdate(lfg::LfgPlayerBoot const& boot)
lfg::LfgAnswer playerVote = boot.votes.find(GetPlayer()->GetGUID())->second;
uint8 votesNum = 0;
uint8 agreeNum = 0;
- int32 secsleft = int32((boot.cancelTime - time(nullptr)) / 1000);
+ int32 secsleft = int32((boot.cancelTime - GameTime::GetGameTime()) / 1000);
for (const auto& vote : boot.votes)
{
if (vote.second != lfg::LFG_ANSWER_PENDING)
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index 840f3528a89..f6122bcd30a 100644
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -22,6 +22,7 @@
#include "DatabaseEnv.h"
#include "DB2Stores.h"
#include "GossipDef.h"
+#include "GameTime.h"
#include "Guild.h"
#include "GuildMgr.h"
#include "Item.h"
@@ -384,7 +385,7 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend
Player* player = _player;
Mail* m = player->GetMail(packet.MailID);
- if (!m || m->state == MAIL_STATE_DELETED || m->deliver_time > time(nullptr) || m->sender != packet.SenderGUID.GetCounter())
+ if (!m || m->state == MAIL_STATE_DELETED || m->deliver_time > GameTime::GetGameTime() || m->sender != packet.SenderGUID.GetCounter())
{
player->SendMailResult(packet.MailID, MAIL_RETURNED_TO_SENDER, MAIL_ERR_INTERNAL_ERROR);
return;
@@ -438,7 +439,7 @@ void WorldSession::HandleMailTakeItem(WorldPackets::Mail::MailTakeItem& packet)
Player* player = _player;
Mail* m = player->GetMail(packet.MailID);
- if (!m || m->state == MAIL_STATE_DELETED || m->deliver_time > time(nullptr))
+ if (!m || m->state == MAIL_STATE_DELETED || m->deliver_time > GameTime::GetGameTime())
{
player->SendMailResult(packet.MailID, MAIL_ITEM_TAKEN, MAIL_ERR_INTERNAL_ERROR);
return;
@@ -534,7 +535,7 @@ void WorldSession::HandleMailTakeMoney(WorldPackets::Mail::MailTakeMoney& packet
Player* player = _player;
Mail* m = player->GetMail(packet.MailID);
- if ((!m || m->state == MAIL_STATE_DELETED || m->deliver_time > time(nullptr)) ||
+ if ((!m || m->state == MAIL_STATE_DELETED || m->deliver_time > GameTime::GetGameTime()) ||
(packet.Money > 0 && m->money != uint64(packet.Money)))
{
player->SendMailResult(packet.MailID, MAIL_MONEY_TAKEN, MAIL_ERR_INTERNAL_ERROR);
@@ -573,7 +574,7 @@ void WorldSession::HandleGetMailList(WorldPackets::Mail::MailGetList& packet)
player->_LoadMail();
WorldPackets::Mail::MailListResult response;
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
for (Mail* m : player->GetMails())
{
@@ -605,7 +606,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPackets::Mail::MailCreateTextIt
Player* player = _player;
Mail* m = player->GetMail(packet.MailID);
- if (!m || (m->body.empty() && !m->mailTemplateId) || m->state == MAIL_STATE_DELETED || m->deliver_time > time(nullptr) || (m->checked & MAIL_CHECK_MASK_COPIED))
+ if (!m || (m->body.empty() && !m->mailTemplateId) || m->state == MAIL_STATE_DELETED || m->deliver_time > GameTime::GetGameTime() || (m->checked & MAIL_CHECK_MASK_COPIED))
{
player->SendMailResult(packet.MailID, MAIL_MADE_PERMANENT, MAIL_ERR_INTERNAL_ERROR);
return;
@@ -663,7 +664,7 @@ void WorldSession::HandleQueryNextMailTime(WorldPackets::Mail::MailQueryNextMail
{
result.NextMailTime = 0.0f;
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
std::set<ObjectGuid::LowType> sentSenders;
for (Mail* mail : _player->GetMails())
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 858b88f540d..0c72ec7aad4 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -283,7 +283,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ
GetPlayer()->AddUnitFlag(UNIT_FLAG_STUNNED);
}
- SetLogoutStartTime(time(nullptr));
+ SetLogoutStartTime(GameTime::GetGameTime());
}
void WorldSession::HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCancel& /*logoutCancel*/)
@@ -317,7 +317,7 @@ void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& /*packet*/)
GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP);
GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER);
if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
- GetPlayer()->pvpInfo.EndTimer = time(nullptr); // start toggle-off
+ GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
else
{
@@ -335,7 +335,7 @@ void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet)
GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP);
GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER);
if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
- GetPlayer()->pvpInfo.EndTimer = time(nullptr); // start toggle-off
+ GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
else
{
@@ -412,7 +412,7 @@ void WorldSession::HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& /*pack
return;
// prevent resurrect before 30-sec delay after body release not finished
- if (time_t(corpse->GetGhostTime() + _player->GetCorpseReclaimDelay(corpse->GetType() == CORPSE_RESURRECTABLE_PVP)) > time_t(time(nullptr)))
+ if (time_t(corpse->GetGhostTime() + _player->GetCorpseReclaimDelay(corpse->GetType() == CORPSE_RESURRECTABLE_PVP)) > time_t(GameTime::GetGameTime()))
return;
if (!corpse->IsWithinDistInMap(_player, CORPSE_RECLAIM_RADIUS, true))
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 1e77f518357..d8dd7070786 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -186,7 +186,7 @@ void WorldSession::HandleMoveWorldportAck()
{
if (time_t timeReset = sInstanceSaveMgr->GetResetTimeFor(mEntry->ID, diff))
{
- uint32 timeleft = uint32(timeReset - time(nullptr));
+ uint32 timeleft = uint32(timeReset - GameTime::GetGameTime());
GetPlayer()->SendInstanceResetWarning(mEntry->ID, diff, timeleft, true);
}
}
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp
index aaeb25b4dab..ee05f6918c2 100644
--- a/src/server/game/Handlers/PetHandler.cpp
+++ b/src/server/game/Handlers/PetHandler.cpp
@@ -595,7 +595,7 @@ void WorldSession::HandlePetRename(WorldPackets::Pet::PetRename& packet)
CharacterDatabase.CommitTransaction(trans);
- pet->SetPetNameTimestamp(uint32(time(nullptr)));
+ pet->SetPetNameTimestamp(uint32(GameTime::GetGameTime()));
}
void WorldSession::HandlePetAbandon(WorldPackets::Pet::PetAbandon& packet)
diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp
index c28c1639c50..c28f9ed7a8a 100644
--- a/src/server/game/Instances/InstanceSaveMgr.cpp
+++ b/src/server/game/Instances/InstanceSaveMgr.cpp
@@ -20,6 +20,7 @@
#include "Config.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "GridNotifiers.h"
#include "GridStates.h"
#include "Group.h"
@@ -112,7 +113,7 @@ InstanceSave* InstanceSaveManager::AddInstanceSave(uint32 mapId, uint32 instance
resetTime = GetResetTimeFor(mapId, difficulty);
else
{
- resetTime = time(nullptr) + 2 * HOUR;
+ resetTime = GameTime::GetGameTime() + 2 * HOUR;
// normally this will be removed soon after in InstanceMap::Add, prevent error
ScheduleReset(true, resetTime, InstResetEvent(0, mapId, difficulty, instanceId));
}
@@ -312,7 +313,7 @@ void InstanceSaveManager::LoadInstances()
void InstanceSaveManager::LoadResetTimes()
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
time_t today = (now / DAY) * DAY;
// NOTE: Use DirectPExecute for tables that will be queried later
@@ -526,12 +527,12 @@ void InstanceSaveManager::ForceGlobalReset(uint32 mapId, Difficulty difficulty)
ScheduleReset(false, 0, InstResetEvent(1, mapId, difficulty, 0));
ScheduleReset(false, 0, InstResetEvent(4, mapId, difficulty, 0));
// force global reset on the instance
- _ResetOrWarnAll(mapId, difficulty, false, time(nullptr));
+ _ResetOrWarnAll(mapId, difficulty, false, GameTime::GetGameTime());
}
void InstanceSaveManager::Update()
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
time_t t;
while (!m_resetTimeQueue.empty())
@@ -648,7 +649,7 @@ void InstanceSaveManager::_ResetOrWarnAll(uint32 mapid, Difficulty difficulty, b
return;
TC_LOG_DEBUG("misc", "InstanceSaveManager::ResetOrWarnAll: Processing map %s (%u) on difficulty %u (warn? %u)", mapEntry->MapName[sWorld->GetDefaultDbcLocale()], mapid, uint8(difficulty), warn);
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (!warn)
{
diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp
index f66ea00ded5..ec4cc305687 100644
--- a/src/server/game/Mails/Mail.cpp
+++ b/src/server/game/Mails/Mail.cpp
@@ -21,6 +21,7 @@
#include "CalendarMgr.h"
#include "CharacterCache.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "Item.h"
#include "Log.h"
#include "LootMgr.h"
@@ -194,7 +195,7 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction& trans, MailReceiver con
uint32 mailId = sObjectMgr->GenerateMailID();
- time_t deliver_time = time(nullptr) + deliver_delay;
+ time_t deliver_time = GameTime::GetGameTime() + deliver_delay;
//expire time if COD 3 days, if no COD 30 days, if auction sale pending 1 hour
uint32 expire_delay;
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 7545aa100ad..3f5b679afb9 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -3133,7 +3133,7 @@ bool Map::CheckRespawn(RespawnInfo* info)
: ObjectGuid::Create<HighGuid::Creature>(GetId(), info->entry, info->spawnId);
if (time_t linkedTime = GetLinkedRespawnTime(thisGUID))
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
time_t respawnTime;
if (linkedTime == std::numeric_limits<time_t>::max())
respawnTime = linkedTime;
@@ -3164,7 +3164,7 @@ bool Map::CheckRespawn(RespawnInfo* info)
{
if (!sScriptMgr->CanSpawn(info->spawnId, info->entry, sObjectMgr->GetCreatureData(info->spawnId), this))
{ // if a script blocks our respawn, schedule next check in a little bit
- info->respawnTime = time(nullptr) + urand(4, 7);
+ info->respawnTime = GameTime::GetGameTime() + urand(4, 7);
return false;
}
}
@@ -3337,7 +3337,7 @@ void Map::RemoveRespawnTime(RespawnVector& respawnData, bool doRespawn, Characte
void Map::ProcessRespawns()
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
while (!_respawnTimes.empty())
{
RespawnInfo* next = _respawnTimes.top();
@@ -3434,7 +3434,7 @@ bool Map::SpawnGroupSpawn(uint32 groupId, bool ignoreRespawn, bool force, std::v
continue;
time_t respawnTime = GetRespawnTime(data->type, data->spawnId);
- if (respawnTime && respawnTime > time(nullptr))
+ if (respawnTime && respawnTime > GameTime::GetGameTime())
{
if (!force && !ignoreRespawn)
continue;
@@ -3897,7 +3897,7 @@ bool InstanceMap::AddPlayerToMap(Player* player, bool initPlayer /*= true*/)
// increase current instances (hourly limit)
if (!group || !group->isLFGGroup())
- player->AddInstanceEnterTime(GetInstanceId(), time(nullptr));
+ player->AddInstanceEnterTime(GetInstanceId(), GameTime::GetGameTime());
// get or create an instance save for the map
InstanceSave* mapSave = sInstanceSaveMgr->GetInstanceSave(GetInstanceId());
@@ -4756,7 +4756,7 @@ Corpse* Map::ConvertCorpseToBones(ObjectGuid const& ownerGuid, bool insignia /*=
void Map::RemoveOldCorpses()
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
std::vector<ObjectGuid> corpses;
corpses.reserve(_corpsesByPlayer.size());
diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp
index 61394932987..07b1e1f582a 100644
--- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp
+++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp
@@ -19,6 +19,7 @@
#include "AchievementPackets.h"
#include "DatabaseEnv.h"
#include "DB2Structure.h"
+#include "GameTime.h"
#include "Group.h"
#include "Log.h"
#include "Map.h"
@@ -87,7 +88,7 @@ void QuestObjectiveCriteriaMgr::LoadFromDB(PreparedQueryResult objectiveResult,
if (criteriaResult)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
do
{
Field* fields = criteriaResult->Fetch();
diff --git a/src/server/game/Scenarios/InstanceScenario.cpp b/src/server/game/Scenarios/InstanceScenario.cpp
index 5eeb5ca709d..baafc84c130 100644
--- a/src/server/game/Scenarios/InstanceScenario.cpp
+++ b/src/server/game/Scenarios/InstanceScenario.cpp
@@ -18,6 +18,7 @@
#include "InstanceScenario.h"
#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "InstanceSaveMgr.h"
#include "Log.h"
#include "Map.h"
@@ -97,7 +98,7 @@ void InstanceScenario::LoadInstanceData(uint32 instanceId)
if (result)
{
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
std::vector<CriteriaTree const*> criteriaTrees;
do
diff --git a/src/server/game/Server/Packets/MailPackets.cpp b/src/server/game/Server/Packets/MailPackets.cpp
index c5fc5a1c1de..b0bb17e64f0 100644
--- a/src/server/game/Server/Packets/MailPackets.cpp
+++ b/src/server/game/Server/Packets/MailPackets.cpp
@@ -16,6 +16,7 @@
*/
#include "MailPackets.h"
+#include "GameTime.h"
#include "Item.h"
#include "Mail.h"
#include "Player.h"
@@ -100,7 +101,7 @@ WorldPackets::Mail::MailListEntry::MailListEntry(::Mail const* mail, ::Player* p
StationeryID = mail->stationery;
SentMoney = mail->money;
Flags = mail->checked;
- DaysLeft = float(mail->expire_time - time(nullptr)) / DAY;
+ DaysLeft = float(mail->expire_time - GameTime::GetGameTime()) / DAY;
MailTemplateID = mail->mailTemplateId;
Subject = mail->subject;
Body = mail->body;
@@ -250,7 +251,7 @@ WorldPackets::Mail::MailQueryNextTimeResult::MailNextTimeEntry::MailNextTimeEntr
break;
}
- TimeLeft = mail->deliver_time - time(nullptr);
+ TimeLeft = mail->deliver_time - GameTime::GetGameTime();
AltSenderType = mail->messageType;
StationeryID = mail->stationery;
}
diff --git a/src/server/game/Server/Protocol/PacketLog.cpp b/src/server/game/Server/Protocol/PacketLog.cpp
index 30a1f1b2f2e..595738330d3 100644
--- a/src/server/game/Server/Protocol/PacketLog.cpp
+++ b/src/server/game/Server/Protocol/PacketLog.cpp
@@ -17,6 +17,7 @@
#include "PacketLog.h"
#include "Config.h"
+#include "GameTime.h"
#include "IpAddress.h"
#include "Realm.h"
#include "Timer.h"
@@ -100,7 +101,7 @@ void PacketLog::Initialize()
header.Build = realm.Build;
header.Locale[0] = 'e'; header.Locale[1] = 'n'; header.Locale[2] = 'U'; header.Locale[3] = 'S';
std::memset(header.SessionKey, 0, sizeof(header.SessionKey));
- header.SniffStartUnixtime = time(nullptr);
+ header.SniffStartUnixtime = GameTime::GetGameTime();
header.SniffStartTicks = getMSTime();
header.OptionalDataSize = 0;
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 5c7099d1859..1cb18499c12 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -261,13 +261,13 @@ void WorldSession::SendPacket(WorldPacket const* packet, bool forced /*= false*/
static uint64 sendPacketCount = 0;
static uint64 sendPacketBytes = 0;
- static time_t firstTime = time(nullptr);
+ static time_t firstTime = GameTime::GetGameTime();
static time_t lastTime = firstTime; // next 60 secs start time
static uint64 sendLastPacketCount = 0;
static uint64 sendLastPacketBytes = 0;
- time_t cur_time = time(nullptr);
+ time_t cur_time = GameTime::GetGameTime();
if ((cur_time - lastTime) < 60)
{
@@ -336,7 +336,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
bool deletePacket = true;
std::vector<WorldPacket*> requeuePackets;
uint32 processedPackets = 0;
- time_t currentTime = time(nullptr);
+ time_t currentTime = GameTime::GetGameTime();
while (m_Socket[CONNECTION_TYPE_REALM] && _recvQueue.next(packet, updater))
{
@@ -456,9 +456,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
//logout procedure should happen only in World::UpdateSessions() method!!!
if (updater.ProcessUnsafe())
{
- time_t currTime = time(nullptr);
///- If necessary, log the player out
- if (ShouldLogOut(currTime) && m_playerLoading.IsEmpty())
+ if (ShouldLogOut(currentTime) && m_playerLoading.IsEmpty())
LogoutPlayer(true);
if (m_Socket[CONNECTION_TYPE_REALM] && GetPlayer() && _warden)
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 3e22c91e2a1..7b2f2319eb9 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -23,6 +23,7 @@
#include "CryptoRandom.h"
#include "DatabaseEnv.h"
#include "Errors.h"
+#include "GameTime.h"
#include "HMAC.h"
#include "IPLocation.h"
#include "PacketLog.h"
@@ -810,7 +811,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<WorldPackets::Auth::
//! Negative mutetime indicates amount of seconds to be muted effective on next login - which is now.
if (mutetime < 0)
{
- mutetime = time(nullptr) + llabs(mutetime);
+ mutetime = GameTime::GetGameTime() + llabs(mutetime);
stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME_LOGIN);
stmt->setInt64(0, mutetime);
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 6d9ddfad432..dfe0ef6276a 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -348,7 +348,7 @@ Aura::Aura(SpellInfo const* spellproto, ObjectGuid castId, WorldObject* owner, U
m_spellInfo(spellproto), m_castDifficulty(castDifficulty), m_castGuid(castId), m_casterGuid(!casterGUID.IsEmpty() ? casterGUID : caster->GetGUID()),
m_castItemGuid(castItem ? castItem->GetGUID() : castItemGuid), m_castItemId(castItem ? castItem->GetEntry() : castItemId),
m_castItemLevel(castItemLevel), m_spellVisual({ caster ? caster->GetCastSpellXSpellVisualId(spellproto) : spellproto->GetSpellXSpellVisualId(), 0 }),
-m_applyTime(time(nullptr)), m_owner(owner), m_timeCla(0), m_updateTargetMapInterval(0),
+m_applyTime(GameTime::GetGameTime()), m_owner(owner), m_timeCla(0), m_updateTargetMapInterval(0),
m_casterLevel(caster ? caster->getLevel() : m_spellInfo->SpellLevel), m_procCharges(0), m_stackAmount(1),
m_isRemoved(false), m_isSingleTarget(false), m_isUsingCharges(false), m_dropEvent(nullptr),
m_procCooldown(std::chrono::steady_clock::time_point::min()),
diff --git a/src/server/game/Support/SupportMgr.cpp b/src/server/game/Support/SupportMgr.cpp
index ffb69854952..1feb4d2aa42 100644
--- a/src/server/game/Support/SupportMgr.cpp
+++ b/src/server/game/Support/SupportMgr.cpp
@@ -19,6 +19,7 @@
#include "CharacterCache.h"
#include "Chat.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "Language.h"
#include "Log.h"
#include "ObjectAccessor.h"
@@ -28,11 +29,11 @@
#include "World.h"
#include <sstream>
-inline time_t GetAge(uint64 t) { return (time(nullptr) - t) / DAY; }
+inline time_t GetAge(uint64 t) { return (GameTime::GetGameTime() - t) / DAY; }
Ticket::Ticket() : _id(0), _mapId(0), _createTime(0) { }
-Ticket::Ticket(Player* player) : _id(0), _mapId(0), _createTime(time(nullptr))
+Ticket::Ticket(Player* player) : _id(0), _mapId(0), _createTime(GameTime::GetGameTime())
{
_playerGuid = player->GetGUID();
}
@@ -156,7 +157,7 @@ void BugTicket::DeleteFromDB()
std::string BugTicket::FormatViewMessageString(ChatHandler& handler, bool detailed) const
{
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
@@ -280,7 +281,7 @@ void ComplaintTicket::DeleteFromDB()
std::string ComplaintTicket::FormatViewMessageString(ChatHandler& handler, bool detailed) const
{
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
@@ -367,7 +368,7 @@ void SuggestionTicket::DeleteFromDB()
std::string SuggestionTicket::FormatViewMessageString(ChatHandler& handler, bool detailed) const
{
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
std::stringstream ss;
ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTGUID, _id);
@@ -796,5 +797,5 @@ TC_GAME_API void SupportMgr::ShowClosedList<SuggestionTicket>(ChatHandler& handl
void SupportMgr::UpdateLastChange()
{
- _lastChange = uint64(time(nullptr));
+ _lastChange = GameTime::GetGameTime();
}
diff --git a/src/server/game/Time/GameTime.cpp b/src/server/game/Time/GameTime.cpp
index b1a3d269cd9..08fc72dc6a9 100644
--- a/src/server/game/Time/GameTime.cpp
+++ b/src/server/game/Time/GameTime.cpp
@@ -21,7 +21,7 @@
namespace GameTime
{
- time_t const StartTime = time(nullptr);
+ time_t const StartTime = GameTime::GetGameTime();
time_t GameTime = 0;
uint32 GameMSTime = 0;
@@ -68,7 +68,7 @@ namespace GameTime
void UpdateGameTimers()
{
- GameTime = time(nullptr);
+ GameTime = GameTime::GetGameTime();
GameMSTime = getMSTime();
GameTimeSystemPoint = std::chrono::system_clock::now();
GameTimeSteadyPoint = std::chrono::steady_clock::now();
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 7182d976c09..a60cd591993 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -152,7 +152,7 @@ World::World()
_guidWarn = false;
_guidAlert = false;
_warnDiff = 0;
- _warnShutdownTime = time(nullptr);
+ _warnShutdownTime = GameTime::GetGameTime();
}
/// World destructor
@@ -419,7 +419,7 @@ bool World::HasRecentlyDisconnected(WorldSession* session)
{
for (DisconnectMap::iterator i = m_disconnects.begin(); i != m_disconnects.end();)
{
- if (difftime(i->second, time(nullptr)) < tolerance)
+ if (difftime(i->second, GameTime::GetGameTime()) < tolerance)
{
if (i->first == session->GetAccountId())
return true;
@@ -1641,7 +1641,7 @@ void World::SetInitialWorldSettings()
uint32 startupBegin = getMSTime();
///- Initialize the random number generator
- srand((unsigned int)time(nullptr));
+ srand((unsigned int)GameTime::GetGameTime());
///- Initialize detour memory management
dtAllocSetCustom(dtCustomAlloc, dtCustomFree);
@@ -2581,7 +2581,7 @@ void World::Update(uint32 diff)
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_OLD_LOGS);
stmt->setUInt32(0, sWorld->getIntConfig(CONFIG_LOGDB_CLEARTIME));
- stmt->setUInt32(1, uint32(time(nullptr)));
+ stmt->setUInt32(1, uint32(GameTime::GetGameTime()));
stmt->setUInt32(2, realm.Id.Realm);
LoginDatabase.Execute(stmt);
@@ -3220,7 +3220,7 @@ void World::UpdateSessions(uint32 diff)
if (!pSession->Update(diff, updater)) // As interval = 0
{
if (!RemoveQueuedPlayer(itr->second) && itr->second && getIntConfig(CONFIG_INTERVAL_DISCONNECT_TOLERANCE))
- m_disconnects[itr->second->GetAccountId()] = time(nullptr);
+ m_disconnects[itr->second->GetAccountId()] = GameTime::GetGameTime();
RemoveQueuedPlayer(pSession);
m_sessions.erase(itr);
delete pSession;
@@ -3308,7 +3308,7 @@ void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount)
void World::InitWeeklyQuestResetTime()
{
time_t wstime = uint64(sWorld->getWorldState(WS_WEEKLY_QUEST_RESET_TIME));
- time_t curtime = time(nullptr);
+ time_t curtime = GameTime::GetGameTime();
m_NextWeeklyQuestReset = wstime < curtime ? curtime : time_t(wstime);
}
@@ -3327,7 +3327,7 @@ void World::InitDailyQuestResetTime(bool loading)
}
// FIX ME: client not show day start time
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
tm localTm;
localtime_r(&curTime, &localTm);
localTm.tm_hour = getIntConfig(CONFIG_DAILY_QUEST_RESET_TIME_HOUR);
@@ -3350,7 +3350,7 @@ void World::InitDailyQuestResetTime(bool loading)
void World::InitMonthlyQuestResetTime()
{
time_t wstime = uint64(sWorld->getWorldState(WS_MONTHLY_QUEST_RESET_TIME));
- time_t curtime = time(nullptr);
+ time_t curtime = GameTime::GetGameTime();
m_NextMonthlyQuestReset = wstime < curtime ? curtime : time_t(wstime);
}
@@ -3358,10 +3358,10 @@ void World::InitRandomBGResetTime()
{
time_t bgtime = sWorld->getWorldState(WS_BG_DAILY_RESET_TIME);
if (!bgtime)
- m_NextRandomBGReset = time(nullptr); // game time not yet init
+ m_NextRandomBGReset = GameTime::GetGameTime(); // game time not yet init
// generate time by config
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
tm localTm;
localtime_r(&curTime, &localTm);
localTm.tm_hour = getIntConfig(CONFIG_RANDOM_BG_RESET_HOUR);
@@ -3386,10 +3386,10 @@ void World::InitGuildResetTime()
{
time_t gtime = getWorldState(WS_GUILD_DAILY_RESET_TIME);
if (!gtime)
- m_NextGuildReset = time(nullptr); // game time not yet init
+ m_NextGuildReset = GameTime::GetGameTime(); // game time not yet init
// generate time by config
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
tm localTm;
localtime_r(&curTime, &localTm);
localTm.tm_hour = getIntConfig(CONFIG_GUILD_RESET_HOUR);
@@ -3414,10 +3414,10 @@ void World::InitCurrencyResetTime()
{
time_t currencytime = sWorld->getWorldState(WS_CURRENCY_RESET_TIME);
if (!currencytime)
- m_NextCurrencyReset = time(nullptr); // game time not yet init
+ m_NextCurrencyReset = GameTime::GetGameTime(); // game time not yet init
// generate time by config
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
tm localTm;
localtime_r(&curTime, &localTm);
@@ -3520,7 +3520,7 @@ void World::ResetMonthlyQuests()
itr->second->GetPlayer()->ResetMonthlyQuestStatus();
// generate time
- time_t curTime = time(nullptr);
+ time_t curTime = GameTime::GetGameTime();
tm localTm;
localtime_r(&curTime, &localTm);
diff --git a/src/server/scripts/Commands/cs_ban.cpp b/src/server/scripts/Commands/cs_ban.cpp
index f63be2f45c8..97b94a9cc7c 100644
--- a/src/server/scripts/Commands/cs_ban.cpp
+++ b/src/server/scripts/Commands/cs_ban.cpp
@@ -27,6 +27,7 @@ EndScriptData */
#include "CharacterCache.h"
#include "Chat.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "Language.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
@@ -284,7 +285,7 @@ public:
time_t unbanDate = time_t(fields[3].GetUInt32());
bool active = false;
- if (fields[2].GetBool() && (fields[1].GetUInt64() == uint64(0) || unbanDate >= time(nullptr)))
+ if (fields[2].GetBool() && (fields[1].GetUInt64() == uint64(0) || unbanDate >= GameTime::GetGameTime()))
active = true;
bool permanent = (fields[1].GetUInt64() == uint64(0));
std::string banTime = permanent ? handler->GetTrinityString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].GetUInt64(), true);
@@ -340,7 +341,7 @@ public:
Field* fields = result->Fetch();
time_t unbanDate = fields[3].GetInt64();
bool active = false;
- if (fields[2].GetUInt8() && (!fields[1].GetInt64() || unbanDate >= time(nullptr)))
+ if (fields[2].GetUInt8() && (!fields[1].GetInt64() || unbanDate >= GameTime::GetGameTime()))
active = true;
bool permanent = (fields[1].GetInt64() == SI64LIT(0));
std::string banTime = permanent ? handler->GetTrinityString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].GetInt64(), true);
diff --git a/src/server/scripts/Commands/cs_event.cpp b/src/server/scripts/Commands/cs_event.cpp
index 53444d95d8a..20fb1518af4 100644
--- a/src/server/scripts/Commands/cs_event.cpp
+++ b/src/server/scripts/Commands/cs_event.cpp
@@ -25,6 +25,7 @@ EndScriptData */
#include "ScriptMgr.h"
#include "Chat.h"
#include "GameEventMgr.h"
+#include "GameTime.h"
#include "Language.h"
#include "Player.h"
#include "RBAC.h"
@@ -116,8 +117,8 @@ public:
std::string endTimeStr = TimeToTimestampStr(eventData.end);
uint32 delay = sGameEventMgr->NextCheck(eventId);
- time_t nextTime = time(nullptr) + delay;
- std::string nextStr = nextTime >= eventData.start && nextTime < eventData.end ? TimeToTimestampStr(time(nullptr) + delay) : "-";
+ time_t nextTime = GameTime::GetGameTime() + delay;
+ std::string nextStr = nextTime >= eventData.start && nextTime < eventData.end ? TimeToTimestampStr(GameTime::GetGameTime() + delay) : "-";
std::string occurenceStr = secsToTimeString(eventData.occurence * MINUTE);
std::string lengthStr = secsToTimeString(eventData.length * MINUTE);
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp
index 0c5643d4a34..49be3e5668e 100644
--- a/src/server/scripts/Commands/cs_gobject.cpp
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -28,6 +28,7 @@ EndScriptData */
#include "DB2Stores.h"
#include "GameEventMgr.h"
#include "GameObject.h"
+#include "GameTime.h"
#include "Language.h"
#include "Log.h"
#include "MapManager.h"
@@ -323,7 +324,7 @@ public:
if (target)
{
- int32 curRespawnDelay = int32(target->GetRespawnTimeEx() - time(nullptr));
+ int32 curRespawnDelay = int32(target->GetRespawnTimeEx() - GameTime::GetGameTime());
if (curRespawnDelay < 0)
curRespawnDelay = 0;
diff --git a/src/server/scripts/Commands/cs_instance.cpp b/src/server/scripts/Commands/cs_instance.cpp
index 90ed94a4d3b..72dc11eb7c4 100644
--- a/src/server/scripts/Commands/cs_instance.cpp
+++ b/src/server/scripts/Commands/cs_instance.cpp
@@ -25,6 +25,7 @@ EndScriptData */
#include "ScriptMgr.h"
#include "Chat.h"
#include "DB2Stores.h"
+#include "GameTime.h"
#include "Group.h"
#include "InstanceSaveMgr.h"
#include "InstanceScript.h"
@@ -89,7 +90,7 @@ public:
for (auto itr = binds->second.begin(); itr != binds->second.end(); ++itr)
{
InstanceSave* save = itr->second.save;
- std::string timeleft = GetTimeString(save->GetResetTime() - time(nullptr));
+ std::string timeleft = GetTimeString(save->GetResetTime() - GameTime::GetGameTime());
handler->PSendSysMessage(LANG_COMMAND_LIST_BIND_INFO, itr->first, save->GetInstanceId(), itr->second.perm ? "yes" : "no", itr->second.extendState == EXTEND_STATE_EXPIRED ? "expired" : itr->second.extendState == EXTEND_STATE_EXTENDED ? "yes" : "no", save->GetDifficultyID(), save->CanReset() ? "yes" : "no", timeleft.c_str());
counter++;
}
@@ -108,7 +109,7 @@ public:
for (auto itr = binds->second.begin(); itr != binds->second.end(); ++itr)
{
InstanceSave* save = itr->second.save;
- std::string timeleft = GetTimeString(save->GetResetTime() - time(nullptr));
+ std::string timeleft = GetTimeString(save->GetResetTime() - GameTime::GetGameTime());
handler->PSendSysMessage(LANG_COMMAND_LIST_BIND_INFO, itr->first, save->GetInstanceId(), itr->second.perm ? "yes" : "no", "-", save->GetDifficultyID(), save->CanReset() ? "yes" : "no", timeleft.c_str());
counter++;
}
@@ -154,7 +155,7 @@ public:
InstanceSave* save = itr->second.save;
if (itr->first != player->GetMapId() && (!MapId || MapId == itr->first) && (diff == -1 || diff == save->GetDifficultyID()))
{
- std::string timeleft = GetTimeString(save->GetResetTime() - time(nullptr));
+ std::string timeleft = GetTimeString(save->GetResetTime() - GameTime::GetGameTime());
handler->PSendSysMessage(LANG_COMMAND_INST_UNBIND_UNBINDING, itr->first, save->GetInstanceId(), itr->second.perm ? "yes" : "no", save->GetDifficultyID(), save->CanReset() ? "yes" : "no", timeleft.c_str());
player->UnbindInstance(itr, binds);
counter++;
diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp
index 6c189b4fa19..1141d0d84b8 100644
--- a/src/server/scripts/Commands/cs_list.cpp
+++ b/src/server/scripts/Commands/cs_list.cpp
@@ -29,6 +29,7 @@ EndScriptData */
#include "DatabaseEnv.h"
#include "DB2Stores.h"
#include "GameObject.h"
+#include "GameTime.h"
#include "Language.h"
#include "MapManager.h"
#include "ObjectAccessor.h"
@@ -714,7 +715,7 @@ public:
uint32 gridY = ri->gridId / MAX_NUMBER_OF_GRIDS;
uint32 gridX = ri->gridId % MAX_NUMBER_OF_GRIDS;
- std::string respawnTime = ri->respawnTime > time(NULL) ? secsToTimeString(uint64(ri->respawnTime - time(nullptr)), true) : stringOverdue;
+ std::string respawnTime = ri->respawnTime > GameTime::GetGameTime() ? secsToTimeString(uint64(ri->respawnTime - GameTime::GetGameTime()), true) : stringOverdue;
handler->PSendSysMessage(UI64FMTD " | %u | [%02u,%02u] | %s (%u) | %s", ri->spawnId, ri->entry, gridX, gridY, GetZoneName(ri->zoneId, handler->GetSessionDbcLocale()), ri->zoneId, map->IsSpawnGroupActive(data->spawnGroupData->groupId) ? respawnTime.c_str() : "inactive");
}
@@ -735,7 +736,7 @@ public:
uint32 gridY = ri->gridId / MAX_NUMBER_OF_GRIDS;
uint32 gridX = ri->gridId % MAX_NUMBER_OF_GRIDS;
- std::string respawnTime = ri->respawnTime > time(NULL) ? secsToTimeString(uint64(ri->respawnTime - time(nullptr)), true) : stringOverdue;
+ std::string respawnTime = ri->respawnTime > GameTime::GetGameTime() ? secsToTimeString(uint64(ri->respawnTime - GameTime::GetGameTime()), true) : stringOverdue;
handler->PSendSysMessage(UI64FMTD " | %u | [% 02u, % 02u] | %s (%u) | %s", ri->spawnId, ri->entry, gridX, gridY, GetZoneName(ri->zoneId, handler->GetSessionDbcLocale()), ri->zoneId, map->IsSpawnGroupActive(data->spawnGroupData->groupId) ? respawnTime.c_str() : "inactive");
}
return true;
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 81f8e7ab7b9..991de3f28b9 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -1843,11 +1843,11 @@ public:
// Output III. LANG_PINFO_BANNED if ban exists and is applied
if (banTime >= 0)
- handler->PSendSysMessage(LANG_PINFO_BANNED, banType.c_str(), banReason.c_str(), banTime > 0 ? secsToTimeString(banTime - time(nullptr), true).c_str() : handler->GetTrinityString(LANG_PERMANENTLY), bannedBy.c_str());
+ handler->PSendSysMessage(LANG_PINFO_BANNED, banType.c_str(), banReason.c_str(), banTime > 0 ? secsToTimeString(banTime - GameTime::GetGameTime(), true).c_str() : handler->GetTrinityString(LANG_PERMANENTLY), bannedBy.c_str());
// Output IV. LANG_PINFO_MUTED if mute is applied
if (muteTime > 0)
- handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason.c_str(), secsToTimeString(muteTime - time(nullptr), true).c_str(), muteBy.c_str());
+ handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason.c_str(), secsToTimeString(muteTime - GameTime::GetGameTime(), true).c_str(), muteBy.c_str());
// Output V. LANG_PINFO_ACC_ACCOUNT
handler->PSendSysMessage(LANG_PINFO_ACC_ACCOUNT, userName.c_str(), accId, security);
@@ -2020,7 +2020,7 @@ public:
if (target)
{
// Target is online, mute will be in effect right away.
- int64 muteTime = time(nullptr) + notSpeakTime * MINUTE;
+ int64 muteTime = GameTime::GetGameTime() + notSpeakTime * MINUTE;
target->GetSession()->m_muteTime = muteTime;
stmt->setInt64(0, muteTime);
std::string nameLink = handler->playerLink(targetName);
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index fb501cf418d..5fdfaf812b4 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -27,6 +27,7 @@ EndScriptData */
#include "CreatureAI.h"
#include "CreatureGroups.h"
#include "DatabaseEnv.h"
+#include "GameTime.h"
#include "Language.h"
#include "Log.h"
#include "Map.h"
@@ -823,7 +824,7 @@ public:
uint32 nativeid = target->GetNativeDisplayId();
uint32 Entry = target->GetEntry();
- int64 curRespawnDelay = target->GetRespawnCompatibilityMode() ? target->GetRespawnTimeEx() - time(nullptr) : target->GetMap()->GetCreatureRespawnTime(target->GetSpawnId()) - time(nullptr);
+ int64 curRespawnDelay = target->GetRespawnCompatibilityMode() ? target->GetRespawnTimeEx() - GameTime::GetGameTime() : target->GetMap()->GetCreatureRespawnTime(target->GetSpawnId()) - GameTime::GetGameTime();
if (curRespawnDelay < 0)
curRespawnDelay = 0;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index cf899c1915d..6bfe4c555ed 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -404,7 +404,7 @@ public:
return false;
bool summoned = false;
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
for (int32 i = first; i <= last; ++i)
{
if (_respawnCooldowns[i] > now)
@@ -432,7 +432,7 @@ public:
void ClearSlot(PassengerSlots slot)
{
_controlledSlots[slot].Clear();
- _respawnCooldowns[slot] = time(nullptr) + _slotInfo[slot].Cooldown;
+ _respawnCooldowns[slot] = GameTime::GetGameTime() + _slotInfo[slot].Cooldown;
}
bool SlotsNeedRefill(PassengerSlots first, PassengerSlots last) const
@@ -853,7 +853,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
_controller.SetTransport(creature->GetTransport());
me->SetRegenerateHealth(false);
me->m_CombatDistance = 70.0f;
- _firstMageCooldown = time(nullptr) + 60;
+ _firstMageCooldown = GameTime::GetGameTime() + 60;
_axethrowersYellCooldown = time_t(0);
_rocketeersYellCooldown = time_t(0);
}
@@ -863,7 +863,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
ScriptedAI::InitializeAI();
_events.Reset();
- _firstMageCooldown = time(nullptr) + 60;
+ _firstMageCooldown = GameTime::GetGameTime() + 60;
_axethrowersYellCooldown = time_t(0);
_rocketeersYellCooldown = time_t(0);
}
@@ -915,7 +915,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
}
else if (action == ACTION_SPAWN_MAGE)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (_firstMageCooldown > now)
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
else
@@ -1049,10 +1049,10 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
case EVENT_CHECK_RIFLEMAN:
if (_controller.SummonCreatures(SLOT_RIFLEMAN_1, Is25ManRaid() ? SLOT_RIFLEMAN_8 : SLOT_RIFLEMAN_4))
{
- if (_axethrowersYellCooldown < time(nullptr))
+ if (_axethrowersYellCooldown < GameTime::GetGameTime())
{
Talk(SAY_SAURFANG_AXETHROWERS);
- _axethrowersYellCooldown = time(nullptr) + 5;
+ _axethrowersYellCooldown = GameTime::GetGameTime() + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1000);
@@ -1060,10 +1060,10 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
case EVENT_CHECK_MORTAR:
if (_controller.SummonCreatures(SLOT_MORTAR_1, Is25ManRaid() ? SLOT_MORTAR_4 : SLOT_MORTAR_2))
{
- if (_rocketeersYellCooldown < time(nullptr))
+ if (_rocketeersYellCooldown < GameTime::GetGameTime())
{
Talk(SAY_SAURFANG_ROCKETEERS);
- _rocketeersYellCooldown = time(nullptr) + 5;
+ _rocketeersYellCooldown = GameTime::GetGameTime() + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1000);
@@ -1122,7 +1122,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
_controller.SetTransport(creature->GetTransport());
me->SetRegenerateHealth(false);
me->m_CombatDistance = 70.0f;
- _firstMageCooldown = time(nullptr) + 60;
+ _firstMageCooldown = GameTime::GetGameTime() + 60;
_riflemanYellCooldown = time_t(0);
_mortarYellCooldown = time_t(0);
}
@@ -1132,7 +1132,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
ScriptedAI::InitializeAI();
_events.Reset();
- _firstMageCooldown = time(nullptr) + 60;
+ _firstMageCooldown = GameTime::GetGameTime() + 60;
_riflemanYellCooldown = time_t(0);
_mortarYellCooldown = time_t(0);
}
@@ -1184,7 +1184,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
}
else if (action == ACTION_SPAWN_MAGE)
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
if (_firstMageCooldown > now)
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
else
@@ -1322,10 +1322,10 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
case EVENT_CHECK_RIFLEMAN:
if (_controller.SummonCreatures(SLOT_RIFLEMAN_1, Is25ManRaid() ? SLOT_RIFLEMAN_8 : SLOT_RIFLEMAN_4))
{
- if (_riflemanYellCooldown < time(nullptr))
+ if (_riflemanYellCooldown < GameTime::GetGameTime())
{
Talk(SAY_MURADIN_RIFLEMAN);
- _riflemanYellCooldown = time(nullptr) + 5;
+ _riflemanYellCooldown = GameTime::GetGameTime() + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1000);
@@ -1333,10 +1333,10 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
case EVENT_CHECK_MORTAR:
if (_controller.SummonCreatures(SLOT_MORTAR_1, Is25ManRaid() ? SLOT_MORTAR_4 : SLOT_MORTAR_2))
{
- if (_mortarYellCooldown < time(nullptr))
+ if (_mortarYellCooldown < GameTime::GetGameTime())
{
Talk(SAY_MURADIN_MORTAR);
- _mortarYellCooldown = time(nullptr) + 5;
+ _mortarYellCooldown = GameTime::GetGameTime() + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1000);
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
index c4d14660962..b3adec78b5b 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
@@ -16,6 +16,7 @@
*/
#include "ScriptMgr.h"
+#include "GameTime.h"
#include "InstanceScript.h"
#include "vault_of_archavon.h"
@@ -64,13 +65,13 @@ class instance_vault_of_archavon : public InstanceMapScript
switch (type)
{
case DATA_ARCHAVON:
- ArchavonDeath = time(nullptr);
+ ArchavonDeath = GameTime::GetGameTime();
break;
case DATA_EMALON:
- EmalonDeath = time(nullptr);
+ EmalonDeath = GameTime::GetGameTime();
break;
case DATA_KORALON:
- KoralonDeath = time(nullptr);
+ KoralonDeath = GameTime::GetGameTime();
break;
default:
return true;
diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp
index 1a79f4b98b2..fa25ca58d37 100644
--- a/src/server/scripts/Northrend/zone_wintergrasp.cpp
+++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp
@@ -22,6 +22,7 @@
#include "DB2Stores.h"
#include "GameObject.h"
#include "GameObjectAI.h"
+#include "GameTime.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "ScriptedCreature.h"
@@ -309,7 +310,7 @@ class npc_wg_queue : public CreatureScript
else
{
uint32 timer = wintergrasp->GetTimer() / 1000;
- player->SendUpdateWorldState(4354, time(nullptr) + timer);
+ player->SendUpdateWorldState(4354, GameTime::GetGameTime() + timer);
if (timer < 15 * MINUTE)
{
AddGossipItemFor(player, GOSSIP_ICON_CHAT, player->GetSession()->GetTrinityString(WG_NPCQUEUE_TEXTOPTION_JOIN), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 5ead906130d..81e169db811 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -2386,7 +2386,7 @@ class spell_item_crystal_prison_dummy_dnd : public SpellScript
if (Creature* target = GetHitCreature())
if (target->isDead() && !target->IsPet())
{
- GetCaster()->SummonGameObject(OBJECT_IMPRISONED_DOOMGUARD, *target, QuaternionData::fromEulerAnglesZYX(target->GetOrientation(), 0.0f, 0.0f), uint32(target->GetRespawnTime()-time(nullptr)));
+ GetCaster()->SummonGameObject(OBJECT_IMPRISONED_DOOMGUARD, *target, QuaternionData::fromEulerAnglesZYX(target->GetOrientation(), 0.0f, 0.0f), uint32(target->GetRespawnTime() - GameTime::GetGameTime()));
target->DespawnOrUnsummon();
}
}
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 2b4b568fa57..c69226f2587 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -140,7 +140,7 @@ class spell_pal_ardent_defender : public SpellScriptLoader
int32 healAmount = int32(victim->CountPctFromMaxHealth(static_cast<uint32>(lroundf(_healPct * defenseFactor))));
victim->CastCustomSpell(victim, PAL_SPELL_ARDENT_DEFENDER_HEAL, &healAmount, nullptr, nullptr, true, nullptr, aurEff);
- victim->ToPlayer()->AddSpellCooldown(PAL_SPELL_ARDENT_DEFENDER_HEAL, 0, time(nullptr) + 120);
+ victim->ToPlayer()->AddSpellCooldown(PAL_SPELL_ARDENT_DEFENDER_HEAL, 0, GameTime::GetGameTime() + 120);
}
else if (remainingHealth < int32(allowedHealth))
{
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index d3c4a244816..cf4be0e3e3e 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -1786,7 +1786,7 @@ public:
void DamageTaken(Unit* doneBy, uint32& damage) override
{
AddThreat(doneBy, float(damage)); // just to create threat reference
- _damageTimes[doneBy->GetGUID()] = time(nullptr);
+ _damageTimes[doneBy->GetGUID()] = GameTime::GetGameTime();
damage = 0;
}
@@ -1806,7 +1806,7 @@ public:
{
case EVENT_TD_CHECK_COMBAT:
{
- time_t now = time(nullptr);
+ time_t now = GameTime::GetGameTime();
for (std::unordered_map<ObjectGuid, time_t>::iterator itr = _damageTimes.begin(); itr != _damageTimes.end();)
{
// If unit has not dealt damage to training dummy for 5 seconds, remove him from combat