Add option to disable expedition conflict messages

Add optional argument to CreateExpedition to disable conflict messages

Some live expeditions like anguish use a timeout to prevent excessive
leader conflict messages while still performing a creation request
This commit is contained in:
hg 2020-05-08 13:58:07 -04:00
parent 1819b7c23b
commit 78eb3be127
6 changed files with 29 additions and 10 deletions

View File

@ -9585,11 +9585,11 @@ void Client::UpdateExpeditionInfoAndLockouts()
} }
Expedition* Client::CreateExpedition( Expedition* Client::CreateExpedition(
std::string zone_name, uint32 version, uint32 duration, std::string zone_name, uint32 version, uint32 duration, std::string expedition_name,
std::string expedition_name, uint32 min_players, uint32 max_players, bool has_replay_timer) uint32 min_players, uint32 max_players, bool has_replay_timer, bool disable_messages)
{ {
DynamicZone dz_instance{ zone_name, version, duration, DynamicZoneType::Expedition }; 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); return Expedition::TryCreate(this, dz_instance, request);
} }

View File

@ -1119,7 +1119,7 @@ public:
void AddNewExpeditionLockout(const std::string& expedition_name, const std::string& event_name, uint32_t duration); void AddNewExpeditionLockout(const std::string& expedition_name, const std::string& event_name, uint32_t duration);
Expedition* CreateExpedition( Expedition* CreateExpedition(
std::string zone_name, uint32 version, uint32 duration, std::string expedition_name, 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; Expedition* GetExpedition() const;
uint32 GetExpeditionID() const { return m_expedition_id; } uint32 GetExpeditionID() const { return m_expedition_id; }
const ExpeditionLockoutTimer* GetExpeditionLockout( const ExpeditionLockoutTimer* GetExpeditionLockout(

View File

@ -38,12 +38,14 @@ struct ExpeditionRequestConflict
}; };
ExpeditionRequest::ExpeditionRequest( 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_expedition_name(expedition_name),
m_min_players(min_players), m_min_players(min_players),
m_max_players(max_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( void ExpeditionRequest::SendLeaderMessage(
uint16_t chat_type, uint32_t string_id, const std::initializer_list<std::string>& parameters) uint16_t chat_type, uint32_t string_id, const std::initializer_list<std::string>& 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) void ExpeditionRequest::SendLeaderMemberInExpedition(const std::string& member_name, bool is_solo)
{ {
if (m_disable_messages) {
return;
}
if (is_solo) if (is_solo)
{ {
SendLeaderMessage(Chat::Red, EXPEDITION_YOU_BELONG); SendLeaderMessage(Chat::Red, EXPEDITION_YOU_BELONG);
@ -307,7 +316,7 @@ void ExpeditionRequest::SendLeaderMemberInExpedition(const std::string& member_n
void ExpeditionRequest::SendLeaderMemberReplayLockout( void ExpeditionRequest::SendLeaderMemberReplayLockout(
const std::string& member_name, const ExpeditionLockoutTimer& lockout, bool is_solo) const std::string& member_name, const ExpeditionLockoutTimer& lockout, bool is_solo)
{ {
if (lockout.GetSecondsRemaining() <= 0) if (m_disable_messages || lockout.GetSecondsRemaining() <= 0)
{ {
return; return;
} }
@ -330,7 +339,7 @@ void ExpeditionRequest::SendLeaderMemberReplayLockout(
void ExpeditionRequest::SendLeaderMemberEventLockout( void ExpeditionRequest::SendLeaderMemberEventLockout(
const std::string& member_name, const ExpeditionLockoutTimer& lockout) const std::string& member_name, const ExpeditionLockoutTimer& lockout)
{ {
if (lockout.GetSecondsRemaining() <= 0) if (m_disable_messages || lockout.GetSecondsRemaining() <= 0)
{ {
return; return;
} }

View File

@ -37,7 +37,9 @@ struct ExpeditionMember;
class ExpeditionRequest class ExpeditionRequest
{ {
public: 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); bool Validate(Client* requester);
@ -69,6 +71,7 @@ private:
uint32_t m_min_players = 0; uint32_t m_min_players = 0;
uint32_t m_max_players = 0; uint32_t m_max_players = 0;
bool m_check_event_lockouts = true; bool m_check_event_lockouts = true;
bool m_disable_messages = false;
bool m_has_replay_timer = false; bool m_has_replay_timer = false;
std::string m_expedition_name; std::string m_expedition_name;
std::string m_leader_name; std::string m_leader_name;

View File

@ -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); 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_Expedition Lua_Client::GetExpedition() {
Lua_Safe_Call_Class(Lua_Expedition); Lua_Safe_Call_Class(Lua_Expedition);
return self->GetExpedition(); return self->GetExpedition();
@ -2036,6 +2041,7 @@ luabind::scope lua_register_client() {
.def("GetClientMaxLevel", (int(Lua_Client::*)(void))&Lua_Client::GetClientMaxLevel) .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))&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))&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("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))&Lua_Client::GetExpeditionLockouts)
.def("GetExpeditionLockouts", (luabind::object(Lua_Client::*)(lua_State* L, std::string))&Lua_Client::GetExpeditionLockouts) .def("GetExpeditionLockouts", (luabind::object(Lua_Client::*)(lua_State* L, std::string))&Lua_Client::GetExpeditionLockouts)

View File

@ -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);
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);
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(); Lua_Expedition GetExpedition();
luabind::object GetExpeditionLockouts(lua_State* L); luabind::object GetExpeditionLockouts(lua_State* L);
luabind::object GetExpeditionLockouts(lua_State* L, std::string expedition_name); luabind::object GetExpeditionLockouts(lua_State* L, std::string expedition_name);