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