diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index ff683c6ce..1bed432c1 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -793,8 +793,12 @@ void Client::CompleteConnect() /* This sub event is for if a player logs in for the first time since entering world. */ if (firstlogon == 1) { - parse->EventPlayer(EVENT_CONNECT, this, "", 0); RecordPlayerEventLog(PlayerEvent::WENT_ONLINE, PlayerEvent::EmptyEvent{}); + + if (parse->PlayerHasQuestSub(EVENT_CONNECT)) { + parse->EventPlayer(EVENT_CONNECT, this, "", 0); + } + /* QS: PlayerLogConnectDisconnect */ if (RuleB(QueryServ, PlayerLogConnectDisconnect)) { std::string event_desc = StringFormat("Connect :: Logged into zoneid:%i instid:%i", GetZoneID(), GetInstanceID()); diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 21d6f80a0..c18e42ebd 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -184,9 +184,12 @@ bool Client::Process() { SetDynamicZoneMemberStatus(DynamicZoneMemberStatus::Offline); - parse->EventPlayer(EVENT_DISCONNECT, this, "", 0); RecordPlayerEventLog(PlayerEvent::WENT_OFFLINE, PlayerEvent::EmptyEvent{}); + if (parse->PlayerHasQuestSub(EVENT_DISCONNECT)) { + parse->EventPlayer(EVENT_DISCONNECT, this, "", 0); + } + return false; //delete client } @@ -694,9 +697,12 @@ void Client::OnDisconnect(bool hard_disconnect) { if (MyRaid) MyRaid->MemberZoned(this); - parse->EventPlayer(EVENT_DISCONNECT, this, "", 0); RecordPlayerEventLog(PlayerEvent::WENT_OFFLINE, PlayerEvent::EmptyEvent{}); + if (parse->PlayerHasQuestSub(EVENT_DISCONNECT)) { + parse->EventPlayer(EVENT_DISCONNECT, this, "", 0); + } + /* QS: PlayerLogConnectDisconnect */ if (RuleB(QueryServ, PlayerLogConnectDisconnect)){ std::string event_desc = StringFormat("Disconnect :: in zoneid:%i instid:%i", GetZoneID(), GetInstanceID());