diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 6b42ef30733..ba5825a084e 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -129,6 +129,7 @@ /obj/item/borg/upgrade/vtec, /obj/item/borg/upgrade/tasercooler, /obj/item/robot_parts/robot_component/jetpack, + /obj/item/borg/upgrade/combat, ), diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 70f5d7e226f..13868eb68e4 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -149,4 +149,20 @@ return 0 R.emagged = 1 - return 1 \ No newline at end of file + return 1 + +/obj/item/borg/upgrade/combat + name = "combat cyborg module" + desc = "Unlocks the combat cyborg module" + construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"glass"=15000,"gold"= 5000,"diamond" = 1000) + icon_state = "cyborg_upgrade3" + require_module = 0 + +/obj/item/borg/upgrade/combat/action(var/mob/living/silicon/robot/R) + if(..()) return 0 + + if(R.crisis_override == 1) + return 0 + + R.crisis_override = 1 + return 1 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a9b464129e5..dd5e2a37002 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -233,7 +233,7 @@ return var/list/modules = list() modules.Add(robot_module_types) - if(security_level == (SEC_LEVEL_RED || SEC_LEVEL_DELTA)) //There are no brakes in the combat module train. + if((crisis_override && security_level == SEC_LEVEL_RED) || security_level == SEC_LEVEL_DELTA) //no fun allowed anymore. src << "\red Crisis mode active. Combat module available." modules+="Combat" modtype = input("Please, select a module!", "Robot", null, null) in modules diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index 87514a5473b..ca096c11f00 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -70,6 +70,8 @@ dat += "
  • Grant Emergency Maintenance Access
  • " dat += "
  • Revoke Emergency Maintenance Access
  • " + dat += "
  • Cyborg Crisis Override
  • " + dat += "
  • Disable Cyborg Crisis Override
  • " dat += "" user << browse(dat, "window=keycard_auth;size=500x250") if(screen == 2) @@ -149,6 +151,12 @@ if("Revoke Emergency Maintenance Access") revoke_maint_all_access() feedback_inc("alert_keycard_auth_maintRevoke",1) + if("Cyborg Crisis Override") + cyborg_crisis_override() + feedback_inc("alert_keycard_auth_borgCrisis",1) + if("Disable Cyborg Crisis Override") + disable_cyborg_crisis_override() + feedback_inc("alert_keycard_auth_borgDisable",1) if("Emergency Response Team") if(is_ert_blocked()) usr << "\red All emergency response teams are dispatched and can not be called at this time." @@ -177,3 +185,15 @@ var/global/maint_all_access = 0 if(maint_all_access && src.check_access_list(list(access_maint_tunnels))) return 1 return ..(M) + +/proc/cyborg_crisis_override() + for(var/mob/living/silicon/robot/M in silicon_mob_list) + M.crisis_override = 1 + world << "Attention!" + world << "Cyborg crisis override has been activated, station bound cyborgs are allowed to select the combat module during code red." + +/proc/disable_cyborg_crisis_override() + for(var/mob/living/silicon/robot/M in silicon_mob_list) + M.crisis_override = 0 + world << "Attention!" + world << "Cyborg crisis override has been deactivated, station bound cyborgs are no longer allowed to select the combat module." diff --git a/html/changelogs/alberyk-PR-1104.yml b/html/changelogs/alberyk-PR-1104.yml new file mode 100644 index 00000000000..681807db7f0 --- /dev/null +++ b/html/changelogs/alberyk-PR-1104.yml @@ -0,0 +1,6 @@ +author: Alberyk + +delete-after: True + +changes: + - tweak: "Selecting the combat module as cyborgs now requires an event to be activated via the keycard authentication device, an upgrade from roboticis or code delta also triggers also allows it."