aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Conditions/ConditionMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-11-21 12:25:22 +0100
committerfunjoker <funjoker109@gmail.com>2023-12-01 23:28:35 +0100
commit070cd23b6cf2e985713b90455cb7f7c53535cbcf (patch)
treecfcd414ecc4d3ef05253140ce83897f693d6dcd3 /src/server/game/Conditions/ConditionMgr.cpp
parentb6e346eaf0ee9a1c0dc2c7977ac950b77c857ecf (diff)
Core/Calendar: Implement different timezone support for ingame calendar
Closes #8390 Closes #29427 (cherry picked from commit b888b1b09f71a8b8b4a9d45c804a1f164fb65ac3)
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 0c59309bbb7..a7a74704a5d 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -19,12 +19,12 @@
#include "AchievementMgr.h"
#include "AreaTrigger.h"
#include "AreaTriggerDataStore.h"
-#include "Battleground.h"
#include "BattlePetMgr.h"
+#include "Battleground.h"
#include "Containers.h"
#include "ConversationDataStore.h"
-#include "DatabaseEnv.h"
#include "DB2Stores.h"
+#include "DatabaseEnv.h"
#include "GameEventMgr.h"
#include "GameObject.h"
#include "GameTime.h"
@@ -32,8 +32,8 @@
#include "InstanceScenario.h"
#include "InstanceScript.h"
#include "Item.h"
-#include "LanguageMgr.h"
#include "LFGMgr.h"
+#include "LanguageMgr.h"
#include "Log.h"
#include "LootMgr.h"
#include "Map.h"
@@ -53,6 +53,7 @@
#include "World.h"
#include "WorldSession.h"
#include "WorldStateMgr.h"
+#include "WowTime.h"
#include <random>
#include <sstream>
@@ -3239,15 +3240,18 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio
if (condition->Time[0])
{
- ByteBuffer unpacker;
- unpacker << condition->Time[0];
- time_t from = unpacker.ReadPackedTime();
- unpacker.rpos(0);
- unpacker.wpos(0);
- unpacker << condition->Time[1];
- time_t to = unpacker.ReadPackedTime();
+ WowTime time0;
+ time0.SetPackedTime(condition->Time[0]);
+
+ if (condition->Time[1])
+ {
+ WowTime time1;
+ time1.SetPackedTime(condition->Time[1]);
- if (GameTime::GetGameTime() < from || GameTime::GetGameTime() > to)
+ if (!GameTime::GetWowTime()->IsInRange(time0, time1))
+ return false;
+ }
+ else if (*GameTime::GetWowTime() != time0)
return false;
}