diff options
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
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]) { |