diff --git a/aurorastation.dme b/aurorastation.dme index c6fbbec6875..bea5f9f4fb0 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1835,12 +1835,12 @@ #include "code\modules\mob\living\carbon\metroid\update_icons.dm" #include "code\modules\mob\living\parasite\meme.dm" #include "code\modules\mob\living\parasite\meme_captive.dm" +#include "code\modules\mob\living\silicon\computer.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\laws.dm" #include "code\modules\mob\living\silicon\login.dm" #include "code\modules\mob\living\silicon\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" -#include "code\modules\mob\living\silicon\subystems.dm" #include "code\modules\mob\living\silicon\ai\ai.dm" #include "code\modules\mob\living\silicon\ai\ai_movement.dm" #include "code\modules\mob\living\silicon\ai\death.dm" @@ -1956,10 +1956,12 @@ #include "code\modules\modular_computers\computers\modular_computer\variables.dm" #include "code\modules\modular_computers\computers\subtypes\dev_console.dm" #include "code\modules\modular_computers\computers\subtypes\dev_laptop.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_silicon.dm" #include "code\modules\modular_computers\computers\subtypes\dev_tablet.dm" #include "code\modules\modular_computers\computers\subtypes\dev_telescreen.dm" #include "code\modules\modular_computers\computers\subtypes\preset_console.dm" #include "code\modules\modular_computers\computers\subtypes\preset_laptop.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_silicon.dm" #include "code\modules\modular_computers\computers\subtypes\preset_tablet.dm" #include "code\modules\modular_computers\computers\subtypes\preset_telescreen.dm" #include "code\modules\modular_computers\file_system\computer_file.dm" diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 32ba09fbbcd..f16b6bac055 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -176,11 +176,14 @@ #define NTNETSPEED_DOS_AMPLIFICATION 5 // Multiplier for Denial of Service program. Resulting load on NTNet relay is this multiplied by NTNETSPEED of the device // Program bitflags -#define PROGRAM_ALL 15 #define PROGRAM_CONSOLE 1 #define PROGRAM_LAPTOP 2 #define PROGRAM_TABLET 4 #define PROGRAM_TELESCREEN 8 +#define PROGRAM_SILICON 16 + +#define PROGRAM_ALL (PROGRAM_CONSOLE | PROGRAM_LAPTOP | PROGRAM_TABLET | PROGRAM_TELESCREEN | PROGRAM_SILICON) +#define PROGRAM_ALL_REGULAR (PROGRAM_CONSOLE | PROGRAM_LAPTOP | PROGRAM_TABLET | PROGRAM_TELESCREEN) #define PROGRAM_STATE_KILLED 0 #define PROGRAM_STATE_BACKGROUND 1 diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 6625499ae8f..ffcc44a0533 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -1,12 +1,14 @@ /datum/hud/proc/ai_hud() other = list() + mymob:computer.screen_loc = ui_ai_crew_monitor + mymob:computer.layer = SCREEN_LAYER + adding = list( new /obj/screen/ai/core, new /obj/screen/ai/camera_list, new /obj/screen/ai/camera_track, new /obj/screen/ai/camera_light, - new /obj/screen/ai/crew_monitoring, new /obj/screen/ai/crew_manifest, new /obj/screen/ai/alerts, new /obj/screen/ai/announcement, @@ -18,7 +20,8 @@ new /obj/screen/ai/view_image, new /obj/screen/ai/sensor_aug, new /obj/screen/ai/move_up, - new /obj/screen/ai/move_down + new /obj/screen/ai/move_down, + mymob:computer ) mymob.client.screen += adding + other diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 4730ee5271a..a17ea657c13 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -10,6 +10,11 @@ var/obj/screen/robot_inventory var/obj/screen/using + if(!isrobot(mymob)) + return + + var/mob/living/silicon/robot/r = mymob + //Radio using = new /obj/screen() using.name = "radio" @@ -24,15 +29,15 @@ var/obj/screen/robot_inventory using = new /obj/screen/module/one() src.adding += using - mymob:inv1 = using + r.inv1 = using using = new /obj/screen/module/two() src.adding += using - mymob:inv2 = using + r.inv2 = using using = new /obj/screen/module/three() src.adding += using - mymob:inv3 = using + r.inv3 = using //End of module select @@ -48,11 +53,11 @@ var/obj/screen/robot_inventory action_intent = using //Cell - mymob:cells = new /obj/screen() - mymob:cells.icon = 'icons/mob/screen/robot.dmi' - mymob:cells.icon_state = "charge-empty" - mymob:cells.name = "cell" - mymob:cells.screen_loc = ui_toxin + r.cells = new /obj/screen() + r.cells.icon = 'icons/mob/screen/robot.dmi' + r.cells.icon_state = "charge-empty" + r.cells.name = "cell" + r.cells.screen_loc = ui_toxin //Health mymob.healths = new /obj/screen() @@ -92,23 +97,6 @@ var/obj/screen/robot_inventory robot_inventory.screen_loc = ui_borg_inventory //Temp - mymob.bodytemp = new /obj/screen() - mymob.bodytemp.icon_state = "temp0" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - - - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen/robot.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen/robot.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire mymob.pullin = new /obj/screen() mymob.pullin.icon = 'icons/mob/screen/robot.dmi' @@ -136,6 +124,11 @@ var/obj/screen/robot_inventory mymob.zone_sel.cut_overlays() mymob.zone_sel.add_overlay(image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]")) + // Computer device hud + + r.computer.screen_loc = ui_oxygen + r.computer.layer = SCREEN_LAYER + //Handle the gun settings buttons mymob.gun_setting_icon = new /obj/screen/gun/mode(null) @@ -145,7 +138,18 @@ var/obj/screen/robot_inventory mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, robot_inventory, mymob.gun_setting_icon) + mymob.client.screen += list( + mymob.throw_icon, + mymob.zone_sel, + mymob.hands, + mymob.healths, + r.cells, + mymob.pullin, + mymob.blind, + mymob.flash, + robot_inventory, + mymob.gun_setting_icon, + r.computer) mymob.client.screen += src.adding + src.other return diff --git a/code/_onclick/hud/screen_object_types/ai_screen_objs.dm b/code/_onclick/hud/screen_object_types/ai_screen_objs.dm index 4e516c21c49..2a9ed69a894 100644 --- a/code/_onclick/hud/screen_object_types/ai_screen_objs.dm +++ b/code/_onclick/hud/screen_object_types/ai_screen_objs.dm @@ -80,16 +80,6 @@ var/mob/living/silicon/ai/AI = usr AI.toggle_camera_light() -/obj/screen/ai/crew_monitoring - name = "Crew Monitoring" - icon_state = "crew_monitor" - screen_loc = ui_ai_crew_monitor - -/obj/screen/ai/crew_monitoring/Click() - if (isAI(usr)) - var/mob/living/silicon/ai/AI = usr - AI.subsystem_crew_monitor() - /obj/screen/ai/crew_manifest name = "Show Crew Manifest" icon_state = "manifest" diff --git a/code/modules/mob/living/silicon/subystems.dm b/code/modules/mob/living/silicon/computer.dm similarity index 52% rename from code/modules/mob/living/silicon/subystems.dm rename to code/modules/mob/living/silicon/computer.dm index aaf5450c556..2084653e677 100644 --- a/code/modules/mob/living/silicon/subystems.dm +++ b/code/modules/mob/living/silicon/computer.dm @@ -1,11 +1,9 @@ /mob/living/silicon var/register_alarms = 1 var/datum/nano_module/alarm_monitor/all/alarm_monitor - var/datum/nano_module/atmos_control/atmos_control - var/datum/nano_module/crew_monitor/crew_monitor var/datum/nano_module/law_manager/law_manager - var/datum/nano_module/power_monitor/power_monitor var/datum/nano_module/rcon/rcon + var/obj/item/modular_computer/silicon/computer /mob/living/silicon/ai var/datum/nano_module/computer_ntnetmonitor/ntnet_monitor @@ -13,18 +11,16 @@ /mob/living/silicon var/list/silicon_subsystems = list( /mob/living/silicon/proc/subsystem_alarm_monitor, - /mob/living/silicon/proc/subsystem_law_manager + /mob/living/silicon/proc/subsystem_law_manager, + /mob/living/silicon/proc/computer_interact ) /mob/living/silicon/ai silicon_subsystems = list( /mob/living/silicon/proc/subsystem_alarm_monitor, - /mob/living/silicon/proc/subsystem_atmos_control, - /mob/living/silicon/proc/subsystem_crew_monitor, /mob/living/silicon/proc/subsystem_law_manager, - /mob/living/silicon/proc/subsystem_power_monitor, - /mob/living/silicon/proc/subsystem_rcon, - /mob/living/silicon/ai/proc/subsystem_ntnet_monitor + /mob/living/silicon/ai/proc/subsystem_ntnet_monitor, + /mob/living/silicon/proc/computer_interact ) /mob/living/silicon/robot/syndicate @@ -32,38 +28,21 @@ silicon_subsystems = list(/mob/living/silicon/proc/subsystem_law_manager) /mob/living/silicon/Destroy() - qdel(alarm_monitor) - alarm_monitor = null - - qdel(atmos_control) - atmos_control = null - - qdel(crew_monitor) - crew_monitor = null - - qdel(law_manager) - law_manager = null - - qdel(power_monitor) - power_monitor = null - - qdel(rcon) - rcon = null + QDEL_NULL(alarm_monitor) + QDEL_NULL(law_manager) + QDEL_NULL(computer) return ..() /mob/living/silicon/ai/Destroy() - qdel(ntnet_monitor) - ntnet_monitor = null + QDEL_NULL(ntnet_monitor) return ..() /mob/living/silicon/proc/init_subsystems() + computer = new/obj/item/modular_computer/silicon/preset(src) alarm_monitor = new(src) - atmos_control = new(src) - crew_monitor = new(src) law_manager = new(src) - power_monitor = new(src) rcon = new(src) if(!register_alarms) @@ -77,6 +56,15 @@ ..() ntnet_monitor = new(src) +/**************** +* Computer * +*****************/ +/mob/living/silicon/proc/computer_interact() + set name = "Open Computer Interface" + set category = "Subystems" + + computer.attack_self(src) + /******************** * Alarm Monitor * ********************/ @@ -86,24 +74,6 @@ alarm_monitor.ui_interact(usr, state = self_state) -/******************** -* Atmos Control * -********************/ -/mob/living/silicon/proc/subsystem_atmos_control() - set category = "Subystems" - set name = "Atmospherics Control" - - atmos_control.ui_interact(usr, state = self_state) - -/******************** -* Crew Monitor * -********************/ -/mob/living/silicon/proc/subsystem_crew_monitor() - set category = "Subystems" - set name = "Crew Monitor" - - crew_monitor.ui_interact(usr, state = self_state) - /**************** * Law Manager * ****************/ @@ -120,22 +90,4 @@ set name = "NTNet Monitoring" set category = "Subystems" - ntnet_monitor.ui_interact(usr, state = conscious_state) - -/******************** -* Power Monitor * -********************/ -/mob/living/silicon/proc/subsystem_power_monitor() - set category = "Subystems" - set name = "Power Monitor" - - power_monitor.ui_interact(usr, state = self_state) - -/************ -* RCON * -************/ -/mob/living/silicon/proc/subsystem_rcon() - set category = "Subystems" - set name = "RCON" - - rcon.ui_interact(usr, state = self_state) + ntnet_monitor.ui_interact(usr, state = conscious_state) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index e2907702841..41a4fd8ee0d 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -186,7 +186,6 @@ var/global/list/robot_modules = list( name = "medical robot module" channels = list("Medical" = 1) networks = list(NETWORK_MEDICAL) - subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) can_be_pushed = 0 sprites = list( "Basic" = "robotmedi", @@ -337,7 +336,6 @@ var/global/list/robot_modules = list( name = "engineering robot module" channels = list("Engineering" = 1) networks = list(NETWORK_ENGINEERING) - subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor) supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack) sprites = list( "Basic" = "robotengi", @@ -771,7 +769,6 @@ var/global/list/robot_modules = list( name = "combat robot module" channels = list("Security" = 1) networks = list(NETWORK_SECURITY) - subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) sprites = list("Roller" = "droid-combat") can_be_pushed = 0 supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack) @@ -977,10 +974,6 @@ var/global/list/robot_modules = list( "Response Team" = 1, "AI Private" = 1 ) - subsystems = list( - /mob/living/silicon/proc/subsystem_crew_monitor, - /mob/living/silicon/proc/subsystem_power_monitor - ) sprites = list("Roller" = "droid-combat") //TMP can_be_pushed = 0 diff --git a/code/modules/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm index f1c7bf1c10b..d41b428760a 100644 --- a/code/modules/modular_computers/computers/modular_computer/core.dm +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -31,7 +31,7 @@ else idle_threads.Remove(P) - working = hard_drive && processor_unit && damage < broken_damage && (apc_power(0) || battery_power(0)) + working = hard_drive && processor_unit && damage < broken_damage && computer_use_power() check_update_ui_need() if (working && enabled && world.time > ambience_last_played + 30 SECONDS && prob(3)) @@ -125,7 +125,7 @@ else to_chat(user, "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again.") return - if(processor_unit && (apc_power(0) || battery_power(0))) // Battery-run and charged or non-battery but powered by APC. + if(processor_unit && computer_use_power()) // Battery-run and charged or non-battery but powered by APC. if(issynth) to_chat(user, "You send an activation signal to \the [src], turning it on") else diff --git a/code/modules/modular_computers/computers/modular_computer/power.dm b/code/modules/modular_computers/computers/modular_computer/power.dm index 1da2910bcda..2a0416258ef 100644 --- a/code/modules/modular_computers/computers/modular_computer/power.dm +++ b/code/modules/modular_computers/computers/modular_computer/power.dm @@ -38,6 +38,16 @@ A.use_power(power_usage, EQUIP) return TRUE + +// Tries to use power in general (Abstraction) +/obj/item/modular_computer/proc/computer_use_power(var/power_usage = 0) + // First tries to charge from an APC, if APC is unavailable switches to battery power. If neither works the computer fails. + if(apc_power(power_usage)) + return TRUE + if(battery_power(power_usage)) + return TRUE + return FALSE + // Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged /obj/item/modular_computer/proc/handle_power() var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage @@ -47,13 +57,8 @@ power_usage += H.power_usage last_power_usage = power_usage - // First tries to charge from an APC, if APC is unavailable switches to battery power. If neither works the computer fails. - if(apc_power(power_usage)) - if (power_has_failed) - power_has_failed = FALSE - update_icon() - return - if(battery_power(power_usage)) + + if(computer_use_power(power_usage)) if (power_has_failed) power_has_failed = FALSE update_icon() diff --git a/code/modules/modular_computers/computers/modular_computer/ui.dm b/code/modules/modular_computers/computers/modular_computer/ui.dm index 49d02d8dadb..d9b18021e05 100644 --- a/code/modules/modular_computers/computers/modular_computer/ui.dm +++ b/code/modules/modular_computers/computers/modular_computer/ui.dm @@ -5,7 +5,7 @@ if(ui) ui.close() return - if(!apc_power(0) && !battery_power(0)) + if(!computer_use_power()) if(ui) ui.close() return diff --git a/code/modules/modular_computers/computers/subtypes/dev_silicon.dm b/code/modules/modular_computers/computers/subtypes/dev_silicon.dm new file mode 100644 index 00000000000..c9ebdd4594c --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/dev_silicon.dm @@ -0,0 +1,48 @@ +/obj/item/modular_computer/silicon + name = "internal computing device" + desc = "A synthetic computer." + hardware_flag = PROGRAM_SILICON + icon_state_unpowered = "laptop-open" + icon = 'icons/obj/modular_laptop.dmi' + icon_state = "laptop-open" + icon_state_broken = "laptop-broken" + base_idle_power_usage = 5 + base_active_power_usage = 25 + max_hardware_size = 2 + max_damage = 50 + w_class = 3 + var/mob/living/silicon/computer_host // Thing that contains this computer. Used for silicon computers + +/obj/item/modular_computer/silicon/Initialize(mapload) + . = ..() + if(istype(loc, /mob/living/silicon)) + computer_host = loc + else + return + // Let's remove integrated verbs for ejecting things. + verbs -= /obj/item/modular_computer/verb/eject_ai + verbs -= /obj/item/modular_computer/verb/eject_id + verbs -= /obj/item/modular_computer/verb/eject_usb + +/obj/item/modular_computer/silicon/computer_use_power(power_usage) + // If we have host like AI, borg or pAI we handle there power + if(computer_host) + // If host is borg, we use power from it's cell, like anyone other module + if(istype(computer_host, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = computer_host + return R.cell_use_power(power_usage) + // If we are in AI or pAI we just don't botherwith power use. + return TRUE + else + // If we don't have host, then we let regular computer code handle power - like batteries and tesla coils + return ..() + +/obj/item/modular_computer/silicon/Destroy() + computer_host = null + return ..() + +/obj/item/modular_computer/silicon/Click(location, control, params) + if (!istype(usr, /mob/living/silicon) && host == usr) + return attack_self(usr) + return ..() + \ No newline at end of file diff --git a/code/modules/modular_computers/computers/subtypes/preset_silicon.dm b/code/modules/modular_computers/computers/subtypes/preset_silicon.dm new file mode 100644 index 00000000000..1c9c21d7df1 --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/preset_silicon.dm @@ -0,0 +1,14 @@ +/obj/item/modular_computer/silicon/preset + enrolled = 2 + +/obj/item/modular_computer/silicon/preset/install_default_hardware() + . = ..() + processor_unit = new/obj/item/computer_hardware/processor_unit(src) + hard_drive = new/obj/item/computer_hardware/hard_drive(src) + network_card = new/obj/item/computer_hardware/network_card(src) + + +/obj/item/modular_computer/silicon/preset/install_default_programs() + hard_drive.store_file(new /datum/computer_file/program/filemanager()) + hard_drive.store_file(new /datum/computer_file/program/ntnetdownload()) + hard_drive.remove_file(hard_drive.find_file_by_name("clientmanager")) diff --git a/code/modules/modular_computers/file_system/programs/engineering/_engineering.dm b/code/modules/modular_computers/file_system/programs/engineering/_engineering.dm index af3f21d8395..0cbd6c2a566 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/_engineering.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/_engineering.dm @@ -72,7 +72,7 @@ requires_ntnet = 1 network_destination = "atmospheric control system" requires_ntnet_feature = NTNET_SYSTEMCONTROL - usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP + usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP | PROGRAM_SILICON size = 17 color = LIGHT_COLOR_CYAN @@ -87,7 +87,7 @@ requires_ntnet = 1 network_destination = "RCON remote control system" requires_ntnet_feature = NTNET_SYSTEMCONTROL - usage_flags = PROGRAM_CONSOLE + usage_flags = PROGRAM_CONSOLE | PROGRAM_SILICON size = 19 color = LIGHT_COLOR_GREEN @@ -103,6 +103,6 @@ requires_ntnet = 1 network_destination = "APC Coordinator" requires_ntnet_feature = NTNET_SYSTEMCONTROL - usage_flags = PROGRAM_CONSOLE + usage_flags = PROGRAM_CONSOLE | PROGRAM_SILICON size = 9 color = LIGHT_COLOR_GREEN diff --git a/code/modules/modular_computers/file_system/programs/games/arcade.dm b/code/modules/modular_computers/file_system/programs/games/arcade.dm index 326786a8247..94bfef97865 100644 --- a/code/modules/modular_computers/file_system/programs/games/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/games/arcade.dm @@ -13,6 +13,7 @@ nanomodule_path = /datum/nano_module/arcade_classic/ // Path of relevant nano module. The nano module is defined further in the file. var/picked_enemy_name color = LIGHT_COLOR_BLUE + usage_flags = PROGRAM_ALL_REGULAR // Blatantly stolen and shortened version from arcade machines. Generates a random enemy name /datum/computer_file/program/game/arcade/proc/random_enemy_name() diff --git a/code/modules/modular_computers/file_system/programs/games/sudoku/sudoku.dm b/code/modules/modular_computers/file_system/programs/games/sudoku/sudoku.dm index f5a03605c90..922bfdcf49d 100644 --- a/code/modules/modular_computers/file_system/programs/games/sudoku/sudoku.dm +++ b/code/modules/modular_computers/file_system/programs/games/sudoku/sudoku.dm @@ -7,6 +7,7 @@ requires_ntnet = 0 // This particular program does not require NTNet network conectivity... available_on_ntnet = 1 // ... but we want it to be available for download. nanomodule_path = /datum/nano_module/program/sudoku // Path of relevant nano module. The nano module is defined further in the file. + usage_flags = PROGRAM_ALL_REGULAR /datum/nano_module/program/sudoku var/list/grid = null diff --git a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm index 46d65fd43d5..b33cacd9aee 100644 --- a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm +++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm @@ -8,7 +8,7 @@ requires_ntnet = 1 network_destination = "crew lifesigns monitoring system" size = 11 - usage_flags = PROGRAM_LAPTOP | PROGRAM_TELESCREEN | PROGRAM_CONSOLE + usage_flags = PROGRAM_LAPTOP | PROGRAM_TELESCREEN | PROGRAM_CONSOLE | PROGRAM_SILICON color = LIGHT_COLOR_CYAN /datum/computer_file/program/suit_sensors/ui_interact(mob/user) diff --git a/code/modules/modular_computers/file_system/programs/security/camera.dm b/code/modules/modular_computers/file_system/programs/security/camera.dm index 173a5eb9a7b..370acfe8237 100644 --- a/code/modules/modular_computers/file_system/programs/security/camera.dm +++ b/code/modules/modular_computers/file_system/programs/security/camera.dm @@ -36,6 +36,7 @@ requires_ntnet = 1 required_access_download = access_heads color = LIGHT_COLOR_ORANGE + usage_flags = PROGRAM_ALL_REGULAR /datum/nano_module/camera_monitor name = "Camera Monitoring program" diff --git a/html/changelogs/example copy.yml b/html/changelogs/example copy.yml new file mode 100644 index 00000000000..975c68037e8 --- /dev/null +++ b/html/changelogs/example copy.yml @@ -0,0 +1,5 @@ +author: Karolis2011 +delete-after: True +changes: + - rscadd: "Added integrated computer device to borgs, AIs and pAIs." + - rscdel: "Removed now reduandant subsystems."