diff --git a/src/packet/packet_hp.cpp b/src/packet/packet_hp.cpp index 0e50e98c..396baba1 100644 --- a/src/packet/packet_hp.cpp +++ b/src/packet/packet_hp.cpp @@ -21,6 +21,16 @@ PacketInfo PacketHP::getPacketInfo() const void PacketHP::handlePacket(AreaData *area, AOClient &client) const { + if (client.m_is_spectator) { + client.sendServerMessage("Spectators are blocked from using the judge controls."); + return; + } + + if (area->lockStatus() == AreaData::LockStatus::SPECTATABLE && !area->invited().contains(client.clientId()) && !client.checkPermission(ACLRole::BYPASS_LOCKS)) { + client.sendServerMessage("Spectators are blocked from using the judge controls."); + return; + } + if (client.m_is_wtce_blocked) { client.sendServerMessage("You are blocked from using the judge controls."); return; diff --git a/src/packet/packet_rt.cpp b/src/packet/packet_rt.cpp index 98eb5dab..77b367ee 100644 --- a/src/packet/packet_rt.cpp +++ b/src/packet/packet_rt.cpp @@ -20,6 +20,16 @@ PacketInfo PacketRT::getPacketInfo() const void PacketRT::handlePacket(AreaData *area, AOClient &client) const { + if (client.m_is_spectator) { + client.sendServerMessage("Spectators are blocked from using the judge controls."); + return; + } + + if (area->lockStatus() == AreaData::LockStatus::SPECTATABLE && !area->invited().contains(client.clientId()) && !client.checkPermission(ACLRole::BYPASS_LOCKS)) { + client.sendServerMessage("Spectators are blocked from using the judge controls."); + return; + } + if (client.m_is_wtce_blocked) { client.sendServerMessage("You are blocked from using the judge controls."); return;