diff options
| author | jackpoz <giacomopoz@gmail.com> | 2017-12-10 12:39:37 +0100 |
|---|---|---|
| committer | funjoker <funjoker109@gmail.com> | 2021-04-15 05:53:27 +0200 |
| commit | e17e4e6f0700c7d950e1b2654c217ec8b28ae79e (patch) | |
| tree | 8d78ebf4f2d95c6a18075840f6d02b62b4c6fcad /src/server/game/Entities | |
| parent | 76b2d37259c8beb3cc1b698eb28fd7e068366724 (diff) | |
Core/Misc: Replace time(NULL) with GameTime::GetGameTime()
(cherry picked from commit 12701cb0c6c45eb105ad449eb9a56e76d84d691e)
Conflicts:
src/server/game/Achievements/AchievementMgr.cpp
src/server/game/AuctionHouse/AuctionHouseMgr.cpp
src/server/game/AuctionHouseBot/AuctionHouseBotBuyer.cpp
src/server/game/AuctionHouseBot/AuctionHouseBotSeller.cpp
src/server/game/Battlefield/Battlefield.cpp
src/server/game/Battlefield/Zones/BattlefieldWG.cpp
src/server/game/Battlegrounds/BattlegroundMgr.cpp
src/server/game/Calendar/CalendarMgr.h
src/server/game/DungeonFinding/LFGQueue.cpp
src/server/game/Entities/Corpse/Corpse.cpp
src/server/game/Entities/Creature/Creature.cpp
src/server/game/Entities/Item/Item.cpp
src/server/game/Entities/Pet/Pet.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Unit/Unit.cpp
src/server/game/Globals/ObjectMgr.cpp
src/server/game/Grids/ObjectGridLoader.cpp
src/server/game/Guilds/Guild.cpp
src/server/game/Handlers/AuctionHouseHandler.cpp
src/server/game/Handlers/BattlefieldHandler.cpp
src/server/game/Handlers/CalendarHandler.cpp
src/server/game/Handlers/CharacterHandler.cpp
src/server/game/Handlers/ChatHandler.cpp
src/server/game/Handlers/LFGHandler.cpp
src/server/game/Handlers/MailHandler.cpp
src/server/game/Handlers/MiscHandler.cpp
src/server/game/Handlers/MovementHandler.cpp
src/server/game/Handlers/PetHandler.cpp
src/server/game/Handlers/QueryHandler.cpp
src/server/game/Handlers/TicketHandler.cpp
src/server/game/Instances/InstanceSaveMgr.cpp
src/server/game/Server/WorldSession.cpp
src/server/game/Server/WorldSocket.cpp
src/server/game/Spells/Auras/SpellAuras.cpp
src/server/game/Tickets/TicketMgr.cpp
src/server/game/Tickets/TicketMgr.h
src/server/game/World/World.cpp
src/server/scripts/Commands/cs_gobject.cpp
src/server/scripts/Commands/cs_instance.cpp
src/server/scripts/Commands/cs_list.cpp
src/server/scripts/Northrend/zone_wintergrasp.cpp
src/server/scripts/Spells/spell_item.cpp
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Corpse/Corpse.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Corpse/Corpse.h | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 47 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 34 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 17 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Pet/Pet.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 70 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/RestMgr.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 |
11 files changed, 117 insertions, 88 deletions
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(); |
