From d59b1b3d0b92bcd06000372e71509275f135627c Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sat, 29 Aug 2020 04:31:40 +0100 Subject: [PATCH 1/8] Borgs now get notified if their cover is unlocked --- code/modules/mob/living/silicon/robot/robot.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7f1a18ac22d..60cd3ab9c41 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -697,6 +697,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(allowed(W)) locked = !locked to_chat(user, "You [ locked ? "lock" : "unlock"] [src]'s interface.") + to_chat(src, "[user] [ locked ? "locked" : "unlocked"] your interface.") update_icons() else to_chat(user, "Access denied.") From 26edaf23480f50ce995017297df1a115e5a991b8 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sat, 29 Aug 2020 04:32:24 +0100 Subject: [PATCH 2/8] Borgs and AI can now Ctrl Click on a Fire Alarm to toggle it --- code/_onclick/ai.dm | 7 +++++++ code/_onclick/cyborg.dm | 3 +++ code/game/machinery/firealarm.dm | 3 +++ 3 files changed, 13 insertions(+) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index fbb04d4c021..16ff1e5c58f 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -223,6 +223,13 @@ /obj/machinery/ai_slipper/AIAltClick() //Dispenses liquid if on Activate() +/obj/machinery/firealarm/AICtrlClick() + if(enabled) + reset() + else + alarm() + return + // // Override AdjacentQuick for AltClicking // diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index f9e5cbf3e5a..e61b9bdc8b6 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -170,6 +170,9 @@ /obj/machinery/ai_slipper/BorgAltClick() //Dispenses liquid if on Activate() +/obj/machinery/firealarm/BorgCtrlClick() + AICtrlClick() + /* As with AI, these are not used in click code, because the code for robots is specific, not generic. diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index f12361f1664..1bbecf29d18 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -28,6 +28,7 @@ FIRE ALARM var/last_process = 0 var/wiresexposed = 0 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone + var/enabled = FALSE var/report_fire_alarms = TRUE // Should triggered fire alarms also trigger an actual alarm? var/show_alert_level = TRUE // Should fire alarms display the current alert level? @@ -294,6 +295,7 @@ FIRE ALARM for(var/obj/machinery/firealarm/FA in A) if(is_station_contact(z) && FA.report_fire_alarms) SSalarms.fire_alarm.clearAlarm(loc, FA) + enabled = FALSE /obj/machinery/firealarm/proc/alarm(var/duration = 0) if(!working) @@ -305,6 +307,7 @@ FIRE ALARM SSalarms.fire_alarm.triggerAlarm(loc, FA, duration) else A.fire_alert() // Manually trigger alarms if the alarm isn't reported + enabled = TRUE update_icon() From 9d4d90e9ac21f0c9e17fe65a602dcce21017dcb3 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sat, 29 Aug 2020 20:09:11 +0100 Subject: [PATCH 3/8] Adds module installation notification --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 60cd3ab9c41..c02544bcd59 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -714,7 +714,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!user.drop_item()) return if(U.action(src)) - to_chat(user, "You apply the upgrade to [src].") + user.visible_message("[user] applied the [U] to [src].", "You apply the [U] to [src].") U.forceMove(src) else to_chat(user, "Upgrade error.") From cda1885275cca5a0adcc3dca6cdb33ffed18a3f0 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sat, 29 Aug 2020 22:04:40 +0100 Subject: [PATCH 4/8] Allows ERT and Deathsquad borgs to lock their own covers --- .../modules/mob/living/silicon/robot/robot.dm | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c02544bcd59..382aea824c6 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -72,6 +72,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/list/req_access var/ident = 0 //var/list/laws = list() + var/list/special_laws = list(/datum/ai_laws/deathsquad, /datum/ai_laws/ert_override) var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list()) var/viewalerts = 0 var/modtype = "Default" @@ -468,6 +469,10 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( status_flags |= CANPUSH +/mob/living/silicon/robot/proc/has_special_laws() + if(is_type_in_list(laws, special_laws)) + return TRUE + //for borg hotkeys, here module refers to borg inv slot, not core module /mob/living/silicon/robot/verb/cmd_toggle_module(module as num) set name = "Toggle Module" @@ -910,16 +915,33 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( update_icons() return -/mob/living/silicon/robot/verb/unlock_own_cover() +/mob/living/silicon/robot/verb/toggle_own_cover() set category = "Robot Commands" - set name = "Unlock Cover" - set desc = "Unlocks your own cover if it is locked. You can not lock it again. A human will have to lock it for you." - if(locked) - switch(alert("You can not lock your cover again, are you sure?\n (You can still ask for a human to lock it)", "Unlock Own Cover", "Yes", "No")) - if("Yes") - locked = 0 - update_icons() - to_chat(usr, "You unlock your cover.") + set name = "Toggle Cover" + set desc = "Toggles the lock on your cover." + var/is_ert = has_special_laws() + //Standard borgs + if(!is_ert) + if(locked) + switch(alert("You can not lock your cover again, are you sure?\n (You can still ask for a human to lock it)", "Unlock Own Cover", "Yes", "No")) + if("Yes") + locked = 0 + update_icons() + to_chat(usr, "You unlock your cover.") + //Special borgs + else + if(locked) + switch(alert("Are you sure?", "Unlock Own Cover", "Yes", "No")) + if("Yes") + locked = 0 + update_icons() + to_chat(usr, "You unlock your cover.") + else + switch(alert("Are you sure?", "Lock Own Cover", "Yes", "No")) + if("Yes") + locked = 1 + update_icons() + to_chat(usr, "You lock your cover.") /mob/living/silicon/robot/attack_ghost(mob/user) if(wiresexposed) From 7e0315115bc6fe81f5c0101936cd21357285654a Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sun, 30 Aug 2020 07:58:14 +0100 Subject: [PATCH 5/8] Review changes --- .../modules/mob/living/silicon/robot/robot.dm | 46 ++++++++----------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 382aea824c6..1b5b88f9891 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -72,7 +72,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/list/req_access var/ident = 0 //var/list/laws = list() - var/list/special_laws = list(/datum/ai_laws/deathsquad, /datum/ai_laws/ert_override) var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list()) var/viewalerts = 0 var/modtype = "Default" @@ -86,6 +85,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/lockcharge //Used when locking down a borg to preserve cell charge var/speed = 0 //Cause sec borgs gotta go fast //No they dont! var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them. + var/can_lock_cover = FALSE //Used to set if a borg can re-lock its cover. var/has_camera = TRUE var/pdahide = 0 //Used to hide the borg from the messenger list var/tracking_entities = 0 //The number of known entities currently accessing the internal camera @@ -469,10 +469,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( status_flags |= CANPUSH -/mob/living/silicon/robot/proc/has_special_laws() - if(is_type_in_list(laws, special_laws)) - return TRUE - //for borg hotkeys, here module refers to borg inv slot, not core module /mob/living/silicon/robot/verb/cmd_toggle_module(module as num) set name = "Toggle Module" @@ -919,29 +915,20 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( set category = "Robot Commands" set name = "Toggle Cover" set desc = "Toggles the lock on your cover." - var/is_ert = has_special_laws() - //Standard borgs - if(!is_ert) - if(locked) - switch(alert("You can not lock your cover again, are you sure?\n (You can still ask for a human to lock it)", "Unlock Own Cover", "Yes", "No")) - if("Yes") - locked = 0 - update_icons() - to_chat(usr, "You unlock your cover.") - //Special borgs - else - if(locked) - switch(alert("Are you sure?", "Unlock Own Cover", "Yes", "No")) - if("Yes") - locked = 0 - update_icons() - to_chat(usr, "You unlock your cover.") - else - switch(alert("Are you sure?", "Lock Own Cover", "Yes", "No")) - if("Yes") - locked = 1 - update_icons() - to_chat(usr, "You lock your cover.") + + if(can_lock_cover) + if(alert("Are you sure?", locked ? "Unlock Cover" : "Lock Cover", "Yes", "No") == "Yes") + locked = !locked + update_icons() + to_chat(usr, "You [locked ? "lock" : "unlock"] your cover.") + return + if(!locked) + to_chat(usr, "You cannot lock your cover yourself. Find a robotocist.") + return + if(alert("You cannnot lock your own cover again. Are you sure?\n You will need a robotocist to re-lock you.", "Unlock Own Cover", "Yes", "No") == "Yes") + locked = !locked + update_icons() + to_chat(usr, "You unlock your cover.") /mob/living/silicon/robot/attack_ghost(mob/user) if(wiresexposed) @@ -1371,6 +1358,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( modtype = "Commando" faction = list("nanotrasen") is_emaggable = FALSE + can_lock_cover = TRUE default_cell_type = /obj/item/stock_parts/cell/bluespace /mob/living/silicon/robot/deathsquad/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null) @@ -1399,6 +1387,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( static_radio_channels = 1 allow_rename = FALSE weapons_unlock = TRUE + can_lock_cover = TRUE default_cell_type = /obj/item/stock_parts/cell/super var/eprefix = "Amber" @@ -1457,6 +1446,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( emp_protection = TRUE // Immunity to EMP, due to heavy shielding damage_protection = 20 // Reduce all incoming damage by this number. Very high in the case of /destroyer borgs, since it is an admin-only borg. xeno_disarm_chance = 10 + can_lock_cover = TRUE default_cell_type = /obj/item/stock_parts/cell/bluespace /mob/living/silicon/robot/destroyer/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null) From 6d9830d36dcee20ac829c9393db2083f46aa472e Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Mon, 31 Aug 2020 22:43:41 +0100 Subject: [PATCH 6/8] Fixes --- code/_onclick/ai.dm | 1 - code/modules/mob/living/silicon/robot/robot.dm | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 16ff1e5c58f..606773143fc 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -228,7 +228,6 @@ reset() else alarm() - return // // Override AdjacentQuick for AltClicking diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1b5b88f9891..f240f086db8 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -715,7 +715,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( if(!user.drop_item()) return if(U.action(src)) - user.visible_message("[user] applied the [U] to [src].", "You apply the [U] to [src].") + user.visible_message("[user] applied [U] to [src].", "You apply [U] to [src].") U.forceMove(src) else to_chat(user, "Upgrade error.") From 78333e094d452bde280695d789f9d50be95d2c1c Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Fri, 4 Sep 2020 06:33:56 +0100 Subject: [PATCH 7/8] Syndicate borgs can now lock their covers That is, nukie borgs. Not emagged borgs. --- code/modules/mob/living/silicon/robot/syndicate.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/syndicate.dm b/code/modules/mob/living/silicon/robot/syndicate.dm index f5b58696059..cfc6e1bd59d 100644 --- a/code/modules/mob/living/silicon/robot/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/syndicate.dm @@ -11,6 +11,7 @@ modtype = "Syndicate" req_access = list(ACCESS_SYNDICATE) ionpulse = 1 + can_lock_cover = TRUE lawchannel = "State" var/playstyle_string = "You are a Syndicate assault cyborg!
\ You are armed with powerful offensive tools to aid you in your mission: help the operatives secure the nuclear authentication disk. \ From df5586537872e3ec1504be64378b687f61ce1f12 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Sun, 13 Sep 2020 01:11:20 +0100 Subject: [PATCH 8/8] Fixes the fix --- code/modules/mob/living/silicon/robot/robot.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 55abedd1a74..37fc2d0ad6f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1442,7 +1442,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( ear_protection = 1 // Immunity to the audio part of flashbangs emp_protection = TRUE // Immunity to EMP, due to heavy shielding damage_protection = 20 // Reduce all incoming damage by this number. Very high in the case of /destroyer borgs, since it is an admin-only borg. - xeno_disarm_chance = 10 can_lock_cover = TRUE default_cell_type = /obj/item/stock_parts/cell/bluespace