From a89cd796d45e914314f78b98e6cbf8396b4722d2 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 26 Jan 2020 21:33:36 +0100 Subject: [PATCH] emergency shuttle console spam limiter. --- code/game/machinery/computer/communications.dm | 4 ++-- .../antagonists/nukeop/equipment/nuclearbomb.dm | 2 +- code/modules/shuttle/emergency.dm | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 17f17e8247..6a36c41997 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -95,7 +95,7 @@ I = pda.id if (I && istype(I)) if(ACCESS_CAPTAIN in I.access) - if(security_level_cd < world.time) + if(security_level_cd > world.time) to_chat(usr, "Security level protocols are currently on cooldown. Please stand by.") return var/old_level = GLOB.security_level @@ -379,7 +379,7 @@ if("ai-announce") make_announcement(usr, 1) if("ai-securitylevel") - if(security_level_cd < world.time) + if(security_level_cd > world.time) to_chat(usr, "Security level protocols are currently on cooldown. Please stand by.") return tmp_alertlevel = text2num( href_list["newalertlevel"] ) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 5818ba0001..8d98f24b1e 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -368,7 +368,7 @@ return timing = !timing if(timing) - if(nuclear_cooldown < world.time) + if(nuclear_cooldown > world.time) to_chat(usr, "[src]'s timer protocols are currently on cooldown, please stand by.") return previous_level = get_security_level() diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index c863e0e44a..96d1c04856 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -2,6 +2,8 @@ #define ENGINES_START_TIME 100 #define ENGINES_STARTED (SSshuttle.emergency.mode == SHUTTLE_IGNITING) #define IS_DOCKED (SSshuttle.emergency.mode == SHUTTLE_DOCKED || (ENGINES_STARTED)) +#define MAX_AUTH_INPUTS 6 + /obj/machinery/computer/emergency_shuttle name = "emergency shuttle console" @@ -10,6 +12,8 @@ icon_keyboard = "tech_key" var/auth_need = 3 var/list/authorized = list() + var/auth_cooldown //these two vars are used to quell spam. + var/auth_combo = 0 /obj/machinery/computer/emergency_shuttle/attackby(obj/item/I, mob/user,params) if(istype(I, /obj/item/card/id)) @@ -67,6 +71,13 @@ to_chat(user, "The access level of your card is not high enough.") return + if(auth_cooldown <= world.time) + auth_combo = 0 + + else if(auth_combo >= MAX_AUTH_INPUTS) + to_chat(user, "Authorizations controller lockdown engaged, please wait [CEILING(auth_coodown - world.time)] before trying again.") + return + var/old_len = authorized.len switch(action) @@ -91,6 +102,10 @@ minor_announce("[remaining] authorizations needed until shuttle is launched early", null, alert) if(repeal) minor_announce("Early launch authorization revoked, [remaining] authorizations needed") + auth_cooldown = world.time + 15 SECONDS + if(++auth_combo = MAX_AUTH_INPUTS) //C-c-combo breaker! + say("Authorization controller abuse detected, lockdown engaged.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) /obj/machinery/computer/emergency_shuttle/proc/authorize(mob/user, source) var/obj/item/card/id/ID = user.get_idcard(TRUE) @@ -567,3 +582,4 @@ #undef ENGINES_START_TIME #undef ENGINES_STARTED #undef IS_DOCKED +#undef MAX_AUTH_INPUTS