From 8aaf750be1ee16a299016cf038bd84bd9b387544 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 4 Jun 2021 21:47:43 +0200 Subject: Core/Conditions: Implemented missing PlayerCondition columns - time and weather --- src/server/game/Conditions/ConditionMgr.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/server/game/Conditions/ConditionMgr.cpp') diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 0a328e20fa6..10717ff302d 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2855,7 +2855,19 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio return false; } - // TODO: time condition + 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(); + + if (GameTime::GetGameTime() < from || GameTime::GetGameTime() > to) + return false; + } if (condition->WorldStateExpressionID) { @@ -2867,7 +2879,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio return false; } - // TODO: weather condition + if (condition->WeatherID) + if (player->GetMap()->GetZoneWeather(player->GetZoneId()) != WeatherState(condition->WeatherID)) + return false; if (condition->Achievement[0]) { -- cgit v1.2.3