From 16b3b5825907e4ee4e8f38b3f230676b6296f028 Mon Sep 17 00:00:00 2001 From: Neerti Date: Sun, 28 Apr 2019 22:06:27 -0400 Subject: [PATCH] [REVIEW] Ports Modular Computers from Baystation --- code/__defines/machinery.dm | 21 +- code/__defines/misc.dm | 28 + code/_helpers/_lists.dm | 2 + code/_helpers/text.dm | 49 + code/_macros.dm | 5 + code/_onclick/hud/fullscreen.dm | 16 + code/controllers/subsystems/nanoui.dm | 2 + code/datums/repositories/unique.dm | 70 + code/datums/uplink/stealth_items.dm | 5 - code/datums/wires/camera.dm | 3 - code/datums/wires/robot.dm | 2 - code/game/gamemodes/epidemic/epidemic.dm | 19 +- code/game/jobs/access.dm | 4 + code/game/jobs/access_datum.dm | 7 +- code/game/jobs/job/science.dm | 8 + code/game/jobs/job_controller.dm | 23 + code/game/machinery/camera/camera.dm | 71 +- code/game/machinery/camera/presets.dm | 6 +- .../game/machinery/computer/communications.dm | 7 + code/game/machinery/computer3/NTOS.dm | 233 -- code/game/machinery/computer3/bios.dm | 176 -- .../machinery/computer3/buildandrepair.dm | 303 -- code/game/machinery/computer3/component.dm | 230 -- code/game/machinery/computer3/computer.dm | 459 --- .../machinery/computer3/computer3_notes.dm | 34 - .../computer3/computers/HolodeckControl.dm | 245 -- .../computer3/computers/Operating.dm | 47 - .../machinery/computer3/computers/arcade.dm | 183 -- .../computer3/computers/atmos_alert.dm | 100 - .../machinery/computer3/computers/camera.dm | 352 --- .../computer3/computers/communications.dm | 422 --- .../machinery/computer3/computers/crew.dm | 76 - .../machinery/computer3/computers/customs.dm | 3 - .../game/machinery/computer3/computers/law.dm | 84 - .../machinery/computer3/computers/medical.dm | 512 ---- .../machinery/computer3/computers/power.dm | 48 - .../machinery/computer3/computers/prisoner.dm | 106 - .../machinery/computer3/computers/robot.dm | 210 -- .../machinery/computer3/computers/security.dm | 613 ---- .../machinery/computer3/computers/welcome.dm | 34 - code/game/machinery/computer3/file.dm | 166 -- code/game/machinery/computer3/laptop.dm | 183 -- code/game/machinery/computer3/lapvend.dm | 374 --- code/game/machinery/computer3/networking.dm | 243 -- code/game/machinery/computer3/program.dm | 404 --- .../game/machinery/computer3/program_disks.dm | 51 - code/game/machinery/computer3/server.dm | 32 - code/game/machinery/computer3/storage.dm | 181 -- code/game/machinery/machinery.dm | 6 + code/game/machinery/recharger.dm | 34 + .../game/objects/items/devices/holowarrant.dm | 110 + .../items/devices/uplink_random_lists.dm | 1 - .../circuitboards/machinery/research.dm | 10 +- code/modules/admin/verbs/randomverbs.dm | 12 +- code/modules/alarm/alarm_handler.dm | 5 + .../preference_setup/loadout/gear_tweaks.dm | 297 ++ .../loadout/loadout_utility.dm | 45 + code/modules/materials/material_recipes.dm | 6 + .../mob/living/carbon/human/human_defines.dm | 4 +- code/modules/mob/living/carbon/human/life.dm | 6 + code/modules/mob/living/life.dm | 4 + .../mob/living/silicon/robot/component.dm | 5 - code/modules/mob/mob_helpers.dm | 2 +- .../NTNet/NTNRC/conversation.dm | 65 + code/modules/modular_computers/NTNet/NTNet.dm | 184 ++ .../modular_computers/NTNet/NTNet_relay.dm | 136 + .../NTNet/emails/email_account.dm | 82 + .../NTNet/emails/email_message.dm | 32 + .../modules/modular_computers/_description.dm | 121 + .../computers/modular_computer/core.dm | 269 ++ .../computers/modular_computer/damage.dm | 55 + .../computers/modular_computer/hardware.dm | 139 + .../computers/modular_computer/interaction.dm | 200 ++ .../computers/modular_computer/power.dm | 51 + .../computers/modular_computer/ui.dm | 155 + .../computers/modular_computer/variables.dm | 53 + .../computers/status_icons.dmi | Bin 0 -> 818 bytes .../computers/subtypes/dev_console.dm | 18 + .../computers/subtypes/dev_laptop.dm | 37 + .../computers/subtypes/dev_tablet.dm | 16 + .../computers/subtypes/dev_telescreen.dm | 59 + .../computers/subtypes/preset_console.dm | 123 + .../computers/subtypes/preset_laptop.dm | 32 + .../computers/subtypes/preset_tablet.dm | 28 + .../computers/subtypes/preset_telescreen.dm | 14 + .../file_system/computer_file.dm | 39 + .../modular_computers/file_system/data.dm | 19 + .../file_system/news_article.dm | 24 + .../modular_computers/file_system/program.dm | 210 ++ .../file_system/program_events.dm | 18 + .../programs/antagonist/access_decrypter.dm | 129 + .../file_system/programs/antagonist/dos.dm | 108 + .../programs/antagonist/hacked_camera.dm | 39 + .../programs/antagonist/revelation.dm | 84 + .../file_system/programs/command/card.dm | 233 ++ .../file_system/programs/command/comm.dm | 326 +++ .../programs/engineering}/alarm_monitor.dm | 222 +- .../programs/engineering}/atmos_control.dm | 189 +- .../programs/engineering}/power_monitor.dm | 178 +- .../programs/engineering/rcon_console.dm} | 247 +- .../engineering/supermatter_monitor.dm | 132 + .../file_system/programs/generic/camera.dm | 186 ++ .../programs/generic/configurator.dm | 64 + .../programs/generic/email_client.dm | 499 ++++ .../programs/generic/file_browser.dm | 207 ++ .../file_system/programs/generic/game.dm | 152 + .../programs/generic/news_browser.dm | 131 + .../programs/generic/ntdownloader.dm | 200 ++ .../programs/generic/ntnrc_client.dm | 232 ++ .../programs/generic/nttransfer.dm | 185 ++ .../programs/generic/wordprocessor.dm | 235 ++ .../programs/medical/suit_sensors.dm} | 119 +- .../programs/research/email_administration.dm | 144 + .../programs/research/ntmonitor.dm | 102 + .../programs/security/digitalwarrant.dm | 143 + .../modular_computers/hardware/_hardware.dm | 87 + .../hardware/battery_module.dm | 79 + .../modular_computers/hardware/card_slot.dm | 18 + .../modular_computers/hardware/hard_drive.dm | 167 ++ .../hardware/nano_printer.dm | 77 + .../hardware/network_card.dm | 100 + .../hardware/portable_hard_drive.dm | 37 + .../hardware/processor_unit.dm | 46 + .../modular_computers/hardware/tesla_link.dm | 14 + .../modular_computers/laptop_vendor.dm | 308 ++ code/modules/nano/modules/human_appearance.dm | 2 +- code/modules/nano/modules/nano_module.dm | 62 +- code/modules/nano/nanoui.dm | 5 + code/modules/power/supermatter/supermatter.dm | 32 + code/modules/research/designs/circuits.dm | 7 + .../research/designs/modular_computer.dm | 233 ++ .../changelogs/Novacat - modularcomputers.yml | 39 + html/images/redntlogo.png | Bin 0 -> 5853 bytes icons/NTOS/airestore.png | Bin 3096 -> 0 bytes icons/NTOS/aiupload.png | Bin 3093 -> 0 bytes icons/NTOS/alerts.png | Bin 3041 -> 0 bytes icons/NTOS/battery_icons/batt_100.gif | Bin 102 -> 0 bytes icons/NTOS/battery_icons/batt_20.gif | Bin 200 -> 0 bytes icons/NTOS/battery_icons/batt_40.gif | Bin 123 -> 0 bytes icons/NTOS/battery_icons/batt_5.gif | Bin 279 -> 0 bytes icons/NTOS/battery_icons/batt_60.gif | Bin 122 -> 0 bytes icons/NTOS/battery_icons/batt_80.gif | Bin 120 -> 0 bytes icons/NTOS/battery_icons/batt_none.gif | Bin 132 -> 0 bytes icons/NTOS/borgcontrol.png | Bin 3154 -> 0 bytes icons/NTOS/borgupload.png | Bin 3040 -> 0 bytes icons/NTOS/camera.png | Bin 3298 -> 0 bytes icons/NTOS/cardcomp.png | Bin 3174 -> 0 bytes icons/NTOS/cloning.png | Bin 3050 -> 0 bytes icons/NTOS/comms.png | Bin 3157 -> 0 bytes icons/NTOS/copyfile.png | Bin 3030 -> 0 bytes icons/NTOS/deletefile.png | Bin 3008 -> 0 bytes icons/NTOS/drive.png | Bin 259 -> 0 bytes icons/NTOS/exocontrol.png | Bin 3355 -> 0 bytes icons/NTOS/file.png | Bin 2984 -> 0 bytes icons/NTOS/folder.png | Bin 259 -> 0 bytes icons/NTOS/foldermeta.png | Bin 350 -> 0 bytes icons/NTOS/genetics.png | Bin 3194 -> 0 bytes icons/NTOS/medical.png | Bin 3030 -> 0 bytes icons/NTOS/monitoring.png | Bin 3011 -> 0 bytes icons/NTOS/movefile.png | Bin 2985 -> 0 bytes icons/NTOS/ntos.png | Bin 67090 -> 0 bytes icons/NTOS/operating.png | Bin 2990 -> 0 bytes icons/NTOS/pda.png | Bin 2953 -> 0 bytes icons/NTOS/power.png | Bin 3055 -> 0 bytes icons/NTOS/prison.png | Bin 3117 -> 0 bytes icons/NTOS/program.png | Bin 2963 -> 0 bytes icons/NTOS/records.png | Bin 3069 -> 0 bytes icons/NTOS/research.png | Bin 3120 -> 0 bytes icons/NTOS/server.png | Bin 3195 -> 0 bytes icons/NTOS/tb_close.png | Bin 453 -> 0 bytes icons/NTOS/tcomms.png | Bin 3289 -> 0 bytes icons/effects/static.dmi | Bin 278709 -> 279027 bytes icons/mob/screen_full.dmi | Bin 1367919 -> 1576550 bytes icons/obj/device.dmi | Bin 71933 -> 72103 bytes icons/obj/modular_components.dmi | Bin 0 -> 3532 bytes icons/obj/modular_console.dmi | Bin 0 -> 31288 bytes icons/obj/modular_laptop.dmi | Bin 0 -> 28909 bytes icons/obj/modular_tablet.dmi | Bin 0 -> 8820 bytes icons/obj/modular_telescreen.dmi | Bin 0 -> 29216 bytes interface/skin.dmf | 148 + maps/southern_cross/southern_cross-1.dmm | 47 +- maps/southern_cross/southern_cross-6.dmm | 2503 +++++++++++++++++ maps/southern_cross/southern_cross_defines.dm | 1 + .../surface_submaps/wilderness/Manor1.dmm | 2 +- .../surface_submaps/wilderness/Rockybase.dmm | 232 +- maps/~map_system/maps.dm | 1 + nano/images/modular_computers/alarm_green.gif | Bin 0 -> 107 bytes nano/images/modular_computers/alarm_red.gif | Bin 0 -> 163 bytes nano/images/modular_computers/batt_100.gif | Bin 0 -> 173 bytes nano/images/modular_computers/batt_20.gif | Bin 0 -> 284 bytes nano/images/modular_computers/batt_40.gif | Bin 0 -> 185 bytes nano/images/modular_computers/batt_5.gif | Bin 0 -> 273 bytes nano/images/modular_computers/batt_60.gif | Bin 0 -> 166 bytes nano/images/modular_computers/batt_80.gif | Bin 0 -> 172 bytes nano/images/modular_computers/charging.gif | Bin 0 -> 160 bytes .../modular_computers/downloader_finished.gif | Bin 0 -> 130 bytes .../modular_computers/downloader_running.gif | Bin 0 -> 574 bytes nano/images/modular_computers/ntnrc_idle.gif | Bin 0 -> 113 bytes nano/images/modular_computers/ntnrc_new.gif | Bin 0 -> 181 bytes nano/images/modular_computers/power_norm.gif | Bin 0 -> 431 bytes nano/images/modular_computers/power_warn.gif | Bin 0 -> 485 bytes nano/images/modular_computers/sig_high.gif | Bin 0 -> 182 bytes nano/images/modular_computers/sig_lan.gif | Bin 0 -> 191 bytes nano/images/modular_computers/sig_low.gif | Bin 0 -> 179 bytes nano/images/modular_computers/sig_none.gif | Bin 0 -> 202 bytes nano/images/modular_computers/sig_warning.gif | Bin 0 -> 216 bytes nano/images/modular_computers/smmon_0.gif | Bin 0 -> 221 bytes nano/images/modular_computers/smmon_1.gif | Bin 0 -> 232 bytes nano/images/modular_computers/smmon_2.gif | Bin 0 -> 243 bytes nano/images/modular_computers/smmon_3.gif | Bin 0 -> 502 bytes nano/images/modular_computers/smmon_4.gif | Bin 0 -> 503 bytes nano/images/modular_computers/smmon_5.gif | Bin 0 -> 696 bytes nano/images/modular_computers/smmon_6.gif | Bin 0 -> 325 bytes nano/images/{ => status_icons}/c_charging.gif | Bin .../{ => status_icons}/c_discharging.gif | Bin nano/images/{ => status_icons}/c_max.gif | Bin nano/templates/access_decrypter.tmpl | 24 + nano/templates/arcade_classic.tmpl | 44 + nano/templates/computer_fabricator.tmpl | 70 + nano/templates/digitalwarrant.tmpl | 89 + nano/templates/email_administration.tmpl | 91 + nano/templates/email_client.tmpl | 183 ++ nano/templates/file_manager.tmpl | 58 + nano/templates/laptop_configuration.tmpl | 70 + nano/templates/laptop_mainscreen.tmpl | 8 + nano/templates/layout_default.tmpl | 37 + nano/templates/mod_communication.tmpl | 69 + .../mod_identification_computer.tmpl | 191 ++ nano/templates/mod_sec_camera.tmpl | 36 + nano/templates/mod_sec_camera_map_header.tmpl | 44 + nano/templates/news_browser.tmpl | 77 + nano/templates/ntnet_chat.tmpl | 66 + nano/templates/ntnet_dos.tmpl | 22 + nano/templates/ntnet_downloader.tmpl | 103 + nano/templates/ntnet_monitor.tmpl | 112 + nano/templates/ntnet_relay.tmpl | 32 + nano/templates/ntnet_transfer.tmpl | 94 + nano/templates/revelation.tmpl | 23 + nano/templates/supermatter_monitor.tmpl | 125 + nano/templates/word_processor.tmpl | 49 + news_articles/space_magazine_1.html | 135 + vorestation.dme | 73 +- 242 files changed, 13200 insertions(+), 6636 deletions(-) create mode 100644 code/datums/repositories/unique.dm delete mode 100644 code/game/machinery/computer3/NTOS.dm delete mode 100644 code/game/machinery/computer3/bios.dm delete mode 100644 code/game/machinery/computer3/buildandrepair.dm delete mode 100644 code/game/machinery/computer3/component.dm delete mode 100644 code/game/machinery/computer3/computer.dm delete mode 100644 code/game/machinery/computer3/computer3_notes.dm delete mode 100644 code/game/machinery/computer3/computers/HolodeckControl.dm delete mode 100644 code/game/machinery/computer3/computers/Operating.dm delete mode 100644 code/game/machinery/computer3/computers/arcade.dm delete mode 100644 code/game/machinery/computer3/computers/atmos_alert.dm delete mode 100644 code/game/machinery/computer3/computers/camera.dm delete mode 100644 code/game/machinery/computer3/computers/communications.dm delete mode 100644 code/game/machinery/computer3/computers/crew.dm delete mode 100644 code/game/machinery/computer3/computers/customs.dm delete mode 100644 code/game/machinery/computer3/computers/law.dm delete mode 100644 code/game/machinery/computer3/computers/medical.dm delete mode 100644 code/game/machinery/computer3/computers/power.dm delete mode 100644 code/game/machinery/computer3/computers/prisoner.dm delete mode 100644 code/game/machinery/computer3/computers/robot.dm delete mode 100644 code/game/machinery/computer3/computers/security.dm delete mode 100644 code/game/machinery/computer3/computers/welcome.dm delete mode 100644 code/game/machinery/computer3/file.dm delete mode 100644 code/game/machinery/computer3/laptop.dm delete mode 100644 code/game/machinery/computer3/lapvend.dm delete mode 100644 code/game/machinery/computer3/networking.dm delete mode 100644 code/game/machinery/computer3/program.dm delete mode 100644 code/game/machinery/computer3/program_disks.dm delete mode 100644 code/game/machinery/computer3/server.dm delete mode 100644 code/game/machinery/computer3/storage.dm create mode 100644 code/game/objects/items/devices/holowarrant.dm create mode 100644 code/modules/modular_computers/NTNet/NTNRC/conversation.dm create mode 100644 code/modules/modular_computers/NTNet/NTNet.dm create mode 100644 code/modules/modular_computers/NTNet/NTNet_relay.dm create mode 100644 code/modules/modular_computers/NTNet/emails/email_account.dm create mode 100644 code/modules/modular_computers/NTNet/emails/email_message.dm create mode 100644 code/modules/modular_computers/_description.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/core.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/damage.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/hardware.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/interaction.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/power.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/ui.dm create mode 100644 code/modules/modular_computers/computers/modular_computer/variables.dm create mode 100644 code/modules/modular_computers/computers/status_icons.dmi create mode 100644 code/modules/modular_computers/computers/subtypes/dev_console.dm create mode 100644 code/modules/modular_computers/computers/subtypes/dev_laptop.dm create mode 100644 code/modules/modular_computers/computers/subtypes/dev_tablet.dm create mode 100644 code/modules/modular_computers/computers/subtypes/dev_telescreen.dm create mode 100644 code/modules/modular_computers/computers/subtypes/preset_console.dm create mode 100644 code/modules/modular_computers/computers/subtypes/preset_laptop.dm create mode 100644 code/modules/modular_computers/computers/subtypes/preset_tablet.dm create mode 100644 code/modules/modular_computers/computers/subtypes/preset_telescreen.dm create mode 100644 code/modules/modular_computers/file_system/computer_file.dm create mode 100644 code/modules/modular_computers/file_system/data.dm create mode 100644 code/modules/modular_computers/file_system/news_article.dm create mode 100644 code/modules/modular_computers/file_system/program.dm create mode 100644 code/modules/modular_computers/file_system/program_events.dm create mode 100644 code/modules/modular_computers/file_system/programs/antagonist/access_decrypter.dm create mode 100644 code/modules/modular_computers/file_system/programs/antagonist/dos.dm create mode 100644 code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm create mode 100644 code/modules/modular_computers/file_system/programs/antagonist/revelation.dm create mode 100644 code/modules/modular_computers/file_system/programs/command/card.dm create mode 100644 code/modules/modular_computers/file_system/programs/command/comm.dm rename code/modules/{nano/modules => modular_computers/file_system/programs/engineering}/alarm_monitor.dm (66%) rename code/modules/{nano/modules => modular_computers/file_system/programs/engineering}/atmos_control.dm (79%) rename code/modules/{nano/modules => modular_computers/file_system/programs/engineering}/power_monitor.dm (60%) rename code/modules/{nano/modules/rcon.dm => modular_computers/file_system/programs/engineering/rcon_console.dm} (82%) create mode 100644 code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/camera.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/configurator.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/email_client.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/file_browser.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/game.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/news_browser.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/nttransfer.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/wordprocessor.dm rename code/modules/{nano/modules/crew_monitor.dm => modular_computers/file_system/programs/medical/suit_sensors.dm} (79%) create mode 100644 code/modules/modular_computers/file_system/programs/research/email_administration.dm create mode 100644 code/modules/modular_computers/file_system/programs/research/ntmonitor.dm create mode 100644 code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm create mode 100644 code/modules/modular_computers/hardware/_hardware.dm create mode 100644 code/modules/modular_computers/hardware/battery_module.dm create mode 100644 code/modules/modular_computers/hardware/card_slot.dm create mode 100644 code/modules/modular_computers/hardware/hard_drive.dm create mode 100644 code/modules/modular_computers/hardware/nano_printer.dm create mode 100644 code/modules/modular_computers/hardware/network_card.dm create mode 100644 code/modules/modular_computers/hardware/portable_hard_drive.dm create mode 100644 code/modules/modular_computers/hardware/processor_unit.dm create mode 100644 code/modules/modular_computers/hardware/tesla_link.dm create mode 100644 code/modules/modular_computers/laptop_vendor.dm create mode 100644 code/modules/research/designs/modular_computer.dm create mode 100644 html/changelogs/Novacat - modularcomputers.yml create mode 100644 html/images/redntlogo.png delete mode 100644 icons/NTOS/airestore.png delete mode 100644 icons/NTOS/aiupload.png delete mode 100644 icons/NTOS/alerts.png delete mode 100644 icons/NTOS/battery_icons/batt_100.gif delete mode 100644 icons/NTOS/battery_icons/batt_20.gif delete mode 100644 icons/NTOS/battery_icons/batt_40.gif delete mode 100644 icons/NTOS/battery_icons/batt_5.gif delete mode 100644 icons/NTOS/battery_icons/batt_60.gif delete mode 100644 icons/NTOS/battery_icons/batt_80.gif delete mode 100644 icons/NTOS/battery_icons/batt_none.gif delete mode 100644 icons/NTOS/borgcontrol.png delete mode 100644 icons/NTOS/borgupload.png delete mode 100644 icons/NTOS/camera.png delete mode 100644 icons/NTOS/cardcomp.png delete mode 100644 icons/NTOS/cloning.png delete mode 100644 icons/NTOS/comms.png delete mode 100644 icons/NTOS/copyfile.png delete mode 100644 icons/NTOS/deletefile.png delete mode 100644 icons/NTOS/drive.png delete mode 100644 icons/NTOS/exocontrol.png delete mode 100644 icons/NTOS/file.png delete mode 100644 icons/NTOS/folder.png delete mode 100644 icons/NTOS/foldermeta.png delete mode 100644 icons/NTOS/genetics.png delete mode 100644 icons/NTOS/medical.png delete mode 100644 icons/NTOS/monitoring.png delete mode 100644 icons/NTOS/movefile.png delete mode 100644 icons/NTOS/ntos.png delete mode 100644 icons/NTOS/operating.png delete mode 100644 icons/NTOS/pda.png delete mode 100644 icons/NTOS/power.png delete mode 100644 icons/NTOS/prison.png delete mode 100644 icons/NTOS/program.png delete mode 100644 icons/NTOS/records.png delete mode 100644 icons/NTOS/research.png delete mode 100644 icons/NTOS/server.png delete mode 100644 icons/NTOS/tb_close.png delete mode 100644 icons/NTOS/tcomms.png create mode 100644 icons/obj/modular_components.dmi create mode 100644 icons/obj/modular_console.dmi create mode 100644 icons/obj/modular_laptop.dmi create mode 100644 icons/obj/modular_tablet.dmi create mode 100644 icons/obj/modular_telescreen.dmi create mode 100644 nano/images/modular_computers/alarm_green.gif create mode 100644 nano/images/modular_computers/alarm_red.gif create mode 100644 nano/images/modular_computers/batt_100.gif create mode 100644 nano/images/modular_computers/batt_20.gif create mode 100644 nano/images/modular_computers/batt_40.gif create mode 100644 nano/images/modular_computers/batt_5.gif create mode 100644 nano/images/modular_computers/batt_60.gif create mode 100644 nano/images/modular_computers/batt_80.gif create mode 100644 nano/images/modular_computers/charging.gif create mode 100644 nano/images/modular_computers/downloader_finished.gif create mode 100644 nano/images/modular_computers/downloader_running.gif create mode 100644 nano/images/modular_computers/ntnrc_idle.gif create mode 100644 nano/images/modular_computers/ntnrc_new.gif create mode 100644 nano/images/modular_computers/power_norm.gif create mode 100644 nano/images/modular_computers/power_warn.gif create mode 100644 nano/images/modular_computers/sig_high.gif create mode 100644 nano/images/modular_computers/sig_lan.gif create mode 100644 nano/images/modular_computers/sig_low.gif create mode 100644 nano/images/modular_computers/sig_none.gif create mode 100644 nano/images/modular_computers/sig_warning.gif create mode 100644 nano/images/modular_computers/smmon_0.gif create mode 100644 nano/images/modular_computers/smmon_1.gif create mode 100644 nano/images/modular_computers/smmon_2.gif create mode 100644 nano/images/modular_computers/smmon_3.gif create mode 100644 nano/images/modular_computers/smmon_4.gif create mode 100644 nano/images/modular_computers/smmon_5.gif create mode 100644 nano/images/modular_computers/smmon_6.gif rename nano/images/{ => status_icons}/c_charging.gif (100%) rename nano/images/{ => status_icons}/c_discharging.gif (100%) rename nano/images/{ => status_icons}/c_max.gif (100%) create mode 100644 nano/templates/access_decrypter.tmpl create mode 100644 nano/templates/arcade_classic.tmpl create mode 100644 nano/templates/computer_fabricator.tmpl create mode 100644 nano/templates/digitalwarrant.tmpl create mode 100644 nano/templates/email_administration.tmpl create mode 100644 nano/templates/email_client.tmpl create mode 100644 nano/templates/file_manager.tmpl create mode 100644 nano/templates/laptop_configuration.tmpl create mode 100644 nano/templates/laptop_mainscreen.tmpl create mode 100644 nano/templates/mod_communication.tmpl create mode 100644 nano/templates/mod_identification_computer.tmpl create mode 100644 nano/templates/mod_sec_camera.tmpl create mode 100644 nano/templates/mod_sec_camera_map_header.tmpl create mode 100644 nano/templates/news_browser.tmpl create mode 100644 nano/templates/ntnet_chat.tmpl create mode 100644 nano/templates/ntnet_dos.tmpl create mode 100644 nano/templates/ntnet_downloader.tmpl create mode 100644 nano/templates/ntnet_monitor.tmpl create mode 100644 nano/templates/ntnet_relay.tmpl create mode 100644 nano/templates/ntnet_transfer.tmpl create mode 100644 nano/templates/revelation.tmpl create mode 100644 nano/templates/supermatter_monitor.tmpl create mode 100644 nano/templates/word_processor.tmpl create mode 100644 news_articles/space_magazine_1.html diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 95d4929acb..48babcae96 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -56,6 +56,9 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define NETWORK_TELECOM "Tcomms" #define NETWORK_THUNDER "Thunderdome" #define NETWORK_COMMUNICATORS "Communicators" +#define NETWORK_ALARM_ATMOS "Atmosphere Alarms" +#define NETWORK_ALARM_POWER "Power Alarms" +#define NETWORK_ALARM_FIRE "Fire Alarms" // Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them. var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret", NETWORK_COMMUNICATORS) @@ -69,14 +72,6 @@ var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret #define STAGE_FIVE 9 #define STAGE_SUPER 11 -// computer3 error codes, move lower in the file when it passes dev -Sayu -#define PROG_CRASH 0x1 // Generic crash. -#define MISSING_PERIPHERAL 0x2 // Missing hardware. -#define BUSTED_ASS_COMPUTER 0x4 // Self-perpetuating error. BAC will continue to crash forever. -#define MISSING_PROGRAM 0x8 // Some files try to automatically launch a program. This is that failing. -#define FILE_DRM 0x10 // Some files want to not be copied/moved. This is them complaining that you tried. -#define NETWORK_FAILURE 0x20 - // NanoUI flags #define STATUS_INTERACTIVE 2 // GREEN Visability #define STATUS_UPDATE 1 // ORANGE Visability @@ -106,6 +101,16 @@ var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret #define ATMOS_DEFAULT_VOLUME_MIXER 200 // L. #define ATMOS_DEFAULT_VOLUME_PIPE 70 // L. +// These are used by supermatter and supermatter monitor program, mostly for UI updating purposes. Higher should always be worse! +#define SUPERMATTER_ERROR -1 // Unknown status, shouldn't happen but just in case. +#define SUPERMATTER_INACTIVE 0 // No or minimal energy +#define SUPERMATTER_NORMAL 1 // Normal operation +#define SUPERMATTER_NOTIFY 2 // Ambient temp > 80% of CRITICAL_TEMPERATURE +#define SUPERMATTER_WARNING 3 // Ambient temp > CRITICAL_TEMPERATURE OR integrity damaged +#define SUPERMATTER_DANGER 4 // Integrity < 50% +#define SUPERMATTER_EMERGENCY 5 // Integrity < 25% +#define SUPERMATTER_DELAMINATING 6 // Pretty obvious. + //wIP - PORT ALL OF THESE TO SUBSYSTEMS AND GET RID OF THE WHOLE LIST PROCESS THING // Fancy-pants START/STOP_PROCESSING() macros that lets us custom define what the list is. #define START_PROCESSING_IN_LIST(DATUM, LIST) \ diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index c17e6d1594..7f9128a64f 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -113,6 +113,7 @@ #define MAX_RECORD_LENGTH 24576 #define MAX_LNAME_LEN 64 #define MAX_NAME_LEN 52 +#define MAX_TEXTFILE_LENGTH 128000 // 512GQ file // Event defines. #define EVENT_LEVEL_MUNDANE 1 @@ -191,6 +192,33 @@ #define BOMBCAP_HEAVY_RADIUS (max_explosion_range/2) #define BOMBCAP_LIGHT_RADIUS max_explosion_range #define BOMBCAP_FLASH_RADIUS (max_explosion_range*1.5) + // NTNet module-configuration values. Do not change these. If you need to add another use larger number (5..6..7 etc) +#define NTNET_SOFTWAREDOWNLOAD 1 // Downloads of software from NTNet +#define NTNET_PEERTOPEER 2 // P2P transfers of files between devices +#define NTNET_COMMUNICATION 3 // Communication (messaging) +#define NTNET_SYSTEMCONTROL 4 // Control of various systems, RCon, air alarm control, etc. + +// NTNet transfer speeds, used when downloading/uploading a file/program. +#define NTNETSPEED_LOWSIGNAL 0.25 // GQ/s transfer speed when the device is wirelessly connected and on Low signal +#define NTNETSPEED_HIGHSIGNAL 0.5 // GQ/s transfer speed when the device is wirelessly connected and on High signal +#define NTNETSPEED_ETHERNET 1.0 // GQ/s transfer speed when the device is using wired connection +#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_STATE_KILLED 0 +#define PROGRAM_STATE_BACKGROUND 1 +#define PROGRAM_STATE_ACTIVE 2 + +// Caps for NTNet logging. Less than 10 would make logging useless anyway, more than 500 may make the log browser too laggy. Defaults to 100 unless user changes it. +#define MAX_NTNET_LOGS 500 +#define MIN_NTNET_LOGS 10 + // Special return values from bullet_act(). Positive return values are already used to indicate the blocked level of the projectile. #define PROJECTILE_CONTINUE -1 //if the projectile should continue flying after calling bullet_act() diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index 553984330d..5e322e1928 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -756,3 +756,5 @@ proc/dd_sortedTextList(list/incoming) . = list() for(var/i in L) . |= i + +#define listequal(A, B) (A.len == B.len && !length(A^B)) diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index d4fa4a74bb..0343fe4249 100644 --- a/code/_helpers/text.dm +++ b/code/_helpers/text.dm @@ -331,6 +331,55 @@ proc/TextPreview(var/string,var/len=40) /proc/strip_improper(var/text) return replacetext(replacetext(text, "\proper", ""), "\improper", "") +/proc/pencode2html(t) + t = replacetext(t, "\n", "
") + t = replacetext(t, "\[center\]", "
") + t = replacetext(t, "\[/center\]", "
") + t = replacetext(t, "\[br\]", "
") + t = replacetext(t, "\[b\]", "") + t = replacetext(t, "\[/b\]", "") + t = replacetext(t, "\[i\]", "") + t = replacetext(t, "\[/i\]", "") + t = replacetext(t, "\[u\]", "") + t = replacetext(t, "\[/u\]", "") + t = replacetext(t, "\[time\]", "[stationtime2text()]") + t = replacetext(t, "\[date\]", "[stationdate2text()]") + t = replacetext(t, "\[large\]", "") + t = replacetext(t, "\[/large\]", "") + t = replacetext(t, "\[field\]", "") + t = replacetext(t, "\[h1\]", "

") + t = replacetext(t, "\[/h1\]", "

") + t = replacetext(t, "\[h2\]", "

") + t = replacetext(t, "\[/h2\]", "

") + t = replacetext(t, "\[h3\]", "

") + t = replacetext(t, "\[/h3\]", "

") + t = replacetext(t, "\[*\]", "
  • ") + t = replacetext(t, "\[hr\]", "
    ") + t = replacetext(t, "\[small\]", "") + t = replacetext(t, "\[/small\]", "") + t = replacetext(t, "\[list\]", "") + t = replacetext(t, "\[table\]", "") + t = replacetext(t, "\[/table\]", "
    ") + t = replacetext(t, "\[grid\]", "") + t = replacetext(t, "\[/grid\]", "
    ") + t = replacetext(t, "\[row\]", "") + t = replacetext(t, "\[cell\]", "") + t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[redlogo\]", "") + t = replacetext(t, "\[sglogo\]", "") + t = replacetext(t, "\[editorbr\]", "") + return t + +// Random password generator +/proc/GenerateKey() + //Feel free to move to Helpers. + var/newKey + newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") + newKey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") + newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") + return newKey + //Used for applying byonds text macros to strings that are loaded at runtime /proc/apply_text_macros(string) var/next_backslash = findtext(string, "\\") diff --git a/code/_macros.dm b/code/_macros.dm index 0af691a90c..3860f63434 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -11,6 +11,7 @@ #define log_world(message) world.log << message #define to_file(file_entry, source_var) file_entry << source_var #define from_file(file_entry, target_var) file_entry >> target_var +#define show_browser(target, browser_content, browser_name) target << browse(browser_content, browser_name) // From TG, might be useful to have. // Didn't port SEND_TEXT() since to_chat() appears to serve the same purpose. @@ -20,4 +21,8 @@ #define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE) +#define qdel_null(x) if(x) { qdel(x) ; x = null } + +#define random_id(key,min_id,max_id) uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id) + #define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") } diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 2a92ba20bc..7060451b27 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -108,6 +108,22 @@ screen_loc = "WEST,SOUTH to EAST,NORTH" icon_state = "druggy" +/obj/screen/fullscreen/noise + icon = 'icons/effects/static.dmi' + icon_state = "1 light" + screen_loc = ui_entire_screen + layer = FULLSCREEN_LAYER + +/obj/screen/fullscreen/scanline + icon = 'icons/effects/static.dmi' + icon_state = "scanlines" + screen_loc = ui_entire_screen + alpha = 50 + layer = FULLSCREEN_LAYER + +/obj/screen/fullscreen/fishbed + icon_state = "fishbed" + #undef FULLSCREEN_LAYER #undef BLIND_LAYER #undef DAMAGE_LAYER diff --git a/code/controllers/subsystems/nanoui.dm b/code/controllers/subsystems/nanoui.dm index b4ceee4d63..3c999cb5e2 100644 --- a/code/controllers/subsystems/nanoui.dm +++ b/code/controllers/subsystems/nanoui.dm @@ -12,6 +12,8 @@ SUBSYSTEM_DEF(nanoui) var/list/nano_asset_dirs = list(\ "nano/css/",\ "nano/images/",\ + "nano/images/status_icons/",\ + "nano/images/modular_computers/", "nano/js/",\ "nano/templates/"\ ) diff --git a/code/datums/repositories/unique.dm b/code/datums/repositories/unique.dm new file mode 100644 index 0000000000..a53111cb24 --- /dev/null +++ b/code/datums/repositories/unique.dm @@ -0,0 +1,70 @@ +var/repository/unique/uniqueness_repository = new() + +/repository/unique + var/list/generators + +/repository/unique/New() + ..() + generators = list() + +/repository/unique/proc/Generate() + var/generator_type = args[1] + var/datum/uniqueness_generator/generator = generators[generator_type] + if(!generator) + generator = new generator_type() + generators[generator_type] = generator + var/list/generator_args = args.Copy() // Cannot cut args directly, BYOND complains about it being readonly. + generator_args -= generator_type + return generator.Generate(arglist(generator_args)) + +/datum/uniqueness_generator/proc/Generate() + return + +/datum/uniqueness_generator/id_sequential + var/list/ids_by_key + +/datum/uniqueness_generator/id_sequential/New() + ..() + ids_by_key = list() + +/datum/uniqueness_generator/id_sequential/Generate(var/key, var/default_id = 100) + var/id = ids_by_key[key] + if(id) + id++ + else + id = default_id + + ids_by_key[key] = id + . = id + +/datum/uniqueness_generator/id_random + var/list/ids_by_key + +/datum/uniqueness_generator/id_random/New() + ..() + ids_by_key = list() + +/datum/uniqueness_generator/id_random/Generate(var/key, var/min, var/max) + var/list/ids = ids_by_key[key] + if(!ids) + ids = list() + ids_by_key[key] = ids + + if(ids.len >= (max - min) + 1) + error("Random ID limit reached for key [key].") + ids.Cut() + + if(ids.len >= 0.6 * ((max-min) + 1)) // if more than 60% of possible ids used + . = list() + for(var/i = min to max) + if(i in ids) + continue + . += i + var/id = pick(.) + ids += id + return id + else + do + . = rand(min, max) + while(. in ids) + ids += . diff --git a/code/datums/uplink/stealth_items.dm b/code/datums/uplink/stealth_items.dm index 23e0593cad..57d379d3fc 100644 --- a/code/datums/uplink/stealth_items.dm +++ b/code/datums/uplink/stealth_items.dm @@ -33,8 +33,3 @@ name = "Voice Changer" item_cost = 15 path = /obj/item/clothing/mask/gas/voice - -/datum/uplink_item/item/stealth_items/camera_floppy - name = "Camera Network Access - Floppy" - item_cost = 15 - path = /obj/item/weapon/disk/file/cameras/syndicate diff --git a/code/datums/wires/camera.dm b/code/datums/wires/camera.dm index 35bb07cbc5..1724b9469c 100644 --- a/code/datums/wires/camera.dm +++ b/code/datums/wires/camera.dm @@ -57,9 +57,6 @@ var/const/CAMERA_WIRE_NOTHING2 = 32 var/new_range = (C.view_range == initial(C.view_range) ? C.short_range : initial(C.view_range)) C.setViewRange(new_range) - if(CAMERA_WIRE_POWER) - C.kick_viewers() // Kicks anyone watching the camera - if(CAMERA_WIRE_LIGHT) C.light_disabled = !C.light_disabled diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index 6a1e96e18a..3f48c656ba 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -39,7 +39,6 @@ var/const/BORG_WIRE_CAMERA = 16 if (BORG_WIRE_CAMERA) if(!isnull(R.camera) && !R.scrambledcodes) R.camera.status = mended - R.camera.kick_viewers() // Will kick anyone who is watching the Cyborg's camera. if(BORG_WIRE_LAWCHECK) //Forces a law update if the borg is set to receive them. Since an update would happen when the borg checks its laws anyway, not much use, but eh if (R.lawupdate) @@ -59,7 +58,6 @@ var/const/BORG_WIRE_CAMERA = 16 if (BORG_WIRE_CAMERA) if(!isnull(R.camera) && R.camera.can_use() && !R.scrambledcodes) - R.camera.kick_viewers() // Kick anyone watching the Cyborg's camera R.visible_message("[R]'s camera lense focuses loudly.") R << "Your camera lense focuses loudly." diff --git a/code/game/gamemodes/epidemic/epidemic.dm b/code/game/gamemodes/epidemic/epidemic.dm index b6e4146a9c..e6b4f9d456 100644 --- a/code/game/gamemodes/epidemic/epidemic.dm +++ b/code/game/gamemodes/epidemic/epidemic.dm @@ -46,14 +46,8 @@ intercepttext += "* A cure is to be researched immediately, but NanoTrasen intellectual property must be respected. To prevent knowledge of [virus_name] from falling into unauthorized hands, all medical staff that work with the pathogen must be enhanced with a NanoTrasen loyality implant.
    " - for (var/obj/machinery/computer/communications/comm in world) - if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) - var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper" - intercept.info = intercepttext - - comm.messagetitle.Add("CentCom CONFIDENTIAL REPORT") - comm.messagetext.Add(intercepttext) + //New message handling won't hurt if someone enables epidemic + post_comm_message("Cent. Com. CONFIDENTIAL REPORT", intercepttext) world << sound('sound/AI/commandreport.ogg') @@ -68,14 +62,7 @@ intercepttext += "PATHOGEN [virus_name] IS STILL PRESENT ON [station_name()]. IN COMPLIANCE WITH NANOTRASEN LAWS FOR INTERSTELLAR SAFETY, EMERGENCY SAFETY MEASURES HAVE BEEN AUTHORIZED. ALL INFECTED CREW MEMBERS ON [station_name()] ARE TO BE NEUTRALIZED AND DISPOSED OF IN A MANNER THAT WILL DESTROY ALL TRACES OF THE PATHOGEN. FAILURE TO COMPLY WILL RESULT IN IMMEDIATE DESTRUCTION OF [station_name].
    " intercepttext += "CRUISER WILL ARRIVE IN [round(cruiser_seconds()/60)] MINUTES
    " - for (var/obj/machinery/computer/communications/comm in world) - if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) - var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper" - intercept.info = intercepttext - - comm.messagetitle.Add("CentCom CONFIDENTIAL REPORT") - comm.messagetext.Add(intercepttext) + post_comm_message("Cent. Com. CONFIDENTIAL REPORT", intercepttext) world << sound('sound/AI/commandreport.ogg') diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 519a1bd5a2..4ee64999fa 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -178,6 +178,10 @@ /proc/get_centcom_access_desc(A) return get_access_desc(A) +/proc/get_access_by_id(id) + var/list/AS = get_all_access_datums_by_id() + return AS[id] + /proc/get_all_jobs() var/list/all_jobs = list() var/list/all_datums = typesof(/datum/job) diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm index b63662cd86..084b54cb5c 100644 --- a/code/game/jobs/access_datum.dm +++ b/code/game/jobs/access_datum.dm @@ -256,7 +256,12 @@ desc = "Quartermaster" region = ACCESS_REGION_SUPPLY -// /var/const/free_access_id = 43 +/var/const/access_network = 42 +/datum/access/network + id = access_network + desc = "Station Network" + region = ACCESS_REGION_RESEARCH + // /var/const/free_access_id = 43 // /var/const/free_access_id = 44 diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index bbf4720dfd..f355b9538c 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -15,12 +15,20 @@ access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, +<<<<<<< HEAD access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva) //VOREStation Edit minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_eva) //VOREStation Edit alt_titles = list("Research Supervisor") +======= + access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network) + minimal_access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, + access_tox_storage, access_teleporter, access_sec_doors, + access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, + access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network) +>>>>>>> 2baef09... Merge pull request #6031 from Novacat/spriteadd minimum_character_age = 25 minimal_player_age = 14 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 8792a7ba35..b6251dc281 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -508,6 +508,29 @@ var/global/datum/controller/occupations/job_master if(job.req_admin_notify) H << "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp." + // EMAIL GENERATION + // Email addresses will be created under this domain name. Mostly for the looks. + var/domain = "freemail.nt" + var/sanitized_name = sanitize(replacetext(replacetext(lowertext(H.real_name), " ", "."), "'", "")) + var/complete_login = "[sanitized_name]@[domain]" + + // It is VERY unlikely that we'll have two players, in the same round, with the same name and branch, but still, this is here. + // If such conflict is encountered, a random number will be appended to the email address. If this fails too, no email account will be created. + if(ntnet_global.does_email_exist(complete_login)) + complete_login = "[sanitized_name][random_id(/datum/computer_file/data/email_account/, 100, 999)]@[domain]" + + // If even fallback login generation failed, just don't give them an email. The chance of this happening is astronomically low. + if(ntnet_global.does_email_exist(complete_login)) + to_chat(H, "You were not assigned an email address.") + H.mind.store_memory("You were not assigned an email address.") + else + var/datum/computer_file/data/email_account/EA = new/datum/computer_file/data/email_account() + EA.password = GenerateKey() + EA.login = complete_login + to_chat(H, "Your email account address is [EA.login] and the password is [EA.password]. This information has also been placed into your notes.") + H.mind.store_memory("Your email account address is [EA.login] and the password is [EA.password].") + // END EMAIL GENERATION + //Gives glasses to the vision impaired if(H.disabilities & NEARSIGHTED) var/equipped = H.equip_to_slot_or_del(new /obj/item/clothing/glasses/regular(H), slot_glasses) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index e8b845ca78..b3d5af5f3e 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -40,6 +40,24 @@ var/list/camera_computers_using_this = list() +/obj/machinery/camera/apply_visual(mob/living/carbon/human/M) + if(!M.client) + return + M.overlay_fullscreen("fishbed",/obj/screen/fullscreen/fishbed) + M.overlay_fullscreen("scanlines",/obj/screen/fullscreen/scanline) + M.overlay_fullscreen("whitenoise",/obj/screen/fullscreen/noise) + M.machine_visual = src + return 1 + +/obj/machinery/camera/remove_visual(mob/living/carbon/human/M) + if(!M.client) + return + M.clear_fullscreen("fishbed",0) + M.clear_fullscreen("scanlines") + M.clear_fullscreen("whitenoise") + M.machine_visual = null + return 1 + /obj/machinery/camera/New() wires = new(src) assembly = new(src) @@ -93,7 +111,6 @@ stat |= EMPED set_light(0) triggerCameraAlarm() - kick_viewers() update_icon() update_coverage() START_PROCESSING(SSobj, src) @@ -246,26 +263,25 @@ user = null if(choice != 1) - //legacy support, if choice is != 1 then just kick viewers without changing status - kick_viewers() - else - set_status(!src.status) - if (!(src.status)) - if(user) - visible_message(" [user] has deactivated [src]!") - else - visible_message(" [src] clicks and shuts down. ") - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - icon_state = "[initial(icon_state)]1" - add_hiddenprint(user) + return + + set_status(!src.status) + if (!(src.status)) + if(user) + visible_message(" [user] has deactivated [src]!") else - if(user) - visible_message(" [user] has reactivated [src]!") - else - visible_message(" [src] clicks and reactivates itself. ") - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - icon_state = initial(icon_state) - add_hiddenprint(user) + visible_message(" [src] clicks and shuts down. ") + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + icon_state = "[initial(icon_state)]1" + add_hiddenprint(user) + else + if(user) + visible_message(" [user] has reactivated [src]!") + else + visible_message(" [src] clicks and reactivates itself. ") + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + icon_state = initial(icon_state) + add_hiddenprint(user) /obj/machinery/camera/proc/take_damage(var/force, var/message) //prob(25) gives an average of 3-4 hits @@ -277,7 +293,6 @@ stat |= BROKEN wires.RandomCutAll() - kick_viewers() triggerCameraAlarm() update_icon() update_coverage() @@ -292,26 +307,12 @@ if (status != newstatus) status = newstatus update_coverage() - // now disconnect anyone using the camera - //Apparently, this will disconnect anyone even if the camera was re-activated. - //I guess that doesn't matter since they couldn't use it anyway? - kick_viewers() /obj/machinery/camera/check_eye(mob/user) if(!can_use()) return -1 if(isXRay()) return SEE_TURFS|SEE_MOBS|SEE_OBJS return 0 -//This might be redundant, because of check_eye() -/obj/machinery/camera/proc/kick_viewers() - for(var/mob/O in player_list) - if (istype(O.machine, /obj/machinery/computer/security)) - var/obj/machinery/computer/security/S = O.machine - if (S.current_camera == src) - O.unset_machine() - O.reset_view(null) - O << "The screen bursts into static." - /obj/machinery/camera/update_icon() if (!status || (stat & BROKEN)) icon_state = "[initial(icon_state)]1" diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index d4b29b217e..abd0434c5e 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -26,9 +26,9 @@ var/global/list/engineering_networks = list( NETWORK_ENGINE, NETWORK_ENGINEERING, NETWORK_ENGINEERING_OUTPOST, - "Atmosphere Alarms", - "Fire Alarms", - "Power Alarms") + NETWORK_ALARM_ATMOS, + NETWORK_ALARM_FIRE, + NETWORK_ALARM_POWER) /obj/machinery/camera/network/crescent network = list(NETWORK_CRESCENT) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 5aca29433b..8cd15a260c 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -531,6 +531,13 @@ message_admins("[key_name_admin(user)] has recalled the shuttle.", 1) return + +/proc/is_relay_online() + for(var/obj/machinery/telecomms/relay/M in world) + if(M.stat == 0) + return 1 + return 0 + /obj/machinery/computer/communications/proc/post_status(var/command, var/data1, var/data2) var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) diff --git a/code/game/machinery/computer3/NTOS.dm b/code/game/machinery/computer3/NTOS.dm deleted file mode 100644 index a9068a634f..0000000000 --- a/code/game/machinery/computer3/NTOS.dm +++ /dev/null @@ -1,233 +0,0 @@ -/* - The Big Bad NT Operating System -*/ - -/datum/file/program/ntos - name = "NanoTrasen Operating System" - extension = "prog" - active_state = "ntos" - var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer - var/fileop = "runfile" - -/* - Generate a basic list of files in the selected scope -*/ - -/datum/file/program/ntos/proc/list_files() - if(!computer || !current) return null - return current.files - - -/datum/file/program/ntos/proc/filegrid(var/list/filelist) - var/dat = "" - var/i = 0 - for(var/datum/file/F in filelist) - if(!F.hidden_file) - i++ - if(i==1) - dat += "" - if(i>= 6) - i = 0 - dat += "" - continue - dat += {" - "} - - dat += "
    -
    -
    - [F.name] -
    -
    " - return dat - -// -// I am separating this from filegrid so that I don't have to -// make metadata peripheral files -// -/datum/file/program/ntos/proc/desktop(var/peripheralop = "viewperipheral") - var/dat = "" - var/i = 0 - var/list/peripherals = list(computer.hdd,computer.floppy,computer.cardslot) - for(var/obj/item/part/computer/C in peripherals) - if(!istype(C)) continue - i++ - if(i==1) - dat += "" - if(i>= 6) - i = 0 - dat += "" - continue - dat += {" - "} - - dat += "
    - - \icon[C]
    - [C.name] -
    -
    " - return dat - - -/datum/file/program/ntos/proc/window(var/title,var/buttonbar,var/content) - return {" -
    -
    [title]
    -
    [buttonbar]
    -
    [content]
    -
    "} - -/datum/file/program/ntos/proc/buttonbar(var/type = 0) - switch(type) - if(0) // FILE OPERATIONS - return {""} - -/datum/file/program/ntos/interact() - if(!interactable()) - return - var/dat = {" - - - Operating System - - - -
    "} - - - dat += generate_status_bar() - var/list/files = list_files() - if(current) - dat +=window(current.name,buttonbar(),filegrid(files)) - else - dat += desktop() - - dat += "
    " - - usr << browse(dat, "window=\ref[computer];size=670x510") - onclose(usr, "\ref[computer]") - - // STATUS BAR - // Small 16x16 icons representing status of components, etc. - // Currently only used by battery icon - // TODO: Add more icons! -/datum/file/program/ntos/proc/generate_status_bar() - var/dat = "" - - // Battery level icon - switch(computer.check_battery_status()) - if(-1) - dat += "" - if(0 to 5) - dat += "" - if(6 to 20) - dat += "" - if(21 to 40) - dat += "" - if(41 to 60) - dat += "" - if(61 to 80) - dat += "" - if(81 to 100) - dat += "" - dat += "
    " - return dat - -/datum/file/program/ntos/Topic(href, list/href_list) - if(!interactable() || ..(href,href_list)) - return - - if("viewperipheral" in href_list) // open drive, show status of peripheral - var/obj/item/part/computer/C = locate(href_list["viewperipheral"]) in src.computer - if(!istype(C)) - return - - if(istype(C,/obj/item/part/computer/storage)) - current = C - interact() - return - // else ??? - if(istype(C,/obj/item/part/computer/cardslot)) - computer.cardslot.remove(usr) - interact() - return - - // distinct from close, this is the file dialog window - if("winclose" in href_list) - current = null - interact() - return - -#undef MAX_ROWS -#undef MAX_COLUMNS diff --git a/code/game/machinery/computer3/bios.dm b/code/game/machinery/computer3/bios.dm deleted file mode 100644 index c5b69e755b..0000000000 --- a/code/game/machinery/computer3/bios.dm +++ /dev/null @@ -1,176 +0,0 @@ -/* - Okay so my last effort to have a central BIOS function was interesting - but completely unmaintainable, I have scrapped it. - - The parts that were actually useful will be put here in functions instead. - If we want a central bios function we can add one that just indexes them. - That should at least allow sensible debugging. -*/ - -/obj/machinery/computer3 - - /* - interactable(user): performs all standard sanity checks - Call in topic() and interact(). - */ -/obj/machinery/computer3/proc/interactable(var/mob/user) - if( !src || !user || stat || user.stat || user.lying || user.blinded ) - return 0 - if(!program) - return 0 - if(!isturf(loc) || !isturf(user.loc)) // todo handheld maybe - return 0 - if(user.restrained()) - to_chat(user, "You need a free hand!") - return 0 - - if(issilicon(user) &&!program.ai_allowed ) - to_chat(user, "You are forbidden from accessing this program.") - return 0 - if(!ishuman(user) && program.human_controls) - to_chat(user, "Your body can't work the controls!") - return 0 - - - if(!in_range(src,user) && (!program.human_controls || !istype(user.get_active_hand(),/obj/item/tk_grab))) - // telekinesis check - to_chat(user, "It's too complicated to work at a distance!") - return 0 - - add_fingerprint(user) - user.set_machine(src) - return 1 - - /* - Deduplicates an item list and gives you range and direction. - This is used for networking so you can determine which of several - identically named objects you're referring to. - */ -/obj/machinery/computer3/proc/format_atomlist(var/list/atoms) - var/list/output = list() - for(var/atom/A in atoms) - var/title = "[A] (Range [get_dist(A,src)] meters, [dir2text(get_dir(src,A))])" - output[title] = A - return output - - /* - This is used by the camera monitoring program to see if you're still in range - */ -/obj/machinery/computer3/check_eye(var/mob/user as mob) - if(!interactable(user) || user.machine != src) - if(user.machine == src) - user.unset_machine() - return -1 - - var/datum/file/program/security/S = program - if( !istype(S) || !S.current || !S.current.status || !camnet ) - if( user.machine == src ) - user.unset_machine() - return -1 - - user.reset_view(S.current, 0) - return 0 - - /* - List all files, including removable disks and data cards - (I don't know why but I don't want to rip data cards out. - It just seems... interesting?) - */ -/obj/machinery/computer3/proc/list_files(var/typekey = null) - var/list/files = list() - if(hdd) - files += hdd.files - if(floppy && floppy.inserted) - files += floppy.inserted.files - if(cardslot && istype(cardslot.reader,/obj/item/weapon/card/data)) - files += cardslot.reader:files - if(!ispath(typekey)) - return files - - var/i = 1 - while(i<=files.len) - if(istype(files[i],typekey)) - i++ - continue - files.Cut(i,i+1) - return files - - /* - Crash the computer with an error. - Todo: redo - */ -/obj/machinery/computer3/proc/Crash(var/errorcode = PROG_CRASH) - if(!src) - return null - - switch(errorcode) - if(PROG_CRASH) - if(usr) - usr << "The program crashed!" - usr << browse(null,"\ref[src]") - Reset() - - if(MISSING_PERIPHERAL) - Reset() - if(usr) - usr << browse("

    ERROR: Missing or disabled component

    A hardware failure has occured. Please insert or replace the missing or damaged component and restart the computer.","window=\ref[src]") - - if(BUSTED_ASS_COMPUTER) - Reset() - os.error = BUSTED_ASS_COMPUTER - if(usr) - usr << browse("

    ERROR: Missing or disabled component

    A hardware failure has occured. Please insert or replace the missing or damaged component and restart the computer.","window=\ref[src]") - - if(MISSING_PROGRAM) - Reset() - if(usr) - usr << browse("

    ERROR: No associated program

    This file requires a specific program to open, which cannot be located. Please install the related program and try again.","window=\ref[src]") - - if(FILE_DRM) - Reset() - if(usr) - usr << browse("

    ERROR: File operation prohibited

    Copy protection exception: missing authorization token.","window=\ref[src]") - - if(NETWORK_FAILURE) - Reset() - if(usr) - usr << browse("

    ERROR: Networking exception: Unable to connect to remote host.

    ","window=\ref[src]") - - else - if(usr) - usr << "The program crashed!" - usr << browse(null,"\ref[src]") - testing("computer/Crash() - unknown error code [errorcode]") - Reset() - return null - - #define ANY_DRIVE 0 - #define PREFER_FLOPPY 1 - #define PREFER_CARD 2 - #define PREFER_HDD 4 - - - // required_location: only put on preferred devices -/obj/machinery/computer3/proc/writefile(var/datum/file/F, var/where = ANY_DRIVE, var/required_location = 0) - if(where != ANY_DRIVE) - if((where&PREFER_FLOPPY) && floppy && floppy.addfile(F)) - return 1 - if((where&PREFER_CARD) && istype(cardslot, /obj/item/part/computer/cardslot/dual)) - var/obj/item/part/computer/cardslot/dual/D = cardslot - if(D.addfile(F)) - return 1 - if((where&PREFER_HDD) && hdd && hdd.addfile(F)) - return 1 - - if(required_location) - return 0 - - if(floppy && floppy.addfile(F)) - return 1 - if(istype(cardslot, /obj/item/part/computer/cardslot/dual)) - var/obj/item/part/computer/cardslot/dual/D = cardslot - if(D.addfile(F)) - return 1 - if(hdd && hdd.addfile(F)) - return 1 - return 0 diff --git a/code/game/machinery/computer3/buildandrepair.dm b/code/game/machinery/computer3/buildandrepair.dm deleted file mode 100644 index 928675769c..0000000000 --- a/code/game/machinery/computer3/buildandrepair.dm +++ /dev/null @@ -1,303 +0,0 @@ -// Computer3 circuitboard specifically -/obj/item/part/computer/circuitboard - density = 0 - anchored = 0 - w_class = ITEMSIZE_SMALL - name = "Circuit board" - icon = 'icons/obj/module.dmi' - icon_state = "id_mod" - item_state = "electronic" - origin_tech = list(TECH_DATA = 2) - var/id = null - var/frequency = null - var/build_path = null - var/board_type = "computer" - var/list/req_components = null - var/powernet = null - var/list/records = null - - var/datum/file/program/OS = new/datum/file/program/ntos - -/obj/machinery/computer3/proc/disassemble(mob/user as mob) // todo - return - - -/obj/structure/computer3frame - density = 1 - anchored = 0 - name = "computer frame" - icon = 'icons/obj/stock_parts.dmi' - icon_state = "0" - var/state = 0 - - var/obj/item/part/computer/circuitboard/circuit = null - var/completed = /obj/machinery/computer - - // Computer3 components - a carbon copy of the list from - // computer.dm; however, we will need to check to make sure - // we don't install more components than the computer frame - // can handle. This will be different for certain formfactors. - - var/max_components = 4 - var/list/components = list() - - // Storage - var/obj/item/part/computer/storage/hdd/hdd = null - var/obj/item/part/computer/storage/removable/floppy = null - // Networking - var/obj/item/part/computer/networking/radio/radio = null // not handled the same as other networks - var/obj/item/part/computer/networking/cameras/camnet = null // just plain special - var/obj/item/part/computer/networking/net = null // Proximity, area, or cable network - var/obj/item/part/computer/networking/subspace/centcom = null // only for offstation communications - - // Card reader - note the HoP reader is a subtype - var/obj/item/part/computer/cardslot/cardslot = null - - // Misc & special purpose - var/obj/item/part/computer/ai_holder/cradle = null - var/obj/item/part/computer/toybox/toybox = null - - // Battery must be installed BEFORE wiring the computer. - // if installing it in an existing computer, you will have to - // get back to this state first. - var/obj/item/weapon/cell/battery = null - -/obj/structure/computer3frame/server - name = "server frame" - completed = /obj/machinery/computer3/server - max_components = 6 -/obj/structure/computer3frame/wallcomp - name = "wall-computer frame" - completed = /obj/machinery/computer3/wall_comp - max_components = 3 -/obj/structure/computer3frame/laptop - name = "laptop frame" - completed = /obj/machinery/computer3/laptop - max_components = 3 - -/obj/structure/computer3frame/attackby(obj/item/P as obj, mob/user as mob) - switch(state) - if(0) - if(P.is_wrench()) - playsound(src.loc, P.usesound, 50, 1) - if(do_after(user, 20 * P.toolspeed)) - to_chat(user, "You wrench the frame into place.") - src.anchored = 1 - src.state = 1 - if(istype(P, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = P - if(!WT.remove_fuel(0, user)) - to_chat(user, "The welding tool must be on to complete this task.") - return - playsound(src.loc, WT.usesound, 50, 1) - if(do_after(user, 20 * WT.toolspeed)) - if(!src || !WT.isOn()) return - to_chat(user, "You deconstruct the frame.") - new /obj/item/stack/material/steel( src.loc, 5 ) - qdel(src) - if(1) - if(P.is_wrench()) - playsound(src.loc, P.usesound, 50, 1) - if(do_after(user, 20 * P.toolspeed)) - to_chat(user, "You unfasten the frame.") - src.anchored = 0 - src.state = 0 - if(istype(P, /obj/item/weapon/circuitboard) && !circuit) - var/obj/item/weapon/circuitboard/B = P - if(B.board_type == "computer") - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - to_chat(user, "You place the circuit board inside the frame.") - src.icon_state = "1" - src.circuit = P - user.drop_item() - P.loc = src - else - to_chat(user, "This frame does not accept circuit boards of this type!") - if(P.is_screwdriver() && circuit) - playsound(src.loc, P.usesound, 50, 1) - to_chat(user, "You screw the circuit board into place.") - src.state = 2 - src.icon_state = "2" - if(P.is_crowbar() && circuit) - playsound(src.loc, P.usesound, 50, 1) - to_chat(user, "You remove the circuit board.") - src.state = 1 - src.icon_state = "0" - circuit.loc = src.loc - src.circuit = null - if(2) - if(P.is_screwdriver() && circuit) - playsound(src.loc, P.usesound, 50, 1) - to_chat(user, "You unfasten the circuit board.") - src.state = 1 - src.icon_state = "1" - - if(P.is_crowbar()) - if(battery) - playsound(src.loc, P.usesound, 50, 1) - if(do_after(10 * P.toolspeed)) - battery.loc = loc - to_chat(user, "You remove [battery].") - battery = null - else - to_chat(user, "There's no battery to remove!") - - if(istype(P, /obj/item/weapon/cell)) - if(!battery) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(5)) - battery = P - P.loc = src - to_chat(user, "You insert [battery].") - else - to_chat(user, "There's already \an [battery] in [src]!") - - - if(istype(P, /obj/item/stack/cable_coil)) - if(P:amount >= 5) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 20)) - if(P) - P:amount -= 5 - if(!P:amount) qdel(P) - to_chat(user, "You add cables to the frame.") - src.state = 3 - src.icon_state = "3" - if(3) - if(P.is_wirecutter()) - if(components.len) - to_chat(user, "There are parts in the way!") - return - playsound(src.loc, P.usesound, 50, 1) - to_chat(user, "You remove the cables.") - src.state = 2 - src.icon_state = "2" - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc ) - A.amount = 5 - - if(P.is_crowbar()) - remove_peripheral() - - if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass") - var/obj/item/stack/S = P - if(S.amount >= 2) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - if(do_after(user, 20)) - if(S) - S.use(2) - to_chat(user, "You put in the glass panel.") - src.state = 4 - src.icon_state = "4" - if(4) - if(P.is_crowbar()) - playsound(src.loc, P.usesound, 50, 1) - to_chat(user, "You remove the glass panel.") - src.state = 3 - src.icon_state = "3" - new /obj/item/stack/material/glass( src.loc, 2 ) - if(P.is_screwdriver()) - playsound(src.loc, P.usesound, 50, 1) - to_chat(user, "You connect the monitor.") - var/obj/machinery/computer3/B = new src.circuit.build_path ( src.loc, built=1 ) - /*if(circuit.powernet) B:powernet = circuit.powernet - if(circuit.id) B:id = circuit.id - //if(circuit.records) B:records = circuit.records - if(circuit.frequency) B:frequency = circuit.frequency - if(istype(circuit,/obj/item/weapon/circuitboard/supplycomp)) - var/obj/machinery/computer/supplycomp/SC = B - var/obj/item/weapon/circuitboard/supplycomp/C = circuit - SC.can_order_contraband = C.contraband_enabled*/ - B.circuit = circuit - circuit.loc = B - if(circuit.OS) - circuit.OS.computer = B - B.RefreshParts() // todo - qdel(src) - -/* - This will remove peripherals if you specify one, but the main function is to - allow the user to remove a part specifically. -*/ -/obj/structure/computer3frame/proc/remove_peripheral(var/obj/item/I = null) - if(!components || !components.len) - to_chat(usr, "There are no components in [src] to take out!") - return 0 - if(!I) - I = input(usr, "Remove which component?","Remove component", null) as null|obj in components - - if(I) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - if(do_after(usr,25)) - if(I==hdd) - components -= hdd - hdd.loc = loc - hdd = null - else if(I==floppy) - components -= floppy - floppy.loc = loc - floppy = null - else if(I==radio) - components -= radio - radio.loc = loc - radio = null - else if(I==camnet) - components -= camnet - camnet.loc = loc - camnet = null - else if(I==net) - components -= net - net.loc = loc - net = null - else if(I==cradle) - components -= cradle - cradle.loc = loc - cradle = null - else if(I==toybox) - components -= toybox - toybox.loc = loc - toybox = null - else - warning("Erronous component in computerframe/remove_peripheral: [I]") - I.loc = loc - to_chat(usr, "You remove [I]") - return 1 - return 0 - -/obj/structure/computer3frame/proc/insert_peripheral(var/obj/item/I) - if(components.len >= max_components) - to_chat(usr, "There isn't room in [src] for another component!") - return 0 - switch(I.type) - if(/obj/item/part/computer/storage/hdd) - if(hdd) - to_chat(usr, "There is already \an [hdd] in [src]!") - return 0 - hdd = I - components += hdd - hdd.loc = src - if(/obj/item/part/computer/storage/removable) - if(floppy) - to_chat(usr, "There is already \an [floppy] in [src]!") - return 0 - floppy = I - components += floppy - floppy.loc = src - if(/obj/item/part/computer/networking/radio) - if(radio) - to_chat(usr, "There is already \an [radio] in [src]!") - return 0 - radio = I - components += radio - radio.loc = src - if(/obj/item/part/computer/networking/cameras) - if(camnet) - to_chat(usr, "There is already \an [camnet] in [src]!") - return 0 - camnet = I - components += camnet - camnet.loc = src - if(/obj/item/part/computer/networking) - if(net) - to_chat(usr, "There is already \an [net] in [src]!") - - diff --git a/code/game/machinery/computer3/component.dm b/code/game/machinery/computer3/component.dm deleted file mode 100644 index 3c8d972825..0000000000 --- a/code/game/machinery/computer3/component.dm +++ /dev/null @@ -1,230 +0,0 @@ - -/* - Objects used to construct computers, and objects that can be inserted into them, etc. - - TODO: - * Synthesizer part (toybox, injectors, etc) -*/ - - - -/obj/item/part/computer - name = "computer part" - desc = "Holy jesus you donnit now" - gender = PLURAL - icon = 'icons/obj/stock_parts.dmi' - icon_state = "hdd1" - w_class = ITEMSIZE_SMALL - - var/emagged = 0 - - // the computer that this device is attached to - var/obj/machinery/computer3/computer - - // If the computer is attacked by an item it will reference this to decide which peripheral(s) are affected. - var/list/attackby_types = list() - -/obj/item/part/computer/proc/allow_attackby(var/obj/item/I, var/mob/user) - for(var/typepath in attackby_types) - if(istype(I, typepath)) - return 1 - return 0 - -/obj/item/part/computer/proc/init(var/obj/machinery/computer/target) - computer = target - // continue to handle all other type-specific procedures - -/* - Below are all the miscellaneous components - For storage drives, see storage.dm - For networking parts, see -*/ - -/obj/item/part/computer/ai_holder - name = "intelliCore computer module" - desc = "Contains a specialized nacelle for dealing with highly sensitive equipment without interference." - - attackby_types = list(/obj/item/device/aicard) - - var/mob/living/silicon/ai/occupant = null - var/busy = 0 - -/obj/item/part/computer/ai_holder/attackby(obj/I as obj,mob/user as mob) - if(computer && !computer.stat) - if(istype(I, /obj/item/device/aicard)) - var/obj/item/device/aicard/card = I - var/mob/living/silicon/ai/comp_ai = locate() in src - var/mob/living/silicon/ai/card_ai = locate() in card - - if(istype(comp_ai)) - if(busy) - to_chat(user, "ERROR: Reconstruction in progress.") - return - - if(card.grab_ai(comp_ai, user)) - occupant = null - - else if(istype(card_ai)) - load_ai(card_ai,card,user) - - if(computer.program) - computer.program.update_icon() - - computer.update_icon() - ..() - return - -/obj/item/part/computer/ai_holder/proc/load_ai(var/mob/living/silicon/ai/transfer, var/obj/item/device/aicard/card, var/mob/user) - - if(!istype(transfer)) - return - - // Transfer over the AI. - to_chat(transfer, "You have been transferred into a mobile terminal. Sadly, there is no remote access from here.") - to_chat(user, "Transfer successful: [transfer.name] placed within mobile terminal.") - - transfer.loc = src - transfer.cancel_camera() - transfer.control_disabled = 1 - occupant = transfer - - if(card) - card.clear() - - -/* - ID computer cardslot - reading and writing slots -*/ - -/obj/item/part/computer/cardslot - name = "magnetic card slot" - desc = "Contains a slot for reading magnetic swipe cards." - - var/obj/item/weapon/card/reader = null - - attackby_types = list(/obj/item/weapon/card) - -/obj/item/part/computer/cardslot/attackby(var/obj/item/I as obj, var/mob/user) - if(istype(I,/obj/item/weapon/card) && computer) - if(istype(I,/obj/item/weapon/card/emag) && !reader) // emag reader slot - user.visible_message("[computer]'s screen flickers for a moment.","You insert \the [I]. After a moment, the card ejects itself, and [computer] beeps.","[computer] beeps.") - computer.emagged = 1 - return - - insert(I, user) - return - ..(I,user) - - // cardslot.insert(card, slot) - // card: The card obj you want to insert (usually your ID) - // user: The mob inserting the card -/obj/item/part/computer/cardslot/proc/insert(var/obj/item/weapon/card/card, var/mob/user) - if(equip_to_reader(card, user)) - to_chat(user, "You insert the card into reader slot") - return 1 - to_chat(user, "There is already something in the reader slot.") - return 0 - - - // Usage of insert() preferred, as it also tells result to the user. -/obj/item/part/computer/cardslot/proc/equip_to_reader(var/obj/item/weapon/card/card, var/mob/living/L) - if(!reader) - L.drop_item() - card.loc = src - reader = card - return 1 - return 0 - - // cardslot.remove(slot) - // user: The mob removing the card -/obj/item/part/computer/cardslot/proc/remove(var/mob/user) - if(remove_reader(user)) - to_chat(user, "You remove the card from reader slot") - return 1 - to_chat(user, "There is nothing in the reader slot") - return 0 - -/obj/item/part/computer/cardslot/proc/remove_reader(var/mob/living/L) - if(reader) - if(ishuman(L) && !L.get_active_hand()) - L.put_in_hands(reader) - else - reader.loc = get_turf(computer) - reader = null - return 1 - return 0 - - // Authorizes the user based on the computer's requirements -/obj/item/part/computer/cardslot/proc/authenticate() - return computer.check_access(reader) - - -/obj/item/part/computer/cardslot/dual - name = "magnetic card reader" - desc = "Contains slots for inserting magnetic swipe cards for reading and writing." - - var/obj/item/weapon/card/writer = null - - - // Ater: Single- and dual-slot card readers have separate functions. - // According to OOP principles, they should be separate classes and use inheritance, polymorphism. - - -/obj/item/part/computer/cardslot/dual/proc/equip_to_writer(var/obj/item/weapon/card/card, var/mob/living/L) - if(!writer) - L.drop_item() - card.loc = src - writer = card - return 1 - return 0 - -/obj/item/part/computer/cardslot/dual/proc/remove_from_writer(var/mob/living/L) - if(writer) - if(ishuman(L) && !L.get_active_hand()) - L.put_in_hands(writer) - else - writer.loc = get_turf(computer) - writer = null - return 1 - return 0 - - // cardslot.insert(card, slot) - // card: The card obj you want to insert (usually your ID) - // user: The mob inserting the card - // slot: Which slot to insert into (1->Reader, 2->Writer, 3->Auto) Default 3 -/obj/item/part/computer/cardslot/dual/insert(var/obj/item/weapon/card/card, var/mob/user, var/slot = 3) - if(slot != 2) - if(..(card, user)) - return 1 - - if(slot != 1) - if(equip_to_writer(card, user)) - to_chat(user, "You insert the card into writer slot") - return 1 - else - to_chat(user, "There is already something in the writer slot.") - return 0 - - // cardslot/dual.insert(card, slot) - // user: The mob removing the card - // slot: Which slot to remove from (1->Reader, 2->Writer, 3->Both, 4->Reader and if empty, Writer) Default 3 -/obj/item/part/computer/cardslot/dual/remove(var/mob/user, var/slot = 3) - if(slot != 2) - if(..(user) && slot != 3) // ..() probes reader - return 1 // slot is either 1 or 4, where we only probe reader if there's anything in it - - if(slot != 1) // If slot is 1, then we only probe reader - if(remove_from_writer(user)) // Probe writer - to_chat(user, "You remove the card from the writer slot") - return 1 - to_chat(user, "There is nothing in the writer slot.") - return 0 - -/obj/item/part/computer/cardslot/dual/proc/addfile(var/datum/file/F) - if(!istype(writer,/obj/item/weapon/card/data)) - return 0 - var/obj/item/weapon/card/data/D = writer - if(D.files.len > 3) - return 0 - D.files += F - return 1 diff --git a/code/game/machinery/computer3/computer.dm b/code/game/machinery/computer3/computer.dm deleted file mode 100644 index c9d8eb22de..0000000000 --- a/code/game/machinery/computer3/computer.dm +++ /dev/null @@ -1,459 +0,0 @@ -/obj/machinery/computer3 - name = "computer" - icon = 'icons/obj/computer3.dmi' - icon_state = "frame" - density = 1 - anchored = 1.0 - - idle_power_usage = 20 - active_power_usage = 50 - - var/allow_disassemble = 1 - var/legacy_icon = 0 // if 1, use old style icons - var/show_keyboard = 1 - - // These is all you should need to change when creating a new computer. - // If there is no default program, the OS will run instead. - // If there is no hard drive, but there is a default program, the OS rom on - // the circuitboard will be overridden. - - // For these, typepaths are used, NOT objects - - var/default_prog = null // the program running when spawned - var/list/spawn_files = list() // files added when spawned - var/list/spawn_parts = list(/obj/item/part/computer/storage/hdd/big) // peripherals to spawn - - // Computer3 components - put an object in them in New() when not built - // I used to have a more pliable /list, but the ambiguities - // there in how many of what you had was killing me, especially - // when you had to search the list to find what you had. - - // Mostly decorative, holds the OS rom - var/obj/item/part/computer/circuitboard/circuitb - - // Storage - var/obj/item/part/computer/storage/hdd/hdd = null - var/obj/item/part/computer/storage/removable/floppy = null - // Networking - var/obj/item/part/computer/networking/radio/radio = null // not handled the same as other networks - var/obj/item/part/computer/networking/cameras/camnet = null // just plain special - var/obj/item/part/computer/networking/net = null // Proximity, area, or cable network - - // Card reader - note the HoP reader is a subtype - var/obj/item/part/computer/cardslot/cardslot = null - - // Misc & special purpose - var/obj/item/part/computer/ai_holder/cradle = null - var/obj/item/part/computer/toybox/toybox = null - - - // Legacy variables - // camera networking - overview (???) - var/mapping = 0 - var/last_pic = 1.0 - - // Purely graphical effect - var/icon/kb = null - - // These are necessary in order to consolidate all computer types into one - var/datum/wires/wires = null - var/powernet = null - - // Used internally - var/datum/file/program/program = null // the active program (null if defaulting to os) - var/datum/file/program/os = null // the base code of the machine (os or hardcoded program) - - // If you want the computer to have a UPS, add a battery during construction. This is useful for things like - // the comms computer, solar trackers, etc, that should function when all else is off. - // Laptops will require batteries and have no mains power. - - var/obj/item/weapon/cell/battery = null // uninterruptible power supply aka battery - -/obj/machinery/computer3/New(var/L, var/built = 0) - ..() - spawn(2) - power_change() - - if(show_keyboard) - var/kb_state = "kb[rand(1,15)]" - kb = image('icons/obj/computer3.dmi',icon_state=kb_state) - overlays += kb - - if(!built) - if(!circuitb || !istype(circuitb)) - circuitb = new(src) - if(circuitb.OS) - os = circuitb.OS - circuitb.OS.computer = src - else - os = null - - // separated into its own function because blech - spawn_parts() - - if(default_prog) // Add the default software if applicable - var/datum/file/program/P = new default_prog - if(hdd) - hdd.addfile(P,1) - program = P - if(!os) - os = P - else if(floppy) - floppy.inserted = new(floppy) - floppy.files = floppy.inserted.files - floppy.addfile(P) - program = P - else - circuitb.OS = P - circuitb.OS.computer = src - os = circuitb.OS - circuitb.name = "Circuitboard ([P])" - - if(hdd) // Spawn files - for(var/typekey in spawn_files) - hdd.addfile(new typekey,1) - - update_icon() - -/obj/machinery/computer3/verb/ResetComputer() - set name = "Reset Computer" - set category = "Object" - set src in view(1) - - if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - to_chat(usr, "You can't do that.") - return - - if(!Adjacent(usr)) - to_chat(usr, "You can't reach it.") - return - - Reset() - -/obj/machinery/computer3/proc/update_spawn_files() - for(var/typekey in spawn_files) - hdd.addfile(new typekey,1) - -/obj/machinery/computer3/proc/spawn_parts() - for(var/typekey in spawn_parts) - if(ispath(typekey,/obj/item/part/computer/storage/removable)) - if(floppy) - continue - floppy = new typekey(src) - floppy.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/storage/hdd)) - if(hdd) - continue - hdd = new typekey(src) - hdd.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/networking/cameras)) - if(camnet) - continue - camnet = new typekey(src) - camnet.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/networking/radio)) - if(radio) - continue - radio = new typekey(src) - radio.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/networking)) - if(net) - continue - net = new typekey(src) - net.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/cardslot)) - if(cardslot) - continue - cardslot = new typekey(src) - cardslot.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/ai_holder)) - if(cradle) - continue - cradle = new typekey(src) - cradle.init(src) - continue - - if(ispath(typekey,/obj/item/part/computer/toybox)) - if(toybox) - continue - toybox = new typekey(src) - toybox.init(src) - continue - - if(ispath(typekey,/obj/item/weapon/cell)) - if(battery) - continue - battery = new typekey(src) - continue - -/obj/machinery/computer3/proc/Reset(var/error = 0) - for(var/mob/living/M in range(1)) - M << browse(null,"window=\ref[src]") - if(program) - program.Reset() - program = null - req_access = os.req_access - update_icon() - - // todo does this do enough - -/obj/machinery/computer3/emp_act(severity) - if(prob(20/severity)) set_broken() - ..() - - -/obj/machinery/computer3/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(25)) - qdel(src) - return - if (prob(50)) - for(var/x in verbs) - verbs -= x - set_broken() - if(3.0) - if (prob(25)) - for(var/x in verbs) - verbs -= x - set_broken() - else - return - - /* - Computers have the capability to use a battery backup. - Note that auto_use_power's return value is strictly whether - or not it is successfully powered. - - This allows laptops, and also allows you to create computers that - remain active when: - - * the APC is destroy'd, emag'd, malf'd, emp'd, ninja'd etc - * the computer was built in an unpowered zone - * the station power is out, cables are cut, etc - - By default, most computers will NOT spawn with a battery backup, and - SHOULD not. Players can take apart a computer to insert the battery - if they want to ensure, for example, the AI upload remains when the - power is cut off. - - Make sure to use use_power() a bunch in peripherals code - */ -/obj/machinery/computer3/auto_use_power() - if(!powered(power_channel)) - if(battery && battery.charge > 0) - if(use_power == 1) - battery.use(idle_power_usage) - else - battery.use(active_power_usage) - return 1 - return 0 - if(src.use_power == 1) - use_power(idle_power_usage,power_channel) - else if(src.use_power >= 2) - use_power(active_power_usage,power_channel) - return 1 - -/obj/machinery/computer3/use_power(var/amount, var/chan = -1) - if(chan == -1) - chan = power_channel - - var/area/A = get_area(loc) - if(istype(A) && A.powered(chan)) - A.use_power(amount, chan) - else if(battery && battery.charge > 0) - battery.use(amount) - -/obj/machinery/computer3/power_change() - if( !powered(power_channel) && (!battery || battery.charge <= 0) ) - stat |= NOPOWER - else - stat &= ~NOPOWER - -/obj/machinery/computer3/process() - auto_use_power() - power_change() - update_icon() - if(stat & (NOPOWER|BROKEN)) - return - - if(program) - program.process() - return - - if(os) - program = os - os.process() - return - -/obj/machinery/computer3/proc/set_broken() - icon_state = "computer_b" - stat |= BROKEN - if(program) - program.error = BUSTED_ASS_COMPUTER - if(os) - os.error = BUSTED_ASS_COMPUTER - -/obj/machinery/computer3/attackby(obj/item/I as obj, mob/user as mob) - if(I.is_screwdriver() && allow_disassemble) - disassemble(user) - return - - /* - +++++++++++ - |IMPORTANT| If you add a peripheral, put it in this list - +++++++++++ -------------------------------------------- - */ - - var/list/p_list = list() - for(var/obj/item/part/computer/C in src) - if(!isnull(C) && C.allow_attackby(I,user)) - p_list += C - if(p_list.len) - var/obj/item/part/computer/P = null - if(p_list.len == 1) - P = p_list[1] - else - P = input(user,"Which component?") as null|anything in p_list - - if(P) - P.attackby(I,user) - return - ..() - -/obj/machinery/computer3/attack_hand(var/mob/user as mob) - if(stat) - Reset() - return - - // I don't want to deal with computers that you can't walk up to and use - // there is still cardauth anyway - //if(!allowed(user)) - // return - - if(program) - if(program.computer != src) // floppy disk may have been removed, etc - Reset() - attack_hand(user) - return - if(program.error) - Crash(program.error) - return - user.set_machine(src) - program.attack_hand(user) // will normally translate to program/interact() - return - - if(os) - program = os - user.set_machine(src) - os.attack_hand(user) - return - - to_chat(user, "\The [src] won't boot!") - -/obj/machinery/computer3/attack_ai(var/mob/user as mob) // copypasta because server racks lose attack_hand() - if(stat) - Reset() - return - - if(program) - if(program.computer != src) // floppy disk may have been removed, etc - Reset() - attack_ai(user) - return - if(program.error) - Crash(program.error) - return - user.set_machine(src) - program.attack_hand(user) // will normally translate to program/interact() - return - - if(os) - program = os - user.set_machine(src) - os.attack_hand(user) - return - - to_chat(user, "\The [src] won't boot!") - -/obj/machinery/computer3/interact() - if(stat) - Reset() - return - if(!allowed(usr) || !usr in view(1)) - usr.unset_machine() - return - - if(program) - program.interact() - return - - if(os) - program = os - os.interact() - return - -/obj/machinery/computer3/update_icon() - if(legacy_icon) - icon_state = initial(icon_state) - // Broken - if(stat & BROKEN) - icon_state += "b" - - // Powered - else if(stat & NOPOWER) - icon_state = initial(icon_state) - icon_state += "0" - return - if(stat) - overlays.Cut() - return - if(program) - overlays = list(program.overlay) - if(show_keyboard) - overlays += kb - name = "[program.name] [initial(name)]" - else if(os) - overlays = list(os.overlay) - if(show_keyboard) - overlays += kb - name = initial(name) - else - var/global/image/generic = image('icons/obj/computer3.dmi',icon_state="osod") // orange screen of death - overlays = list(generic) - if(show_keyboard) - overlays += kb - name = initial(name) + " (orange screen of death)" - -//Returns percentage of battery charge remaining. Returns -1 if no battery is installed. -/obj/machinery/computer3/proc/check_battery_status() - if (battery) - var/obj/item/weapon/cell/B = battery - return round(B.charge / (B.maxcharge / 100)) - else - return -1 - - - -/obj/machinery/computer3/wall_comp - name = "terminal" - icon = 'icons/obj/computer3.dmi' - icon_state = "wallframe" - density = 0 - pixel_y = -3 - show_keyboard = 0 diff --git a/code/game/machinery/computer3/computer3_notes.dm b/code/game/machinery/computer3/computer3_notes.dm deleted file mode 100644 index c27410e637..0000000000 --- a/code/game/machinery/computer3/computer3_notes.dm +++ /dev/null @@ -1,34 +0,0 @@ -/* - 1. Do NOT confuse Computer.Crash(errorcode) with byond CRASH(message) - 2 Do NOT talk about fight club. - 3 If this if your first night here, you have to crash the computer. - 4 Where am I? - 5 Someone help me, please... - 6. Be sure to use computer.use_power() appropriately. Laptops should run out of battery occasionally. - 7 Everyone fights, no-one quits. If you don't do your job, I'll crash you myself. - 6 Don't allow more than 42 angels to dance on the head of a pin. - 5. Once a computer has spawned, they are just like the rest, except when they aren't. - 4 Get me four glasses of apple juice. - 3. Components are only added or removed when disassembled and rebuilt. However, they may be EMP'd. - 2 Only you can prevent friendly fire. - 1 Do not talk about fight club. - 2. If a component subtype needs to be handled separately (removable drives, radio networks), declare it separately. - 3 Television rules the nation - 4. interactable() does all the sanity checks, adds fingerprints, sets machines, initializes popup, and makes a damn fine pot of coffee. - 5 Love conquers all. - 6 If at all possible, do a barrel roll. - 7. Don't forget to use the network verify function to make sure you still have access to remote machines. - - - - - TODO: - * "Nothing left to call the shuttle" check - * Communications terminal printing - move it to a printer of some sort? Make a printer peripheral--but then which ones print the comms? - * Remove the partially transparent border on program screens, as it clashes with some frames - * Chop the corners on program screens now that screen sizes are standard - * ntos: - * Needs a text editor/viewer - * Needs file copy and file move - I think I know how I'm gonna do it - * Needs a peripheral view (eject disks and cards, network actions, ???) -*/ \ No newline at end of file diff --git a/code/game/machinery/computer3/computers/HolodeckControl.dm b/code/game/machinery/computer3/computers/HolodeckControl.dm deleted file mode 100644 index da3c2416fd..0000000000 --- a/code/game/machinery/computer3/computers/HolodeckControl.dm +++ /dev/null @@ -1,245 +0,0 @@ -/obj/machinery/computer3/HolodeckControl - default_prog = /datum/file/program/holodeck - - -// Todo: I personally would like to add a second holodeck in the theater for making appropriate playgrounds. -// perhaps a holodeck association keyfile? -// One more thing while I'm here -// C3 allows multiple computers to run this program, but it was designed on the assumption that only one would, ever -// I am not going to add or remove anything right now, I'm just porting it - - -/datum/file/program/holodeck - name = "Holodeck Control Console" - desc = "Used to control a nearby holodeck." - active_state = "holocontrol" - var/area/linkedholodeck = null - var/area/target = null - var/active = 0 - var/list/holographic_items = list() - var/damaged = 0 - var/last_change = 0 - var/emagged = 0 - - -/datum/file/program/holodeck/interact() - if(!interactable()) - return - var/dat = "

    Current Loaded Programs

    " - dat += "((Empty Court))
    " - dat += "((Boxing Court))
    " - dat += "((Basketball Court))
    " - dat += "((Thunderdome Court))
    " - dat += "((Beach))
    " -// dat += "((Shutdown System))
    " - - dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.
    " - - if(emagged) - dat += "(Begin Atmospheric Burn Simulation)
    " - dat += "Ensure the holodeck is empty before testing.
    " - dat += "
    " - dat += "(Begin Wildlife Simulation)
    " - dat += "Ensure the holodeck is empty before testing.
    " - dat += "
    " - if(issilicon(usr)) - dat += "(Re-Enable Safety Protocols?)
    " - dat += "Safety Protocols are DISABLED
    " - else - if(issilicon(usr)) - dat += "(Override Safety Protocols?)
    " - dat += "
    " - dat += "Safety Protocols are ENABLED
    " - - popup.set_content(dat) - popup.open() - return - -/datum/file/program/holodeck/Topic(var/href, var/list/href_list) - if(!interactable() || ..(href,href_list)) - return - - if("emptycourt" in href_list) - target = locate(/area/holodeck/source_emptycourt) - if(target) - loadProgram(target) - - else if("boxingcourt" in href_list) - target = locate(/area/holodeck/source_boxingcourt) - if(target) - loadProgram(target) - - else if("basketball" in href_list) - target = locate(/area/holodeck/source_basketball) - if(target) - loadProgram(target) - - else if("thunderdomecourt" in href_list) - target = locate(/area/holodeck/source_thunderdomecourt) - if(target) - loadProgram(target) - - else if("beach" in href_list) - target = locate(/area/holodeck/source_beach) - if(target) - loadProgram(target) - - else if("turnoff" in href_list) - target = locate(/area/holodeck/source_plating) - if(target) - loadProgram(target) - - else if("burntest" in href_list) - if(!emagged) - return - target = locate(/area/holodeck/source_burntest) - if(target) - loadProgram(target) - - else if("wildlifecarp" in href_list) - if(!emagged) - return - target = locate(/area/holodeck/source_wildlife) - if(target) - loadProgram(target) - - else if("AIoverride" in href_list) - if(!issilicon(usr)) - return - emagged = !emagged - if(emagged) - message_admins("[key_name_admin(usr)] overrode the holodeck's safeties") - log_game("[key_name(usr)] overrided the holodeck's safeties") - else - message_admins("[key_name_admin(usr)] restored the holodeck's safeties") - log_game("[key_name(usr)] restored the holodeck's safeties") - - interact() - return - -/datum/file/program/holodeck/Reset() - emergencyShutdown() - -/datum/file/program/holodeck/process() - if(active) - if(!checkInteg(linkedholodeck)) - damaged = 1 - target = locate(/area/holodeck/source_plating) - if(target) - loadProgram(target) - active = 0 - for(var/mob/M in range(10,src)) - M.show_message("The holodeck overloads!") - - for(var/turf/T in linkedholodeck) - if(prob(30)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, T) - s.start() - T.ex_act(3) - T.hotspot_expose(1000,500,1) - - for(var/item in holographic_items) - if(!(get_turf(item) in linkedholodeck)) - derez(item, 0) - -/datum/file/program/holodeck/proc/derez(var/obj/obj , var/silent = 1) - holographic_items.Remove(obj) - - if(obj == null) - return - - if(isobj(obj)) - var/mob/M = obj.loc - if(ismob(M)) - M.remove_from_mob(obj) - - if(!silent) - var/obj/oldobj = obj - obj.visible_message("The [oldobj.name] fades away!") - qdel(obj) - -/datum/file/program/holodeck/proc/checkInteg(var/area/A) - for(var/turf/T in A) - if(istype(T, /turf/space)) - return 0 - return 1 - -/datum/file/program/holodeck/proc/togglePower(var/toggleOn = 0) - if(toggleOn) - var/area/targetsource = locate(/area/holodeck/source_emptycourt) - holographic_items = targetsource.copy_contents_to(linkedholodeck) - - spawn(30) - for(var/obj/effect/landmark/L in linkedholodeck) - if(L.name=="Atmospheric Test Start") - spawn(20) - var/turf/T = get_turf(L) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, T) - s.start() - if(T) - T.temperature = 5000 - T.hotspot_expose(50000,50000,1) - active = 1 - else - for(var/item in holographic_items) - derez(item) - var/area/targetsource = locate(/area/holodeck/source_plating) - targetsource.copy_contents_to(linkedholodeck , 1) - active = 0 - -/datum/file/program/holodeck/proc/loadProgram(var/area/A) - if(world.time < (last_change + 25)) - if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve - return - for(var/mob/M in range(3,src)) - M.show_message("ERROR. Recalibrating projetion apparatus.") - last_change = world.time - return - - last_change = world.time - active = 1 - - for(var/item in holographic_items) - derez(item) - - for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck) - qdel(B) - - for(var/mob/living/simple_mob/animal/space/carp/C in linkedholodeck) - qdel(C) - - holographic_items = A.copy_contents_to(linkedholodeck , 1) - - if(emagged) - for(var/obj/item/weapon/holo/esword/H in linkedholodeck) - H.damtype = BRUTE - - spawn(30) - for(var/obj/effect/landmark/L in linkedholodeck) - if(L.name=="Atmospheric Test Start") - spawn(20) - var/turf/T = get_turf(L) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, T) - s.start() - if(T) - T.temperature = 5000 - T.hotspot_expose(50000,50000,1) - if(L.name=="Holocarp Spawn") - new /mob/living/simple_mob/animal/space/carp(L.loc) - - -/datum/file/program/holodeck/proc/emergencyShutdown() - //Get rid of any items - for(var/item in holographic_items) - derez(item) - //Turn it back to the regular non-holographic room - target = locate(/area/holodeck/source_plating) - if(target) - loadProgram(target) - - var/area/targetsource = locate(/area/holodeck/source_plating) - targetsource.copy_contents_to(linkedholodeck , 1) - active = 0 diff --git a/code/game/machinery/computer3/computers/Operating.dm b/code/game/machinery/computer3/computers/Operating.dm deleted file mode 100644 index 0f989780d7..0000000000 --- a/code/game/machinery/computer3/computers/Operating.dm +++ /dev/null @@ -1,47 +0,0 @@ -/obj/machinery/computer3/operating - default_prog = /datum/file/program/op_monitor - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/prox) - icon_state = "frame-med" - -/datum/file/program/op_monitor - name = "operating table monitor" - desc = "Monitors patient status during surgery." - active_state = "operating" - var/mob/living/carbon/human/patient = null - var/obj/machinery/optable/table = null - - -/datum/file/program/op_monitor/interact() - if(!interactable()) - return - if(!computer.net) - computer.Crash(MISSING_PERIPHERAL) - return - table = computer.net.connect_to(/obj/machinery/optable,table) - - var/dat = "" - if(table) - dat += "Patient information:
    " - if(src.table && (src.table.check_victim())) - src.patient = src.table.victim - dat += {"Patient Status: [patient.stat ? "Non-Responsive" : "Stable"]
    - Blood Type: [patient.b_type]
    -
    - Health: [round(patient.health)]
    - Brute Damage: [round(patient.getBruteLoss())]
    - Toxins Damage: [round(patient.getToxLoss())]
    - Fire Damage: [round(patient.getFireLoss())]
    - Suffocation Damage: [round(patient.getOxyLoss())]
    - "} - else - src.patient = null - dat += "No patient detected" - else - dat += "Operating table not found." - - popup.set_content(dat) - popup.open() -/datum/file/program/op_monitor/Topic() - if(!interactable()) - return - ..() \ No newline at end of file diff --git a/code/game/machinery/computer3/computers/arcade.dm b/code/game/machinery/computer3/computers/arcade.dm deleted file mode 100644 index 6b235659cf..0000000000 --- a/code/game/machinery/computer3/computers/arcade.dm +++ /dev/null @@ -1,183 +0,0 @@ -/obj/machinery/computer3/arcade - default_prog = /datum/file/program/arcade - spawn_parts = list(/obj/item/part/computer/toybox) //NO HDD - the game is loaded on the circuitboard's OS slot - -/obj/item/part/computer/toybox - var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, - /obj/item/toy/blink = 2, - /obj/item/clothing/under/syndicate/tacticool = 2, - /obj/item/toy/sword = 2, - /obj/item/weapon/gun/projectile/revolver/capgun = 2, - /obj/item/toy/crossbow = 2, - /obj/item/clothing/suit/syndicatefake = 2, - /obj/item/weapon/storage/fancy/crayons = 2, - /obj/item/toy/spinningtoy = 2, - /obj/item/toy/prize/ripley = 1, - /obj/item/toy/prize/fireripley = 1, - /obj/item/toy/prize/deathripley = 1, - /obj/item/toy/prize/gygax = 1, - /obj/item/toy/prize/durand = 1, - /obj/item/toy/prize/honk = 1, - /obj/item/toy/prize/marauder = 1, - /obj/item/toy/prize/seraph = 1, - /obj/item/toy/prize/mauler = 1, - /obj/item/toy/prize/odysseus = 1, - /obj/item/toy/prize/phazon = 1 - ) - -/obj/item/part/computer/toybox/allow_attackby(var/obj/item/I, var/mob/user) - return 0 - -/obj/item/part/computer/toybox/proc/dispense() - if(computer && !computer.stat) - var/prizeselect = pickweight(prizes) - new prizeselect(computer.loc) - if(istype(prizeselect, /obj/item/weapon/gun/projectile/revolver/capgun)) //Ammo comes with the gun - new /obj/item/projectile/bullet/pistol/cap(src.loc) - else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit - new /obj/item/clothing/head/syndicatefake(computer.loc) - feedback_inc("arcade_win_normal") - computer.use_power(500) - -/datum/file/program/arcade - desc = "The best arcade game ever produced by the Company's short-lived entertainment divison." - //headcanon: they also ported E.T. for the atari 2600, superman 64, and basically every other movie tie-in game ever - - active_state = "generic" - - var/turtle = 0 - var/enemy_name = "Space Villian" - var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc - var/player_hp = 30 //Player health/attack points - var/player_mp = 10 - var/enemy_hp = 45 //Enemy health/attack points - var/enemy_mp = 20 - var/gameover = 0 - var/blocked = 0 //Player cannot attack/heal while set - -/datum/file/program/arcade/New() - ..() - var/name_action - var/name_part1 - var/name_part2 - - name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "ERP ") - - name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") - name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn") - - enemy_name = replacetext(name_part1, "the ", "") + name_part2 - name = (name_action + name_part1 + name_part2) - -/datum/file/program/arcade/interact() - if(!interactable()) - return - var/dat// = topic_link(src,"close","Close") - dat = "

    [enemy_name]

    " - - dat += "

    [temp]

    " - dat += "
    Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]
    " - dat += "
    " - - if (gameover) - dat += "[topic_link(src,"newgame","New Game")]" - else - dat += "[topic_link(src,"attack","Attack")] | [topic_link(src,"heal","Heal")] | [topic_link(src,"charge","Recharge Power")]" - - dat += "
    " - - popup.set_content(dat) - popup.open() - -/datum/file/program/arcade/Topic(href, list/href_list) - if(!interactable() || ..(href,href_list)) - return - if (!blocked && !gameover) - if ("attack" in href_list) - blocked = 1 - var/attackamt = rand(2,6) - temp = "You attack for [attackamt] damage!" - computer.updateUsrDialog() - if(turtle > 0) - turtle-- - - sleep(10) - enemy_hp -= attackamt - arcade_action() - - else if ("heal" in href_list) - blocked = 1 - var/pointamt = rand(1,3) - var/healamt = rand(6,8) - temp = "You use [pointamt] magic to heal for [healamt] damage!" - computer.updateUsrDialog() - turtle++ - - sleep(10) - player_mp -= pointamt - player_hp += healamt - blocked = 1 - computer.updateUsrDialog() - arcade_action() - - else if ("charge" in href_list) - blocked = 1 - var/chargeamt = rand(4,7) - temp = "You regain [chargeamt] points" - player_mp += chargeamt - if(turtle > 0) - turtle-- - - computer.updateUsrDialog() - sleep(10) - arcade_action() - - if ("newgame" in href_list) //Reset everything - temp = "New Round" - player_hp = 30 - player_mp = 10 - enemy_hp = 45 - enemy_mp = 20 - gameover = 0 - turtle = 0 - computer.updateUsrDialog() - - -/datum/file/program/arcade/proc/arcade_action() - if ((enemy_mp <= 0) || (enemy_hp <= 0)) - if(!gameover) - gameover = 1 - temp = "[enemy_name] has fallen! Rejoice!" - if(computer.toybox) - computer.toybox.dispense() - - else if ((enemy_mp <= 5) && (prob(70))) - var/stealamt = rand(2,3) - temp = "[enemy_name] steals [stealamt] of your power!" - player_mp -= stealamt - - if (player_mp <= 0) - gameover = 1 - sleep(10) - temp = "You have been drained! GAME OVER" - feedback_inc("arcade_loss_mana_normal") - - else if ((enemy_hp <= 10) && (enemy_mp > 4)) - temp = "[enemy_name] heals for 4 health!" - enemy_hp += 4 - enemy_mp -= 4 - - else - var/attackamt = rand(3,6) - temp = "[enemy_name] attacks for [attackamt] damage!" - player_hp -= attackamt - - if ((player_mp <= 0) || (player_hp <= 0)) - gameover = 1 - temp = "You have been crushed! GAME OVER" - feedback_inc("arcade_loss_hp_normal") - - if(interactable()) - computer.updateUsrDialog() - blocked = 0 - return \ No newline at end of file diff --git a/code/game/machinery/computer3/computers/atmos_alert.dm b/code/game/machinery/computer3/computers/atmos_alert.dm deleted file mode 100644 index aaa677974c..0000000000 --- a/code/game/machinery/computer3/computers/atmos_alert.dm +++ /dev/null @@ -1,100 +0,0 @@ -/obj/machinery/computer3/atmos_alert - default_prog = /datum/file/program/atmos_alert - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) - icon_state = "frame-eng" - -/datum/file/program/atmos_alert - name = "atmospheric alert monitor" - desc = "Recieves alerts over the radio." - active_state = "alert:2" - refresh = 1 - -/datum/file/program/atmos_alert/execute(var/datum/file/program/source) - ..(source) - - if(!computer.radio) - computer.Crash(MISSING_PERIPHERAL) - - computer.radio.set_frequency(1437,RADIO_ATMOSIA) - -// This will be called as long as the program is running on the parent computer -// and the computer has the radio peripheral -/datum/file/program/atmos_alert/receive_signal(datum/signal/signal) - if(!signal || signal.encryption) - return - - var/zone = signal.data["zone"] - var/severity = signal.data["alert"] - if(!zone || !severity) - return - - minor_air_alarms -= zone - priority_air_alarms -= zone - if(severity=="severe") - priority_air_alarms += zone - else if (severity=="minor") - minor_air_alarms += zone - update_icon() - return - - -/datum/file/program/atmos_alert/interact() - if(!interactable()) - return - if(!computer.radio) - computer.Crash(MISSING_PERIPHERAL) - - popup.set_content(return_text()) - popup.open() - -/datum/file/program/atmos_alert/update_icon() - ..() - if(priority_air_alarms.len > 0) - overlay.icon_state = "alert:2" - else if(minor_air_alarms.len > 0) - overlay.icon_state = "alert:1" - else - overlay.icon_state = "alert:0" - - if(computer) - computer.update_icon() - - -/datum/file/program/atmos_alert/proc/return_text() - var/priority_text = "

    Priority Alerts:

    " - var/minor_text = "

    Minor Alerts:

    " - - if(priority_air_alarms.len) - for(var/zone in priority_air_alarms) - priority_text += "[format_text(zone)] [topic_link(src,"priority_clear=[ckey(zone)]","X")]
    " - else - priority_text += "No priority alerts detected.
    " - - if(minor_air_alarms.len) - for(var/zone in minor_air_alarms) - minor_text += "[format_text(zone)] [topic_link(src,"minor_clear=[ckey(zone)]","X")]
    " - else - minor_text += "No minor alerts detected.
    " - - return "[priority_text]

    [minor_text]
    [topic_link(src,"close","Close")]" - - -/datum/file/program/atmos_alert/Topic(var/href, var/list/href_list) - if(!interactable() || ..(href,href_list)) - return - - if("priority_clear" in href_list) - var/removing_zone = href_list["priority_clear"] - for(var/zone in priority_air_alarms) - if(ckey(zone) == removing_zone) - to_chat(usr, "Priority Alert for area [zone] cleared.") - priority_air_alarms -= zone - - if("minor_clear" in href_list) - var/removing_zone = href_list["minor_clear"] - for(var/zone in minor_air_alarms) - if(ckey(zone) == removing_zone) - to_chat(usr, "Minor Alert for area [zone] cleared.") - minor_air_alarms -= zone - - computer.updateUsrDialog() diff --git a/code/game/machinery/computer3/computers/camera.dm b/code/game/machinery/computer3/computers/camera.dm deleted file mode 100644 index 0017a83531..0000000000 --- a/code/game/machinery/computer3/computers/camera.dm +++ /dev/null @@ -1,352 +0,0 @@ -/* - Camera monitoring computers - - NOTE: If we actually split the station camera network into regions that will help with sorting through the - tediously large list of cameras. The new camnet_key architecture lets you switch between keys easily, - so you don't lose the capability of seeing everything, you just switch to a subnet. -*/ - -/obj/machinery/computer3/security - default_prog = /datum/file/program/security - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/cameras) - spawn_files = list(/datum/file/camnet_key) - icon_state = "frame-sec" - - -/obj/machinery/computer3/security/wooden_tv - name = "security cameras" - desc = "An old TV hooked into the stations camera network." - icon = 'icons/obj/computer.dmi' - icon_state = "security_det" - - legacy_icon = 1 - allow_disassemble = 0 - - // No operating system -/obj/machinery/computer3/security/wooden_tv/New() - ..(built=0) - os = program - circuitb.OS = os - - -/obj/machinery/computer3/security/mining - name = "Outpost Cameras" - desc = "Used to access the various cameras on the outpost." - spawn_files = list(/datum/file/camnet_key/mining) - -/* - Camera monitoring computers, wall-mounted -*/ -/obj/machinery/computer3/wall_comp/telescreen - default_prog = /datum/file/program/security - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/cameras) - spawn_files = list(/datum/file/camnet_key) - -/obj/machinery/computer3/wall_comp/telescreen/entertainment - desc = "Damn, they better have /tg/thechannel on these things." - spawn_files = list(/datum/file/camnet_key/entertainment) - - -/* - File containing an encrypted camera network key. - - (Where by encrypted I don't actually mean encrypted at all) -*/ -/datum/file/camnet_key - name = "Security Camera Network Main Key" - var/title = "Station" - var/desc = "Connects to station security cameras." - var/networks = list("ALL") // A little workaround as it is not possible to place station_networks here - var/screen = "cameras" - -/datum/file/camnet_key/execute(var/datum/file/source) - if(istype(source,/datum/file/program/security)) - var/datum/file/program/security/prog = source - prog.key = src - prog.camera_list = null - return - if(istype(source,/datum/file/program/ntos)) - for(var/obj/item/part/computer/storage/S in list(computer.hdd,computer.floppy)) - for(var/datum/file/F in S.files) - if(istype(F,/datum/file/program/security)) - var/datum/file/program/security/Sec = F - Sec.key = src - Sec.camera_list = null - Sec.execute(source) - return - computer.Crash(MISSING_PROGRAM) - -/datum/file/camnet_key/New() - for(var/N in networks) - if(N == "ALL") - networks = using_map.station_networks - break - return ..() - -/datum/file/camnet_key/mining - name = "Mining Camera Network Key" - title = "mining station" - desc = "Connects to mining security cameras." - networks = list(NETWORK_MINE) - screen = "miningcameras" - -/datum/file/camnet_key/research - name = "Research Camera Network Key" - title = "research" - networks = list(NETWORK_RESEARCH) - -/datum/file/camnet_key/bombrange - name = "R&D Bomb Range Camera Network Key" - title = "bomb range" - desc = "Monitors the bomb range." - networks = list(NETWORK_RESEARCH) - -/datum/file/camnet_key/xeno - name = "R&D Misc. Research Camera Network Key" - title = "special research" - networks = list(NETWORK_RESEARCH) - -/datum/file/camnet_key/singulo - name = "Singularity Camera Network Key" - title = "singularity" - networks = list(NETWORK_ENGINE) - -/datum/file/camnet_key/entertainment - name = "Entertainment Channel Encryption Key" - title = "entertainment" - desc = "Damn, I hope they have /tg/thechannel on here." - networks = list(NETWORK_THUNDER) - screen = "entertainment" - -/datum/file/camnet_key/creed - name = "Special Ops Camera Encryption Key" - title = "special ops" - desc = "Connects to special ops secure camera feeds." - networks = list(NETWORK_ERT) - -/datum/file/camnet_key/prison - name = "Prison Camera Network Key" - title = "prison" - desc = "Monitors the prison." - networks = list(NETWORK_SECURITY) - -/datum/file/camnet_key/syndicate - name = "Camera Network Key" - title = "%!#BUFFER OVERFLOW" - desc = "Connects to security cameras." - networks = list("ALL") - hidden_file = 1 - - -/* - Computer part needed to connect to cameras -*/ - -/obj/item/part/computer/networking/cameras - name = "camera network access module" - desc = "Connects a computer to the camera network." - - // I have no idea what the following does - var/mapping = 0//For the overview file, interesting bit of code. - - //proc/camera_list(var/datum/file/camnet_key/key) -/obj/item/part/computer/networking/cameras/get_machines(var/datum/file/camnet_key/key) - if (!computer || computer.z > 6) - return null - - cameranet.process_sort() - - var/list/L = list() - for(var/obj/machinery/camera/C in cameranet.cameras) - var/list/temp = C.network & key.networks - if(temp.len) - L.Add(C) - - return L - -/obj/item/part/computer/networking/cameras/verify_machine(var/obj/machinery/camera/C,var/datum/file/camnet_key/key = null) - if(!istype(C) || !C.can_use()) - return 0 - - if(key) - var/list/temp = C.network & key.networks - if(!temp.len) - return 0 - return 1 - -/* - Camera monitoring program - - The following things should break you out of the camera view: - * The computer resetting, being damaged, losing power, etc - * The program quitting - * Closing the window - * Going out of range of the computer - * Becoming incapacitated - * The camera breaking, emping, disconnecting, etc -*/ - -/datum/file/program/security - name = "camera monitor" - desc = "Connects to the station camera network." - image = 'icons/ntos/camera.png' - active_state = "camera-static" - - var/datum/file/camnet_key/key = null - var/last_pic = 1.0 - var/last_camera_refresh = 0 - var/camera_list = null - - var/obj/machinery/camera/current = null - -/datum/file/program/security/execute(var/datum/file/program/caller) - ..(caller) - if(computer && !key) - var/list/fkeys = computer.list_files(/datum/file/camnet_key) - if(fkeys && fkeys.len) - key = fkeys[1] - update_icon() - computer.update_icon() - for(var/mob/living/L in viewers(1)) - if(!istype(L,/mob/living/silicon/ai) && L.machine == src) - L.reset_view(null) - - -/datum/file/program/security/Reset() - ..() - reset_current() - for(var/mob/living/L in viewers(1)) - if(!istype(L,/mob/living/silicon/ai) && L.machine == src) - L.reset_view(null) - -/datum/file/program/security/interact() - if(!interactable()) - return - - if(!computer.camnet) - computer.Crash(MISSING_PERIPHERAL) - return - - if(!key) - var/list/fkeys = computer.list_files(/datum/file/camnet_key) - if(fkeys && fkeys.len) - key = fkeys[1] - update_icon() - computer.update_icon() - if(!key) - return - - if(computer.camnet.verify_machine(current)) - usr.reset_view(current) - - if(world.time - last_camera_refresh > 50 || !camera_list) - last_camera_refresh = world.time - - var/list/temp_list = computer.camnet.get_machines(key) - - camera_list = "Network Key: [key.title] [topic_link(src,"keyselect","\[ Select key \]")]
    " - for(var/obj/machinery/camera/C in temp_list) - if(C.can_use()) - camera_list += "[C.c_tag] - [topic_link(src,"show=\ref[C]","Show")]
    " - else - camera_list += "[C.c_tag] - DEACTIVATED
    " - //camera_list += "
    " + topic_link(src,"close","Close") - - popup.set_content(camera_list) - popup.open() - - -/datum/file/program/security/update_icon() - if(key) - overlay.icon_state = key.screen - name = key.title + " Camera Monitor" - else - overlay.icon_state = "camera-static" - name = initial(name) - - - -/datum/file/program/security/Topic(var/href,var/list/href_list) - if(!interactable() || !computer.camnet || ..(href,href_list)) - return - - if("show" in href_list) - var/obj/machinery/camera/C = locate(href_list["show"]) - if(istype(C) && C.can_use()) - set_current(C) - usr.reset_view(C) - interact() - return - - if("keyselect" in href_list) - reset_current() - usr.reset_view(null) - key = input(usr,"Select a camera network key:", "Key Select", null) as null|anything in computer.list_files(/datum/file/camnet_key) - select_key(key) - if(key) - interact() - else - to_chat(usr, "The screen turns to static.") - return - -/datum/file/program/security/proc/select_key(var/selected_key) - key = selected_key - camera_list = null - update_icon() - computer.update_icon() - -/datum/file/program/security/proc/set_current(var/obj/machinery/camera/C) - if(current == C) - return - - if(current) - reset_current() - - src.current = C - if(current) - var/mob/living/L = current.loc - if(istype(L)) - L.tracking_initiated() - -/datum/file/program/security/proc/reset_current() - if(current) - var/mob/living/L = current.loc - if(istype(L)) - L.tracking_cancelled() - current = null - - // Atlantis: Required for camnetkeys to work. -/datum/file/program/security/hidden - hidden_file = 1 - -/* - Camera monitoring program - - Works much as the parent program, except: - * It requires a camera to be found using the proximity network card. - * It begins with all cam-access. -*/ - -/datum/file/program/security/syndicate - name = "camer# moni!%r" - desc = "Cons the Nanotrash Camera Network" - var/special_key = new/datum/file/camnet_key/syndicate - var/camera_conn = null - -/datum/file/program/security/syndicate/interact() - if(!interactable()) - return - - if(!computer.net) - computer.Crash(MISSING_PERIPHERAL) - return - - camera_conn = computer.net.connect_to(/obj/machinery/camera,camera_conn) - - if(!camera_conn) - computer.Crash(NETWORK_FAILURE) - return - - // On interact, override camera key selection - select_key(special_key) - ..() diff --git a/code/game/machinery/computer3/computers/communications.dm b/code/game/machinery/computer3/computers/communications.dm deleted file mode 100644 index de4f9c3dc1..0000000000 --- a/code/game/machinery/computer3/computers/communications.dm +++ /dev/null @@ -1,422 +0,0 @@ -/obj/machinery/computer3/communications - default_prog = /datum/file/program/communications - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace) - -/obj/machinery/computer3/communications/captain - default_prog = /datum/file/program/communications - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/cardslot/dual) - spawn_files = list(/datum/file/program/card_comp, /datum/file/program/security, /datum/file/program/crew, /datum/file/program/arcade, - /datum/file/camnet_key, /datum/file/camnet_key/entertainment, /datum/file/camnet_key/singulo) - - -/datum/file/program/communications - var/const/STATE_DEFAULT = 1 - var/const/STATE_CALLSHUTTLE = 2 - var/const/STATE_CANCELSHUTTLE = 3 - var/const/STATE_MESSAGELIST = 4 - var/const/STATE_VIEWMESSAGE = 5 - var/const/STATE_DELMESSAGE = 6 - var/const/STATE_STATUSDISPLAY = 7 - var/const/STATE_ALERT_LEVEL = 8 - var/const/STATE_CONFIRM_LEVEL = 9 - - -/datum/file/program/communications - name = "CentCom communications relay" - desc = "Used to connect to CentCom." - active_state = "comm" - req_access = list(access_heads) - - var/prints_intercept = 1 - var/authenticated = 0 - var/list/messagetitle = list() - var/list/messagetext = list() - var/currmsg = 0 - var/aicurrmsg = 0 - var/state = STATE_DEFAULT - var/aistate = STATE_DEFAULT - var/message_cooldown = 0 - var/centcomm_message_cooldown = 0 - var/tmp_alertlevel = 0 - - var/status_display_freq = "1435" - var/stat_msg1 - var/stat_msg2 - - var/datum/announcement/priority/crew_announcement = new - -/datum/file/program/communications/New() - ..() - crew_announcement.newscast = 1 - -/datum/file/program/communications/Reset() - ..() - authenticated = 0 - state = STATE_DEFAULT - aistate = STATE_DEFAULT - - -/datum/file/program/communications/Topic(var/href, var/list/href_list) - if(!interactable() || !computer.radio || ..(href,href_list) ) - return - if (computer.z > 1) - to_chat(usr, "Unable to establish a connection: You're too far away from the station!") - return - - if("main" in href_list) - state = STATE_DEFAULT - - if("login" in href_list) - var/mob/M = usr - var/obj/item/I = M.get_active_hand() - if(I) - I = I.GetID() - if(istype(I,/obj/item/weapon/card/id) && check_access(I)) - authenticated = 1 - if(access_captain in I.GetAccess()) - authenticated = 2 - crew_announcement.announcer = GetNameAndAssignmentFromId(I) - if(istype(I,/obj/item/weapon/card/emag)) - authenticated = 2 - computer.emagged = 1 - - if("logout" in href_list) - authenticated = 0 - crew_announcement.announcer = "" - - if("swipeidseclevel" in href_list) - var/mob/M = usr - var/obj/item/I = M.get_active_hand() - I = I.GetID() - - if (istype(I,/obj/item/weapon/card/id)) - if(access_captain in I.GetAccess()) - var/old_level = security_level - if(!tmp_alertlevel) - tmp_alertlevel = SEC_LEVEL_GREEN - if(tmp_alertlevel < SEC_LEVEL_GREEN) - tmp_alertlevel = SEC_LEVEL_GREEN - if(tmp_alertlevel > SEC_LEVEL_BLUE) - tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this - set_security_level(tmp_alertlevel) - if(security_level != old_level) - //Only notify the admins if an actual change happened - log_game("[key_name(usr)] has changed the security level to [get_security_level()].") - message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") - switch(security_level) - if(SEC_LEVEL_GREEN) - feedback_inc("alert_comms_green",1) - if(SEC_LEVEL_YELLOW) - feedback_inc("alert_comms_yellow",1) - if(SEC_LEVEL_VIOLET) - feedback_inc("alert_comms_violet",1) - if(SEC_LEVEL_ORANGE) - feedback_inc("alert_comms_orange",1) - if(SEC_LEVEL_BLUE) - feedback_inc("alert_comms_blue",1) - tmp_alertlevel = 0 - else - to_chat(usr, "You are not authorized to do this.") - tmp_alertlevel = 0 - state = STATE_DEFAULT - else - to_chat(usr, "You need to swipe your ID.") - - if("announce" in href_list) - if(authenticated==2) - if(message_cooldown) - usr << "Please allow at least one minute to pass between announcements" - return - var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") - if(!input || !interactable()) - return - crew_announcement.Announce(input) - message_cooldown = 1 - spawn(600)//One minute cooldown - message_cooldown = 0 - - if("callshuttle" in href_list) - state = STATE_DEFAULT - if(authenticated) - state = STATE_CALLSHUTTLE - - if("callshuttle2" in href_list) - if(!computer.radio.subspace) - return - if(authenticated) - call_shuttle_proc(usr) - if(emergency_shuttle.online()) - post_status("shuttle") - state = STATE_DEFAULT - - if("cancelshuttle" in href_list) - state = STATE_DEFAULT - if(authenticated) - state = STATE_CANCELSHUTTLE - - if("messagelist" in href_list) - currmsg = 0 - state = STATE_MESSAGELIST - - if("viewmessage" in href_list) - state = STATE_VIEWMESSAGE - if (!currmsg) - if(href_list["message-num"]) - currmsg = text2num(href_list["message-num"]) - else - state = STATE_MESSAGELIST - - if("delmessage" in href_list) - state = (currmsg) ? STATE_DELMESSAGE : STATE_MESSAGELIST - - if("delmessage2" in href_list) - if(authenticated) - if(currmsg) - var/title = messagetitle[currmsg] - var/text = messagetext[currmsg] - messagetitle.Remove(title) - messagetext.Remove(text) - if(currmsg == aicurrmsg) - aicurrmsg = 0 - currmsg = 0 - state = STATE_MESSAGELIST - else - state = STATE_VIEWMESSAGE - - if("status" in href_list) - state = STATE_STATUSDISPLAY - - // Status display stuff - if("setstat" in href_list) - switch(href_list["statdisp"]) - if("message") - post_status("message", stat_msg1, stat_msg2) - if("alert") - post_status("alert", href_list["alert"]) - else - post_status(href_list["statdisp"]) - - if("setmsg1" in href_list) - stat_msg1 = reject_bad_text(sanitize(input("Line 1", "Enter Message Text", stat_msg1) as text|null, 40), 40) - computer.updateDialog() - - if("setmsg2" in href_list) - stat_msg2 = reject_bad_text(sanitize(input("Line 2", "Enter Message Text", stat_msg2) as text|null, 40), 40) - computer.updateDialog() - - // OMG CENTCOM LETTERHEAD - if("MessageCentCom" in href_list) - if(!computer.radio.subspace) - return - if(authenticated==2) - if(centcomm_message_cooldown) - to_chat(usr, "Arrays recycling. Please stand by.") - return - var/input = sanitize(input("Please choose a message to transmit to [using_map.boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "")) - if(!input || !interactable()) - return - CentCom_announce(input, usr) - to_chat(usr, "Message transmitted.") - log_game("[key_name(usr)] has made a [using_map.boss_short] announcement: [input]") - centcomm_message_cooldown = 1 - spawn(600)//10 minute cooldown - centcomm_message_cooldown = 0 - - // OMG SYNDICATE ...LETTERHEAD - if("MessageSyndicate" in href_list) - if((authenticated==2) && (computer.emagged)) - if(centcomm_message_cooldown) - to_chat(usr, "Arrays recycling. Please stand by.") - return - var/input = sanitize(input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "")) - if(!input || !interactable()) - return - Syndicate_announce(input, usr) - to_chat(usr, "Message transmitted.") - log_game("[key_name(usr)] has made an illegal announcement: [input]") - centcomm_message_cooldown = 1 - spawn(600)//10 minute cooldown - centcomm_message_cooldown = 0 - - if("RestoreBackup" in href_list) - to_chat(usr, "Backup routing data restored!") - computer.emagged = 0 - computer.updateDialog() - - - // AI interface - if("ai-main" in href_list) - aicurrmsg = 0 - aistate = STATE_DEFAULT - - if("ai-callshuttle" in href_list) - aistate = STATE_CALLSHUTTLE - - if("ai-callshuttle2" in href_list) - if(!computer.radio.subspace) - return - call_shuttle_proc(usr) - aistate = STATE_DEFAULT - - if("ai-messagelist" in href_list) - aicurrmsg = 0 - aistate = STATE_MESSAGELIST - - if("ai-viewmessage" in href_list) - aistate = STATE_VIEWMESSAGE - if (!aicurrmsg) - if(href_list["message-num"]) - aicurrmsg = text2num(href_list["message-num"]) - else - aistate = STATE_MESSAGELIST - - if("ai-delmessage" in href_list) - aistate = (aicurrmsg) ? STATE_DELMESSAGE : STATE_MESSAGELIST - - if("ai-delmessage2" in href_list) - if(aicurrmsg) - var/title = messagetitle[aicurrmsg] - var/text = messagetext[aicurrmsg] - messagetitle.Remove(title) - messagetext.Remove(text) - if(currmsg == aicurrmsg) - currmsg = 0 - aicurrmsg = 0 - aistate = STATE_MESSAGELIST - - if("ai-status" in href_list) - aistate = STATE_STATUSDISPLAY - - if("securitylevel" in href_list) - tmp_alertlevel = text2num( href_list["newalertlevel"] ) - if(!tmp_alertlevel) tmp_alertlevel = 0 - state = STATE_CONFIRM_LEVEL - - if("changeseclevel" in href_list) - state = STATE_ALERT_LEVEL - - computer.updateUsrDialog() - - - -/datum/file/program/communications/proc/main_menu() - var/dat = "" - if (computer.radio.subspace) - if(emergency_shuttle.online() && emergency_shuttle.location()) - var/timeleft = emergency_shuttle.estimate_arrival_time() - dat += "Emergency shuttle\n
    \nETA: [timeleft / 60 % 60]:[add_zero(num2text(timeleft % 60), 2)]
    " - refresh = 1 - else - refresh = 0 - if (authenticated) - dat += "
    \[ Log Out \]" - if (authenticated==2) - dat += "
    \[ Make An Announcement \]" - if(computer.emagged == 0) - dat += "
    \[ Send an emergency message to [using_map.boss_short] \]" - else - dat += "
    \[ Send an emergency message to \[UNKNOWN\] \]" - dat += "
    \[ Restore Backup Routing Data \]" - - dat += "
    \[ Change alert level \]" - if(emergency_shuttle.location()) - if (emergency_shuttle.online()) - dat += "
    \[ Cancel Shuttle Call \]" - else - dat += "
    \[ Call Emergency Shuttle \]" - - dat += "
    \[ Set Status Display \]" - else - dat += "
    \[ Log In \]" - dat += "
    \[ Message List \]" - return dat - -/datum/file/program/communications/proc/confirm_menu(var/prompt,var/yes_option) - return "Are you sure you want to [prompt]? \[ [topic_link(src,yes_option,"OK")] | [topic_link(src,"main","Cancel")] \]" - -/datum/file/program/communications/interact() - if(!interactable()) - return - if(!computer.radio) - computer.Crash(MISSING_PERIPHERAL) - return - - var/dat = "" - switch(state) - if(STATE_DEFAULT) - dat = main_menu() - if(STATE_CALLSHUTTLE) - dat = confirm_menu("call the shuttle","callshuttle2") - if(STATE_CANCELSHUTTLE) - dat = confirm_menu("cancel the shuttle","cancelshuttle2") - if(STATE_MESSAGELIST) - dat += "Messages:" - for(var/i = 1; i<=messagetitle.len; i++) - dat += "
    [messagetitle[i]]" - if(STATE_VIEWMESSAGE) - if (currmsg) - dat += "[messagetitle[currmsg]]

    [messagetext[currmsg]]" - if (authenticated) - dat += "

    \[ Delete \]" - else - state = STATE_MESSAGELIST - interact() - return - if(STATE_DELMESSAGE) - if (currmsg) - dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" - else - state = STATE_MESSAGELIST - interact() - return - if(STATE_STATUSDISPLAY) - dat += "\[ Back \]
    " - dat += "Set Status Displays
    " - dat += "\[ Clear \]
    " - dat += "\[ Station Time \]" - dat += "\[ Shuttle ETA \]
    " - dat += "\[ Message \]" - dat += "
    " - dat += "\[ Alert: None |" - dat += " Red Alert |" - dat += " Lockdown |" - dat += " Biohazard \]

    " - if(STATE_ALERT_LEVEL) - dat += "Current alert level: [get_security_level()]
    " - if(security_level == SEC_LEVEL_DELTA) - dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." - else - dat += "Blue
    " - dat += "Orange
    " - dat += "Violet
    " - dat += "Yellow
    " - dat += "Green" - if(STATE_CONFIRM_LEVEL) - dat += "Current alert level: [get_security_level()]
    " - dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]
    " - dat += "Swipe ID to confirm change.
    " - - popup.set_content(dat) - popup.open() - - -/datum/file/program/communications/proc/post_status(var/command, var/data1, var/data2) - var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) - - if(!frequency) - return - - var/datum/signal/status_signal = new - status_signal.source = src - status_signal.transmission_method = 1 - status_signal.data["command"] = command - - switch(command) - if("message") - status_signal.data["msg1"] = data1 - status_signal.data["msg2"] = data2 - if("alert") - status_signal.data["picture_state"] = data1 - - frequency.post_signal(src, status_signal) diff --git a/code/game/machinery/computer3/computers/crew.dm b/code/game/machinery/computer3/computers/crew.dm deleted file mode 100644 index e0112532dd..0000000000 --- a/code/game/machinery/computer3/computers/crew.dm +++ /dev/null @@ -1,76 +0,0 @@ -/obj/machinery/computer3/crew - default_prog = /datum/file/program/crew - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) - icon_state = "frame-med" - -/datum/file/program/crew - name = "Crew Monitoring Console" - desc = "Used to monitor active health sensors built into most of the crew's uniforms." - active_state = "crew" - var/list/tracked = list( ) - -/datum/file/program/crew/interact(mob/user) - if(!interactable()) - return - - scan() - var/t = "Crew Monitoring
    " - t += "
    Refresh " - t += "Close
    " - t += "" - var/list/logs = list() - for(var/obj/item/clothing/under/C in src.tracked) - var/log = "" - var/turf/pos = get_turf(C) - if((C) && (C.has_sensor) && (pos) && (pos.z == computer.z) && C.sensor_mode) - if(istype(C.loc, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = C.loc - - var/dam1 = round(H.getOxyLoss(),1) - var/dam2 = round(H.getToxLoss(),1) - var/dam3 = round(H.getFireLoss(),1) - var/dam4 = round(H.getBruteLoss(),1) - - var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]" - var/damage_report = "([dam1]/[dam2]/[dam3]/[dam4])" - - log += "" - - switch(C.sensor_mode) - if(1) - log += "" - if(2) - log += "" - if(3) - var/area/player_area = get_area(H) - log += "" - logs += log - logs = sortList(logs) - for(var/log in logs) - t += log - t += "
    NameVitalsPosition
    [H.get_authentification_name()] ([H.get_assignment()])[life_status]Not Available
    [life_status] [damage_report]Not Available
    [life_status] [damage_report][sanitize(player_area.name)] ([pos.x], [pos.y])
    " - t += "
    " - - popup.set_content(t) - popup.open() - - -/datum/file/program/crew/proc/scan() - for(var/obj/item/clothing/under/C in world) - if((C.has_sensor) && (istype(C.loc, /mob/living/carbon/human))) - tracked |= C - return 1 - -/datum/file/program/crew/Topic(href, list/href_list) - if(!interactable() || !computer.cardslot || ..(href,href_list)) - return - - if( href_list["close"] ) - usr << browse(null, "window=crewcomp") - usr.unset_machine() - return - - if(href_list["update"]) - interact() - //src.updateUsrDialog() - return diff --git a/code/game/machinery/computer3/computers/customs.dm b/code/game/machinery/computer3/computers/customs.dm deleted file mode 100644 index bca73055b8..0000000000 --- a/code/game/machinery/computer3/computers/customs.dm +++ /dev/null @@ -1,3 +0,0 @@ -/obj/machinery/computer3/customs - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras) - spawn_files = list(/datum/file/program/arcade,/datum/file/program/security,/datum/file/camnet_key/entertainment,/datum/file/program/crew) \ No newline at end of file diff --git a/code/game/machinery/computer3/computers/law.dm b/code/game/machinery/computer3/computers/law.dm deleted file mode 100644 index e79b09c9e9..0000000000 --- a/code/game/machinery/computer3/computers/law.dm +++ /dev/null @@ -1,84 +0,0 @@ - - -/obj/machinery/computer3/aiupload - name = "AI Upload" - desc = "Used to upload laws to the AI." - icon_state = "frame-rnd" - circuit = /obj/item/weapon/circuitboard/aiupload - var/mob/living/silicon/ai/current = null - var/opened = 0 - - -/obj/machinery/computer3/aiupload/verb/AccessInternals() - set category = "Object" - set name = "Access Computer's Internals" - set src in oview(1) - if(!Adjacent(usr) || usr.restrained() || usr.lying || usr.stat || istype(usr, /mob/living/silicon) || !istype(usr, /mob/living)) - return - - opened = !opened - if(opened) - to_chat(usr, "The access panel is now open.") - else - to_chat(usr, "The access panel is now closed.") - return - - -/obj/machinery/computer3/aiupload/attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob) - if (user.z > 6) - to_chat(user, "Unable to establish a connection: You're too far away from the station!") - return - if(istype(module, /obj/item/weapon/aiModule)) - module.install(src, user) - else - return ..() - - -/obj/machinery/computer3/aiupload/attack_hand(var/mob/user as mob) - if(src.stat & NOPOWER) - to_chat(user, "The upload computer has no power!") - return - if(src.stat & BROKEN) - to_chat(user, "The upload computer is broken!") - return - - src.current = select_active_ai(user) - - if (!src.current) - to_chat(user, "No active AIs detected.") - else - to_chat(user, "[src.current.name] selected for law changes.") - return - - - -/obj/machinery/computer3/borgupload - name = "Cyborg Upload" - desc = "Used to upload laws to Cyborgs." - icon_state = "frame-rnd" - circuit = /obj/item/weapon/circuitboard/borgupload - var/mob/living/silicon/robot/current = null - - -/obj/machinery/computer3/borgupload/attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob) - if(istype(module, /obj/item/weapon/aiModule)) - module.install(src, user) - else - return ..() - - -/obj/machinery/computer3/borgupload/attack_hand(var/mob/user as mob) - if(src.stat & NOPOWER) - to_chat(user, "The upload computer has no power!") - return - if(src.stat & BROKEN) - to_chat(user, "The upload computer is broken!") - return - - src.current = freeborg() - - if (!src.current) - to_chat(user, "No free cyborgs detected.") - else - to_chat(user, "[src.current.name] selected for law changes.") - return diff --git a/code/game/machinery/computer3/computers/medical.dm b/code/game/machinery/computer3/computers/medical.dm deleted file mode 100644 index d1f20c7363..0000000000 --- a/code/game/machinery/computer3/computers/medical.dm +++ /dev/null @@ -1,512 +0,0 @@ -/* - I hate to make this a todo, but I cannot possibly complete all of computer3 - if I have to rearchitecture datacores and everything else that uses them right now. - - In the future the datacore should probably be a server, perhaps on station, perhaps on centcom, - with data records as files probably. It's not difficult unless you're trying to do a million - impossible things before breakfast. -*/ - -/obj/machinery/computer3/med_data - default_prog = /datum/file/program/med_data - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) - - -/obj/machinery/computer3/laptop/medical - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) - spawn_files = list(/datum/file/program/arcade,/datum/file/program/crew,/datum/file/program/med_data) - -/datum/file/program/med_data - name = "Medical Records" - desc = "This can be used to check medical records." - active_state = "medcomp" - req_one_access = list(access_medical, access_forensics_lockers) - - var/obj/item/weapon/card/id/scan = null - var/obj/item/weapon/card/id/scan2 = null - var/authenticated = null - var/rank = null - var/screen = null - var/datum/data/record/active1 = null - var/datum/data/record/active2 = null - var/a_id = null - var/temp = null - var/printing = null - - -/datum/file/program/med_data/proc/authenticate() - if(isAI(usr) || access_medical in scan.access) - return 1 - return 0 - -/datum/file/program/med_data/interact() - if(!computer.cardslot) - computer.Crash(MISSING_PERIPHERAL) - return - usr.set_machine(src) - scan = computer.cardslot.reader - if(!interactable()) - return - if(computer.z > 6) - to_chat(usr, "Unable to establish a connection: You're too far away from the station!") - return - var/dat - - if (temp) - dat = text("[src.temp]

    Clear Screen") - else - dat = text("Confirm Identity (R): []
    ", src, (scan ? text("[]", scan.name) : "----------")) - if (istype(computer.cardslot, /obj/item/part/computer/cardslot/dual)) - dat += text("Check Identity (W): []
    ", src, (scan2 ? text("[]", scan2.name) : "----------")) - if(scan2 && !scan) - dat += text("
    Insert card into reader slot to log in.

    ") - - if (src.authenticated) - switch(src.screen) - if(1.0) - dat += {" - Search Records -
    List Records -
    -
    Virus Database -
    Medbot Tracking -
    -
    Record Maintenance -
    {Log Out}
    - "} - if(2.0) - dat += "Record List:
    " - if(!isnull(data_core.general)) - for(var/datum/data/record/R in sortRecord(data_core.general)) - dat += text("[]: []
    ", src, R, R.fields["id"], R.fields["name"]) - //Foreach goto(132) - dat += text("
    Back", src) - if(3.0) - dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) - if(4.0) - dat += "
    Medical Record

    " - if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) - var/icon/front = active1.fields["photo_front"] - var/icon/side = active1.fields["photo_side"] - usr << browse_rsc(front, "front.png") - usr << browse_rsc(side, "side.png") - - dat += "
    Name: [active1.fields["name"]] \ - ID: [active1.fields["id"]]
    \n \ - Entity Classification: [active1.fields["brain_type"]]
    \n \ - Sex: [active1.fields["sex"]]
    \n \ - Age: [active1.fields["age"]]
    \n \ - Fingerprint: [active1.fields["fingerprint"]]
    \n \ - Physical Status: [active1.fields["p_stat"]]
    \n \ - Mental Status: [active1.fields["m_stat"]]
    \ - Photo:
    " - else - dat += "General Record Lost!
    " - if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) - dat += text("
    \n
    Medical Data

    \nBlood Type: []
    \nDNA: []
    \n
    \nMinor Disabilities: []
    \nDetails: []
    \n
    \nMajor Disabilities: []
    \nDetails: []
    \n
    \nAllergies: []
    \nDetails: []
    \n
    \nCurrent Diseases: [] (per disease info placed in log/comment section)
    \nDetails: []
    \n
    \nImportant Notes:
    \n\t[]
    \n
    \n
    Comments/Log

    ", src, src.active2.fields["b_type"], src, src.active2.fields["b_dna"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, decode(src.active2.fields["notes"])) - var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) - dat += text("[]
    Delete Entry

    ", src.active2.fields[text("com_[]", counter)], src, counter) - counter++ - dat += text("Add Entry

    ", src) - dat += text("Delete Record (Medical Only)

    ", src) - else - dat += "Medical Record Lost!
    " - dat += text("New Record

    ") - dat += text("\nPrint Record
    \nBack
    ", src, src) - if(5.0) - dat += "
    Virus Database
    " - for (var/ID in virusDB) - var/datum/data/record/v = virusDB[ID] - dat += "
    [v.fields["name"]]" - - dat += "
    Back" - if(6.0) - dat += "
    Medical Robot Monitor
    " - dat += "Back" - dat += "
    Medical Robots:" - var/bdat = null - for(var/mob/living/bot/medbot/M in mob_list) - - if(M.z != computer.z) continue //only find medibots on the same z-level as the computer - var/turf/bl = get_turf(M) - if(bl) //if it can't find a turf for the medibot, then it probably shouldn't be showing up - bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.on ? "Online" : "Offline"]
    " - if((!isnull(M.reagent_glass)) && M.use_beaker) - bdat += "Reservoir: \[[M.reagent_glass.reagents.total_volume]/[M.reagent_glass.reagents.maximum_volume]\]
    " - else - bdat += "Using Internal Synthesizer.
    " - if(!bdat) - dat += "
    None detected
    " - else - dat += "
    [bdat]" - - else - dat += text("{Log In}", src) - popup.width = 600 - popup.height = 400 - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) - popup.open() - return - -/datum/file/program/med_data/Topic(href, href_list) - if(!interactable() || !computer.cardslot || ..(href,href_list)) - return - if(!data_core.general.Find(src.active1)) - src.active1 = null - if(!data_core.medical.Find(src.active2)) - src.active2 = null - - if(href_list["temp"]) - src.temp = null - - if(href_list["cardr"]) - if(scan) - if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) - computer.cardslot.remove(usr, 1) - else - scan.loc = get_turf(src) - scan = null - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/weapon/card/id)) - computer.cardslot.insert(I, usr) - scan = I - - if(href_list["cardw"]) - if(scan2) - if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) - computer.cardslot.remove(usr, 2) - else - scan2.loc = get_turf(src) - scan2 = null - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/weapon/card/id)) - computer.cardslot.insert(I, usr, 2) - scan2 = I - - else if(href_list["logout"]) - src.authenticated = null - src.screen = null - src.active1 = null - src.active2 = null - - else if(href_list["login"]) - - if(isAI(usr)) - src.active1 = null - src.active2 = null - src.authenticated = usr.name - src.rank = "AI" - src.screen = 1 - - else if(isrobot(usr)) - src.active1 = null - src.active2 = null - src.authenticated = usr.name - var/mob/living/silicon/robot/R = usr - src.rank = "[R.modtype] [R.braintype]" - src.screen = 1 - - else if(istype(src.scan, /obj/item/weapon/card/id)) - src.active1 = null - src.active2 = null - - if(src.check_access(src.scan)) - src.authenticated = src.scan.registered_name - src.rank = src.scan.assignment - src.screen = 1 - - if(src.authenticated) - - if(href_list["screen"]) - src.screen = text2num(href_list["screen"]) - if(src.screen < 1) - src.screen = 1 - - src.active1 = null - src.active2 = null - - if(href_list["vir"]) - var/datum/data/record/v = locate(href_list["vir"]) - src.temp = "
    GNAv2 based virus lifeform V-[v.fields["id"]]
    " - src.temp += "
    Name: [v.fields["name"]]" - src.temp += "
    Antigen: [v.fields["antigen"]]" - src.temp += "
    Spread: [v.fields["spread type"]] " - src.temp += "
    Details:
    [v.fields["description"]]" - - if(href_list["del_all"]) - src.temp = text("Are you sure you wish to delete all records?
    \n\tYes
    \n\tNo
    ", src, src) - - if(href_list["del_all2"]) - for(var/datum/data/record/R in data_core.medical) - //R = null - qdel(R) - //Foreach goto(494) - src.temp = "All records deleted." - - if(href_list["field"]) - var/a1 = src.active1 - var/a2 = src.active2 - switch(href_list["field"]) - if("fingerprint") - if(istype(src.active1, /datum/data/record)) - var/t1 = sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active1 != a1) - return - src.active1.fields["fingerprint"] = t1 - if("sex") - if(istype(src.active1, /datum/data/record)) - if (src.active1.fields["sex"] == "Male") - src.active1.fields["sex"] = "Female" - else - src.active1.fields["sex"] = "Male" - if("age") - if(istype(src.active1, /datum/data/record)) - var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active1 != a1) - return - src.active1.fields["age"] = t1 - if("mi_dis") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["mi_dis"] = t1 - if("mi_dis_d") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["mi_dis_d"] = t1 - if("ma_dis") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["ma_dis"] = t1 - if("ma_dis_d") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["ma_dis_d"] = t1 - if("alg") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["alg"] = t1 - if("alg_d") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["alg_d"] = t1 - if("cdi") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["cdi"] = t1 - if("cdi_d") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["cdi_d"] = t1 - if("notes") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message, extra = 0) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["notes"] = t1 - if("p_stat") - if (istype(src.active1, /datum/data/record)) - src.temp = text("Physical Condition:
    \n\t*Deceased*
    \n\t*SSD*
    \n\tActive
    \n\tPhysically Unfit
    \n\tDisabled
    ", src, src, src, src, src) - if("m_stat") - if (istype(src.active1, /datum/data/record)) - src.temp = text("Mental Condition:
    \n\t*Insane*
    \n\t*Unstable*
    \n\t*Watch*
    \n\tStable
    ", src, src, src, src) - if("b_type") - if (istype(src.active2, /datum/data/record)) - src.temp = text("Blood Type:
    \n\tA- A+
    \n\tB- B+
    \n\tAB- AB+
    \n\tO- O+
    ", src, src, src, src, src, src, src, src) - if("b_dna") - if(istype(src.active2, /datum/data/record)) - var/t1 = sanitize(input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) as text) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - src.active2.fields["b_dna"] = t1 - if("vir_name") - var/datum/data/record/v = locate(href_list["edit_vir"]) - if(v) - var/t1 = sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text) - if (!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active1 != a1) - return - v.fields["name"] = t1 - if("vir_desc") - var/datum/data/record/v = locate(href_list["edit_vir"]) - if(v) - var/t1 = sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active1 != a1) - return - v.fields["description"] = t1 - - if(href_list["p_stat"]) - if(src.active1) - switch(href_list["p_stat"]) - if("deceased") - src.active1.fields["p_stat"] = "*Deceased*" - if("ssd") - src.active1.fields["p_stat"] = "*SSD*" - if("active") - src.active1.fields["p_stat"] = "Active" - if("unfit") - src.active1.fields["p_stat"] = "Physically Unfit" - if("disabled") - src.active1.fields["p_stat"] = "Disabled" - if(PDA_Manifest.len) - PDA_Manifest.Cut() - - if(href_list["m_stat"]) - if(src.active1) - switch(href_list["m_stat"]) - if("insane") - src.active1.fields["m_stat"] = "*Insane*" - if("unstable") - src.active1.fields["m_stat"] = "*Unstable*" - if("watch") - src.active1.fields["m_stat"] = "*Watch*" - if("stable") - src.active1.fields["m_stat"] = "Stable" - - if(href_list["b_type"]) - if(src.active2) - switch(href_list["b_type"]) - if("an") - src.active2.fields["b_type"] = "A-" - if("bn") - src.active2.fields["b_type"] = "B-" - if("abn") - src.active2.fields["b_type"] = "AB-" - if("on") - src.active2.fields["b_type"] = "O-" - if("ap") - src.active2.fields["b_type"] = "A+" - if("bp") - src.active2.fields["b_type"] = "B+" - if("abp") - src.active2.fields["b_type"] = "AB+" - if("op") - src.active2.fields["b_type"] = "O+" - - if(href_list["del_r"]) - if(src.active2) - src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
    \n\tYes
    \n\tNo
    ", src, src) - - if(href_list["del_r2"]) - if(src.active2) - //src.active2 = null - qdel(src.active2) - - if(href_list["d_rec"]) - var/datum/data/record/R = locate(href_list["d_rec"]) - var/datum/data/record/M = locate(href_list["d_rec"]) - if(!data_core.general.Find(R)) - src.temp = "Record Not Found!" - return - for(var/datum/data/record/E in data_core.medical) - if(E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]) - M = E - else - //Foreach continue //goto(2540) - src.active1 = R - src.active2 = M - src.screen = 4 - - if(href_list["new"]) - if(istype(src.active1, /datum/data/record) && !istype(src.active2, /datum/data/record)) - var/datum/data/record/R = new /datum/data/record( ) - R.fields["name"] = src.active1.fields["name"] - R.fields["id"] = src.active1.fields["id"] - R.name = text("Medical Record #[]", R.fields["id"]) - R.fields["b_type"] = "Unknown" - R.fields["b_dna"] = "Unknown" - R.fields["mi_dis"] = "None" - R.fields["mi_dis_d"] = "No minor disabilities have been declared." - R.fields["ma_dis"] = "None" - R.fields["ma_dis_d"] = "No major disabilities have been diagnosed." - R.fields["alg"] = "None" - R.fields["alg_d"] = "No allergies have been detected in this patient." - R.fields["cdi"] = "None" - R.fields["cdi_d"] = "No diseases have been diagnosed at the moment." - R.fields["notes"] = "No notes." - data_core.medical += R - src.active2 = R - src.screen = 4 - - if(href_list["add_c"]) - if(!istype(src.active2, /datum/data/record)) - return - var/a2 = src.active2 - var/t1 = sanitize(input("Add Comment:", "Med. records", null, null) as message) - if(!t1 || !src.authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || src.active2 != a2) - return - var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) - counter++ - src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]
    [t1]") - - if(href_list["del_c"]) - if(istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]) - src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" - - if(href_list["search"]) - var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text - if(!t1 || usr.stat || !src.authenticated || usr.restrained() || (!interactable() && !issilicon(usr))) - return - src.active1 = null - src.active2 = null - t1 = lowertext(t1) - for(var/datum/data/record/R in data_core.medical) - if(lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"])) - src.active2 = R - if (!src.active2) - src.temp = text("Could not locate record [].", t1) - else - for(var/datum/data/record/E in data_core.general) - if(E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"]) - src.active1 = E - src.screen = 4 - - if(href_list["print_p"]) - if(!src.printing) - src.printing = 1 - var/datum/data/record/record1 = null - var/datum/data/record/record2 = null - if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) - record1 = active1 - if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) - record2 = active2 - sleep(50) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( computer.loc ) - P.info = "
    Medical Record

    " - if(record1) - P.info += text("Name: [] ID: []
    \nSex: []
    \nAge: []
    \nFingerprint: []
    \nPhysical Status: []
    \nMental Status: []
    ", record1.fields["name"], record1.fields["id"], record1.fields["sex"], record1.fields["age"], record1.fields["fingerprint"], record1.fields["p_stat"], record1.fields["m_stat"]) - P.name = text("Medical Record ([])", record1.fields["name"]) - else - P.info += "General Record Lost!
    " - P.name = "Medical Record" - if(record2) - P.info += text("
    \n
    Medical Data

    \nBlood Type: []
    \nDNA: []
    \n
    \nMinor Disabilities: []
    \nDetails: []
    \n
    \nMajor Disabilities: []
    \nDetails: []
    \n
    \nAllergies: []
    \nDetails: []
    \n
    \nCurrent Diseases: [] (per disease info placed in log/comment section)
    \nDetails: []
    \n
    \nImportant Notes:
    \n\t[]
    \n
    \n
    Comments/Log

    ", record2.fields["b_type"], record2.fields["b_dna"], record2.fields["mi_dis"], record2.fields["mi_dis_d"], record2.fields["ma_dis"], record2.fields["ma_dis_d"], record2.fields["alg"], record2.fields["alg_d"], record2.fields["cdi"], record2.fields["cdi_d"], decode(record2.fields["notes"])) - var/counter = 1 - while(record2.fields[text("com_[]", counter)]) - P.info += text("[]
    ", record2.fields[text("com_[]", counter)]) - counter++ - else - P.info += "Medical Record Lost!
    " - P.info += "" - src.printing = null - interact() - return diff --git a/code/game/machinery/computer3/computers/power.dm b/code/game/machinery/computer3/computers/power.dm deleted file mode 100644 index b6830a4cd3..0000000000 --- a/code/game/machinery/computer3/computers/power.dm +++ /dev/null @@ -1,48 +0,0 @@ -/obj/machinery/computer3/powermonitor - default_prog = /datum/file/program/powermon - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/cable) - icon_state = "frame-eng" - -/datum/file/program/powermon - name = "power monitoring console" - desc = "It monitors APC status." - active_state = "power" - -/datum/file/program/powermon/proc/format(var/obj/machinery/power/apc/A) - var/static/list/S = list(" Off","AOff"," On", " AOn") - var/static/list/chg = list("N","C","F") - return "[copytext(add_tspace("\The [A.area]", 30), 1, 30)] [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] \ - [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]
    " - -/datum/file/program/powermon/interact() - if(!interactable()) - return - if(!computer.net) - computer.Crash(MISSING_PERIPHERAL) - return - var/list/L = computer.net.get_machines(/obj/machinery/power/apc) - var/t = "" - t += "Refresh

    " - if(!L || !L.len) - t += "No connection" - else - var/datum/powernet/powernet = computer.net.connect_to(/datum/powernet,null) - if(powernet) - t += "
    Total power: [powernet.avail] W
    Total load: [num2text(powernet.viewload,10)] W
    " - else - t += "
    Power statistics unavailable
    " - t += "" - - if(L.len > 0) - t += "Area Eqp./Lgt./Env. Load Cell
    " - for(var/obj/machinery/power/apc/A in L) - t += src.format(A) - t += "
    " - - popup.set_content(t) - popup.open() - -/datum/file/program/powermon/Topic(var/href, var/list/href_list) - if(!interactable() || ..(href,href_list)) - return - interact() diff --git a/code/game/machinery/computer3/computers/prisoner.dm b/code/game/machinery/computer3/computers/prisoner.dm deleted file mode 100644 index b702c25ba2..0000000000 --- a/code/game/machinery/computer3/computers/prisoner.dm +++ /dev/null @@ -1,106 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -/obj/machinery/computer3/prisoner - default_prog = /datum/file/program/prisoner - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) - icon_state = "frame-sec" - -/datum/file/program/prisoner - name = "Prisoner Management Console" - active_state = "explosive" - req_access = list(access_armory) - - var/id = 0.0 - var/temp = null - var/status = 0 - var/timeleft = 60 - var/stop = 0.0 - var/screen = 0 // 0 - No Access Denied, 1 - Access allowed - - -/datum/file/program/prisoner/interact() - if(!interactable()) - return - var/dat - dat += "Prisoner Implant Manager System
    " - if(screen == 0) - dat += "
    Unlock Console" - else if(screen == 1) - dat += "
    Chemical Implants
    " - var/turf/Tr = null - for(var/obj/item/weapon/implant/chem/C in all_chem_implants) - Tr = get_turf(C) - if((Tr) && (Tr.z != computer.z)) - continue //Out of range - if(!C.implanted) - continue - dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: " - dat += "((1))" - dat += "((5))" - dat += "((10))
    " - dat += "********************************
    " - dat += "
    Tracking Implants
    " - for(var/obj/item/weapon/implant/tracking/T in all_tracking_implants) - Tr = get_turf(T) - if((Tr) && (Tr.z != computer.z)) - continue //Out of range - if(!T.implanted) - continue - var/loc_display = "Unknown" - var/mob/living/carbon/M = T.imp_in - if(M.z in using_map.station_levels && !istype(M.loc, /turf/space)) - var/turf/mob_loc = get_turf(M) - loc_display = mob_loc.loc - if(T.malfunction) - loc_display = pick(teleportlocs) - dat += "ID: [T.id] | Location: [loc_display]
    " - dat += "(Send Message) |
    " - dat += "********************************
    " - dat += "
    Lock Console" - - popup.width = 400 - popup.height = 500 - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) - popup.open() - return - -/datum/file/program/prisoner/process() - if(!..()) - interact() - return - -/datum/file/program/prisoner/Topic(href, href_list) - if(!interactable() || ..(href,href_list)) - return - - if(href_list["inject1"]) - var/obj/item/weapon/implant/I = locate(href_list["inject1"]) - if(istype(I)) - I.activate(1) - - else if(href_list["inject5"]) - var/obj/item/weapon/implant/I = locate(href_list["inject5"]) - if(istype(I)) - I.activate(5) - - else if(href_list["inject10"]) - var/obj/item/weapon/implant/I = locate(href_list["inject10"]) - if(istype(I)) - I.activate(10) - - else if(href_list["lock"]) - screen = !screen - - else if(href_list["warn"]) - var/warning = sanitize(input(usr,"Message:","Enter your message here!","")) - if(!warning) return - var/obj/item/weapon/implant/I = locate(href_list["warn"]) - if(istype(I) && I.imp_in) - var/mob/living/carbon/R = I.imp_in - log_game("PrisonComputer3 message: [key_name(usr)]->[key_name(R)] : [warning]") - to_chat(R, "You hear a voice in your head saying: '[warning]'") - - interact() - return - - diff --git a/code/game/machinery/computer3/computers/robot.dm b/code/game/machinery/computer3/computers/robot.dm deleted file mode 100644 index 35c1090f67..0000000000 --- a/code/game/machinery/computer3/computers/robot.dm +++ /dev/null @@ -1,210 +0,0 @@ -/obj/machinery/computer3/robotics - default_prog = /datum/file/program/borg_control - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) - icon_state = "frame-rnd" - -/datum/file/program/borg_control - name = "Cyborg Control" - desc = "Used to remotely lockdown or detonate linked Cyborgs." - active_state = "robot" - var/id = 0.0 - var/temp = null - var/status = 0 - var/timeleft = 60 - var/stop = 0.0 - var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text - req_access = list(access_robotics) - -/datum/file/program/borg_control/proc/start_sequence() - do - if(src.stop) - src.stop = 0 - return - src.timeleft-- - sleep(10) - while(src.timeleft) - - for(var/mob/living/silicon/robot/R in mob_list) - if(!R.scrambledcodes) - R.self_destruct() - return - - -/datum/file/program/borg_control/interact() - if(!interactable() || computer.z > 6) - return - var/dat - if (src.temp) - dat = "[src.temp]

    Clear Screen" - else - if(screen == 0) - //dat += "

    Cyborg Control Console


    " - dat += "1. Cyborg Status
    " - dat += "2. Emergency Full Destruct
    " - if(screen == 1) - for(var/mob/living/silicon/robot/R in mob_list) - if(istype(usr, /mob/living/silicon/ai)) - if (R.connected_ai != usr) - continue - if(istype(usr, /mob/living/silicon/robot)) - if (R != usr) - continue - if(R.scrambledcodes) - continue - - dat += "[R.name] |" - if(R.stat) - dat += " Not Responding |" - else if (!R.canmove) - dat += " Locked Down |" - else - dat += " Operating Normally |" - if (!R.canmove) - else if(R.cell) - dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" - else - dat += " No Cell Installed |" - if(R.module) - dat += " Module Installed ([R.module.name]) |" - else - dat += " No Module Installed |" - if(R.connected_ai) - dat += " Slaved to [R.connected_ai.name] |" - else - dat += " Independent from AI |" - if (istype(usr, /mob/living/silicon)) - if(issilicon(usr) && is_special_character(usr) && !R.emagged) - dat += "(Hack) " - dat += "([R.canmove ? "Lockdown" : "Release"]) " - dat += "(Destroy)" - dat += "
    " - dat += "(Return to Main Menu)
    " - if(screen == 2) - if(!src.status) - dat += {"
    Emergency Robot Self-Destruct
    \nStatus: Off
    - \n
    - \nCountdown: [src.timeleft]/60 \[Reset\]
    - \n
    - \nStart Sequence
    - \n
    - \nClose"} - else - dat = {"Emergency Robot Self-Destruct
    \nStatus: Activated
    - \n
    - \nCountdown: [src.timeleft]/60 \[Reset\]
    - \n
    \nStop Sequence
    - \n
    - \nClose"} - dat += "(Return to Main Menu)
    " - popup.set_content(dat) - popup.open() - return - -/datum/file/program/borg_control/Topic(var/href, var/list/href_list) - if(!interactable() || ..(href,href_list)) - return - - if("killall" in href_list) - src.temp = {"Destroy Robots?
    -
    \[Swipe ID to initiate destruction sequence\]
    - Cancel"} - - if("do_killall" in href_list) - var/obj/item/weapon/card/id/I = usr.get_active_hand() - if(istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/pda = I - I = pda.id - if(istype(I)) - if(src.check_access(I)) - if(!status) - message_admins("[key_name_admin(usr)] has initiated the global cyborg killswitch!") - log_game("[key_name(usr)] has initiated the global cyborg killswitch!") - src.status = 1 - src.start_sequence() - src.temp = null - - else - to_chat(usr, "Access Denied.") - - if("stop" in href_list) - src.temp = {" - Stop Robot Destruction Sequence?
    -
    Yes
    - No"} - - if("stop2" in href_list) - src.stop = 1 - src.temp = null - src.status = 0 - - if("reset" in href_list) - src.timeleft = 60 - - if("temp" in href_list) - src.temp = null - if("screen" in href_list) - switch(href_list["screen"]) - if("0") - screen = 0 - if("1") - screen = 1 - if("2") - screen = 2 - if("killbot" in href_list) - if(computer.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["killbot"]) - if(R) - var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm") - if(R && istype(R)) - if(R.mind && R.mind.special_role && R.emagged) - to_chat(R, "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered.") - R.ResetSecurityCodes() - - else - message_admins("[key_name_admin(usr)] detonated [key_name(R.name)]!") - log_game("[key_name_admin(usr)] detonated [key_name(R.name)]!") - if(R.connected_ai) - to_chat(R.connected_ai, "

    ALERT - Cyborg kill-switch activated: [R.name]
    ") - R.self_destruct() - else - to_chat(usr, "Access Denied.") - - if("stopbot" in href_list) - if(computer.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) - if(R && istype(R)) // Extra sancheck because of input var references - var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm") - if(R && istype(R)) - message_admins("[key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") - log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R.name)]!") - R.canmove = !R.canmove - if(R.lockcharge) - R.lockcharge = !R.lockcharge - to_chat(R, "Your lockdown has been lifted!") - else - R.lockcharge = !R.lockcharge - to_chat(R, "You have been locked down!") - - else - to_chat(usr, "Access Denied.") - - if ("magbot" in href_list) - if(computer.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["magbot"]) - if(R) - var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort") - if(choice == "Confirm") - if(R && istype(R)) -// message_admins("[key_name_admin(usr)] emagged [R.name] using robotic console!") // why is this commented out? - log_game("[key_name(usr)] emagged [R.name] using robotic console!") - R.emagged = 1 - if(R.mind.special_role) - R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes - - interact() - return - - - diff --git a/code/game/machinery/computer3/computers/security.dm b/code/game/machinery/computer3/computers/security.dm deleted file mode 100644 index 92b1469edd..0000000000 --- a/code/game/machinery/computer3/computers/security.dm +++ /dev/null @@ -1,613 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -/obj/machinery/computer3/secure_data - default_prog = /datum/file/program/secure_data - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) - icon_state = "frame-sec" - -/obj/machinery/computer3/laptop/secure_data - default_prog = /datum/file/program/secure_data - spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) - icon_state = "laptop" - - -/datum/file/program/secure_data - name = "Security Records" - desc = "Used to view and edit personnel's security records" - active_state = "security" - image = 'icons/ntos/records.png' - - req_one_access = list(access_security, access_forensics_lockers) - - var/obj/item/weapon/card/id/scan = null - var/obj/item/weapon/card/id/scan2 = null - var/authenticated = null - var/rank = null - var/screen = null - var/datum/data/record/active1 = null - var/datum/data/record/active2 = null - var/a_id = null - var/temp = null - var/printing = null - var/can_change_id = 0 - var/list/Perp - var/tempname = null - //Sorting Variables - var/sortBy = "name" - var/order = 1 // -1 = Descending // 1 = Ascending - - - -/datum/file/program/secure_data/proc/authenticate() - if(access_security in scan.access || access_forensics_lockers in scan.access ) - return 1 - if(isAI(usr)) - return 1 - return 0 - -/datum/file/program/secure_data/interact() - if(!computer.cardslot) - computer.Crash(MISSING_PERIPHERAL) - return - usr.set_machine(src) - scan = computer.cardslot.reader - - if(istype(computer.cardslot, /obj/item/part/computer/cardslot/dual)) - var/obj/item/part/computer/cardslot/dual/D = computer.cardslot - scan2 = D.writer - - if(!interactable()) - return - - if(computer.z > 6) - to_chat(usr, "Unable to establish a connection: You're too far away from the station!") - return - var/dat - - if(temp) - dat = text("[]

    Clear Screen", temp, src) - else - dat = text("Confirm Identity (R): []
    ", src, (scan ? text("[]", scan.name) : "----------")) - if(istype(computer.cardslot, /obj/item/part/computer/cardslot/dual)) - dat += text("Confirm Identity (W): []
    ", src, (scan2 ? text("[]", scan2.name) : "----------")) - if(scan2 && !scan) - dat += text("
    Insert card into reader slot to log in.

    ") - if(authenticated) - switch(screen) - if(1.0) - dat += "

    " - dat += text("Search Records
    ", src) - dat += text("New Record
    ", src) - dat += {" -

    - - - - -
    Records:
    - - - - - - - - "} - if(!isnull(data_core.general)) - for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order)) - var/crimstat = "" - for(var/datum/data/record/E in data_core.security) - if(E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"]) - crimstat = E.fields["criminal"] - var/background - switch(crimstat) - if("*Arrest*") - background = "'background-color:#DC143C;'" - if("Incarcerated") - background = "'background-color:#CD853F;'" - if("Parolled") - background = "'background-color:#CD853F;'" - if("Released") - background = "'background-color:#3BB9FF;'" - if("None") - background = "'background-color:#00FF00;'" - if("") - background = "'background-color:#00FF7F;'" - crimstat = "No Record." - dat += text("", background, src, R, R.fields["name"]) - dat += text("", R.fields["id"]) - dat += text("", R.fields["rank"]) - dat += text("", R.fields["fingerprint"]) - dat += text("", crimstat) - dat += "
    NameIDRankFingerprintsCriminal Status
    [][][][][]

    " - dat += text("Record Maintenance

    ", src) - dat += text("{Log Out}",src) - if(2.0) - dat += "Records Maintenance
    " - dat += "
    Delete All Records

    Back" - if(3.0) - dat += "
    Security Record

    " - if(istype(active1, /datum/data/record) && data_core.general.Find(active1)) - var/icon/front = active1.fields["photo_front"] - var/icon/side = active1.fields["photo_side"] - usr << browse_rsc(front, "front.png") - usr << browse_rsc(side, "side.png") - dat += text(" \ -
    \ - Name: [active1.fields["name"]]
    \ - ID: [active1.fields["id"]]
    \n \ - Entity Classification: [active1.fields["brain_type"]]
    \n \ - Sex: [active1.fields["sex"]]
    \n \ - Age: [active1.fields["age"]]
    \n \ - Rank: [active1.fields["rank"]]
    \n \ - Fingerprint: [active1.fields["fingerprint"]]
    \n \ - Physical Status: [active1.fields["p_stat"]]
    \n \ - Mental Status: [active1.fields["m_stat"]]
    Photo:
    \ -
    ") - else - dat += "General Record Lost!
    " - if(istype(active2, /datum/data/record) && data_core.security.Find(active2)) - dat += text("
    \n
    Security Data

    \nCriminal Status: []
    \n
    \nMinor Crimes: []
    \nDetails: []
    \n
    \nMajor Crimes: []
    \nDetails: []
    \n
    \nImportant Notes:
    \n\t[]
    \n
    \n
    Comments/Log

    ", src, active2.fields["criminal"], src, active2.fields["mi_crim"], src, active2.fields["mi_crim_d"], src, active2.fields["ma_crim"], src, active2.fields["ma_crim_d"], src, decode(active2.fields["notes"])) - var/counter = 1 - while(active2.fields[text("com_[]", counter)]) - dat += text("[]
    Delete Entry

    ", active2.fields[text("com_[]", counter)], src, counter) - counter++ - dat += text("Add Entry

    ", src) - dat += text("Delete Record (Security Only)

    ", src) - else - dat += "Security Record Lost!
    " - dat += text("New Security Record

    ", src) - dat += text("\nDelete Record (ALL)

    \nPrint Record
    \nBack
    ", src, src, src) - if(4.0) - if(!Perp.len) - dat += text("ERROR. String could not be located.

    Back", src) - else - dat += {" - - "} - dat += text("", tempname) - dat += {" - -
    Search Results for '[]':
    - - - - - - - - "} - for(var/i=1, i<=Perp.len, i += 2) - var/crimstat = "" - var/datum/data/record/R = Perp[i] - if(istype(Perp[i+1],/datum/data/record/)) - var/datum/data/record/E = Perp[i+1] - crimstat = E.fields["criminal"] - var/background - switch(crimstat) - if("*Arrest*") - background = "'background-color:#DC143C;'" - if("Incarcerated") - background = "'background-color:#CD853F;'" - if("Parolled") - background = "'background-color:#CD853F;'" - if("Released") - background = "'background-color:#3BB9FF;'" - if("None") - background = "'background-color:#00FF7F;'" - if("") - background = "'background-color:#FFFFFF;'" - crimstat = "No Record." - dat += text("", background, src, R, R.fields["name"]) - dat += text("", R.fields["id"]) - dat += text("", R.fields["rank"]) - dat += text("", R.fields["fingerprint"]) - dat += text("", crimstat) - dat += "
    NameIDRankFingerprintsCriminal Status
    [][][][][]

    " - dat += text("
    Return to index.", src) - else - else - dat += text("{Log In}", src) - popup.width = 600 - popup.height = 400 - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) - popup.open() - return - -/*Revised /N -I can't be bothered to look more of the actual code outside of switch but that probably needs revising too. -What a mess.*/ -/datum/file/program/secure_data/Topic(href, href_list) - if(!interactable() || !computer.cardslot || ..(href,href_list)) - return - if (!data_core.general.Find(active1)) - active1 = null - if(!data_core.security.Find(active2)) - active2 = null - switch(href_list["choice"]) - // SORTING! - if("Sorting") - // Reverse the order if clicked twice - if(sortBy == href_list["sort"]) - if(order == 1) - order = -1 - else - order = 1 - else - // New sorting order! - sortBy = href_list["sort"] - order = initial(order) - //BASIC FUNCTIONS - if("Clear Screen") - temp = null - - if("Return") - screen = 1 - active1 = null - active2 = null - - if("Confirm Identity R") - if(scan) - if(ishuman(usr) && !usr.get_active_hand()) - computer.cardslot.remove(usr, 1) - else - scan.loc = get_turf(src) - scan = null - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/weapon/card/id)) - usr << "Attempting to insert" - computer.cardslot.insert(I, usr) // No slot, will autofill - scan = I - - if("Confirm Identity W") - if(scan2) - if(ishuman(usr) && !usr.get_active_hand()) - computer.cardslot.remove(usr, 2) - else - scan2.loc = get_turf(src) - scan2 = null - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/weapon/card/id)) - computer.cardslot.insert(I, usr, 2) // Specifically writer slot - scan2 = I - - if("Log Out") - authenticated = null - screen = null - active1 = null - active2 = null - - if("Log In") - if(isAI(usr)) - src.active1 = null - src.active2 = null - src.authenticated = usr.name - src.rank = "AI" - src.screen = 1 - else if(isrobot(usr)) - src.active1 = null - src.active2 = null - src.authenticated = usr.name - var/mob/living/silicon/robot/R = usr - src.rank = "[R.modtype] [R.braintype]" - src.screen = 1 - else if(istype(scan, /obj/item/weapon/card/id)) - active1 = null - active2 = null - if(authenticate()) - authenticated = scan.registered_name - rank = scan.assignment - screen = 1 - //RECORD FUNCTIONS - if("Search Records") - var/t1 = input("Search String: (Partial Name or ID or Fingerprints or Rank)", "Secure. records", null, null) as text - if(!t1 || usr.stat || !authenticated || usr.restrained() || !interactable()) - return - Perp = new/list() - t1 = lowertext(t1) - var/list/components = splittext(t1, " ") - if(components.len > 5) - return //Lets not let them search too greedily. - for(var/datum/data/record/R in data_core.general) - var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"] - for(var/i = 1, i<=components.len, i++) - if(findtext(temptext,components[i])) - var/prelist = new/list(2) - prelist[1] = R - Perp += prelist - for(var/i = 1, i<=Perp.len, i+=2) - for(var/datum/data/record/E in data_core.security) - var/datum/data/record/R = Perp[i] - if(E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"]) - Perp[i+1] = E - tempname = t1 - screen = 4 - - if("Record Maintenance") - screen = 2 - active1 = null - active2 = null - - if("Browse Record") - var/datum/data/record/R = locate(href_list["d_rec"]) - var/S = locate(href_list["d_rec"]) - if(!data_core.general.Find(R)) - temp = "Record Not Found!" - else - for(var/datum/data/record/E in data_core.security) - if(E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]) - S = E - active1 = R - active2 = S - screen = 3 - -/* if ("Search Fingerprints") - var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text - if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!interactable()) && (!istype(usr, /mob/living/silicon)))) - return - active1 = null - active2 = null - t1 = lowertext(t1) - for(var/datum/data/record/R in data_core.general) - if (lowertext(R.fields["fingerprint"]) == t1) - active1 = R - if (!( active1 )) - temp = text("Could not locate record [].", t1) - else - for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) - active2 = E - screen = 3 */ - - if("Print Record") - if(!printing) - printing = 1 - var/datum/data/record/record1 = null - var/datum/data/record/record2 = null - if(istype(active1, /datum/data/record) && data_core.general.Find(active1)) - record1 = active1 - if(istype(active2, /datum/data/record) && data_core.security.Find(active2)) - record2 = active2 - sleep(50) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( computer.loc ) - P.info = "
    Security Record

    " - if(record1) - P.info += text("Name: [] ID: []
    \nSex: []
    \nAge: []
    \nFingerprint: []
    \nPhysical Status: []
    \nMental Status: []
    ", record1.fields["name"], record1.fields["id"], record1.fields["sex"], record1.fields["age"], record1.fields["fingerprint"], record1.fields["p_stat"], record1.fields["m_stat"]) - P.name = text("Security Record ([])", record1.fields["name"]) - else - P.info += "General Record Lost!
    " - P.name = "Security Record" - if(record2) - P.info += text("
    \n
    Security Data

    \nCriminal Status: []
    \n
    \nMinor Crimes: []
    \nDetails: []
    \n
    \nMajor Crimes: []
    \nDetails: []
    \n
    \nImportant Notes:
    \n\t[]
    \n
    \n
    Comments/Log

    ", record2.fields["criminal"], record2.fields["mi_crim"], record2.fields["mi_crim_d"], record2.fields["ma_crim"], record2.fields["ma_crim_d"], decode(record2.fields["notes"])) - var/counter = 1 - while(record2.fields[text("com_[]", counter)]) - P.info += text("[]
    ", record2.fields[text("com_[]", counter)]) - counter++ - else - P.info += "Security Record Lost!
    " - P.info += "" - printing = null - computer.updateUsrDialog() - //RECORD DELETE - if("Delete All Records") - temp = "" - temp += "Are you sure you wish to delete all Security records?
    " - temp += "Yes
    " - temp += "No" - - if("Purge All Records") - for(var/datum/data/record/R in data_core.security) - qdel(R) - temp = "All Security records deleted." - - if("Add Entry") - if(!istype(active2, /datum/data/record)) - return - var/a2 = active2 - var/t1 = sanitize(input("Add Comment:", "Secure. records", null, null) as message) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active2 != a2) - return - var/counter = 1 - while(active2.fields[text("com_[]", counter)]) - counter++ - active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]
    [t1]") - - if("Delete Record (ALL)") - if(active1) - temp = "
    Are you sure you wish to delete the record (ALL)?
    " - temp += "Yes
    " - temp += "No" - - if("Delete Record (Security)") - if(active2) - temp = "
    Are you sure you wish to delete the record (Security Portion Only)?
    " - temp += "Yes
    " - temp += "No" - - if("Delete Entry") - if(istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])]) - active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" - //RECORD CREATE - if("New Record (Security)") - if(istype(active1, /datum/data/record) && !istype(active2, /datum/data/record)) - active2 = data_core.CreateSecurityRecord(active1.fields["name"], active1.fields["id"]) - screen = 3 - - if("New Record (General)") - active1 = data_core.CreateGeneralRecord() - active2 = null - - //FIELD FUNCTIONS - if("Edit Field") - var/a1 = active1 - var/a2 = active2 - switch(href_list["field"]) - if("name") - if(istype(active1, /datum/data/record)) - var/t1 = sanitizeName(input("Please input name:", "Secure. records", active1.fields["name"], null) as text) - if(!t1 || !length(trim(t1)) || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active1 != a1) - return - active1.fields["name"] = t1 - if("id") - if(istype(active2, /datum/data/record)) - var/t1 = sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active1 != a1) - return - active1.fields["id"] = t1 - if("fingerprint") - if(istype(active1, /datum/data/record)) - var/t1 = sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active1 != a1) - return - active1.fields["fingerprint"] = t1 - if("sex") - if(istype(active1, /datum/data/record)) - if(active1.fields["sex"] == "Male") - active1.fields["sex"] = "Female" - else - active1.fields["sex"] = "Male" - if("age") - if(istype(active1, /datum/data/record)) - var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active1 != a1) - return - active1.fields["age"] = t1 - if("mi_crim") - if(istype(active2, /datum/data/record)) - var/t1 = sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active2 != a2) - return - active2.fields["mi_crim"] = t1 - if("mi_crim_d") - if(istype(active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message) - if (!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active2 != a2) - return - active2.fields["mi_crim_d"] = t1 - if("ma_crim") - if(istype(active2, /datum/data/record)) - var/t1 = sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active2 != a2) - return - active2.fields["ma_crim"] = t1 - if("ma_crim_d") - if(istype(active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active2 != a2) - return - active2.fields["ma_crim_d"] = t1 - if("notes") - if(istype(active2, /datum/data/record)) - var/t1 = sanitize(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message, extra = 0) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active2 != a2) - return - active2.fields["notes"] = t1 - if("criminal") - if (istype(active2, /datum/data/record)) - temp = "
    Criminal Status:
    " - temp += "" - if("rank") - var/list/L = list( "Head of Personnel", "Colony Director", "AI" ) - //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if ((istype(active1, /datum/data/record) && L.Find(rank))) - temp = "
    Rank:
    " - temp += "
      " - for(var/rank in joblist) - temp += "
    • [rank]
    • " - temp += "
    " - else - alert(usr, "You do not have the required rank to do this!") - if("species") - if (istype(active1, /datum/data/record)) - var/t1 = sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message) - if(!t1 || !authenticated || usr.stat || usr.restrained() || (!interactable() && !issilicon(usr)) || active1 != a1) - return - active1.fields["species"] = t1 - - //TEMPORARY MENU FUNCTIONS - else//To properly clear as per clear screen. - temp=null - switch(href_list["choice"]) - if("Change Rank") - if(active1) - active1.fields["rank"] = href_list["rank"] - if(href_list["rank"] in joblist) - active1.fields["real_rank"] = href_list["real_rank"] - - if("Change Criminal Status") - if(active2) - for(var/mob/living/carbon/human/H in player_list) - BITSET(H.hud_updateflag, WANTED_HUD) - switch(href_list["criminal2"]) - if("none") - active2.fields["criminal"] = "None" - if("arrest") - active2.fields["criminal"] = "*Arrest*" - if("incarcerated") - active2.fields["criminal"] = "Incarcerated" - if("parolled") - active2.fields["criminal"] = "Parolled" - if("released") - active2.fields["criminal"] = "Released" - - if("Delete Record (Security) Execute") - if(active2) - qdel(active2) - - if("Delete Record (ALL) Execute") - if(active1) - for(var/datum/data/record/R in data_core.medical) - if(R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"]) - qdel(R) - else - qdel(active1) - if(active2) - qdel(active2) - else - temp = "This function does not appear to be working at the moment. Our apologies." - - //computer.updateUsrDialog() - interact() - return - -/obj/machinery/computer3/secure_data/emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - ..(severity) - return - - for(var/datum/data/record/R in data_core.security) - if(prob(10/severity)) - switch(rand(1,6)) - if(1) - R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" - if(2) - R.fields["sex"] = pick("Male", "Female") - if(3) - R.fields["age"] = rand(5, 85) - if(4) - R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Parolled", "Released") - if(5) - R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") - if(PDA_Manifest.len) - PDA_Manifest.Cut() - if(6) - R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") - continue - - else if(prob(1)) - qdel(R) - continue - - ..(severity) - -/obj/machinery/computer3/secure_data/detective_computer - icon = 'icons/obj/computer.dmi' - icon_state = "messyfiles" diff --git a/code/game/machinery/computer3/computers/welcome.dm b/code/game/machinery/computer3/computers/welcome.dm deleted file mode 100644 index 801a6cd93c..0000000000 --- a/code/game/machinery/computer3/computers/welcome.dm +++ /dev/null @@ -1,34 +0,0 @@ -/obj/machinery/computer3/laptop/vended - default_prog = /datum/file/program/welcome - - -/datum/file/program/welcome - name = "Welcome Screen" - desc = "First time boot splash screen" - active_state = "osod" - image = 'icons/ntos/program.png' - - -/datum/file/program/welcome/interact() - usr.set_machine(src) - if(!interactable()) - return - var/dat = "" - dat += "
    Welcome to NTOS
    " - dat += "
    Thank you for choosing NTOS, your gateway to the future of mobile computing technology, sponsored by [using_map.company_name] (R)

    " - dat += "Getting started with NTOS:
    " - dat += "To leave a current program, click the X button in the top right corner of the window. This will return you to the NTOS desktop. \ - From the desktop, you can open the hard drive, usually located in the top left corner to access all the programs installed on your computer. \ - When you rented your laptop, you were supplied with programs that your [using_map.company_name] Issued ID has given you access to use. \ - In the event of a serious error, the right click menu will give you the ability to reset your computer. To open and close your laptop, alt-click your device.\ - If you have any questions or technical issues, please contact your local computer technical experts at your local [using_map.boss_name]." - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) - popup.open() - return - -/datum/file/program/welcome/Topic(href, href_list) - if(!interactable() || ..(href,href_list)) - return - interact() - return \ No newline at end of file diff --git a/code/game/machinery/computer3/file.dm b/code/game/machinery/computer3/file.dm deleted file mode 100644 index 528aff8c87..0000000000 --- a/code/game/machinery/computer3/file.dm +++ /dev/null @@ -1,166 +0,0 @@ -// I am deciding that for sayustation's purposes directories are right out, -// we can't even get backpacks to work right with recursion, and that -// actually fucking matters. Metadata too, that can be added if ever needed. - -/* - Files are datums that can be stored in digital storage devices -*/ - -/datum/file - var/name = "File" - var/extension = "dat" - var/volume = 10 // in KB - var/image = 'icons/ntos/file.png' // determines the icon to use, found in icons/ntos - var/obj/machinery/computer3/computer // the parent computer, if fixed - var/obj/item/part/computer/storage/device // the device that is containing this file - var/hidden_file = 0 // Prevents file from showing up on NTOS program list. - var/drm = 0 // Copy protection, called by copy() and move() - var/readonly = 0 // Edit protection, called by edit(), which is just a failcheck proc - -/datum/file/proc/execute(var/datum/file/source) - return - -// -// Copy file to device. -// If you overwrite this function, use the return value to make sure it succeeded -// -/datum/file/proc/copy(var/obj/item/part/computer/storage/dest) - if(!computer) return null - if(drm) - if(!computer.emagged) - return null - var/datum/file/F = new type() - if(!dest.addfile(F)) - return null // todo: arf here even though the player can't do a damn thing due to concurrency - return F - -// -// Move file to device -// Returns null on failure even though the existing file doesn't go away -// -/datum/file/proc/move(var/obj/item/part/computer/storage/dest) - if(!computer) return null - if(drm) - if(!computer.emagged) - return null - var/obj/item/part/computer/storage/current = device - if(!dest.addfile(src)) - return null - current.removefile(src) - return src - -// -// Determines if the file is editable. This does not use the DRM flag, -// but instead the readonly flag. -// - -/datum/file/proc/edit() - if(!computer) - return 0 - if(readonly && !computer.emagged) - return 0 - return 1 - -/* - CentCom root authorization certificate - - Non-destructive, officially sanctioned. - Has the same effect on computers as an emag. -*/ -/datum/file/centcom_auth - name = "CentCom Root Access Token" - extension = "auth" - volume = 100 - copy() - return null - -/* - A file that contains information -*/ - -/datum/file/data - - var/content = "content goes here" - var/file_increment = 1 - var/binary = 0 // determines if the file can't be opened by editor - -/datum/file/data/New() - if(content) - if(file_increment > 1) - volume = round(file_increment * length(content)) - ..() - -// Set the content to a specific amount, increase filesize appropriately. -/datum/file/data/proc/set_content(var/text) - content = text - if(file_increment > 1) - volume = round(file_increment * length(text)) - -/datum/file/data/copy(var/obj/O) - var/datum/file/data/D = ..(O) - if(D) - D.content = content - D.readonly = readonly - -/* - A generic file that contains text -*/ - -/datum/file/data/text - name = "Text File" - extension = "txt" - image = 'icons/ntos/file.png' - content = "" - file_increment = 0.002 // 0.002 kilobytes per character (1024 characters per KB) - -/datum/file/data/text/ClownProphecy - name = "Clown Prophecy" - content = "HONKhHONKeHONKlHONKpHONKHONmKHONKeHONKHONKpHONKlHONKeHONKaHONKsHONKe" - - -/* - A file that contains research -*/ - -/datum/file/data/research - name = "Untitled Research" - binary = 1 - content = "Untitled Tier X Research" - var/datum/tech/stored // the actual tech contents - volume = 1440 - -/* - A file that contains genetic information -*/ - -/datum/file/data/genome - name = "Genetic Buffer" - binary = 1 - var/real_name = "Poop" - - -/datum/file/data/genome/SE - name = "Structural Enzymes" - -/datum/file/data/genome/UE - name = "Unique Enzymes" - -/* -the way genome computers now work, a subtype is the wrong way to do this; -it will no longer be picked up. You can change this later if you need to. -for now put it on a disk - -/datum/file/data/genome/UE/GodEmperorOfMankind - name = "G.E.M.K." - content = "066000033000000000AF00330660FF4DB002690" - label = "God Emperor of Mankind" -*/ -/datum/file/data/genome/UI - name = "Unique Identifier" - -/datum/file/data/genome/UI/UE - name = "Unique Identifier + Unique Enzymes" - -/datum/file/data/genome/cloning - name = "Cloning Data" - var/datum/data/record/record diff --git a/code/game/machinery/computer3/laptop.dm b/code/game/machinery/computer3/laptop.dm deleted file mode 100644 index 9a8ba02b00..0000000000 --- a/code/game/machinery/computer3/laptop.dm +++ /dev/null @@ -1,183 +0,0 @@ -/* - Computer3 portable computer. - - Battery powered only; it does not use the APC network at all. - - When picked up, becomes an inert item. This item can be put in a recharger, - or set down and re-opened into the original machine. While closed, the computer - has the MAINT stat flag. If you want to ignore this, you will have to bitmask it out. - - The unused(?) alt+click will toggle laptops open and closed. If we find a better - answer for this in the future, by all means use it. I just don't want it limited - to the verb, which is SIGNIFICANTLY less accessible than shutting a laptop. - Ctrl-click would work for closing the machine, since it's anchored, but not for - opening it back up again. And obviously, I don't want to override shift-click. - There's no double-click because that's used in regular click events. Alt-click is the - only obvious one left. -*/ - - -/obj/item/device/laptop - name = "Laptop Computer" - desc = "A clamshell portable computer. It is closed." - icon = 'icons/obj/computer3.dmi' - icon_state = "laptop-closed" - pixel_x = 2 - pixel_y = -3 - w_class = ITEMSIZE_NORMAL - - var/obj/machinery/computer3/laptop/stored_computer = null - -/obj/item/device/laptop/get_cell() - return stored_computer.battery - -/obj/item/device/laptop/verb/open_computer() - set name = "Open Laptop" - set category = "Object" - set src in view(1) - - if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - to_chat(usr, "You can't do that.") - return - - if(!Adjacent(usr)) - to_chat(usr, "You can't reach it.") - return - - if(!istype(loc,/turf)) - to_chat(usr, "[src] is too bulky! You'll have to set it down.") - return - - if(!stored_computer) - if(contents.len) - for(var/obj/O in contents) - O.loc = loc - to_chat(usr, "\The [src] crumbles to pieces.") - spawn(5) - qdel(src) - return - - stored_computer.loc = loc - stored_computer.stat &= ~MAINT - stored_computer.update_icon() - loc = stored_computer - to_chat(usr, "You open \the [src].") - -/obj/item/device/laptop/AltClick() - if(Adjacent(usr)) - open_computer() - -//Quickfix until Snapshot works out how he wants to redo power. ~Z -/obj/item/device/laptop/verb/eject_id() - set category = "Object" - set name = "Eject ID Card" - set src in oview(1) - - if(stored_computer) - stored_computer.eject_id() - -/obj/machinery/computer3/laptop/verb/eject_id() - set category = "Object" - set name = "Eject ID Card" - set src in oview(1) - var/obj/item/part/computer/cardslot/C = locate() in src.contents - - if(!C) - to_chat(usr, "There is no card port on the laptop.") - return - - C.remove(usr) - return - -/obj/machinery/computer3/laptop - name = "Laptop Computer" - desc = "A clamshell portable computer. It is open." - - icon_state = "laptop" - density = 0 - pixel_x = 2 - pixel_y = -3 - show_keyboard = 0 - active_power_usage = 200 // Stationary consoles we use on station have 300, laptops are probably slightly more power efficient - idle_power_usage = 100 - - var/obj/item/device/laptop/portable = null - -/obj/machinery/computer3/laptop/New(var/L, var/built = 0) - if(!built && !battery) - battery = new /obj/item/weapon/cell(src) - battery.maxcharge = 500 - battery.charge = 500 - ..(L,built) - -/obj/machinery/computer3/laptop/verb/close_computer() - set name = "Close Laptop" - set category = "Object" - set src in view(1) - - if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - to_chat(usr, "You can't do that.") - return - - if(!Adjacent(usr)) - to_chat(usr, "You can't reach it.") - return - - close_laptop(usr) - -/obj/machinery/computer3/laptop/proc/close_laptop(mob/user = null) - if(istype(loc,/obj/item/device/laptop)) - testing("Close closed computer") - return - if(!istype(loc,/turf)) - testing("Odd computer location: [loc] - close laptop") - return - - if(stat&BROKEN) - if(user) - to_chat(user, "\The [src] is broken! You can't quite get it closed.") - return - - if(!portable) - portable=new - portable.stored_computer = src - - portable.loc = loc - loc = portable - stat |= MAINT - if(user) - to_chat(user, "You close \the [src].") - -/obj/machinery/computer3/laptop/auto_use_power() - if(stat&MAINT) - return - if(use_power && istype(battery) && battery.charge > 0) - if(use_power == 1) - battery.use(idle_power_usage*CELLRATE) //idle and active_power_usage are in WATTS. battery.use() expects CHARGE. - else - battery.use(active_power_usage*CELLRATE) - return 1 - return 0 - -/obj/machinery/computer3/laptop/use_power(var/amount, var/chan = -1) - if(battery && battery.charge > 0) - battery.use(amount*CELLRATE) - -/obj/machinery/computer3/laptop/power_change() - if( !battery || battery.charge <= 0 ) - stat |= NOPOWER - else - stat &= ~NOPOWER - -/obj/machinery/computer3/laptop/Destroy() - if(istype(loc,/obj/item/device/laptop)) - var/obj/O = loc - spawn(5) - if(O) - qdel(O) - ..() - - -/obj/machinery/computer3/laptop/AltClick() - if(Adjacent(usr)) - close_computer() diff --git a/code/game/machinery/computer3/lapvend.dm b/code/game/machinery/computer3/lapvend.dm deleted file mode 100644 index 7c4e458832..0000000000 --- a/code/game/machinery/computer3/lapvend.dm +++ /dev/null @@ -1,374 +0,0 @@ -/obj/machinery/lapvend - name = "Laptop Vendor" - desc = "A generic vending machine." - icon = 'icons/obj/vending.dmi' - icon_state = "robotics" - anchored = 1 - density = 1 - var/obj/machinery/computer3/laptop/vended/newlap = null - var/obj/item/device/laptop/relap = null - var/vendmode = 0 - - var/cardreader = 0 - var/floppy = 0 - var/radionet = 0 - var/camera = 0 - var/network = 0 - var/power = 0 - - -/obj/machinery/lapvend/New() - ..() - spawn(4) - power_change() - return - return - - -/obj/machinery/lapvend/attackby(obj/item/weapon/W as obj, mob/user as mob) - var/obj/item/weapon/card/id/I = W.GetID() - - if(default_unfasten_wrench(user, W, 20)) - return - - if(vendmode == 1 && I) - scan_id(I, W) - vendmode = 0 - SSnanoui.update_uis(src) - if(vendmode == 2 && I) - if(reimburse_id(I, W)) - vendmode = 0 - SSnanoui.update_uis(src) - if(vendmode == 0) - if(istype(W, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = W - relap = L - calc_reimburse(L) - usr.drop_item() - L.loc = src - vendmode = 2 - to_chat(user, "You slot your [L.name] into \The [src.name]") - SSnanoui.update_uis(src) - else - ..() - - -/obj/machinery/lapvend/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER)) - return - - ui_interact(user) - -/** - * Display the NanoUI window for the vending machine. - * - * See NanoUI documentation for details. - */ -/obj/machinery/lapvend/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - user.set_machine(src) - - var/list/data = list() - data["mode"] = vendmode - data["cardreader"] = cardreader - data["floppy"] = floppy - data["radionet"] = radionet - data["camera"] = camera - data["network"] = network - data["power"] = power - data["total"] = total() - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "laptop_vendor.tmpl", src.name, 480, 425) - ui.set_initial_data(data) - ui.open() - //ui.set_auto_update(5) - -/obj/machinery/lapvend/Topic(href, href_list) - if(stat & (BROKEN|NOPOWER)) - return - if(usr.stat || usr.restrained()) - return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) - usr.set_machine(src) - switch(href_list["choice"]) - if("single_add") - cardreader = 1 - if ("dual_add") - cardreader = 2 - if ("floppy_add") - floppy = 1 - if ("radio_add") - radionet = 1 - if ("camnet_add") - camera = 1 - if ("area_add") - network = 1 - if ("prox_add") - network = 2 - if ("cable_add") - network = 3 - if ("high_add") - power = 1 - if ("super_add") - power = 2 - - if ("cardreader_rem") - cardreader = 0 - if ("floppy_rem") - floppy = 0 - if ("radio_rem") - radionet = 0 - if ("camnet_rem") - camera = 0 - if ("network_rem") - network = 0 - if ("power_rem") - power = 0 - - if("vend") - vendmode = 1 - - if("cancel") - if(relap) - relap.loc = src.loc - relap = null - vendmode = 0 - - src.add_fingerprint(usr) - SSnanoui.update_uis(src) - -/obj/machinery/lapvend/proc/vend() - if(cardreader > 0) - if(cardreader == 1) - newlap.spawn_parts += (/obj/item/part/computer/cardslot) - else - newlap.spawn_parts += (/obj/item/part/computer/cardslot/dual) - if(floppy == 1) - newlap.spawn_parts += (/obj/item/part/computer/storage/removable) - if(radionet == 1) - newlap.spawn_parts += (/obj/item/part/computer/networking/radio) - if(camera == 1) - newlap.spawn_parts += (/obj/item/part/computer/networking/cameras) - if (network == 1) - newlap.spawn_parts += (/obj/item/part/computer/networking/area) - if (network == 2) - newlap.spawn_parts += (/obj/item/part/computer/networking/prox) - if (network == 3) - newlap.spawn_parts += (/obj/item/part/computer/networking/cable) - if (power == 1) - newlap.battery.maxcharge = 1000 - newlap.battery.charge = 1000 - if (power == 2) - newlap.battery.maxcharge = 1750 - newlap.battery.charge = 1750 - - newlap.spawn_parts() - -/obj/machinery/lapvend/proc/scan_id(var/obj/item/weapon/card/id/C, var/obj/item/I) - visible_message("\The [usr] swipes \the [I] through \the [src].") - var/datum/money_account/CH = get_account(C.associated_account_number) - if(!CH) - to_chat(usr, "\icon[src]No valid account number is associated with this card.") - return - if(CH.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - if(vendor_account) - var/attempt_pin = input("Enter pin code", "Vendor transaction") as num - var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) - if(D) - transfer_and_vend(D, C) - else - to_chat(usr, "\icon[src]Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.") - else - to_chat(usr, "\icon[src]Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.") - else - transfer_and_vend(CH, C) - - -// Transfers money and vends the laptop. -/obj/machinery/lapvend/proc/transfer_and_vend(var/datum/money_account/D, var/obj/item/weapon/card/C) - var/transaction_amount = total() - if(transaction_amount <= D.money) - - //transfer the money - D.money -= transaction_amount - vendor_account.money += transaction_amount - //Transaction logs - var/datum/transaction/T = new() - T.target_name = "[vendor_account.owner_name] (via [src.name])" - T.purpose = "Purchase of Laptop" - if(transaction_amount > 0) - T.amount = "([transaction_amount])" - else - T.amount = "[transaction_amount]" - T.source_terminal = src.name - T.date = current_date_string - T.time = stationtime2text() - D.transaction_log.Add(T) - // - T = new() - T.target_name = D.owner_name - T.purpose = "Purchase of Laptop" - T.amount = "[transaction_amount]" - T.source_terminal = src.name - T.date = current_date_string - T.time = stationtime2text() - vendor_account.transaction_log.Add(T) - - newlap = new /obj/machinery/computer3/laptop/vended(src.loc) - - choose_progs(C) - vend() - newlap.close_laptop() - newlap = null - cardreader = 0 - floppy = 0 - radionet = 0 - camera = 0 - network = 0 - power = 0 - else - to_chat(usr, "\icon[src]You don't have that much money!") - -/obj/machinery/lapvend/proc/total() - var/total = 0 - - if(cardreader == 1) - total += 50 - if(cardreader == 2) - total += 125 - if(floppy == 1) - total += 50 - if(radionet == 1) - total += 50 - if(camera == 1) - total += 100 - if(network == 1) - total += 75 - if(network == 2) - total += 50 - if(network == 3) - total += 25 - if(power == 1) - total += 175 - if(power == 2) - total += 250 - - return total - -/obj/machinery/lapvend/proc/choose_progs(var/obj/item/weapon/card/id/C) - if(access_security in C.access) - newlap.spawn_files += (/datum/file/program/secure_data) - newlap.spawn_files += (/datum/file/camnet_key) - newlap.spawn_files += (/datum/file/program/security) - if(access_armory in C.access) - newlap.spawn_files += (/datum/file/program/prisoner) - if(access_atmospherics in C.access) - newlap.spawn_files += (/datum/file/program/atmos_alert) - if(access_change_ids in C.access) - newlap.spawn_files += (/datum/file/program/card_comp) - if(access_heads in C.access) - newlap.spawn_files += (/datum/file/program/communications) - if((access_medical in C.access) || (access_forensics_lockers in C.access)) //Gives detective the medical records program, but not the crew monitoring one. - newlap.spawn_files += (/datum/file/program/med_data) - if (access_medical in C.access) - newlap.spawn_files += (/datum/file/program/crew) - if(access_engine in C.access) - newlap.spawn_files += (/datum/file/program/powermon) - if(access_research in C.access) - newlap.spawn_files += (/datum/file/camnet_key/research) - newlap.spawn_files += (/datum/file/camnet_key/bombrange) - newlap.spawn_files += (/datum/file/camnet_key/xeno) - if(access_rd in C.access) - newlap.spawn_files += (/datum/file/program/borg_control) - if(access_cent_specops in C.access) - newlap.spawn_files += (/datum/file/camnet_key/creed) - newlap.spawn_files += (/datum/file/program/arcade) - newlap.spawn_files += (/datum/file/camnet_key/entertainment) - //Atlantis: Each laptop gets "invisible" program/security - REQUIRED for camnetkeys to work. - newlap.spawn_files += (/datum/file/program/security/hidden) - newlap.update_spawn_files() - -/obj/machinery/lapvend/proc/calc_reimburse(var/obj/item/device/laptop/L) - if(istype(L.stored_computer.cardslot,/obj/item/part/computer/cardslot)) - cardreader = 1 - if(istype(L.stored_computer.cardslot,/obj/item/part/computer/cardslot/dual)) - cardreader = 2 - if(istype(L.stored_computer.floppy,/obj/item/part/computer/storage/removable)) - floppy = 1 - if(istype(L.stored_computer.radio,/obj/item/part/computer/networking/radio)) - radionet = 1 - if(istype(L.stored_computer.camnet,/obj/item/part/computer/networking/cameras)) - camera = 1 - if(istype(L.stored_computer.net,/obj/item/part/computer/networking/area)) - network = 1 - if(istype(L.stored_computer.net,/obj/item/part/computer/networking/prox)) - network = 2 - if(istype(L.stored_computer.net,/obj/item/part/computer/networking/cable)) - network = 3 - if(istype(L.stored_computer.battery, /obj/item/weapon/cell/high)) - power = 1 - if(istype(L.stored_computer.battery, /obj/item/weapon/cell/super)) - power = 2 - - - -/obj/machinery/lapvend/proc/reimburse_id(var/obj/item/weapon/card/id/C, var/obj/item/I) - visible_message("\The [usr] swipes \the [I] through \the [src].") - var/datum/money_account/CH = get_account(C.associated_account_number) - if(!CH) - to_chat(usr, "\icon[src]No valid account number is associated with this card.") - return 0 - if(CH.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - if(vendor_account) - var/attempt_pin = input("Enter pin code", "Vendor transaction") as num - var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) - if(D) - transfer_and_reimburse(D) - return 1 - else - to_chat(usr, "\icon[src]Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.") - return 0 - else - to_chat(usr, "\icon[src]Unable to access vendor account. Please record the machine ID and call [using_map.boss_short] Support.") - return 0 - else - transfer_and_reimburse(CH) - return 1 - -/obj/machinery/lapvend/proc/transfer_and_reimburse(var/datum/money_account/D) - var/transaction_amount = total() - //transfer the money - D.money += transaction_amount - vendor_account.money -= transaction_amount - - //Transaction logs - var/datum/transaction/T = new() - T.target_name = "[vendor_account.owner_name] (via [src.name])" - T.purpose = "Return purchase of Laptop" - if(transaction_amount > 0) - T.amount = "([transaction_amount])" - else - T.amount = "[transaction_amount]" - T.source_terminal = src.name - T.date = current_date_string - T.time = stationtime2text() - D.transaction_log.Add(T) - // - T = new() - T.target_name = D.owner_name - T.purpose = "Return purchase of Laptop" - T.amount = "[transaction_amount]" - T.source_terminal = src.name - T.date = current_date_string - T.time = stationtime2text() - vendor_account.transaction_log.Add(T) - - qdel(relap) - vendmode = 0 - cardreader = 0 - floppy = 0 - radionet = 0 - camera = 0 - network = 0 - power = 0 diff --git a/code/game/machinery/computer3/networking.dm b/code/game/machinery/computer3/networking.dm deleted file mode 100644 index 7b7922a635..0000000000 --- a/code/game/machinery/computer3/networking.dm +++ /dev/null @@ -1,243 +0,0 @@ -/obj/item/part/computer/networking - name = "Computer networking component" - -/obj/item/part/computer/networking/allow_attackby(var/obj/item/I, var/mob/user) - return 0 - -/* - This is the public-facing proc used by NETUP. - It does additional checking before and after calling get_machines() -*/ -/obj/item/part/computer/networking/proc/connect_to(var/typekey,var/atom/previous) - if(!computer || computer.stat) - return null - - if(istype(previous,typekey) && verify_machine(previous)) - return previous - - var/result = get_machines(typekey) - - if(!result) - return null - - if(islist(result)) - var/list/R = result - if(R.len == 0) - return null - else if(R.len == 1) - return R[1] - else - var/list/atomlist = computer.format_atomlist(R) - result = input("Select:","Multiple destination machines located",atomlist[1]) as null|anything in atomlist - return atomlist[result] - - if(isobj(result)) - return result - - return null // ? - -/* - This one is used to determine the candidate machines. - It may return an object, a list of objects, or null. - - Overwite this on any networking component. -*/ -/obj/item/part/computer/networking/proc/get_machines(var/typekey) - return list() - -/* - This is used to verify that an existing machine is within the network. - Calling NETUP() with an object argument will run this check, and if - the object is still accessible, it will be used. Otherwise, another - search will be run. - - Overwrite this on any networking component. -*/ -/obj/item/part/computer/networking/proc/verify_machine(var/obj/previous) - return 0 - -/* - Provides radio/signaler functionality, and also - network-connects to anything on the same z-level - which is tuned to the same frequency. -*/ -/obj/item/part/computer/networking/radio - name = "Wireless networking component" - desc = "Radio module for computers" - - var/datum/radio_frequency/radio_connection = null - var/frequency = PUB_FREQ - var/rad_filter = null - var/range = null - var/subspace = 0 - -/obj/item/part/computer/networking/radio/init() - ..() - spawn(5) - radio_connection = radio_controller.add_object(src, src.frequency, src.rad_filter) - -/obj/item/part/computer/networking/radio/proc/set_frequency(new_frequency) - if(radio_controller) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, rad_filter) - else - frequency = new_frequency - spawn(rand(5,10)) - set_frequency(new_frequency) - -/obj/item/part/computer/networking/radio/receive_signal(var/datum/signal/signal) - if(!signal || !computer || (computer.stat&~MAINT)) // closed laptops use maint, allow it - return - if(computer.program) - computer.program.receive_signal(signal) - -/obj/item/part/computer/networking/radio/proc/post_signal(var/datum/signal/signal) - if(!computer || (computer.stat&~MAINT) || !computer.program) - return - if(!radio_connection) - return - radio_connection.post_signal(src,signal,rad_filter,range) - -/obj/item/part/computer/networking/radio/get_machines(var/typekey) - if(!radio_connection || !radio_connection.frequency) - return list() - var/list/result = list() - var/turf/T = get_turf(loc) - var/z_level = T.z - for(var/obj/O in radio_connection.devices) - if(istype(O,typekey)) - T = get_turf(O) - if(istype(O) && (subspace || (O.z == z_level))) // radio does not work across z-levels - result |= O - return result - -/obj/item/part/computer/networking/radio/verify_machine(var/obj/previous) - if(!previous) - return 0 - if(subspace) - return ( radio_connection && (previous in radio_connection.devices) ) - else - var/turf/T = get_turf(loc) - var/turf/O = get_turf(previous) - if(!T || !O) - return 0 - return ( radio_connection && (previous in radio_connection.devices) && (T.z == O.z)) - -/* - Subspace networking: Communicates off-station. Allows centcom communications. -*/ -/obj/item/part/computer/networking/radio/subspace - name = "subspace networking terminal" - desc = "Communicates long distances and through spatial anomalies." - subspace = 1 - -/* - APC (/area) networking -*/ - -/obj/item/part/computer/networking/area - name = "short-wave networking terminal" - desc = "Connects to nearby computers through the area power network" - -/obj/item/part/computer/networking/area/get_machines(var/typekey) - var/area/A = get_area(loc) - if(!istype(A) || A == /area) - return list() - if(typekey == null) - typekey = /obj/machinery - var/list/machines = list() - for(var/obj/O in A.contents) - if(istype(O,typekey)) - machines |= O - return machines - -/obj/item/part/computer/networking/area/verify_machine(var/obj/previous) - if(!previous) return 0 - var/area/A = get_area(src) - if( A && A == get_area(previous) ) - return 1 - return 0 - -/* - Proximity networking: Connects to machines or computers adjacent to this device -*/ -/obj/item/part/computer/networking/prox - name = "proximity networking terminal" - desc = "Connects a computer to adjacent machines" - -/obj/item/part/computer/networking/prox/get_machines(var/typekey) - var/turf/T = get_turf(loc) - if(!istype(T)) - return list() - if(typekey == null) - typekey = /obj/machinery - var/list/nearby_machines = list() - for(var/obj/O in T) - if(istype(O,typekey)) - nearby_machines += O - for(var/d in cardinal) - var/turf/T2 = get_step(T,d) - for(var/obj/O in T2) - if(istype(O,typekey)) - nearby_machines += O - return nearby_machines - -/obj/item/part/computer/networking/prox/verify_machine(var/obj/previous) - if(!previous) - return 0 - if(get_dist(get_turf(previous),get_turf(loc)) == 1) - return 1 - return 0 - -/* - Cable networking: Not currently used -*/ -/obj/item/part/computer/networking/cable - name = "cable networking terminal" - desc = "Connects to other machines on the same cable network." - -/obj/item/part/computer/networking/cable/get_machines(var/typekey) -// if(istype(computer,/obj/machinery/computer/laptop)) // laptops move, this could get breaky -// return list() - var/turf/T = get_turf(loc) - var/datum/powernet/P = null - for(var/obj/structure/cable/C in T) - if(C.d1 == 0) - P = C.powernet - break - if(!P) - return list() - if(!typekey) - typekey = /obj/machinery - else if(typekey == /datum/powernet) - return list(P) - var/list/candidates = list() - for(var/atom/A in P.nodes) - if(istype(A,typekey)) - candidates += A - else if(istype(A,/obj/machinery/power/terminal)) - var/obj/machinery/power/terminal/PT = A - if(istype(PT.master,typekey)) - candidates += PT.master - return candidates - -/obj/item/part/computer/networking/cable/verify_machine(var/obj/previous) - if(!previous) - return 0 - var/turf/T = get_turf(loc) - var/datum/powernet/P = null - for(var/obj/structure/cable/C in T) - if(C.d1 == 0) - P = C.powernet - break - if(istype(previous,/datum/powernet)) - if(previous == P) - return 1 - return 0 - T = get_turf(previous.loc) - for(var/obj/structure/cable/C in T) - if(C.d1 == 0 && (C.powernet == P)) - return 1 - return 0 - diff --git a/code/game/machinery/computer3/program.dm b/code/game/machinery/computer3/program.dm deleted file mode 100644 index bf84c1622e..0000000000 --- a/code/game/machinery/computer3/program.dm +++ /dev/null @@ -1,404 +0,0 @@ - -/* -Programs are a file that can be executed -*/ - -/datum/file/program - name = "Untitled" - extension = "prog" - image = 'icons/ntos/program.png' - var/desc = "An unidentifiable program." - - var/image/overlay = null // Icon to be put on top of the computer frame. - - var/active_state = "generic" // the icon_state that the computer goes to when the program is active - - drm = 0 // prevents a program from being copied - var/refresh = 0 // if true, computer does screen updates during process(). - var/error = 0 // set by background programs so an error pops up when used - - var/human_controls = 0 // if true, non-human animals cannot interact with this program (monkeys, xenos, etc) - var/ai_allowed = 1 // if true, silicon mobs (AI/cyborg) are allowed to use this program. - - var/datum/browser/popup = null - - // ID access: Note that computer3 does not normally check your ID. - // By default this is only really used for inserted cards. - var/list/req_access = list() // requires all of these UNLESS below succeeds - var/list/req_one_access = list() // requires one of these - - -/datum/file/program/New() - ..() - if(!active_state) - active_state = "generic" - overlay = image('icons/obj/computer3.dmi',icon_state = active_state) - - -/datum/file/program/proc/decode(text) - //adds line breaks - text = replacetext(text, "\n","
    ") - return text - - - -/datum/file/program/execute(var/datum/file/source) - if(computer && !computer.stat) - computer.program = src - computer.req_access = req_access - computer.req_one_access = req_one_access - update_icon() - computer.update_icon() - if(usr) - usr << browse(null, "window=\ref[computer]") - computer.attack_hand(usr) - - ..() - -/* - Standard Topic() for links -*/ - -/datum/file/program/Topic(href, href_list) - return - -/* - The computer object will transfer all empty-hand calls to the program (this includes AIs, Cyborgs, and Monkies) -*/ -/datum/file/program/proc/interact() - return - -/* - Standard receive_signal() -*/ - -/datum/file/program/proc/receive_signal(var/datum/signal/signal) - return -/* - The computer object will transfer all attackby() calls to the program - If the item is a valid interactable object, return 1. Else, return 0. - This helps identify what to use to actually hit the computer with, and - what can be used to interact with it. - - Screwdrivers will, by default, never call program/attackby(). That's used - for deconstruction instead. -*/ - - -/datum/file/program/proc/attackby(O as obj, user as mob) - return - -/* - Try not to overwrite this proc, I'd prefer we stayed - with interact() as the main proc -*/ -/datum/file/program/proc/attack_hand(mob/user as mob) - usr = user - interact() - -/* - Called when the computer is rebooted or the program exits/restarts. - Be sure not to save any work. Do NOT start the program again. - If it is the os, the computer will run it again automatically. - - Also, we are deleting the browser window on the chance that this is happening - when the computer is damaged or disassembled, causing us to lose our computer. - The popup window's title is a reference to the computer, making it unique, so - it could introduce bugs in that case. -*/ -/datum/file/program/proc/Reset() - error = 0 - update_icon() - if(popup) - popup.close() - qdel(popup) - return - -/* - The computer object will transfer process() calls to the program. -*/ -/datum/file/program/process() - if(refresh && computer && !computer.stat) - computer.updateDialog() - update_icon() - -/datum/file/program/proc/update_icon() - return - -/datum/file/program/proc/check_access(obj/item/I) - if( (!istype(req_access) || !req_access.len) && (!istype(req_one_access) || !req_one_access.len) ) //no requirements - return 1 - - if(!I) - return 0 - - var/list/iAccess = I.GetAccess() - if(!iAccess || !iAccess.len) - return 0 - - var/list/temp = req_one_access & iAccess - if(temp.len) // a required access in item access list - return 1 - temp = req_access - iAccess - if(temp.len) // a required access not in item access list - return 0 - return 1 - - -/* - Because this does sanity checks I have added the code to make a popup here. - It also does sanity checks there that should prevent some edge case madness. -*/ -/datum/file/program/proc/interactable(var/mob/user = usr) - if(computer && computer.interactable(user)) - if(!popup) - popup = new(user, "\ref[computer]", name, nref=src) - popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) - popup.set_title_buttons(topic_link(src,"quit","")) - if(popup.user != user) - popup.user = user - popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) - popup.set_title(name) - return 1 - return 0 - - -/datum/file/program/proc/fake_link(var/text) - return "[text]" - -/* - Meant for text (not icons) - - lists all installed drives and their files - - I am NOT adding a computer sanity check here, - because why the flying fuck would you get to this - proc before having run it at least once? - If you cause runtimes with this function - may the shame of all ages come upon you. -*/ -/datum/file/program/proc/list_all_files_by_drive(var/typekey,var/linkop = "runfile") - var/dat = "" - if(!typekey) typekey = /datum/file - if(computer.hdd) - dat += "

    [computer.hdd]

    " - for(var/datum/file/F in computer.hdd.files) - if(istype(F,typekey)) - dat += topic_link(src,"[linkop]=\ref[F]",F.name) + "
    " - if(computer.hdd.files.len == 0) - dat += "No files
    " - dat += "
    " - - if(computer.floppy) - if(!computer.floppy.inserted) - dat += "

    [computer.floppy] - Eject



    " - else - dat += "

    [computer.floppy] - [topic_link(src,"eject_disk","Eject")]

    " - for(var/datum/file/F in computer.floppy.inserted.files) - dat += topic_link(src,"[linkop]=\ref[F]",F.name) + "
    " - if(computer.floppy.inserted.files.len == 0) - dat += "No files
    " - dat += "
    " - - if(computer.cardslot && istype(computer.cardslot.reader,/obj/item/weapon/card/data)) - dat += "

    [computer.cardslot.reader] - [topic_link(src,"eject_card=reader","Eject")]

    " - var/obj/item/weapon/card/data/D = computer.cardslot.reader - for(var/datum/file/F in D.files) - dat += topic_link(src,"[linkop]=\ref[F]",F.name) + "
    " - if(D.files.len == 0) - dat += "No files
    " - return dat - -// You don't NEED to use this version of topic() for this, you can do it yourself if you prefer -// If you do, do the interactable() check first, please, I don't want to repeat it here. It's not hard. -/datum/file/program/Topic(var/href,var/list/href_list) - if(!computer) - return 0 - - // - // usage: eject_disk - // only functions if there is a removable drive - // - if("eject_disk" in href_list) - if(computer.floppy) - computer.floppy.eject_disk() - return 1 - // - // usage: eject_card | eject_card=reader | eject_card=writer - // only functions if there is a cardslot - // - if("eject_card" in href_list) - if(computer.cardslot) - if(istype(computer.cardslot, /obj/item/part/computer/cardslot/dual) && href_list["eject_card"] == "writer") - computer.cardslot.remove(usr) - else - computer.cardslot.remove(usr) - return 1 - // - // usage: runfile=\ref[file] - // executes the file - // - if("runfile" in href_list) - var/datum/file/F = locate(href_list["runfile"]) - if(istype(F) && F.computer == computer) - F.execute(src) - return 1 - - if("close" in href_list) - usr.unset_machine() - popup.close() - return 1 - // - // usage: quit - // unloads the program, returning control to the OS - // - if("quit" in href_list) - computer.program = null - usr << browse(null,"window=\ref[computer]") // ntos will need to resize the window - computer.update_icon() - computer.updateDialog() - return 1 - return 0 - - -/datum/file/program/RD - name = "R&D Manager" - image = 'icons/ntos/research.png' - desc = "A software suit for generic research and development machinery interaction. Comes pre-packaged with extensive cryptographic databanks for secure connections with external devices." - active_state = "rdcomp" - volume = 11000 - -/datum/file/program/RDserv - name = "R&D Server" - image = 'icons/ntos/server.png' - active_state = "rdcomp" - volume = 9000 - -/datum/file/program/SuitSensors - name = "Crew Monitoring" - image = 'icons/ntos/monitoring.png' - active_state = "crew" - volume = 3400 - -/datum/file/program/Genetics - name = "Genetics Suite" - image = 'icons/ntos/genetics.png' - desc = "A sophisticated software suite containing read-only genetics hardware specifications and a highly compressed genome databank." - active_state = "dna" - volume = 8000 - -/datum/file/program/Cloning - name = "Cloning Platform" - image = 'icons/ntos/cloning.png' - desc = "A software platform for accessing external cloning apparatus." - active_state = "dna" - volume = 7000 - -/datum/file/program/TCOMmonitor - name = "TComm Monitor" - image = 'icons/ntos/tcomms.png' - active_state = "comm_monitor" - volume = 5500 - -/datum/file/program/TCOMlogs - name = "TComm Log View" - image = 'icons/ntos/tcomms.png' - active_state = "comm_logs" - volume = 5230 - -/datum/file/program/TCOMtraffic - name = "TComm Traffic" - image = 'icons/ntos/tcomms.png' - active_state = "generic" - volume = 8080 - -/datum/file/program/securitycam - name = "Sec-Cam Viewport" - image = 'icons/ntos/camera.png' - drm = 1 - active_state = "cameras" - volume = 2190 - -/datum/file/program/securityrecords - name = "Security Records" - image = 'icons/ntos/records.png' - drm = 1 - active_state = "security" - volume = 2520 - -/datum/file/program/medicalrecords - name = "Medical Records" - image = 'icons/ntos/medical.png' - drm = 1 - active_state = "medcomp" - volume = 5000 - -/datum/file/program/SMSmonitor - name = "Messaging Monitor" - image = 'icons/ntos/pda.png' - active_state = "comm_monitor" - volume = 3070 - -/datum/file/program/OperationMonitor - name = "OR Monitor" - image = 'icons/ntos/operating.png' - active_state = "operating" - volume = 4750 - -/datum/file/program/PodLaunch - name = "Pod Launch" - active_state = "computer_generic" - volume = 520 - -/datum/file/program/powermon - name = "Power Grid" - image = 'icons/ntos/power.png' - active_state = "power" - volume = 7200 - -/datum/file/program/prisoner - name = "Prisoner Control" - image = 'icons/ntos/prison.png' - drm = 1 - active_state = "power" - volume = 5000 - -/datum/file/program/borg_control - name = "Cyborg Maint" - image = 'icons/ntos/borgcontrol.png' - active_state = "robot" - volume = 9050 - -/datum/file/program/AIupload - name = "AI Upload" - image = 'icons/ntos/aiupload.png' - active_state = "command" - volume = 5000 - -/datum/file/program/Cyborgupload - name = "Cyborg Upload" - image = 'icons/ntos/borgupload.png' - active_state = "command" - volume = 5000 - -/datum/file/program/Exosuit - name = "Exosuit Monitor" - image = 'icons/ntos/exocontrol.png' - active_state = "mecha" - volume = 7000 - -/datum/file/program/EmergencyShuttle - name = "Shuttle Console" - active_state = "shuttle" - volume = 10000 - -/datum/file/program/Stationalert - name = "Alert Monitor" - image = 'icons/ntos/alerts.png' - active_state = "computer_generic" - volume = 10150 - - - - - - diff --git a/code/game/machinery/computer3/program_disks.dm b/code/game/machinery/computer3/program_disks.dm deleted file mode 100644 index e9a649499b..0000000000 --- a/code/game/machinery/computer3/program_disks.dm +++ /dev/null @@ -1,51 +0,0 @@ - - -/obj/item/weapon/disk/file/arcade - name = "Arcade game grab pack" - desc = "A program install disk." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/arcade,/datum/file/program/arcade,/datum/file/program/arcade,/datum/file/program/arcade) - -/*/obj/item/weapon/disk/file/aifixer - name = "AI System Integrity Restorer" - desc = "A program install disk." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/aifixer)*/ - -/obj/item/weapon/disk/file/atmos_alert - name = "Atmospheric Alert Notifier" - desc = "A program install disk." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/atmos_alert) - -/obj/item/weapon/disk/file/cameras - name = "Camera Viewer" - desc = "A program install disk." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/security) - -/obj/item/weapon/disk/file/cameras/syndicate - name = "Camera Viewer" - desc = "A program install disk. A crude skull has been drawn on it and there is a list of items:\nFloppy Drive\nCamera Card\nNetwork Card: Adjacent\nPosition laptop nearby camera, enjoy." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/security/syndicate) - -/obj/item/weapon/disk/file/card - name = "ID Card Modifier" - desc = "A program install disk." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/card_comp) -/* -/obj/item/weapon/disk/file/genetics - name = "Genetics & Cloning" - desc = "A program install disk." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "datadisk_arcade" - spawn_files = list(/datum/file/program/cloning,/datum/file/program/dnascanner) -*/ diff --git a/code/game/machinery/computer3/server.dm b/code/game/machinery/computer3/server.dm deleted file mode 100644 index 5c820ce0ca..0000000000 --- a/code/game/machinery/computer3/server.dm +++ /dev/null @@ -1,32 +0,0 @@ -/* - Todo: - I can probably get away with a global list on servers that contains database sort of stuff - (replacing the datacore probably) - with the justification that they loadbalance and duplicate data across each other. As long as - one server-type computer exists, the station will still have access to datacore-type info. - - I can doubtless use this for station alerts as well, which is good, because I was sort of - wondering how the hell I was going to port that. - - Also todo: Server computers should maybe generate heat the way the R&D server does? - At least the rack computer probably should. -*/ - -/obj/machinery/computer3/server - name = "server" - icon = 'icons/obj/computer3.dmi' - icon_state = "serverframe" - show_keyboard = 0 - -/obj/machinery/computer3/server/rack - name = "server rack" - icon_state = "rackframe" - - spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace) - -/obj/machinery/computer3/server/rack/update_icon() - //overlays.Cut() - return - -/obj/machinery/computer3/server/rack/attack_hand() // Racks have no screen, only AI can use them - return diff --git a/code/game/machinery/computer3/storage.dm b/code/game/machinery/computer3/storage.dm deleted file mode 100644 index 671d28c3a6..0000000000 --- a/code/game/machinery/computer3/storage.dm +++ /dev/null @@ -1,181 +0,0 @@ -/* - Computer devices that can store programs, files, etc. -*/ - -/obj/item/part/computer/storage - name = "Storage Device" - desc = "A device used for storing and retrieving digital information." - - // storage capacity, kb - var/volume = 0 - var/max_volume = 64 // should be enough for anyone - - var/driveletter = null // drive letter according to the computer - - var/list/files = list() // a list of files in the memory (ALL files) - var/removeable = 0 // determinse if the storage device is a removable hard drive (ie floppy) - - - var/writeprotect = 0 // determines if the drive forbids writing. - // note that write-protect is hardware and does not respect emagging. - - var/list/spawnfiles = list()// For mappers, special drives, and data disks - -/obj/item/part/computer/storage/New() - ..() - if(islist(spawnfiles)) - if(removeable && spawnfiles.len) - var/obj/item/part/computer/storage/removable/R = src - R.inserted = new(src) - if(writeprotect) - R.inserted.writeprotect = 1 - for(var/typekey in spawnfiles) - addfile(new typekey(),1) - -// Add a file to the hard drive, returns 0 if failed -// forced is used when spawning files on a write-protect drive -/obj/item/part/computer/storage/proc/addfile(var/datum/file/F,var/forced = 0) - if(!F || (F in files)) - return 1 - if(writeprotect && !forced) - return 0 - if(volume + F.volume > max_volume) - if(!forced) - return 0 - max_volume = volume + F.volume - - files.Add(F) - volume += F.volume - F.computer = computer - F.device = src - return 1 -/obj/item/part/computer/storage/proc/removefile(var/datum/file/F,var/forced = 0) - if(!F || !(F in files)) - return 1 - if(writeprotect && !forced) - return 0 - - files -= F - volume -= F.volume - if(F.device == src) - F.device = null - F.computer = null - return 1 - -/obj/item/part/computer/storage/init(var/obj/machinery/computer/target) - computer = target - for(var/datum/file/F in files) - F.computer = computer - -/* - Standard hard drives for computers. Used in computer construction -*/ -/obj/item/part/computer/storage/hdd - name = "Hard Drive" - max_volume = 25000 - icon_state = "hdd1" - - -/obj/item/part/computer/storage/hdd/big - name = "Big Hard Drive" - max_volume = 50000 - icon_state = "hdd2" - -/obj/item/part/computer/storage/hdd/gigantic - name = "Gigantic Hard Drive" - max_volume = 75000 - icon_state = "hdd3" - -/* - Removeable hard drives for portable storage -*/ - -/obj/item/part/computer/storage/removable - name = "Disk Drive" - max_volume = 3000 - removeable = 1 - - attackby_types = list(/obj/item/weapon/disk/file, /obj/item/weapon/pen) - var/obj/item/weapon/disk/file/inserted = null - -/obj/item/part/computer/storage/removable/proc/eject_disk(var/forced = 0) - if(!forced) - return - files = list() - inserted.loc = computer.loc - if(usr) - if(!usr.get_active_hand()) - usr.put_in_active_hand(inserted) - else if(forced && !usr.get_inactive_hand()) - usr.put_in_inactive_hand(inserted) - for(var/datum/file/F in inserted.files) - F.computer = null - inserted = null - - -/obj/item/part/computer/storage/removable/attackby(obj/O as obj, mob/user as mob) - if(inserted && istype(O,/obj/item/weapon/pen)) - to_chat(usr, "You use [O] to carefully pry [inserted] out of [src].") - eject_disk(forced = 1) - return - - if(istype(O,/obj/item/weapon/disk/file)) - if(inserted) - to_chat(usr, "There's already a disk in [src]!") - return - - to_chat(usr, "You insert [O] into [src].") - usr.drop_item() - O.loc = src - inserted = O - writeprotect = inserted.writeprotect - - files = inserted.files - for(var/datum/file/F in inserted.files) - F.computer = computer - - return - ..() - -/obj/item/part/computer/storage/removable/addfile(var/datum/file/F) - if(!F || !inserted) - return 0 - - if(F in inserted.files) - return 1 - - if(inserted.volume + F.volume > inserted.max_volume) - return 0 - - inserted.files.Add(F) - F.computer = computer - F.device = inserted - return 1 - -/* - Removable hard drive presents... - removeable disk! -*/ -/obj/item/weapon/disk/file - //parent_type = /obj/item/part/computer/storage // todon't: do this - name = "Data Disk" - desc = "A device that can be inserted and removed into computers easily as a form of portable data storage. This one stores 1 Megabyte" - var/list/files - var/list/spawn_files = list() - var/writeprotect = 0 - var/volume = 0 - var/max_volume = 1028 - - -/obj/item/weapon/disk/file/New() - ..() - icon_state = "datadisk[rand(0,6)]" - src.pixel_x = rand(-5, 5) - src.pixel_y = rand(-5, 5) - files = list() - if(istype(spawn_files)) - for(var/typekey in spawn_files) - var/datum/file/F = new typekey() - F.device = src - files += F - volume += F.volume diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 0729121195..5486facff1 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -446,3 +446,9 @@ Class Procs: M.deconstruct(src) qdel(src) return 1 + +/datum/proc/apply_visual(mob/M) + return + +/datum/proc/remove_visual(mob/M) + return \ No newline at end of file diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 0b985d3047..b23897e9eb 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,7 +8,11 @@ obj/machinery/recharger idle_power_usage = 4 active_power_usage = 40000 //40 kW var/obj/item/charging = null +<<<<<<< HEAD var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/ammo_casing/nsfw_batt) //VOREStation Add - NSFW Batteries +======= + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash) +>>>>>>> 2baef09... Merge pull request #6031 from Novacat/spriteadd var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered @@ -44,7 +48,16 @@ obj/machinery/recharger if(E.self_recharge) to_chat(user, "Your gun has no recharge port.") return +<<<<<<< HEAD if(!G.get_cell() && !istype(G, /obj/item/ammo_casing/nsfw_batt)) //VOREStation Edit: NSFW charging +======= + if(istype(G, /obj/item/modular_computer)) + var/obj/item/modular_computer/C = G + if(!C.battery_module) + to_chat(user, "This device does not have a battery installed.") + return + else if(!G.get_cell()) +>>>>>>> 2baef09... Merge pull request #6031 from Novacat/spriteadd to_chat(user, "This device does not have a battery installed.") return @@ -86,6 +99,27 @@ obj/machinery/recharger update_use_power(1) icon_state = icon_state_idle else + if(istype(charging, /obj/item/modular_computer)) + var/obj/item/modular_computer/C = charging + if(!C.battery_module.battery.fully_charged()) + icon_state = icon_state_charging + C.battery_module.battery.give(active_power_usage*CELLRATE) + update_use_power(2) + else + icon_state = icon_state_charged + update_use_power(1) + return + else if(istype(charging, /obj/item/weapon/computer_hardware/battery_module)) + var/obj/item/weapon/computer_hardware/battery_module/BM = charging + if(!BM.battery.fully_charged()) + icon_state = icon_state_charging + BM.battery.give(active_power_usage*CELLRATE) + update_use_power(2) + else + icon_state = icon_state_charged + update_use_power(1) + return + var/obj/item/weapon/cell/C = charging.get_cell() if(istype(C)) if(!C.fully_charged()) diff --git a/code/game/objects/items/devices/holowarrant.dm b/code/game/objects/items/devices/holowarrant.dm new file mode 100644 index 0000000000..e2fdd4269e --- /dev/null +++ b/code/game/objects/items/devices/holowarrant.dm @@ -0,0 +1,110 @@ +/obj/item/device/holowarrant + name = "warrant projector" + desc = "The practical paperwork replacement for the officer on the go." + icon_state = "holowarrant" + item_state = "flashtool" + throwforce = 5 + w_class = ITEMSIZE_SMALL + throw_speed = 4 + throw_range = 10 + var/datum/data/record/warrant/active + +//look at it +/obj/item/device/holowarrant/examine(mob/user) + . = ..() + if(active) + to_chat(user, "It's a holographic warrant for '[active.fields["namewarrant"]]'.") + if(in_range(user, src) || isghost(user)) + show_content(user) + else + to_chat(user, "You have to go closer if you want to read it.") + +//hit yourself with it +/obj/item/device/holowarrant/attack_self(mob/living/user as mob) + active = null + var/list/warrants = list() + if(!isnull(data_core.general)) + for(var/datum/data/record/warrant/W in data_core.warrants) + warrants += W.fields["namewarrant"] + if(warrants.len == 0) + to_chat(user,"There are no warrants available") + return + var/temp + temp = input(user, "Which warrant would you like to load?") as null|anything in warrants + for(var/datum/data/record/warrant/W in data_core.warrants) + if(W.fields["namewarrant"] == temp) + active = W + update_icon() + +/obj/item/device/holowarrant/attackby(obj/item/weapon/W, mob/user) + if(active) + var/obj/item/weapon/card/id/I = W.GetIdCard() + if(I) + var/choice = alert(user, "Would you like to authorize this warrant?","Warrant authorization","Yes","No") + if(choice == "Yes") + active.fields["auth"] = "[I.registered_name] - [I.assignment ? I.assignment : "(Unknown)"]" + user.visible_message("You swipe \the [I] through the [src].", \ + "[user] swipes \the [I] through the [src].") + return 1 + ..() + +//hit other people with it +/obj/item/device/holowarrant/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + user.visible_message("You show the warrant to [M].", \ + "[user] holds up a warrant projector and shows the contents to [M].") + M.examinate(src) + +/obj/item/device/holowarrant/update_icon() + if(active) + icon_state = "holowarrant_filled" + else + icon_state = "holowarrant" + +/obj/item/device/holowarrant/proc/show_content(mob/user, forceshow) + if(!active) + return + if(active.fields["arrestsearch"] == "arrest") + var/output = {" + [active.fields["namewarrant"]] +
    Sol Central Government Colonial Marshal Bureau
    + in the jurisdiction of the
    + [using_map.boss_name] in [using_map.system_name]
    +
    + ARREST WARRANT

    +
    + This document serves as authorization and notice for the arrest of _[active.fields["namewarrant"]]____ for the crime(s) of:
    [active.fields["charges"]]
    +
    + Vessel or habitat: _[using_map.station_name]____
    +
    _[active.fields["auth"]]____
    + Person authorizing arrest
    + + "} + + show_browser(user, output, "window=Warrant for the arrest of [active.fields["namewarrant"]]") + if(active.fields["arrestsearch"] == "search") + var/output= {" + Search Warrant: [active.fields["namewarrant"]] +
    in the jurisdiction of the
    + [using_map.boss_name] in [using_map.system_name]
    +
    + SEARCH WARRANT

    +
    + The Security Officer(s) bearing this Warrant are hereby authorized by the Issuer
    + to conduct a one time lawful search of the Suspect's person/belongings/premises and/or Department
    + for any items and materials that could be connected to the suspected criminal act described below,
    + pending an investigation in progress. The Security Officer(s) are obligated to remove any and all
    + such items from the Suspects posession and/or Department and file it as evidence. The Suspect/Department
    + staff is expected to offer full co-operation. In the event of the Suspect/Department staff attempting
    + to resist/impede this search or flee, they must be taken into custody immediately!
    + All confiscated items must be filed and taken to Evidence!

    +
    + Suspect's/location name: [active.fields["namewarrant"]]
    +
    + For the following reasons: [active.fields["charges"]]
    +
    + Warrant issued by: [active.fields ["auth"]]
    +
    + Vessel or habitat: _[using_map.station_name]____
    + + "} + show_browser(user, output, "window=Search warrant for [active.fields["namewarrant"]]") \ No newline at end of file diff --git a/code/game/objects/items/devices/uplink_random_lists.dm b/code/game/objects/items/devices/uplink_random_lists.dm index 38605da018..23dc77d143 100644 --- a/code/game/objects/items/devices/uplink_random_lists.dm +++ b/code/game/objects/items/devices/uplink_random_lists.dm @@ -74,7 +74,6 @@ var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random items += new/datum/uplink_random_item(/datum/uplink_item/item/stealth_items/chameleon_kit) items += new/datum/uplink_random_item(/datum/uplink_item/item/stealth_items/chameleon_projector) items += new/datum/uplink_random_item(/datum/uplink_item/item/stealth_items/voice) - items += new/datum/uplink_random_item(/datum/uplink_item/item/stealth_items/camera_floppy, 10, 0) items += new/datum/uplink_random_item(/datum/uplink_item/item/armor/heavy_vest) items += new/datum/uplink_random_item(/datum/uplink_item/item/armor/combat) diff --git a/code/game/objects/items/weapons/circuitboards/machinery/research.dm b/code/game/objects/items/weapons/circuitboards/machinery/research.dm index 3fc0aa26ab..2bfdde4977 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/research.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/research.dm @@ -85,4 +85,12 @@ obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mo /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/manipulator = 1, /obj/item/weapon/stock_parts/micro_laser = 1, - /obj/item/weapon/stock_parts/console_screen = 1) \ No newline at end of file + /obj/item/weapon/stock_parts/console_screen = 1) + +obj/item/weapon/circuitboard/ntnet_relay + name = "Circuit board (NTNet Quantum Relay)" + build_path = "/obj/machinery/ntnet_relay" + board_type = "machine" + origin_tech = list(TECH_DATA = 4) + req_components = list( + "/obj/item/stack/cable_coil" = 15) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 7d0b7ee259..3475e60314 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -575,15 +575,9 @@ Traitors and the like can also be revived with the previous role mostly intact. return if(!customname) customname = "[using_map.company_name] Update" - for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (BROKEN|NOPOWER) ) ) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) - P.name = "'[command_name()] Update.'" - P.info = replacetext(input, "\n", "
    ") - P.update_space(P.info) - P.update_icon() - C.messagetitle.Add("[command_name()] Update") - C.messagetext.Add(P.info) + + //New message handling + post_comm_message(customname, replacetext(input, "\n", "
    ")) switch(alert("Should this be announced to the general population?",,"Yes","No")) if("Yes") diff --git a/code/modules/alarm/alarm_handler.dm b/code/modules/alarm/alarm_handler.dm index d7a7cdf713..22b069093a 100644 --- a/code/modules/alarm/alarm_handler.dm +++ b/code/modules/alarm/alarm_handler.dm @@ -50,6 +50,11 @@ /datum/alarm_handler/proc/major_alarms() return visible_alarms() +/datum/alarm_handler/proc/has_major_alarms() + if(alarms && alarms.len) + return 1 + return 0 + /datum/alarm_handler/proc/minor_alarms() return visible_alarms() diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index e8b1a56d62..2b86685f17 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -140,3 +140,300 @@ else . = valid_reagents[metadata] I.reagents.add_reagent(., I.reagents.get_free_space()) + + +/datum/gear_tweak/tablet + var/list/ValidProcessors = list(/obj/item/weapon/computer_hardware/processor_unit/small) + var/list/ValidBatteries = list(/obj/item/weapon/computer_hardware/battery_module/nano, /obj/item/weapon/computer_hardware/battery_module/micro, /obj/item/weapon/computer_hardware/battery_module) + var/list/ValidHardDrives = list(/obj/item/weapon/computer_hardware/hard_drive/micro, /obj/item/weapon/computer_hardware/hard_drive/small, /obj/item/weapon/computer_hardware/hard_drive) + var/list/ValidNetworkCards = list(/obj/item/weapon/computer_hardware/network_card, /obj/item/weapon/computer_hardware/network_card/advanced) + var/list/ValidNanoPrinters = list(null, /obj/item/weapon/computer_hardware/nano_printer) + var/list/ValidCardSlots = list(null, /obj/item/weapon/computer_hardware/card_slot) + var/list/ValidTeslaLinks = list(null, /obj/item/weapon/computer_hardware/tesla_link) + +/datum/gear_tweak/tablet/get_contents(var/list/metadata) + var/list/names = list() + var/obj/O = ValidProcessors[metadata[1]] + if(O) + names += initial(O.name) + O = ValidBatteries[metadata[2]] + if(O) + names += initial(O.name) + O = ValidHardDrives[metadata[3]] + if(O) + names += initial(O.name) + O = ValidNetworkCards[metadata[4]] + if(O) + names += initial(O.name) + O = ValidNanoPrinters[metadata[5]] + if(O) + names += initial(O.name) + O = ValidCardSlots[metadata[6]] + if(O) + names += initial(O.name) + O = ValidTeslaLinks[metadata[7]] + if(O) + names += initial(O.name) + return "[english_list(names, and_text = ", ")]" + +/datum/gear_tweak/tablet/get_metadata(var/user, var/metadata) + . = list() + + var/list/names = list() + var/counter = 1 + for(var/i in ValidProcessors) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + var/entry = input(user, "Choose a processor.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidBatteries) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a battery.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidHardDrives) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a hard drive.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidNetworkCards) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a network card.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidNanoPrinters) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a nanoprinter.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidCardSlots) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a card slot.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidTeslaLinks) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a tesla link.", "Character Preference") in names + . += names[entry] + +/datum/gear_tweak/tablet/get_default() + return list(1, 1, 1, 1, 1, 1, 1) + +/datum/gear_tweak/tablet/tweak_item(var/obj/item/modular_computer/tablet/I, var/list/metadata) + if(ValidProcessors[metadata[1]]) + var/t = ValidProcessors[metadata[1]] + I.processor_unit = new t(I) + if(ValidBatteries[metadata[2]]) + var/t = ValidBatteries[metadata[2]] + I.battery_module = new t(I) + I.battery_module.charge_to_full() + if(ValidHardDrives[metadata[3]]) + var/t = ValidHardDrives[metadata[3]] + I.hard_drive = new t(I) + if(ValidNetworkCards[metadata[4]]) + var/t = ValidNetworkCards[metadata[4]] + I.network_card = new t(I) + if(ValidNanoPrinters[metadata[5]]) + var/t = ValidNanoPrinters[metadata[5]] + I.nano_printer = new t(I) + if(ValidCardSlots[metadata[6]]) + var/t = ValidCardSlots[metadata[6]] + I.card_slot = new t(I) + if(ValidTeslaLinks[metadata[7]]) + var/t = ValidTeslaLinks[metadata[7]] + I.tesla_link = new t(I) + +/datum/gear_tweak/laptop + var/list/ValidProcessors = list(/obj/item/weapon/computer_hardware/processor_unit/small, /obj/item/weapon/computer_hardware/processor_unit) + var/list/ValidBatteries = list(/obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/computer_hardware/battery_module/advanced, /obj/item/weapon/computer_hardware/battery_module/super) + var/list/ValidHardDrives = list(/obj/item/weapon/computer_hardware/hard_drive, /obj/item/weapon/computer_hardware/hard_drive/advanced, /obj/item/weapon/computer_hardware/hard_drive/super) + var/list/ValidNetworkCards = list(/obj/item/weapon/computer_hardware/network_card, /obj/item/weapon/computer_hardware/network_card/advanced) + var/list/ValidNanoPrinters = list(null, /obj/item/weapon/computer_hardware/nano_printer) + var/list/ValidCardSlots = list(null, /obj/item/weapon/computer_hardware/card_slot) + var/list/ValidTeslaLinks = list(null, /obj/item/weapon/computer_hardware/tesla_link) + +/datum/gear_tweak/laptop/get_contents(var/list/metadata) + var/list/names = list() + var/obj/O = ValidProcessors[metadata[1]] + if(O) + names += initial(O.name) + O = ValidBatteries[metadata[2]] + if(O) + names += initial(O.name) + O = ValidHardDrives[metadata[3]] + if(O) + names += initial(O.name) + O = ValidNetworkCards[metadata[4]] + if(O) + names += initial(O.name) + O = ValidNanoPrinters[metadata[5]] + if(O) + names += initial(O.name) + O = ValidCardSlots[metadata[6]] + if(O) + names += initial(O.name) + O = ValidTeslaLinks[metadata[7]] + if(O) + names += initial(O.name) + return "[english_list(names, and_text = ", ")]" + +/datum/gear_tweak/laptop/get_metadata(var/user, var/metadata) + . = list() + + var/list/names = list() + var/counter = 1 + for(var/i in ValidProcessors) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + var/entry = input(user, "Choose a processor.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidBatteries) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a battery.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidHardDrives) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a hard drive.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidNetworkCards) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a network card.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidNanoPrinters) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a nanoprinter.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidCardSlots) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a card slot.", "Character Preference") in names + . += names[entry] + + names = list() + counter = 1 + for(var/i in ValidTeslaLinks) + if(i) + var/obj/O = i + names[initial(O.name)] = counter++ + else + names["None"] = counter++ + + entry = input(user, "Choose a tesla link.", "Character Preference") in names + . += names[entry] + +/datum/gear_tweak/laptop/get_default() + return list(1, 1, 1, 1, 1, 1, 1) + +/datum/gear_tweak/laptop/tweak_item(var/obj/item/modular_computer/laptop/preset/I, var/list/metadata) + if(ValidProcessors[metadata[1]]) + var/t = ValidProcessors[metadata[1]] + I.processor_unit = new t(I) + if(ValidBatteries[metadata[2]]) + var/t = ValidBatteries[metadata[2]] + I.battery_module = new t(I) + I.battery_module.charge_to_full() + if(ValidHardDrives[metadata[3]]) + var/t = ValidHardDrives[metadata[3]] + I.hard_drive = new t(I) + if(ValidNetworkCards[metadata[4]]) + var/t = ValidNetworkCards[metadata[4]] + I.network_card = new t(I) + if(ValidNanoPrinters[metadata[5]]) + var/t = ValidNanoPrinters[metadata[5]] + I.nano_printer = new t(I) + if(ValidCardSlots[metadata[6]]) + var/t = ValidCardSlots[metadata[6]] + I.card_slot = new t(I) + if(ValidTeslaLinks[metadata[7]]) + var/t = ValidTeslaLinks[metadata[7]] + I.tesla_link = new t(I) diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 52fce45031..06753139c7 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -159,3 +159,48 @@ /datum/gear/utility/umbrella/New() ..() gear_tweaks = list(gear_tweak_free_color_choice) + +/**************** +modular computers +****************/ + +/datum/gear/utility/cheaptablet + display_name = "tablet computer: cheap" + display_name = "tablet computer, cheap" + path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap + cost = 3 + +/datum/gear/utility/normaltablet + display_name = "tablet computer: advanced" + display_name = "tablet computer, advanced" + path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced + cost = 4 + +/datum/gear/utility/customtablet + display_name = "tablet computer: custom" + display_name = "tablet computer, custom" + path = /obj/item/modular_computer/tablet + cost = 4 + +/datum/gear/utility/customtablet/New() + ..() + gear_tweaks += new /datum/gear_tweak/tablet() + +/datum/gear/utility/cheaplaptop + display_name = "laptop computer, cheap" + path = /obj/item/modular_computer/laptop/preset/custom_loadout/cheap + cost = 4 + +/datum/gear/utility/normallaptop + display_name = "laptop computer, advanced" + path = /obj/item/modular_computer/laptop/preset/custom_loadout/advanced + cost = 5 + +/datum/gear/utility/customlaptop + display_name = "laptop computer, custom" + path = /obj/item/modular_computer/laptop/preset/ + cost = 6 + +/datum/gear/utility/customlaptop/New() + ..() + gear_tweaks += new /datum/gear_tweak/laptop() diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index f62356d83c..764a99ad97 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -89,6 +89,12 @@ recipes += new/datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1) recipes += new/datum/stack_recipe("floor lamp fixture frame", /obj/machinery/light_construct/flamp, 2) recipes += new/datum/stack_recipe("apc frame", /obj/item/frame/apc, 2) + recipes += new/datum/stack_recipe_list("modular computer frames", list( \ + new/datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20),\ + new/datum/stack_recipe("modular telescreen frame", /obj/item/modular_computer/telescreen, 10),\ + new/datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10),\ + new/datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5),\ + )) recipes += new/datum/stack_recipe_list("filing cabinets", list( \ new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1), \ diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index a730d811b4..5df33d70e2 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -109,4 +109,6 @@ // Used by mobs in virtual reality to point back to the "real" mob the client belongs to. var/mob/living/carbon/human/vr_holder = null // Used by "real" mobs after they leave a VR session - var/mob/living/carbon/human/vr_link = null \ No newline at end of file + var/mob/living/carbon/human/vr_link = null + + var/obj/machinery/machine_visual //machine that is currently applying visual effects to this mob. Only used for camera monitors currently. diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fe409a9799..cb63df8d56 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1316,6 +1316,11 @@ if(found_welder) client.screen |= global_hud.darkMask +/mob/living/carbon/human/reset_view(atom/A) + ..() + if(machine_visual && machine_visual != A) + machine_visual.remove_visual(src) + /mob/living/carbon/human/handle_vision() if(stat == DEAD) sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS|SEE_SELF @@ -1377,6 +1382,7 @@ if(machine) var/viewflags = machine.check_eye(src) + machine.apply_visual(src) if(viewflags < 0) reset_view(null, 0) else if(viewflags && !looking_elsewhere) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 24d56945b8..0b37b89076 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -9,6 +9,10 @@ handle_modifiers() //VOREStation Edit - Needs to be done even if in nullspace. if(!loc) return + + if(machine && !CanMouseDrop(machine, src)) + machine = null + var/datum/gas_mixture/environment = loc.return_air() //handle_modifiers() // Do this early since it might affect other things later. //VOREStation Edit diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index 7d2848f9bf..bfff010d03 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -145,9 +145,6 @@ /datum/robot_component/camera/update_power_state() ..() if (camera) - //check if camera component was deactivated - if (!powered && camera.status != powered) - camera.kick_viewers() camera.status = powered /datum/robot_component/camera/install() @@ -157,12 +154,10 @@ /datum/robot_component/camera/uninstall() if (camera) camera.status = 0 - camera.kick_viewers() /datum/robot_component/camera/destroy() if (camera) camera.status = 0 - camera.kick_viewers() // SELF DIAGNOSIS MODULE // Analyses cyborg's modules, providing damage readouts and basic information diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 6c31f54f8e..af06226e15 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -158,7 +158,7 @@ proc/getsensorlevel(A) /proc/stars(n, pr) if (pr == null) pr = 25 - if (pr <= 0) + if (pr < 0) return null else if (pr >= 100) diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm new file mode 100644 index 0000000000..28173c09d0 --- /dev/null +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -0,0 +1,65 @@ +var/global/ntnrc_uid = 0 + +/datum/ntnet_conversation/ + var/id = null + var/title = "Untitled Conversation" + var/datum/computer_file/program/chatclient/operator // "Administrator" of this channel. Creator starts as channel's operator, + var/list/messages = list() + var/list/clients = list() + var/password + +/datum/ntnet_conversation/New() + id = ntnrc_uid + ntnrc_uid++ + if(ntnet_global) + ntnet_global.chat_channels.Add(src) + ..() + +/datum/ntnet_conversation/proc/add_message(var/message, var/username) + message = "[stationtime2text()] [username]: [message]" + messages.Add(message) + trim_message_list() + +/datum/ntnet_conversation/proc/add_status_message(var/message) + messages.Add("[stationtime2text()] -!- [message]") + trim_message_list() + +/datum/ntnet_conversation/proc/trim_message_list() + if(messages.len <= 50) + return + messages.Cut(1, (messages.len-49)) + +/datum/ntnet_conversation/proc/add_client(var/datum/computer_file/program/chatclient/C) + if(!istype(C)) + return + clients.Add(C) + add_status_message("[C.username] has joined the channel.") + // No operator, so we assume the channel was empty. Assign this user as operator. + if(!operator) + changeop(C) + +/datum/ntnet_conversation/proc/remove_client(var/datum/computer_file/program/chatclient/C) + if(!istype(C) || !(C in clients)) + return + clients.Remove(C) + add_status_message("[C.username] has left the channel.") + + // Channel operator left, pick new operator + if(C == operator) + operator = null + if(clients.len) + var/datum/computer_file/program/chatclient/newop = pick(clients) + changeop(newop) + + +/datum/ntnet_conversation/proc/changeop(var/datum/computer_file/program/chatclient/newop) + if(istype(newop)) + operator = newop + add_status_message("Channel operator status transferred to [newop.username].") + +/datum/ntnet_conversation/proc/change_title(var/newtitle, var/datum/computer_file/program/chatclient/client) + if(operator != client) + return 0 // Not Authorised + + add_status_message("[client.username] has changed channel title from [title] to [newtitle]") + title = newtitle \ No newline at end of file diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm new file mode 100644 index 0000000000..be42cec23f --- /dev/null +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -0,0 +1,184 @@ +var/global/datum/ntnet/ntnet_global = new() + + +// This is the NTNet datum. There can be only one NTNet datum in game at once. Modular computers read data from this. +/datum/ntnet/ + var/list/relays = list() + var/list/logs = list() + var/list/available_station_software = list() + var/list/available_antag_software = list() + var/list/available_news = list() + var/list/chat_channels = list() + var/list/fileservers = list() + var/list/email_accounts = list() // I guess we won't have more than 999 email accounts active at once in single round, so this will do until Servers are implemented someday. + var/list/banned_nids = list() + // Amount of logs the system tries to keep in memory. Keep below 999 to prevent byond from acting weirdly. + // High values make displaying logs much laggier. + var/setting_maxlogcount = 100 + + // These only affect wireless. LAN (consoles) are unaffected since it would be possible to create scenario where someone turns off NTNet, and is unable to turn it back on since it refuses connections + var/setting_softwaredownload = 1 + var/setting_peertopeer = 1 + var/setting_communication = 1 + var/setting_systemcontrol = 1 + var/setting_disabled = 0 // Setting to 1 will disable all wireless, independently on relays status. + + var/intrusion_detection_enabled = 1 // Whether the IDS warning system is enabled + var/intrusion_detection_alarm = 0 // Set when there is an IDS warning due to malicious (antag) software. + + +// If new NTNet datum is spawned, it replaces the old one. +/datum/ntnet/New() + if(ntnet_global && (ntnet_global != src)) + ntnet_global = src // There can be only one. + for(var/obj/machinery/ntnet_relay/R in machines) + relays.Add(R) + R.NTNet = src + build_software_lists() + build_news_list() + build_emails_list() + add_log("NTNet logging system activated.") + +/datum/ntnet/proc/add_log_with_ids_check(var/log_string, var/obj/item/weapon/computer_hardware/network_card/source = null) + if(intrusion_detection_enabled) + add_log(log_string, source) + +// Simplified logging: Adds a log. log_string is mandatory parameter, source is optional. +/datum/ntnet/proc/add_log(var/log_string, var/obj/item/weapon/computer_hardware/network_card/source = null) + var/log_text = "[stationtime2text()] - " + if(source) + log_text += "[source.get_network_tag()] - " + else + log_text += "*SYSTEM* - " + log_text += log_string + logs.Add(log_text) + + if(logs.len > setting_maxlogcount) + // We have too many logs, remove the oldest entries until we get into the limit + for(var/L in logs) + if(logs.len > setting_maxlogcount) + logs.Remove(L) + else + break + +/datum/ntnet/proc/check_banned(var/NID) + if(!relays || !relays.len) + return FALSE + + for(var/obj/machinery/ntnet_relay/R in relays) + if(R.operable()) + return (NID in banned_nids) + + return FALSE + +// Checks whether NTNet operates. If parameter is passed checks whether specific function is enabled. +/datum/ntnet/proc/check_function(var/specific_action = 0) + if(!relays || !relays.len) // No relays found. NTNet is down + return 0 + + var/operating = 0 + + // Check all relays. If we have at least one working relay, network is up. + for(var/obj/machinery/ntnet_relay/R in relays) + if(R.operable()) + operating = 1 + break + + if(setting_disabled) + return 0 + + if(specific_action == NTNET_SOFTWAREDOWNLOAD) + return (operating && setting_softwaredownload) + if(specific_action == NTNET_PEERTOPEER) + return (operating && setting_peertopeer) + if(specific_action == NTNET_COMMUNICATION) + return (operating && setting_communication) + if(specific_action == NTNET_SYSTEMCONTROL) + return (operating && setting_systemcontrol) + return operating + +// Builds lists that contain downloadable software. +/datum/ntnet/proc/build_software_lists() + available_station_software = list() + available_antag_software = list() + for(var/F in typesof(/datum/computer_file/program)) + var/datum/computer_file/program/prog = new F + // Invalid type (shouldn't be possible but just in case), invalid filetype (not executable program) or invalid filename (unset program) + if(!prog || !istype(prog) || prog.filename == "UnknownProgram" || prog.filetype != "PRG") + continue + // Check whether the program should be available for station/antag download, if yes, add it to lists. + if(prog.available_on_ntnet) + available_station_software.Add(prog) + if(prog.available_on_syndinet) + available_antag_software.Add(prog) + +// Builds lists that contain downloadable software. +/datum/ntnet/proc/build_news_list() + available_news = list() + for(var/F in typesof(/datum/computer_file/data/news_article/)) + var/datum/computer_file/data/news_article/news = new F(1) + if(news.stored_data) + available_news.Add(news) + +// Generates service email list. Currently only used by broadcaster service +/datum/ntnet/proc/build_emails_list() + for(var/F in subtypesof(/datum/computer_file/data/email_account/service)) + new F() + +// Attempts to find a downloadable file according to filename var +/datum/ntnet/proc/find_ntnet_file_by_name(var/filename) + for(var/datum/computer_file/program/P in available_station_software) + if(filename == P.filename) + return P + for(var/datum/computer_file/program/P in available_antag_software) + if(filename == P.filename) + return P + +// Resets the IDS alarm +/datum/ntnet/proc/resetIDS() + intrusion_detection_alarm = 0 + +/datum/ntnet/proc/toggleIDS() + resetIDS() + intrusion_detection_enabled = !intrusion_detection_enabled + +// Removes all logs +/datum/ntnet/proc/purge_logs() + logs = list() + add_log("-!- LOGS DELETED BY SYSTEM OPERATOR -!-") + +// Updates maximal amount of stored logs. Use this instead of setting the number, it performs required checks. +/datum/ntnet/proc/update_max_log_count(var/lognumber) + if(!lognumber) + return 0 + // Trim the value if necessary + lognumber = between(MIN_NTNET_LOGS, lognumber, MAX_NTNET_LOGS) + setting_maxlogcount = lognumber + add_log("Configuration Updated. Now keeping [setting_maxlogcount] logs in system memory.") + +/datum/ntnet/proc/toggle_function(var/function) + if(!function) + return + function = text2num(function) + switch(function) + if(NTNET_SOFTWAREDOWNLOAD) + setting_softwaredownload = !setting_softwaredownload + add_log("Configuration Updated. Wireless network firewall now [setting_softwaredownload ? "allows" : "disallows"] connection to software repositories.") + if(NTNET_PEERTOPEER) + setting_peertopeer = !setting_peertopeer + add_log("Configuration Updated. Wireless network firewall now [setting_peertopeer ? "allows" : "disallows"] peer to peer network traffic.") + if(NTNET_COMMUNICATION) + setting_communication = !setting_communication + add_log("Configuration Updated. Wireless network firewall now [setting_communication ? "allows" : "disallows"] instant messaging and similar communication services.") + if(NTNET_SYSTEMCONTROL) + setting_systemcontrol = !setting_systemcontrol + add_log("Configuration Updated. Wireless network firewall now [setting_systemcontrol ? "allows" : "disallows"] remote control of station's systems.") + +/datum/ntnet/proc/does_email_exist(var/login) + for(var/datum/computer_file/data/email_account/A in ntnet_global.email_accounts) + if(A.login == login) + return 1 + return 0 + + + diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm new file mode 100644 index 0000000000..7c76fdd2e3 --- /dev/null +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -0,0 +1,136 @@ +// Relays don't handle any actual communication. Global NTNet datum does that, relays only tell the datum if it should or shouldn't work. +/obj/machinery/ntnet_relay + name = "NTNet Quantum Relay" + desc = "A very complex router and transmitter capable of connecting electronic devices together. Looks fragile." + use_power = 2 + active_power_usage = 20000 //20kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. + idle_power_usage = 100 + icon_state = "bus" + anchored = 1 + density = 1 + var/datum/ntnet/NTNet = null // This is mostly for backwards reference and to allow varedit modifications from ingame. + var/enabled = 1 // Set to 0 if the relay was turned off + var/dos_failure = 0 // Set to 1 if the relay failed due to (D)DoS attack + var/list/dos_sources = list() // Backwards reference for qdel() stuff + + // Denial of Service attack variables + var/dos_overload = 0 // Amount of DoS "packets" in this relay's buffer + var/dos_capacity = 500 // Amount of DoS "packets" in buffer required to crash the relay + var/dos_dissipate = 1 // Amount of DoS "packets" dissipated over time. + + +// TODO: Implement more logic here. For now it's only a placeholder. +/obj/machinery/ntnet_relay/operable() + if(!..(EMPED)) + return 0 + if(dos_failure) + return 0 + if(!enabled) + return 0 + return 1 + +/obj/machinery/ntnet_relay/update_icon() + if(operable()) + icon_state = "bus" + else + icon_state = "bus_off" + +/obj/machinery/ntnet_relay/process() + if(operable()) + use_power = 2 + else + use_power = 1 + + if(dos_overload) + dos_overload = max(0, dos_overload - dos_dissipate) + + // If DoS traffic exceeded capacity, crash. + if((dos_overload > dos_capacity) && !dos_failure) + dos_failure = 1 + update_icon() + ntnet_global.add_log("Quantum relay switched from normal operation mode to overload recovery mode.") + // If the DoS buffer reaches 0 again, restart. + if((dos_overload == 0) && dos_failure) + dos_failure = 0 + update_icon() + ntnet_global.add_log("Quantum relay switched from overload recovery mode to normal operation mode.") + ..() + +/obj/machinery/ntnet_relay/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = list() + data["enabled"] = enabled + data["dos_capacity"] = dos_capacity + data["dos_overload"] = dos_overload + data["dos_crashed"] = dos_failure + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "ntnet_relay.tmpl", "NTNet Quantum Relay", 500, 300, state = state) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/ntnet_relay/attack_hand(var/mob/living/user) + ui_interact(user) + +/obj/machinery/ntnet_relay/Topic(href, href_list) + if(..()) + return 1 + if(href_list["restart"]) + dos_overload = 0 + dos_failure = 0 + update_icon() + ntnet_global.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.") + return 1 + else if(href_list["toggle"]) + enabled = !enabled + ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].") + update_icon() + return 1 + else if(href_list["purge"]) + ntnet_global.banned_nids.Cut() + ntnet_global.add_log("Manual override: Network blacklist cleared.") + return 1 + +/obj/machinery/ntnet_relay/New() + uid = gl_uid + gl_uid++ + component_parts = list() + component_parts += new /obj/item/stack/cable_coil(src,15) + component_parts += new /obj/item/weapon/circuitboard/ntnet_relay(src) + + if(ntnet_global) + ntnet_global.relays.Add(src) + NTNet = ntnet_global + ntnet_global.add_log("New quantum relay activated. Current amount of linked relays: [NTNet.relays.len]") + ..() + +/obj/machinery/ntnet_relay/Destroy() + if(ntnet_global) + ntnet_global.relays.Remove(src) + ntnet_global.add_log("Quantum relay connection severed. Current amount of linked relays: [NTNet.relays.len]") + NTNet = null + for(var/datum/computer_file/program/ntnet_dos/D in dos_sources) + D.target = null + D.error = "Connection to quantum relay severed" + ..() + +/obj/machinery/ntnet_relay/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if(W.is_screwdriver()) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + panel_open = !panel_open + to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch") + return + if(W.is_crowbar()) + if(!panel_open) + to_chat(user, "Open the maintenance panel first.") + return + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + to_chat(user, "You disassemble \the [src]!") + + for(var/atom/movable/A in component_parts) + A.forceMove(src.loc) + new /obj/structure/frame(src.loc) + qdel(src) + return + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/NTNet/emails/email_account.dm b/code/modules/modular_computers/NTNet/emails/email_account.dm new file mode 100644 index 0000000000..b5f9388714 --- /dev/null +++ b/code/modules/modular_computers/NTNet/emails/email_account.dm @@ -0,0 +1,82 @@ +/datum/computer_file/data/email_account/ + var/list/inbox = list() + var/list/spam = list() + var/list/deleted = list() + + var/login = "" + var/password = "" + var/can_login = TRUE // Whether you can log in with this account. Set to false for system accounts + var/suspended = FALSE // Whether the account is banned by the SA. + +/datum/computer_file/data/email_account/calculate_size() + size = 1 + for(var/datum/computer_file/data/email_message/stored_message in all_emails()) + stored_message.calculate_size() + size += stored_message.size + +/datum/computer_file/data/email_account/New() + ntnet_global.email_accounts.Add(src) + ..() + +/datum/computer_file/data/email_account/Destroy() + ntnet_global.email_accounts.Remove(src) + . = ..() + +/datum/computer_file/data/email_account/proc/all_emails() + return (inbox | spam | deleted) + +/datum/computer_file/data/email_account/proc/send_mail(var/recipient_address, var/datum/computer_file/data/email_message/message, var/relayed = 0) + var/datum/computer_file/data/email_account/recipient + for(var/datum/computer_file/data/email_account/account in ntnet_global.email_accounts) + if(account.login == recipient_address) + recipient = account + break + + if(!istype(recipient)) + return 0 + + if(!recipient.receive_mail(message, relayed)) + return + + ntnet_global.add_log_with_ids_check("EMAIL LOG: [login] -> [recipient.login] title: [message.title].") + return 1 + +/datum/computer_file/data/email_account/proc/receive_mail(var/datum/computer_file/data/email_message/received_message, var/relayed) + received_message.set_timestamp() + if(!ntnet_global.intrusion_detection_enabled) + inbox.Add(received_message) + return 1 + // Spam filters may occassionally let something through, or mark something as spam that isn't spam. + if(received_message.spam) + if(prob(98)) + spam.Add(received_message) + else + inbox.Add(received_message) + else + if(prob(1)) + spam.Add(received_message) + else + inbox.Add(received_message) + return 1 + +// Address namespace (@internal-services.nt) for email addresses with special purpose only!. +/datum/computer_file/data/email_account/service/ + can_login = FALSE + +/datum/computer_file/data/email_account/service/broadcaster/ + login = "broadcast@internal-services.nt" + +/datum/computer_file/data/email_account/service/broadcaster/receive_mail(var/datum/computer_file/data/email_message/received_message, var/relayed) + if(!istype(received_message) || relayed) + return 0 + // Possibly exploitable for user spamming so keep admins informed. + if(!received_message.spam) + log_and_message_admins("Broadcast email address used by [usr]. Message title: [received_message.title].") + + spawn(0) + for(var/datum/computer_file/data/email_account/email_account in ntnet_global.email_accounts) + var/datum/computer_file/data/email_message/new_message = received_message.clone() + send_mail(email_account.login, new_message, 1) + sleep(2) + + return 1 \ No newline at end of file diff --git a/code/modules/modular_computers/NTNet/emails/email_message.dm b/code/modules/modular_computers/NTNet/emails/email_message.dm new file mode 100644 index 0000000000..d499195db2 --- /dev/null +++ b/code/modules/modular_computers/NTNet/emails/email_message.dm @@ -0,0 +1,32 @@ +// Currently not actually represented in file systems, though the support for it is in place already. +/datum/computer_file/data/email_message/ + stored_data = "" + var/title = "" + var/source = "" + var/spam = FALSE + var/timestamp = "" + var/datum/computer_file/attachment = null + +/datum/computer_file/data/email_message/clone() + var/datum/computer_file/data/email_message/temp = ..() + temp.title = title + temp.source = source + temp.spam = spam + temp.timestamp = timestamp + if(attachment) + temp.attachment = attachment.clone() + return temp + + +// Turns /email_message/ file into regular /data/ file. +/datum/computer_file/data/email_message/proc/export() + var/datum/computer_file/data/dat = new/datum/computer_file/data() + dat.stored_data = "Received from [source] at [timestamp]." + dat.stored_data += "\[b\][title]\[/b\]" + dat.stored_data += stored_data + dat.calculate_size() + return dat + +/datum/computer_file/data/email_message/proc/set_timestamp() + timestamp = stationtime2text() + diff --git a/code/modules/modular_computers/_description.dm b/code/modules/modular_computers/_description.dm new file mode 100644 index 0000000000..2335ce08e7 --- /dev/null +++ b/code/modules/modular_computers/_description.dm @@ -0,0 +1,121 @@ +/* +Program-based computers, designed to replace computer3 project and eventually most consoles on station + + +1. Basic information +Program based computers will allow you to do multiple things from single computer. Each computer will have programs, with more being downloadable from NTNet (stationwide network with wireless coverage) +if user has apropriate ID card access. It will be possible to hack the computer by using an emag on it - the emag will have to be completely new and will be consumed on use, but it will +lift ALL locks on ALL installed programs, and allow download of programs even if your ID doesn't have access to them. Computers will have hard drives that can store files. +Files can be programs (datum/computer_file/program/ subtype) or data files (datum/computer_file/data/ subtypes). Program for sending files will be available that will allow transfer via NTNet. +NTNet coverage will be limited to station's Z level, but better network card (=more expensive and higher power use) will allow usage everywhere. Hard drives will have limited capacity for files +which will be related to how good hard drive you buy when purchasing the laptop. For storing more files USB-style drives will be buildable with Protolathe in research. + +2. Available devices +CONSOLES +Consoles will come in various pre-fabricated loadouts, each loadout starting with certain set of programs (aka Engineering console, Medical console, etc.), of course, more software may be downloaded. +Consoles won't usually have integrated battery, but the possibility to install one will exist for critical applications. Consoles are considered hardwired into NTNet network which means they +will have working coverage on higher speed (Ethernet is faster than Wi-Fi) and won't require wireless coverage to exist. +LAPTOPS +Laptops are middle ground between actual portable devices and full consoles. They offer certain level of mobility, as they can be closed, moved somewhere else and then opened again. +Laptops will by default have internal battery to power them, and may be recharged with rechargers. However, laptops rely on wireless NTNet coverage. Laptop HDDs are also designed with power efficiency +in mind, which means they sacrifice some storage space for higher battery life. Laptops may be dispensed from computer vendor machine, and may be customised before vending. For people which don't +want to rely on internal battery, tesla link exists that connects to APC, if one exists. +TABLETS +Tablets are smallest available devices, designed with full mobility in mind. Tablets have only weak CPU which means the software they can run is somewhat limited. They are also designed with high +battery life in mind, which means the hardware focuses on power efficiency rather than high performance. This is most visible with hard drives which have quite small storage capacity. +Tablets can't be equipped with tesla link, which means they have to be recharged manually. + + +3. Computer Hardware +Computers will come with basic hardware installed, with upgrades being selectable when purchasing the device. +Hard Drive: Stores data, mandatory for the computer to work +Network Card: Connects to NTNet +Battery: Internal power source that ensures the computer operates when not connected to APC. +Extras (those won't be installed by default, but can be bought) +ID Card Slot: Required for HoP-style programs to work. Access for security record-style programs is read from ID of user [RFID?] without requiring this +APC Tesla Relay: Wirelessly powers the device from APC. Consoles have it by default. Laptops can buy it. +Disk Drive: Allows usage of portable data disks. +Nano Printer: Allows the computer to scan paper contents and save them to file, as well as recycle papers and print stuff on it. + +4. NTNet +NTNet is stationwide network that allows users to download programs needed for their work. It will be possible to send any files to other active computers using relevant program (NTN Transfer). +NTNet is under jurisdiction of both Engineering and Research. Engineering is responsible for any repairs if necessary and research is responsible for monitoring. It is similar to PDA messaging. +Operation requires functional "NTNet Relay" which is by default placed on tcommsat. If the relay is damaged NTNet will be offline until it is replaced. Multiple relays bring extra redundancy, +if one is destroyed the second will take over. If all relays are gone it stops working, simple as that. NTNet may be altered via administration console available to Research Director. It is +possible to enable/disable Software Downloading, P2P file transfers and Communication (IC version of IRC, PDA messages for more than two people) + +5. Software +Software would almost exclusively use NanoUI modules. Few exceptions are text editor (uses similar screen as TCS IDE used for editing and classic HTML for previewing as Nano looks differently) +and similar programs which for some reason require HTML UI. Most software will be highly dependent on NTNet to work as laptops are not physically connected to the station's network. +What i plan to add: + +Note: XXXXDB programs will use ingame_manuals to display basic help for players, similar to how books, etc. do + +Basic - Software in this bundle is automagically preinstalled in every new computer + NTN Transfer - Allows P2P transfer of files to other computers that run this. + Configurator - Allows configuration of computer's hardware, basically status screen. + File Browser - Allows you to browse all files stored on the computer. Allows renaming/deleting of files. + TXT Editor - Allows you editing data files in text editor mode. + NanoPrint - Allows you to operate NanoPrinter hardware to print text files. + NTNRC Chat - NTNet Relay Chat client. Allows PDA-messaging style messaging for more than two users. Person which created the conversation is Host and has administrative privilegies (kicking, etc.) + NTNet News - Allows reading news from newscaster network. + +Engineering - Requires "Engineering" access on ID card (ie. CE, Atmostech, Engineer) + Alarm Monitor - Allows monitoring alarms, same as the stationbound one. + Power Monitor - Power monitoring computer, connects to sensors in same way as regular one does. + Atmospheric Control - Allows access to the Atmospherics Monitor Console that operates air alarms. Requires extra access: "Atmospherics" + RCON Remote Control Console - Allows access to the RCON Remote Control Console. Requires extra access: "Power Equipment" + EngiDB - Allows accessing NTNet information repository for information about engineering-related things. + +Medical - Requires "Medbay" access on ID card (ie. CMO, Doctor,..) + Medical Records Uplink - Allows editing/reading of medical records. Printing requires NanoPrinter hardware. + MediDB - Allows accessing NTNet information repository for information about medical procedures + ChemDB - Requires extra access: "Chemistry" - Downloads basic information about recipes from NTNet + +Research - Requires "Research and Development" access on ID card (ie. RD, Roboticist, etc.) + Research Server Monitor - Allows monitoring of research levels on RnD servers. (read only) + Robotics Monitor Console - Allows monitoring of robots and exosuits. Lockdown/Self-Destruct options are unavailable [balance reasons for malf/traitor AIs]. Requires extra access: "Robotics" + NTNRC Administration Console - Allows administrative access to NTNRC. This includes bypassing any channel passwords and enabling "invisible" mode for spying on conversations. Requires extra access: "Research Director" + NTNet Administration Console - Allows remote configuration of NTNet Relay - CAUTION: If NTNet is turned off it won't be possible to turn it on again from the computer, as operation requires NTNet to work! Requires extra access: "Research Director" + NTNet Monitor - Allows monitoring of NTNet and it's various components, including simplified network logs and system status. + +Security - Requires "Security" access on ID card (ie. HOS, Security officer, Detective) + Security Records Uplink - Allows editing/reading of security records. Printing requires Nanoprinter hardware. + LawDB - Allows accessing NTNet information repository for security information (corporate regulations) + Camera Uplink - Allows viewing cameras around the station. + +Command - Requires "Bridge" access on ID card (all heads) + Alertcon Access - Allows changing of alert levels. Red requires activation from two computers with two IDs similar to how those wall mounted devices do. + Employment Records Access - Allows reading of employment records. Printing requires NanoPrinter hardware. + Communication Console - Allows sending emergency messages to Central. + Emergency Shuttle Control Console - Allows calling/recalling the emergency shuttle. + Shuttle Control Console - Allows control of various shuttles around the station (mining, research, engineering) + +*REDACTED* - Can be downloaded from SyndiCorp servers, only via emagged devices. These files are very large and limited to laptops/consoles only. + SYSCRACK - Allows cracking of secure network terminals, such as, NTNet administration. The sysadmin will probably notice this. + SYSOVERRIDE - Allows hacking into any device connected to NTNet. User will notice this and may stop the hack by disconnecting from NTNet first. After hacking various options exist, such as stealing/deleting files. + SYSKILL - Tricks NTNet to force-disconnect a device. The sysadmin will probably notice this. + SYSDOS - Launches a Denial of Service attack on NTNet relay. Can DoS only one relay at once. Requires NTNet connection. After some time the relay crashes until attack stops. The sysadmin will probably notice this. + AIHACK - Hacks an AI, allowing you to upload/remove/modify a law even without relevant circuit board. The AI is alerted once the hack starts, and it takes a while for it to complete. Does not work on AIs with zeroth law. + COREPURGE - Deletes all files on the hard drive, including the undeletable ones. Something like software self-destruct for computer. + +6. Security +Laptops will be password-lockable. If password is set a MD5 hash of it is stored and password is required every time you turn on the laptop. +Passwords may be decrypted by using special Decrypter (protolathable, RDs office starts with one) device that will slowly decrypt the password. +Decryption time would be length_of_password * 30 seconds, with maximum being 9 minutes (due to battery life limitations, which is 10+ min). +If decrypted the password is cleared, so you can keep using your favorite password without people ever actually revealing it (for meta prevention reasons mostly). +Emagged laptops will have option to enable "Safe Encryption". If safely encrypted laptop is decrypted it loses it's emag status and 50% of files is deleted (randomly selected). + +7. System Administrator +System Administrator will be new job under Research. It's main specifics will be maintaining of computer systems on station, espicially from software side. +From IC perspective they'd probably know how to build a console or something given they work with computers, but they are mostly programmers/network experts. +They will have office in research, which will probably replace (and contain) the server room and part of the toxins storage which is currently oversized. +They will have access to DOWNLOAD (not run) all programs that exist on NTNet. They'll have fairly good amount of available programs, most of them being +administrative consoles and other very useful things. They'll also be able to monitor NTNet. There will probably be one or two job slots. + +8. IDS +With addition of various antag programs, IDS(Intrusion Detection System) will be added to NTNet. This system can be turned on/off via administration console. +If enabled, this system automatically detects any abnormality and triggers a warning that's visible on the NTNet status screen, as well as generating a security log. +IDS can be disabled by simple on/off switch in the configuration. + +*/ \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm new file mode 100644 index 0000000000..30d9cf6039 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -0,0 +1,269 @@ +/obj/item/modular_computer/process() + if(!enabled) // The computer is turned off + last_power_usage = 0 + return 0 + + if(damage > broken_damage) + shutdown_computer() + return 0 + + if(active_program && active_program.requires_ntnet && !get_ntnet_status(active_program.requires_ntnet_feature)) // Active program requires NTNet to run but we've just lost connection. Crash. + active_program.event_networkfailure(0) + + for(var/datum/computer_file/program/P in idle_threads) + if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) + P.event_networkfailure(1) + + if(active_program) + if(active_program.program_state != PROGRAM_STATE_KILLED) + active_program.ntnet_status = get_ntnet_status() + active_program.computer_emagged = computer_emagged + active_program.process_tick() + else + active_program = null + + for(var/datum/computer_file/program/P in idle_threads) + if(P.program_state != PROGRAM_STATE_KILLED) + P.ntnet_status = get_ntnet_status() + P.computer_emagged = computer_emagged + P.process_tick() + else + idle_threads.Remove(P) + + handle_power() // Handles all computer power interaction + check_update_ui_need() + +// Used to perform preset-specific hardware changes. +/obj/item/modular_computer/proc/install_default_hardware() + return 1 + +// Used to install preset-specific programs +/obj/item/modular_computer/proc/install_default_programs() + return 1 + +/obj/item/modular_computer/New() + START_PROCESSING(SSobj, src) + install_default_hardware() + if(hard_drive) + install_default_programs() + update_icon() + update_verbs() + ..() + +/obj/item/modular_computer/Destroy() + kill_program(1) + STOP_PROCESSING(SSobj, src) + for(var/obj/item/weapon/computer_hardware/CH in src.get_all_components()) + uninstall_component(null, CH) + qdel(CH) + return ..() + +/obj/item/modular_computer/emag_act(var/remaining_charges, var/mob/user) + if(computer_emagged) + to_chat(user, "\The [src] was already emagged.") + return //NO_EMAG_ACT + else + computer_emagged = 1 + to_chat(user, "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message.") + return 1 + +/obj/item/modular_computer/update_icon() + icon_state = icon_state_unpowered + + overlays.Cut() + if(bsod) + overlays.Add("bsod") + return + if(!enabled) + if(icon_state_screensaver) + overlays.Add(icon_state_screensaver) + set_light(0) + return + set_light(light_strength) + if(active_program) + overlays.Add(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu) + if(active_program.program_key_state) + overlays.Add(active_program.program_key_state) + else + overlays.Add(icon_state_menu) + +/obj/item/modular_computer/proc/turn_on(var/mob/user) + if(bsod) + return + if(tesla_link) + tesla_link.enabled = 1 + var/issynth = issilicon(user) // Robots and AIs get different activation messages. + if(damage > broken_damage) + if(issynth) + to_chat(user, "You send an activation signal to \the [src], but it responds with an error code. It must be damaged.") + 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(issynth) + to_chat(user, "You send an activation signal to \the [src], turning it on") + else + to_chat(user, "You press the power button and start up \the [src]") + enable_computer(user) + + else // Unpowered + if(issynth) + to_chat(user, "You send an activation signal to \the [src] but it does not respond") + else + to_chat(user, "You press the power button but \the [src] does not respond") + +// Relays kill program request to currently active program. Use this to quit current program. +/obj/item/modular_computer/proc/kill_program(var/forced = 0) + if(active_program) + active_program.kill_program(forced) + active_program = null + var/mob/user = usr + if(user && istype(user)) + ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. + update_icon() + +// Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on) +/obj/item/modular_computer/proc/get_ntnet_status(var/specific_action = 0) + if(network_card) + return network_card.get_signal(specific_action) + else + return 0 + +/obj/item/modular_computer/proc/add_log(var/text) + if(!get_ntnet_status()) + return 0 + return ntnet_global.add_log(text, network_card) + +/obj/item/modular_computer/proc/shutdown_computer(var/loud = 1) + kill_program(1) + for(var/datum/computer_file/program/P in idle_threads) + P.kill_program(1) + idle_threads.Remove(P) + if(loud) + visible_message("\The [src] shuts down.") + enabled = 0 + update_icon() + +/obj/item/modular_computer/proc/enable_computer(var/mob/user = null) + enabled = 1 + update_icon() + + // Autorun feature + var/datum/computer_file/data/autorun = hard_drive ? hard_drive.find_file_by_name("autorun") : null + if(istype(autorun)) + run_program(autorun.stored_data) + + if(user) + ui_interact(user) + +/obj/item/modular_computer/proc/minimize_program(mob/user) + if(!active_program || !processor_unit) + return + + idle_threads.Add(active_program) + active_program.program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs + SSnanoui.close_uis(active_program.NM ? active_program.NM : active_program) + active_program = null + update_icon() + if(istype(user)) + ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. + + +/obj/item/modular_computer/proc/run_program(prog) + var/datum/computer_file/program/P = null + var/mob/user = usr + if(hard_drive) + P = hard_drive.find_file_by_name(prog) + + if(!P || !istype(P)) // Program not found or it's not executable program. + to_chat(user, "\The [src]'s screen shows \"I/O ERROR - Unable to run [prog]\" warning.") + return + + P.computer = src + + if(!P.is_supported_by_hardware(hardware_flag, 1, user)) + return + if(P in idle_threads) + P.program_state = PROGRAM_STATE_ACTIVE + active_program = P + idle_threads.Remove(P) + update_icon() + return + + if(idle_threads.len >= processor_unit.max_idle_programs+1) + to_chat(user, "\The [src] displays a \"Maximal CPU load reached. Unable to run another program.\" error") + return + + if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) // The program requires NTNet connection, but we are not connected to NTNet. + to_chat(user, "\The [src]'s screen shows \"NETWORK ERROR - Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\" warning.") + return + + if(active_program) + minimize_program(user) + + if(P.run_program(user)) + active_program = P + update_icon() + return 1 + +/obj/item/modular_computer/proc/update_uis() + if(active_program) //Should we update program ui or computer ui? + SSnanoui.update_uis(active_program) + if(active_program.NM) + SSnanoui.update_uis(active_program.NM) + else + SSnanoui.update_uis(src) + +/obj/item/modular_computer/proc/check_update_ui_need() + var/ui_update_needed = 0 + if(battery_module) + var/batery_percent = battery_module.battery.percent() + if(last_battery_percent != batery_percent) //Let's update UI on percent change + ui_update_needed = 1 + last_battery_percent = batery_percent + + if(stationtime2text() != last_world_time) + last_world_time = stationtime2text() + ui_update_needed = 1 + + if(idle_threads.len) + var/list/current_header_icons = list() + for(var/datum/computer_file/program/P in idle_threads) + if(!P.ui_header) + continue + current_header_icons[P.type] = P.ui_header + if(!last_header_icons) + last_header_icons = current_header_icons + + else if(!listequal(last_header_icons, current_header_icons)) + last_header_icons = current_header_icons + ui_update_needed = 1 + else + for(var/x in last_header_icons|current_header_icons) + if(last_header_icons[x]!=current_header_icons[x]) + last_header_icons = current_header_icons + ui_update_needed = 1 + break + + if(ui_update_needed) + update_uis() + +// Used by camera monitor program +/obj/item/modular_computer/check_eye(var/mob/user) + if(active_program) + return active_program.check_eye(user) + else + return ..() + +/obj/item/modular_computer/proc/set_autorun(program) + if(!hard_drive) + return + var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun") + if(!istype(autorun)) + autorun = new/datum/computer_file/data() + autorun.filename = "autorun" + hard_drive.store_file(autorun) + if(autorun.stored_data == program) + autorun.stored_data = null + else + autorun.stored_data = program \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/damage.dm b/code/modules/modular_computers/computers/modular_computer/damage.dm new file mode 100644 index 0000000000..d63bf39fdf --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/damage.dm @@ -0,0 +1,55 @@ +/obj/item/modular_computer/examine(var/mob/user) + . = ..() + if(damage > broken_damage) + to_chat(user, "It is heavily damaged!") + else if(damage) + to_chat(user, "It is damaged.") + +/obj/item/modular_computer/proc/break_apart() + visible_message("\The [src] breaks apart!") + var/turf/newloc = get_turf(src) + new /obj/item/stack/material/steel(newloc, round(steel_sheet_cost/2)) + for(var/obj/item/weapon/computer_hardware/H in get_all_components()) + uninstall_component(null, H) + H.forceMove(newloc) + if(prob(25)) + H.take_damage(rand(10,30)) + qdel() + +/obj/item/modular_computer/proc/take_damage(var/amount, var/component_probability, var/damage_casing = 1, var/randomize = 1) + if(randomize) + // 75%-125%, rand() works with integers, apparently. + amount *= (rand(75, 125) / 100.0) + amount = round(amount) + if(damage_casing) + damage += amount + damage = between(0, damage, max_damage) + + if(component_probability) + for(var/obj/item/weapon/computer_hardware/H in get_all_components()) + if(prob(component_probability)) + H.take_damage(round(amount / 2)) + + if(damage >= max_damage) + break_apart() + +// Stronger explosions cause serious damage to internal components +// Minor explosions are mostly mitigitated by casing. +/obj/item/modular_computer/ex_act(var/severity) + take_damage(rand(100,200) / severity, 30 / severity) + +// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components +/obj/item/modular_computer/emp_act(var/severity) + take_damage(rand(100,200) / severity, 50 / severity, 0) + +// "Stun" weapons can cause minor damage to components (short-circuits?) +// "Burn" damage is equally strong against internal components and exterior casing +// "Brute" damage mostly damages the casing. +/obj/item/modular_computer/bullet_act(var/obj/item/projectile/Proj) + switch(Proj.damage_type) + if(BRUTE) + take_damage(Proj.damage, Proj.damage / 2) + if(HALLOSS) + take_damage(Proj.damage, Proj.damage / 3, 0) + if(BURN) + take_damage(Proj.damage, Proj.damage / 1.5) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/hardware.dm b/code/modules/modular_computers/computers/modular_computer/hardware.dm new file mode 100644 index 0000000000..38545e8176 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/hardware.dm @@ -0,0 +1,139 @@ +// Attempts to install the hardware into apropriate slot. +/obj/item/modular_computer/proc/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0) + // "USB" flash drive. + if(istype(H, /obj/item/weapon/computer_hardware/hard_drive/portable)) + if(portable_drive) + to_chat(user, "This computer's portable drive slot is already occupied by \the [portable_drive].") + return + found = 1 + portable_drive = H + else if(istype(H, /obj/item/weapon/computer_hardware/hard_drive)) + if(hard_drive) + to_chat(user, "This computer's hard drive slot is already occupied by \the [hard_drive].") + return + found = 1 + hard_drive = H + else if(istype(H, /obj/item/weapon/computer_hardware/network_card)) + if(network_card) + to_chat(user, "This computer's network card slot is already occupied by \the [network_card].") + return + found = 1 + network_card = H + else if(istype(H, /obj/item/weapon/computer_hardware/nano_printer)) + if(nano_printer) + to_chat(user, "This computer's nano printer slot is already occupied by \the [nano_printer].") + return + found = 1 + nano_printer = H + else if(istype(H, /obj/item/weapon/computer_hardware/card_slot)) + if(card_slot) + to_chat(user, "This computer's card slot is already occupied by \the [card_slot].") + return + found = 1 + card_slot = H + else if(istype(H, /obj/item/weapon/computer_hardware/battery_module)) + if(battery_module) + to_chat(user, "This computer's battery slot is already occupied by \the [battery_module].") + return + found = 1 + battery_module = H + else if(istype(H, /obj/item/weapon/computer_hardware/processor_unit)) + if(processor_unit) + to_chat(user, "This computer's processor slot is already occupied by \the [processor_unit].") + return + found = 1 + processor_unit = H + else if(istype(H, /obj/item/weapon/computer_hardware/tesla_link)) + if(tesla_link) + to_chat(user, "This computer's tesla link slot is already occupied by \the [tesla_link].") + return + found = 1 + tesla_link = H + if(found) + to_chat(user, "You install \the [H] into \the [src]") + H.holder2 = src + user.drop_from_inventory(H) + H.forceMove(src) + update_verbs() + +// Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware. +/obj/item/modular_computer/proc/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0) + if(portable_drive == H) + portable_drive = null + found = 1 + if(hard_drive == H) + hard_drive = null + found = 1 + critical = 1 + if(network_card == H) + network_card = null + found = 1 + if(nano_printer == H) + nano_printer = null + found = 1 + if(card_slot == H) + card_slot = null + found = 1 + if(battery_module == H) + battery_module = null + found = 1 + if(processor_unit == H) + processor_unit = null + found = 1 + critical = 1 + if(tesla_link == H) + tesla_link = null + found = 1 + if(found) + if(user) + to_chat(user, "You remove \the [H] from \the [src].") + H.forceMove(get_turf(src)) + H.holder2 = null + update_verbs() + if(critical && enabled) + if(user) + to_chat(user, "\The [src]'s screen freezes for few seconds and then displays an \"HARDWARE ERROR: Critical component disconnected. Please verify component connection and reboot the device. If the problem persists contact technical support for assistance.\" warning.") + shutdown_computer() + update_icon() + + +// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null +/obj/item/modular_computer/proc/find_hardware_by_name(var/name) + if(portable_drive && (portable_drive.name == name)) + return portable_drive + if(hard_drive && (hard_drive.name == name)) + return hard_drive + if(network_card && (network_card.name == name)) + return network_card + if(nano_printer && (nano_printer.name == name)) + return nano_printer + if(card_slot && (card_slot.name == name)) + return card_slot + if(battery_module && (battery_module.name == name)) + return battery_module + if(processor_unit && (processor_unit.name == name)) + return processor_unit + if(tesla_link && (tesla_link.name == name)) + return tesla_link + return null + +// Returns list of all components +/obj/item/modular_computer/proc/get_all_components() + var/list/all_components = list() + if(hard_drive) + all_components.Add(hard_drive) + if(network_card) + all_components.Add(network_card) + if(portable_drive) + all_components.Add(portable_drive) + if(nano_printer) + all_components.Add(nano_printer) + if(card_slot) + all_components.Add(card_slot) + if(battery_module) + all_components.Add(battery_module) + if(processor_unit) + all_components.Add(processor_unit) + if(tesla_link) + all_components.Add(tesla_link) + return all_components \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/interaction.dm b/code/modules/modular_computers/computers/modular_computer/interaction.dm new file mode 100644 index 0000000000..bf70bb7d28 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/interaction.dm @@ -0,0 +1,200 @@ +/obj/item/modular_computer/proc/update_verbs() + verbs.Cut() + if(portable_drive) + verbs |= /obj/item/modular_computer/verb/eject_usb + if(card_slot) + verbs |= /obj/item/modular_computer/verb/eject_id + verbs |= /obj/item/modular_computer/verb/emergency_shutdown + +// Forcibly shut down the device. To be used when something bugs out and the UI is nonfunctional. +/obj/item/modular_computer/verb/emergency_shutdown() + set name = "Forced Shutdown" + set category = "Object" + set src in view(1) + + if(usr.incapacitated() || !istype(usr, /mob/living)) + to_chat(usr, "You can't do that.") + return + + if(!Adjacent(usr)) + to_chat(usr, "You can't reach it.") + return + + if(enabled) + bsod = 1 + update_icon() + shutdown_computer() + to_chat(usr, "You press a hard-reset button on \the [src]. It displays a brief debug screen before shutting down.") + spawn(2 SECONDS) + bsod = 0 + update_icon() + + +// Eject ID card from computer, if it has ID slot with card inside. +/obj/item/modular_computer/verb/eject_id() + set name = "Eject ID" + set category = "Object" + set src in view(1) + + if(usr.incapacitated() || !istype(usr, /mob/living)) + to_chat(usr, "You can't do that.") + return + + if(!Adjacent(usr)) + to_chat(usr, "You can't reach it.") + return + + proc_eject_id(usr) + +// Eject ID card from computer, if it has ID slot with card inside. +/obj/item/modular_computer/verb/eject_usb() + set name = "Eject Portable Storage" + set category = "Object" + set src in view(1) + + if(usr.incapacitated() || !istype(usr, /mob/living)) + to_chat(usr, "You can't do that.") + return + + if(!Adjacent(usr)) + to_chat(usr, "You can't reach it.") + return + + proc_eject_usb(usr) + +/obj/item/modular_computer/proc/proc_eject_id(mob/user) + if(!user) + user = usr + + if(!card_slot) + to_chat(user, "\The [src] does not have an ID card slot") + return + + if(!card_slot.stored_card) + to_chat(user, "There is no card in \the [src]") + return + + if(active_program) + active_program.event_idremoved(0) + + for(var/datum/computer_file/program/P in idle_threads) + P.event_idremoved(1) + + card_slot.stored_card.forceMove(get_turf(src)) + card_slot.stored_card = null + update_uis() + to_chat(user, "You remove the card from \the [src]") + + +/obj/item/modular_computer/proc/proc_eject_usb(mob/user) + if(!user) + user = usr + + if(!portable_drive) + to_chat(user, "There is no portable device connected to \the [src].") + return + + uninstall_component(user, portable_drive) + update_uis() + +/obj/item/modular_computer/attack_ghost(var/mob/observer/ghost/user) + if(enabled) + ui_interact(user) + else if(check_rights(R_ADMIN, 0, user)) + var/response = alert(user, "This computer is turned off. Would you like to turn it on?", "Admin Override", "Yes", "No") + if(response == "Yes") + turn_on(user) + +/obj/item/modular_computer/attack_ai(var/mob/user) + return attack_self(user) + +/obj/item/modular_computer/attack_hand(var/mob/user) + if(anchored) + return attack_self(user) + return ..() + +// On-click handling. Turns on the computer if it's off and opens the GUI. +/obj/item/modular_computer/attack_self(var/mob/user) + if(enabled && screen_on) + ui_interact(user) + else if(!enabled && screen_on) + turn_on(user) + +/obj/item/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if(istype(W, /obj/item/weapon/card/id)) // ID Card, try to insert it. + var/obj/item/weapon/card/id/I = W + if(!card_slot) + to_chat(user, "You try to insert \the [I] into \the [src], but it does not have an ID card slot installed.") + return + + if(card_slot.stored_card) + to_chat(user, "You try to insert \the [I] into \the [src], but it's ID card slot is occupied.") + return + user.drop_from_inventory(I) + card_slot.stored_card = I + I.forceMove(src) + update_uis() + to_chat(user, "You insert \the [I] into \the [src].") + return + if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/paper_bundle)) + if(!nano_printer) + return + nano_printer.attackby(W, user) + if(istype(W, /obj/item/weapon/computer_hardware)) + var/obj/item/weapon/computer_hardware/C = W + if(C.hardware_size <= max_hardware_size) + try_install_component(user, C) + else + to_chat(user, "This component is too large for \the [src].") + if(W.is_wrench()) + var/list/components = get_all_components() + if(components.len) + to_chat(user, "Remove all components from \the [src] before disassembling it.") + return + new /obj/item/stack/material/steel( get_turf(src.loc), steel_sheet_cost ) + src.visible_message("\The [src] has been disassembled by [user].") + qdel(src) + return + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.isOn()) + to_chat(user, "\The [W] is off.") + return + + if(!damage) + to_chat(user, "\The [src] does not require repairs.") + return + + to_chat(user, "You begin repairing damage to \the [src]...") + if(WT.remove_fuel(round(damage/75)) && do_after(usr, damage/10)) + damage = 0 + to_chat(user, "You repair \the [src].") + return + + if(W.is_screwdriver()) + var/list/all_components = get_all_components() + if(!all_components.len) + to_chat(user, "This device doesn't have any components installed.") + return + var/list/component_names = list() + for(var/obj/item/weapon/computer_hardware/H in all_components) + component_names.Add(H.name) + + var/choice = input(usr, "Which component do you want to uninstall?", "Computer maintenance", null) as null|anything in component_names + + if(!choice) + return + + if(!Adjacent(usr)) + return + + var/obj/item/weapon/computer_hardware/H = find_hardware_by_name(choice) + + if(!H) + return + + uninstall_component(user, H) + + return + + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/power.dm b/code/modules/modular_computers/computers/modular_computer/power.dm new file mode 100644 index 0000000000..48871619fa --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/power.dm @@ -0,0 +1,51 @@ +/obj/item/modular_computer/proc/power_failure(var/malfunction = 0) + if(enabled) // Shut down the computer + visible_message("\The [src]'s screen flickers briefly and then goes dark.") + if(active_program) + active_program.event_powerfailure(0) + for(var/datum/computer_file/program/PRG in idle_threads) + PRG.event_powerfailure(1) + shutdown_computer(0) + +// Tries to use power from battery. Passing 0 as parameter results in this proc returning whether battery is functional or not. +/obj/item/modular_computer/proc/battery_power(var/power_usage = 0) + apc_powered = FALSE + if(!battery_module || !battery_module.check_functionality() || battery_module.battery.charge <= 0) + return FALSE + if(battery_module.battery.use(power_usage * CELLRATE) || ((power_usage == 0) && battery_module.battery.charge)) + return TRUE + return FALSE + +// Tries to use power from APC, if present. +/obj/item/modular_computer/proc/apc_power(var/power_usage = 0) + apc_powered = TRUE + // Tesla link was originally limited to machinery only, but this probably works too, and the benefit of being able to power all devices from an APC outweights + // the possible minor performance loss. + if(!tesla_link || !tesla_link.check_functionality()) + return FALSE + var/area/A = get_area(src) + if(!istype(A) || !A.powered(EQUIP)) + return FALSE + + // At this point, we know that APC can power us for this tick. Check if we also need to charge our battery, and then actually use the power. + if(battery_module && (battery_module.battery.charge < battery_module.battery.maxcharge) && (power_usage > 0)) + power_usage += tesla_link.passive_charging_rate + battery_module.battery.give(tesla_link.passive_charging_rate * CELLRATE) + + A.use_power(power_usage, EQUIP) + return TRUE + +// 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 + for(var/obj/item/weapon/computer_hardware/H in get_all_components()) + if(H.enabled) + 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)) + return + if(battery_power(power_usage)) + return + power_failure() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/ui.dm b/code/modules/modular_computers/computers/modular_computer/ui.dm new file mode 100644 index 0000000000..81081c0cb1 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/ui.dm @@ -0,0 +1,155 @@ +// Operates NanoUI +/obj/item/modular_computer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + if(!screen_on || !enabled) + if(ui) + ui.close() + return 0 + if(!apc_power(0) && !battery_power(0)) + if(ui) + ui.close() + return 0 + + // If we have an active program switch to it now. + if(active_program) + if(ui) // This is the main laptop screen. Since we are switching to program's UI close it for now. + ui.close() + active_program.ui_interact(user) + return + + // We are still here, that means there is no program loaded. Load the BIOS/ROM/OS/whatever you want to call it. + // This screen simply lists available programs and user may select them. + if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len) + visible_message("\The [src] beeps three times, it's screen displaying \"DISK ERROR\" warning.") + return // No HDD, No HDD files list or no stored files. Something is very broken. + + var/datum/computer_file/data/autorun = hard_drive.find_file_by_name("autorun") + + var/list/data = get_header_data() + + var/list/programs = list() + for(var/datum/computer_file/program/P in hard_drive.stored_files) + var/list/program = list() + program["name"] = P.filename + program["desc"] = P.filedesc + program["icon"] = P.program_menu_icon + program["autorun"] = (istype(autorun) && (autorun.stored_data == P.filename)) ? 1 : 0 + if(P in idle_threads) + program["running"] = 1 + programs.Add(list(program)) + + data["programs"] = programs + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "laptop_mainscreen.tmpl", "NTOS Main Menu", 400, 500) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +// Handles user's GUI input +/obj/item/modular_computer/Topic(href, href_list) + if(..()) + return 1 + if( href_list["PC_exit"] ) + kill_program() + return 1 + if( href_list["PC_enable_component"] ) + var/obj/item/weapon/computer_hardware/H = find_hardware_by_name(href_list["PC_enable_component"]) + if(H && istype(H) && !H.enabled) + H.enabled = 1 + . = 1 + if( href_list["PC_disable_component"] ) + var/obj/item/weapon/computer_hardware/H = find_hardware_by_name(href_list["PC_disable_component"]) + if(H && istype(H) && H.enabled) + H.enabled = 0 + . = 1 + if( href_list["PC_shutdown"] ) + shutdown_computer() + return 1 + if( href_list["PC_minimize"] ) + var/mob/user = usr + minimize_program(user) + + if( href_list["PC_killprogram"] ) + var/prog = href_list["PC_killprogram"] + var/datum/computer_file/program/P = null + var/mob/user = usr + if(hard_drive) + P = hard_drive.find_file_by_name(prog) + + if(!istype(P) || P.program_state == PROGRAM_STATE_KILLED) + return + + P.kill_program(1) + update_uis() + to_chat(user, "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed.") + + if( href_list["PC_runprogram"] ) + return run_program(href_list["PC_runprogram"]) + + if( href_list["PC_setautorun"] ) + if(!hard_drive) + return + set_autorun(href_list["PC_setautorun"]) + + if(.) + update_uis() + +// Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_" +/obj/item/modular_computer/proc/get_header_data() + var/list/data = list() + + if(battery_module) + switch(battery_module.battery.percent()) + if(80 to 200) // 100 should be maximal but just in case.. + data["PC_batteryicon"] = "batt_100.gif" + if(60 to 80) + data["PC_batteryicon"] = "batt_80.gif" + if(40 to 60) + data["PC_batteryicon"] = "batt_60.gif" + if(20 to 40) + data["PC_batteryicon"] = "batt_40.gif" + if(5 to 20) + data["PC_batteryicon"] = "batt_20.gif" + else + data["PC_batteryicon"] = "batt_5.gif" + data["PC_batterypercent"] = "[round(battery_module.battery.percent())] %" + data["PC_showbatteryicon"] = 1 + else + data["PC_batteryicon"] = "batt_5.gif" + data["PC_batterypercent"] = "N/C" + data["PC_showbatteryicon"] = battery_module ? 1 : 0 + + if(tesla_link && tesla_link.enabled && apc_powered) + data["PC_apclinkicon"] = "charging.gif" + + if(network_card && network_card.is_banned()) + data["PC_ntneticon"] = "sig_warning.gif" + else + switch(get_ntnet_status()) + if(0) + data["PC_ntneticon"] = "sig_none.gif" + if(1) + data["PC_ntneticon"] = "sig_low.gif" + if(2) + data["PC_ntneticon"] = "sig_high.gif" + if(3) + data["PC_ntneticon"] = "sig_lan.gif" + + var/list/program_headers = list() + for(var/datum/computer_file/program/P in idle_threads) + if(!P.ui_header) + continue + program_headers.Add(list(list( + "icon" = P.ui_header + ))) + if(active_program && active_program.ui_header) + program_headers.Add(list(list( + "icon" = active_program.ui_header + ))) + data["PC_programheaders"] = program_headers + + data["PC_stationtime"] = stationtime2text() + data["PC_hasheader"] = 1 + data["PC_showexitprogram"] = active_program ? 1 : 0 // Hides "Exit Program" button on mainscreen + return data \ No newline at end of file diff --git a/code/modules/modular_computers/computers/modular_computer/variables.dm b/code/modules/modular_computers/computers/modular_computer/variables.dm new file mode 100644 index 0000000000..c746493ff8 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/variables.dm @@ -0,0 +1,53 @@ +// This is the base type that handles everything. Subtypes can be easily created by tweaking variables in this file to your liking. + +/obj/item/modular_computer + name = "Modular Computer" + desc = "A modular computer. You shouldn't see this." + + var/enabled = 0 // Whether the computer is turned on. + var/screen_on = 1 // Whether the computer is active/opened/it's screen is on. + var/datum/computer_file/program/active_program = null // A currently active program running on the computer. + var/hardware_flag = 0 // A flag that describes this device type + var/last_power_usage = 0 // Last tick power usage of this computer + var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged + var/last_world_time = "00:00" + var/list/last_header_icons + var/computer_emagged = FALSE // Whether the computer is emagged. + var/apc_powered = FALSE // Set automatically. Whether the computer used APC power last tick. + var/base_active_power_usage = 50 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too. + var/base_idle_power_usage = 5 // Power usage when the computer is idle and screen is off (currently only applies to laptops) + var/bsod = FALSE // Error screen displayed + + // Modular computers can run on various devices. Each DEVICE (Laptop, Console, Tablet,..) + // must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently + // If you create a program which is limited to Laptops and Consoles you don't have to add it's icon_state overlay for Tablets too, for example. + + icon = null // This thing isn't meant to be used on it's own. Subtypes should supply their own icon. + icon_state = null + //center_of_mass = null // No pixelshifting by placing on tables, etc. + //randpixel = 0 // And no random pixelshifting on-creation either. + var/icon_state_unpowered = null // Icon state when the computer is turned off + var/icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. + var/icon_state_screensaver = null + var/max_hardware_size = 0 // Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed. + var/steel_sheet_cost = 5 // Amount of steel sheets refunded when disassembling an empty frame of this computer. + var/light_strength = 0 // Intensity of light this computer emits. Comparable to numbers light fixtures use. + var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with. + + // Damage of the chassis. If the chassis takes too much damage it will break apart. + var/damage = 0 // Current damage level + var/broken_damage = 50 // Damage level at which the computer ceases to operate + var/max_damage = 100 // Damage level at which the computer breaks apart. + + // Important hardware (must be installed for computer to work) + var/obj/item/weapon/computer_hardware/processor_unit/processor_unit // CPU. Without it the computer won't run. Better CPUs can run more programs at once. + var/obj/item/weapon/computer_hardware/network_card/network_card // Network Card component of this computer. Allows connection to NTNet + var/obj/item/weapon/computer_hardware/hard_drive/hard_drive // Hard Drive component of this computer. Stores programs and files. + + // Optional hardware (improves functionality, but is not critical for computer to work in most cases) + var/obj/item/weapon/computer_hardware/battery_module/battery_module // An internal power source for this computer. Can be recharged. + var/obj/item/weapon/computer_hardware/card_slot/card_slot // ID Card slot component of this computer. Mostly for HoP modification console that needs ID slot for modification. + var/obj/item/weapon/computer_hardware/nano_printer/nano_printer // Nano Printer component of this computer, for your everyday paperwork needs. + var/obj/item/weapon/computer_hardware/hard_drive/portable/portable_drive // Portable data storage + var/obj/item/weapon/computer_hardware/ai_slot/ai_slot // AI slot, an intellicard housing that allows modifications of AIs. + var/obj/item/weapon/computer_hardware/tesla_link/tesla_link // Tesla Link, Allows remote charging from nearest APC. \ No newline at end of file diff --git a/code/modules/modular_computers/computers/status_icons.dmi b/code/modules/modular_computers/computers/status_icons.dmi new file mode 100644 index 0000000000000000000000000000000000000000..52127ec484268b00240fbde8364073fadaa39b92 GIT binary patch literal 818 zcmV-21I_%2P)vOM0000OP)t-sz`(!& zJOBXy0RR60{{R3y002BZ0KmY&jE4BJ00001bW%=J06^y0W&i*HdU{k?bVOxyV{&P5 zbZKvH004NLQ&w0eu$DM)Bz1|bJL-!NX?I*#`0DBdr zzW*a!zMMEEK#~FnI*e3NtH1o?_=5_7S2ghwS&io+ZI877IX%~3pX>R9o1YpO6EG%Ve8V?@Q>of5 zDUy4^*PCE>wlUt*^G+rJT79Xqt`!I_yf3RZ{660kU5B>PQdyHnUV#%bB@BjNoM z!JZ=zLRdYBwCi$MAR^SlDybpjVwgvK2l#BNZUWngD`ATgoY@#jIJYH} zaK0^q!Gt7Q^Ld8BJq0uOsY!WudP<+E!Q7`NCHYqFe&4mSuu4GoG;H8wK9AQ$b zBQzPxwoU9B7H*WdoN{1`xh3Re;KA%U2R5AB{G_(4VcBQG8g#;-HVg)q0p^pEEcg^j zjiyKo_k)M|qzuyDw?AwlhWUZ^x<67Y7}isfT9dMFR7JePI(zVk!UKVZy!s>xte~ij{RoVBIFH zvY9ZVFIU!brhF=*H-T!nLfEZ<3yxjEmBRMGI;4yhshU)Ykg*c$Y>}vI`NqSqQcbD| wsW~wZ*QAQzs#Jyd=yH|@TXk_7d+6)rFFs{kYNr;VkN^Mx07*qoM6N<$g8D9fdH?_b literal 0 HcmV?d00001 diff --git a/code/modules/modular_computers/computers/subtypes/dev_console.dm b/code/modules/modular_computers/computers/subtypes/dev_console.dm new file mode 100644 index 0000000000..4a8981d41b --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/dev_console.dm @@ -0,0 +1,18 @@ +/obj/item/modular_computer/console + name = "console" + desc = "A stationary computer." + icon = 'icons/obj/modular_console.dmi' + icon_state = "console" + icon_state_unpowered = "console" + icon_state_screensaver = "standby" + icon_state_menu = "menu" + hardware_flag = PROGRAM_CONSOLE + anchored = TRUE + density = 1 + base_idle_power_usage = 100 + base_active_power_usage = 500 + max_hardware_size = 3 + steel_sheet_cost = 20 + light_strength = 4 + max_damage = 300 + broken_damage = 150 \ No newline at end of file diff --git a/code/modules/modular_computers/computers/subtypes/dev_laptop.dm b/code/modules/modular_computers/computers/subtypes/dev_laptop.dm new file mode 100644 index 0000000000..eddae93f74 --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/dev_laptop.dm @@ -0,0 +1,37 @@ +/obj/item/modular_computer/laptop + anchored = TRUE + name = "laptop computer" + desc = "A portable computer." + hardware_flag = PROGRAM_LAPTOP + icon_state_unpowered = "laptop-open" + icon = 'icons/obj/modular_laptop.dmi' + icon_state = "laptop-open" + icon_state_screensaver = "standby" + base_idle_power_usage = 25 + base_active_power_usage = 200 + max_hardware_size = 2 + light_strength = 3 + max_damage = 200 + broken_damage = 100 + w_class = ITEMSIZE_NORMAL + var/icon_state_closed = "laptop-closed" + +/obj/item/modular_computer/laptop/AltClick() + // Prevents carrying of open laptops inhand. + // While they work inhand, i feel it'd make tablets lose some of their high-mobility advantage they have over laptops now. + if(!istype(loc, /turf/)) + to_chat(usr, "\The [src] has to be on a stable surface first!") + return + anchored = !anchored + screen_on = anchored + update_icon() + +/obj/item/modular_computer/laptop/update_icon() + if(anchored) + ..() + else + overlays.Cut() + icon_state = icon_state_closed + +/obj/item/modular_computer/laptop/preset + anchored = FALSE diff --git a/code/modules/modular_computers/computers/subtypes/dev_tablet.dm b/code/modules/modular_computers/computers/subtypes/dev_tablet.dm new file mode 100644 index 0000000000..62d12ba545 --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/dev_tablet.dm @@ -0,0 +1,16 @@ +/obj/item/modular_computer/tablet + name = "tablet computer" + desc = "A small portable microcomputer" + icon = 'icons/obj/modular_tablet.dmi' + icon_state = "tablet" + icon_state_unpowered = "tablet" + icon_state_menu = "menu" + hardware_flag = PROGRAM_TABLET + max_hardware_size = 1 + w_class = ITEMSIZE_SMALL + light_strength = 2 // Same as PDAs + +/obj/item/modular_computer/tablet/lease + desc = "A small portable microcomputer. This one has a gold and blue stripe, and a serial number stamped into the case." + icon_state = "tabletsol" + icon_state_unpowered = "tabletsol" \ No newline at end of file diff --git a/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm b/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm new file mode 100644 index 0000000000..1f88ed6cb2 --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm @@ -0,0 +1,59 @@ +/obj/item/modular_computer/telescreen + name = "telescreen" + desc = "A wall-mounted touchscreen computer." + icon = 'icons/obj/modular_telescreen.dmi' + icon_state = "telescreen" + icon_state_unpowered = "telescreen" + icon_state_menu = "menu" + icon_state_screensaver = "standby" + hardware_flag = PROGRAM_TELESCREEN + anchored = TRUE + density = 0 + base_idle_power_usage = 75 + base_active_power_usage = 300 + max_hardware_size = 2 + steel_sheet_cost = 10 + light_strength = 4 + max_damage = 300 + broken_damage = 150 + w_class = ITEMSIZE_HUGE + +/obj/item/modular_computer/telescreen/New() + ..() + // Allows us to create "north bump" "south bump" etc. named objects, for more comfortable mapping. + name = "telescreen" + +/obj/item/modular_computer/telescreen/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if(W.is_crowbar()) + if(anchored) + shutdown_computer() + anchored = FALSE + screen_on = FALSE + pixel_x = 0 + pixel_y = 0 + to_chat(user, "You unsecure \the [src].") + else + var/choice = input(user, "Where do you want to place \the [src]?", "Offset selection") in list("North", "South", "West", "East", "This tile", "Cancel") + var/valid = FALSE + switch(choice) + if("North") + valid = TRUE + pixel_y = 32 + if("South") + valid = TRUE + pixel_y = -32 + if("West") + valid = TRUE + pixel_x = -32 + if("East") + valid = TRUE + pixel_x = 32 + if("This tile") + valid = TRUE + + if(valid) + anchored = 1 + screen_on = TRUE + to_chat(user, "You secure \the [src].") + return + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/subtypes/preset_console.dm b/code/modules/modular_computers/computers/subtypes/preset_console.dm new file mode 100644 index 0000000000..d2f409b51e --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm @@ -0,0 +1,123 @@ +/obj/item/modular_computer/console/preset/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) + +// Engineering +/obj/item/modular_computer/console/preset/engineering/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/power_monitor()) + hard_drive.store_file(new/datum/computer_file/program/supermatter_monitor()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) + hard_drive.store_file(new/datum/computer_file/program/atmos_control()) + hard_drive.store_file(new/datum/computer_file/program/rcon_console()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + +// Medical +/obj/item/modular_computer/console/preset/medical/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/suit_sensors()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + set_autorun("sensormonitor") + +// Research +/obj/item/modular_computer/console/preset/research/install_default_hardware() + ..() + //ai_slot = new/obj/item/weapon/computer_hardware/ai_slot(src) + +/obj/item/modular_computer/console/preset/research/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor()) + hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + hard_drive.store_file(new/datum/computer_file/program/chatclient()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + //hard_drive.store_file(new/datum/computer_file/program/aidiag()) + hard_drive.store_file(new/datum/computer_file/program/email_client()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + +// Administrator +/obj/item/modular_computer/console/preset/sysadmin/install_default_hardware() + ..() + //ai_slot = new/obj/item/weapon/computer_hardware/ai_slot(src) + +/obj/item/modular_computer/console/preset/sysadmin/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor()) + hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + hard_drive.store_file(new/datum/computer_file/program/chatclient()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + //hard_drive.store_file(new/datum/computer_file/program/aidiag()) + hard_drive.store_file(new/datum/computer_file/program/email_client()) + hard_drive.store_file(new/datum/computer_file/program/email_administration()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + +// Command +/obj/item/modular_computer/console/preset/command/install_default_hardware() + ..() + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + +/obj/item/modular_computer/console/preset/command/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/chatclient()) + hard_drive.store_file(new/datum/computer_file/program/card_mod()) + hard_drive.store_file(new/datum/computer_file/program/comm()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + hard_drive.store_file(new/datum/computer_file/program/email_client()) + +// Security +/obj/item/modular_computer/console/preset/security/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + hard_drive.store_file(new/datum/computer_file/program/digitalwarrant()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + +// Civilian +/obj/item/modular_computer/console/preset/civilian/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/chatclient()) + hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + hard_drive.store_file(new/datum/computer_file/program/newsbrowser()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + hard_drive.store_file(new/datum/computer_file/program/email_client()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + +// ERT +/obj/item/modular_computer/console/preset/ert/install_default_hardware() + ..() + //ai_slot = new/obj/item/weapon/computer_hardware/ai_slot(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + +/obj/item/modular_computer/console/preset/ert/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/ert()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) + hard_drive.store_file(new/datum/computer_file/program/comm()) + //hard_drive.store_file(new/datum/computer_file/program/aidiag()) + +// Mercenary +/obj/item/modular_computer/console/preset/mercenary/ + computer_emagged = TRUE + +/obj/item/modular_computer/console/preset/mercenary/install_default_hardware() + ..() + //ai_slot = new/obj/item/weapon/computer_hardware/ai_slot(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + +/obj/item/modular_computer/console/preset/mercenary/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/hacked()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) + //hard_drive.store_file(new/datum/computer_file/program/aidiag()) + +// Merchant +/obj/item/modular_computer/console/preset/merchant/install_default_programs() + ..() + //hard_drive.store_file(new/datum/computer_file/program/merchant()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) diff --git a/code/modules/modular_computers/computers/subtypes/preset_laptop.dm b/code/modules/modular_computers/computers/subtypes/preset_laptop.dm new file mode 100644 index 0000000000..190ba53b27 --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/preset_laptop.dm @@ -0,0 +1,32 @@ +/obj/item/modular_computer/laptop/preset/custom_loadout/cheap/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + battery_module = new/obj/item/weapon/computer_hardware/battery_module/advanced(src) + battery_module.charge_to_full() + +/obj/item/modular_computer/laptop/preset/custom_loadout/advanced/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/advanced(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/advanced(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + battery_module = new/obj/item/weapon/computer_hardware/battery_module/advanced(src) + battery_module.charge_to_full() + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + battery_module = new/obj/item/weapon/computer_hardware/battery_module/advanced(src) + battery_module.charge_to_full() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/subtypes/preset_tablet.dm b/code/modules/modular_computers/computers/subtypes/preset_tablet.dm new file mode 100644 index 0000000000..65c3a47c3c --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/preset_tablet.dm @@ -0,0 +1,28 @@ +/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src) + network_card = new/obj/item/weapon/computer_hardware/network_card(src) + battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src) + battery_module.charge_to_full() + +/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/advanced(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + battery_module = new/obj/item/weapon/computer_hardware/battery_module(src) + battery_module.charge_to_full() + +/obj/item/modular_computer/tablet/preset/custom_loadout/standard/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src) + network_card = new/obj/item/weapon/computer_hardware/network_card(src) + battery_module = new/obj/item/weapon/computer_hardware/battery_module/micro(src) + battery_module.charge_to_full() diff --git a/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm b/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm new file mode 100644 index 0000000000..d0cb86bada --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm @@ -0,0 +1,14 @@ +/obj/item/modular_computer/telescreen/preset/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive(src) + network_card = new/obj/item/weapon/computer_hardware/network_card(src) + +/obj/item/modular_computer/telescreen/preset/generic/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/chatclient()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) + hard_drive.store_file(new/datum/computer_file/program/email_client()) + set_autorun("cammon") diff --git a/code/modules/modular_computers/file_system/computer_file.dm b/code/modules/modular_computers/file_system/computer_file.dm new file mode 100644 index 0000000000..afc02e8414 --- /dev/null +++ b/code/modules/modular_computers/file_system/computer_file.dm @@ -0,0 +1,39 @@ +var/global/file_uid = 0 + +/datum/computer_file/ + var/filename = "NewFile" // Placeholder. No spacebars + var/filetype = "XXX" // File full names are [filename].[filetype] so like NewFile.XXX in this case + var/size = 1 // File size in GQ. Integers only! + var/obj/item/weapon/computer_hardware/hard_drive/holder // Holder that contains this file. + var/unsendable = 0 // Whether the file may be sent to someone via NTNet transfer or other means. + var/undeletable = 0 // Whether the file may be deleted. Setting to 1 prevents deletion/renaming/etc. + var/uid // UID of this file + +/datum/computer_file/New() + ..() + uid = file_uid + file_uid++ + +/datum/computer_file/Destroy() + if(!holder) + return ..() + + holder.remove_file(src) + // holder.holder is the computer that has drive installed. If we are Destroy()ing program that's currently running kill it. + if(holder.holder2 && holder.holder2.active_program == src) + holder.holder2.kill_program(1) + holder = null + ..() + +// Returns independent copy of this file. +/datum/computer_file/proc/clone(var/rename = 0) + var/datum/computer_file/temp = new type + temp.unsendable = unsendable + temp.undeletable = undeletable + temp.size = size + if(rename) + temp.filename = filename + "(Copy)" + else + temp.filename = filename + temp.filetype = filetype + return temp \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/data.dm b/code/modules/modular_computers/file_system/data.dm new file mode 100644 index 0000000000..7ad48bea54 --- /dev/null +++ b/code/modules/modular_computers/file_system/data.dm @@ -0,0 +1,19 @@ +// /data/ files store data in string format. +// They don't contain other logic for now. +/datum/computer_file/data + var/stored_data = "" // Stored data in string format. + filetype = "DAT" + var/block_size = 250 + var/do_not_edit = 0 // Whether the user will be reminded that the file probably shouldn't be edited. + +/datum/computer_file/data/clone() + var/datum/computer_file/data/temp = ..() + temp.stored_data = stored_data + return temp + +// Calculates file size from amount of characters in saved string +/datum/computer_file/data/proc/calculate_size() + size = max(1, round(length(stored_data) / block_size)) + +/datum/computer_file/data/logfile + filetype = "LOG" diff --git a/code/modules/modular_computers/file_system/news_article.dm b/code/modules/modular_computers/file_system/news_article.dm new file mode 100644 index 0000000000..833ba382e9 --- /dev/null +++ b/code/modules/modular_computers/file_system/news_article.dm @@ -0,0 +1,24 @@ +// /data/ files store data in string format. +// They don't contain other logic for now. +/datum/computer_file/data/news_article + filetype = "XNML" + filename = "Unknown News Entry" + block_size = 5000 // Results in smaller files + do_not_edit = 1 // Editing the file breaks most formatting due to some HTML tags not being accepted as input from average user. + var/server_file_path // File path to HTML file that will be loaded on server start. Example: '/news_articles/space_magazine_1.html'. Use the /news_articles/ folder! + var/archived // Set to 1 for older stuff + var/cover //filename of cover. + +/datum/computer_file/data/news_article/New(var/load_from_file = 0) + ..() + if(server_file_path && load_from_file) + stored_data = file2text(server_file_path) + calculate_size() + + +// NEWS DEFINITIONS BELOW THIS LINE +/* KEPT HERE AS AN EXAMPLE +/datum/computer_file/data/news_article/space/vol_one + filename = "SPACE Magazine vol. 1" + server_file_path = 'news_articles/space_magazine_1.html' +*/ \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm new file mode 100644 index 0000000000..7124bdcd03 --- /dev/null +++ b/code/modules/modular_computers/file_system/program.dm @@ -0,0 +1,210 @@ +// /program/ files are executable programs that do things. +/datum/computer_file/program + filetype = "PRG" + filename = "UnknownProgram" // File name. FILE NAME MUST BE UNIQUE IF YOU WANT THE PROGRAM TO BE DOWNLOADABLE FROM NTNET! + var/required_access = null // List of required accesses to run/download the program. + var/requires_access_to_run = 1 // Whether the program checks for required_access when run. + var/requires_access_to_download = 1 // Whether the program checks for required_access when downloading. + var/datum/nano_module/NM = null // If the program uses NanoModule, put it here and it will be automagically opened. Otherwise implement ui_interact. + var/nanomodule_path = null // Path to nanomodule, make sure to set this if implementing new program. + var/program_state = PROGRAM_STATE_KILLED// PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running. + var/obj/item/modular_computer/computer // Device that runs this program. + var/filedesc = "Unknown Program" // User-friendly name of this program. + var/extended_desc = "N/A" // Short description of this program's function. + var/program_icon_state = null // Program-specific screen icon state + var/program_key_state = "standby_key" // Program-specific keyboard icon state + var/program_menu_icon = "newwin" // Icon to use for program's link in main menu + var/requires_ntnet = 0 // Set to 1 for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes. + var/requires_ntnet_feature = 0 // Optional, if above is set to 1 checks for specific function of NTNet (currently NTNET_SOFTWAREDOWNLOAD, NTNET_PEERTOPEER, NTNET_SYSTEMCONTROL and NTNET_COMMUNICATION) + var/ntnet_status = 1 // NTNet status, updated every tick by computer running this program. Don't use this for checks if NTNet works, computers do that. Use this for calculations, etc. + var/usage_flags = PROGRAM_ALL // Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL + var/network_destination = null // Optional string that describes what NTNet server/system this program connects to. Used in default logging. + var/available_on_ntnet = 1 // Whether the program can be downloaded from NTNet. Set to 0 to disable. + var/available_on_syndinet = 0 // Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable. + var/computer_emagged = 0 // Set to 1 if computer that's running us was emagged. Computer updates this every Process() tick + var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /nano/images/status_icons. Be careful not to use too large images! + var/ntnet_speed = 0 // GQ/s - current network connectivity transfer rate + +/datum/computer_file/program/New(var/obj/item/modular_computer/comp = null) + ..() + if(comp && istype(comp)) + computer = comp + +/datum/computer_file/program/Destroy() + computer = null + . = ..() + +/datum/computer_file/program/nano_host() + return computer.nano_host() + +/datum/computer_file/program/clone() + var/datum/computer_file/program/temp = ..() + temp.required_access = required_access + temp.nanomodule_path = nanomodule_path + temp.filedesc = filedesc + temp.program_icon_state = program_icon_state + temp.requires_ntnet = requires_ntnet + temp.requires_ntnet_feature = requires_ntnet_feature + temp.usage_flags = usage_flags + return temp + +// Relays icon update to the computer. +/datum/computer_file/program/proc/update_computer_icon() + if(computer) + computer.update_icon() + +// Attempts to create a log in global ntnet datum. Returns 1 on success, 0 on fail. +/datum/computer_file/program/proc/generate_network_log(var/text) + if(computer) + return computer.add_log(text) + return 0 + +/datum/computer_file/program/proc/is_supported_by_hardware(var/hardware_flag = 0, var/loud = 0, var/mob/user = null) + if(!(hardware_flag & usage_flags)) + if(loud && computer && user) + to_chat(user, "\The [computer] flashes: \"Hardware Error - Incompatible software\".") + return 0 + return 1 + +/datum/computer_file/program/proc/get_signal(var/specific_action = 0) + if(computer) + return computer.get_ntnet_status(specific_action) + return 0 + +// Called by Process() on device that runs us, once every tick. +/datum/computer_file/program/proc/process_tick() + update_netspeed() + return 1 + +/datum/computer_file/program/proc/update_netspeed() + ntnet_speed = 0 + switch(ntnet_status) + if(1) + ntnet_speed = NTNETSPEED_LOWSIGNAL + if(2) + ntnet_speed = NTNETSPEED_HIGHSIGNAL + if(3) + ntnet_speed = NTNETSPEED_ETHERNET + +// Check if the user can run program. Only humans can operate computer. Automatically called in run_program() +// User has to wear their ID or have it inhand for ID Scan to work. +// Can also be called manually, with optional parameter being access_to_check to scan the user's ID +/datum/computer_file/program/proc/can_run(var/mob/living/user, var/loud = 0, var/access_to_check) + // Defaults to required_access + if(!access_to_check) + access_to_check = required_access + if(!access_to_check) // No required_access, allow it. + return 1 + + // Admin override - allows operation of any computer as aghosted admin, as if you had any required access. + if(istype(user, /mob/observer/dead) && check_rights(R_ADMIN, 0, user)) + return 1 + + if(!istype(user)) + return 0 + + var/obj/item/weapon/card/id/I = user.GetIdCard() + if(!I) + if(loud) + to_chat(user, "\The [computer] flashes an \"RFID Error - Unable to scan ID\" warning.") + return 0 + + if(access_to_check in I.access) + return 1 + else if(loud) + to_chat(user, "\The [computer] flashes an \"Access Denied\" warning.") + +// This attempts to retrieve header data for NanoUIs. If implementing completely new device of different type than existing ones +// always include the device here in this proc. This proc basically relays the request to whatever is running the program. +/datum/computer_file/program/proc/get_header_data() + if(computer) + return computer.get_header_data() + return list() + +// This is performed on program startup. May be overriden to add extra logic. Remember to include ..() call. Return 1 on success, 0 on failure. +// When implementing new program based device, use this to run the program. +/datum/computer_file/program/proc/run_program(var/mob/living/user) + if(can_run(user, 1) || !requires_access_to_run) + if(nanomodule_path) + NM = new nanomodule_path(src, new /datum/topic_manager/program(src), src) + NM.using_access = user.GetAccess() + if(requires_ntnet && network_destination) + generate_network_log("Connection opened to [network_destination].") + program_state = PROGRAM_STATE_ACTIVE + return 1 + return 0 + +// Use this proc to kill the program. Designed to be implemented by each program if it requires on-quit logic, such as the NTNRC client. +/datum/computer_file/program/proc/kill_program(var/forced = 0) + program_state = PROGRAM_STATE_KILLED + if(network_destination) + generate_network_log("Connection to [network_destination] closed.") + if(NM) + qdel(NM) + NM = null + return 1 + +// This is called every tick when the program is enabled. Ensure you do parent call if you override it. If parent returns 1 continue with UI initialisation. +// It returns 0 if it can't run or if NanoModule was used instead. I suggest using NanoModules where applicable. +/datum/computer_file/program/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + if(program_state != PROGRAM_STATE_ACTIVE) // Our program was closed. Close the ui if it exists. + if(ui) + ui.close() + return computer.ui_interact(user) + if(istype(NM)) + NM.ui_interact(user, ui_key, null, force_open) + return 0 + return 1 + + +// CONVENTIONS, READ THIS WHEN CREATING NEW PROGRAM AND OVERRIDING THIS PROC: +// Topic calls are automagically forwarded from NanoModule this program contains. +// Calls beginning with "PRG_" are reserved for programs handling. +// Calls beginning with "PC_" are reserved for computer handling (by whatever runs the program) +// ALWAYS INCLUDE PARENT CALL ..() OR DIE IN FIRE. +/datum/computer_file/program/Topic(href, href_list) + if(..()) + return 1 + if(computer) + return computer.Topic(href, href_list) + +// Relays the call to nano module, if we have one +/datum/computer_file/program/proc/check_eye(var/mob/user) + if(NM) + return NM.check_eye(user) + else + return -1 + +/obj/item/modular_computer/initial_data() + return get_header_data() + +/obj/item/modular_computer/update_layout() + return TRUE + +/datum/nano_module/program + //available_to_ai = FALSE + var/datum/computer_file/program/program = null // Program-Based computer program that runs this nano module. Defaults to null. + +/datum/nano_module/program/New(var/host, var/topic_manager, var/program) + ..() + src.program = program + +/datum/topic_manager/program + var/datum/program + +/datum/topic_manager/program/New(var/datum/program) + ..() + src.program = program + +// Calls forwarded to PROGRAM itself should begin with "PRG_" +// Calls forwarded to COMPUTER running the program should begin with "PC_" +/datum/topic_manager/program/Topic(href, href_list) + return program && program.Topic(href, href_list) + +/datum/computer_file/program/apply_visual(mob/M) + if(NM) + NM.apply_visual(M) + +/datum/computer_file/program/remove_visual(mob/M) + if(NM) + NM.remove_visual(M) diff --git a/code/modules/modular_computers/file_system/program_events.dm b/code/modules/modular_computers/file_system/program_events.dm new file mode 100644 index 0000000000..73386ca198 --- /dev/null +++ b/code/modules/modular_computers/file_system/program_events.dm @@ -0,0 +1,18 @@ +// Events are sent to the program by the computer. +// Always include a parent call when overriding an event. + +// Called when the ID card is removed from computer. ID is removed AFTER this proc. +/datum/computer_file/program/proc/event_idremoved(var/background) + return + +// Called when the computer fails due to power loss. Override when program wants to specifically react to power loss. +/datum/computer_file/program/proc/event_powerfailure(var/background) + kill_program(1) + +// Called when the network connectivity fails. Computer does necessary checks and only calls this when requires_ntnet_feature and similar variables are not met. +/datum/computer_file/program/proc/event_networkfailure(var/background) + kill_program(1) + if(background) + computer.visible_message("\The [computer]'s screen displays an error: \"Network connectivity lost - process [filename].[filetype] (PID [rand(100,999)]) terminated.\"", 1) + else + computer.visible_message("\The [computer]'s screen briefly freezes and then shows: \"FATAL NETWORK ERROR - NTNet connection lost. Please try again later. If problem persists, please contact your system administrator.\"", 1) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/access_decrypter.dm b/code/modules/modular_computers/file_system/programs/antagonist/access_decrypter.dm new file mode 100644 index 0000000000..04bf931593 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/access_decrypter.dm @@ -0,0 +1,129 @@ +/datum/computer_file/program/access_decrypter + filename = "nt_accrypt" + filedesc = "NTNet Access Decrypter" + program_icon_state = "hostile" + program_key_state = "security_key" + program_menu_icon = "unlocked" + extended_desc = "This highly advanced script can very slowly decrypt operational codes used in almost any network. These codes can be downloaded to an ID card to expand the available access. The system administrator will probably notice this." + size = 34 + requires_ntnet = 1 + available_on_ntnet = 0 + available_on_syndinet = 1 + nanomodule_path = /datum/nano_module/program/access_decrypter/ + var/message = "" + var/running = FALSE + var/progress = 0 + var/target_progress = 300 + var/datum/access/target_access = null + +/datum/computer_file/program/access_decrypter/kill_program(var/forced) + reset() + ..(forced) + +/datum/computer_file/program/access_decrypter/proc/reset() + running = FALSE + message = "" + progress = 0 + +/datum/computer_file/program/access_decrypter/process_tick() + . = ..() + if(!running) + return + var/obj/item/weapon/computer_hardware/processor_unit/CPU = computer.processor_unit + var/obj/item/weapon/computer_hardware/card_slot/RFID = computer.card_slot + if(!istype(CPU) || !CPU.check_functionality() || !istype(RFID) || !RFID.check_functionality()) + message = "A fatal hardware error has been detected." + return + if(!istype(RFID.stored_card)) + message = "RFID card has been removed from the device. Operation aborted." + return + + progress += CPU.max_idle_programs + if(progress >= target_progress) + reset() + RFID.stored_card.access |= target_access.id + if(ntnet_global.intrusion_detection_enabled) + ntnet_global.add_log("IDS WARNING - Unauthorised access to primary keycode database from device: [computer.network_card.get_network_tag()] - downloaded access codes for: [target_access.desc].") + ntnet_global.intrusion_detection_alarm = 1 + message = "Successfully decrypted and saved operational key codes. Downloaded access codes for: [target_access.desc]" + target_access = null + +/datum/computer_file/program/access_decrypter/Topic(href, href_list) + if(..()) + return 1 + if(href_list["PRG_reset"]) + reset() + return 1 + if(href_list["PRG_execute"]) + if(running) + return 1 + if(text2num(href_list["allowed"])) + return 1 + var/obj/item/weapon/computer_hardware/processor_unit/CPU = computer.processor_unit + var/obj/item/weapon/computer_hardware/card_slot/RFID = computer.card_slot + if(!istype(CPU) || !CPU.check_functionality() || !istype(RFID) || !RFID.check_functionality()) + message = "A fatal hardware error has been detected." + return + if(!istype(RFID.stored_card)) + message = "RFID card is not present in the device. Operation aborted." + return + running = TRUE + target_access = get_access_by_id(href_list["PRG_execute"]) + if(ntnet_global.intrusion_detection_enabled) + ntnet_global.add_log("IDS WARNING - Unauthorised access attempt to primary keycode database from device: [computer.network_card.get_network_tag()]") + ntnet_global.intrusion_detection_alarm = 1 + return 1 + +/datum/nano_module/program/access_decrypter + name = "NTNet Access Decrypter" + var/list/restricted_access_codes = list(access_change_ids, access_network) // access codes that are not hackable due to balance reasons + +/datum/nano_module/program/access_decrypter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(!ntnet_global) + return + var/datum/computer_file/program/access_decrypter/PRG = program + var/list/data = list() + if(!istype(PRG)) + return + data = PRG.get_header_data() + + if(PRG.message) + data["message"] = PRG.message + else if(PRG.running) + data["running"] = 1 + data["rate"] = PRG.computer.processor_unit.max_idle_programs + + // Stolen from DOS traffic generator, generates strings of 1s and 0s + var/percentage = (PRG.progress / PRG.target_progress) * 100 + var/list/strings[0] + for(var/j, j<10, j++) + var/string = "" + for(var/i, i<20, i++) + string = "[string][prob(percentage)]" + strings.Add(string) + data["dos_strings"] = strings + else if(program.computer.card_slot && program.computer.card_slot.stored_card) + var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card + var/list/regions = list() + for(var/i = 1; i <= 7; i++) + var/list/accesses = list() + for(var/access in get_region_accesses(i)) + if (get_access_desc(access)) + accesses.Add(list(list( + "desc" = replacetext(get_access_desc(access), " ", " "), + "ref" = access, + "allowed" = (access in id_card.access) ? 1 : 0, + "blocked" = (access in restricted_access_codes) ? 1 : 0))) + + regions.Add(list(list( + "name" = get_region_accesses_name(i), + "accesses" = accesses))) + data["regions"] = regions + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "access_decrypter.tmpl", "NTNet Access Decrypter", 550, 400, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm new file mode 100644 index 0000000000..0e0a1381bd --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -0,0 +1,108 @@ +/datum/computer_file/program/ntnet_dos + filename = "ntn_dos" + filedesc = "DoS Traffic Generator" + program_icon_state = "hostile" + program_key_state = "security_key" + program_menu_icon = "arrow-4-diag" + extended_desc = "This advanced script can perform denial of service attacks against NTNet quantum relays. The system administrator will probably notice this. Multiple devices can run this program together against same relay for increased effect" + size = 20 + requires_ntnet = 1 + available_on_ntnet = 0 + available_on_syndinet = 1 + nanomodule_path = /datum/nano_module/program/computer_dos/ + var/obj/machinery/ntnet_relay/target = null + var/dos_speed = 0 + var/error = "" + var/executed = 0 + +/datum/computer_file/program/ntnet_dos/process_tick() + dos_speed = 0 + switch(ntnet_status) + if(1) + dos_speed = NTNETSPEED_LOWSIGNAL * NTNETSPEED_DOS_AMPLIFICATION + if(2) + dos_speed = NTNETSPEED_HIGHSIGNAL * NTNETSPEED_DOS_AMPLIFICATION + if(3) + dos_speed = NTNETSPEED_ETHERNET * NTNETSPEED_DOS_AMPLIFICATION + if(target && executed) + target.dos_overload += dos_speed + if(!target.operable()) + target.dos_sources.Remove(src) + target = null + error = "Connection to destination relay lost." + +/datum/computer_file/program/ntnet_dos/kill_program(var/forced) + if(target) + target.dos_sources.Remove(src) + target = null + executed = 0 + + ..(forced) + +/datum/nano_module/program/computer_dos + name = "DoS Traffic Generator" + +/datum/nano_module/program/computer_dos/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(!ntnet_global) + return + var/datum/computer_file/program/ntnet_dos/PRG = program + var/list/data = list() + if(!istype(PRG)) + return + data = PRG.get_header_data() + + if(PRG.error) + data["error"] = PRG.error + else if(PRG.target && PRG.executed) + data["target"] = 1 + data["speed"] = PRG.dos_speed + + // This is mostly visual, generate some strings of 1s and 0s + // Probability of 1 is equal of completion percentage of DoS attack on this relay. + // Combined with UI updates this adds quite nice effect to the UI + var/percentage = PRG.target.dos_overload * 100 / PRG.target.dos_capacity + var/list/strings[0] + for(var/j, j<10, j++) + var/string = "" + for(var/i, i<20, i++) + string = "[string][prob(percentage)]" + strings.Add(string) + data["dos_strings"] = strings + else + var/list/relays[0] + for(var/obj/machinery/ntnet_relay/R in ntnet_global.relays) + relays.Add(R.uid) + data["relays"] = relays + data["focus"] = PRG.target ? PRG.target.uid : null + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "ntnet_dos.tmpl", "DoS Traffic Generator", 400, 250, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/computer_file/program/ntnet_dos/Topic(href, href_list) + if(..()) + return 1 + if(href_list["PRG_target_relay"]) + for(var/obj/machinery/ntnet_relay/R in ntnet_global.relays) + if("[R.uid]" == href_list["PRG_target_relay"]) + target = R + return 1 + if(href_list["PRG_reset"]) + if(target) + target.dos_sources.Remove(src) + target = null + executed = 0 + error = "" + return 1 + if(href_list["PRG_execute"]) + if(target) + executed = 1 + target.dos_sources.Add(src) + if(ntnet_global.intrusion_detection_enabled) + ntnet_global.add_log("IDS WARNING - Excess traffic flood targeting relay [target.uid] detected from device: [computer.network_card.get_network_tag()]") + ntnet_global.intrusion_detection_alarm = 1 + return 1 diff --git a/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm b/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm new file mode 100644 index 0000000000..27e5a26c3f --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm @@ -0,0 +1,39 @@ +/datum/computer_file/program/camera_monitor/hacked + filename = "camcrypt" + filedesc = "Camera Decryption Tool" + nanomodule_path = /datum/nano_module/camera_monitor/hacked + program_icon_state = "hostile" + program_key_state = "security_key" + program_menu_icon = "zoomin" + extended_desc = "This very advanced piece of software uses adaptive programming and large database of cipherkeys to bypass most encryptions used on camera networks. Be warned that system administrator may notice this." + size = 73 // Very large, a price for bypassing ID checks completely. + available_on_ntnet = 0 + available_on_syndinet = 1 + +/datum/computer_file/program/camera_monitor/hacked/process_tick() + ..() + if(program_state != PROGRAM_STATE_ACTIVE) // Background programs won't trigger alarms. + return + + var/datum/nano_module/camera_monitor/hacked/HNM = NM + + // The program is active and connected to one of the station's networks. Has a very small chance to trigger IDS alarm every tick. + if(HNM && HNM.current_network && (HNM.current_network in using_map.station_networks) && prob(0.1)) + if(ntnet_global.intrusion_detection_enabled) + ntnet_global.add_log("IDS WARNING - Unauthorised access detected to camera network [HNM.current_network] by device with NID [computer.network_card.get_network_tag()]") + ntnet_global.intrusion_detection_alarm = 1 + + +/datum/nano_module/camera_monitor/hacked + name = "Hacked Camera Monitoring Program" + //available_to_ai = FALSE + +/datum/nano_module/camera_monitor/hacked/can_access_network(var/mob/user, var/network_access) + return 1 + +// The hacked variant has access to all commonly used networks. +/datum/nano_module/camera_monitor/hacked/modify_networks_list(var/list/networks) + networks.Add(list(list("tag" = NETWORK_MERCENARY, "has_access" = 1))) + networks.Add(list(list("tag" = NETWORK_ERT, "has_access" = 1))) + networks.Add(list(list("tag" = NETWORK_CRESCENT, "has_access" = 1))) + return networks \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm new file mode 100644 index 0000000000..17199c3b18 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -0,0 +1,84 @@ +/datum/computer_file/program/revelation + filename = "revelation" + filedesc = "Revelation" + program_icon_state = "hostile" + program_key_state = "security_key" + program_menu_icon = "home" + extended_desc = "This virus can destroy hard drive of system it is executed on. It may be obfuscated to look like another non-malicious program. Once armed, it will destroy the system upon next execution." + size = 13 + requires_ntnet = 0 + available_on_ntnet = 0 + available_on_syndinet = 1 + nanomodule_path = /datum/nano_module/program/revelation/ + var/armed = 0 + +/datum/computer_file/program/revelation/run_program(var/mob/living/user) + . = ..(user) + if(armed) + activate() + +/datum/computer_file/program/revelation/proc/activate() + if(!computer) + return + + computer.visible_message("\The [computer]'s screen brightly flashes and loud electrical buzzing is heard.") + computer.enabled = 0 + computer.update_icon() + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(10, 1, computer.loc) + s.start() + + if(computer.hard_drive) + qdel(computer.hard_drive) + + if(computer.battery_module && prob(25)) + qdel(computer.battery_module) + + if(computer.tesla_link && prob(50)) + qdel(computer.tesla_link) + +/datum/computer_file/program/revelation/Topic(href, href_list) + if(..()) + return 1 + else if(href_list["PRG_arm"]) + armed = !armed + else if(href_list["PRG_activate"]) + activate() + else if(href_list["PRG_obfuscate"]) + var/mob/living/user = usr + var/newname = sanitize(input(user, "Enter new program name: ")) + if(!newname) + return + filedesc = newname + for(var/datum/computer_file/program/P in ntnet_global.available_station_software) + if(filedesc == P.filedesc) + program_menu_icon = P.program_menu_icon + break + return 1 + +/datum/computer_file/program/revelation/clone() + var/datum/computer_file/program/revelation/temp = ..() + temp.armed = armed + return temp + +/datum/nano_module/program/revelation + name = "Revelation Virus" + +/datum/nano_module/program/revelation/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = list() + var/datum/computer_file/program/revelation/PRG = program + if(!istype(PRG)) + return + + data = PRG.get_header_data() + + data["armed"] = PRG.armed + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "revelation.tmpl", "Revelation Virus", 400, 250, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + diff --git a/code/modules/modular_computers/file_system/programs/command/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm new file mode 100644 index 0000000000..80a250ca6b --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -0,0 +1,233 @@ +/datum/computer_file/program/card_mod + filename = "cardmod" + filedesc = "ID card modification program" + nanomodule_path = /datum/nano_module/program/card_mod + program_icon_state = "id" + program_key_state = "id_key" + program_menu_icon = "key" + extended_desc = "Program for programming crew ID cards." + required_access = access_change_ids + requires_ntnet = 0 + size = 8 + +/datum/nano_module/program/card_mod + name = "ID card modification program" + var/mod_mode = 1 + var/is_centcom = 0 + var/show_assignments = 0 + +/datum/nano_module/program/card_mod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + data["src"] = "\ref[src]" + data["station_name"] = station_name() + data["manifest"] = data_core ? data_core.get_manifest(0) : null + data["assignments"] = show_assignments + if(program && program.computer) + data["have_id_slot"] = !!program.computer.card_slot + data["have_printer"] = !!program.computer.nano_printer + data["authenticated"] = program.can_run(user) + if(!program.computer.card_slot) + mod_mode = 0 //We can't modify IDs when there is no card reader + else + data["have_id_slot"] = 0 + data["have_printer"] = 0 + data["authenticated"] = 0 + data["mmode"] = mod_mode + data["centcom_access"] = is_centcom + + if(program && program.computer && program.computer.card_slot) + var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card + data["has_id"] = !!id_card + data["id_account_number"] = id_card ? id_card.associated_account_number : null + data["id_rank"] = id_card && id_card.assignment ? id_card.assignment : "Unassigned" + data["id_owner"] = id_card && id_card.registered_name ? id_card.registered_name : "-----" + data["id_name"] = id_card ? id_card.name : "-----" + + data["command_jobs"] = format_jobs(command_positions) + data["engineering_jobs"] = format_jobs(engineering_positions) + data["medical_jobs"] = format_jobs(medical_positions) + data["science_jobs"] = format_jobs(science_positions) + data["security_jobs"] = format_jobs(security_positions) + data["cargo_jobs"] = format_jobs(cargo_positions) + data["civilian_jobs"] = format_jobs(civilian_positions) + data["centcom_jobs"] = format_jobs(get_all_centcom_jobs()) + + data["all_centcom_access"] = is_centcom ? get_accesses(1) : null + data["regions"] = get_accesses() + + if(program.computer.card_slot && program.computer.card_slot.stored_card) + var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card + if(is_centcom) + var/list/all_centcom_access = list() + for(var/access in get_all_centcom_access()) + all_centcom_access.Add(list(list( + "desc" = replacetext(get_centcom_access_desc(access), " ", " "), + "ref" = access, + "allowed" = (access in id_card.access) ? 1 : 0))) + data["all_centcom_access"] = all_centcom_access + else + var/list/regions = list() + for(var/i = 1; i <= 7; i++) + var/list/accesses = list() + for(var/access in get_region_accesses(i)) + if (get_access_desc(access)) + accesses.Add(list(list( + "desc" = replacetext(get_access_desc(access), " ", " "), + "ref" = access, + "allowed" = (access in id_card.access) ? 1 : 0))) + + regions.Add(list(list( + "name" = get_region_accesses_name(i), + "accesses" = accesses))) + data["regions"] = regions + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "mod_identification_computer.tmpl", name, 600, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + +/datum/nano_module/program/card_mod/proc/format_jobs(list/jobs) + var/obj/item/weapon/card/id/id_card = program.computer.card_slot ? program.computer.card_slot.stored_card : null + var/list/formatted = list() + for(var/job in jobs) + formatted.Add(list(list( + "display_name" = replacetext(job, " ", " "), + "target_rank" = id_card && id_card.assignment ? id_card.assignment : "Unassigned", + "job" = job))) + + return formatted + +/datum/nano_module/program/card_mod/proc/get_accesses(var/is_centcom = 0) + return null + + +/datum/computer_file/program/card_mod/Topic(href, href_list) + if(..()) + return 1 + + var/mob/user = usr + var/obj/item/weapon/card/id/user_id_card = user.GetIdCard() + var/obj/item/weapon/card/id/id_card + if (computer.card_slot) + id_card = computer.card_slot.stored_card + + var/datum/nano_module/program/card_mod/module = NM + switch(href_list["action"]) + if("switchm") + if(href_list["target"] == "mod") + module.mod_mode = 1 + else if (href_list["target"] == "manifest") + module.mod_mode = 0 + if("togglea") + if(module.show_assignments) + module.show_assignments = 0 + else + module.show_assignments = 1 + if("print") + if(computer && computer.nano_printer) //This option should never be called if there is no printer + if(module.mod_mode) + if(can_run(user, 1)) + var/contents = {"

    Access Report

    + Prepared By: [user_id_card.registered_name ? user_id_card.registered_name : "Unknown"]
    + For: [id_card.registered_name ? id_card.registered_name : "Unregistered"]
    +
    + Assignment: [id_card.assignment]
    + Account Number: #[id_card.associated_account_number]
    + Blood Type: [id_card.blood_type]

    + Access:
    + "} + + var/known_access_rights = get_access_ids(ACCESS_TYPE_STATION|ACCESS_TYPE_CENTCOM) + for(var/A in id_card.access) + if(A in known_access_rights) + contents += " [get_access_desc(A)]" + + if(!computer.nano_printer.print_text(contents,"access report")) + to_chat(usr, "Hardware error: Printer was unable to print the file. It may be out of paper.") + return + else + computer.visible_message("\The [computer] prints out paper.") + else + var/contents = {"

    Crew Manifest

    +
    + [data_core ? data_core.get_manifest(0) : ""] + "} + if(!computer.nano_printer.print_text(contents,text("crew manifest ([])", stationtime2text()))) + to_chat(usr, "Hardware error: Printer was unable to print the file. It may be out of paper.") + return + else + computer.visible_message("\The [computer] prints out paper.") + if("eject") + if(computer && computer.card_slot) + if(id_card) + data_core.manifest_modify(id_card.registered_name, id_card.assignment) + computer.proc_eject_id(user) + if("terminate") + if(computer && can_run(user, 1)) + id_card.assignment = "Terminated" + remove_nt_access(id_card) + callHook("terminate_employee", list(id_card)) + if("edit") + if(computer && can_run(user, 1)) + if(href_list["name"]) + var/temp_name = sanitizeName(input("Enter name.", "Name", id_card.registered_name),allow_numbers=TRUE) + if(temp_name) + id_card.registered_name = temp_name + else + computer.visible_message("[computer] buzzes rudely.") + else if(href_list["account"]) + var/account_num = text2num(input("Enter account number.", "Account", id_card.associated_account_number)) + id_card.associated_account_number = account_num + if("assign") + if(computer && can_run(user, 1) && id_card) + var/t1 = href_list["assign_target"] + if(t1 == "Custom") + var/temp_t = sanitize(input("Enter a custom job assignment.","Assignment", id_card.assignment), 45) + //let custom jobs function as an impromptu alt title, mainly for sechuds + if(temp_t) + id_card.assignment = temp_t + else + var/list/access = list() + if(module.is_centcom) + access = get_centcom_access(t1) + else + var/datum/job/jobdatum + for(var/jobtype in typesof(/datum/job)) + var/datum/job/J = new jobtype + if(ckey(J.title) == ckey(t1)) + jobdatum = J + break + if(!jobdatum) + to_chat(usr, "No log exists for this job: [t1]") + return + + access = jobdatum.get_access() + + remove_nt_access(id_card) + apply_access(id_card, access) + id_card.assignment = t1 + id_card.rank = t1 + + callHook("reassign_employee", list(id_card)) + if("access") + if(href_list["allowed"] && computer && can_run(user, 1)) + var/access_type = text2num(href_list["access_target"]) + var/access_allowed = text2num(href_list["allowed"]) + if(access_type in get_access_ids(ACCESS_TYPE_STATION|ACCESS_TYPE_CENTCOM)) + id_card.access -= access_type + if(!access_allowed) + id_card.access += access_type + if(id_card) + id_card.name = text("[id_card.registered_name]'s ID Card ([id_card.assignment])") + + SSnanoui.update_uis(NM) + return 1 + +/datum/computer_file/program/card_mod/proc/remove_nt_access(var/obj/item/weapon/card/id/id_card) + id_card.access -= get_access_ids(ACCESS_TYPE_STATION|ACCESS_TYPE_CENTCOM) + +/datum/computer_file/program/card_mod/proc/apply_access(var/obj/item/weapon/card/id/id_card, var/list/accesses) + id_card.access |= accesses diff --git a/code/modules/modular_computers/file_system/programs/command/comm.dm b/code/modules/modular_computers/file_system/programs/command/comm.dm new file mode 100644 index 0000000000..b69ba7bc73 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/command/comm.dm @@ -0,0 +1,326 @@ +#define STATE_DEFAULT 1 +#define STATE_MESSAGELIST 2 +#define STATE_VIEWMESSAGE 3 +#define STATE_STATUSDISPLAY 4 +#define STATE_ALERT_LEVEL 5 +/datum/computer_file/program/comm + filename = "comm" + filedesc = "Command and Communications Program" + program_icon_state = "comm" + program_key_state = "med_key" + program_menu_icon = "flag" + nanomodule_path = /datum/nano_module/program/comm + extended_desc = "Used to command and control. Can relay long-range communications. This program can not be run on tablet computers." + required_access = access_heads + requires_ntnet = 1 + size = 12 + usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP + network_destination = "long-range communication array" + var/datum/comm_message_listener/message_core = new + +/datum/computer_file/program/comm/clone() + var/datum/computer_file/program/comm/temp = ..() + temp.message_core.messages = null + temp.message_core.messages = message_core.messages.Copy() + return temp + +/datum/nano_module/program/comm + name = "Command and Communications Program" + //available_to_ai = TRUE + var/current_status = STATE_DEFAULT + var/msg_line1 = "" + var/msg_line2 = "" + var/centcomm_message_cooldown = 0 + var/announcment_cooldown = 0 + var/datum/announcement/priority/crew_announcement = new + var/current_viewing_message_id = 0 + var/current_viewing_message = null + +/datum/nano_module/program/comm/New() + ..() + crew_announcement.newscast = 1 + +/datum/nano_module/program/comm/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + if(program) + data["emagged"] = program.computer_emagged + data["net_comms"] = !!program.get_signal(NTNET_COMMUNICATION) //Double !! is needed to get 1 or 0 answer + data["net_syscont"] = !!program.get_signal(NTNET_SYSTEMCONTROL) + if(program.computer) + data["have_printer"] = !!program.computer.nano_printer + else + data["have_printer"] = 0 + else + data["emagged"] = 0 + data["net_comms"] = 1 + data["net_syscont"] = 1 + data["have_printer"] = 0 + + data["message_line1"] = msg_line1 + data["message_line2"] = msg_line2 + data["state"] = current_status + data["isAI"] = issilicon(usr) + data["authenticated"] = is_autenthicated(user) + data["current_security_level"] = security_level + data["current_security_level_title"] = num2seclevel(security_level) + + data["def_SEC_LEVEL_DELTA"] = SEC_LEVEL_DELTA + data["def_SEC_LEVEL_YELLOW"] = SEC_LEVEL_YELLOW + data["def_SEC_LEVEL_ORANGE"] = SEC_LEVEL_ORANGE + data["def_SEC_LEVEL_VIOLET"] = SEC_LEVEL_VIOLET + data["def_SEC_LEVEL_BLUE"] = SEC_LEVEL_BLUE + data["def_SEC_LEVEL_GREEN"] = SEC_LEVEL_GREEN + + var/datum/comm_message_listener/l = obtain_message_listener() + data["messages"] = l.messages + data["message_deletion_allowed"] = l != global_message_listener + data["message_current_id"] = current_viewing_message_id + if(current_viewing_message) + data["message_current"] = current_viewing_message + + if(emergency_shuttle.location()) + data["have_shuttle"] = 1 + if(emergency_shuttle.online()) + data["have_shuttle_called"] = 1 + else + data["have_shuttle_called"] = 0 + else + data["have_shuttle"] = 0 + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "mod_communication.tmpl", name, 550, 420, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + +/datum/nano_module/program/comm/proc/is_autenthicated(var/mob/user) + if(program) + return program.can_run(user) + return 1 + +/datum/nano_module/program/comm/proc/obtain_message_listener() + if(program) + var/datum/computer_file/program/comm/P = program + return P.message_core + return global_message_listener + +/datum/nano_module/program/comm/Topic(href, href_list) + if(..()) + return 1 + var/mob/user = usr + var/ntn_comm = program ? !!program.get_signal(NTNET_COMMUNICATION) : 1 + var/ntn_cont = program ? !!program.get_signal(NTNET_SYSTEMCONTROL) : 1 + var/datum/comm_message_listener/l = obtain_message_listener() + switch(href_list["action"]) + if("sw_menu") + . = 1 + current_status = text2num(href_list["target"]) + if("announce") + . = 1 + if(is_autenthicated(user) && !issilicon(usr) && ntn_comm) + if(user) + var/obj/item/weapon/card/id/id_card = user.GetIdCard() + crew_announcement.announcer = GetNameAndAssignmentFromId(id_card) + else + crew_announcement.announcer = "Unknown" + if(announcment_cooldown) + to_chat(usr, "Please allow at least one minute to pass between announcements") + return TRUE + var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") as null|text + if(!input || !can_still_topic()) + return 1 + crew_announcement.Announce(input) + announcment_cooldown = 1 + spawn(600)//One minute cooldown + announcment_cooldown = 0 + if("message") + . = 1 + if(href_list["target"] == "emagged") + if(program) + if(is_autenthicated(user) && program.computer_emagged && !issilicon(usr) && ntn_comm) + if(centcomm_message_cooldown) + to_chat(usr, "Arrays recycling. Please stand by.") + SSnanoui.update_uis(src) + return + var/input = sanitize(input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "") as null|text) + if(!input || !can_still_topic()) + return 1 + Syndicate_announce(input, usr) + to_chat(usr, "Message transmitted.") + log_say("[key_name(usr)] has made an illegal announcement: [input]") + centcomm_message_cooldown = 1 + spawn(300)//30 second cooldown + centcomm_message_cooldown = 0 + else if(href_list["target"] == "regular") + if(is_autenthicated(user) && !issilicon(usr) && ntn_comm) + if(centcomm_message_cooldown) + to_chat(usr, "Arrays recycling. Please stand by.") + SSnanoui.update_uis(src) + return + if(!is_relay_online())//Contact Centcom has a check, Syndie doesn't to allow for Traitor funs. + to_chat(usr, "No Emergency Bluespace Relay detected. Unable to transmit message.") + return 1 + var/input = sanitize(input("Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "") as null|text) + if(!input || !can_still_topic()) + return 1 + CentCom_announce(input, usr) + to_chat(usr, "Message transmitted.") + log_say("[key_name(usr)] has made an IA Centcomm announcement: [input]") + centcomm_message_cooldown = 1 + spawn(300) //30 second cooldown + centcomm_message_cooldown = 0 + if("shuttle") + . = 1 + if(is_autenthicated(user) && ntn_cont) + if(href_list["target"] == "call") + var/confirm = alert("Are you sure you want to call the shuttle?", name, "No", "Yes") + if(confirm == "Yes" && can_still_topic()) + call_shuttle_proc(usr) + + if(href_list["target"] == "cancel" && !issilicon(usr)) + var/confirm = alert("Are you sure you want to cancel the shuttle?", name, "No", "Yes") + if(confirm == "Yes" && can_still_topic()) + cancel_call_proc(usr) + if("setstatus") + . = 1 + if(is_autenthicated(user) && ntn_cont) + switch(href_list["target"]) + if("line1") + var/linput = reject_bad_text(sanitize(input("Line 1", "Enter Message Text", msg_line1) as text|null, 40), 40) + if(can_still_topic()) + msg_line1 = linput + if("line2") + var/linput = reject_bad_text(sanitize(input("Line 2", "Enter Message Text", msg_line2) as text|null, 40), 40) + if(can_still_topic()) + msg_line2 = linput + if("message") + post_status("message", msg_line1, msg_line2) + if("alert") + post_status("alert", href_list["alert"]) + else + post_status(href_list["target"]) + if("setalert") + . = 1 + if(is_autenthicated(user) && !issilicon(usr) && ntn_cont && ntn_comm) + var/current_level = text2num(href_list["target"]) + var/confirm = alert("Are you sure you want to change alert level to [num2seclevel(current_level)]?", name, "No", "Yes") + if(confirm == "Yes" && can_still_topic()) + var/old_level = security_level + if(!current_level) current_level = SEC_LEVEL_GREEN + if(current_level < SEC_LEVEL_GREEN) current_level = SEC_LEVEL_GREEN + if(current_level > SEC_LEVEL_BLUE) current_level = SEC_LEVEL_BLUE //Cannot engage delta with this + set_security_level(current_level) + if(security_level != old_level) + log_game("[key_name(usr)] has changed the security level to [get_security_level()].") + message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") + switch(security_level) + if(SEC_LEVEL_GREEN) + feedback_inc("alert_comms_green",1) + if(SEC_LEVEL_YELLOW) + feedback_inc("alert_comms_yellow",1) + if(SEC_LEVEL_ORANGE) + feedback_inc("alert_comms_orange",1) + if(SEC_LEVEL_VIOLET) + feedback_inc("alert_comms_violet",1) + if(SEC_LEVEL_BLUE) + feedback_inc("alert_comms_blue",1) + else + to_chat(usr, "You press button, but red light flashes and nothing happens.")//This should never happen + + current_status = STATE_DEFAULT + if("viewmessage") + . = 1 + if(is_autenthicated(user) && ntn_comm) + current_viewing_message_id = text2num(href_list["target"]) + for(var/list/m in l.messages) + if(m["id"] == current_viewing_message_id) + current_viewing_message = m + current_status = STATE_VIEWMESSAGE + if("delmessage") + . = 1 + if(is_autenthicated(user) && ntn_comm && l != global_message_listener) + l.Remove(current_viewing_message) + current_status = STATE_MESSAGELIST + if("printmessage") + . = 1 + if(is_autenthicated(user) && ntn_comm) + if(program && program.computer && program.computer.nano_printer) + if(!program.computer.nano_printer.print_text(current_viewing_message["contents"],current_viewing_message["title"])) + to_chat(usr, "Hardware error: Printer was unable to print the file. It may be out of paper.") + else + program.computer.visible_message("\The [program.computer] prints out paper.") + + +/datum/nano_module/program/comm/proc/post_status(var/command, var/data1, var/data2) + + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) + + if(!frequency) return + + + var/datum/signal/status_signal = new + status_signal.source = src + status_signal.transmission_method = 1 + status_signal.data["command"] = command + + switch(command) + if("message") + status_signal.data["msg1"] = data1 + status_signal.data["msg2"] = data2 + log_admin("STATUS: [key_name(usr)] set status screen message with [src]: [data1] [data2]") + if("alert") + status_signal.data["picture_state"] = data1 + + frequency.post_signal(src, status_signal) + +#undef STATE_DEFAULT +#undef STATE_MESSAGELIST +#undef STATE_VIEWMESSAGE +#undef STATE_STATUSDISPLAY +#undef STATE_ALERT_LEVEL + +/* +General message handling stuff +*/ +var/list/comm_message_listeners = list() //We first have to initialize list then we can use it. +var/datum/comm_message_listener/global_message_listener = new //May be used by admins +var/last_message_id = 0 + +proc/get_comm_message_id() + last_message_id = last_message_id + 1 + return last_message_id + +proc/post_comm_message(var/message_title, var/message_text) + var/list/message = list() + message["id"] = get_comm_message_id() + message["title"] = message_title + message["contents"] = message_text + + for (var/datum/comm_message_listener/l in comm_message_listeners) + l.Add(message) + + //Old console support + for (var/obj/machinery/computer/communications/comm in machines) + if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) + var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) + intercept.name = message_title + intercept.info = message_text + + comm.messagetitle.Add(message_title) + comm.messagetext.Add(message_text) + +/datum/comm_message_listener + var/list/messages + +/datum/comm_message_listener/New() + ..() + messages = list() + comm_message_listeners.Add(src) + +/datum/comm_message_listener/proc/Add(var/list/message) + messages[++messages.len] = message + +/datum/comm_message_listener/proc/Remove(var/list/message) + messages -= list(message) diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm similarity index 66% rename from code/modules/nano/modules/alarm_monitor.dm rename to code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm index ec43035ed8..cfd9353eee 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm @@ -1,88 +1,134 @@ -/datum/nano_module/alarm_monitor - name = "Alarm monitor" - var/list_cameras = 0 // Whether or not to list camera references. A future goal would be to merge this with the enginering/security camera console. Currently really only for AI-use. - var/list/datum/alarm_handler/alarm_handlers // The particular list of alarm handlers this alarm monitor should present to the user. - -/datum/nano_module/alarm_monitor/all/New() - ..() - alarm_handlers = alarm_manager.all_handlers - -/datum/nano_module/alarm_monitor/engineering/New() - ..() - alarm_handlers = list(atmosphere_alarm, fire_alarm, power_alarm) - -/datum/nano_module/alarm_monitor/security/New() - ..() - alarm_handlers = list(camera_alarm, motion_alarm) - -/datum/nano_module/alarm_monitor/proc/register_alarm(var/object, var/procName) - for(var/datum/alarm_handler/AH in alarm_handlers) - AH.register_alarm(object, procName) - -/datum/nano_module/alarm_monitor/proc/unregister_alarm(var/object) - for(var/datum/alarm_handler/AH in alarm_handlers) - AH.unregister_alarm(object) - -/datum/nano_module/alarm_monitor/proc/all_alarms() - var/list/all_alarms = new() - for(var/datum/alarm_handler/AH in alarm_handlers) - all_alarms += AH.visible_alarms() - - return all_alarms - -/datum/nano_module/alarm_monitor/proc/major_alarms() - var/list/all_alarms = new() - for(var/datum/alarm_handler/AH in alarm_handlers) - all_alarms += AH.major_alarms() - - return all_alarms - -/datum/nano_module/alarm_monitor/proc/minor_alarms() - var/list/all_alarms = new() - for(var/datum/alarm_handler/AH in alarm_handlers) - all_alarms += AH.minor_alarms() - - return all_alarms - -/datum/nano_module/alarm_monitor/Topic(ref, href_list) - if(..()) - return 1 - if(href_list["switchTo"]) - var/obj/machinery/camera/C = locate(href_list["switchTo"]) in cameranet.cameras - if(!C) - return - - usr.switch_to_camera(C) - return 1 - -/datum/nano_module/alarm_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) - var/data[0] - - var/categories[0] - for(var/datum/alarm_handler/AH in alarm_handlers) - categories[++categories.len] = list("category" = AH.category, "alarms" = list()) - for(var/datum/alarm/A in AH.major_alarms()) - var/cameras[0] - var/lost_sources[0] - - if(isAI(user)) - for(var/obj/machinery/camera/C in A.cameras()) - cameras[++cameras.len] = C.nano_structure() - for(var/datum/alarm_source/AS in A.sources) - if(!AS.source) - lost_sources[++lost_sources.len] = AS.source_name - - categories[categories.len]["alarms"] += list(list( - "name" = sanitize(A.alarm_name()), - "origin_lost" = A.origin == null, - "has_cameras" = cameras.len, - "cameras" = cameras, - "lost_sources" = lost_sources.len ? sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")) : "")) - data["categories"] = categories - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "alarm_monitor.tmpl", "Alarm Monitoring Console", 800, 800, state = state) - ui.set_initial_data(data) - ui.open() - ui.set_auto_update(1) +/datum/computer_file/program/alarm_monitor + filename = "alarmmonitor" + filedesc = "Alarm Monitoring" + nanomodule_path = /datum/nano_module/alarm_monitor/engineering + ui_header = "alarm_green.gif" + program_icon_state = "alert-green" + program_key_state = "atmos_key" + program_menu_icon = "alert" + extended_desc = "This program provides visual interface for the alarm system." + requires_ntnet = 1 + network_destination = "alarm monitoring network" + size = 5 + var/has_alert = 0 + +/datum/computer_file/program/alarm_monitor/process_tick() + ..() + var/datum/nano_module/alarm_monitor/NMA = NM + if(istype(NMA) && NMA.has_major_alarms()) + if(!has_alert) + program_icon_state = "alert-red" + ui_header = "alarm_red.gif" + update_computer_icon() + has_alert = 1 + else + if(has_alert) + program_icon_state = "alert-green" + ui_header = "alarm_green.gif" + update_computer_icon() + has_alert = 0 + return 1 + +/datum/nano_module/alarm_monitor + name = "Alarm monitor" + var/list_cameras = 0 // Whether or not to list camera references. A future goal would be to merge this with the enginering/security camera console. Currently really only for AI-use. + var/list/datum/alarm_handler/alarm_handlers // The particular list of alarm handlers this alarm monitor should present to the user. + //available_to_ai = FALSE + +/datum/nano_module/alarm_monitor/New() + ..() + alarm_handlers = list() + +/datum/nano_module/alarm_monitor/all/New() + ..() + alarm_handlers = alarm_manager.all_handlers + +/datum/nano_module/alarm_monitor/engineering/New() + ..() + alarm_handlers = list(atmosphere_alarm, camera_alarm, fire_alarm, power_alarm) + +/datum/nano_module/alarm_monitor/security/New() + ..() + alarm_handlers = list(camera_alarm, motion_alarm) + +/datum/nano_module/alarm_monitor/proc/register_alarm(var/object, var/procName) + for(var/datum/alarm_handler/AH in alarm_handlers) + AH.register_alarm(object, procName) + +/datum/nano_module/alarm_monitor/proc/unregister_alarm(var/object) + for(var/datum/alarm_handler/AH in alarm_handlers) + AH.unregister_alarm(object) + +/datum/nano_module/alarm_monitor/proc/all_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.visible_alarms() + + return all_alarms + +/datum/nano_module/alarm_monitor/proc/major_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.major_alarms() + + return all_alarms + +// Modified version of above proc that uses slightly less resources, returns 1 if there is a major alarm, 0 otherwise. +/datum/nano_module/alarm_monitor/proc/has_major_alarms() + for(var/datum/alarm_handler/AH in alarm_handlers) + if(AH.has_major_alarms()) + return 1 + + return 0 + +/datum/nano_module/alarm_monitor/proc/minor_alarms() + var/list/all_alarms = new() + for(var/datum/alarm_handler/AH in alarm_handlers) + all_alarms += AH.minor_alarms() + + return all_alarms + +/datum/nano_module/alarm_monitor/Topic(ref, href_list) + if(..()) + return 1 + if(href_list["switchTo"]) + var/obj/machinery/camera/C = locate(href_list["switchTo"]) in cameranet.cameras + if(!C) + return + + usr.switch_to_camera(C) + return 1 + +/datum/nano_module/alarm_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + var/categories[0] + for(var/datum/alarm_handler/AH in alarm_handlers) + categories[++categories.len] = list("category" = AH.category, "alarms" = list()) + for(var/datum/alarm/A in AH.major_alarms()) + var/cameras[0] + var/lost_sources[0] + + if(isAI(user)) + for(var/obj/machinery/camera/C in A.cameras()) + cameras[++cameras.len] = C.nano_structure() + for(var/datum/alarm_source/AS in A.sources) + if(!AS.source) + lost_sources[++lost_sources.len] = AS.source_name + + categories[categories.len]["alarms"] += list(list( + "name" = sanitize(A.alarm_name()), + "origin_lost" = A.origin == null, + "has_cameras" = cameras.len, + "cameras" = cameras, + "lost_sources" = lost_sources.len ? sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")) : "")) + data["categories"] = categories + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "alarm_monitor.tmpl", "Alarm Monitoring Console", 800, 800, state = state) + if(host.update_layout()) // This is necessary to ensure the status bar remains updated along with rest of the UI. + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm similarity index 79% rename from code/modules/nano/modules/atmos_control.dm rename to code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm index 3924f65af7..3f88029713 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm @@ -1,86 +1,103 @@ -/datum/nano_module/atmos_control - name = "Atmospherics Control" - var/obj/access = new() - var/emagged = 0 - var/ui_ref - var/list/monitored_alarms = list() - -/datum/nano_module/atmos_control/New(atmos_computer, req_access, req_one_access, monitored_alarm_ids) - ..() - access.req_access = req_access - access.req_one_access = req_one_access - - if(monitored_alarm_ids) - for(var/obj/machinery/alarm/alarm in machines) - if(alarm.alarm_id && alarm.alarm_id in monitored_alarm_ids) - monitored_alarms += alarm - // machines may not yet be ordered at this point - monitored_alarms = dd_sortedObjectList(monitored_alarms) - -/datum/nano_module/atmos_control/Topic(href, href_list) - if(..()) - return 1 - - if(href_list["alarm"]) - if(ui_ref) - var/obj/machinery/alarm/alarm = locate(href_list["alarm"]) in (monitored_alarms.len ? monitored_alarms : machines) - if(alarm) - var/datum/topic_state/TS = generate_state(alarm) - alarm.ui_interact(usr, master_ui = ui_ref, state = TS) - return 1 - -/datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) - var/data[0] - var/alarms[0] - var/turf/T = get_turf(nano_host()) - - // TODO: Move these to a cache, similar to cameras - for(var/obj/machinery/alarm/alarm in (monitored_alarms.len ? monitored_alarms : machines)) - if(!monitored_alarms.len && alarm.alarms_hidden) - continue - alarms[++alarms.len] = list( - "name" = sanitize(alarm.name), - "ref"= "\ref[alarm]", - "danger" = max(alarm.danger_level, alarm.alarm_area.atmosalm), - "x" = alarm.x, - "y" = alarm.y, - "z" = alarm.z) - data["alarms"] = alarms - data["map_levels"] = using_map.get_map_levels(T.z) - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - ui = new(user, src, ui_key, "atmos_control.tmpl", src.name, 625, 625, state = state) - // adding a template with the key "mapContent" enables the map ui functionality - ui.add_template("mapContent", "atmos_control_map_content.tmpl") - // adding a template with the key "mapHeader" replaces the map header content - ui.add_template("mapHeader", "atmos_control_map_header.tmpl") - ui.set_initial_data(data) - ui.open() - ui.set_auto_update(1) - ui_ref = ui - -/datum/nano_module/atmos_control/proc/generate_state(air_alarm) - var/datum/topic_state/air_alarm/state = new() - state.atmos_control = src - state.air_alarm = air_alarm - return state - -/datum/topic_state/air_alarm - var/datum/nano_module/atmos_control/atmos_control = null - var/obj/machinery/alarm/air_alarm = null - -/datum/topic_state/air_alarm/can_use_topic(var/src_object, var/mob/user) - if(has_access(user)) - return STATUS_INTERACTIVE - return STATUS_UPDATE - -/datum/topic_state/air_alarm/href_list(var/mob/user) - var/list/extra_href = list() - extra_href["remote_connection"] = 1 - extra_href["remote_access"] = has_access(user) - - return extra_href - -/datum/topic_state/air_alarm/proc/has_access(var/mob/user) - return user && (isAI(user) || atmos_control.access.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) +/datum/computer_file/program/atmos_control + filename = "atmoscontrol" + filedesc = "Atmosphere Control" + nanomodule_path = /datum/nano_module/atmos_control + program_icon_state = "atmos_control" + program_key_state = "atmos_key" + program_menu_icon = "shuffle" + extended_desc = "This program allows remote control of air alarms. This program can not be run on tablet computers." + required_access = access_atmospherics + requires_ntnet = 1 + network_destination = "atmospheric control system" + requires_ntnet_feature = NTNET_SYSTEMCONTROL + usage_flags = PROGRAM_LAPTOP | PROGRAM_CONSOLE + size = 17 + +/datum/nano_module/atmos_control + name = "Atmospherics Control" + var/obj/access = new() + var/emagged = 0 + var/ui_ref + var/list/monitored_alarms = list() + +/datum/nano_module/atmos_control/New(atmos_computer, req_access, req_one_access, monitored_alarm_ids) + ..() + access.req_access = req_access + access.req_one_access = req_one_access + + if(monitored_alarm_ids) + for(var/obj/machinery/alarm/alarm in machines) + if(alarm.alarm_id && alarm.alarm_id in monitored_alarm_ids) + monitored_alarms += alarm + // machines may not yet be ordered at this point + monitored_alarms = dd_sortedObjectList(monitored_alarms) + +/datum/nano_module/atmos_control/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["alarm"]) + if(ui_ref) + var/obj/machinery/alarm/alarm = locate(href_list["alarm"]) in (monitored_alarms.len ? monitored_alarms : machines) + if(alarm) + var/datum/topic_state/TS = generate_state(alarm) + alarm.ui_interact(usr, master_ui = ui_ref, state = TS) + return 1 + +/datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + var/alarms[0] + var/turf/T = get_turf(nano_host()) + + // TODO: Move these to a cache, similar to cameras + for(var/obj/machinery/alarm/alarm in (monitored_alarms.len ? monitored_alarms : machines)) + if(!monitored_alarms.len && alarm.alarms_hidden) + continue + alarms[++alarms.len] = list( + "name" = sanitize(alarm.name), + "ref"= "\ref[alarm]", + "danger" = max(alarm.danger_level, alarm.alarm_area.atmosalm), + "x" = alarm.x, + "y" = alarm.y, + "z" = alarm.z) + data["alarms"] = alarms + data["map_levels"] = using_map.get_map_levels(T.z) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "atmos_control.tmpl", src.name, 625, 625, state = state) + if(host.update_layout()) // This is necessary to ensure the status bar remains updated along with rest of the UI. + ui.auto_update_layout = 1 + // adding a template with the key "mapContent" enables the map ui functionality + ui.add_template("mapContent", "atmos_control_map_content.tmpl") + // adding a template with the key "mapHeader" replaces the map header content + ui.add_template("mapHeader", "atmos_control_map_header.tmpl") + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(0) + ui_ref = ui + +/datum/nano_module/atmos_control/proc/generate_state(air_alarm) + var/datum/topic_state/air_alarm/state = new() + state.atmos_control = src + state.air_alarm = air_alarm + return state + +/datum/topic_state/air_alarm + var/datum/nano_module/atmos_control/atmos_control = null + var/obj/machinery/alarm/air_alarm = null + +/datum/topic_state/air_alarm/can_use_topic(var/src_object, var/mob/user) + if(has_access(user)) + return STATUS_INTERACTIVE + return STATUS_UPDATE + +/datum/topic_state/air_alarm/href_list(var/mob/user) + var/list/extra_href = list() + extra_href["remote_connection"] = 1 + extra_href["remote_access"] = has_access(user) + + return extra_href + +/datum/topic_state/air_alarm/proc/has_access(var/mob/user) + return user && (isAI(user) || atmos_control.access.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm similarity index 60% rename from code/modules/nano/modules/power_monitor.dm rename to code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm index ae5dc44f29..32117e845c 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm @@ -1,65 +1,113 @@ -/datum/nano_module/power_monitor - name = "Power monitor" - var/list/grid_sensors - var/active_sensor = null //name_tag of the currently selected sensor - -/datum/nano_module/power_monitor/New() - ..() - refresh_sensors() - -/datum/nano_module/power_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) - var/list/data = list() - var/list/sensors = list() - // Focus: If it remains null if no sensor is selected and UI will display sensor list, otherwise it will display sensor reading. - var/obj/machinery/power/sensor/focus = null - var/turf/T = get_turf(nano_host()) - - // Build list of data from sensor readings. - for(var/obj/machinery/power/sensor/S in grid_sensors) - sensors.Add(list(list( - "name" = S.name_tag, - "alarm" = S.check_grid_warning() - ))) - if(S.name_tag == active_sensor) - focus = S - - data["all_sensors"] = sensors - if(focus) - data["focus"] = focus.return_reading_data() - data["map_levels"] = using_map.get_map_levels(T.z) - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "power_monitor.tmpl", "Power Monitoring Console", 800, 500, state = state) - // adding a template with the key "mapContent" enables the map ui functionality - ui.add_template("mapContent", "power_monitor_map_content.tmpl") - // adding a template with the key "mapHeader" replaces the map header content - ui.add_template("mapHeader", "power_monitor_map_header.tmpl") - ui.set_initial_data(data) - ui.open() - ui.set_auto_update(1) - -// Refreshes list of active sensors kept on this computer. -/datum/nano_module/power_monitor/proc/refresh_sensors() - grid_sensors = list() - var/turf/T = get_turf(nano_host()) - var/list/levels = list() - if(T) - levels += using_map.get_map_levels(T.z, FALSE) - for(var/obj/machinery/power/sensor/S in machines) - if(T && (S.loc.z == T.z) || (S.loc.z in levels) || (S.long_range)) // Consoles have range on their Z-Level. Sensors with long_range var will work between Z levels. - if(S.name_tag == "#UNKN#") // Default name. Shouldn't happen! - warning("Powernet sensor with unset ID Tag! [S.x]X [S.y]Y [S.z]Z") - else - grid_sensors += S - -// Allows us to process UI clicks, which are relayed in form of hrefs. -/datum/nano_module/power_monitor/Topic(href, href_list) - if(..()) - return 1 - if( href_list["clear"] ) - active_sensor = null - if( href_list["refresh"] ) - refresh_sensors() - else if( href_list["setsensor"] ) - active_sensor = href_list["setsensor"] +/datum/computer_file/program/power_monitor + filename = "powermonitor" + filedesc = "Power Monitoring" + nanomodule_path = /datum/nano_module/power_monitor/ + program_icon_state = "power_monitor" + program_key_state = "power_key" + program_menu_icon = "battery-3" + extended_desc = "This program connects to sensors to provide information about electrical systems" + ui_header = "power_norm.gif" + required_access = access_engine + requires_ntnet = 1 + network_destination = "power monitoring system" + size = 9 + var/has_alert = 0 + +/datum/computer_file/program/power_monitor/process_tick() + ..() + var/datum/nano_module/power_monitor/NMA = NM + if(istype(NMA) && NMA.has_alarm()) + if(!has_alert) + program_icon_state = "power_monitor_warn" + ui_header = "power_warn.gif" + update_computer_icon() + has_alert = 1 + else + if(has_alert) + program_icon_state = "power_monitor" + ui_header = "power_norm.gif" + update_computer_icon() + has_alert = 0 + +/datum/nano_module/power_monitor + name = "Power monitor" + var/list/grid_sensors + var/active_sensor = null //name_tag of the currently selected sensor + +/datum/nano_module/power_monitor/New() + ..() + refresh_sensors() + +// Checks whether there is an active alarm, if yes, returns 1, otherwise returns 0. +/datum/nano_module/power_monitor/proc/has_alarm() + for(var/obj/machinery/power/sensor/S in grid_sensors) + if(S.check_grid_warning()) + return 1 + return 0 + +// If PC is not null header template is loaded. Use PC.get_header_data() to get relevant nanoui data from it. All data entries begin with "PC_...." +// In future it may be expanded to other modular computer devices. +/datum/nano_module/power_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + var/list/sensors = list() + // Focus: If it remains null if no sensor is selected and UI will display sensor list, otherwise it will display sensor reading. + var/obj/machinery/power/sensor/focus = null + var/turf/T = get_turf(nano_host()) + + // Build list of data from sensor readings. + for(var/obj/machinery/power/sensor/S in grid_sensors) + sensors.Add(list(list( + "name" = S.name_tag, + "alarm" = S.check_grid_warning() + ))) + if(S.name_tag == active_sensor) + focus = S + + data["all_sensors"] = sensors + if(focus) + data["focus"] = focus.return_reading_data() + data["map_levels"] = using_map.get_map_levels(T.z) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "power_monitor.tmpl", "Power Monitoring Console", 800, 500, state = state) + if(host.update_layout()) // This is necessary to ensure the status bar remains updated along with rest of the UI. + ui.auto_update_layout = 1 + // adding a template with the key "mapContent" enables the map ui functionality + ui.add_template("mapContent", "power_monitor_map_content.tmpl") + // adding a template with the key "mapHeader" replaces the map header content + ui.add_template("mapHeader", "power_monitor_map_header.tmpl") + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +// Refreshes list of active sensors kept on this computer. +/datum/nano_module/power_monitor/proc/refresh_sensors() + grid_sensors = list() + var/turf/T = get_turf(nano_host()) + var/list/levels = list() + if(!T) // Safety check + return + if(T) + levels += using_map.get_map_levels(T.z, FALSE) + for(var/obj/machinery/power/sensor/S in machines) + if(T && (S.loc.z == T.z) || (S.loc.z in levels) || (S.long_range)) // Consoles have range on their Z-Level. Sensors with long_range var will work between Z levels. + if(S.name_tag == "#UNKN#") // Default name. Shouldn't happen! + warning("Powernet sensor with unset ID Tag! [S.x]X [S.y]Y [S.z]Z") + else + grid_sensors += S + +// Allows us to process UI clicks, which are relayed in form of hrefs. +/datum/nano_module/power_monitor/Topic(href, href_list) + if(..()) + return 1 + if( href_list["clear"] ) + active_sensor = null + . = 1 + if( href_list["refresh"] ) + refresh_sensors() + . = 1 + else if( href_list["setsensor"] ) + active_sensor = href_list["setsensor"] + . = 1 diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm similarity index 82% rename from code/modules/nano/modules/rcon.dm rename to code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm index 65c1acfe36..d5ee88b670 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm @@ -1,115 +1,132 @@ -/datum/nano_module/rcon - name = "Power RCON" - var/list/known_SMESs = null - var/list/known_breakers = null - // Allows you to hide specific parts of the UI - var/hide_SMES = 0 - var/hide_SMES_details = 0 - var/hide_breakers = 0 - -/datum/nano_module/rcon/ui_interact(mob/user, ui_key = "rcon", datum/nanoui/ui=null, force_open=1, var/datum/topic_state/state = default_state) - FindDevices() // Update our devices list - var/data[0] - - // SMES DATA (simplified view) - var/list/smeslist[0] - for(var/obj/machinery/power/smes/buildable/SMES in known_SMESs) - smeslist.Add(list(list( - "charge" = round(SMES.Percentage()), - "input_set" = SMES.input_attempt, - "input_val" = round(SMES.input_level/1000, 0.1), - "output_set" = SMES.output_attempt, - "output_val" = round(SMES.output_level/1000, 0.1), - "output_load" = round(SMES.output_used/1000, 0.1), - "RCON_tag" = SMES.RCon_tag - ))) - - data["smes_info"] = sortByKey(smeslist, "RCON_tag") - - // BREAKER DATA (simplified view) - var/list/breakerlist[0] - for(var/obj/machinery/power/breakerbox/BR in known_breakers) - breakerlist.Add(list(list( - "RCON_tag" = BR.RCon_tag, - "enabled" = BR.on - ))) - data["breaker_info"] = breakerlist - data["hide_smes"] = hide_SMES - data["hide_smes_details"] = hide_SMES_details - data["hide_breakers"] = hide_breakers - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "rcon.tmpl", "RCON Console", 600, 400, state = state) - ui.set_initial_data(data) - ui.open() - ui.set_auto_update(1) - -// Proc: Topic() -// Parameters: 2 (href, href_list - allows us to process UI clicks) -// Description: Allows us to process UI clicks, which are relayed in form of hrefs. -/datum/nano_module/rcon/Topic(href, href_list) - if(..()) - return - - if(href_list["smes_in_toggle"]) - var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_toggle"]) - if(SMES) - SMES.toggle_input() - if(href_list["smes_out_toggle"]) - var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_toggle"]) - if(SMES) - SMES.toggle_output() - if(href_list["smes_in_set"]) - var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_set"]) - if(SMES) - var/inputset = (input(usr, "Enter new input level (0-[SMES.input_level_max/1000] kW)", "SMES Input Power Control", SMES.input_level/1000) as num) * 1000 - SMES.set_input(inputset) - if(href_list["smes_out_set"]) - var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_set"]) - if(SMES) - var/outputset = (input(usr, "Enter new output level (0-[SMES.output_level_max/1000] kW)", "SMES Output Power Control", SMES.output_level/1000) as num) * 1000 - SMES.set_output(outputset) - - if(href_list["toggle_breaker"]) - var/obj/machinery/power/breakerbox/toggle = null - for(var/obj/machinery/power/breakerbox/breaker in known_breakers) - if(breaker.RCon_tag == href_list["toggle_breaker"]) - toggle = breaker - if(toggle) - if(toggle.update_locked) - usr << "The breaker box was recently toggled. Please wait before toggling it again." - else - toggle.auto_toggle() - if(href_list["hide_smes"]) - hide_SMES = !hide_SMES - if(href_list["hide_smes_details"]) - hide_SMES_details = !hide_SMES_details - if(href_list["hide_breakers"]) - hide_breakers = !hide_breakers - - -// Proc: GetSMESByTag() -// Parameters: 1 (tag - RCON tag of SMES we want to look up) -// Description: Looks up and returns SMES which has matching RCON tag -/datum/nano_module/rcon/proc/GetSMESByTag(var/tag) - if(!tag) - return - - for(var/obj/machinery/power/smes/buildable/S in known_SMESs) - if(S.RCon_tag == tag) - return S - -// Proc: FindDevices() -// Parameters: None -// Description: Refreshes local list of known devices. -/datum/nano_module/rcon/proc/FindDevices() - known_SMESs = new /list() - for(var/obj/machinery/power/smes/buildable/SMES in machines) - if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon) - known_SMESs.Add(SMES) - - known_breakers = new /list() - for(var/obj/machinery/power/breakerbox/breaker in machines) - if(breaker.RCon_tag != "NO_TAG") - known_breakers.Add(breaker) +/datum/computer_file/program/rcon_console + filename = "rconconsole" + filedesc = "RCON Remote Control" + nanomodule_path = /datum/nano_module/rcon + program_icon_state = "generic" + program_key_state = "rd_key" + program_menu_icon = "power" + extended_desc = "This program allows remote control of power distribution systems. This program can not be run on tablet computers." + required_access = access_engine + requires_ntnet = 1 + network_destination = "RCON remote control system" + requires_ntnet_feature = NTNET_SYSTEMCONTROL + usage_flags = PROGRAM_LAPTOP | PROGRAM_CONSOLE + size = 19 + +/datum/nano_module/rcon + name = "Power RCON" + var/list/known_SMESs = null + var/list/known_breakers = null + // Allows you to hide specific parts of the UI + var/hide_SMES = 0 + var/hide_SMES_details = 0 + var/hide_breakers = 0 + +/datum/nano_module/rcon/ui_interact(mob/user, ui_key = "rcon", datum/nanoui/ui=null, force_open=1, var/datum/topic_state/state = default_state) + FindDevices() // Update our devices list + var/list/data = host.initial_data() + + // SMES DATA (simplified view) + var/list/smeslist[0] + for(var/obj/machinery/power/smes/buildable/SMES in known_SMESs) + smeslist.Add(list(list( + "charge" = round(SMES.Percentage()), + "input_set" = SMES.input_attempt, + "input_val" = round(SMES.input_level/1000, 0.1), + "output_set" = SMES.output_attempt, + "output_val" = round(SMES.output_level/1000, 0.1), + "output_load" = round(SMES.output_used/1000, 0.1), + "RCON_tag" = SMES.RCon_tag + ))) + + data["smes_info"] = sortByKey(smeslist, "RCON_tag") + + // BREAKER DATA (simplified view) + var/list/breakerlist[0] + for(var/obj/machinery/power/breakerbox/BR in known_breakers) + breakerlist.Add(list(list( + "RCON_tag" = BR.RCon_tag, + "enabled" = BR.on + ))) + data["breaker_info"] = breakerlist + data["hide_smes"] = hide_SMES + data["hide_smes_details"] = hide_SMES_details + data["hide_breakers"] = hide_breakers + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "rcon.tmpl", "RCON Console", 600, 400, state = state) + if(host.update_layout()) // This is necessary to ensure the status bar remains updated along with rest of the UI. + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +// Proc: Topic() +// Parameters: 2 (href, href_list - allows us to process UI clicks) +// Description: Allows us to process UI clicks, which are relayed in form of hrefs. +/datum/nano_module/rcon/Topic(href, href_list) + if(..()) + return + + if(href_list["smes_in_toggle"]) + var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_toggle"]) + if(SMES) + SMES.toggle_input() + if(href_list["smes_out_toggle"]) + var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_toggle"]) + if(SMES) + SMES.toggle_output() + if(href_list["smes_in_set"]) + var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_in_set"]) + if(SMES) + var/inputset = (input(usr, "Enter new input level (0-[SMES.input_level_max/1000] kW)", "SMES Input Power Control", SMES.input_level/1000) as num) * 1000 + SMES.set_input(inputset) + if(href_list["smes_out_set"]) + var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_set"]) + if(SMES) + var/outputset = (input(usr, "Enter new output level (0-[SMES.output_level_max/1000] kW)", "SMES Output Power Control", SMES.output_level/1000) as num) * 1000 + SMES.set_output(outputset) + + if(href_list["toggle_breaker"]) + var/obj/machinery/power/breakerbox/toggle = null + for(var/obj/machinery/power/breakerbox/breaker in known_breakers) + if(breaker.RCon_tag == href_list["toggle_breaker"]) + toggle = breaker + if(toggle) + if(toggle.update_locked) + to_chat(usr, "The breaker box was recently toggled. Please wait before toggling it again.") + else + toggle.auto_toggle() + if(href_list["hide_smes"]) + hide_SMES = !hide_SMES + if(href_list["hide_smes_details"]) + hide_SMES_details = !hide_SMES_details + if(href_list["hide_breakers"]) + hide_breakers = !hide_breakers + + +// Proc: GetSMESByTag() +// Parameters: 1 (tag - RCON tag of SMES we want to look up) +// Description: Looks up and returns SMES which has matching RCON tag +/datum/nano_module/rcon/proc/GetSMESByTag(var/tag) + if(!tag) + return + + for(var/obj/machinery/power/smes/buildable/S in known_SMESs) + if(S.RCon_tag == tag) + return S + +// Proc: FindDevices() +// Parameters: None +// Description: Refreshes local list of known devices. +/datum/nano_module/rcon/proc/FindDevices() + known_SMESs = new /list() + for(var/obj/machinery/power/smes/buildable/SMES in machines) + if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon) + known_SMESs.Add(SMES) + + known_breakers = new /list() + for(var/obj/machinery/power/breakerbox/breaker in machines) + if(breaker.RCon_tag != "NO_TAG") + known_breakers.Add(breaker) diff --git a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm new file mode 100644 index 0000000000..af0489a953 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm @@ -0,0 +1,132 @@ +/datum/computer_file/program/supermatter_monitor + filename = "supmon" + filedesc = "Supermatter Monitoring" + nanomodule_path = /datum/nano_module/supermatter_monitor/ + program_icon_state = "smmon_0" + program_key_state = "tech_key" + program_menu_icon = "notice" + extended_desc = "This program connects to specially calibrated supermatter sensors to provide information on the status of supermatter-based engines." + ui_header = "smmon_0.gif" + required_access = access_engine + requires_ntnet = 1 + network_destination = "supermatter monitoring system" + size = 5 + var/last_status = 0 + +/datum/computer_file/program/supermatter_monitor/process_tick() + ..() + var/datum/nano_module/supermatter_monitor/NMS = NM + var/new_status = istype(NMS) ? NMS.get_status() : 0 + if(last_status != new_status) + last_status = new_status + ui_header = "smmon_[last_status].gif" + program_icon_state = "smmon_[last_status]" + if(istype(computer)) + computer.update_icon() + +/datum/nano_module/supermatter_monitor + name = "Supermatter monitor" + var/list/supermatters + var/obj/machinery/power/supermatter/active = null // Currently selected supermatter crystal. + +/datum/nano_module/supermatter_monitor/Destroy() + . = ..() + active = null + supermatters = null + +/datum/nano_module/supermatter_monitor/New() + ..() + refresh() + +// Refreshes list of active supermatter crystals +/datum/nano_module/supermatter_monitor/proc/refresh() + supermatters = list() + var/turf/T = get_turf(nano_host()) + if(!T) + return + var/valid_z_levels = (GetConnectedZlevels(T.z) & using_map.station_levels) + for(var/obj/machinery/power/supermatter/S in machines) + // Delaminating, not within coverage, not on a tile. + if(S.grav_pulling || S.exploded || !(S.z in valid_z_levels) || !istype(S.loc, /turf/)) + continue + supermatters.Add(S) + + if(!(active in supermatters)) + active = null + +/datum/nano_module/supermatter_monitor/proc/get_status() + . = SUPERMATTER_INACTIVE + for(var/obj/machinery/power/supermatter/S in supermatters) + . = max(., S.get_status()) + +/datum/nano_module/supermatter_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + if(istype(active)) + var/turf/T = get_turf(active) + if(!T) + active = null + return + var/datum/gas_mixture/air = T.return_air() + if(!istype(air)) + active = null + return + + data["active"] = 1 + data["SM_integrity"] = active.get_integrity() + data["SM_power"] = active.power + data["SM_ambienttemp"] = air.temperature + data["SM_ambientpressure"] = air.return_pressure() + //data["SM_EPR"] = active.get_epr() + if(air.total_moles) + data["SM_gas_O2"] = round(100*air.gas["oxygen"]/air.total_moles,0.01) + data["SM_gas_CO2"] = round(100*air.gas["carbon_dioxide"]/air.total_moles,0.01) + data["SM_gas_N2"] = round(100*air.gas["nitrogen"]/air.total_moles,0.01) + data["SM_gas_PH"] = round(100*air.gas["phoron"]/air.total_moles,0.01) + data["SM_gas_N2O"] = round(100*air.gas["sleeping_agent"]/air.total_moles,0.01) + else + data["SM_gas_O2"] = 0 + data["SM_gas_CO2"] = 0 + data["SM_gas_N2"] = 0 + data["SM_gas_PH"] = 0 + data["SM_gas_N2O"] = 0 + else + var/list/SMS = list() + for(var/obj/machinery/power/supermatter/S in supermatters) + var/area/A = get_area(S) + if(!A) + continue + + SMS.Add(list(list( + "area_name" = A.name, + "integrity" = S.get_integrity(), + "uid" = S.uid + ))) + + data["active"] = 0 + data["supermatters"] = SMS + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "supermatter_monitor.tmpl", "Supermatter Monitoring", 600, 400, state = state) + if(host.update_layout()) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/nano_module/supermatter_monitor/Topic(href, href_list) + if(..()) + return 1 + if( href_list["clear"] ) + active = null + return 1 + if( href_list["refresh"] ) + refresh() + return 1 + if( href_list["set"] ) + var/newuid = text2num(href_list["set"]) + for(var/obj/machinery/power/supermatter/S in supermatters) + if(S.uid == newuid) + active = S + return 1 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/generic/camera.dm b/code/modules/modular_computers/file_system/programs/generic/camera.dm new file mode 100644 index 0000000000..47ac48eb40 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/camera.dm @@ -0,0 +1,186 @@ +// Returns which access is relevant to passed network. Used by the program. +/proc/get_camera_access(var/network) + if(!network) + return 0 + . = using_map.get_network_access(network) + if(.) + return + + switch(network) + if(NETWORK_THUNDER) + return 0 + if(NETWORK_ENGINE,NETWORK_ENGINEERING,NETWORK_ENGINEERING_OUTPOST,NETWORK_ALARM_ATMOS,NETWORK_ALARM_FIRE,NETWORK_ALARM_POWER) + return access_engine + if(NETWORK_MEDICAL) + return access_medical + if(NETWORK_RESEARCH,NETWORK_RESEARCH_OUTPOST) + return access_research + if(NETWORK_MINE,NETWORK_CARGO ) + return access_mailsorting // Cargo office - all cargo staff should have access here. + if(NETWORK_COMMAND,NETWORK_TELECOM) + return access_heads + if(NETWORK_ERT) + return access_cent_specops + + return access_security // Default for all other networks + +/datum/computer_file/program/camera_monitor + filename = "cammon" + filedesc = "Camera Monitoring" + nanomodule_path = /datum/nano_module/camera_monitor + program_icon_state = "cameras" + program_key_state = "generic_key" + program_menu_icon = "search" + extended_desc = "This program allows remote access to the camera system. Some camera networks may have additional access requirements." + size = 12 + available_on_ntnet = 1 + requires_ntnet = 1 + +/datum/nano_module/camera_monitor + name = "Camera Monitoring program" + var/obj/machinery/camera/current_camera = null + var/current_network = null + +/datum/nano_module/camera_monitor/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, state = default_state) + var/list/data = host.initial_data() + + data["current_camera"] = current_camera ? current_camera.nano_structure() : null + data["current_network"] = current_network + + var/list/all_networks[0] + for(var/network in using_map.station_networks) + all_networks.Add(list(list( + "tag" = network, + "has_access" = can_access_network(user, get_camera_access(network)) + ))) + + all_networks = modify_networks_list(all_networks) + + data["networks"] = all_networks + + if(current_network) + data["cameras"] = camera_repository.cameras_in_network(current_network) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "mod_sec_camera.tmpl", "Camera Monitoring", 900, 800) + // ui.auto_update_layout = 1 // Disabled as with suit sensors monitor - breaks the UI map. Re-enable once it's fixed somehow. + + ui.add_template("mapContent", "sec_camera_map_content.tmpl") + ui.add_template("mapHeader", "mod_sec_camera_map_header.tmpl") + ui.set_initial_data(data) + ui.open() + +// Intended to be overriden by subtypes to manually add non-station networks to the list. +/datum/nano_module/camera_monitor/proc/modify_networks_list(var/list/networks) + return networks + +/datum/nano_module/camera_monitor/proc/can_access_network(var/mob/user, var/network_access) + // No access passed, or 0 which is considered no access requirement. Allow it. + if(!network_access) + return 1 + + return check_access(user, access_security) || check_access(user, network_access) + +/datum/nano_module/camera_monitor/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["switch_camera"]) + var/obj/machinery/camera/C = locate(href_list["switch_camera"]) in cameranet.cameras + if(!C) + return + if(!(current_network in C.network)) + return + + switch_to_camera(usr, C) + return 1 + + else if(href_list["switch_network"]) + // Either security access, or access to the specific camera network's department is required in order to access the network. + if(can_access_network(usr, get_camera_access(href_list["switch_network"]))) + current_network = href_list["switch_network"] + else + to_chat(usr, "\The [nano_host()] shows an \"Network Access Denied\" error message.") + return 1 + + else if(href_list["reset"]) + reset_current() + usr.reset_view(current_camera) + return 1 + +/datum/nano_module/camera_monitor/proc/switch_to_camera(var/mob/user, var/obj/machinery/camera/C) + //don't need to check if the camera works for AI because the AI jumps to the camera location and doesn't actually look through cameras. + if(isAI(user)) + var/mob/living/silicon/ai/A = user + // Only allow non-carded AIs to view because the interaction with the eye gets all wonky otherwise. + if(!A.is_in_chassis()) + return 0 + + A.eyeobj.setLoc(get_turf(C)) + A.client.eye = A.eyeobj + return 1 + + set_current(C) + user.machine = nano_host() + user.reset_view(C) + return 1 + +/datum/nano_module/camera_monitor/proc/set_current(var/obj/machinery/camera/C) + if(current_camera == C) + return + + if(current_camera) + reset_current() + + current_camera = C + if(current_camera) + var/mob/living/L = current_camera.loc + if(istype(L)) + L.tracking_initiated() + +/datum/nano_module/camera_monitor/proc/reset_current() + if(current_camera) + var/mob/living/L = current_camera.loc + if(istype(L)) + L.tracking_cancelled() + current_camera = null + +/datum/nano_module/camera_monitor/check_eye(var/mob/user as mob) + if(!current_camera) + return 0 + var/viewflag = current_camera.check_eye(user) + if ( viewflag < 0 ) //camera doesn't work + reset_current() + return viewflag + + +// ERT Variant of the program +/datum/computer_file/program/camera_monitor/ert + filename = "ntcammon" + filedesc = "Advanced Camera Monitoring" + extended_desc = "This program allows remote access to the camera system. Some camera networks may have additional access requirements. This version has an integrated database with additional encrypted keys." + size = 14 + nanomodule_path = /datum/nano_module/camera_monitor/ert + available_on_ntnet = 0 + +/datum/nano_module/camera_monitor/ert + name = "Advanced Camera Monitoring Program" + //available_to_ai = FALSE + +// The ERT variant has access to ERT and crescent cams, but still checks for accesses. ERT members should be able to use it. +/datum/nano_module/camera_monitor/ert/modify_networks_list(var/list/networks) + ..() + networks.Add(list(list("tag" = NETWORK_ERT, "has_access" = 1))) + networks.Add(list(list("tag" = NETWORK_CRESCENT, "has_access" = 1))) + return networks + +/datum/nano_module/camera_monitor/apply_visual(mob/M) + if(current_camera) + current_camera.apply_visual(M) + else + remove_visual(M) + +/datum/nano_module/camera_monitor/remove_visual(mob/M) + if(current_camera) + current_camera.remove_visual(M) diff --git a/code/modules/modular_computers/file_system/programs/generic/configurator.dm b/code/modules/modular_computers/file_system/programs/generic/configurator.dm new file mode 100644 index 0000000000..c3ce1e358a --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/configurator.dm @@ -0,0 +1,64 @@ +// This is special hardware configuration program. +// It is to be used only with modular computers. +// It allows you to toggle components of your device. + +/datum/computer_file/program/computerconfig + filename = "compconfig" + filedesc = "Computer Configuration Tool" + extended_desc = "This program allows configuration of computer's hardware" + program_icon_state = "generic" + program_key_state = "generic_key" + program_menu_icon = "gear" + unsendable = 1 + undeletable = 1 + size = 4 + available_on_ntnet = 0 + requires_ntnet = 0 + nanomodule_path = /datum/nano_module/program/computer_configurator/ + +/datum/nano_module/program/computer_configurator + name = "NTOS Computer Configuration Tool" + var/obj/item/modular_computer/movable = null + +/datum/nano_module/program/computer_configurator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(program) + movable = program.computer + if(!istype(movable)) + movable = null + + // No computer connection, we can't get data from that. + if(!movable) + return 0 + + var/list/data = list() + + if(program) + data = program.get_header_data() + + var/list/hardware = movable.get_all_components() + + data["disk_size"] = movable.hard_drive.max_capacity + data["disk_used"] = movable.hard_drive.used_capacity + data["power_usage"] = movable.last_power_usage + data["battery_exists"] = movable.battery_module ? 1 : 0 + if(movable.battery_module) + data["battery_rating"] = movable.battery_module.battery.maxcharge + data["battery_percent"] = round(movable.battery_module.battery.percent()) + + var/list/all_entries[0] + for(var/obj/item/weapon/computer_hardware/H in hardware) + all_entries.Add(list(list( + "name" = H.name, + "desc" = H.desc, + "enabled" = H.enabled, + "critical" = H.critical, + "powerusage" = H.power_usage + ))) + + data["hardware"] = all_entries + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "laptop_configuration.tmpl", "NTOS Configuration Utility", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/generic/email_client.dm b/code/modules/modular_computers/file_system/programs/generic/email_client.dm new file mode 100644 index 0000000000..3e2f979bb5 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/email_client.dm @@ -0,0 +1,499 @@ +/datum/computer_file/program/email_client + filename = "emailc" + filedesc = "Email Client" + extended_desc = "This program may be used to log in into your email account." + program_icon_state = "generic" + program_key_state = "generic_key" + program_menu_icon = "mail-closed" + size = 7 + requires_ntnet = 1 + available_on_ntnet = 1 + var/stored_login = "" + var/stored_password = "" + + nanomodule_path = /datum/nano_module/email_client + +// Persistency. Unless you log out, or unless your password changes, this will pre-fill the login data when restarting the program +/datum/computer_file/program/email_client/kill_program() + if(NM) + var/datum/nano_module/email_client/NME = NM + if(NME.current_account) + stored_login = NME.stored_login + stored_password = NME.stored_password + else + stored_login = "" + stored_password = "" + . = ..() + +/datum/computer_file/program/email_client/run_program() + . = ..() + if(NM) + var/datum/nano_module/email_client/NME = NM + NME.stored_login = stored_login + NME.stored_password = stored_password + NME.log_in() + NME.error = "" + NME.check_for_new_messages(1) + +/datum/computer_file/program/email_client/proc/new_mail_notify() + computer.visible_message("\The [computer] beeps softly, indicating a new email has been received.", 1) + +/datum/computer_file/program/email_client/process_tick() + ..() + var/datum/nano_module/email_client/NME = NM + if(!istype(NME)) + return + NME.relayed_process(ntnet_speed) + + var/check_count = NME.check_for_new_messages() + if(check_count) + if(check_count == 2) + new_mail_notify() + ui_header = "ntnrc_new.gif" + else + ui_header = "ntnrc_idle.gif" + +/datum/nano_module/email_client/ + name = "Email Client" + var/stored_login = "" + var/stored_password = "" + var/error = "" + + var/msg_title = "" + var/msg_body = "" + var/msg_recipient = "" + var/datum/computer_file/msg_attachment = null + var/folder = "Inbox" + var/addressbook = FALSE + var/new_message = FALSE + + var/last_message_count = 0 // How many messages were there during last check. + var/read_message_count = 0 // How many messages were there when user has last accessed the UI. + + var/datum/computer_file/downloading = null + var/download_progress = 0 + var/download_speed = 0 + + var/datum/computer_file/data/email_account/current_account = null + var/datum/computer_file/data/email_message/current_message = null + +/datum/nano_module/email_client/proc/log_in() + for(var/datum/computer_file/data/email_account/account in ntnet_global.email_accounts) + if(!account.can_login) + continue + if(account.login == stored_login) + if(account.password == stored_password) + if(account.suspended) + error = "This account has been suspended. Please contact the system administrator for assistance." + return 0 + current_account = account + return 1 + else + error = "Invalid Password" + return 0 + error = "Invalid Login" + return 0 + +// Returns 0 if no new messages were received, 1 if there is an unread message but notification has already been sent. +// and 2 if there is a new message that appeared in this tick (and therefore notification should be sent by the program). +/datum/nano_module/email_client/proc/check_for_new_messages(var/messages_read = FALSE) + if(!current_account) + return 0 + + var/list/allmails = current_account.all_emails() + + if(allmails.len > last_message_count) + . = 2 + else if(allmails.len > read_message_count) + . = 1 + else + . = 0 + + last_message_count = allmails.len + if(messages_read) + read_message_count = allmails.len + + +/datum/nano_module/email_client/proc/log_out() + current_account = null + downloading = null + download_progress = 0 + last_message_count = 0 + read_message_count = 0 + +/datum/nano_module/email_client/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + // Password has been changed by other client connected to this email account + if(current_account) + if(current_account.password != stored_password) + log_out() + error = "Invalid Password" + // Banned. + if(current_account.suspended) + log_out() + error = "This account has been suspended. Please contact the system administrator for assistance." + + if(error) + data["error"] = error + else if(downloading) + data["downloading"] = 1 + data["down_filename"] = "[downloading.filename].[downloading.filetype]" + data["down_progress"] = download_progress + data["down_size"] = downloading.size + data["down_speed"] = download_speed + + else if(istype(current_account)) + data["current_account"] = current_account.login + if(addressbook) + var/list/all_accounts = list() + for(var/datum/computer_file/data/email_account/account in ntnet_global.email_accounts) + if(!account.can_login) + continue + all_accounts.Add(list(list( + "login" = account.login + ))) + data["addressbook"] = 1 + data["accounts"] = all_accounts + else if(new_message) + data["new_message"] = 1 + data["msg_title"] = msg_title + data["msg_body"] = pencode2html(msg_body) + data["msg_recipient"] = msg_recipient + if(msg_attachment) + data["msg_hasattachment"] = 1 + data["msg_attachment_filename"] = "[msg_attachment.filename].[msg_attachment.filetype]" + data["msg_attachment_size"] = msg_attachment.size + else if (current_message) + data["cur_title"] = current_message.title + data["cur_body"] = pencode2html(current_message.stored_data) + data["cur_timestamp"] = current_message.timestamp + data["cur_source"] = current_message.source + data["cur_uid"] = current_message.uid + if(istype(current_message.attachment)) + data["cur_hasattachment"] = 1 + data["cur_attachment_filename"] = "[current_message.attachment.filename].[current_message.attachment.filetype]" + data["cur_attachment_size"] = current_message.attachment.size + else + data["label_inbox"] = "Inbox ([current_account.inbox.len])" + data["label_spam"] = "Spam ([current_account.spam.len])" + data["label_deleted"] = "Deleted ([current_account.deleted.len])" + var/list/message_source + if(folder == "Inbox") + message_source = current_account.inbox + else if(folder == "Spam") + message_source = current_account.spam + else if(folder == "Deleted") + message_source = current_account.deleted + + if(message_source) + data["folder"] = folder + var/list/all_messages = list() + for(var/datum/computer_file/data/email_message/message in message_source) + all_messages.Add(list(list( + "title" = message.title, + "body" = pencode2html(message.stored_data), + "source" = message.source, + "timestamp" = message.timestamp, + "uid" = message.uid + ))) + data["messages"] = all_messages + data["messagecount"] = all_messages.len + else + data["stored_login"] = stored_login + data["stored_password"] = stars(stored_password, 0) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "email_client.tmpl", "Email Client", 600, 450, state = state) + if(host.update_layout()) + ui.auto_update_layout = 1 + ui.set_auto_update(1) + ui.set_initial_data(data) + ui.open() + +/datum/nano_module/email_client/proc/find_message_by_fuid(var/fuid) + if(!istype(current_account)) + return + + // href_list works with strings, so this makes it a bit easier for us + if(istext(fuid)) + fuid = text2num(fuid) + + for(var/datum/computer_file/data/email_message/message in current_account.all_emails()) + if(message.uid == fuid) + return message + +/datum/nano_module/email_client/proc/clear_message() + new_message = FALSE + msg_title = "" + msg_body = "" + msg_recipient = "" + msg_attachment = null + current_message = null + +/datum/nano_module/email_client/proc/relayed_process(var/netspeed) + download_speed = netspeed + if(!downloading) + return + download_progress = min(download_progress + netspeed, downloading.size) + if(download_progress >= downloading.size) + var/obj/item/modular_computer/MC = nano_host() + if(!istype(MC) || !MC.hard_drive || !MC.hard_drive.check_functionality()) + error = "Error uploading file. Are you using a functional and NTOSv2-compliant device?" + downloading = null + download_progress = 0 + return 1 + + if(MC.hard_drive.store_file(downloading)) + error = "File successfully downloaded to local device." + else + error = "Error saving file: I/O Error: The hard drive may be full or nonfunctional." + downloading = null + download_progress = 0 + return 1 + + +/datum/nano_module/email_client/Topic(href, href_list) + if(..()) + return 1 + var/mob/living/user = usr + check_for_new_messages(1) // Any actual interaction (button pressing) is considered as acknowledging received message, for the purpose of notification icons. + if(href_list["login"]) + log_in() + return 1 + + if(href_list["logout"]) + log_out() + return 1 + + if(href_list["reset"]) + error = "" + return 1 + + if(href_list["new_message"]) + new_message = TRUE + return 1 + + if(href_list["cancel"]) + if(addressbook) + addressbook = FALSE + else + clear_message() + return 1 + + if(href_list["addressbook"]) + addressbook = TRUE + return 1 + + if(href_list["set_recipient"]) + msg_recipient = sanitize(href_list["set_recipient"]) + addressbook = FALSE + return 1 + + if(href_list["edit_title"]) + var/newtitle = sanitize(input(user,"Enter title for your message:", "Message title", msg_title), 100) + if(newtitle) + msg_title = newtitle + return 1 + + // This uses similar editing mechanism as the FileManager program, therefore it supports various paper tags and remembers formatting. + if(href_list["edit_body"]) + var/oldtext = html_decode(msg_body) + oldtext = replacetext(oldtext, "\[editorbr\]", "\n") + + var/newtext = sanitize(replacetext(input(usr, "Enter your message. You may use most tags from paper formatting", "Message Editor", oldtext) as message|null, "\n", "\[editorbr\]"), 20000) + if(newtext) + msg_body = newtext + return 1 + + if(href_list["edit_recipient"]) + var/newrecipient = sanitize(input(user,"Enter recipient's email address:", "Recipient", msg_recipient), 100) + if(newrecipient) + msg_recipient = newrecipient + return 1 + + if(href_list["edit_login"]) + var/newlogin = sanitize(input(user,"Enter login", "Login", stored_login), 100) + if(newlogin) + stored_login = newlogin + return 1 + + if(href_list["edit_password"]) + var/newpass = sanitize(input(user,"Enter password", "Password"), 100) + if(newpass) + stored_password = newpass + return 1 + + if(href_list["delete"]) + if(!istype(current_account)) + return 1 + var/datum/computer_file/data/email_message/M = find_message_by_fuid(href_list["delete"]) + if(!istype(M)) + return 1 + if(folder == "Deleted") + current_account.deleted.Remove(M) + qdel(M) + else + current_account.deleted.Add(M) + current_account.inbox.Remove(M) + current_account.spam.Remove(M) + if(current_message == M) + current_message = null + return 1 + + if(href_list["send"]) + if(!current_account) + return 1 + if((msg_title == "") || (msg_body == "") || (msg_recipient == "")) + error = "Error sending mail: Title or message body is empty!" + return 1 + + var/datum/computer_file/data/email_message/message = new() + message.title = msg_title + message.stored_data = msg_body + message.source = current_account.login + message.attachment = msg_attachment + if(!current_account.send_mail(msg_recipient, message)) + error = "Error sending email: this address doesn't exist." + return 1 + else + error = "Email successfully sent." + clear_message() + return 1 + + if(href_list["set_folder"]) + folder = href_list["set_folder"] + return 1 + + if(href_list["reply"]) + var/datum/computer_file/data/email_message/M = find_message_by_fuid(href_list["reply"]) + if(!istype(M)) + return 1 + + new_message = TRUE + msg_recipient = M.source + msg_title = "Re: [M.title]" + msg_body = "\[editorbr\]\[editorbr\]\[editorbr\]\[br\]==============================\[br\]\[editorbr\]" + msg_body += "Received by [current_account.login] at [M.timestamp]\[br\]\[editorbr\][M.stored_data]" + return 1 + + if(href_list["view"]) + var/datum/computer_file/data/email_message/M = find_message_by_fuid(href_list["view"]) + if(istype(M)) + current_message = M + return 1 + + if(href_list["changepassword"]) + var/oldpassword = sanitize(input(user,"Please enter your old password:", "Password Change"), 100) + if(!oldpassword) + return 1 + var/newpassword1 = sanitize(input(user,"Please enter your new password:", "Password Change"), 100) + if(!newpassword1) + return 1 + var/newpassword2 = sanitize(input(user,"Please re-enter your new password:", "Password Change"), 100) + if(!newpassword2) + return 1 + + if(!istype(current_account)) + error = "Please log in before proceeding." + return 1 + + if(current_account.password != oldpassword) + error = "Incorrect original password" + return 1 + + if(newpassword1 != newpassword2) + error = "The entered passwords do not match." + return 1 + + current_account.password = newpassword1 + stored_password = newpassword1 + error = "Your password has been successfully changed!" + return 1 + + // The following entries are Modular Computer framework only, and therefore won't do anything in other cases (like AI View) + + if(href_list["save"]) + // Fully dependant on modular computers here. + var/obj/item/modular_computer/MC = nano_host() + + if(!istype(MC) || !MC.hard_drive || !MC.hard_drive.check_functionality()) + error = "Error exporting file. Are you using a functional and NTOS-compliant device?" + return 1 + + var/filename = sanitize(input(user,"Please specify file name:", "Message export"), 100) + if(!filename) + return 1 + + var/datum/computer_file/data/email_message/M = find_message_by_fuid(href_list["save"]) + var/datum/computer_file/data/mail = istype(M) ? M.export() : null + if(!istype(mail)) + return 1 + mail.filename = filename + if(!MC.hard_drive || !MC.hard_drive.store_file(mail)) + error = "Internal I/O error when writing file, the hard drive may be full." + else + error = "Email exported successfully" + return 1 + + if(href_list["addattachment"]) + var/obj/item/modular_computer/MC = nano_host() + msg_attachment = null + + if(!istype(MC) || !MC.hard_drive || !MC.hard_drive.check_functionality()) + error = "Error uploading file. Are you using a functional and NTOSv2-compliant device?" + return 1 + + var/list/filenames = list() + for(var/datum/computer_file/CF in MC.hard_drive.stored_files) + if(CF.unsendable) + continue + filenames.Add(CF.filename) + var/picked_file = input(user, "Please pick a file to send as attachment (max 32GQ)") as null|anything in filenames + + if(!picked_file) + return 1 + + if(!istype(MC) || !MC.hard_drive || !MC.hard_drive.check_functionality()) + error = "Error uploading file. Are you using a functional and NTOSv2-compliant device?" + return 1 + + for(var/datum/computer_file/CF in MC.hard_drive.stored_files) + if(CF.unsendable) + continue + if(CF.filename == picked_file) + msg_attachment = CF.clone() + break + if(!istype(msg_attachment)) + msg_attachment = null + error = "Unknown error when uploading attachment." + return 1 + + if(msg_attachment.size > 32) + error = "Error uploading attachment: File exceeds maximal permitted file size of 32GQ." + msg_attachment = null + else + error = "File [msg_attachment.filename].[msg_attachment.filetype] has been successfully uploaded." + return 1 + + if(href_list["downloadattachment"]) + if(!current_account || !current_message || !current_message.attachment) + return 1 + var/obj/item/modular_computer/MC = nano_host() + if(!istype(MC) || !MC.hard_drive || !MC.hard_drive.check_functionality()) + error = "Error downloading file. Are you using a functional and NTOSv2-compliant device?" + return 1 + + downloading = current_message.attachment.clone() + download_progress = 0 + return 1 + + if(href_list["canceldownload"]) + downloading = null + download_progress = 0 + return 1 + + if(href_list["remove_attachment"]) + msg_attachment = null + return 1 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm new file mode 100644 index 0000000000..42dfdd622d --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm @@ -0,0 +1,207 @@ +/datum/computer_file/program/filemanager + filename = "filemanager" + filedesc = "NTOS File Manager" + extended_desc = "This program allows management of files." + program_icon_state = "generic" + program_key_state = "generic_key" + program_menu_icon = "folder-collapsed" + size = 8 + requires_ntnet = 0 + available_on_ntnet = 0 + undeletable = 1 + nanomodule_path = /datum/nano_module/program/computer_filemanager/ + var/open_file + var/error + +/datum/computer_file/program/filemanager/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["PRG_openfile"]) + . = 1 + open_file = href_list["PRG_openfile"] + if(href_list["PRG_newtextfile"]) + . = 1 + var/newname = sanitize(input(usr, "Enter file name or leave blank to cancel:", "File rename")) + if(!newname) + return 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/data/F = new/datum/computer_file/data() + F.filename = newname + F.filetype = "TXT" + HDD.store_file(F) + if(href_list["PRG_deletefile"]) + . = 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/file = HDD.find_file_by_name(href_list["PRG_deletefile"]) + if(!file || file.undeletable) + return 1 + HDD.remove_file(file) + if(href_list["PRG_usbdeletefile"]) + . = 1 + var/obj/item/weapon/computer_hardware/hard_drive/RHDD = computer.portable_drive + if(!RHDD) + return 1 + var/datum/computer_file/file = RHDD.find_file_by_name(href_list["PRG_usbdeletefile"]) + if(!file || file.undeletable) + return 1 + RHDD.remove_file(file) + if(href_list["PRG_closefile"]) + . = 1 + open_file = null + error = null + if(href_list["PRG_clone"]) + . = 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/F = HDD.find_file_by_name(href_list["PRG_clone"]) + if(!F || !istype(F)) + return 1 + var/datum/computer_file/C = F.clone(1) + HDD.store_file(C) + if(href_list["PRG_rename"]) + . = 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/file = HDD.find_file_by_name(href_list["PRG_rename"]) + if(!file || !istype(file)) + return 1 + var/newname = sanitize(input(usr, "Enter new file name:", "File rename", file.filename)) + if(file && newname) + file.filename = newname + if(href_list["PRG_edit"]) + . = 1 + if(!open_file) + return 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/data/F = HDD.find_file_by_name(open_file) + if(!F || !istype(F)) + return 1 + if(F.do_not_edit && (alert("WARNING: This file is not compatible with editor. Editing it may result in permanently corrupted formatting or damaged data consistency. Edit anyway?", "Incompatible File", "No", "Yes") == "No")) + return 1 + + var/oldtext = html_decode(F.stored_data) + oldtext = replacetext(oldtext, "\[br\]", "\n") + + var/newtext = sanitize(replacetext(input(usr, "Editing file [open_file]. You may use most tags used in paper formatting:", "Text Editor", oldtext) as message|null, "\n", "\[br\]"), MAX_TEXTFILE_LENGTH) + if(!newtext) + return + + if(F) + var/datum/computer_file/data/backup = F.clone() + HDD.remove_file(F) + F.stored_data = newtext + F.calculate_size() + // We can't store the updated file, it's probably too large. Print an error and restore backed up version. + // This is mostly intended to prevent people from losing texts they spent lot of time working on due to running out of space. + // They will be able to copy-paste the text from error screen and store it in notepad or something. + if(!HDD.store_file(F)) + error = "I/O error: Unable to overwrite file. Hard drive is probably full. You may want to backup your changes before closing this window:

    [html_decode(F.stored_data)]

    " + HDD.store_file(backup) + if(href_list["PRG_printfile"]) + . = 1 + if(!open_file) + return 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/data/F = HDD.find_file_by_name(open_file) + if(!F || !istype(F)) + return 1 + if(!computer.nano_printer) + error = "Missing Hardware: Your computer does not have required hardware to complete this operation." + return 1 + if(!computer.nano_printer.print_text(pencode2html(F.stored_data))) + error = "Hardware error: Printer was unable to print the file. It may be out of paper." + return 1 + if(href_list["PRG_copytousb"]) + . = 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD = computer.portable_drive + if(!HDD || !RHDD) + return 1 + var/datum/computer_file/F = HDD.find_file_by_name(href_list["PRG_copytousb"]) + if(!F || !istype(F)) + return 1 + var/datum/computer_file/C = F.clone(0) + RHDD.store_file(C) + if(href_list["PRG_copyfromusb"]) + . = 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD = computer.portable_drive + if(!HDD || !RHDD) + return 1 + var/datum/computer_file/F = RHDD.find_file_by_name(href_list["PRG_copyfromusb"]) + if(!F || !istype(F)) + return 1 + var/datum/computer_file/C = F.clone(0) + HDD.store_file(C) + if(.) + SSnanoui.update_uis(NM) + +/datum/nano_module/program/computer_filemanager + name = "NTOS File Manager" + +/datum/nano_module/program/computer_filemanager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + var/datum/computer_file/program/filemanager/PRG + PRG = program + + var/obj/item/weapon/computer_hardware/hard_drive/HDD + var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD + if(PRG.error) + data["error"] = PRG.error + if(PRG.open_file) + var/datum/computer_file/data/file + + if(!PRG.computer || !PRG.computer.hard_drive) + data["error"] = "I/O ERROR: Unable to access hard drive." + else + HDD = PRG.computer.hard_drive + file = HDD.find_file_by_name(PRG.open_file) + if(!istype(file)) + data["error"] = "I/O ERROR: Unable to open file." + else + data["filedata"] = pencode2html(file.stored_data) + data["filename"] = "[file.filename].[file.filetype]" + else + if(!PRG.computer || !PRG.computer.hard_drive) + data["error"] = "I/O ERROR: Unable to access hard drive." + else + HDD = PRG.computer.hard_drive + RHDD = PRG.computer.portable_drive + var/list/files[0] + for(var/datum/computer_file/F in HDD.stored_files) + files.Add(list(list( + "name" = F.filename, + "type" = F.filetype, + "size" = F.size, + "undeletable" = F.undeletable + ))) + data["files"] = files + if(RHDD) + data["usbconnected"] = 1 + var/list/usbfiles[0] + for(var/datum/computer_file/F in RHDD.stored_files) + usbfiles.Add(list(list( + "name" = F.filename, + "type" = F.filetype, + "size" = F.size, + "undeletable" = F.undeletable + ))) + data["usbfiles"] = usbfiles + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "file_manager.tmpl", "NTOS File Manager", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/generic/game.dm b/code/modules/modular_computers/file_system/programs/generic/game.dm new file mode 100644 index 0000000000..b4c0688c29 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/game.dm @@ -0,0 +1,152 @@ +// This file is used as a reference for Modular Computers Development guide on the wiki. It contains a lot of excess comments, as it is intended as explanation +// for someone who may not be as experienced in coding. When making changes, please try to keep it this way. + +// An actual program definition. +/datum/computer_file/program/game + filename = "arcadec" // File name, as shown in the file browser program. + filedesc = "Unknown Game" // User-Friendly name. In this case, we will generate a random name in constructor. + program_icon_state = "game" // Icon state of this program's screen. + program_menu_icon = "script" + extended_desc = "Fun for the whole family! Probably not an AAA title, but at least you can download it on the corporate network.." // A nice description. + size = 5 // Size in GQ. Integers only. Smaller sizes should be used for utility/low use programs (like this one), while large sizes are for important programs. + 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/arcade_classic/ // Path of relevant nano module. The nano module is defined further in the file. + var/picked_enemy_name + +// Blatantly stolen and shortened version from arcade machines. Generates a random enemy name +/datum/computer_file/program/game/proc/random_enemy_name() + var/name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") + var/name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "Slime", "Lizard Man", "Unicorn") + return "[name_part1] [name_part2]" + +// When the program is first created, we generate a new enemy name and name ourselves accordingly. +/datum/computer_file/program/game/New() + ..() + picked_enemy_name = random_enemy_name() + filedesc = "Defeat [picked_enemy_name]" + +// Important in order to ensure that copied versions will have the same enemy name. +/datum/computer_file/program/game/clone() + var/datum/computer_file/program/game/G = ..() + G.picked_enemy_name = picked_enemy_name + return G + +// When running the program, we also want to pass our enemy name to the nano module. +/datum/computer_file/program/game/run_program() + . = ..() + if(. && NM) + var/datum/nano_module/arcade_classic/NMC = NM + NMC.enemy_name = picked_enemy_name + + +// Nano module the program uses. +// This can be either /datum/nano_module/ or /datum/nano_module/program. The latter is intended for nano modules that are suposed to be exclusively used with modular computers, +// and should generally not be used, as such nano modules are hard to use on other places. +/datum/nano_module/arcade_classic/ + name = "Classic Arcade" + var/player_mana // Various variables specific to the nano module. In this case, the nano module is a simple arcade game, so the variables store health and other stats. + var/player_health + var/enemy_mana + var/enemy_health + var/enemy_name = "Greytide Horde" + var/gameover + var/information + +/datum/nano_module/arcade_classic/New() + ..() + new_game() + +// ui_interact handles transfer of data to NanoUI. Keep in mind that data you pass from here is actually sent to the client. In other words, don't send anything you don't want a client +// to see, and don't send unnecessarily large amounts of data (due to laginess). +/datum/nano_module/arcade_classic/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + data["player_health"] = player_health + data["player_mana"] = player_mana + data["enemy_health"] = enemy_health + data["enemy_mana"] = enemy_mana + data["enemy_name"] = enemy_name + data["gameover"] = gameover + data["information"] = information + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "arcade_classic.tmpl", "Defeat [enemy_name]", 500, 350, state = state) + if(host.update_layout()) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + +// Three helper procs i've created. These are unique to this particular nano module. If you are creating your own nano module, you'll most likely create similar procs too. +/datum/nano_module/arcade_classic/proc/enemy_play() + if((enemy_mana < 5) && prob(60)) + var/steal = rand(2, 3) + player_mana -= steal + enemy_mana += steal + information += "[enemy_name] steals [steal] of your power!" + else if((enemy_health < 15) && (enemy_mana > 3) && prob(80)) + var/healamt = min(rand(3, 5), enemy_mana) + enemy_mana -= healamt + enemy_health += healamt + information += "[enemy_name] heals for [healamt] health!" + else + var/dam = rand(3,6) + player_health -= dam + information += "[enemy_name] attacks for [dam] damage!" + +/datum/nano_module/arcade_classic/proc/check_gameover() + if((player_health <= 0) || player_mana <= 0) + if(enemy_health <= 0) + information += "You have defeated [enemy_name], but you have died in the fight!" + else + information += "You have been defeated by [enemy_name]!" + gameover = 1 + return TRUE + else if(enemy_health <= 0) + gameover = 1 + information += "Congratulations! You have defeated [enemy_name]!" + return TRUE + return FALSE + +/datum/nano_module/arcade_classic/proc/new_game() + player_mana = 10 + player_health = 30 + enemy_mana = 20 + enemy_health = 45 + gameover = FALSE + information = "A new game has started!" + + + +/datum/nano_module/arcade_classic/Topic(href, href_list) + if(..()) // Always begin your Topic() calls with a parent call! + return 1 + if(href_list["new_game"]) + new_game() + return 1 // Returning 1 (TRUE) in Topic automatically handles UI updates. + if(gameover) // If the game has already ended, we don't want the following three topic calls to be processed at all. + return 1 // Instead of adding checks into each of those three, we can easily add this one check here to reduce on code copy-paste. + if(href_list["attack"]) + var/damage = rand(2, 6) + information = "You attack for [damage] damage." + enemy_health -= damage + enemy_play() + check_gameover() + return 1 + if(href_list["heal"]) + var/healfor = rand(6, 8) + var/cost = rand(1, 3) + information = "You heal yourself for [healfor] damage, using [cost] energy in the process." + player_health += healfor + player_mana -= cost + enemy_play() + check_gameover() + return 1 + if(href_list["regain_mana"]) + var/regen = rand(4, 7) + information = "You rest of a while, regaining [regen] energy." + player_mana += regen + enemy_play() + check_gameover() + return 1 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/generic/news_browser.dm b/code/modules/modular_computers/file_system/programs/generic/news_browser.dm new file mode 100644 index 0000000000..1d4da6d4d5 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/news_browser.dm @@ -0,0 +1,131 @@ +/datum/computer_file/program/newsbrowser + filename = "newsbrowser" + filedesc = "NTNet/ExoNet News Browser" + extended_desc = "This program may be used to view and download news articles from the network." + program_icon_state = "generic" + program_key_state = "generic_key" + program_menu_icon = "contact" + size = 4 + requires_ntnet = 1 + available_on_ntnet = 1 + + nanomodule_path = /datum/nano_module/program/computer_newsbrowser/ + var/datum/computer_file/data/news_article/loaded_article + var/download_progress = 0 + var/download_netspeed = 0 + var/downloading = 0 + var/message = "" + var/show_archived = 0 + +/datum/computer_file/program/newsbrowser/process_tick() + if(!downloading) + return + download_netspeed = 0 + // Speed defines are found in misc.dm + switch(ntnet_status) + if(1) + download_netspeed = NTNETSPEED_LOWSIGNAL + if(2) + download_netspeed = NTNETSPEED_HIGHSIGNAL + if(3) + download_netspeed = NTNETSPEED_ETHERNET + download_progress += download_netspeed + if(download_progress >= loaded_article.size) + downloading = 0 + requires_ntnet = 0 // Turn off NTNet requirement as we already loaded the file into local memory. + SSnanoui.update_uis(NM) + +/datum/computer_file/program/newsbrowser/kill_program() + ..() + requires_ntnet = 1 + loaded_article = null + download_progress = 0 + downloading = 0 + show_archived = 0 + +/datum/computer_file/program/newsbrowser/Topic(href, href_list) + if(..()) + return 1 + if(href_list["PRG_openarticle"]) + . = 1 + if(downloading || loaded_article) + return 1 + + for(var/datum/computer_file/data/news_article/N in ntnet_global.available_news) + if(N.uid == text2num(href_list["PRG_openarticle"])) + loaded_article = N.clone() + downloading = 1 + break + if(href_list["PRG_reset"]) + . = 1 + downloading = 0 + download_progress = 0 + requires_ntnet = 1 + loaded_article = null + if(href_list["PRG_clearmessage"]) + . = 1 + message = "" + if(href_list["PRG_savearticle"]) + . = 1 + if(downloading || !loaded_article) + return + + var/savename = sanitize(input(usr, "Enter file name or leave blank to cancel:", "Save article", loaded_article.filename)) + if(!savename) + return 1 + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return 1 + var/datum/computer_file/data/news_article/N = loaded_article.clone() + N.filename = savename + HDD.store_file(N) + if(href_list["PRG_toggle_archived"]) + . = 1 + show_archived = !show_archived + if(.) + SSnanoui.update_uis(NM) + + +/datum/nano_module/program/computer_newsbrowser + name = "NTNet/ExoNet News Browser" + +/datum/nano_module/program/computer_newsbrowser/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + + var/datum/computer_file/program/newsbrowser/PRG + var/list/data = list() + if(program) + data = program.get_header_data() + PRG = program + else + return + + data["message"] = PRG.message + if(PRG.loaded_article && !PRG.downloading) // Viewing an article. + data["title"] = PRG.loaded_article.filename + data["cover"] = PRG.loaded_article.cover + data["article"] = PRG.loaded_article.stored_data + else if(PRG.downloading) // Downloading an article. + data["download_running"] = 1 + data["download_progress"] = PRG.download_progress + data["download_maxprogress"] = PRG.loaded_article.size + data["download_rate"] = PRG.download_netspeed + else // Viewing list of articles + var/list/all_articles[0] + for(var/datum/computer_file/data/news_article/F in ntnet_global.available_news) + if(!PRG.show_archived && F.archived) + continue + all_articles.Add(list(list( + "name" = F.filename, + "size" = F.size, + "uid" = F.uid, + "archived" = F.archived + ))) + data["all_articles"] = all_articles + data["showing_archived"] = PRG.show_archived + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "news_browser.tmpl", "NTNet/ExoNet News Browser", 575, 750, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() diff --git a/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm new file mode 100644 index 0000000000..a0b2194168 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm @@ -0,0 +1,200 @@ +/datum/computer_file/program/ntnetdownload + filename = "ntndownloader" + filedesc = "NTNet Software Download Tool" + program_icon_state = "generic" + program_key_state = "generic_key" + program_menu_icon = "arrowthickstop-1-s" + extended_desc = "This program allows downloads of software from official NT repositories" + unsendable = 1 + undeletable = 1 + size = 4 + requires_ntnet = 1 + requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD + available_on_ntnet = 0 + nanomodule_path = /datum/nano_module/program/computer_ntnetdownload/ + ui_header = "downloader_finished.gif" + var/datum/computer_file/program/downloaded_file = null + var/hacked_download = 0 + var/download_completion = 0 //GQ of downloaded data. + var/download_netspeed = 0 + var/downloaderror = "" + var/list/downloads_queue[0] + +/datum/computer_file/program/ntnetdownload/kill_program() + ..() + downloaded_file = null + download_completion = 0 + download_netspeed = 0 + downloaderror = "" + ui_header = "downloader_finished.gif" + + +/datum/computer_file/program/ntnetdownload/proc/begin_file_download(var/filename) + if(downloaded_file) + return 0 + + var/datum/computer_file/program/PRG = ntnet_global.find_ntnet_file_by_name(filename) + + if(!check_file_download(filename)) + return 0 + + ui_header = "downloader_running.gif" + + if(PRG in ntnet_global.available_station_software) + generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from NTNet Software Repository.") + hacked_download = 0 + else if(PRG in ntnet_global.available_antag_software) + generate_network_log("Began downloading file **ENCRYPTED**.[PRG.filetype] from unspecified server.") + hacked_download = 1 + else + generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from unspecified server.") + hacked_download = 0 + + downloaded_file = PRG.clone() + +/datum/computer_file/program/ntnetdownload/proc/check_file_download(var/filename) + //returns 1 if file can be downloaded, returns 0 if download prohibited + var/datum/computer_file/program/PRG = ntnet_global.find_ntnet_file_by_name(filename) + + if(!PRG || !istype(PRG)) + return 0 + + // Attempting to download antag only program, but without having emagged computer. No. + if(PRG.available_on_syndinet && !computer_emagged) + return 0 + + if(!computer || !computer.hard_drive || !computer.hard_drive.try_store_file(PRG)) + return 0 + + return 1 + +/datum/computer_file/program/ntnetdownload/proc/abort_file_download() + if(!downloaded_file) + return + generate_network_log("Aborted download of file [hacked_download ? "**ENCRYPTED**" : downloaded_file.filename].[downloaded_file.filetype].") + downloaded_file = null + download_completion = 0 + ui_header = "downloader_finished.gif" + +/datum/computer_file/program/ntnetdownload/proc/complete_file_download() + if(!downloaded_file) + return + generate_network_log("Completed download of file [hacked_download ? "**ENCRYPTED**" : downloaded_file.filename].[downloaded_file.filetype].") + if(!computer || !computer.hard_drive || !computer.hard_drive.store_file(downloaded_file)) + // The download failed + downloaderror = "I/O ERROR - Unable to save file. Check whether you have enough free space on your hard drive and whether your hard drive is properly connected. If the issue persists contact your system administrator for assistance." + downloaded_file = null + download_completion = 0 + ui_header = "downloader_finished.gif" + +/datum/computer_file/program/ntnetdownload/process_tick() + if(!downloaded_file) + return + if(download_completion >= downloaded_file.size) + complete_file_download() + if(downloads_queue.len > 0) + begin_file_download(downloads_queue[1]) + downloads_queue.Remove(downloads_queue[1]) + + // Download speed according to connectivity state. NTNet server is assumed to be on unlimited speed so we're limited by our local connectivity + download_netspeed = 0 + // Speed defines are found in misc.dm + switch(ntnet_status) + if(1) + download_netspeed = NTNETSPEED_LOWSIGNAL + if(2) + download_netspeed = NTNETSPEED_HIGHSIGNAL + if(3) + download_netspeed = NTNETSPEED_ETHERNET + download_completion += download_netspeed + +/datum/computer_file/program/ntnetdownload/Topic(href, href_list) + if(..()) + return 1 + if(href_list["PRG_downloadfile"]) + if(!downloaded_file) + begin_file_download(href_list["PRG_downloadfile"]) + else if(check_file_download(href_list["PRG_downloadfile"]) && !downloads_queue.Find(href_list["PRG_downloadfile"]) && downloaded_file.filename != href_list["PRG_downloadfile"]) + downloads_queue += href_list["PRG_downloadfile"] + return 1 + if(href_list["PRG_removequeued"]) + downloads_queue.Remove(href_list["PRG_removequeued"]) + return 1 + if(href_list["PRG_reseterror"]) + if(downloaderror) + download_completion = 0 + download_netspeed = 0 + downloaded_file = null + downloaderror = "" + return 1 + return 0 + +/datum/nano_module/program/computer_ntnetdownload + name = "Network Downloader" + var/obj/item/modular_computer/my_computer = null + +/datum/nano_module/program/computer_ntnetdownload/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(program) + my_computer = program.computer + + if(!istype(my_computer)) + return + + var/list/data = list() + var/datum/computer_file/program/ntnetdownload/prog = program + // For now limited to execution by the downloader program + if(!prog || !istype(prog)) + return + if(program) + data = program.get_header_data() + + // This IF cuts on data transferred to client, so i guess it's worth it. + if(prog.downloaderror) // Download errored. Wait until user resets the program. + data["error"] = prog.downloaderror + if(prog.downloaded_file) // Download running. Wait please.. + data["downloadname"] = prog.downloaded_file.filename + data["downloaddesc"] = prog.downloaded_file.filedesc + data["downloadsize"] = prog.downloaded_file.size + data["downloadspeed"] = prog.download_netspeed + data["downloadcompletion"] = round(prog.download_completion, 0.1) + + data["disk_size"] = my_computer.hard_drive.max_capacity + data["disk_used"] = my_computer.hard_drive.used_capacity + var/list/all_entries[0] + for(var/datum/computer_file/program/P in ntnet_global.available_station_software) + // Only those programs our user can run will show in the list + if(!P.can_run(user) && P.requires_access_to_download) + continue + all_entries.Add(list(list( + "filename" = P.filename, + "filedesc" = P.filedesc, + "fileinfo" = P.extended_desc, + "size" = P.size, + "icon" = P.program_menu_icon + ))) + data["hackedavailable"] = 0 + if(prog.computer_emagged) // If we are running on emagged computer we have access to some "bonus" software + var/list/hacked_programs[0] + for(var/datum/computer_file/program/P in ntnet_global.available_antag_software) + data["hackedavailable"] = 1 + hacked_programs.Add(list(list( + "filename" = P.filename, + "filedesc" = P.filedesc, + "fileinfo" = P.extended_desc, + "size" = P.size, + "icon" = P.program_menu_icon + ))) + data["hacked_programs"] = hacked_programs + + data["downloadable_programs"] = all_entries + + if(prog.downloads_queue.len > 0) + data["downloads_queue"] = prog.downloads_queue + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "ntnet_downloader.tmpl", "NTNet Download Program", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) diff --git a/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm new file mode 100644 index 0000000000..6c67c02c0d --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm @@ -0,0 +1,232 @@ +/datum/computer_file/program/chatclient + filename = "ntnrc_client" + filedesc = "NTNet Relay Chat Client" + program_icon_state = "command" + program_key_state = "med_key" + program_menu_icon = "comment" + extended_desc = "This program allows communication over NTNRC network" + size = 8 + requires_ntnet = 1 + requires_ntnet_feature = NTNET_COMMUNICATION + network_destination = "NTNRC server" + ui_header = "ntnrc_idle.gif" + available_on_ntnet = 1 + nanomodule_path = /datum/nano_module/program/computer_chatclient/ + var/last_message = null // Used to generate the toolbar icon + var/username + var/datum/ntnet_conversation/channel = null + var/operator_mode = 0 // Channel operator mode + var/netadmin_mode = 0 // Administrator mode (invisible to other users + bypasses passwords) + +/datum/computer_file/program/chatclient/New() + username = "DefaultUser[rand(100, 999)]" + +/datum/computer_file/program/chatclient/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["PRG_speak"]) + . = 1 + if(!channel) + return 1 + var/mob/living/user = usr + var/message = sanitize(input(user, "Enter message or leave blank to cancel: "), 512) + if(!message || !channel) + return + channel.add_message(message, username) + + if(href_list["PRG_joinchannel"]) + . = 1 + var/datum/ntnet_conversation/C + for(var/datum/ntnet_conversation/chan in ntnet_global.chat_channels) + if(chan.id == text2num(href_list["PRG_joinchannel"])) + C = chan + break + + if(!C) + return 1 + + if(netadmin_mode) + channel = C // Bypasses normal leave/join and passwords. Technically makes the user invisible to others. + return 1 + + if(C.password) + var/mob/living/user = usr + var/password = sanitize(input(user,"Access Denied. Enter password:")) + if(C && (password == C.password)) + C.add_client(src) + channel = C + return 1 + C.add_client(src) + channel = C + if(href_list["PRG_leavechannel"]) + . = 1 + if(channel) + channel.remove_client(src) + channel = null + if(href_list["PRG_newchannel"]) + . = 1 + var/mob/living/user = usr + var/channel_title = sanitizeSafe(input(user,"Enter channel name or leave blank to cancel:"), 64) + if(!channel_title) + return + var/datum/ntnet_conversation/C = new/datum/ntnet_conversation() + C.add_client(src) + C.operator = src + channel = C + C.title = channel_title + if(href_list["PRG_toggleadmin"]) + . = 1 + if(netadmin_mode) + netadmin_mode = 0 + if(channel) + channel.remove_client(src) // We shouldn't be in channel's user list, but just in case... + channel = null + return 1 + var/mob/living/user = usr + if(can_run(usr, 1, access_network)) + if(channel) + var/response = alert(user, "Really engage admin-mode? You will be disconnected from your current channel!", "NTNRC Admin mode", "Yes", "No") + if(response == "Yes") + if(channel) + channel.remove_client(src) + channel = null + else + return + netadmin_mode = 1 + if(href_list["PRG_changename"]) + . = 1 + var/mob/living/user = usr + var/newname = sanitize(input(user,"Enter new nickname or leave blank to cancel:"), 20) + if(!newname) + return 1 + if(channel) + channel.add_status_message("[username] is now known as [newname].") + username = newname + + if(href_list["PRG_savelog"]) + . = 1 + if(!channel) + return + var/mob/living/user = usr + var/logname = input(user,"Enter desired logfile name (.log) or leave blank to cancel:") + if(!logname || !channel) + return 1 + var/datum/computer_file/data/logfile = new/datum/computer_file/data/logfile() + // Now we will generate HTML-compliant file that can actually be viewed/printed. + logfile.filename = logname + logfile.stored_data = "\[b\]Logfile dump from NTNRC channel [channel.title]\[/b\]\[BR\]" + for(var/logstring in channel.messages) + logfile.stored_data += "[logstring]\[BR\]" + logfile.stored_data += "\[b\]Logfile dump completed.\[/b\]" + logfile.calculate_size() + if(!computer || !computer.hard_drive || !computer.hard_drive.store_file(logfile)) + if(!computer) + // This program shouldn't even be runnable without computer. + CRASH("Var computer is null!") + return 1 + if(!computer.hard_drive) + computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive connection error\" warning.") + else // In 99.9% cases this will mean our HDD is full + computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive may be full. Please free some space and try again. Required space: [logfile.size]GQ\" warning.") + if(href_list["PRG_renamechannel"]) + . = 1 + if(!operator_mode || !channel) + return 1 + var/mob/living/user = usr + var/newname = sanitize(input(user, "Enter new channel name or leave blank to cancel:"), 64) + if(!newname || !channel) + return + channel.add_status_message("Channel renamed from [channel.title] to [newname] by operator.") + channel.title = newname + if(href_list["PRG_deletechannel"]) + . = 1 + if(channel && ((channel.operator == src) || netadmin_mode)) + qdel(channel) + channel = null + if(href_list["PRG_setpassword"]) + . = 1 + if(!channel || ((channel.operator != src) && !netadmin_mode)) + return 1 + + var/mob/living/user = usr + var/newpassword = sanitize(input(user, "Enter new password for this channel. Leave blank to cancel, enter 'nopassword' to remove password completely:")) + if(!channel || !newpassword || ((channel.operator != src) && !netadmin_mode)) + return 1 + + if(newpassword == "nopassword") + channel.password = "" + else + channel.password = newpassword + +/datum/computer_file/program/chatclient/process_tick() + ..() + if(program_state != PROGRAM_STATE_KILLED) + ui_header = "ntnrc_idle.gif" + if(channel) + // Remember the last message. If there is no message in the channel remember null. + last_message = channel.messages.len ? channel.messages[channel.messages.len - 1] : null + else + last_message = null + return 1 + if(channel && channel.messages && channel.messages.len) + ui_header = last_message == channel.messages[channel.messages.len - 1] ? "ntnrc_idle.gif" : "ntnrc_new.gif" + else + ui_header = "ntnrc_idle.gif" + +/datum/computer_file/program/chatclient/kill_program(var/forced = 0) + if(channel) + channel.remove_client(src) + channel = null + ..(forced) + +/datum/nano_module/program/computer_chatclient + name = "NTNet Relay Chat Client" + +/datum/nano_module/program/computer_chatclient/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(!ntnet_global || !ntnet_global.chat_channels) + return + + var/list/data = list() + if(program) + data = program.get_header_data() + + var/datum/computer_file/program/chatclient/C = program + if(!istype(C)) + return + + data["adminmode"] = C.netadmin_mode + if(C.channel) + data["title"] = C.channel.title + var/list/messages[0] + for(var/M in C.channel.messages) + messages.Add(list(list( + "msg" = M + ))) + data["messages"] = messages + var/list/clients[0] + for(var/datum/computer_file/program/chatclient/cl in C.channel.clients) + clients.Add(list(list( + "name" = cl.username + ))) + data["clients"] = clients + C.operator_mode = (C.channel.operator == C) ? 1 : 0 + data["is_operator"] = C.operator_mode || C.netadmin_mode + + else // Channel selection screen + var/list/all_channels[0] + for(var/datum/ntnet_conversation/conv in ntnet_global.chat_channels) + if(conv && conv.title) + all_channels.Add(list(list( + "chan" = conv.title, + "id" = conv.id + ))) + data["all_channels"] = all_channels + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "ntnet_chat.tmpl", "NTNet Relay Chat Client", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) diff --git a/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm b/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm new file mode 100644 index 0000000000..0efed986ae --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm @@ -0,0 +1,185 @@ +var/global/nttransfer_uid = 0 + +/datum/computer_file/program/nttransfer + filename = "nttransfer" + filedesc = "NTNet P2P Transfer Client" + extended_desc = "This program allows for simple file transfer via direct peer to peer connection." + program_icon_state = "comm_logs" + program_key_state = "generic_key" + program_menu_icon = "transferthick-e-w" + size = 7 + requires_ntnet = 1 + requires_ntnet_feature = NTNET_PEERTOPEER + network_destination = "other device via P2P tunnel" + available_on_ntnet = 1 + nanomodule_path = /datum/nano_module/program/computer_nttransfer/ + + var/error = "" // Error screen + var/server_password = "" // Optional password to download the file. + var/datum/computer_file/provided_file = null // File which is provided to clients. + var/datum/computer_file/downloaded_file = null // File which is being downloaded + var/list/connected_clients = list() // List of connected clients. + var/datum/computer_file/program/nttransfer/remote // Client var, specifies who are we downloading from. + var/download_completion = 0 // Download progress in GQ + var/actual_netspeed = 0 // Displayed in the UI, this is the actual transfer speed. + var/unique_token // UID of this program + var/upload_menu = 0 // Whether we show the program list and upload menu + +/datum/computer_file/program/nttransfer/New() + unique_token = nttransfer_uid + nttransfer_uid++ + ..() + +/datum/computer_file/program/nttransfer/process_tick() + ..() + // Server mode + if(provided_file) + for(var/datum/computer_file/program/nttransfer/C in connected_clients) + // Transfer speed is limited by device which uses slower connectivity. + // We can have multiple clients downloading at same time, but let's assume we use some sort of multicast transfer + // so they can all run on same speed. + C.actual_netspeed = min(C.ntnet_speed, ntnet_speed) + C.download_completion += C.actual_netspeed + if(C.download_completion >= provided_file.size) + C.finish_download() + else if(downloaded_file) // Client mode + if(!remote) + crash_download("Connection to remote server lost") + +/datum/computer_file/program/nttransfer/kill_program(var/forced = 0) + if(downloaded_file) // Client mode, clean up variables for next use + finalize_download() + + if(provided_file) // Server mode, disconnect all clients + for(var/datum/computer_file/program/nttransfer/P in connected_clients) + P.crash_download("Connection terminated by remote server") + downloaded_file = null + ..(forced) + +// Finishes download and attempts to store the file on HDD +/datum/computer_file/program/nttransfer/proc/finish_download() + if(!computer || !computer.hard_drive || !computer.hard_drive.store_file(downloaded_file)) + error = "I/O Error: Unable to save file. Check your hard drive and try again." + finalize_download() + +// Crashes the download and displays specific error message +/datum/computer_file/program/nttransfer/proc/crash_download(var/message) + error = message ? message : "An unknown error has occured during download" + finalize_download() + +// Cleans up variables for next use +/datum/computer_file/program/nttransfer/proc/finalize_download() + if(remote) + remote.connected_clients.Remove(src) + downloaded_file = null + remote = null + download_completion = 0 + + +/datum/nano_module/program/computer_nttransfer + name = "NTNet P2P Transfer Client" + +/datum/nano_module/program/computer_nttransfer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(!program) + return + var/datum/computer_file/program/nttransfer/PRG = program + if(!istype(PRG)) + return + + var/list/data = program.get_header_data() + + if(PRG.error) + data["error"] = PRG.error + else if(PRG.downloaded_file) + data["downloading"] = 1 + data["download_size"] = PRG.downloaded_file.size + data["download_progress"] = PRG.download_completion + data["download_netspeed"] = PRG.actual_netspeed + data["download_name"] = "[PRG.downloaded_file.filename].[PRG.downloaded_file.filetype]" + else if (PRG.provided_file) + data["uploading"] = 1 + data["upload_uid"] = PRG.unique_token + data["upload_clients"] = PRG.connected_clients.len + data["upload_haspassword"] = PRG.server_password ? 1 : 0 + data["upload_filename"] = "[PRG.provided_file.filename].[PRG.provided_file.filetype]" + else if (PRG.upload_menu) + var/list/all_files[0] + for(var/datum/computer_file/F in PRG.computer.hard_drive.stored_files) + all_files.Add(list(list( + "uid" = F.uid, + "filename" = "[F.filename].[F.filetype]", + "size" = F.size + ))) + data["upload_filelist"] = all_files + else + var/list/all_servers[0] + for(var/datum/computer_file/program/nttransfer/P in ntnet_global.fileservers) + if(!P.provided_file) + continue + all_servers.Add(list(list( + "uid" = P.unique_token, + "filename" = "[P.provided_file.filename].[P.provided_file.filetype]", + "size" = P.provided_file.size, + "haspassword" = P.server_password ? 1 : 0 + ))) + data["servers"] = all_servers + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "ntnet_transfer.tmpl", "NTNet P2P Transfer Client", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/computer_file/program/nttransfer/Topic(href, href_list) + if(..()) + return 1 + if(href_list["PRG_downloadfile"]) + for(var/datum/computer_file/program/nttransfer/P in ntnet_global.fileservers) + if("[P.unique_token]" == href_list["PRG_downloadfile"]) + remote = P + break + if(!remote || !remote.provided_file) + return + if(remote.server_password) + var/pass = sanitize(input(usr, "Code 401 Unauthorized. Please enter password:", "Password required")) + if(pass != remote.server_password) + error = "Incorrect Password" + return + downloaded_file = remote.provided_file.clone() + remote.connected_clients.Add(src) + return 1 + if(href_list["PRG_reset"]) + error = "" + upload_menu = 0 + finalize_download() + if(src in ntnet_global.fileservers) + ntnet_global.fileservers.Remove(src) + for(var/datum/computer_file/program/nttransfer/T in connected_clients) + T.crash_download("Remote server has forcibly closed the connection") + provided_file = null + return 1 + if(href_list["PRG_setpassword"]) + var/pass = sanitize(input(usr, "Enter new server password. Leave blank to cancel, input 'none' to disable password.", "Server security", "none")) + if(!pass) + return + if(pass == "none") + server_password = "" + return + server_password = pass + return 1 + if(href_list["PRG_uploadfile"]) + for(var/datum/computer_file/F in computer.hard_drive.stored_files) + if("[F.uid]" == href_list["PRG_uploadfile"]) + if(F.unsendable) + error = "I/O Error: File locked." + return + provided_file = F + ntnet_global.fileservers.Add(src) + return + error = "I/O Error: Unable to locate file on hard drive." + return 1 + if(href_list["PRG_uploadmenu"]) + upload_menu = 1 + return 0 diff --git a/code/modules/modular_computers/file_system/programs/generic/wordprocessor.dm b/code/modules/modular_computers/file_system/programs/generic/wordprocessor.dm new file mode 100644 index 0000000000..1a4d7a1871 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/wordprocessor.dm @@ -0,0 +1,235 @@ +/datum/computer_file/program/wordprocessor + filename = "wordprocessor" + filedesc = "NanoWord" + extended_desc = "This program allows the editing and preview of text documents." + program_icon_state = "word" + program_key_state = "atmos_key" + size = 4 + requires_ntnet = 0 + available_on_ntnet = 1 + nanomodule_path = /datum/nano_module/program/computer_wordprocessor/ + var/browsing + var/open_file + var/loaded_data + var/error + var/is_edited + +/datum/computer_file/program/wordprocessor/proc/get_file(var/filename) + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + var/datum/computer_file/data/F = HDD.find_file_by_name(filename) + if(!istype(F)) + return + return F + +/datum/computer_file/program/wordprocessor/proc/open_file(var/filename) + var/datum/computer_file/data/F = get_file(filename) + if(F) + open_file = F.filename + loaded_data = F.stored_data + return 1 + +/datum/computer_file/program/wordprocessor/proc/save_file(var/filename) + var/datum/computer_file/data/F = get_file(filename) + if(!F) //try to make one if it doesn't exist + F = create_file(filename, loaded_data) + return !isnull(F) + var/datum/computer_file/data/backup = F.clone() + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + HDD.remove_file(F) + F.stored_data = loaded_data + F.calculate_size() + if(!HDD.store_file(F)) + HDD.store_file(backup) + return 0 + is_edited = 0 + return 1 + +/datum/computer_file/program/wordprocessor/proc/create_file(var/newname, var/data = "") + if(!newname) + return + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + if(get_file(newname)) + return + var/datum/computer_file/data/F = new/datum/computer_file/data() + F.filename = newname + F.filetype = "TXT" + F.stored_data = data + F.calculate_size() + if(HDD.store_file(F)) + return F + +/datum/computer_file/program/wordprocessor/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["PRG_txtrpeview"]) + show_browser(usr,"[open_file][pencode2html(loaded_data)]", "window=[open_file]") + return 1 + + if(href_list["PRG_taghelp"]) + to_chat(usr, "The hologram of a googly-eyed paper clip helpfully tells you:") + var/help = {" + \[br\] : Creates a linebreak. + \[center\] - \[/center\] : Centers the text. + \[h1\] - \[/h1\] : First level heading. + \[h2\] - \[/h2\] : Second level heading. + \[h3\] - \[/h3\] : Third level heading. + \[b\] - \[/b\] : Bold. + \[i\] - \[/i\] : Italic. + \[u\] - \[/u\] : Underlined. + \[small\] - \[/small\] : Decreases the size of the text. + \[large\] - \[/large\] : Increases the size of the text. + \[field\] : Inserts a blank text field, which can be filled later. Useful for forms. + \[date\] : Current station date. + \[time\] : Current station time. + \[list\] - \[/list\] : Begins and ends a list. + \[*\] : A list item. + \[hr\] : Horizontal rule. + \[table\] - \[/table\] : Creates table using \[row\] and \[cell\] tags. + \[grid\] - \[/grid\] : Table without visible borders, for layouts. + \[row\] - New table row. + \[cell\] - New table cell. + \[logo\] - Inserts NT logo image. + \[redlogo\] - Inserts red NT logo image. + \[sglogo\] - Inserts Solgov insignia image."} + + to_chat(usr, help) + return 1 + + if(href_list["PRG_closebrowser"]) + browsing = 0 + return 1 + + if(href_list["PRG_backtomenu"]) + error = null + return 1 + + if(href_list["PRG_loadmenu"]) + browsing = 1 + return 1 + + if(href_list["PRG_openfile"]) + . = 1 + if(is_edited) + if(alert("Would you like to save your changes first?",,"Yes","No") == "Yes") + save_file(open_file) + browsing = 0 + if(!open_file(href_list["PRG_openfile"])) + error = "I/O error: Unable to open file '[href_list["PRG_openfile"]]'." + + if(href_list["PRG_newfile"]) + . = 1 + if(is_edited) + if(alert("Would you like to save your changes first?",,"Yes","No") == "Yes") + save_file(open_file) + + var/newname = sanitize(input(usr, "Enter file name:", "New File") as text|null) + if(!newname) + return 1 + var/datum/computer_file/data/F = create_file(newname) + if(F) + open_file = F.filename + loaded_data = "" + return 1 + else + error = "I/O error: Unable to create file '[href_list["PRG_saveasfile"]]'." + + if(href_list["PRG_saveasfile"]) + . = 1 + var/newname = sanitize(input(usr, "Enter file name:", "Save As") as text|null) + if(!newname) + return 1 + var/datum/computer_file/data/F = create_file(newname, loaded_data) + if(F) + open_file = F.filename + else + error = "I/O error: Unable to create file '[href_list["PRG_saveasfile"]]'." + return 1 + + if(href_list["PRG_savefile"]) + . = 1 + if(!open_file) + open_file = sanitize(input(usr, "Enter file name:", "Save As") as text|null) + if(!open_file) + return 0 + if(!save_file(open_file)) + error = "I/O error: Unable to save file '[open_file]'." + return 1 + + if(href_list["PRG_editfile"]) + var/oldtext = html_decode(loaded_data) + oldtext = replacetext(oldtext, "\[br\]", "\n") + + var/newtext = sanitize(replacetext(input(usr, "Editing file '[open_file]'. You may use most tags used in paper formatting:", "Text Editor", oldtext) as message|null, "\n", "\[br\]"), MAX_TEXTFILE_LENGTH) + if(!newtext) + return + loaded_data = newtext + is_edited = 1 + return 1 + + if(href_list["PRG_printfile"]) + . = 1 + if(!computer.nano_printer) + error = "Missing Hardware: Your computer does not have the required hardware to complete this operation." + return 1 + if(!computer.nano_printer.print_text(pencode2html(loaded_data))) + error = "Hardware error: Printer was unable to print the file. It may be out of paper." + return 1 + +/datum/nano_module/program/computer_wordprocessor + name = "Word Processor" + +/datum/nano_module/program/computer_wordprocessor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + var/datum/computer_file/program/wordprocessor/PRG + PRG = program + + var/obj/item/weapon/computer_hardware/hard_drive/HDD + var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD + if(PRG.error) + data["error"] = PRG.error + if(PRG.browsing) + data["browsing"] = PRG.browsing + if(!PRG.computer || !PRG.computer.hard_drive) + data["error"] = "I/O ERROR: Unable to access hard drive." + else + HDD = PRG.computer.hard_drive + var/list/files[0] + for(var/datum/computer_file/F in HDD.stored_files) + if(F.filetype == "TXT") + files.Add(list(list( + "name" = F.filename, + "size" = F.size + ))) + data["files"] = files + + RHDD = PRG.computer.portable_drive + if(RHDD) + data["usbconnected"] = 1 + var/list/usbfiles[0] + for(var/datum/computer_file/F in RHDD.stored_files) + if(F.filetype == "TXT") + usbfiles.Add(list(list( + "name" = F.filename, + "size" = F.size, + ))) + data["usbfiles"] = usbfiles + else if(PRG.open_file) + data["filedata"] = pencode2html(PRG.loaded_data) + data["filename"] = PRG.is_edited ? "[PRG.open_file]*" : PRG.open_file + else + data["filedata"] = pencode2html(PRG.loaded_data) + data["filename"] = "UNNAMED" + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "word_processor.tmpl", "Word Processor", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() \ No newline at end of file diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm similarity index 79% rename from code/modules/nano/modules/crew_monitor.dm rename to code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm index 319da90715..86ccaa73bc 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm @@ -1,52 +1,69 @@ -/datum/nano_module/crew_monitor - name = "Crew monitor" - -/datum/nano_module/crew_monitor/Topic(href, href_list) - if(..()) return 1 - var/turf/T = get_turf(nano_host()) // TODO: Allow setting any using_map.contact_levels from the interface. - if (!T || !(T.z in using_map.player_levels)) - usr << "Unable to establish a connection: You're too far away from the station!" - return 0 - if(href_list["track"]) - if(isAI(usr)) - var/mob/living/silicon/ai/AI = usr - var/mob/living/carbon/human/H = locate(href_list["track"]) in mob_list - if(hassensorlevel(H, SUIT_SENSOR_TRACKING)) - AI.ai_actual_track(H) - return 1 - -/datum/nano_module/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) - var/data[0] - var/turf/T = get_turf(nano_host()) - - data["isAI"] = isAI(user) - data["map_levels"] = using_map.get_map_levels(T.z, FALSE) - data["crewmembers"] = list() - for(var/z in (data["map_levels"] | T.z)) // Always show crew from the current Z even if we can't show a map - data["crewmembers"] += crew_repository.health_data(z) - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - ui = new(user, src, ui_key, "crew_monitor.tmpl", "Crew Monitoring Computer", 900, 800, state = state) - - // adding a template with the key "mapContent" enables the map ui functionality - ui.add_template("mapContent", "crew_monitor_map_content.tmpl") - // adding a template with the key "mapHeader" replaces the map header content - ui.add_template("mapHeader", "crew_monitor_map_header.tmpl") - if(!(ui.map_z_level in data["map_levels"])) - ui.set_map_z_level(data["map_levels"][1]) - - ui.set_initial_data(data) - ui.open() - - // should make the UI auto-update; doesn't seem to? - ui.set_auto_update(1) - -/*/datum/nano_module/crew_monitor/proc/scan() - for(var/mob/living/carbon/human/H in mob_list) - if(istype(H.w_uniform, /obj/item/clothing/under)) - var/obj/item/clothing/under/C = H.w_uniform - if (C.has_sensor) - tracked |= C - return 1 +/datum/computer_file/program/suit_sensors + filename = "sensormonitor" + filedesc = "Suit Sensors Monitoring" + nanomodule_path = /datum/nano_module/crew_monitor + program_icon_state = "crew" + program_key_state = "med_key" + program_menu_icon = "heart" + extended_desc = "This program connects to life signs monitoring system to provide basic information on crew health." + required_access = access_medical + requires_ntnet = 1 + network_destination = "crew lifesigns monitoring system" + size = 11 + + + + + +/datum/nano_module/crew_monitor + name = "Crew monitor" + +/datum/nano_module/crew_monitor/Topic(href, href_list) + if(..()) return 1 + var/turf/T = get_turf(nano_host()) // TODO: Allow setting any using_map.contact_levels from the interface. + if (!T || !(T.z in using_map.player_levels)) + usr << "Unable to establish a connection: You're too far away from the station!" + return 0 + if(href_list["track"]) + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/mob/living/carbon/human/H = locate(href_list["track"]) in mob_list + if(hassensorlevel(H, SUIT_SENSOR_TRACKING)) + AI.ai_actual_track(H) + return 1 + +/datum/nano_module/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + var/turf/T = get_turf(nano_host()) + + data["isAI"] = isAI(user) + data["map_levels"] = using_map.get_map_levels(T.z, FALSE) + data["crewmembers"] = list() + for(var/z in (data["map_levels"] | T.z)) // Always show crew from the current Z even if we can't show a map + data["crewmembers"] += crew_repository.health_data(z) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "crew_monitor.tmpl", "Crew Monitoring Computer", 900, 800, state = state) + + // adding a template with the key "mapContent" enables the map ui functionality + ui.add_template("mapContent", "crew_monitor_map_content.tmpl") + // adding a template with the key "mapHeader" replaces the map header content + ui.add_template("mapHeader", "crew_monitor_map_header.tmpl") + if(!(ui.map_z_level in data["map_levels"])) + ui.set_map_z_level(data["map_levels"][1]) + + ui.set_initial_data(data) + ui.open() + + // should make the UI auto-update; doesn't seem to? + ui.set_auto_update(1) + +/*/datum/nano_module/crew_monitor/proc/scan() + for(var/mob/living/carbon/human/H in mob_list) + if(istype(H.w_uniform, /obj/item/clothing/under)) + var/obj/item/clothing/under/C = H.w_uniform + if (C.has_sensor) + tracked |= C + return 1 */ \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/research/email_administration.dm b/code/modules/modular_computers/file_system/programs/research/email_administration.dm new file mode 100644 index 0000000000..93ba0bded3 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/research/email_administration.dm @@ -0,0 +1,144 @@ +/datum/computer_file/program/email_administration + filename = "emailadmin" + filedesc = "Email Administration Utility" + extended_desc = "This program may be used to administrate NTNet's emailing service." + program_icon_state = "comm_monitor" + program_key_state = "generic_key" + program_menu_icon = "mail-open" + size = 12 + requires_ntnet = 1 + available_on_ntnet = 1 + nanomodule_path = /datum/nano_module/email_administration + required_access = access_network + + + + +/datum/nano_module/email_administration/ + name = "Email Client" + var/datum/computer_file/data/email_account/current_account = null + var/datum/computer_file/data/email_message/current_message = null + var/error = "" + +/datum/nano_module/email_administration/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + if(error) + data["error"] = error + else if(istype(current_message)) + data["msg_title"] = current_message.title + data["msg_body"] = pencode2html(current_message.stored_data) + data["msg_timestamp"] = current_message.timestamp + data["msg_source"] = current_message.source + else if(istype(current_account)) + data["current_account"] = current_account.login + data["cur_suspended"] = current_account.suspended + var/list/all_messages = list() + for(var/datum/computer_file/data/email_message/message in (current_account.inbox | current_account.spam | current_account.deleted)) + all_messages.Add(list(list( + "title" = message.title, + "source" = message.source, + "timestamp" = message.timestamp, + "uid" = message.uid + ))) + data["messages"] = all_messages + data["messagecount"] = all_messages.len + else + var/list/all_accounts = list() + for(var/datum/computer_file/data/email_account/account in ntnet_global.email_accounts) + if(!account.can_login) + continue + all_accounts.Add(list(list( + "login" = account.login, + "uid" = account.uid + ))) + data["accounts"] = all_accounts + data["accountcount"] = all_accounts.len + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "email_administration.tmpl", "Email Administration Utility", 600, 450, state = state) + if(host.update_layout()) + ui.auto_update_layout = 1 + ui.set_auto_update(1) + ui.set_initial_data(data) + ui.open() + + +/datum/nano_module/email_administration/Topic(href, href_list) + if(..()) + return 1 + + var/mob/user = usr + if(!istype(user)) + return 1 + + // High security - can only be operated when the user has an ID with access on them. + var/obj/item/weapon/card/id/I = user.GetIdCard() + if(!istype(I) || !(access_network in I.access)) + return 1 + + if(href_list["back"]) + if(error) + error = "" + else if(current_message) + current_message = null + else + current_account = null + return 1 + + if(href_list["ban"]) + if(!current_account) + return 1 + + current_account.suspended = !current_account.suspended + ntnet_global.add_log_with_ids_check("EMAIL LOG: SA-EDIT Account [current_account.login] has been [current_account.suspended ? "" : "un" ]suspended by SA [I.registered_name] ([I.assignment]).") + error = "Account [current_account.login] has been [current_account.suspended ? "" : "un" ]suspended." + return 1 + + if(href_list["changepass"]) + if(!current_account) + return 1 + + var/newpass = sanitize(input(user,"Enter new password for account [current_account.login]", "Password"), 100) + if(!newpass) + return 1 + current_account.password = newpass + ntnet_global.add_log_with_ids_check("EMAIL LOG: SA-EDIT Password for account [current_account.login] has been changed by SA [I.registered_name] ([I.assignment]).") + return 1 + + if(href_list["viewmail"]) + if(!current_account) + return 1 + + for(var/datum/computer_file/data/email_message/received_message in (current_account.inbox | current_account.spam | current_account.deleted)) + if(received_message.uid == text2num(href_list["viewmail"])) + current_message = received_message + break + return 1 + + if(href_list["viewaccount"]) + for(var/datum/computer_file/data/email_account/email_account in ntnet_global.email_accounts) + if(email_account.uid == text2num(href_list["viewaccount"])) + current_account = email_account + break + return 1 + + if(href_list["newaccount"]) + var/newdomain = sanitize(input(user,"Pick domain:", "Domain name") as null|anything in using_map.usable_email_tlds) + if(!newdomain) + return 1 + var/newlogin = sanitize(input(user,"Pick account name (@[newdomain]):", "Account name"), 100) + if(!newlogin) + return 1 + + var/complete_login = "[newlogin]@[newdomain]" + if(ntnet_global.does_email_exist(complete_login)) + error = "Error creating account: An account with same address already exists." + return 1 + + var/datum/computer_file/data/email_account/new_account = new/datum/computer_file/data/email_account() + new_account.login = complete_login + new_account.password = GenerateKey() + error = "Email [new_account.login] has been created, with generated password [new_account.password]" + return 1 diff --git a/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm new file mode 100644 index 0000000000..590837f2b5 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm @@ -0,0 +1,102 @@ +/datum/computer_file/program/ntnetmonitor + filename = "ntmonitor" + filedesc = "NTNet Diagnostics and Monitoring" + program_icon_state = "comm_monitor" + program_key_state = "generic_key" + program_menu_icon = "wrench" + extended_desc = "This program monitors the local NTNet network, provides access to logging systems, and allows for configuration changes" + size = 12 + requires_ntnet = 1 + required_access = access_network + available_on_ntnet = 1 + nanomodule_path = /datum/nano_module/computer_ntnetmonitor/ + +/datum/nano_module/computer_ntnetmonitor + name = "NTNet Diagnostics and Monitoring" + //available_to_ai = TRUE + +/datum/nano_module/computer_ntnetmonitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + if(!ntnet_global) + return + var/list/data = host.initial_data() + + data["ntnetstatus"] = ntnet_global.check_function() + data["ntnetrelays"] = ntnet_global.relays.len + data["idsstatus"] = ntnet_global.intrusion_detection_enabled + data["idsalarm"] = ntnet_global.intrusion_detection_alarm + + data["config_softwaredownload"] = ntnet_global.setting_softwaredownload + data["config_peertopeer"] = ntnet_global.setting_peertopeer + data["config_communication"] = ntnet_global.setting_communication + data["config_systemcontrol"] = ntnet_global.setting_systemcontrol + + data["ntnetlogs"] = ntnet_global.logs + data["ntnetmaxlogs"] = ntnet_global.setting_maxlogcount + + data["banned_nids"] = list(ntnet_global.banned_nids) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "ntnet_monitor.tmpl", "NTNet Diagnostics and Monitoring Tool", 575, 700, state = state) + if(host.update_layout()) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/nano_module/computer_ntnetmonitor/Topic(href, href_list, state) + var/mob/user = usr + if(..()) + return 1 + if(href_list["resetIDS"]) + if(ntnet_global) + ntnet_global.resetIDS() + return 1 + if(href_list["toggleIDS"]) + if(ntnet_global) + ntnet_global.toggleIDS() + return 1 + if(href_list["toggleWireless"]) + if(!ntnet_global) + return 1 + + // NTNet is disabled. Enabling can be done without user prompt + if(ntnet_global.setting_disabled) + ntnet_global.setting_disabled = 0 + return 1 + + // NTNet is enabled and user is about to shut it down. Let's ask them if they really want to do it, as wirelessly connected computers won't connect without NTNet being enabled (which may prevent people from turning it back on) + if(!user) + return 1 + var/response = alert(user, "Really disable NTNet wireless? If your computer is connected wirelessly you won't be able to turn it back on! This will affect all connected wireless devices.", "NTNet shutdown", "Yes", "No") + if(response == "Yes") + ntnet_global.setting_disabled = 1 + return 1 + if(href_list["purgelogs"]) + if(ntnet_global) + ntnet_global.purge_logs() + return 1 + if(href_list["updatemaxlogs"]) + var/logcount = text2num(input(user,"Enter amount of logs to keep in memory ([MIN_NTNET_LOGS]-[MAX_NTNET_LOGS]):")) + if(ntnet_global) + ntnet_global.update_max_log_count(logcount) + return 1 + if(href_list["toggle_function"]) + if(!ntnet_global) + return 1 + ntnet_global.toggle_function(href_list["toggle_function"]) + return 1 + if(href_list["ban_nid"]) + if(!ntnet_global) + return 1 + var/nid = input(user,"Enter NID of device which you want to block from the network:", "Enter NID") as null|num + if(nid && CanUseTopic(user, state)) + ntnet_global.banned_nids |= nid + return 1 + if(href_list["unban_nid"]) + if(!ntnet_global) + return 1 + var/nid = input(user,"Enter NID of device which you want to unblock from the network:", "Enter NID") as null|num + if(nid && CanUseTopic(user, state)) + ntnet_global.banned_nids -= nid + return 1 diff --git a/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm b/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm new file mode 100644 index 0000000000..28ca1b73f5 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm @@ -0,0 +1,143 @@ +var/warrant_uid = 0 +/datum/datacore/var/list/warrants[] = list() +/datum/data/record/warrant + var/warrant_id + +/datum/data/record/warrant/New() + ..() + warrant_id = warrant_uid++ + + +/datum/computer_file/program/digitalwarrant + filename = "digitalwarrant" + filedesc = "Warrant Assistant" + extended_desc = "Official NTsec program for creation and handling of warrants." + size = 8 + program_icon_state = "warrant" + program_key_state = "security_key" + program_menu_icon = "star" + requires_ntnet = 1 + available_on_ntnet = 1 + required_access = access_security + usage_flags = PROGRAM_ALL + nanomodule_path = /datum/nano_module/program/digitalwarrant/ + +/datum/nano_module/program/digitalwarrant/ + name = "Warrant Assistant" + var/datum/data/record/warrant/activewarrant + +/datum/nano_module/program/digitalwarrant/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + var/list/data = host.initial_data() + + if(activewarrant) + data["warrantname"] = activewarrant.fields["namewarrant"] + data["warrantcharges"] = activewarrant.fields["charges"] + data["warrantauth"] = activewarrant.fields["auth"] + data["type"] = activewarrant.fields["arrestsearch"] + else + var/list/allwarrants = list() + for(var/datum/data/record/warrant/W in data_core.warrants) + allwarrants.Add(list(list( + "warrantname" = W.fields["namewarrant"], + "charges" = "[copytext(W.fields["charges"],1,min(length(W.fields["charges"]) + 1, 50))]...", + "auth" = W.fields["auth"], + "id" = W.warrant_id, + "arrestsearch" = W.fields["arrestsearch"] + ))) + data["allwarrants"] = allwarrants + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "digitalwarrant.tmpl", name, 500, 350, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + +/datum/nano_module/program/digitalwarrant/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["sw_menu"]) + activewarrant = null + + if(href_list["editwarrant"]) + . = 1 + for(var/datum/data/record/warrant/W in data_core.warrants) + if(W.warrant_id == text2num(href_list["editwarrant"])) + activewarrant = W + break + + // The following actions will only be possible if the user has an ID with security access equipped. This is in line with modular computer framework's authentication methods, + // which also use RFID scanning to allow or disallow access to some functions. Anyone can view warrants, editing requires ID. This also prevents situations where you show a tablet + // to someone who is to be arrested, which allows them to change the stuff there. + + var/mob/user = usr + if(!istype(user)) + return + var/obj/item/weapon/card/id/I = user.GetIdCard() + if(!istype(I) || !I.registered_name || !(access_security in I.access)) + to_chat(user, "Authentication error: Unable to locate ID with apropriate access to allow this operation.") + return + + if(href_list["addwarrant"]) + . = 1 + var/datum/data/record/warrant/W = new() + var/temp = sanitize(input(usr, "Do you want to create a search-, or an arrest warrant?") as null|anything in list("search","arrest")) + if(CanInteract(user, default_state)) + if(temp == "arrest") + W.fields["namewarrant"] = "Unknown" + W.fields["charges"] = "No charges present" + W.fields["auth"] = "Unauthorized" + W.fields["arrestsearch"] = "arrest" + if(temp == "search") + W.fields["namewarrant"] = "No location given" + W.fields["charges"] = "No reason given" + W.fields["auth"] = "Unauthorized" + W.fields["arrestsearch"] = "search" + activewarrant = W + + if(href_list["savewarrant"]) + . = 1 + data_core.warrants |= activewarrant + activewarrant = null + + if(href_list["deletewarrant"]) + . = 1 + data_core.warrants -= activewarrant + activewarrant = null + + if(href_list["editwarrantname"]) + . = 1 + var/namelist = list() + for(var/datum/data/record/t in data_core.general) + namelist += t.fields["name"] + var/new_name = sanitize(input(usr, "Please input name") as null|anything in namelist) + if(CanInteract(user, default_state)) + if (!new_name) + return + activewarrant.fields["namewarrant"] = new_name + + if(href_list["editwarrantnamecustom"]) + . = 1 + var/new_name = sanitize(input("Please input name") as null|text) + if(CanInteract(user, default_state)) + if (!new_name) + return + activewarrant.fields["namewarrant"] = new_name + + if(href_list["editwarrantcharges"]) + . = 1 + var/new_charges = sanitize(input("Please input charges", "Charges", activewarrant.fields["charges"]) as null|text) + if(CanInteract(user, default_state)) + if (!new_charges) + return + activewarrant.fields["charges"] = new_charges + + if(href_list["editwarrantauth"]) + . = 1 + + activewarrant.fields["auth"] = "[I.registered_name] - [I.assignment ? I.assignment : "(Unknown)"]" + + if(href_list["back"]) + . = 1 + activewarrant = null diff --git a/code/modules/modular_computers/hardware/_hardware.dm b/code/modules/modular_computers/hardware/_hardware.dm new file mode 100644 index 0000000000..90150bc547 --- /dev/null +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -0,0 +1,87 @@ +/obj/item/weapon/computer_hardware/ + name = "Hardware" + desc = "Unknown Hardware." + icon = 'icons/obj/modular_components.dmi' + var/obj/item/modular_computer/holder2 = null + var/power_usage = 0 // If the hardware uses extra power, change this. + var/enabled = 1 // If the hardware is turned off set this to 0. + var/critical = 1 // Prevent disabling for important component, like the HDD. + var/hardware_size = 1 // Limits which devices can contain this component. 1: Tablets/Laptops/Consoles, 2: Laptops/Consoles, 3: Consoles only + var/damage = 0 // Current damage level + var/max_damage = 100 // Maximal damage level. + var/damage_malfunction = 20 // "Malfunction" threshold. When damage exceeds this value the hardware piece will semi-randomly fail and do !!FUN!! things + var/damage_failure = 50 // "Failure" threshold. When damage exceeds this value the hardware piece will not work at all. + var/malfunction_probability = 10// Chance of malfunction when the component is damaged + +/obj/item/weapon/computer_hardware/attackby(var/obj/item/W as obj, var/mob/living/user as mob) + // Multitool. Runs diagnostics + if(istype(W, /obj/item/device/multitool)) + to_chat(user, "***** DIAGNOSTICS REPORT *****") + diagnostics(user) + to_chat(user, "******************************") + return 1 + // Nanopaste. Repair all damage if present for a single unit. + var/obj/item/stack/S = W + if(istype(S, /obj/item/stack/nanopaste)) + if(!damage) + to_chat(user, "\The [src] doesn't seem to require repairs.") + return 1 + if(S.use(1)) + to_chat(user, "You apply a bit of \the [W] to \the [src]. It immediately repairs all damage.") + damage = 0 + return 1 + // Cable coil. Works as repair method, but will probably require multiple applications and more cable. + if(istype(S, /obj/item/stack/cable_coil)) + if(!damage) + to_chat(user, "\The [src] doesn't seem to require repairs.") + return 1 + if(S.use(1)) + to_chat(user, "You patch up \the [src] with a bit of \the [W].") + take_damage(-10) + return 1 + return ..() + + +// Called on multitool click, prints diagnostic information to the user. +/obj/item/weapon/computer_hardware/proc/diagnostics(var/mob/user) + to_chat(user, "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]") + +/obj/item/weapon/computer_hardware/New(var/obj/L) + w_class = hardware_size + if(istype(L, /obj/item/modular_computer)) + holder2 = L + return + +/obj/item/weapon/computer_hardware/Destroy() + holder2 = null + return ..() + +// Handles damage checks +/obj/item/weapon/computer_hardware/proc/check_functionality() + // Turned off + if(!enabled) + return 0 + // Too damaged to work at all. + if(damage > damage_failure) + return 0 + // Still working. Well, sometimes... + if(damage > damage_malfunction) + if(prob(malfunction_probability)) + return 0 + // Good to go. + return 1 + +/obj/item/weapon/computer_hardware/examine(var/mob/user) + . = ..() + if(damage > damage_failure) + to_chat(user, "It seems to be severely damaged!") + else if(damage > damage_malfunction) + to_chat(user, "It seems to be damaged!") + else if(damage) + to_chat(user, "It seems to be slightly damaged.") + +// Damages the component. Contains necessary checks. Negative damage "heals" the component. +/obj/item/weapon/computer_hardware/proc/take_damage(var/amount) + damage += round(amount) // We want nice rounded numbers here. + damage = between(0, damage, max_damage) // Clamp the value. + diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm new file mode 100644 index 0000000000..3b7ea1164b --- /dev/null +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -0,0 +1,79 @@ +// This device is wrapper for actual power cell. I have decided to not use power cells directly as even low-end cells available on station +// have tremendeous capacity in comparsion. Higher tier cells would provide your device with nearly infinite battery life, which is something i want to avoid. +/obj/item/weapon/computer_hardware/battery_module + name = "standard battery" + desc = "A standard power cell, commonly seen in high-end portable microcomputers or low-end laptops. It's rating is 750." + icon_state = "battery_normal" + critical = 1 + malfunction_probability = 1 + origin_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) + var/battery_rating = 750 + var/obj/item/weapon/cell/battery = null + +/obj/item/weapon/computer_hardware/battery_module/advanced + name = "advanced battery" + desc = "An advanced power cell, often used in most laptops. It is too large to be fitted into smaller devices. It's rating is 1100." + icon_state = "battery_advanced" + origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) + hardware_size = 2 + battery_rating = 1100 + +/obj/item/weapon/computer_hardware/battery_module/super + name = "super battery" + desc = "A very advanced power cell, often used in high-end devices, or as uninterruptable power supply for important consoles or servers. It's rating is 1500." + icon_state = "battery_super" + origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) + hardware_size = 2 + battery_rating = 1500 + +/obj/item/weapon/computer_hardware/battery_module/ultra + name = "ultra battery" + desc = "A very advanced large power cell. It's often used as uninterruptable power supply for critical consoles or servers. It's rating is 2000." + icon_state = "battery_ultra" + origin_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4) + hardware_size = 3 + battery_rating = 2000 + +/obj/item/weapon/computer_hardware/battery_module/micro + name = "micro battery" + desc = "A small power cell, commonly seen in most portable microcomputers. It's rating is 500." + icon_state = "battery_micro" + origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) + battery_rating = 500 + +/obj/item/weapon/computer_hardware/battery_module/nano + name = "nano battery" + desc = "A tiny power cell, commonly seen in low-end portable microcomputers. It's rating is 300." + icon_state = "battery_nano" + origin_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) + battery_rating = 300 + +// This is not intended to be obtainable in-game. Intended for adminbus and debugging purposes. +/obj/item/weapon/computer_hardware/battery_module/lambda + name = "lambda coil" + desc = "A very complex power source compatible with various computers. It is capable of providing power for nearly unlimited duration." + icon_state = "battery_lambda" + hardware_size = 1 + battery_rating = 30000 + +/obj/item/weapon/computer_hardware/battery_module/lambda/New() + ..() + battery = new/obj/item/weapon/cell/infinite(src) + +/obj/item/weapon/computer_hardware/battery_module/diagnostics(var/mob/user) + ..() + to_chat(user, "Internal battery charge: [battery.charge]/[battery.maxcharge] CU") + +/obj/item/weapon/computer_hardware/battery_module/New() + battery = new/obj/item/weapon/cell(src) + battery.maxcharge = battery_rating + battery.charge = 0 + ..() + +/obj/item/weapon/computer_hardware/battery_module/Destroy() + qdel_null(battery) + return ..() + +/obj/item/weapon/computer_hardware/battery_module/proc/charge_to_full() + if(battery) + battery.charge = battery.maxcharge \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm new file mode 100644 index 0000000000..4cf8afc705 --- /dev/null +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -0,0 +1,18 @@ +/obj/item/weapon/computer_hardware/card_slot + name = "RFID card slot" + desc = "Slot that allows this computer to write data on RFID cards. Necessary for some programs to run properly." + power_usage = 10 //W + critical = 0 + icon_state = "cardreader" + hardware_size = 1 + origin_tech = list(TECH_DATA = 2) + + var/obj/item/weapon/card/id/stored_card = null + +/obj/item/weapon/computer_hardware/card_slot/Destroy() + if(holder2 && (holder2.card_slot == src)) + holder2.card_slot = null + if(stored_card) + stored_card.forceMove(get_turf(holder2)) + holder2 = null + return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm new file mode 100644 index 0000000000..c9aa58d8d1 --- /dev/null +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -0,0 +1,167 @@ +/obj/item/weapon/computer_hardware/hard_drive/ + name = "basic hard drive" + desc = "A small power efficient solid state drive, with 128GQ of storage capacity for use in basic computers where power efficiency is desired." + power_usage = 25 // SSD or something with low power usage + icon_state = "hdd_normal" + hardware_size = 1 + origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) + var/max_capacity = 128 + var/used_capacity = 0 + var/list/stored_files = list() // List of stored files on this drive. DO NOT MODIFY DIRECTLY! + +/obj/item/weapon/computer_hardware/hard_drive/advanced + name = "advanced hard drive" + desc = "A small hybrid hard drive with 256GQ of storage capacity for use in higher grade computers where balance between power efficiency and capacity is desired." + max_capacity = 256 + origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + power_usage = 50 // Hybrid, medium capacity and medium power storage + icon_state = "hdd_advanced" + hardware_size = 2 + +/obj/item/weapon/computer_hardware/hard_drive/super + name = "super hard drive" + desc = "A small hard drive with 512GQ of storage capacity for use in cluster storage solutions where capacity is more important than power efficiency." + max_capacity = 512 + origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + power_usage = 100 // High-capacity but uses lots of power, shortening battery life. Best used with APC link. + icon_state = "hdd_super" + hardware_size = 2 + +/obj/item/weapon/computer_hardware/hard_drive/cluster + name = "cluster hard drive" + desc = "A large storage cluster consisting of multiple hard drives for usage in high capacity storage systems. Has capacity of 2048 GQ." + power_usage = 500 + origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) + max_capacity = 2048 + icon_state = "hdd_cluster" + hardware_size = 3 + +// For tablets, etc. - highly power efficient. +/obj/item/weapon/computer_hardware/hard_drive/small + name = "small hard drive" + desc = "A small highly efficient solid state drive for portable devices." + power_usage = 10 + origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + max_capacity = 64 + icon_state = "hdd_small" + hardware_size = 1 + +/obj/item/weapon/computer_hardware/hard_drive/micro + name = "micro hard drive" + desc = "A small micro hard drive for portable devices." + power_usage = 2 + origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) + max_capacity = 32 + icon_state = "hdd_micro" + hardware_size = 1 + +/obj/item/weapon/computer_hardware/hard_drive/diagnostics(var/mob/user) + ..() + // 999 is a byond limit that is in place. It's unlikely someone will reach that many files anyway, since you would sooner run out of space. + to_chat(user, "NT-NFS File Table Status: [stored_files.len]/999") + to_chat(user, "Storage capacity: [used_capacity]/[max_capacity]GQ") + +// Use this proc to add file to the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks. +/obj/item/weapon/computer_hardware/hard_drive/proc/store_file(var/datum/computer_file/F) + if(!F || !istype(F)) + return 0 + + if(!can_store_file(F.size)) + return 0 + + if(!check_functionality()) + return 0 + + if(!stored_files) + return 0 + + // This file is already stored. Don't store it again. + if(F in stored_files) + return 0 + + F.holder = src + stored_files.Add(F) + recalculate_size() + return 1 + +// Use this proc to add file to the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks. +/obj/item/weapon/computer_hardware/hard_drive/proc/install_default_programs() + store_file(new/datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar + store_file(new/datum/computer_file/program/ntnetdownload(src)) // NTNet Downloader Utility, allows users to download more software from NTNet repository + store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation. + + +// Use this proc to remove file from the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks. +/obj/item/weapon/computer_hardware/hard_drive/proc/remove_file(var/datum/computer_file/F) + if(!F || !istype(F)) + return 0 + + if(!stored_files) + return 0 + + if(!check_functionality()) + return 0 + + if(F in stored_files) + stored_files -= F + recalculate_size() + return 1 + else + return 0 + +// Loops through all stored files and recalculates used_capacity of this drive +/obj/item/weapon/computer_hardware/hard_drive/proc/recalculate_size() + var/total_size = 0 + for(var/datum/computer_file/F in stored_files) + total_size += F.size + + used_capacity = total_size + +// Checks whether file can be stored on the hard drive. +/obj/item/weapon/computer_hardware/hard_drive/proc/can_store_file(var/size = 1) + // In the unlikely event someone manages to create that many files. + // BYOND is acting weird with numbers above 999 in loops (infinite loop prevention) + if(stored_files.len >= 999) + return 0 + if(used_capacity + size > max_capacity) + return 0 + else + return 1 + +// Checks whether we can store the file. We can only store unique files, so this checks whether we wouldn't get a duplicity by adding a file. +/obj/item/weapon/computer_hardware/hard_drive/proc/try_store_file(var/datum/computer_file/F) + if(!F || !istype(F)) + return 0 + var/name = F.filename + "." + F.filetype + for(var/datum/computer_file/file in stored_files) + if((file.filename + "." + file.filetype) == name) + return 0 + return can_store_file(F.size) + + + +// Tries to find the file by filename. Returns null on failure +/obj/item/weapon/computer_hardware/hard_drive/proc/find_file_by_name(var/filename) + if(!check_functionality()) + return null + + if(!filename) + return null + + if(!stored_files) + return null + + for(var/datum/computer_file/F in stored_files) + if(F.filename == filename) + return F + return null + +/obj/item/weapon/computer_hardware/hard_drive/Destroy() + if(holder2 && (holder2.hard_drive == src)) + holder2.hard_drive = null + stored_files = null + return ..() + +/obj/item/weapon/computer_hardware/hard_drive/New() + install_default_programs() + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm new file mode 100644 index 0000000000..2496a6930d --- /dev/null +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -0,0 +1,77 @@ +/obj/item/weapon/computer_hardware/nano_printer + name = "nano printer" + desc = "Small integrated printer with paper recycling module." + power_usage = 50 + origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + critical = 0 + icon_state = "printer" + hardware_size = 1 + var/stored_paper = 5 + var/max_paper = 10 + +/obj/item/weapon/computer_hardware/nano_printer/diagnostics(var/mob/user) + ..() + to_chat(user, "Paper buffer level: [stored_paper]/[max_paper]") + +/obj/item/weapon/computer_hardware/nano_printer/proc/print_text(var/text_to_print, var/paper_title = null) + if(!stored_paper) + return 0 + if(!enabled) + return 0 + if(!check_functionality()) + return 0 + + var/obj/item/weapon/paper/P = new/obj/item/weapon/paper(get_turf(holder2)) + + // Damaged printer causes the resulting paper to be somewhat harder to read. + if(damage > damage_malfunction) + P.info = stars(text_to_print, 100-malfunction_probability) + else + P.info = text_to_print + if(paper_title) + P.name = paper_title + P.update_icon() + + stored_paper-- + return 1 + +/obj/item/weapon/computer_hardware/nano_printer/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/paper)) + if(stored_paper >= max_paper) + to_chat(user, "You try to add \the [W] into \the [src], but its paper bin is full.") + return + + to_chat(user, "You insert \the [W] into [src].") + qdel(W) + stored_paper++ + else if(istype(W, /obj/item/weapon/paper_bundle)) + var/obj/item/weapon/paper_bundle/B = W + var/num_of_pages_added = 0 + if(stored_paper >= max_paper) + to_chat(user, "You try to add \the [W] into \the [src], but its paper bin is full.") + return + for(var/obj/item/weapon/bundleitem in B) //loop through items in bundle + if(istype(bundleitem, /obj/item/weapon/paper)) //if item is paper (and not photo), add into the bin + B.pages.Remove(bundleitem) + qdel(bundleitem) + num_of_pages_added++ + stored_paper++ + if(stored_paper >= max_paper) //check if the printer is full yet + to_chat(user, "The printer has been filled to full capacity.") + break + if(B.pages.len == 0) //if all its papers have been put into the printer, delete bundle + qdel(W) + else if(B.pages.len == 1) //if only one item left, extract item and delete the one-item bundle + user.drop_from_inventory(B) + user.put_in_hands(B[1]) + qdel(B) + else //if at least two items remain, just update the bundle icon + B.update_icon() + to_chat(user, "You add [num_of_pages_added] papers from \the [W] into \the [src].") + return + +/obj/item/weapon/computer_hardware/nano_printer/Destroy() + if(holder2 && (holder2.nano_printer == src)) + holder2.nano_printer = null + holder2 = null + return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm new file mode 100644 index 0000000000..ecf0bab6f6 --- /dev/null +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -0,0 +1,100 @@ +var/global/ntnet_card_uid = 1 + +/obj/item/weapon/computer_hardware/network_card/ + name = "basic NTNet network card" + desc = "A basic network card for usage with standard NTNet frequencies." + power_usage = 50 + origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1) + critical = 0 + icon_state = "netcard_basic" + hardware_size = 1 + var/identification_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user. + var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user. + var/long_range = 0 + var/ethernet = 0 // Hard-wired, therefore always on, ignores NTNet wireless checks. + malfunction_probability = 1 + +/obj/item/weapon/computer_hardware/network_card/diagnostics(var/mob/user) + ..() + to_chat(user, "NIX Unique ID: [identification_id]") + to_chat(user, "NIX User Tag: [identification_string]") + to_chat(user, "Supported protocols:") + to_chat(user, "511.m SFS (Subspace) - Standard Frequency Spread") + if(long_range) + to_chat(user, "511.n WFS/HB (Subspace) - Wide Frequency Spread/High Bandiwdth") + if(ethernet) + to_chat(user, "OpenEth (Physical Connection) - Physical network connection port") + +/obj/item/weapon/computer_hardware/network_card/New(var/l) + ..(l) + identification_id = ntnet_card_uid + ntnet_card_uid++ + +/obj/item/weapon/computer_hardware/network_card/advanced + name = "advanced NTNet network card" + desc = "An advanced network card for usage with standard NTNet frequencies. It's transmitter is strong enough to connect even when far away." + long_range = 1 + origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2) + power_usage = 100 // Better range but higher power usage. + icon_state = "netcard_advanced" + hardware_size = 1 + +/obj/item/weapon/computer_hardware/network_card/wired + name = "wired NTNet network card" + desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection." + ethernet = 1 + origin_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3) + power_usage = 100 // Better range but higher power usage. + icon_state = "netcard_ethernet" + hardware_size = 3 + +/obj/item/weapon/computer_hardware/network_card/Destroy() + if(holder2 && (holder2.network_card == src)) + holder2.network_card = null + holder2 = null + return ..() + +// Returns a string identifier of this network card +/obj/item/weapon/computer_hardware/network_card/proc/get_network_tag() + return "[identification_string] (NID [identification_id])" + +/obj/item/weapon/computer_hardware/network_card/proc/is_banned() + return ntnet_global.check_banned(identification_id) + +// 0 - No signal, 1 - Low signal, 2 - High signal. 3 - Wired Connection +/obj/item/weapon/computer_hardware/network_card/proc/get_signal(var/specific_action = 0) + if(!holder2) // Hardware is not installed in anything. No signal. How did this even get called? + return 0 + + if(!enabled) + return 0 + + if(!check_functionality() || !ntnet_global || is_banned()) + return 0 + + if(ethernet) // Computer is connected via wired connection. + return 3 + + if(!ntnet_global.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal. + return 0 + + if(holder2) + var/turf/T = get_turf(holder2) + if(!istype(T)) //no reception in nullspace + return 0 + if(T.z in using_map.station_levels) + // Computer is on station. Low/High signal depending on what type of network card you have + if(long_range) + return 2 + else + return 1 + if(T.z in using_map.contact_levels) //not on station, but close enough for radio signal to travel + if(long_range) // Computer is not on station, but it has upgraded network card. Low signal. + return 1 + + return 0 // Computer is not on station and does not have upgraded network card. No signal. + +/obj/item/weapon/computer_hardware/network_card/Destroy() + if(holder2 && (holder2.network_card == src)) + holder2.network_card = null + ..() diff --git a/code/modules/modular_computers/hardware/portable_hard_drive.dm b/code/modules/modular_computers/hardware/portable_hard_drive.dm new file mode 100644 index 0000000000..9a0feb3653 --- /dev/null +++ b/code/modules/modular_computers/hardware/portable_hard_drive.dm @@ -0,0 +1,37 @@ +// These are basically USB data sticks and may be used to transfer files between devices +/obj/item/weapon/computer_hardware/hard_drive/portable/ + name = "basic data crystal" + desc = "Small crystal with imprinted photonic circuits that can be used to store data. Its capacity is 16 GQ." + power_usage = 10 + icon_state = "flashdrive_basic" + hardware_size = 1 + max_capacity = 16 + origin_tech = list(TECH_DATA = 1) + +/obj/item/weapon/computer_hardware/hard_drive/portable/advanced + name = "advanced data crystal" + desc = "Small crystal with imprinted high-density photonic circuits that can be used to store data. Its capacity is 64 GQ." + power_usage = 20 + icon_state = "flashdrive_advanced" + hardware_size = 1 + max_capacity = 64 + origin_tech = list(TECH_DATA = 2) + +/obj/item/weapon/computer_hardware/hard_drive/portable/super + name = "super data crystal" + desc = "Small crystal with imprinted ultra-density photonic circuits that can be used to store data. Its capacity is 256 GQ." + power_usage = 40 + icon_state = "flashdrive_super" + hardware_size = 1 + max_capacity = 256 + origin_tech = list(TECH_DATA = 4) + +/obj/item/weapon/computer_hardware/hard_drive/portable/New() + ..() + stored_files = list() + recalculate_size() + +/obj/item/weapon/computer_hardware/hard_drive/portable/Destroy() + if(holder2 && (holder2.portable_drive == src)) + holder2.portable_drive = null + return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/processor_unit.dm b/code/modules/modular_computers/hardware/processor_unit.dm new file mode 100644 index 0000000000..9ed7ab40ac --- /dev/null +++ b/code/modules/modular_computers/hardware/processor_unit.dm @@ -0,0 +1,46 @@ +// CPU that allows the computer to run programs. +// Better CPUs are obtainable via research and can run more programs on background. + +/obj/item/weapon/computer_hardware/processor_unit + name = "standard processor" + desc = "A standard CPU used in most computers. It can run up to three programs simultaneously." + icon_state = "cpu_normal" + hardware_size = 2 + power_usage = 50 + critical = 1 + malfunction_probability = 1 + origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) + + var/max_idle_programs = 2 // 2 idle, + 1 active = 3 as said in description. + +/obj/item/weapon/computer_hardware/processor_unit/small + name = "standard microprocessor" + desc = "A standard miniaturised CPU used in portable devices. It can run up to two programs simultaneously." + icon_state = "cpu_small" + hardware_size = 1 + power_usage = 25 + max_idle_programs = 1 + origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + +/obj/item/weapon/computer_hardware/processor_unit/photonic + name = "photonic processor" + desc = "An advanced experimental CPU that uses photonic core instead of regular circuitry. It can run up to five programs simultaneously, but uses a lot of power." + icon_state = "cpu_normal_photonic" + hardware_size = 2 + power_usage = 250 + max_idle_programs = 4 + origin_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4) + +/obj/item/weapon/computer_hardware/processor_unit/photonic/small + name = "photonic microprocessor" + desc = "An advanced miniaturised CPU for use in portable devices. It uses photonic core instead of regular circuitry. It can run up to three programs simultaneously." + icon_state = "cpu_small_photonic" + hardware_size = 1 + power_usage = 75 + max_idle_programs = 2 + origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) + +/obj/item/weapon/computer_hardware/processor_unit/Destroy() + if(holder2 && (holder2.processor_unit == src)) + holder2.processor_unit = null + return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/tesla_link.dm b/code/modules/modular_computers/hardware/tesla_link.dm new file mode 100644 index 0000000000..b23bb963af --- /dev/null +++ b/code/modules/modular_computers/hardware/tesla_link.dm @@ -0,0 +1,14 @@ +/obj/item/weapon/computer_hardware/tesla_link + name = "tesla link" + desc = "An advanced tesla link that wirelessly recharges connected device from nearby area power controller." + critical = 0 + enabled = 1 + icon_state = "teslalink" + hardware_size = 1 + origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) + var/passive_charging_rate = 250 // W + +/obj/item/weapon/computer_hardware/tesla_link/Destroy() + if(holder2 && (holder2.tesla_link == src)) + holder2.tesla_link = null + return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm new file mode 100644 index 0000000000..ab60291f55 --- /dev/null +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -0,0 +1,308 @@ +// A vendor machine for modular computer portable devices - Laptops and Tablets + +/obj/machinery/lapvend + name = "computer vendor" + desc = "A vending machine with a built-in microfabricator, capable of dispensing various NT-branded computers." + icon = 'icons/obj/vending.dmi' + icon_state = "robotics" + layer = OBJ_LAYER - 0.1 + anchored = 1 + density = 1 + + // The actual laptop/tablet + var/obj/item/modular_computer/laptop/fabricated_laptop = null + var/obj/item/modular_computer/tablet/fabricated_tablet = null + + // Utility vars + var/state = 0 // 0: Select device type, 1: Select loadout, 2: Payment, 3: Thankyou screen + var/devtype = 0 // 0: None(unselected), 1: Laptop, 2: Tablet + var/total_price = 0 // Price of currently vended device. + + // Device loadout + var/dev_cpu = 1 // 1: Default, 2: Upgraded + var/dev_battery = 1 // 1: Default, 2: Upgraded, 3: Advanced + var/dev_disk = 1 // 1: Default, 2: Upgraded, 3: Advanced + var/dev_netcard = 0 // 0: None, 1: Basic, 2: Long-Range + var/dev_tesla = 0 // 0: None, 1: Standard + var/dev_nanoprint = 0 // 0: None, 1: Standard + var/dev_card = 0 // 0: None, 1: Standard + +// Removes all traces of old order and allows you to begin configuration from scratch. +/obj/machinery/lapvend/proc/reset_order() + state = 0 + devtype = 0 + if(fabricated_laptop) + qdel(fabricated_laptop) + fabricated_laptop = null + if(fabricated_tablet) + qdel(fabricated_tablet) + fabricated_tablet = null + dev_cpu = 1 + dev_battery = 1 + dev_disk = 1 + dev_netcard = 0 + dev_tesla = 0 + dev_nanoprint = 0 + dev_card = 0 + +// Recalculates the price and optionally even fabricates the device. +/obj/machinery/lapvend/proc/fabricate_and_recalc_price(var/fabricate = 0) + total_price = 0 + if(devtype == 1) // Laptop, generally cheaper to make it accessible for most station roles + if(fabricate) + fabricated_laptop = new(src) + total_price = 99 + switch(dev_cpu) + if(1) + if(fabricate) + fabricated_laptop.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(fabricated_laptop) + if(2) + if(fabricate) + fabricated_laptop.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(fabricated_laptop) + total_price += 299 + switch(dev_battery) + if(1) // Basic(750C) + if(fabricate) + fabricated_laptop.battery_module = new/obj/item/weapon/computer_hardware/battery_module(fabricated_laptop) + if(2) // Upgraded(1100C) + if(fabricate) + fabricated_laptop.battery_module = new/obj/item/weapon/computer_hardware/battery_module/advanced(fabricated_laptop) + total_price += 199 + if(3) // Advanced(1500C) + if(fabricate) + fabricated_laptop.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(fabricated_laptop) + total_price += 499 + switch(dev_disk) + if(1) // Basic(128GQ) + if(fabricate) + fabricated_laptop.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive(fabricated_laptop) + if(2) // Upgraded(256GQ) + if(fabricate) + fabricated_laptop.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/advanced(fabricated_laptop) + total_price += 99 + if(3) // Advanced(512GQ) + if(fabricate) + fabricated_laptop.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(fabricated_laptop) + total_price += 299 + switch(dev_netcard) + if(1) // Basic(Short-Range) + if(fabricate) + fabricated_laptop.network_card = new/obj/item/weapon/computer_hardware/network_card(fabricated_laptop) + total_price += 99 + if(2) // Advanced (Long Range) + if(fabricate) + fabricated_laptop.network_card = new/obj/item/weapon/computer_hardware/network_card/advanced(fabricated_laptop) + total_price += 299 + if(dev_tesla) + total_price += 399 + if(fabricate) + fabricated_laptop.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop) + if(dev_nanoprint) + total_price += 99 + if(fabricate) + fabricated_laptop.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(fabricated_laptop) + if(dev_card) + total_price += 199 + if(fabricate) + fabricated_laptop.card_slot = new/obj/item/weapon/computer_hardware/card_slot(fabricated_laptop) + + return total_price + else if(devtype == 2) // Tablet, more expensive, not everyone could probably afford this. + if(fabricate) + fabricated_tablet = new(src) + fabricated_tablet.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(fabricated_tablet) + total_price = 199 + switch(dev_battery) + if(1) // Basic(300C) + if(fabricate) + fabricated_tablet.battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(fabricated_tablet) + if(2) // Upgraded(500C) + if(fabricate) + fabricated_tablet.battery_module = new/obj/item/weapon/computer_hardware/battery_module/micro(fabricated_tablet) + total_price += 199 + if(3) // Advanced(750C) + if(fabricate) + fabricated_tablet.battery_module = new/obj/item/weapon/computer_hardware/battery_module(fabricated_tablet) + total_price += 499 + switch(dev_disk) + if(1) // Basic(32GQ) + if(fabricate) + fabricated_tablet.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(fabricated_tablet) + if(2) // Upgraded(64GQ) + if(fabricate) + fabricated_tablet.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(fabricated_tablet) + total_price += 99 + if(3) // Advanced(128GQ) + if(fabricate) + fabricated_tablet.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive(fabricated_tablet) + total_price += 299 + switch(dev_netcard) + if(1) // Basic(Short-Range) + if(fabricate) + fabricated_tablet.network_card = new/obj/item/weapon/computer_hardware/network_card(fabricated_tablet) + total_price += 99 + if(2) // Advanced (Long Range) + if(fabricate) + fabricated_tablet.network_card = new/obj/item/weapon/computer_hardware/network_card/advanced(fabricated_tablet) + total_price += 299 + if(dev_nanoprint) + total_price += 99 + if(fabricate) + fabricated_tablet.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(fabricated_tablet) + if(dev_card) + total_price += 199 + if(fabricate) + fabricated_tablet.card_slot = new/obj/item/weapon/computer_hardware/card_slot(fabricated_tablet) + if(dev_tesla) + total_price += 399 + if(fabricate) + fabricated_tablet.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_tablet) + return total_price + return 0 + + + + + +/obj/machinery/lapvend/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["pick_device"]) + if(state) // We've already picked a device type + return 0 + devtype = text2num(href_list["pick_device"]) + state = 1 + fabricate_and_recalc_price(0) + return 1 + if(href_list["clean_order"]) + reset_order() + return 1 + if((state != 1) && devtype) // Following IFs should only be usable when in the Select Loadout mode + return 0 + if(href_list["confirm_order"]) + state = 2 // Wait for ID swipe for payment processing + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_cpu"]) + dev_cpu = text2num(href_list["hw_cpu"]) + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_battery"]) + dev_battery = text2num(href_list["hw_battery"]) + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_disk"]) + dev_disk = text2num(href_list["hw_disk"]) + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_netcard"]) + dev_netcard = text2num(href_list["hw_netcard"]) + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_tesla"]) + dev_tesla = text2num(href_list["hw_tesla"]) + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_nanoprint"]) + dev_nanoprint = text2num(href_list["hw_nanoprint"]) + fabricate_and_recalc_price(0) + return 1 + if(href_list["hw_card"]) + dev_card = text2num(href_list["hw_card"]) + fabricate_and_recalc_price(0) + return 1 + return 0 + +/obj/machinery/lapvend/attack_hand(var/mob/user) + ui_interact(user) + +/obj/machinery/lapvend/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + if(stat & (BROKEN | NOPOWER | MAINT)) + if(ui) + ui.close() + return 0 + + var/list/data[0] + data["state"] = state + if(state == 1) + data["devtype"] = devtype + data["hw_battery"] = dev_battery + data["hw_disk"] = dev_disk + data["hw_netcard"] = dev_netcard + data["hw_tesla"] = dev_tesla + data["hw_nanoprint"] = dev_nanoprint + data["hw_card"] = dev_card + data["hw_cpu"] = dev_cpu + if(state == 1 || state == 2) + data["totalprice"] = total_price + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "computer_fabricator.tmpl", "Personal Computer Vendor", 500, 400) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + +obj/machinery/lapvend/attackby(obj/item/weapon/W as obj, mob/user as mob) + var/obj/item/weapon/card/id/I = W.GetID() + // Awaiting payment state + if(state == 2) + if(process_payment(I,W)) + fabricate_and_recalc_price(1) + if((devtype == 1) && fabricated_laptop) + if(fabricated_laptop.battery_module) + fabricated_laptop.battery_module.charge_to_full() + fabricated_laptop.forceMove(src.loc) + fabricated_laptop.screen_on = 0 + fabricated_laptop.anchored = 0 + fabricated_laptop.update_icon() + fabricated_laptop.update_verbs() + fabricated_laptop = null + else if((devtype == 2) && fabricated_tablet) + if(fabricated_tablet.battery_module) + fabricated_tablet.battery_module.charge_to_full() + fabricated_tablet.forceMove(src.loc) + fabricated_tablet.update_verbs() + fabricated_tablet = null + ping("Enjoy your new product!") + state = 3 + return 1 + return 0 + return ..() + + +// Simplified payment processing, returns 1 on success. +/obj/machinery/lapvend/proc/process_payment(var/obj/item/weapon/card/id/I, var/obj/item/ID_container) + if(I==ID_container || ID_container == null) + visible_message("\The [usr] swipes \the [I] through \the [src].") + else + visible_message("\The [usr] swipes \the [ID_container] through \the [src].") + var/datum/money_account/customer_account = get_account(I.associated_account_number) + if (!customer_account || customer_account.suspended) + ping("Connection error. Unable to connect to account.") + return 0 + + if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) + var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2) + + if(!customer_account) + ping("Unable to access account: incorrect credentials.") + return 0 + + if(total_price > customer_account.money) + ping("Insufficient funds in account.") + return 0 + else + customer_account.money -= total_price + var/datum/transaction/T = new() + T.target_name = "Computer Manufacturer (via [src.name])" + T.purpose = "Purchase of [(devtype == 1) ? "laptop computer" : "tablet microcomputer"]." + T.amount = total_price + T.source_terminal = src.name + T.date = current_date_string + T.time = stationtime2text() + customer_account.transaction_log.Add(T) + return 1 \ No newline at end of file diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index 3d790b1194..fd2ed900f2 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -100,7 +100,7 @@ return generate_data(check_whitelist, whitelist, blacklist) - var/data[0] + var/list/data = host.initial_data() data["specimen"] = owner.species.name data["gender"] = owner.gender diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 8ced14f4c5..90c213da1c 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,16 +1,64 @@ /datum/nano_module var/name - var/host + var/datum/host + var/datum/topic_manager/topic_manager + var/list/using_access -/datum/nano_module/New(var/host) - src.host = host - -/datum/nano_module/Destroy() - host = null - return ..() +/datum/nano_module/New(var/datum/host, var/topic_manager) + ..() + src.host = host.nano_host() + src.topic_manager = topic_manager /datum/nano_module/nano_host() return host ? host : src /datum/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) return CanUseTopic(usr, state) == STATUS_INTERACTIVE + +/datum/nano_module/proc/check_eye(var/mob/user) + return -1 + +/datum/nano_module/proc/check_access(var/mob/user, var/access) + if(!access) + return 1 + + if(using_access) + if(access in using_access) + return 1 + else + return 0 + + if(!istype(user)) + return 0 + + var/obj/item/weapon/card/id/I = user.GetIdCard() + if(!I) + return 0 + + if(access in I.access) + return 1 + + return 0 + +/datum/nano_module/Topic(href, href_list) + if(topic_manager && topic_manager.Topic(href, href_list)) + return TRUE + . = ..() + +/datum/nano_module/proc/print_text(var/text, var/mob/user) + var/obj/item/modular_computer/MC = nano_host() + if(istype(MC)) + if(!MC.nano_printer) + to_chat(user, "Error: No printer detected. Unable to print document.") + return + + if(!MC.nano_printer.print_text(text)) + to_chat(user, "Error: Printer was unable to print the document. It may be out of paper.") + else + to_chat(user, "Error: Unable to detect compatible printer interface. Are you running NTOSv2 compatible system?") + +/datum/proc/initial_data() + return list() + +/datum/proc/update_layout() + return FALSE diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 43f98e3361..2b3dc81b99 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -401,6 +401,11 @@ nanoui is used to open and update nano browser uis if(!user.client) return + // An attempted fix to UIs sometimes locking up spamming runtime errors due to src_object being null for whatever reason. + // This hard-deletes the UI, preventing the device that uses the UI from being locked up permanently. + if(!src_object) + del(src) + var/window_size = "" if (width && height) window_size = "size=[width]x[height];" diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index e436497fc5..c41d49aff5 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -90,6 +90,10 @@ var/datum/looping_sound/supermatter/soundloop +/obj/machinery/power/supermatter/New() + ..() + uid = gl_uid++ + /obj/machinery/power/supermatter/Initialize() soundloop = new(list(src), TRUE) return ..() @@ -98,6 +102,34 @@ QDEL_NULL(soundloop) return ..() +/obj/machinery/power/supermatter/proc/get_status() + var/turf/T = get_turf(src) + if(!T) + return SUPERMATTER_ERROR + var/datum/gas_mixture/air = T.return_air() + if(!air) + return SUPERMATTER_ERROR + + if(grav_pulling || exploded) + return SUPERMATTER_DELAMINATING + + if(get_integrity() < 25) + return SUPERMATTER_EMERGENCY + + if(get_integrity() < 50) + return SUPERMATTER_DANGER + + if((get_integrity() < 100) || (air.temperature > CRITICAL_TEMPERATURE)) + return SUPERMATTER_WARNING + + if(air.temperature > (CRITICAL_TEMPERATURE * 0.8)) + return SUPERMATTER_NOTIFY + + if(power > 5) + return SUPERMATTER_NORMAL + return SUPERMATTER_INACTIVE + + /obj/machinery/power/supermatter/proc/explode() message_admins("Supermatter exploded at ([x],[y],[z] - JMP)",0,1) log_game("SUPERMATTER([x],[y],[z]) Exploded. Power:[power], Oxygen:[oxygen], Damage:[damage], Integrity:[get_integrity()]") diff --git a/code/modules/research/designs/circuits.dm b/code/modules/research/designs/circuits.dm index 6c79366e66..28fcff85dd 100644 --- a/code/modules/research/designs/circuits.dm +++ b/code/modules/research/designs/circuits.dm @@ -579,6 +579,13 @@ CIRCUITS BELOW build_path = /obj/item/weapon/circuitboard/shield_cap sort_string = "VAAAC" +/datum/design/circuit/ntnet_relay + name = "NTNet Quantum Relay" + id = "ntnet_relay" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/ntnet_relay + sort_string = "WAAAA" + /datum/design/circuit/aicore name = "AI core" id = "aicore" diff --git a/code/modules/research/designs/modular_computer.dm b/code/modules/research/designs/modular_computer.dm new file mode 100644 index 0000000000..5bb19b0be6 --- /dev/null +++ b/code/modules/research/designs/modular_computer.dm @@ -0,0 +1,233 @@ +// Modular computer components +// Hard drives +/datum/design/item/modularcomponent/disk/normal + name = "basic hard drive" + id = "hdd_basic" + req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100) + build_path = /obj/item/weapon/computer_hardware/hard_drive/ + sort_string = "VBAAA" + +/datum/design/item/modularcomponent/disk/advanced + name = "advanced hard drive" + id = "hdd_advanced" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200) + build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced + sort_string = "VBAAB" + +/datum/design/item/modularcomponent/disk/super + name = "super hard drive" + id = "hdd_super" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 400) + build_path = /obj/item/weapon/computer_hardware/hard_drive/super + sort_string = "VBAAC" + +/datum/design/item/modularcomponent/disk/cluster + name = "cluster hard drive" + id = "hdd_cluster" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 16000, "glass" = 800) + build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster + sort_string = "VBAAD" + +/datum/design/item/modularcomponent/disk/small + name = "small hard drive" + id = "hdd_small" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200) + build_path = /obj/item/weapon/computer_hardware/hard_drive/small + sort_string = "VBAAE" + +/datum/design/item/modularcomponent/disk/micro + name = "micro hard drive" + id = "hdd_micro" + req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100) + build_path = /obj/item/weapon/computer_hardware/hard_drive/micro + sort_string = "VBAAF" + +// Network cards +/datum/design/item/modularcomponent/netcard/basic + name = "basic network card" + id = "netcard_basic" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 100) + build_path = /obj/item/weapon/computer_hardware/network_card + sort_string = "VBAAG" + +/datum/design/item/modularcomponent/netcard/advanced + name = "advanced network card" + id = "netcard_advanced" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200) + build_path = /obj/item/weapon/computer_hardware/network_card/advanced + sort_string = "VBAAH" + +/datum/design/item/modularcomponent/netcard/wired + name = "wired network card" + id = "netcard_wired" + req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 400) + build_path = /obj/item/weapon/computer_hardware/network_card/wired + sort_string = "VBAAI" + +// Data crystals (USB flash drives) +/datum/design/item/modularcomponent/portabledrive/basic + name = "basic data crystal" + id = "portadrive_basic" + req_tech = list(TECH_DATA = 1) + build_type = IMPRINTER + materials = list("glass" = 8000) + build_path = /obj/item/weapon/computer_hardware/hard_drive/portable + sort_string = "VBAAJ" + +/datum/design/item/modularcomponent/portabledrive/advanced + name = "advanced data crystal" + id = "portadrive_advanced" + req_tech = list(TECH_DATA = 2) + build_type = IMPRINTER + materials = list("glass" = 16000) + build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced + sort_string = "VBAAK" + +/datum/design/item/modularcomponent/portabledrive/super + name = "super data crystal" + id = "portadrive_super" + req_tech = list(TECH_DATA = 4) + build_type = IMPRINTER + materials = list("glass" = 32000) + build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super + sort_string = "VBAAL" + +// Card slot +/datum/design/item/modularcomponent/cardslot + name = "RFID card slot" + id = "cardslot" + req_tech = list(TECH_DATA = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 3000) + build_path = /obj/item/weapon/computer_hardware/card_slot + sort_string = "VBAAM" + +// Nano printer +/datum/design/item/modularcomponent/nanoprinter + name = "nano printer" + id = "nanoprinter" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 3000) + build_path = /obj/item/weapon/computer_hardware/nano_printer + sort_string = "VBAAN" + +// Tesla Link +/datum/design/item/modularcomponent/teslalink + name = "tesla link" + id = "teslalink" + req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 10000) + build_path = /obj/item/weapon/computer_hardware/tesla_link + sort_string = "VBAAO" + +// Batteries +/datum/design/item/modularcomponent/battery/normal + name = "standard battery module" + id = "bat_normal" + req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 2000) + build_path = /obj/item/weapon/computer_hardware/battery_module + sort_string = "VBAAP" + +/datum/design/item/modularcomponent/battery/advanced + name = "advanced battery module" + id = "bat_advanced" + req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 4000) + build_path = /obj/item/weapon/computer_hardware/battery_module/advanced + sort_string = "VBAAQ" + +/datum/design/item/modularcomponent/battery/super + name = "super battery module" + id = "bat_super" + req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 8000) + build_path = /obj/item/weapon/computer_hardware/battery_module/super + sort_string = "VBAAR" + +/datum/design/item/modularcomponent/battery/ultra + name = "ultra battery module" + id = "bat_ultra" + req_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 16000) + build_path = /obj/item/weapon/computer_hardware/battery_module/ultra + sort_string = "VBAAS" + +/datum/design/item/modularcomponent/battery/nano + name = "nano battery module" + id = "bat_nano" + req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 2000) + build_path = /obj/item/weapon/computer_hardware/battery_module/nano + sort_string = "VBAAT" + +/datum/design/item/modularcomponent/battery/micro + name = "micro battery module" + id = "bat_micro" + req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 4000) + build_path = /obj/item/weapon/computer_hardware/battery_module/micro + sort_string = "VBAAU" + +// Processor unit +/datum/design/item/modularcomponent/cpu/ + name = "computer processor unit" + id = "cpu_normal" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 8000) + build_path = /obj/item/weapon/computer_hardware/processor_unit + sort_string = "VBAAV" + +/datum/design/item/modularcomponent/cpu/small + name = "computer microprocessor unit" + id = "cpu_small" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 4000) + build_path = /obj/item/weapon/computer_hardware/processor_unit/small + sort_string = "VBAAW" + +/datum/design/item/modularcomponent/cpu/photonic + name = "computer photonic processor unit" + id = "pcpu_normal" + req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 32000, glass = 8000) + build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic + sort_string = "VBAAX" + +/datum/design/item/modularcomponent/cpu/photonic/small + name = "computer photonic microprocessor unit" + id = "pcpu_small" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) + build_type = IMPRINTER + materials = list(DEFAULT_WALL_MATERIAL = 16000, glass = 4000) + build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small + sort_string = "VBAAY" diff --git a/html/changelogs/Novacat - modularcomputers.yml b/html/changelogs/Novacat - modularcomputers.yml new file mode 100644 index 0000000000..1e21807f7f --- /dev/null +++ b/html/changelogs/Novacat - modularcomputers.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Novacat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Ports initial infrastructure for modular computers from Baystation." + - rscadd: "Cameras now have a slight static when viewing through them." + - rscadd: "Adds Digital Warrant Program, to set warrants. Comes with a device." + - rscadd: "Adds Supermatter Monitor program." diff --git a/html/images/redntlogo.png b/html/images/redntlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c03fa8b60a6972109ad2c7ef91866d97d94411d GIT binary patch literal 5853 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/airestore.png b/icons/NTOS/airestore.png deleted file mode 100644 index d8e5207bfbf25919fcb8f77221a3ef9f93964ec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3096 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 Y?bfyvJpCum7}{O%PxVSwVPLQZ08WTN_y7O^ diff --git a/icons/NTOS/battery_icons/batt_40.gif b/icons/NTOS/battery_icons/batt_40.gif deleted file mode 100644 index 5d03a30c18ec5c9a219d559d492b584d01eb848b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmZ?wbhEHb6krfw*u($=2M!!aNJ#kc1I&RDivPL&TtkAL9RpmA^bD98f#QlkSva{E zSQvCbYCzfwU>9}5^V=8D%%-BhY>C8T}5D?ewRX3RPLp1*rL L3p`}h7#OSpBbp+A diff --git a/icons/NTOS/battery_icons/batt_5.gif b/icons/NTOS/battery_icons/batt_5.gif deleted file mode 100644 index eddcc6ae824ddf8bb5414f485778c83c81404cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmZ?wbhEHb6krfwIK%(~KNuJi5)yv=U^sB#09XJ-DE{a6a}5c0b_{Se(lcOY1PT3Q z;WT1kWzYf1gS0a+Yeek2^UuJGbJgCmMulDf8;;ecEX_%g6w7!u^UVvc0_*iU%N_^6 z|G$p~n`RrJ=5-HFYDi05X*_FqpIdBE=tmbq+n&S2>>z2g)7t5X28VNC2 F0|2HGVM+i1 diff --git a/icons/NTOS/battery_icons/batt_60.gif b/icons/NTOS/battery_icons/batt_60.gif deleted file mode 100644 index 2a159b8e3c3c94aad428598ed1936c45cfa78b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmZ?wbhEHb6krfw*u($=2M!!aNJ#kc1I&RDivPL&TtkAL9RpmA^bD98f#QlkSva{E zSQvCbYCzfwUq0t*;2;>5d@H%^U@(9Evfr**rj{yYBom@Zwyxw~X;%wLJ5JN|gvr>7T7i6IV6e+_$Rd(43WtHP(L* KBp5IIU8$qpxpmZTq=44OUKoeN)`nw7qaZSx1AvYVF- W=D$C3x}e9UHB~9oYJM*ZgEasEPbRJa diff --git a/icons/NTOS/borgcontrol.png b/icons/NTOS/borgcontrol.png deleted file mode 100644 index 63e0815954c4e98b72c913f6dfc39e988fe8724f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3154 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 diff --git a/icons/NTOS/cardcomp.png b/icons/NTOS/cardcomp.png deleted file mode 100644 index e7df0ab20711aa98becf6e4d68babb77d6fb5434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3174 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 s-=#TFJ4cRU*ni7Afli diff --git a/icons/NTOS/comms.png b/icons/NTOS/comms.png deleted file mode 100644 index e089889d93027a49946cea67bb6ccadee40fb0f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3157 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 diff --git a/icons/NTOS/copyfile.png b/icons/NTOS/copyfile.png deleted file mode 100644 index 50c10b375787fc407b5da24a4347bd74ab500008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3030 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 CT3yEg diff --git a/icons/NTOS/exocontrol.png b/icons/NTOS/exocontrol.png deleted file mode 100644 index 101f32e44db9031f6b1e7e875660eab5c524dff5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3355 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 diff --git a/icons/NTOS/file.png b/icons/NTOS/file.png deleted file mode 100644 index 05556e01f807b5a6adc82e1b8fdb6f6113940a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2984 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 Y0NR3N*e@5|c>n+a07*qoM6N<$f@!swDF6Tf diff --git a/icons/NTOS/monitoring.png b/icons/NTOS/monitoring.png deleted file mode 100644 index a94910e48a0f72672ba355067f436ecd3e73a1bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3011 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 FV1hPtm+}Ar diff --git a/icons/NTOS/movefile.png b/icons/NTOS/movefile.png deleted file mode 100644 index 5b31c6c2a8811bc725b45f17cfc33db07aa357c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2985 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 diff --git a/icons/NTOS/ntos.png b/icons/NTOS/ntos.png deleted file mode 100644 index 8b9d735cc99d9f2053fd024bc4b7a04ca73ae97e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67090 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 diff --git a/icons/NTOS/pda.png b/icons/NTOS/pda.png deleted file mode 100644 index c6b0bb00fb3d4b956b9a6b8992c6e01670706925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2953 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 diff --git a/icons/NTOS/power.png b/icons/NTOS/power.png deleted file mode 100644 index b2e4cc837f15e6262696d5c0272f359fb0aed75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3055 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 diff --git a/icons/NTOS/prison.png b/icons/NTOS/prison.png deleted file mode 100644 index a846fe00411518853313b1f3bef444b76d8bb57d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3117 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 JPDHLkV1m49a6141 diff --git a/icons/NTOS/records.png b/icons/NTOS/records.png deleted file mode 100644 index eaaf68e50d1a5b40661ca43194a52bd1f18536c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3069 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 LNkvXXu0mjfkIS_l diff --git a/icons/NTOS/research.png b/icons/NTOS/research.png deleted file mode 100644 index 5ebd63aafccaa9616dee30a13ea4c65ebb3e440f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3120 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 KMNUMnLSTX`{Kpgk diff --git a/icons/NTOS/server.png b/icons/NTOS/server.png deleted file mode 100644 index 6d96b1141398bfed50fb6e890b5725c20d58ec2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3195 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 diff --git a/icons/NTOS/tb_close.png b/icons/NTOS/tb_close.png deleted file mode 100644 index b99a6d81542fd3d4def1b7093c8550bfa1c7502f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453 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 XNA`leI!U!S00000NkvXXu0mjfq$U*( diff --git a/icons/effects/static.dmi b/icons/effects/static.dmi index 6189ae1e3363f2937dd0ff33037577c856cb2e73..63f6a1e6f6bc68fd35674f5e91da7cf3028cd07b 100644 GIT binary patch delta 23609 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 Qr~m)}07*qoM6N<$f`IGp=Kufz delta 23296 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 z z0uqBHP)UeCf`K7>(f%Kne|fiUVCWLK{z|zy0GV9}_!306?Mz3RL&ic}6s9Q2xLQk= zV!l-BSHhPLy&+3VTUeuK;b@-SFY|O3bE9`?UH4*6pP*ky zW~qt)81H@9^m!8$nrbTEI>>0IgH~$5);4J3Rl1zChl}Xv7f?Wbe`*xE-+2n6%idVD zqRo5JuPVq)$Mf&w^Jz~ZTNaKn`URHO5rw{d66$*j+=JVo0Jslop6BKB1CVE2SVAl- zxKu%_Q_Xx#fqvnCwDi!tzqP#7x(N?FfM5_paJ+Ajo~&VRM3e*yf|HNG-c)Y5t- zDC9My3seDIQ(j6ie@EYzkeNY$w*-b#kmbCWG`GroZL*NoyGnl=SIos6DBRotdF)}? z#{yyMSuiXEBCmtOtukNUftIr`prTi4zG~4E5YG7<1K28;^Z*?r9yI z2Cd$|+9ag4=BwjlGtkMUqr zI>${A^ko{Y#k{EM0WpMLre{I8+-l}PA7bTCrY|i^JF6ETo1U2-f*!(v@VPq}l`CUs4<$XGEM+h8! z>kB4Yvn`O|K1Cmvzyo5U%3wVE$!g~UUeKQT&tLrn9v>=y*rqzZ+Q^3`17^enBLn7t%&*>%{XNF7_5I_33#;&qQiYQ z9z46=w>VAA&Cq<;gEj7nQMQNUCZa5O^ZXD_y|NFK0<7XO?Sa?=b@kjk@%?R2ObYEi z^-+=5e;4iH9M9bVwaG6a&v+7abUMHTHo?R0H*o(SHhiH9kG&lF(jQ@4eDS`CU*IxJ zak#c7-#Rw&h7P#Ks12SJo-Aa@1yA$#dc0R|k{h5a<9VTH9gsa?CfZ!|6b`09h3?c7 zUq$fl;@c9y_rSd)ll3|Z-?kL66&F$Gd>N#ve+kI$pp`|?Mf5KAssyMzv8M09GicV+ zT~c}K1l`*t`s9RCI&@hIc{f3KhJ5op<6fv}(M8Pn zWy}Ks_&g&76`8t$jHXoaj{01icesVfgGZCAj3(l_{5_3~hF=2kBS<7G$f(v{P9`XM ze=fv#m%&XSDH|A$(w{Hy+XRU~;6;1o{R<#b3O~8F(dKB@=<6CKdkc|&UfN!XiC#q_ zQ7KA#A_qI3QKaTt^s8ng+$nvYL5Zl1cPTRVCuC%Bh3Jm&4@vwbidVPcI?BBclBb+i0kGc81e z$_HMKcZ|`G9#*9O)TXG;6w5)~@b@J0Q)h$1|eWh4Rkb`kwf^=EF}!ub1bB z`m0Fo1N5VfXOMKehCa5yIDYH%5i-MO3#pxV>sI^gxd$h(4E}7b^iGuQB=l*tf3E8f zx?k=ozkH_L)BftRXFw&S&4;h!X>kVDn*Wtia}Sd=bsf3qzl;8?m(O>R{8qH2=WijS z*+=cWqb>1mt;bH&x4W3!FKTNE{fO~O^E1u6M4NX?-*s;#`l9IfiD>&jyI<*M;GQx@ zhHyOE?6aDAGK=JGo6T58p!=i6e`Cv5x;xH ze#OLei-bwSZqwm55lpRoXN=5ES31^w^F7^{q$&ovi*ooj-)RrjdZ>uOe^f@>g7+xB zZ5#cRy}G#Hm%qm#!)rl%Dr2iDKU1|2nr9?4xd$@&jpm(eNJg@Ta+sHACN^R-?pg2< z-NQiYB9duHlUWBhhvw@+^iN|Dqu#3DA82nL8Q`bSYMRvy`pizIXa$?qwHmc;l>a3Z z=}=S}V@~Xe}k*O>-+dwM$+X<)0R*=wO_Ae5?D&stu;_ExiYn}`QFgJ zy*V%*(b;^=mw1GJw|&-JwP0X+z7u3h+hVXo07!E&t_h(63FI>>ZO_IUOb9jc_x+gj zR=K$Y($06$Mok}_L9-WPZM(T?K5PH~4&+%?=wB>*=i03~cKzoeU?beOKc&dy1 z8T9)-_cWWGT2?38h~M|4y_cS5MWqXU7bcfB73vLWR`2}kPSeqW7l0p6lcD;rAh#)} z*<8VTZ^3{o1?AkZe@u(~?0vJJU>o6dnM`>W*Lmpf&pgdo^PUl%^N3L9ev_7L#j@qv@4+q+Wnquj|15gA2Qv6K7M1^; z=Kk-De)<_`M|HBy6b}RPUp)jeBy{H_()v^MW! zZEwfEmDzj0e|c0<$Hy_pf>l*;k?7?IE56K_?^@+j^YjE6JSQ4{7GwEj8KkN9yJAG~ z`GGMw>VeaIJL_o*ehmsqhn|2~cTo5j80dWIH0Lf^1iCq0cbCpUxJ9SQ{aW;67EH6$ zSmkyTk2o%$-9gY^q1*oi&r$@sOuffOx8=O2d-W42f3SQq1`KW(;~btjU0nOfdMF)` zSiEoEvbx>}r@LV*KJK|}zFlAEB`H(E9qVO?H%GKTjjIXJUU^fj{mD^w*5@*Lz#~iXj#`@{@{uAE@K~o`)d`nGF}JwgrLaR(bwR& zKw6ZmMVfbKMT@qoc~>-g5N)r5^j0l8Q>Cq`GL|7TZw2pa&DkCx!aZ6|M_qXdSzNRV>Sid~yfis1wMvW@4ugk-=j3QT1$TYag--LE}Guly6hu#%h z(PN(s(Axt8lccflAxhwafj~8IM){RB_-z|ZsgmTafS8)Usq(Pf&Y&&@ch#al3WQN$ zMlYagU_7<`S`zXOsLeh0z(xR>-D&ize+F(yPJ$IqZrd_(D)K~IR3*JwD!pZ<~rz6`%J-HU3Ix;-qygX zbanide(r#D`v;;7_5h7-A}X?3Vh_xLhjtg;t#SB3KDuQ-^=gbo83YU9ddm8<>a-@+ zve~sL*>a4#!dJI*xd;jhFO8NIe+8f&#`lGg`F3be7J46pLYpdI){@C>+1Z+dz6#Qk zthFl`$hauqtvT)YK$`hy(C`0hk9@oS?_Sa_1hp$E{sFG=_j+ncl16W#uQjM>!7ivt z-9Y;II(Sa~Mrw&-=s@Fl^pt?NF{vfC!7JC$*E+7DA9(lx$qcU=U)8Rvf7Y`d{agh7 zkn%6iV-ogKT8*@Tz0yY^#a;D&Sp?Qfzk3oshAl0FR*AZnD8YTm;IwPaI0Z#24QV0P zSz~E~rnH`d2GV>bQjCFa(Rcfv`eUdWzqzCVLa< zN3V3PN{hAMW0bg;=;scof0asO>{8$2|CMN~`g~FIhlSb)3tfMqLY!4EmRww&t349@Ks|@6jA~!Bp(_O$i)( zNGR@c(?D@zAbMmB(68$=Kr_TBC(2)ilfiVAX9#g$R{ps+yh~b&yaPmH^5E#1d&c= z^!2_48O0~-7h!;q732Esf0@pu&nkWQ=(Cx-6)@Ie z$urfcmW}RG>5Nv8V^6$>UizT*(bv?E3B=5SJ`AA}%DS`(S}xX|DN?-@v-0dRB4rMd zif5Dg^>w|f_BxKa9V*M+TEUKxJgTO;)pb-_*iib{#8^w)hoCT0bI_G?xDN^}f3r-v zRNaEV#u)B`f2f#epwRjUXw8%LPca5_el_NaD*GK9Q^G!hF)^~jO30TLQ!y|qP}8=j zy!#oXFg$iz32%GiS;%5qivoSSzQSuJ4u9n+F9jpN2%?z=rN_r07WEEDFfz?vA`5S5 zgKM)dfq_vHFn$69yu_&LAb!1Msw%W=(9G^ zdqh<&0JE{VR^mXth(2nwkHACeZ7?<+Pr)jY5~$}r>s@F*{#oWv!sm*m%j^)`uZaEr zf7t_zUbGZ*rg=LlbfGq69T0t9g35!|b`KN=9vN{1B+MLm;;oEg?0>{}u6u)f@$LG0 zuTc=&OQUA@C^po{5(e{eFt4|u_A(Ee1pyM=3i>4!g(d#U-Tw%tx8MZldFzBNJu^nK zZq@IUOYpMV43C5H>HptA#(66qyNJ!Vf8vDLd>n`VX<;HNKye)RFLn4hwf3%PPJBnv zywb?VaR|-F`=)~V!V*$<%@TEKIvCQ4CB)@iwE1g%uDN~3AOsxD3EOi|N3lM zXzUzO4mi5`OW{51vHuT)eiy;C!#})lnYd+9T+1@U<4`mkbJaoGI^kw7e~n;d7hpWh zYb3@7eA3!B6Z8F|w4;6S1;BG74D7Nq)8`GCIkgK46^|?+!Gk}IKuGtQSgW&`KfzAV z6+ZM$`~S+XDbVlw7~C`+mc6Cs(H6lOgJ#!b&_w>xhXca45%r3j`@5jIbrC!u7GhJ? z;G>V;H}g+{xz2x&|7W6af2THyGByoH$p5q46Y`P*74L%qR_}}fTNlWnswq!+Og&$N za~42t~M9JnMbf%FTFwHP&v%6O!_*%!%f* znx=(_c;*@WBvarW&q6JSo@QoQL{>rbW+T0>URf7vcQmK7h~hzU0NnxwpA#?EuYvg#e*0l_?`@%-Aw)g7P1-_GG8dnK+N5fYfAp)- zCtFC;4q`RFdmQ69f3<+uy=px1{bg_uE~9aYS>tAFzPATjsrH<3uA4EAL(ngN1Pa0v zfsvN5yc^*9eu(}H)v*@U8AO2tqv`);1+lcOuWANpFUbYBJ+!_pAB%fa2q`2E!T@VeKG zW?uvokuY)1=wcW-F%jDGv9p%iptQ^PpjNho(C{sDqF)7*{S-{^)M!;$hy!vfKD!go zSF1+VcBSpT@hnaHIu2XS6F|DJ{(cw*q|HLl&*D3ue`CH?x>v%^jW{TTRHr$u`(cE> zbqt=xsAMTn-u^$qJtxg~!imw>?=r^yvTobR43U}@BAVH3`ZO`-vJO98@tOAK0x}O? znFvCVR0R4ua*Y?!Ao`Uyd-?Dnov%cDe-jX?F=oA^&1{$f*Ij9TxijC~z_=0oJl{1fc?$Sg1jb|72xx2sce=NoL z8uW#J0!^+jLUa6gG_?R=IoenPH5H+(eG184h=qzhke00I-<^18HG4|al2-G{>1RH7 zYFwulsAynmOW_&ZFKtLdUI%@$Tiy>OdtRP_(>yN0=u8rQeD()ehPV1*$K~(YnCBHw zE%L%y=C%3cbOe=)eB+TbmLog4vB zH1z#AEI-7Cobxn!R-e?4)5Q7~)N0>>f=8aXrdVy|ncxc0PL2)|7 zEZrG@jn5QatoP|16`J>k)115xWopnMB{lTF4Ev8He41(QLgK>--iOS^v%%)!v!3L9I~CUCe)kzMJLJ30kt@lO;8O zjDFunMmaAUO|6%pIad}39S&md^4ZVFp}Ao+nX7L3O8nlne*}9u@_qndjfbc;%=P(U z(7hts=Rud#2g_j6IfUEE`$1U}O7@%r!EB8G0t}ASf%-7M`&8|KhwrXYVCjU+n9CZi ze;*W-pTz&0pi6Gi=#&0ynJ)yby#fz9eMf@SAI<+~&VbyXwV<*VcG6?T0;rJc0pcX8J({7EBL9mFv&w09zE)jyZr_y$cNXNEx z6D-EF&x`_vl&CIH+0$L|?fOcuDbN)7x*Q^H3Z5#ze@!8Mr|*K$Hl5P{4rt>2cN}b+ zYSSiDgcQ_ufI#%KNz^N)^HgDBBCx4Eul!x1+||^qTc8&61{7poS(E!7V^q!Yb1$h< zr7yFf8Shmb{tEVy*=-v<0y98L`xlL|2`-T ze_eun_R47f%4g#LJ#f!TFrPp={C0g^SBHTO`k`9iwR}cS?GpvK!UG-b`%KrYhf1jAY9!`I=Hgk0yW1XtMuvSN$LB?+Da<4!D z03G;AL_t(^{#0c3u)kokBy@eZ{P*_;`l(#+>oG5jaj*5cFQSh^xYoQwG%7T^F&fPO zroB-!zgn*rE59pE+^ms)@1yZggQb=ykOtfKQGB^Ez8eTXaG|@+^8YRL_u_QYQK8s-#&D%)YYHM(OyT0P<%31(dT_MGeovC}b zKne0`{a&L%Dj@DCBz0AQt5RuA)w+d5&|7!QGv)AFPCI|Kc!^Hf2Cx;crzl~%P5n!FEV z4%VCZRJ1y!GkyS>`op;Y6UfN_YMCOq2x>g@Al)j*TlMIl`Tqj@-{>xQ3Ho$uwX#je{Q^h2`U#TFrY>g?{v%qoWV=KBK(?8Ghr75Wi$s4 z9rR1_`N$fO8%u=37s2es5Y)Hli1arwZK;>OX5s%XhyRB6e{-lmTf`*99P03wSrN{l zutVd4`aT%^vZe2TtF$L*+a&?T8am~afFyVSdmR3AhqpIxy;dAe0CAcbPQ^7D*OC<(9R2ITId;AGI_T!U1`g@6iD{jQ(zU? zlivTq!k_B|d3hLZX@89>GNXWLmW)Ethk6*qdaQfmKUCl(A#A<^*JeHXs}kL#ppEO% z#v^A8h}NJh$K1@{KauqWDz1in*)I{X2Vg9O;#))~bI4d01z@hm|Kc4>ac?d5yO2E* z^R3vWS)+jZuD&AGrb0f|{r+;+B;eW3j{x>~bR`Gv_ z${4)r8cIPPX8`6a%h;6aDpU;4zk@dFewB}3sj~0ERKG4BD(+u`mWfgD=Wo|neqBS~ zye%`>0{SNL4e)?kLzLX~G`rnLmfciwj_L+b^(?j1x*4WXiqd#7Q8mx0oa~+WPHReB z!DQLbo@p}vu7BoXndnuhr%h$Ms<_TpeLwmpYx!M=zPFCPiB;p)`)kV1)Svxb`o7t; zzl?#h!sQv6NvBZCl47!$QSE1!s#osS6v$ehSS}T%Ax(oqh+GhxWu0YFs_(7l-g!`4 z|1o|)h_*KCJJp{$Pebe3d^SO21J8UP^Er=5<3bk8QGaUaGWvyoM!4ENu@h_5&h-tX z`(>%jx86|;-z+urz1XbFG@3$Q=%*TP6&k1ojzmw|+q;-_*R03P4q^*yLAOUKtBz- zn&nr}xPKslxF-f!Hbv%B!Vs60pXYJX}WQx%z!E zoLlI}c=YPfU$Nfbm%lswhk@rdu4=;@ri&ETZi9?WF$5J~LQH=VeawpLw^yt{S3U5G zcMBJy(%)*lvmR!3eU-}hz-peWB*f#5z$ zOn*V8r*@r@f~eARmk==*q9wgEes81kyQ41*YfXQ^6@n2+*S$CxWSl|W7b8$8xr?mI z`F-^D9-{hQGxkdFm1b+T(7{T72uz79KD&;H6=?2{kp;gtqCczAze>lg0MJzojqmR@ zeV;`NgS!L$Sp)Ew=H6;qW4X&DygrD}zkgj{@g=0P3y-K+OWgX+Ff+@vv=46dUoFyN z;`wc3WORo_W%LbKxY6tJ-SPL#oOndI$8(B$*K=pa zRJ~Pa#>9ftjQz|r{y;9EUKG5{&(Y4m%STG_dJ*n{S}5qmG8MD7rM%?B=+A;Dg5qx= z6PyN_rP^5VG$9|NnAM$;>NkS!6n~F08{^$7?^VwEHc0!|kuIof9#{@e7r~Qg``7Xw znZKVI(FYX}#=x_RWvIrenBoq*U3Yh})rLi{S|dNFv&_kZy&ArR`2 zk?ZA?*52q=5N<{_V=p`1DMuhGr07TZ_7_f<#T$ex5ZsHOV=lJh{nxx77xJ5>i{W|D z-5vC6L+l!{G{k#E8w-}{xU){z=lj^JdS)6tXfKd}R_}ryUY0c+7e1jiR7&47kj|f# zy{bA2$H7y2E(@cZ>&#ibP=9l~6|{UO9=qdoB^^6)5&q>3toOI;E4+%ds0jX{C{jUm zDr&lF5w(uFkn3sc zaLY3{F&X8r`rtcYQc zbE=%S1Tx1tOj-@9Ik0LJH_@2h8#-8Q?)M_P5gN|WyFjLSqh06n+)qdicoUP>qA~g| zkGW{C&dUyx_GE6>Ivr@d=xeIdj$1^_2@NpXpDXQXy$(=lwfRofR(r^rpawhz(&S3a zzg!DlCPrQNW)5WO>VL9Uu9(}JF*6AVQZYwmjr0_uRMZ zE52qzvp+-zVkv)Bk>f%lQ+Z$@DuNjUVLpL%v8CA`mNsf6>;@QR`~eJdktDw6l#&&c zH|1Go^(hib?g+qJ%V_GkXzx{MIU__~EVwy7hnBa9D7|YL4SVVhh=@}&89Ak51ud;u z=8nJek{2F*(0~8Zl1?n6))m34G_EJn=bIk2>*Ja=W&nJNKF%X83blr}4vTtiAPyC$ zW_M-@dLpJ;vH!bbCC=z&X)ayyATV%9*#i<(UV(?_!}9K$A)z+k8m&J^C>EJ`=7C4v zvu9B!xr16nvIURAETARkiuCkKi?p2l5zp#-Dj+rk3aI~%`*Op*iD%vzt!z6WA4JUgM)0v6P$>Jw z7zli116c<_$0yz|b1bYDWfFAAs`0sS0e@bC!q;1ne!p11P*sORVP;>V-+!7> z^zHh;e|7#lH2K&?YOI>y7~vcA)Ee%U|EEA{zka9H6z@hmHCRuT_3Crd3f9q=#wB$R z`ufyf{8m8PEK)PP4r=2E<@x`OuT|hQ(xPr4eXlE+#H^Q=+gclz(9h$p`Qbyj=v_{9 z%zvA-OIb=qUVVi0_6H?%>-Ah zn1PKl-ktco`kZHm+KztCVlt3%5q;~&gMT4f1+5G#_!H|5%HBc2k7#I7F%$>Urea-c z%tfV#anr^E`j&_xYr`J;wD$lMXh)c=>(Ob?nB*lj5Vg+x2KpNJRl&U7+JJObwf5Er zKe0Cl+8e6BAzrjR^m%zs{Sd8o!Me>_&R;R7^Wa{Yig#_H&u5lvyYct8>npyd+Y?36UoYa`v(g9UAAj$~KW=6R&Ya$M zuI50Y<8isS<)P~yjl3m54#ubddKrWIco(7eQyoa7KQTpUtwe|tsAu; zEi!0De%y)qII=!&LdSQ?x~nKsE&F}onJ&2wS{rBDvDG>A#9$bEgOQ;A#e1GuBKB1p z5$=aFH=f12*AYmk@!W3o=YJBUjfp-PtqZ~x*>t8Mci08(+%;pE1_h-lkT*?~V74p? zUFUOXYQ9}x(KW_o>f86=M%Rxt-cCy$_|7V*^{GTB(2oYL8reeg`v84Zz#oxOv{iz= zkG=*YU)#;n)(ldT-YWOM$E0R8q2+-aP!fBKKqpA#DNJf_iWiu!V}Fak<+t2NYSyh) zplTlSZO@~xbxk+FWwp4~%ypg1ars+wp?O_uy1I1Zxc+mANxmG!IIs>VB5B~R;B=5-B8CyOB6-A7-Gl9?FgovXoc!RWi(cKXiGotA{nkW9~wnFM2}G`nc@ z0VsH@{KM(XyH@T`yZg_c03=^LvjN_KCNDTO*+Zkh>$L}VK8T8SX=e8< ztAEWI{c%F3yMF^p=O5#JA3|CdSjvUdzk3;DoUy2j?g<_wzvq!9kjuO1>oZS{v;|mt zU7kNKziXX$`IT>mMkdYjw0s8dYaLprYo3~@0Gqm~ez3CGi_*Un>&JhLkpNHQc+U%C zp`$GeD}b5pMc-Ns_I+oDg0vNBFK5OG>sbK*if4W{vwv%$4L`BSOmTuIsm8-pymQeR zDZk`d0q?|F!A%8)6qE8pq2=SC-NmM#ofRpbJ$7oG%iw|ZCFrnbaGW81>+;jCA}ipX zTGo2+fQdXnqMUx&4rAX#tM$yJxs350gNN2>%*9!ZVI#i(FXUbp2+^J;K$pfi=V|eo zHCmp|y?+$d3T^j|5%@`&6Mu>Ei#{)qSpz3FS;g+HWj4d(vX7pDnF#_bQePIFzVTa5 ze|IgEbK+V3Q`dww#Hm?-2^!Q`R*jaw|1^)!#5n&z0pW6HdZ@2&ji63X!Qx#9mf0|h zJvj<`I|c=z)+(y(Cx8}?Ixo-AkL|hbwB#Lt;D2KR_Br>62LccDBhZq0=9#@C9`qKG z1rqlaAMq~s+y?;4TKRT;#n%XwxR2hp*#5-4G zqksNl3^>|AVIoeHGZiHg(`-}W_RIZsP_yX{G%F};VCs|(%@xm5x+|V0xSJN$_sZCH zXwN&%(u)>pl19_$Bd0*2!{*pnaHjwL9tY{F^-Cd72h(~V zhvJE+kaJ>LQS5d6s50R*?-v;o3S*ZR>VFBRI};3U0TeFgEh{0uKnfAHP}D)t+H@Q$ zGM^t>DeJ1ks2+Zv1!*LJo*@nyV}ROX^sP(V0|g=FQ$H&Q`AXcMH41<)<1o>h9D%8T zv(d-j_;p?cq5r_M9>;a`nJ_7x$j*MH4> zuQ^TKGoU+Ag>(K^=wILO3O*r)j_r8QG0MT(e6Jql+i_@0AdKu=``)IQF63SsM- zulV?phtL}IH0KoNI-xDb_B6&h1qPUk7Dh&)RPfA#DgFiI7b;&}VY|mhMdxqvzl1+2 z7uU+ON)J_)LA`e_c+-Jrz^wu(Ykw-~Z${UwTqHW^r!3J8pM!jN(=!Nj$FqE}1j=vM zS9~c3KsfGeh#b_Rhb?{7V^0`Z<-Tqp;cpeWz8?qg9ufxl)XeTXwY=5%&e>JO7@L0! z6fQmogP!n(TE7C<3dm6Rz475*@s1u2eDhha>RfxzuD}u3+<3nlUG;^kvVY*YWpzFI ze>XvG^I<%@1Txp{ID~|!z6H+rljgm9AjbV=td9U#YGm;&s6D@L)^nqIPSN4L>UhQo z>WARrJsa&*OmrbK{#A1veQmP?RGm-)**j#Boc~Q_v>q)C{67XwpD(N*7jdTu1d5*+ zgBGAOOMht{(?mr|YicFLTz|9&>O|~Ctm%Ht?FdYbd=Y{~tvGlOv_iCNJOYL5C*YnH zJuZSK=0C2W-CLj~>eMKBfAqx8Ujh&O6U%s*aXI745d{olSuK`2iEz-g+gfo<1~+Qz(5+jt#JMTGmE(=>G)n`6b(Oa%}u zWeYrvUL#F?I+V|xpnnuPxDTvoY{3YQK)>IIa+pq8O3yHACDOuG(eMlj;&CP7ReUxC zRHJ(>BYF^r#f~vZtd{ZBGs5IQ4@M88@N{7`$zFF_S9HLiXbO%qQk%Dh{QpsjeW?ur8g}A%VQi8cnw=Xs+nny3wN33XZj&!nL4P(bT0;@VOP^ zS~6;5r^Z0YlbB}|TAManZC1Ts&_z}oflevMUqxx=Ev+Bz;jb)){{*dE4?#)u_`cBh zE2nTiV`1SiYJcMwF?S2GHqurPB{+E&?5fv$FxBifC;-Z8Hw^}wiVl`yO?3D#dkCa) zZ${&@KG2f1+Yv$ojgO?=e*mpYD*$An+eEk$jEC@$GB6v5e^;x+5+thwCX07GkFm*} zwe0Egcy4KBdW*iR>b+%wDOtQ$Vh>Fm{?Uen!yk-?_kSy+H9(fQ&oQXrLk|(lC|Pfr*<~ZpAS7}L2h}~YWoDm1DgVr9 zvU}*6qb?u6G_^7MOzOGywTV}tM*KdW(R0$mds-&aL@ZPPTd=UpiPNV!A?Z8a3uDk) zQnmY<@2z_$WxY7cW}F(~OV8?YqlV_5T1J}7I-xPEA2*Q5cq?Xh=Cmx# zfr85!nz#(>TZ+~|^vhdusEJN>pw&IJX0!}F2k?vabN)|aep@ZSdsno-0n+$97|<#F zhJUpXMrJ+ZL!Mb`|1b(VpFtr>7QhuylYL}i&5LJOyl)Mgi~b?jWg}=&aXs@sX`wrf zLu|9`)1MG{Af70nDrhr~wUDK119V?%eU+7g`u%pEgP$D5xKBX$-XUV2S;^jL`itP7 zM@|7>l^*AVmX?E-F2JBq;Xep|eBIsu5r6kKoED&&=a|gH2V4X%cY-+ z_8-bCo+)!bhd_5jKYzO|T(VO7(!-iBZLQX4n?A|3y^D-??vUKjuLE(dd1seHA9E?( zewmmn%_vi3t&DY|b^u66>i4bY_kUn?f2DTyJ}uFr+@ZLjB_4I?_IRM z#?n6D%t?p4pzoLOE}djLj-tIyWVF8aXQf}!=*@wC?SMRE7L&z>I)uUI{wgRujGFd`@cVb_?|-4T%HKbL z`=P~tSVSM^VW;_h9ep0vW*>dKzT#`DB?2Sn{?8!cJoZWRrJz%WvR|pnq!r zI%s`Z1@O)j_y3MFuxBaeZGR%xz%rM81Ty8W951MOo`dd^ZXQ6UIp_4Ns{b`-SX%ii zsM&OZhx!~8Zk`~^8D9gni)t}Z9(ZRtY5LyFw=eI#2KtEy<0H!VhjN=2L4ieUq4|+^ z^%EFH{@hAV_CVXpL*D{$=(HSlmr_Hn_kSy*TBRAiZ#KrR z_l!XS>xoTTOQg9Tcxr98V;#PfHrGKv@39Tz6O6r&-O%A8SjPCs;vfswa?roh7=N#O z0W^=F`_)(qLX6x4Y4igU3;#yU-5hv$U+J?~TcA~`wZ_%ho_37NeP8pi%z4Jx-1OA8 zXOXUrmtF!8gHB(^TxPtl_hOx7LHGg+6*ptg)i|IPkiLcjm1mr>2aD0hC1Q`q_bxnR z5IW0Q+2b>@E<^DgV`scZ4+EplX{^s|j8B*qvR3>LfWQ9Px_rC-Z(si(XCo_}_oG@< P00000NkvXXu0mjfYy)Lz diff --git a/icons/mob/screen_full.dmi b/icons/mob/screen_full.dmi index e84b05469506dba025f5e6a0681e663318fb9368..e8602a41cedc35dda2b0e59ac187b766715f277d 100644 GIT binary patch literal 1576550 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≧;qg^; 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

    =;;;j1yT5v75vKBUB!fU36c>DBTSAw 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

    NKJ><{~$! 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�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�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 >tgv755EbM!B z_cW$h#=vTEDVqq)O@!5M*Q@3t=tq6Yl-b;}F`k^Kh4=sH)x4V-*N^mBzjS+sJMmb} zRU1x&JGp7zA-)DH=7a*$F@T1Z6jn6{5>?bpK31i659zh)>^UQLroHBWd8>JK3M>ONNPH6 z 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%0AFBO207`@9@g<71!7Ybr3*cY%%S^XC)hKgQ< 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 z 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