diff --git a/zone/client.cpp b/zone/client.cpp index 060979f1a..30146d82f 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -9585,11 +9585,11 @@ void Client::UpdateExpeditionInfoAndLockouts() } Expedition* Client::CreateExpedition( - std::string zone_name, uint32 version, uint32 duration, - std::string expedition_name, uint32 min_players, uint32 max_players, bool has_replay_timer) + std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, + uint32 min_players, uint32 max_players, bool has_replay_timer, bool disable_messages) { DynamicZone dz_instance{ zone_name, version, duration, DynamicZoneType::Expedition }; - ExpeditionRequest request{ expedition_name, min_players, max_players, has_replay_timer }; + ExpeditionRequest request{ expedition_name, min_players, max_players, has_replay_timer, disable_messages }; return Expedition::TryCreate(this, dz_instance, request); } diff --git a/zone/client.h b/zone/client.h index df65b6b16..63c0a1d2b 100644 --- a/zone/client.h +++ b/zone/client.h @@ -1119,7 +1119,7 @@ public: void AddNewExpeditionLockout(const std::string& expedition_name, const std::string& event_name, uint32_t duration); Expedition* CreateExpedition( std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, - uint32 min_players, uint32 max_players, bool has_replay_timer = false); + uint32 min_players, uint32 max_players, bool has_replay_timer = false, bool disable_messages = false); Expedition* GetExpedition() const; uint32 GetExpeditionID() const { return m_expedition_id; } const ExpeditionLockoutTimer* GetExpeditionLockout( diff --git a/zone/expedition_request.cpp b/zone/expedition_request.cpp index 4ec6a4846..e123611cb 100644 --- a/zone/expedition_request.cpp +++ b/zone/expedition_request.cpp @@ -38,12 +38,14 @@ struct ExpeditionRequestConflict }; ExpeditionRequest::ExpeditionRequest( - std::string expedition_name, uint32_t min_players, uint32_t max_players, bool has_replay_timer + std::string expedition_name, uint32_t min_players, uint32_t max_players, + bool has_replay_timer, bool disable_messages ) : m_expedition_name(expedition_name), m_min_players(min_players), m_max_players(max_players), - m_has_replay_timer(has_replay_timer) + m_has_replay_timer(has_replay_timer), + m_disable_messages(disable_messages) { } @@ -288,11 +290,18 @@ bool ExpeditionRequest::CheckMembersForConflicts(MySQLRequestResult& results, bo void ExpeditionRequest::SendLeaderMessage( uint16_t chat_type, uint32_t string_id, const std::initializer_list& parameters) { - Client::SendCrossZoneMessageString(m_leader, m_leader_name, chat_type, string_id, parameters); + if (!m_disable_messages) + { + Client::SendCrossZoneMessageString(m_leader, m_leader_name, chat_type, string_id, parameters); + } } void ExpeditionRequest::SendLeaderMemberInExpedition(const std::string& member_name, bool is_solo) { + if (m_disable_messages) { + return; + } + if (is_solo) { SendLeaderMessage(Chat::Red, EXPEDITION_YOU_BELONG); @@ -307,7 +316,7 @@ void ExpeditionRequest::SendLeaderMemberInExpedition(const std::string& member_n void ExpeditionRequest::SendLeaderMemberReplayLockout( const std::string& member_name, const ExpeditionLockoutTimer& lockout, bool is_solo) { - if (lockout.GetSecondsRemaining() <= 0) + if (m_disable_messages || lockout.GetSecondsRemaining() <= 0) { return; } @@ -330,7 +339,7 @@ void ExpeditionRequest::SendLeaderMemberReplayLockout( void ExpeditionRequest::SendLeaderMemberEventLockout( const std::string& member_name, const ExpeditionLockoutTimer& lockout) { - if (lockout.GetSecondsRemaining() <= 0) + if (m_disable_messages || lockout.GetSecondsRemaining() <= 0) { return; } diff --git a/zone/expedition_request.h b/zone/expedition_request.h index 5970e69e5..8cedf6392 100644 --- a/zone/expedition_request.h +++ b/zone/expedition_request.h @@ -37,7 +37,9 @@ struct ExpeditionMember; class ExpeditionRequest { public: - ExpeditionRequest(std::string expedition_name, uint32_t min_players, uint32_t max_players, bool has_replay_timer); + ExpeditionRequest( + std::string expedition_name, uint32_t min_players, uint32_t max_players, + bool has_replay_timer, bool disable_messages = false); bool Validate(Client* requester); @@ -69,6 +71,7 @@ private: uint32_t m_min_players = 0; uint32_t m_max_players = 0; bool m_check_event_lockouts = true; + bool m_disable_messages = false; bool m_has_replay_timer = false; std::string m_expedition_name; std::string m_leader_name; diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index 7ad1b9bec..24659a6ba 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -1656,6 +1656,11 @@ Lua_Expedition Lua_Client::CreateExpedition(std::string zone_name, uint32 versio return self->CreateExpedition(zone_name, version, duration, expedition_name, min_players, max_players, has_replay_timer); } +Lua_Expedition Lua_Client::CreateExpedition(std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, uint32 min_players, uint32 max_players, bool has_replay_timer, bool disable_messages) { + Lua_Safe_Call_Class(Lua_Expedition); + return self->CreateExpedition(zone_name, version, duration, expedition_name, min_players, max_players, has_replay_timer, disable_messages); +} + Lua_Expedition Lua_Client::GetExpedition() { Lua_Safe_Call_Class(Lua_Expedition); return self->GetExpedition(); @@ -2036,6 +2041,7 @@ luabind::scope lua_register_client() { .def("GetClientMaxLevel", (int(Lua_Client::*)(void))&Lua_Client::GetClientMaxLevel) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32))&Lua_Client::CreateExpedition) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32, bool))&Lua_Client::CreateExpedition) + .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32, bool, bool))&Lua_Client::CreateExpedition) .def("GetExpedition", (Lua_Expedition(Lua_Client::*)(void))&Lua_Client::GetExpedition) .def("GetExpeditionLockouts", (luabind::object(Lua_Client::*)(lua_State* L))&Lua_Client::GetExpeditionLockouts) .def("GetExpeditionLockouts", (luabind::object(Lua_Client::*)(lua_State* L, std::string))&Lua_Client::GetExpeditionLockouts) diff --git a/zone/lua_client.h b/zone/lua_client.h index fec1f60fc..47a0ae355 100644 --- a/zone/lua_client.h +++ b/zone/lua_client.h @@ -341,6 +341,7 @@ public: Lua_Expedition CreateExpedition(std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, uint32 min_players, uint32 max_players); Lua_Expedition CreateExpedition(std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, uint32 min_players, uint32 max_players, bool has_replay_timer); + Lua_Expedition CreateExpedition(std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, uint32 min_players, uint32 max_players, bool has_replay_timer, bool disable_messages); Lua_Expedition GetExpedition(); luabind::object GetExpeditionLockouts(lua_State* L); luabind::object GetExpeditionLockouts(lua_State* L, std::string expedition_name);