From cce3116c3a06dfd768b17540f880ffd43ddc9f19 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 2 Apr 2019 21:06:37 -0400 Subject: [PATCH 01/98] Ports Modular Computers from Baystation This is just the initial parts. Additional work will probably be necessary. --- code/__defines/misc.dm | 21 + code/controllers/subsystems/nanoui.dm | 1 + code/datums/uplink/stealth_items.dm | 5 - code/game/jobs/access_datum.dm | 7 +- code/game/jobs/job/science.dm | 4 +- code/game/machinery/computer3/NTOS.dm | 10 +- code/game/machinery/recharger.dm | 36 +- .../items/devices/uplink_random_lists.dm | 1 - .../circuitboards/machinery/research.dm | 10 +- code/modules/materials/material_recipes.dm | 3 + .../NTNet/NTNRC/conversation.dm | 63 +++ code/modules/modular_computers/NTNet/NTNet.dm | 147 ++++++ .../modular_computers/NTNet/NTNet_relay.dm | 130 +++++ .../modules/modular_computers/_description.dm | 102 ++++ .../computers/item/modular_computer.dm | 493 ++++++++++++++++++ .../computers/item/processor.dm | 115 ++++ .../computers/item/tablet.dm | 8 + .../computers/machinery/modular_computer.dm | 137 +++++ .../computers/machinery/modular_console.dm | 45 ++ .../computers/machinery/modular_laptop.dm | 107 ++++ .../computers/status_icons.dmi | Bin 0 -> 818 bytes .../file_system/computer_file.dm | 39 ++ .../modular_computers/file_system/data.dm | 17 + .../modular_computers/file_system/program.dm | 127 +++++ .../file_system/programs/_engineering.dm | 48 ++ .../file_system/programs/_medical.dm | 10 + .../file_system/programs/antagonist/dos.dm | 104 ++++ .../programs/antagonist/revelation.dm | 77 +++ .../file_system/programs/configurator.dm | 80 +++ .../file_system/programs/file_browser.dm | 227 ++++++++ .../file_system/programs/ntdownloader.dm | 160 ++++++ .../file_system/programs/ntmonitor.dm | 85 +++ .../file_system/programs/ntnrc_client.dm | 201 +++++++ .../file_system/programs/nttransfer.dm | 197 +++++++ .../hardware/battery_module.dm | 59 +++ .../modular_computers/hardware/card_slot.dm | 16 + .../modular_computers/hardware/hard_drive.dm | 146 ++++++ .../modular_computers/hardware/hardware.dm | 23 + .../hardware/nano_printer.dm | 59 +++ .../hardware/network_card.dm | 73 +++ .../hardware/portable_hard_drive.dm | 31 ++ .../modular_computers/hardware/tesla_link.dm | 19 + .../modular_computers/laptop_vendor.dm | 278 ++++++++++ code/modules/nano/modules/alarm_monitor.dm | 5 + code/modules/nano/modules/atmos_control.dm | 5 + code/modules/nano/modules/crew_monitor.dm | 2 + code/modules/nano/modules/nano_module.dm | 14 + code/modules/nano/modules/power_monitor.dm | 9 + code/modules/nano/modules/rcon.dm | 4 + code/modules/nano/nanoui.dm | 5 + code/modules/research/designs/circuits.dm | 7 + .../research/designs/modular_computer.dm | 202 +++++++ .../changelogs/Novacat - modularcomputers.yml | 36 ++ .../batt_100.gif | Bin .../batt_20.gif | Bin .../batt_40.gif | Bin .../batt_5.gif | Bin .../batt_60.gif | Bin .../batt_80.gif | Bin .../batt_none.gif | Bin icons/NTOS/status_icons/charging.gif | Bin 0 -> 106 bytes icons/NTOS/status_icons/sig_high.gif | Bin 0 -> 337 bytes icons/NTOS/status_icons/sig_low.gif | Bin 0 -> 160 bytes icons/NTOS/status_icons/sig_none.gif | Bin 0 -> 154 bytes icons/obj/modular_components.dmi | Bin 0 -> 2639 bytes icons/obj/modular_console.dmi | Bin 0 -> 25379 bytes icons/obj/modular_laptop.dmi | Bin 0 -> 25642 bytes icons/obj/modular_tablet.dmi | Bin 0 -> 1203 bytes interface/skin.dmf | 148 ++++++ maps/southern_cross/southern_cross-6.dmm | 4 +- nano/images/status_icons/batt_100.gif | Bin 0 -> 173 bytes nano/images/status_icons/batt_20.gif | Bin 0 -> 284 bytes nano/images/status_icons/batt_40.gif | Bin 0 -> 185 bytes nano/images/status_icons/batt_5.gif | Bin 0 -> 273 bytes nano/images/status_icons/batt_60.gif | Bin 0 -> 166 bytes nano/images/status_icons/batt_80.gif | Bin 0 -> 172 bytes nano/images/status_icons/charging.gif | Bin 0 -> 160 bytes nano/images/status_icons/sig_high.gif | Bin 0 -> 182 bytes nano/images/status_icons/sig_lan.gif | Bin 0 -> 191 bytes nano/images/status_icons/sig_low.gif | Bin 0 -> 179 bytes nano/images/status_icons/sig_none.gif | Bin 0 -> 202 bytes nano/templates/computer_fabricator.tmpl | 65 +++ nano/templates/file_manager.tmpl | 58 +++ nano/templates/laptop_configuration.tmpl | 70 +++ nano/templates/laptop_mainscreen.tmpl | 6 + nano/templates/layout_default.tmpl | 33 ++ nano/templates/ntnet_chat.tmpl | 66 +++ nano/templates/ntnet_dos.tmpl | 22 + nano/templates/ntnet_downloader.tmpl | 120 +++++ nano/templates/ntnet_monitor.tmpl | 101 ++++ nano/templates/ntnet_relay.tmpl | 26 + nano/templates/ntnet_transfer.tmpl | 94 ++++ nano/templates/revelation.tmpl | 23 + polaris.dme | 61 +-- 94 files changed, 4659 insertions(+), 48 deletions(-) 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/_description.dm create mode 100644 code/modules/modular_computers/computers/item/modular_computer.dm create mode 100644 code/modules/modular_computers/computers/item/processor.dm create mode 100644 code/modules/modular_computers/computers/item/tablet.dm create mode 100644 code/modules/modular_computers/computers/machinery/modular_computer.dm create mode 100644 code/modules/modular_computers/computers/machinery/modular_console.dm create mode 100644 code/modules/modular_computers/computers/machinery/modular_laptop.dm create mode 100644 code/modules/modular_computers/computers/status_icons.dmi 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/program.dm create mode 100644 code/modules/modular_computers/file_system/programs/_engineering.dm create mode 100644 code/modules/modular_computers/file_system/programs/_medical.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/revelation.dm create mode 100644 code/modules/modular_computers/file_system/programs/configurator.dm create mode 100644 code/modules/modular_computers/file_system/programs/file_browser.dm create mode 100644 code/modules/modular_computers/file_system/programs/ntdownloader.dm create mode 100644 code/modules/modular_computers/file_system/programs/ntmonitor.dm create mode 100644 code/modules/modular_computers/file_system/programs/ntnrc_client.dm create mode 100644 code/modules/modular_computers/file_system/programs/nttransfer.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/hardware.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/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 rename icons/NTOS/{battery_icons => status_icons}/batt_100.gif (100%) rename icons/NTOS/{battery_icons => status_icons}/batt_20.gif (100%) rename icons/NTOS/{battery_icons => status_icons}/batt_40.gif (100%) rename icons/NTOS/{battery_icons => status_icons}/batt_5.gif (100%) rename icons/NTOS/{battery_icons => status_icons}/batt_60.gif (100%) rename icons/NTOS/{battery_icons => status_icons}/batt_80.gif (100%) rename icons/NTOS/{battery_icons => status_icons}/batt_none.gif (100%) create mode 100644 icons/NTOS/status_icons/charging.gif create mode 100644 icons/NTOS/status_icons/sig_high.gif create mode 100644 icons/NTOS/status_icons/sig_low.gif create mode 100644 icons/NTOS/status_icons/sig_none.gif 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 nano/images/status_icons/batt_100.gif create mode 100644 nano/images/status_icons/batt_20.gif create mode 100644 nano/images/status_icons/batt_40.gif create mode 100644 nano/images/status_icons/batt_5.gif create mode 100644 nano/images/status_icons/batt_60.gif create mode 100644 nano/images/status_icons/batt_80.gif create mode 100644 nano/images/status_icons/charging.gif create mode 100644 nano/images/status_icons/sig_high.gif create mode 100644 nano/images/status_icons/sig_lan.gif create mode 100644 nano/images/status_icons/sig_low.gif create mode 100644 nano/images/status_icons/sig_none.gif create mode 100644 nano/templates/computer_fabricator.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/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 diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 33976e141b..3f2b73c49a 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -181,6 +181,27 @@ #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.025 // GQ/s transfer speed when the device is wirelessly connected and on Low signal +#define NTNETSPEED_HIGHSIGNAL 0.1 // GQ/s transfer speed when the device is wirelessly connected and on High signal +#define NTNETSPEED_ETHERNET 0.5 // GQ/s transfer speed when the device is using wired connection + +// Program bitflags +#define PROGRAM_ALL 7 +#define PROGRAM_CONSOLE 1 +#define PROGRAM_LAPTOP 2 +#define PROGRAM_TABLET 4 + +// 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/controllers/subsystems/nanoui.dm b/code/controllers/subsystems/nanoui.dm index c31449addc..8f722c0413 100644 --- a/code/controllers/subsystems/nanoui.dm +++ b/code/controllers/subsystems/nanoui.dm @@ -12,6 +12,7 @@ SUBSYSTEM_DEF(nanoui) var/list/nano_asset_dirs = list(\ "nano/css/",\ "nano/images/",\ + "nano/images/status_icons/",\ "nano/js/",\ "nano/templates/"\ ) 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/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 f8d5e8710c..5864943001 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -15,11 +15,11 @@ 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_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_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_network) minimum_character_age = 25 minimal_player_age = 14 diff --git a/code/game/machinery/computer3/NTOS.dm b/code/game/machinery/computer3/NTOS.dm index a9068a634f..ada61a2624 100644 --- a/code/game/machinery/computer3/NTOS.dm +++ b/code/game/machinery/computer3/NTOS.dm @@ -188,15 +188,15 @@ // Battery level icon switch(computer.check_battery_status()) if(-1) - dat += "" + dat += "" if(0 to 5) - dat += "" + dat += "" if(6 to 20) - dat += "" + dat += "" if(21 to 40) - dat += "" + dat += "" if(41 to 60) - dat += "" + dat += "" if(61 to 80) dat += "" if(81 to 100) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 8505e92ffa..25e4d48c70 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,7 +8,7 @@ obj/machinery/recharger idle_power_usage = 4 active_power_usage = 40000 //40 kW var/obj/item/charging = null - 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) + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/laptop, /obj/item/modular_computer, /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) var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered @@ -44,6 +44,16 @@ obj/machinery/recharger if(E.self_recharge) to_chat(user, "Your gun has no recharge port.") return + if(istype(G, /obj/item/laptop)) + var/obj/item/laptop/L = G + if(!L.stored_computer.cpu.battery_module) + to_chat(user, "There's no battery in it!") + return + 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 if(!G.get_cell()) to_chat(user, "This device does not have a battery installed.") return @@ -86,6 +96,30 @@ obj/machinery/recharger update_use_power(1) icon_state = icon_state_idle else + + if(istype(charging, /obj/item/laptop)) + var/obj/item/laptop/L = charging + if(!L.stored_computer.cpu.battery_module.battery.fully_charged()) + icon_state = icon_state_charging + L.stored_computer.cpu.battery_module.battery.give(active_power_usage*CELLRATE) + update_use_power(2) + else + icon_state = icon_state_charged + update_use_power(1) + return + + 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 + L.stored_computer.battery.give(active_power_usage*CELLRATE) + C.battery_module.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/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/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 232ef46e3e..08ab6df4dc 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -89,6 +89,9 @@ 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("modular console frame", /obj/machinery/modular_computer/console/buildable, 20) + recipes += new/datum/stack_recipe("modular laptop frame", /obj/machinery/modular_computer/laptop/buildable, 10) + recipes += 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/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm new file mode 100644 index 0000000000..1a4922b5ec --- /dev/null +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -0,0 +1,63 @@ +/datum/ntnet_conversation/ + 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() + 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 + for(var/message in messages) + messages -= message + if(messages <= 50) + return + +/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..a925c726e3 --- /dev/null +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -0,0 +1,147 @@ +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/chat_channels = list() + var/list/fileservers = 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() + add_log("NTNet logging system activated.") + +// 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 + +// 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.is_operational()) + 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) + +// 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.") + + + + 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..a73e356622 --- /dev/null +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -0,0 +1,130 @@ +// 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/proc/is_operational() + if(stat & (BROKEN | NOPOWER | EMPED)) + return 0 + if(dos_failure) + return 0 + if(!enabled) + return 0 + return 1 + +/obj/machinery/ntnet_relay/update_icon() + if(is_operational()) + icon_state = "bus" + else + icon_state = "bus_off" + +/obj/machinery/ntnet_relay/process() + if(is_operational()) + 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.") + else if(href_list["toggle"]) + enabled = !enabled + ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].") + update_icon() + +/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 + user << "You [panel_open ? "open" : "close"] the maintenance hatch" + return + if(W.is_crowbar()) + if(!panel_open) + user << "Open the maintenance panel first." + return + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + 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/_description.dm b/code/modules/modular_computers/_description.dm new file mode 100644 index 0000000000..a9ea30757b --- /dev/null +++ b/code/modules/modular_computers/_description.dm @@ -0,0 +1,102 @@ +/* +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/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm new file mode 100644 index 0000000000..35ea31a45b --- /dev/null +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -0,0 +1,493 @@ +// This is the base type that does all the hardware stuff. +// Other types expand it - tablets use a direct subtypes, and +// consoles and laptops use "procssor" item that is held inside machinery piece +/obj/item/modular_computer + name = "Modular Microcomputer" + desc = "A small portable microcomputer" + + 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 + var/computer_emagged = 0 // Whether the computer is emagged. + + 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) + + // 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 = 'icons/obj/computer.dmi' + icon_state = "laptop-open" + 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/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. + + + // Important hardware (must be installed for computer to work) + 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. + var/obj/item/weapon/computer_hardware/battery_module/battery_module // An internal power source for this computer. Can be recharged. + // Optional hardware (improves functionality, but is not critical for computer to work) + 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 + + +// 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.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) + usr << "You can't do that." + return + + if(!Adjacent(usr)) + usr << "You can't reach it." + return + + proc_eject_id(usr) + +/obj/item/modular_computer/proc/proc_eject_id(mob/user) + if(!user) + user = usr + + if(!card_slot) + user << "\The [src] does not have an ID card slot" + return + + if(!card_slot.stored_card) + user << "There is no card in \the [src]" + return + + card_slot.stored_card.forceMove(get_turf(src)) + card_slot.stored_card = null + user << "You remove the card from \the [src]" + +/obj/item/modular_computer/emag_act(var/remaining_charges, var/mob/user) + if(computer_emagged) + user << "\The [src] was already emagged." + return + else + computer_emagged = 1 + user << "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message." + return 1 + +/obj/item/modular_computer/New() + START_PROCESSING(SSobj, src) + update_icon() + ..() + +/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()) + qdel(CH) + ..() + +/obj/item/modular_computer/update_icon() + icon_state = icon_state_unpowered + + overlays.Cut() + if(!enabled) + return + if(active_program) + overlays.Add(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu) + else + overlays.Add(icon_state_menu) + +// Used by child types if they have other power source than battery +/obj/item/modular_computer/proc/check_power_override() + return 0 + +// 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((!battery_module || !battery_module.battery.charge) && !check_power_override()) + 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/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 + 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) + +// On-click handling. Turns on the computer if it's off and opens the GUI. +/obj/item/modular_computer/attack_self(mob/user) + if(enabled) + ui_interact(user) + else if((battery_module && battery_module.battery.charge) || check_power_override()) // Battery-run and charged or non-battery but powered by APC. + user << "You press the power button and start up \the [src]" + enabled = 1 + update_icon() + ui_interact(user) + else // Unpowered + user << "You press the power button but \the [src] does not respond." + +// Process currently calls handle_power(), may be expanded in future if more things are added. +/obj/item/modular_computer/process() + if(!enabled) // The computer is turned off + last_power_usage = 0 + 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. + kill_program(1) + visible_message("\The [src]'s screen briefly freezes and then shows \"NETWORK ERROR - NTNet connection lost. Please retry. If problem persists contact your system administrator.\" error.") + + if(active_program) + active_program.process_tick() + active_program.ntnet_status = get_ntnet_status() + active_program.computer_emagged = computer_emagged + + handle_power() // Handles all computer power interaction + +// 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 + + 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" + + data["PC_stationtime"] = stationtime2text() + data["PC_hasheader"] = 1 + data["PC_showexitprogram"] = active_program ? 1 : 0 // Hides "Exit Program" button on mainscreen + return data + +// 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() + kill_program(1) + visible_message("\The [src] shuts down.") + enabled = 0 + update_icon() + return + +// Handles user's GUI input +/obj/item/modular_computer/Topic(href, href_list) + if(..()) + return 1 + if( href_list["PC_exit"] ) + kill_program() + return + 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 + return + 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 + return + if( href_list["PC_shutdown"] ) + shutdown_computer() + return + if( href_list["PC_runprogram"] ) + var/prog = href_list["PC_runprogram"] + var/datum/computer_file/program/P = null + var/mob/user = usr + if(hard_drive) + P = hard_drive.find_file_by_name(prog) + P.computer = src + + if(!P || !istype(P)) // Program not found or it's not executable program. + user << "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning." + return + + if(!P.is_supported_by_hardware(hardware_flag, 1, user)) + return + + if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) // The program requires NTNet connection, but we are not connected to NTNet. + 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(P.run_program(user)) + active_program = P + update_icon() + return + +// Used in following function to reduce copypaste +/obj/item/modular_computer/proc/power_failure() + if(enabled) // Shut down the computer + visible_message("\The [src]'s screen flickers \"BATTERY CRITICAL\" warning as it shuts down unexpectedly.") + kill_program(1) + enabled = 0 + update_icon() + +// Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged +/obj/item/modular_computer/proc/handle_power() + if(!battery_module || battery_module.battery.charge <= 0) // Battery-run but battery is depleted. + power_failure() + return 0 + + var/power_usage = screen_on ? base_active_power_usage : base_idle_power_usage + if(network_card && network_card.enabled) + power_usage += network_card.power_usage + + if(hard_drive && hard_drive.enabled) + power_usage += hard_drive.power_usage + + if(battery_module) + battery_module.battery.use(power_usage * CELLRATE) + last_power_usage = power_usage + +/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) + 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) + 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) + user << "You insert \the [I] into \the [src]." + return + if(istype(W, /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = W + if(!nano_printer) + return + nano_printer.load_paper(P) + 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 + user << "This component is too large for \the [src]." + if(W.is_wrench()) + var/list/components = get_all_components() + if(components.len) + 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].") + relay_qdel() + qdel(src) + return + + if(W.is_screwdriver()) + var/list/all_components = get_all_components() + if(!all_components.len) + 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 + + ..() + +// Used by processor to relay qdel() to machinery type. +/obj/item/modular_computer/proc/relay_qdel() + return + +// 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) + 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) + 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) + 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) + 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) + 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) + user << "This computer's battery slot is already occupied by \the [battery_module]." + return + found = 1 + battery_module = H + if(found) + user << "You install \the [H] into \the [src]" + H.holder2 = src + user.drop_from_inventory(H) + H.forceMove(src) + +// 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(found) + user << "You remove \the [H] from \the [src]." + H.forceMove(get_turf(src)) + H.holder2 = null + if(critical) + 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." + kill_program(1) + enabled = 0 + 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 + 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) + return all_components \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm new file mode 100644 index 0000000000..0af7cce4d1 --- /dev/null +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -0,0 +1,115 @@ +// Held by /obj/machinery/modular_computer to reduce amount of copy-pasted code. +/obj/item/modular_computer/processor + name = "processing unit" + desc = "You shouldn't see this. If you do, report it." + icon = null + icon_state = null + icon_state_unpowered = null + icon_state_menu = null + hardware_flag = 0 + + var/obj/machinery/modular_computer/machinery_computer = null + +// Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type. +// Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore +// non-relayed process calls. +/obj/item/modular_computer/processor/process(var/relayed = 0) + if(relayed) + ..() + else + return + +// Power interaction is handled by our machinery part, due to machinery having APC connection. +/obj/item/modular_computer/processor/handle_power() + if(machinery_computer) + machinery_computer.handle_power() + +/obj/item/modular_computer/processor/New(var/comp) + if(!comp || !istype(comp, /obj/machinery/modular_computer)) + CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.") + return + // Obtain reference to machinery computer + machinery_computer = comp + machinery_computer.cpu = src + hardware_flag = machinery_computer.hardware_flag + max_hardware_size = machinery_computer.max_hardware_size + steel_sheet_cost = machinery_computer.steel_sheet_cost + +/obj/item/modular_computer/processor/relay_qdel() + qdel(machinery_computer) + +/obj/item/modular_computer/processor/find_hardware_by_name(var/N) + var/obj/item/weapon/computer_hardware/H = machinery_computer.find_hardware_by_name(N) + if(H) + return H + else + return ..() + +/obj/item/modular_computer/processor/update_icon() + if(machinery_computer) + return machinery_computer.update_icon() + +/obj/item/modular_computer/processor/get_header_data() + var/list/L = ..() + if(machinery_computer.tesla_link && machinery_computer.tesla_link.enabled && machinery_computer.powered()) + L["PC_apclinkicon"] = "charging.gif" + return L + +// Checks whether the machinery computer doesn't take power from APC network +/obj/item/modular_computer/processor/check_power_override() + if(!machinery_computer) + return 0 + if(!machinery_computer.tesla_link || !machinery_computer.tesla_link.enabled) + return 0 + return machinery_computer.powered() + +// This thing is not meant to be used on it's own, get topic data from our machinery owner. +/obj/item/modular_computer/processor/CanUseTopic(user, state) + if(!machinery_computer) + return 0 + return machinery_computer.CanUseTopic(user, state) + +/obj/item/modular_computer/processor/shutdown_computer() + if(!machinery_computer) + return + kill_program(1) + visible_message("\The [machinery_computer] shuts down.") + enabled = 0 + machinery_computer.update_icon() + return + +// Tesla links only work on machinery types, so we'll override the default try_install_component() proc +/obj/item/modular_computer/processor/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0) + if(istype(H, /obj/item/weapon/computer_hardware/tesla_link)) + if(machinery_computer.tesla_link) + user << "This computer's tesla link slot is already occupied by \the [machinery_computer.tesla_link]." + return + var/obj/item/weapon/computer_hardware/tesla_link/L = H + L.holder = machinery_computer + machinery_computer.tesla_link = L + // Consoles don't usually have internal power source, so we can't disable tesla link in them. + if(istype(machinery_computer, /obj/machinery/modular_computer/console)) + L.critical = 1 + found = 1 + ..(user, H, found) + +/obj/item/modular_computer/processor/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0) + if(machinery_computer.tesla_link == H) + machinery_computer.tesla_link = null + var/obj/item/weapon/computer_hardware/tesla_link/L = H + L.critical = 0 // That way we can install tesla link from console to laptop and it will be possible to turn it off via config. + L.holder = null + found = 1 + ..(user, H, found, critical) + +/obj/item/modular_computer/processor/get_all_components() + var/list/all_components = ..() + if(machinery_computer.tesla_link) + all_components.Add(machinery_computer.tesla_link) + return all_components + +// Perform adjacency checks on our machinery counterpart, rather than on ourselves. +/obj/item/modular_computer/processor/Adjacent(var/atom/neighbor) + if(!machinery_computer) + return 0 + return machinery_computer.Adjacent(neighbor) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm new file mode 100644 index 0000000000..4de568af9f --- /dev/null +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -0,0 +1,8 @@ +/obj/item/modular_computer/tablet + name = "tablet computer" + 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 \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm new file mode 100644 index 0000000000..8771e15627 --- /dev/null +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -0,0 +1,137 @@ +// Modular Computer - device that runs various programs and operates with hardware +// DO NOT SPAWN THIS TYPE. Use /laptop/ or /console/ instead. +/obj/machinery/modular_computer/ + name = "modular computer" + desc = "An advanced computer" + + var/battery_powered = 0 // Whether computer should be battery powered. It is set automatically + use_power = 0 + var/hardware_flag = 0 // A flag that describes this device type + var/last_power_usage = 0 // Power usage during last tick + + // 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 + icon_state = null + var/icon_state_unpowered = null // Icon state when the computer is turned off + var/screen_icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. + 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 = 10 // Amount of steel sheets refunded when disassembling an empty frame of this computer. + + var/base_active_power_usage = 100 // 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 = 10 // Power usage when the computer is idle and screen is off (currently only applies to laptops) + + var/obj/item/weapon/computer_hardware/tesla_link/tesla_link // Tesla Link component of this computer. Allows remote charging from nearest APC. + + var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. + +/obj/machinery/modular_computer/emag_act(var/remaining_charges, var/mob/user) + return //cpu ? cpu.emag_act(remaining_charges, user) : NO_EMAG_ACT + +/obj/machinery/modular_computer/update_icon() + icon_state = icon_state_unpowered + overlays.Cut() + + if(!cpu || !cpu.enabled) + return + if(cpu.active_program) + overlays.Add(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu) + else + overlays.Add(screen_icon_state_menu) + +// Eject ID card from computer, if it has ID slot with card inside. +/obj/machinery/modular_computer/verb/eject_id() + set name = "Eject ID" + set category = "Object" + set src in view(1) + + if(cpu) + cpu.eject_id() + +/obj/machinery/modular_computer/New() + ..() + cpu = new(src) + +// On-click handling. Turns on the computer if it's off and opens the GUI. +/obj/machinery/modular_computer/attack_hand(mob/user) + if(cpu) + cpu.attack_self(user) // CPU is an item, that's why we route attack_hand to attack_self + +// Process currently calls handle_power(), may be expanded in future if more things are added. +/obj/machinery/modular_computer/process() + if(cpu) + // Keep names in sync. + cpu.name = src.name + cpu.process(1) + +// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null +/obj/machinery/modular_computer/proc/find_hardware_by_name(var/N) + if(tesla_link && (tesla_link.name == N)) + return tesla_link + return null + +// Used in following function to reduce copypaste +/obj/machinery/modular_computer/proc/power_failure() + if(cpu && cpu.enabled) // Shut down the computer + visible_message("\The [src]'s screen flickers [cpu.battery_module ? "\"BATTERY CRITICAL\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.") + if(cpu) + cpu.kill_program(1) + cpu.enabled = 0 + battery_powered = 0 + update_icon() + stat |= NOPOWER + +// Called by cpu item's process() automatically, handles our power interaction. +/obj/machinery/modular_computer/proc/handle_power() + if(cpu.battery_module && cpu.battery_module.battery.charge <= 0) // Battery-run but battery is depleted. + power_failure() + return 0 + else if(!cpu.battery_module && (!powered() || !tesla_link || !tesla_link.enabled)) // Not battery run, but lacking APC connection. + power_failure() + return 0 + else if(stat & NOPOWER) + stat &= ~NOPOWER + + if(cpu.battery_module && cpu.battery_module.battery.charge) + battery_powered = 1 + else + battery_powered = 0 + + var/power_usage = cpu.screen_on ? base_active_power_usage : base_idle_power_usage + for(var/obj/item/weapon/computer_hardware/CH in src.cpu.get_all_components()) + if(CH.enabled) + power_usage += CH.power_usage + + // Wireless APC connection exists. + if(tesla_link && tesla_link.enabled) + idle_power_usage = power_usage + active_power_usage = idle_power_usage + 100 // APCLink only charges at 100W rate, but covers any power usage. + use_power = 1 + // Battery is not fully charged. Begin slowly recharging. + if(cpu.battery_module && (cpu.battery_module.battery.charge < cpu.battery_module.battery.maxcharge)) + use_power = 2 + + if(cpu.battery_module && powered() && (use_power == 2)) // Battery charging itself + cpu.battery_module.battery.give(100 * CELLRATE) + else if(cpu.battery_module && !powered()) // Unpowered, but battery covers the usage. + cpu.battery_module.battery.use(idle_power_usage * CELLRATE) + + else // No wireless connection run only on battery. + use_power = 0 + if (cpu.battery_module) + cpu.battery_module.battery.use(power_usage * CELLRATE) + cpu.last_power_usage = power_usage + +// Modular computers can have battery in them, we handle power in previous proc, so prevent this from messing it up for us. +/obj/machinery/modular_computer/power_change() + if(battery_powered) + return + else + ..() + +/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if(cpu) + return cpu.attackby(W, user) + return ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm new file mode 100644 index 0000000000..879b675c1f --- /dev/null +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -0,0 +1,45 @@ +/obj/machinery/modular_computer/console/ + name = "console" + desc = "A stationary computer." + + icon = 'icons/obj/modular_console.dmi' + icon_state = "console" + icon_state_unpowered = "console" + screen_icon_state_menu = "menu" + hardware_flag = PROGRAM_CONSOLE + var/console_department = "" // Used in New() to set network tag according to our area. + anchored = 1 + density = 1 + base_idle_power_usage = 100 + base_active_power_usage = 500 + max_hardware_size = 3 + steel_sheet_cost = 20 + +/obj/machinery/modular_computer/console/buildable/New() + ..() + // User-built consoles start as empty frames. + qdel(tesla_link) + qdel(cpu.network_card) + qdel(cpu.hard_drive) + +/obj/machinery/modular_computer/console/New() + ..() + cpu.battery_module = null + cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + tesla_link.enabled = 1 + tesla_link.critical = 1 // Consoles don't usually come with cells, and this prevents people from disabling their only power source, as they wouldn't be able to enable it again. + cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) // Consoles generally have better HDDs due to lower space limitations + var/area/A = get_area(src) + // Attempts to set this console's tag according to our area. Since some areas have stuff like "XX - YY" in their names we try to remove that too. + if(A && console_department) + cpu.network_card.identification_string = replacetext(replacetext(replacetext("[A.name] [console_department] Console", " ", "_"), "-", ""), "__", "_") // Replace spaces with "_" + else if(A) + cpu.network_card.identification_string = replacetext(replacetext(replacetext("[A.name] Console", " ", "_"), "-", ""), "__", "_") + else if(console_department) + cpu.network_card.identification_string = replacetext(replacetext(replacetext("[console_department] Console", " ", "_"), "-", ""), "__", "_") + else + cpu.network_card.identification_string = "Unknown Console" + if(cpu) + cpu.screen_on = 1 + update_icon() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_laptop.dm b/code/modules/modular_computers/computers/machinery/modular_laptop.dm new file mode 100644 index 0000000000..ff2e851dc6 --- /dev/null +++ b/code/modules/modular_computers/computers/machinery/modular_laptop.dm @@ -0,0 +1,107 @@ +// Laptop in it's item state, can be carried around. + +/obj/item/laptop + name = "laptop computer" + desc = "A portable computer. It is closed." + icon = 'icons/obj/modular_laptop.dmi' + icon_state = "laptop-closed" + item_state = "laptop-inhand" + w_class = 3 + var/obj/machinery/modular_computer/laptop/stored_computer = null + +/obj/item/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)) + usr << "You can't do that." + return + + if(!Adjacent(usr)) + usr << "You can't reach it." + return + + if(!istype(loc,/turf)) + 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.forceMove(src.loc) + usr << "\The [src] crumbles to pieces." + spawn(5) + qdel(src) + return + + stored_computer.forceMove(src.loc) + stored_computer.stat &= ~MAINT + stored_computer.update_icon() + if(stored_computer.cpu) + stored_computer.cpu.screen_on = 1 + loc = stored_computer + usr << "You open \the [src]." + + +/obj/item/laptop/AltClick() + if(Adjacent(usr)) + open_computer() + +// The actual laptop +/obj/machinery/modular_computer/laptop + name = "laptop computer" + desc = "A portable computer" + var/obj/item/laptop/portable = null // Portable version of this computer, dropped on alt-click to allow transport. Used by laptops. + hardware_flag = PROGRAM_LAPTOP + icon_state_unpowered = "laptop-open" // Icon state when the computer is turned off + icon = 'icons/obj/modular_laptop.dmi' + icon_state = "laptop-open" + base_idle_power_usage = 25 + base_active_power_usage = 200 + max_hardware_size = 2 + +/obj/machinery/modular_computer/laptop/buildable/New() + ..() + // User-built consoles start as empty frames. + qdel(tesla_link) + qdel(cpu.network_card) + qdel(cpu.hard_drive) + +// Close the computer. collapsing it into movable item that can't be used. +/obj/machinery/modular_computer/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)) + usr << "You can't do that." + return + + if(!Adjacent(usr)) + usr << "You can't reach it." + return + + close_laptop(usr) + +/obj/machinery/modular_computer/laptop/proc/close_laptop(mob/user = null) + if(istype(loc,/obj/item/laptop)) + return + if(!istype(loc,/turf)) + return + + if(!portable) + portable=new + portable.stored_computer = src + + portable.forceMove(src.loc) + src.forceMove(portable) + stat |= MAINT + if(user) + user << "You close \the [src]." + if(cpu) + cpu.screen_on = 0 + +/obj/machinery/modular_computer/laptop/AltClick() + if(Adjacent(usr)) + close_laptop() \ 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/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..a87ce1ae72 --- /dev/null +++ b/code/modules/modular_computers/file_system/data.dm @@ -0,0 +1,17 @@ +// /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" + +/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(var/block_size = 250) + 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/program.dm b/code/modules/modular_computers/file_system/program.dm new file mode 100644 index 0000000000..f75e8271b5 --- /dev/null +++ b/code/modules/modular_computers/file_system/program.dm @@ -0,0 +1,127 @@ +// /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* the program. + 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/running = 0 // Set to 1 when the program is run and back to 0 when it's stopped. + 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/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 + +/datum/computer_file/program/New(var/obj/item/modular_computer/comp = null) + ..() + if(comp && istype(comp)) + computer = comp + +/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 + +// 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) + user << "\The [computer] flashes an \"Hardware Error - Incompatible software\" warning." + return 0 + return 1 + +// Called by Process() on device that runs us, once every tick. +/datum/computer_file/program/proc/process_tick() + return 1 + +// 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 + + var/obj/item/weapon/card/id/I = user.GetIdCard() + if(!I) + if(loud) + 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) + 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)) + if(nanomodule_path) + NM = new nanomodule_path(computer) // Computer is passed here as it's (probably!) physical object. Some UI's perform get_turf() and passing program datum wouldn't go well with this. + NM.program = src // Set the program reference to separate variable, instead. + if(requires_ntnet && network_destination) + generate_network_log("Connection opened to [network_destination].") + running = 1 + 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) + running = 0 + 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(!running) // 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(computer) + computer.Topic(href, href_list) + ..() diff --git a/code/modules/modular_computers/file_system/programs/_engineering.dm b/code/modules/modular_computers/file_system/programs/_engineering.dm new file mode 100644 index 0000000000..d2a7521b43 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/_engineering.dm @@ -0,0 +1,48 @@ +// These programs are associated with engineering. + +/datum/computer_file/program/power_monitor + filename = "powermonitor" + filedesc = "Power Monitoring" + nanomodule_path = /datum/nano_module/power_monitor/ + program_icon_state = "power_monitor" + extended_desc = "This program connects to sensors around the station to provide information about electrical systems" + required_access = access_engine + requires_ntnet = 1 + network_destination = "power monitoring system" + size = 9 + +/datum/computer_file/program/alarm_monitor + filename = "alarmmonitor" + filedesc = "Alarm Monitoring" + nanomodule_path = /datum/nano_module/alarm_monitor/engineering + program_icon_state = "alarm_monitor" + extended_desc = "This program provides visual interface for station's alarm system." + requires_ntnet = 1 + network_destination = "alarm monitoring network" + size = 5 + +/datum/computer_file/program/atmos_control + filename = "atmoscontrol" + filedesc = "Atmosphere Control" + nanomodule_path = /datum/nano_module/atmos_control + program_icon_state = "atmos_control" + extended_desc = "This program allows remote control of air alarms around the station" + 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/computer_file/program/rcon_console + filename = "rconconsole" + filedesc = "RCON Remote Control" + nanomodule_path = /datum/nano_module/rcon + program_icon_state = "generic" + extended_desc = "This program allows remote control of power distribution systems around the station." + 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 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/_medical.dm b/code/modules/modular_computers/file_system/programs/_medical.dm new file mode 100644 index 0000000000..1cbba48fd6 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/_medical.dm @@ -0,0 +1,10 @@ +/datum/computer_file/program/suit_sensors + filename = "sensormonitor" + filedesc = "Suit Sensors Monitoring" + nanomodule_path = /datum/nano_module/crew_monitor + program_icon_state = "crew" + 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 \ 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..0dce4cde6c --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -0,0 +1,104 @@ +/datum/computer_file/program/ntnet_dos + filename = "ntn_dos" + filedesc = "DoS Traffic Generator" + program_icon_state = "hostile" + 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/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 * 10 + if(2) + dos_speed = NTNETSPEED_HIGHSIGNAL * 10 + if(3) + dos_speed = NTNETSPEED_ETHERNET * 10 + if(target && executed) + target.dos_overload += dos_speed + if(target.is_operational()) + target.dos_sources.Remove(src) + target = null + error = "Connection to destination relay lost." + +/datum/computer_file/program/ntnet_dos/kill_program(var/forced) + target.dos_sources.Remove(src) + target = null + executed = 0 + + ..(forced) + +/datum/nano_module/computer_dos + name = "DoS Traffic Generator" + +/datum/nano_module/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 + if(href_list["PRG_reset"]) + target.dos_sources.Remove(src) + target = null + executed = 0 + error = "" + return + 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 \ 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..baa7b5d291 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -0,0 +1,77 @@ +/datum/computer_file/program/revelation + filename = "revelation" + filedesc = "Revelation" + program_icon_state = "hostile" + 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/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) + computer.visible_message("\The [computer]'s screen brightly flashes and loud electrical buzzing is heard.") + computer.enabled = 0 + computer.update_icon() + qdel(computer.hard_drive) + if(computer.battery_module && prob(25)) + qdel(computer.battery_module) + computer.visible_message("\The [computer]'s battery explodes in rain of sparks.") + 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(istype(computer, /obj/item/modular_computer/processor)) + var/obj/item/modular_computer/processor/P = computer + if(P.machinery_computer.tesla_link && prob(50)) + qdel(P.machinery_computer.tesla_link) + computer.visible_message("\The [computer]'s tesla link explodes in rain of sparks.") + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(10, 1, computer.loc) + s.start() + +/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 + +/datum/computer_file/program/revelation/clone() + var/datum/computer_file/program/revelation/temp = ..() + temp.armed = armed + return temp + +/datum/nano_module/revelation + name = "Revelation Virus" + +/datum/nano_module/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/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm new file mode 100644 index 0000000000..a0d3505935 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/configurator.dm @@ -0,0 +1,80 @@ +// 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" + unsendable = 1 + undeletable = 1 + size = 4 + available_on_ntnet = 0 + requires_ntnet = 0 + nanomodule_path = /datum/nano_module/computer_configurator/ + +/datum/nano_module/computer_configurator + name = "NTOS Computer Configuration Tool" + var/obj/machinery/modular_computer/stationary = null + var/obj/item/modular_computer/movable = null + +/datum/nano_module/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) + stationary = program.computer + movable = program.computer + + if(!istype(stationary)) + stationary = null + if(!istype(movable)) + movable = null + + // No computer connection, we can't get data from that. + if(!movable && !stationary) + return 0 + + var/list/data = list() + + if(program) + data = program.get_header_data() + + var/list/hardware = list() + if(stationary) + if(stationary.cpu) + movable = stationary.cpu + hardware.Add(stationary.tesla_link) + else + return + + if(movable) + hardware.Add(movable.network_card) + hardware.Add(movable.hard_drive) + hardware.Add(movable.card_slot) + hardware.Add(movable.nano_printer) + hardware.Add(movable.battery_module) + 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() + ui.set_auto_update(1) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm new file mode 100644 index 0000000000..c1de5820ea --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -0,0 +1,227 @@ +/datum/computer_file/program/filemanager + filename = "filemanager" + filedesc = "NTOS File Manager" + extended_desc = "This program allows management of files." + program_icon_state = "generic" + size = 8 + requires_ntnet = 0 + available_on_ntnet = 0 + undeletable = 1 + nanomodule_path = /datum/nano_module/computer_filemanager/ + var/open_file + var/error + +/datum/computer_file/program/filemanager/Topic(href, href_list) + if(href_list["PRG_openfile"]) + open_file = href_list["PRG_openfile"] + if(href_list["PRG_newtextfile"]) + var/newname = sanitize(input(usr, "Enter file name or leave blank to cancel:", "File rename")) + if(!newname) + return + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + 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"]) + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + var/datum/computer_file/file = HDD.find_file_by_name(href_list["PRG_deletefile"]) + if(!file || file.undeletable) + return + HDD.remove_file(file) + if(href_list["PRG_usbdeletefile"]) + var/obj/item/weapon/computer_hardware/hard_drive/RHDD = computer.portable_drive + if(!RHDD) + return + var/datum/computer_file/file = RHDD.find_file_by_name(href_list["PRG_usbdeletefile"]) + if(!file || file.undeletable) + return + RHDD.remove_file(file) + if(href_list["PRG_closefile"]) + open_file = null + error = null + if(href_list["PRG_clone"]) + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + var/datum/computer_file/F = HDD.find_file_by_name(href_list["PRG_clone"]) + if(!F || !istype(F)) + return + var/datum/computer_file/C = F.clone(1) + HDD.store_file(C) + if(href_list["PRG_rename"]) + var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive + if(!HDD) + return + var/datum/computer_file/file = HDD.find_file_by_name(href_list["PRG_rename"]) + if(!file || !istype(file)) + return + var/newname = sanitize(input(usr, "Enter new file name:", "File rename", file.filename)) + if(file && newname) + file.filename = newname + if(href_list["PRG_edit"]) + if(!open_file) + return + 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(open_file) + if(!F || !istype(F)) + return + // 16384 is the limit for file length in characters. Currently, papers have value of 2048 so this is 8 times as long, since we can't edit parts of the file independently. + var/newtext = sanitize(html_decode(input(usr, "Editing file [open_file]. You may use most tags used in paper formatting:", "Text Editor", F.stored_data) as message), 16384) + 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:

[F.stored_data]

" + HDD.store_file(backup) + if(href_list["PRG_printfile"]) + if(!open_file) + return + 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(open_file) + if(!F || !istype(F)) + return + if(!computer.nano_printer) + error = "Missing Hardware: Your computer does not have required hardware to complete this operation." + return + if(!computer.nano_printer.print_text(parse_tags(F.stored_data))) + error = "Hardware error: Printer was unable to print the file. It may be out of paper." + return + if(href_list["PRG_copytousb"]) + 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 + var/datum/computer_file/F = HDD.find_file_by_name(href_list["PRG_copytousb"]) + if(!F || !istype(F)) + return + var/datum/computer_file/C = F.clone(0) + RHDD.store_file(C) + if(href_list["PRG_copyfromusb"]) + 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 + var/datum/computer_file/F = RHDD.find_file_by_name(href_list["PRG_copyfromusb"]) + if(!F || !istype(F)) + return + var/datum/computer_file/C = F.clone(0) + HDD.store_file(C) + ..(href, href_list) + +/datum/computer_file/program/filemanager/proc/parse_tags(var/t) + 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, "\[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, "\[/list\]", "
    ") + t = replacetext(t, "\[table\]", "") + t = replacetext(t, "\[/table\]", "
    ") + t = replacetext(t, "\[grid\]", "") + t = replacetext(t, "\[/grid\]", "
    ") + t = replacetext(t, "\[row\]", "") + t = replacetext(t, "\[tr\]", "") + t = replacetext(t, "\[td\]", "") + t = replacetext(t, "\[cell\]", "") + t = replacetext(t, "\[logo\]", "") + return t + + +/datum/nano_module/computer_filemanager + name = "NTOS File Manager" + +/datum/nano_module/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/datum/computer_file/program/filemanager/PRG + var/list/data = list() + if(program) + data = program.get_header_data() + PRG = program + else + return + + 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"] = PRG.parse_tags(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() + ui.set_auto_update(1) + diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm new file mode 100644 index 0000000000..d148036ee5 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -0,0 +1,160 @@ +/datum/computer_file/program/ntnetdownload + filename = "ntndownloader" + filedesc = "NTNet Software Download Tool" + program_icon_state = "generic" + 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/computer_ntnetdownload/ + 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 = "" + +/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(!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 + + 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/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 + +/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 + +/datum/computer_file/program/ntnetdownload/process_tick() + if(!downloaded_file) + return + if(download_completion >= downloaded_file.size) + complete_file_download() + // 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"]) + return + if(href_list["PRG_reseterror"]) + if(downloaderror) + download_completion = 0 + download_netspeed = 0 + downloaded_file = null + downloaderror = "" + return + return 0 + + +/datum/nano_module/computer_ntnetdownload + name = "Network Downloader" + var/obj/item/modular_computer/my_computer = null + +/datum/nano_module/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 + else 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) + else // No download running, pick file. + 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)) + continue + all_entries.Add(list(list( + "filename" = P.filename, + "filedesc" = P.filedesc, + "fileinfo" = P.extended_desc, + "size" = P.size + ))) + 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 + ))) + data["hacked_programs"] = hacked_programs + + data["downloadable_programs"] = all_entries + 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) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm new file mode 100644 index 0000000000..bd7fe683a8 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm @@ -0,0 +1,85 @@ +/datum/computer_file/program/ntnetmonitor + filename = "ntmonitor" + filedesc = "NTNet Diagnostics and Monitoring" + program_icon_state = "comm_monitor" + extended_desc = "This program monitors stationwide 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" + +/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 = list() + if(program) + data = program.get_header_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 + + + 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) + 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) + 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) + var/mob/user = usr + if(!user) + return + 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() + if(href_list["updatemaxlogs"]) + var/mob/user = usr + 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) + if(href_list["toggle_function"]) + if(!ntnet_global) + return + ntnet_global.toggle_function(href_list["toggle_function"]) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm new file mode 100644 index 0000000000..3e38c9abeb --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -0,0 +1,201 @@ +/datum/computer_file/program/chatclient + filename = "ntnrc_client" + filedesc = "NTNet Relay Chat Client" + program_icon_state = "command" + extended_desc = "This program allows communication over NTNRC network" + size = 8 + requires_ntnet = 1 + requires_ntnet_feature = NTNET_COMMUNICATION + network_destination = "NTNRC server" + available_on_ntnet = 1 + nanomodule_path = /datum/nano_module/computer_chatclient/ + 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(href_list["PRG_speak"]) + if(!channel) + return + var/mob/living/user = usr + var/message = sanitize(input(user, "Enter message or leave blank to cancel: ")) + if(!message || !channel) + return + channel.add_message(message, username) + + if(href_list["PRG_joinchannel"]) + var/datum/ntnet_conversation/C + for(var/datum/ntnet_conversation/chan in ntnet_global.chat_channels) + if(chan.title == href_list["PRG_joinchannel"]) + C = chan + break + + if(!C) + return + + if(netadmin_mode) + channel = C // Bypasses normal leave/join and passwords. Technically makes the user invisible to others. + return + + 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 + C.add_client(src) + channel = C + if(href_list["PRG_leavechannel"]) + if(channel) + channel.remove_client(src) + channel = null + if(href_list["PRG_newchannel"]) + var/mob/living/user = usr + var/channel_title = sanitize(input(user,"Enter channel name or leave blank to cancel:")) + 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"]) + 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 + 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"]) + var/mob/living/user = usr + var/newname = sanitize(input(user,"Enter new nickname or leave blank to cancel:")) + if(!newname) + return + if(channel) + channel.add_status_message("[username] is now known as [newname].") + username = newname + + if(href_list["PRG_savelog"]) + 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 + 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 + 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"]) + if(!operator_mode || !channel) + return + var/mob/living/user = usr + var/newname = sanitize(input(user, "Enter new channel name or leave blank to cancel:")) + 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"]) + if(channel && ((channel.operator == src) || netadmin_mode)) + del(channel) + if(href_list["PRG_setpassword"]) + if(!channel || ((channel.operator != src) && !netadmin_mode)) + return + + 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 + + if(newpassword == "nopassword") + channel.password = "" + else + channel.password = newpassword + + ..(href, href_list) + + +/datum/computer_file/program/chatclient/kill_program(var/forced = 0) + if(channel) + channel.remove_client(src) + channel = null + ..(forced) + +/datum/nano_module/computer_chatclient + name = "NTNet Relay Chat Client" + +/datum/nano_module/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 + ))) + 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) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/nttransfer.dm b/code/modules/modular_computers/file_system/programs/nttransfer.dm new file mode 100644 index 0000000000..de2dd65aa1 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/nttransfer.dm @@ -0,0 +1,197 @@ +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" + 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/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/download_netspeed = 0 // Our connectivity speed in GQ/s + 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 + update_netspeed() + 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.download_netspeed, download_netspeed) + 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) + + + +/datum/computer_file/program/nttransfer/proc/update_netspeed() + download_netspeed = 0 + switch(ntnet_status) + if(1) + download_netspeed = NTNETSPEED_LOWSIGNAL + if(2) + download_netspeed = NTNETSPEED_HIGHSIGNAL + if(3) + download_netspeed = NTNETSPEED_ETHERNET + +// 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/computer_nttransfer + name = "NTNet P2P Transfer Client" + +/datum/nano_module/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) + 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 + 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 + 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 + 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 + if(href_list["PRG_uploadmenu"]) + upload_menu = 1 + return 0 \ No newline at end of file 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..ae685c4b37 --- /dev/null +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -0,0 +1,59 @@ +// 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 + + 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" + 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" + 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" + 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" + 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" + 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 device that creates it's own bluespace dimension. This dimension may be used to store massive amounts of energy." + icon_state = "battery_lambda" + hardware_size = 1 + battery_rating = 1000000 + + + +/obj/item/weapon/computer_hardware/battery_module/New() + battery = new/obj/item/weapon/cell(src) + battery.maxcharge = battery_rating + battery.charge = battery_rating + ..() \ 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..1ddd80d04f --- /dev/null +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -0,0 +1,16 @@ +/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 + + 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 + stored_card.loc = get_turf(holder2) + holder2 = null + ..() \ 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..e595c56800 --- /dev/null +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -0,0 +1,146 @@ +/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 + 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 + 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 + 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 + 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 + 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 + max_capacity = 32 + icon_state = "hdd_micro" + hardware_size = 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/store_file(var/datum/computer_file/F) + if(!F || !istype(F)) + return 0 + + if(!can_store_file(F.size)) + 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(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(!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 + ..() + +/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/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm new file mode 100644 index 0000000000..580d73745b --- /dev/null +++ b/code/modules/modular_computers/hardware/hardware.dm @@ -0,0 +1,23 @@ +/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 + +/obj/item/weapon/computer_hardware/New(var/obj/L) + if(istype(L, /obj/machinery/modular_computer)) + var/obj/machinery/modular_computer/C = L + if(C.cpu) + holder2 = C.cpu + return + if(istype(L, /obj/item/modular_computer)) + holder2 = L + return + +/obj/item/weapon/computer_hardware/Destroy() + holder2 = null + ..() \ 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..5bc77ddf54 --- /dev/null +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -0,0 +1,59 @@ +/obj/item/weapon/computer_hardware/nano_printer + name = "nano printer" + desc = "Small integrated printer with scanner and paper recycling module." + power_usage = 50 + icon_state = "printer" + hardware_size = 1 + var/stored_paper = 5 + var/max_paper = 10 + var/obj/item/weapon/paper/P = null // Currently stored paper for scanning. + + +/obj/item/weapon/computer_hardware/nano_printer/proc/print_text(var/text_to_print) + if(!stored_paper) + return 0 + + // Recycle stored paper + if(P) + stored_paper++ + qdel(P) + P = null + + P = new/obj/item/weapon/paper(get_turf(holder2)) + P.info = text_to_print + P.update_icon() + stored_paper-- + P = null + return 1 + +/obj/item/weapon/computer_hardware/nano_printer/proc/load_paper(var/obj/item/weapon/paper/paper) + if(!paper || !istype(paper)) + return 0 + + // We already have paper loaded, recycle it. + if(P && try_recycle_paper()) + P = paper + P.forceMove(holder2) + +/obj/item/weapon/computer_hardware/nano_printer/proc/try_recycle_paper() + if(!P) + return 0 + + if(stored_paper >= max_paper) + return 0 + + qdel(P) + P = null + return 1 + +/obj/item/weapon/computer_hardware/nano_printer/Destroy() + if(holder2 && (holder2.nano_printer == src)) + holder2.nano_printer = null + if(P) + if(holder2) + P.forceMove(get_turf(holder2)) + else + qdel(P) + P = null + holder2 = null + ..() \ 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..1640105865 --- /dev/null +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -0,0 +1,73 @@ +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 + 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. + +/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 off-station." + long_range = 1 + 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 NTNet. This one uses wired connection." + ethernet = 1 + 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 + ..() + +// 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])" + +// 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(ethernet) // Computer is connected via wired connection. + return 3 + + if(!ntnet_global || !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((T && istype(T)) && T.z in using_map.station_levels) + return 2 + + 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 + ..() \ No newline at end of file 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..411d917802 --- /dev/null +++ b/code/modules/modular_computers/hardware/portable_hard_drive.dm @@ -0,0 +1,31 @@ +// 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. It's capacity is 16 GQ" + power_usage = 10 + icon_state = "flashdrive_basic" + hardware_size = 1 + max_capacity = 16 + + +/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. It's capacity is 64 GQ" + power_usage = 20 + icon_state = "flashdrive_advanced" + hardware_size = 1 + max_capacity = 64 + + +/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. It's capacity is 256 GQ" + power_usage = 40 + icon_state = "flashdrive_super" + hardware_size = 1 + max_capacity = 256 + +/obj/item/weapon/computer_hardware/hard_drive/portable/New() + ..() + stored_files = list() + recalculate_size() \ 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..6943b75ae8 --- /dev/null +++ b/code/modules/modular_computers/hardware/tesla_link.dm @@ -0,0 +1,19 @@ +/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 = 0 // Starts turned off + icon_state = "teslalink" + hardware_size = 2 // Can't be installed into tablets + var/obj/machinery/modular_computer/holder + +/obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L) + if(istype(L, /obj/machinery/modular_computer)) + holder = L + return + ..(L) + +/obj/item/weapon/computer_hardware/tesla_link/Destroy() + if(holder && (holder.tesla_link == src)) + holder.tesla_link = null + ..() \ 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..fb4358d32d --- /dev/null +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -0,0 +1,278 @@ +// A vendor machine for modular computer portable devices - Laptops and Tablets + +/obj/machinery/lapvend + name = "computer vendor" + desc = "A vending machine with microfabricator capable of dispensing various NT-branded computers" + icon = 'icons/obj/vending.dmi' + icon_state = "robotics" + layer = 2.9 + anchored = 1 + density = 1 + + // The actual laptop/tablet + var/obj/machinery/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_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 (LAPTOP ONLY) + 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_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_battery) + if(1) // Basic(750C) + if(fabricate) + fabricated_laptop.cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module(fabricated_tablet) + if(2) // Upgraded(1100C) + if(fabricate) + fabricated_laptop.cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/advanced(fabricated_tablet) + total_price += 199 + if(3) // Advanced(1500C) + if(fabricate) + fabricated_laptop.cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(fabricated_tablet) + total_price += 499 + switch(dev_disk) + if(1) // Basic(128GQ) + if(fabricate) + fabricated_laptop.cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive(fabricated_laptop.cpu) + if(2) // Upgraded(256GQ) + if(fabricate) + fabricated_laptop.cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/advanced(fabricated_laptop.cpu) + total_price += 99 + if(3) // Advanced(512GQ) + if(fabricate) + fabricated_laptop.cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(fabricated_laptop.cpu) + total_price += 299 + switch(dev_netcard) + if(1) // Basic(Short-Range) + if(fabricate) + fabricated_laptop.cpu.network_card = new/obj/item/weapon/computer_hardware/network_card(fabricated_laptop.cpu) + total_price += 99 + if(2) // Advanced (Long Range) + if(fabricate) + fabricated_laptop.cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/advanced(fabricated_laptop.cpu) + 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.cpu.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(fabricated_laptop.cpu) + if(dev_card) + total_price += 199 + if(fabricate) + fabricated_laptop.cpu.card_slot = new/obj/item/weapon/computer_hardware/card_slot(fabricated_laptop.cpu) + + return total_price + else if(devtype == 2) // Tablet, more expensive, not everyone could probably afford this. + if(fabricate) + fabricated_tablet = new(src) + 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) + 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_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 + 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["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) + fabricated_laptop.forceMove(src.loc) + fabricated_laptop.close_laptop() + fabricated_laptop = null + else if((devtype == 2) && fabricated_tablet) + fabricated_tablet.forceMove(src.loc) + 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/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index ec43035ed8..1a230dc908 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -58,6 +58,9 @@ /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] + if(program) + data = program.get_header_data() + var/categories[0] for(var/datum/alarm_handler/AH in alarm_handlers) categories[++categories.len] = list("category" = AH.category, "alarms" = list()) @@ -83,6 +86,8 @@ 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(program) // 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/nano/modules/atmos_control.dm index 3924f65af7..26adf56c6c 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/nano/modules/atmos_control.dm @@ -34,6 +34,9 @@ var/alarms[0] var/turf/T = get_turf(nano_host()) + if(program) + data = program.get_header_data() + // 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) @@ -51,6 +54,8 @@ 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(program) // 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 diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm index 319da90715..a593368aee 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/nano/modules/crew_monitor.dm @@ -17,6 +17,8 @@ /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] + if(program) + data = program.get_header_data() var/turf/T = get_turf(nano_host()) data["isAI"] = isAI(user) diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 8ced14f4c5..0b79001192 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,9 +1,16 @@ /datum/nano_module var/name var/host + var/datum/computer_file/program/program = null // Program-Based computer program that runs this nano module. Defaults to null. /datum/nano_module/New(var/host) src.host = host + // Machinery-based computers wouldn't work w/o this as nano will assume they're items inside containers. + if(istype(host, /obj/item/modular_computer/processor)) + var/obj/item/modular_computer/processor/H = host + src.host = H.machinery_computer + else + src.host = host /datum/nano_module/Destroy() host = null @@ -14,3 +21,10 @@ /datum/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) return CanUseTopic(usr, state) == STATUS_INTERACTIVE + +/datum/nano_module/Topic(href, href_list) + // Calls forwarded to PROGRAM itself should begin with "PRG_" + // Calls forwarded to COMPUTER running the program should begin with "PC_" + if(program) + program.Topic(href, href_list) + return ..() \ No newline at end of file diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/nano/modules/power_monitor.dm index ae5dc44f29..c3f176b0ba 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/nano/modules/power_monitor.dm @@ -7,8 +7,13 @@ ..() refresh_sensors() +// 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 = list() + if(program) + data = program.get_header_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 @@ -31,6 +36,8 @@ 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(program) // 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 @@ -44,6 +51,8 @@ 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) diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/nano/modules/rcon.dm index 65c1acfe36..0153b2ad9f 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/nano/modules/rcon.dm @@ -10,6 +10,8 @@ /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] + if(program) + data = program.get_header_data() // SMES DATA (simplified view) var/list/smeslist[0] @@ -41,6 +43,8 @@ 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(program) // 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/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/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..7fc891999e --- /dev/null +++ b/code/modules/research/designs/modular_computer.dm @@ -0,0 +1,202 @@ +// 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("metal" = 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("metal" = 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("metal" = 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("metal" = 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("metal" = 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("metal" = 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("metal" = 500, "glass" = 100) + chemicals = list("sacid" = 20) + 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("metal" = 1000, "glass" = 200) + chemicals = list("sacid" = 20) + 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("metal" = 5000, "glass" = 400) + chemicals = list("sacid" = 20) + 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) + chemicals = list("sacid" = 20) + 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) + chemicals = list("sacid" = 20) + 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) + chemicals = list("sacid" = 20) + 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("metal" = 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("metal" = 3000) + build_path = /obj/item/weapon/computer_hardware/nano_printer + sort_string = "VBAAN" + +// Card slot +/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("metal" = 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("metal" = 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("metal" = 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("metal" = 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("metal" = 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("metal" = 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("metal" = 4000) + build_path = /obj/item/weapon/computer_hardware/battery_module/micro + sort_string = "VBAAU" diff --git a/html/changelogs/Novacat - modularcomputers.yml b/html/changelogs/Novacat - modularcomputers.yml new file mode 100644 index 0000000000..796695a722 --- /dev/null +++ b/html/changelogs/Novacat - modularcomputers.yml @@ -0,0 +1,36 @@ +################################ +# 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." diff --git a/icons/NTOS/battery_icons/batt_100.gif b/icons/NTOS/status_icons/batt_100.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_100.gif rename to icons/NTOS/status_icons/batt_100.gif diff --git a/icons/NTOS/battery_icons/batt_20.gif b/icons/NTOS/status_icons/batt_20.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_20.gif rename to icons/NTOS/status_icons/batt_20.gif diff --git a/icons/NTOS/battery_icons/batt_40.gif b/icons/NTOS/status_icons/batt_40.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_40.gif rename to icons/NTOS/status_icons/batt_40.gif diff --git a/icons/NTOS/battery_icons/batt_5.gif b/icons/NTOS/status_icons/batt_5.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_5.gif rename to icons/NTOS/status_icons/batt_5.gif diff --git a/icons/NTOS/battery_icons/batt_60.gif b/icons/NTOS/status_icons/batt_60.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_60.gif rename to icons/NTOS/status_icons/batt_60.gif diff --git a/icons/NTOS/battery_icons/batt_80.gif b/icons/NTOS/status_icons/batt_80.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_80.gif rename to icons/NTOS/status_icons/batt_80.gif diff --git a/icons/NTOS/battery_icons/batt_none.gif b/icons/NTOS/status_icons/batt_none.gif similarity index 100% rename from icons/NTOS/battery_icons/batt_none.gif rename to icons/NTOS/status_icons/batt_none.gif diff --git a/icons/NTOS/status_icons/charging.gif b/icons/NTOS/status_icons/charging.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c66c9d17b501a21a27d31d9acfacd5e9a33a65e GIT binary patch literal 106 zcmZ?wbhEHb6krfwSjYeZ2M!$g@dLzA{Lk&@8WQa67~pE8XTZz|68g!)X~e+HpaYTz zX<=Z}nA6{RU=~kf^~RN2zWd5LHu}y}lahaFa7e3#yJ%U#&ZCo~n=D)31~W2P0|2j_ BA7B6g literal 0 HcmV?d00001 diff --git a/icons/NTOS/status_icons/sig_high.gif b/icons/NTOS/status_icons/sig_high.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb9c504115a9cd74d4ad102be521deafc8504f1 GIT binary patch literal 337 zcmZ?wbhEHb6krfwIK%(~Kfw6M4~7E=4uJSzp!lEL&ow02*)hP?NY8+o5h$qmlZ7*d zft5iAqyVIyf!QQt*BxFiv6pFku4cVja$fvMs>4nWrV|UZ4sKd7`_Nefjr>yS=MOn{g^eI6Re91RhJAF RUGp?VSYFK9m(Ijs4FINwE@%J% literal 0 HcmV?d00001 diff --git a/icons/NTOS/status_icons/sig_none.gif b/icons/NTOS/status_icons/sig_none.gif new file mode 100644 index 0000000000000000000000000000000000000000..e43f72feda1358d4f98c9c659ca362c7b735dfee GIT binary patch literal 154 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 literal 0 HcmV?d00001 diff --git a/icons/obj/modular_laptop.dmi b/icons/obj/modular_laptop.dmi new file mode 100644 index 0000000000000000000000000000000000000000..583def71e5082122985ce3284f217bfe5de58d8c GIT binary patch literal 25642 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 YX+An$r|X>scBWFWllCXdk6(ZA4_k6KHvj+t literal 0 HcmV?d00001 diff --git a/icons/obj/modular_tablet.dmi b/icons/obj/modular_tablet.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9583ce4a86bd40b28297f9a19972f3ea28c4d513 GIT binary patch literal 1203 zcmV;k1WfyhP)%ylnS!z1xa! zplC73M_JykMAq4w+Z3omWG&dH#ZFeG=u=G_4=L{?jhDRC#V4>BH3{vS;1-P7Bv z*0aD0y*HsA$33JhICDsDk^h=n9iKrB?XZdCRf@if%GH48F<3?#XR4lgpC{|NEk?Eu zW*c6R8VEqPn(dXQJfG9B$EYg|Oz378Y8(*XGz1W?#2&yo?5+e8Ox$Wp^e1*e|F5|m zNIw^ULD!w32~|@^_7J{i8D(CIrQGb-$1m{%$kgEkO+rwS0009LNkl(Q>OW z3`AoD#1sPb|9|${CgJ8Gk}_5p>~s(Cw4u>z4J4XQd$|ArKq0s%&aNc~*E~_71J^t! zP@#iRGwr-K(C)nc5#7!i`X>w!$pr+R(rZMW@^mEdfdXmkucC*&R0Gu~peIzhf$9^0 z0T?*gK<%G}nz}!Z-VHbh17}hD7n=INQUU+~0000044gYv(Dis2=J z1qlfA_w)6bz!m~$;0qGCH=#`ZZ(IZ78_?r6agN?!9}#c{s!zaLfOD#z#%7%Eeb@u1 z88|xu0000000000091D0(Rg@CFoJoxjHp z#edbA8VjX8=pYaG`Cwk z^7L5XI|igBMv^}Hv>o{zkPEQtQ=2w9fhM*%PcPvvWJ>@50000000000m13O=tUKrE zTY=*!8*q*{5GN{90daJFpq>gG+jf);xZht_asp%gv)ChVAk-fnFmFJQ7BPDNh$!=X zMYkI$AOYJF+WJFM2St6$r&rErb^Aq}AfFP`TQCil)7ZlQwoe8B|-ntbKvX* z4D z9Uz+lq=kVgdrtq#({K3~&(XZmz4_ijR))4m9@89-*W5WZulLlknX~7~XS7<@-QM-< z)5p3a3k8=ph_;@YD-fCaZO)aKyj=lOOHa#wTkte*^$w}Z9NjwJhnsI~PrIE`a*N4r Z`pwD9_U->OX}Y^(L`Fr2MIZx%H2^2XMuq?Y literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/batt_20.gif b/nano/images/status_icons/batt_20.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d5e38fc888430a7bb2a1062468c7d822d7c66e1 GIT binary patch literal 284 zcmZ?wbhEHb)L;-}IK;rf@PmQD0tgun95?`E!hzy{Za>$MU}whwS0gveMHo^t=VfrUT;SOEL275g-IH&n1op^o z=9lV!P(86h^6mx>t7j(O%Z^Kid|P5Z$GPHY-im1Li@&d`EsQmCFt|K%`J3m`_rh+z z&%XGl`Q`8b4UOWQ*sKjFXl>T}cWXYI3Y~UjK2~sKzM#q(-TuQppDLZbR{Cf!?s%H9 d{c_%U&2Mf?S8e&VTesZc!;Tui{VEI$)&M66a}odm literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/batt_40.gif b/nano/images/status_icons/batt_40.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5cedb996759170d5e2477619ca9f40d66a18c6a GIT binary patch literal 185 zcmZ?wbhEHb)L;-}*u=oV@PmQDg5kh{13!QaB%t`8+s`#5*x50_)kx2PnGq+Z` zi-Cnf2c!(7oq;*qW7nO32B$n%@6~;AcK82A5r&k^c^OP*m|J z3#SnSD}xS51xPysb9ltAJO2z$d9L2e`{L~G{|zi0DVg&!v|283?E4_Kv*7N@w^{Gs zt@&&!blQ>mSizC`f+}Zp`w#bgs&w{R>7%{4<7vkB%X#NDzqu`4wdL1t-ExBuJ8Jy) Vs}Qg&7i3qn2@A+BDa!4#1^~mJZcP9H literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/batt_60.gif b/nano/images/status_icons/batt_60.gif new file mode 100644 index 0000000000000000000000000000000000000000..d39534c8cb03fd6b7580267d38ebbed0e7d16433 GIT binary patch literal 166 zcmZ?wbhEHb)L;-}SjfP@@PmQDg5kh{13;$Ye{Mh5kYH!W09PYD17=2$&`%alE(T@> z9Uz+lq=kVgWlsOf({K3~&(XZmz4_ijR))4m9@89-*W5WZulLlknX~7~XS7<%UFKf1 z`(~4FeCi2qq3|8I_&BGU)(1We&T?Ux91|_L^hVh9IhhrArZ%15RF+p;vVC*Z z9Uz+lq=kVgYfk^l({K3~&(XZmz4_ijR))4m9@89-*W5WZulLlknX~7~XS7<@-8SCU z@UqJKc7ar_(qx0*Qj WFFrMOA(iFsh8__a6&8UE4AubO+dx48 literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/charging.gif b/nano/images/status_icons/charging.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf19ca72876b33bb683ea14aa4d9dc4c6c621bc8 GIT binary patch literal 160 zcmZ?wbhEHb)L;-}SjfP@V8L+UzyXFIKo*1Ie{Mh5kYH!W09PYD17=2$&`%alE(T@> z9gsXo3jy+yJb<5u_TVtSn;qvt0wAPESQ>533&YSr0)^5#} LkH0rFF<1itpY1(Q literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/sig_high.gif b/nano/images/status_icons/sig_high.gif new file mode 100644 index 0000000000000000000000000000000000000000..efb20f6730654a761fa061b451efae0122d0aa71 GIT binary patch literal 182 zcmZ?wbhEHb)L;-}SjfP@V8L+UzyXFIKo*1Ie{Mh5kYH!W09PYD17=2$&`%alBL-#$ z9gsXo3jO_X57g-b8zbsXLHQ^1moO6yJZE zsA1B~Kl!3Vf!jT|?^ePgVB*KO^Q)UQp-((S@6Vw^UIER58u{+UcY pWZL=se|Wpurscs#79FY`73myDPRw|+k>h7VQ0L5*oskR-)&PE-NT2`! literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/sig_low.gif b/nano/images/status_icons/sig_low.gif new file mode 100644 index 0000000000000000000000000000000000000000..08f98baea8e69b04e3b8a8f12f20ad4bb09b2ec8 GIT binary patch literal 179 zcmZ?wbhEHb)L;-}IK;qUVZm_VzyXFIKo-LfAPEDC|GE8KLxPk%Fip~B~z57xb zi)?z*Z*Xy0o|rpPO~Z+yA@$@>1_6#hWrL)ndfU%un{lK$aNjjtzs6(v{wv#ltnFR= VJZVQz-_mTu^o*>a79LIpYXEgwJ&phX literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/sig_none.gif b/nano/images/status_icons/sig_none.gif new file mode 100644 index 0000000000000000000000000000000000000000..79840d8a2bd4b30c263cbc680aa2727dfeb27555 GIT binary patch literal 202 zcmZ?wbhEHb)L;-}IK;rfV8QSMNd5rQ3P*m|J z3#SnSD}xS51xPysb4|pqJO2!r%))zrFb0-CKQlph(PPc@iDJ$HNpG_owf1h(n=`wt zUenMc;IZ>XC+j6^CT7V^4LFneD~G3DvVYsFjzo7kzV8>k`g)oSEfegn*X=s^y{0?n tc4VnY$MhFJy)7CAO2cZKN~((6ntigmW7~}j6!Ut0@@CGO&CkhT4FK
    +Your new computer device you always dreamed of is just four steps away...
    +{{if data.state == 0}} +
    +

    Step 1: Select your device type

    + {{:helper.link('Laptop', 'calc', { "pick_device" : 1 })}} + {{:helper.link('Tablet', 'calc', { "pick_device" : 2 })}} +
    +{{else data.state == 1}} +
    +

    Step 2: Personalise your device

    + + + + + + + + + +
    Current Price: + {{:data.totalprice}} +
    Battery: + {{:helper.link('Standard', null, { "hw_battery" : 1 }, data.hw_battery == 1 ? 'selected' : null)}} + {{:helper.link('Upgraded', null, { "hw_battery" : 2 }, data.hw_battery == 2 ? 'selected' : null)}} + {{:helper.link('Advanced', null, { "hw_battery" : 3 }, data.hw_battery == 3 ? 'selected' : null)}} +
    Hard Drive: + {{:helper.link('Standard', null, { "hw_disk" : 1 }, data.hw_disk == 1 ? 'selected' : null)}} + {{:helper.link('Upgraded', null, { "hw_disk" : 2 }, data.hw_disk == 2 ? 'selected' : null)}} + {{:helper.link('Advanced', null, { "hw_disk" : 3 }, data.hw_disk == 3 ? 'selected' : null)}} +
    Network Card: + {{:helper.link('None', null, { "hw_netcard" : 0 }, data.hw_netcard == 0 ? 'selected' : null)}} + {{:helper.link('Standard', null, { "hw_netcard" : 1 }, data.hw_netcard == 1 ? 'selected' : null)}} + {{:helper.link('Advanced', null, { "hw_netcard" : 2 }, data.hw_netcard == 2 ? 'selected' : null)}} + {{if data.devtype != 2}} +
    Tesla Relay: + {{:helper.link('None', null, { "hw_tesla" : 0 }, data.hw_tesla == 0 ? 'selected' : null)}} + {{:helper.link('Standard', null, { "hw_tesla" : 1 }, data.hw_tesla == 1 ? 'selected' : null)}} + {{/if}} +
    Nano Printer: + {{:helper.link('None', null, { "hw_nanoprint" : 0 }, data.hw_nanoprint == 0 ? 'selected' : null)}} + {{:helper.link('Standard', null, { "hw_nanoprint" : 1 }, data.hw_nanoprint == 1 ? 'selected' : null)}} +
    Card Reader: + {{:helper.link('None', null, { "hw_card" : 0 }, data.hw_card == 0 ? 'selected' : null)}} + {{:helper.link('Standard', null, { "hw_card" : 1 }, data.hw_card == 1 ? 'selected' : null)}} +
    Confirm Order: + {{:helper.link('CONFIRM', null, { "confirm_order" : 1 })}} +
    +
    + Battery allows your device to operate without external utility power source. Advanced batteries increase battery life.
    + Hard Drive stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.
    + Network Card allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.
    + Tesla Relay is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.
    + Nano Printer is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.
    + Card Reader adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards. +
    +{{else data.state == 2}} +

    Step 3: Payment

    + Your device is now ready for fabrication..
    + Please swipe your identification card to finish purchase.
    + Total price: {{:data.totalprice}} +{{else data.state == 3}} +

    Step 4: Thank you for your purchase

    + Should you experience any issues with your new device, contact technical support at support@computerservice.nt +{{/if}} \ No newline at end of file diff --git a/nano/templates/file_manager.tmpl b/nano/templates/file_manager.tmpl new file mode 100644 index 0000000000..71310397d2 --- /dev/null +++ b/nano/templates/file_manager.tmpl @@ -0,0 +1,58 @@ +{{if data.error}} +

    An error has occured and this program can not continue.

    + Additional information: {{:data.error}}
    + Please try again. If the problem persists contact your system administrator for assistance. + {{:helper.link('Restart program', null, { "PRG_closefile" : 1 })}} +{{else}} + {{if data.filename}} +

    Viewing file {{:data.filename}}

    +
    + {{:helper.link('CLOSE', null, { "PRG_closefile" : 1 })}} + {{:helper.link('EDIT', null, { "PRG_edit" : 1 })}} + {{:helper.link('PRINT', null, { "PRG_printfile" : 1 })}} +

    + {{:data.filedata}} + {{else}} +

    Available files (local):

    + +
    File name + File type + File size (GQ) + Operations + {{for data.files}} +
    {{:value.name}} + .{{:value.type}} + {{:value.size}}GQ + + {{:helper.link('VIEW', null, { "PRG_openfile" : value.name })}} + {{:helper.link('DELETE', null, { "PRG_deletefile" : value.name }, value.undeletable ? 'disabled' : null)}} + {{:helper.link('RENAME', null, { "PRG_rename" : value.name }, value.undeletable ? 'disabled' : null)}} + {{:helper.link('CLONE', null, { "PRG_clone" : value.name }, value.undeletable ? 'disabled' : null)}} + {{if data.usbconnected}} + {{:helper.link('EXPORT', null, { "PRG_copytousb" : value.name }, value.undeletable ? 'disabled' : null)}} + {{/if}} + {{/for}} +
    + {{if data.usbconnected}} +

    Available files (portable device):

    + +
    File name + File type + File size (GQ) + Operations + {{for data.usbfiles}} +
    {{:value.name}} + .{{:value.type}} + {{:value.size}}GQ + + {{:helper.link('DELETE', null, { "PRG_usbdeletefile" : value.name }, value.undeletable ? 'disabled' : null)}} + {{if data.usbconnected}} + {{:helper.link('IMPORT', null, { "PRG_copyfromusb" : value.name }, value.undeletable ? 'disabled' : null)}} + {{/if}} + {{/for}} +
    + {{/if}} + {{:helper.link('NEW DATA FILE', null, { "PRG_newtextfile" : 1 })}} + {{/if}} + +{{/if}} \ No newline at end of file diff --git a/nano/templates/laptop_configuration.tmpl b/nano/templates/laptop_configuration.tmpl new file mode 100644 index 0000000000..bd9197feff --- /dev/null +++ b/nano/templates/laptop_configuration.tmpl @@ -0,0 +1,70 @@ +Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device.
    +

    Power Supply

    +
    + Battery Status: +
    +{{if data.battery_exists}} +
    + Active +
    +
    + Battery Rating: +
    +
    + {{:data.battery_rating}} +
    +
    + Battery Charge: +
    +
    + {{:helper.displayBar(data.battery_percent, 0, 100, (data.battery_percent <= 25) ? 'bad' : (data.battery_percent <= 50) ? 'average' : 'good')}} + {{:data.battery_percent}} % +
    +{{else}} +
    + Not Available +
    +{{/if}} +
    + Power Usage: +
    +
    + {{:data.power_usage}}W +
    +

    File System

    +
    + Used Capacity: +
    +
    + {{:helper.displayBar(data.disk_used, 0, data.disk_size, 'good')}} + {{:data.disk_used}}GQ / {{:data.disk_size}}GQ +
    +

    Computer Components

    +{{for data.hardware}} +

    {{:value.name}}

    + {{:value.desc}}
    +
    + State: +
    +
    + {{:value.enabled ? "Enabled" : "Disabled"}} +
    +
    + Power Usage: +
    +
    + {{:value.powerusage}}W +
    + {{if !value.critical}} +
    + Toggle Component: +
    +
    + {{:helper.link("ON", null, {'PC_enable_component' : value.name}, value.enabled ? 'disabled' : null)}} + {{:helper.link("OFF", null, {'PC_disable_component' : value.name}, value.enabled ? null : 'disabled')}} +
    + {{/if}} +

    +{{/for}} +

    +NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559 \ No newline at end of file diff --git a/nano/templates/laptop_mainscreen.tmpl b/nano/templates/laptop_mainscreen.tmpl new file mode 100644 index 0000000000..20aa8fe75c --- /dev/null +++ b/nano/templates/laptop_mainscreen.tmpl @@ -0,0 +1,6 @@ +No program loaded. Please select program from list below. + +{{for data.programs}} +
    {{:helper.link(value.desc, null, {'PC_runprogram' : value.name})}} +{{/for}} +
    \ No newline at end of file diff --git a/nano/templates/layout_default.tmpl b/nano/templates/layout_default.tmpl index ec3e225bb6..a5fd6f5804 100644 --- a/nano/templates/layout_default.tmpl +++ b/nano/templates/layout_default.tmpl @@ -1,3 +1,36 @@ +{{if data.PC_hasheader}} +
    +
    + + {{if data.PC_batteryicon && data.PC_showbatteryicon}} +
    + {{/if}} + {{if data.PC_batterypercent && data.PC_showbatteryicon}} + {{:data.PC_batterypercent}} + {{/if}} + {{if data.PC_ntneticon}} + + {{/if}} + {{if data.PC_apclinkicon}} + + {{/if}} + {{if data.PC_stationtime}} + {{:data.PC_stationtime}} + {{/if}} +
    +
    +
    +
    + +
    {{:helper.link('Shutdown', null, {'PC_shutdown' : 1})}} + {{if data.PC_showexitprogram}} + {{:helper.link('Exit Program', null, {'PC_exit' : 1})}} + {{/if}} +
    +
    +
    +{{/if}} +
    {{:config.title}}
    @@ -25,6 +28,7 @@ {{:helper.link('Shutdown', null, {'PC_shutdown' : 1})}} {{if data.PC_showexitprogram}} {{:helper.link('Exit Program', null, {'PC_exit' : 1})}} + {{:helper.link('Minimize Program', null, {'PC_minimize' : 1})}} {{/if}}
    diff --git a/nano/templates/ntnet_chat.tmpl b/nano/templates/ntnet_chat.tmpl index b81d7b4755..b91afd613c 100644 --- a/nano/templates/ntnet_chat.tmpl +++ b/nano/templates/ntnet_chat.tmpl @@ -60,7 +60,7 @@ Available channels: {{for data.all_channels}} -
    {{:helper.link(value.chan, null, {'PRG_joinchannel' : value.chan})}}
    +
    {{:helper.link(value.chan, null, {'PRG_joinchannel' : value.id})}}
    {{/for}}
    {{/if}} \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index 430f720734..a8a9f2ab06 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2126,6 +2126,7 @@ #include "code\modules\modular_computers\hardware\nano_printer.dm" #include "code\modules\modular_computers\hardware\network_card.dm" #include "code\modules\modular_computers\hardware\portable_hard_drive.dm" +#include "code\modules\modular_computers\hardware\processor_unit.dm" #include "code\modules\modular_computers\hardware\tesla_link.dm" #include "code\modules\modular_computers\NTNet\NTNet.dm" #include "code\modules\modular_computers\NTNet\NTNet_relay.dm" From b0c818b73778d7ab8f1a54f5db4b42fa8bed219b Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 3 Apr 2019 18:20:23 -0400 Subject: [PATCH 08/98] Updates Part Three --- code/__defines/misc.dm | 4 + code/_helpers/_lists.dm | 2 + .../computers/item/modular_computer.dm | 104 ++++++++++++++---- .../computers/item/processor.dm | 2 + .../computers/item/tablet_presets.dm | 2 + .../computers/machinery/modular_computer.dm | 3 +- .../modular_computers/file_system/program.dm | 13 ++- .../file_system/program_events.dm | 18 +++ .../file_system/programs/_engineering.dm | 18 +++ .../file_system/programs/antagonist/dos.dm | 7 +- .../file_system/programs/card.dm | 2 +- .../file_system/programs/configurator.dm | 40 ++----- .../file_system/programs/file_browser.dm | 2 +- .../file_system/programs/ntnrc_client.dm | 2 +- code/modules/nano/modules/atmos_control.dm | 2 +- code/modules/nano/modules/power_monitor.dm | 7 ++ nano/images/status_icons/power_norm.gif | Bin 0 -> 431 bytes nano/images/status_icons/power_warn.gif | Bin 0 -> 485 bytes polaris.dme | 1 + 19 files changed, 164 insertions(+), 65 deletions(-) create mode 100644 code/modules/modular_computers/file_system/program_events.dm create mode 100644 nano/images/status_icons/power_norm.gif create mode 100644 nano/images/status_icons/power_warn.gif diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 3f2b73c49a..1a74eeccbc 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -198,6 +198,10 @@ #define PROGRAM_LAPTOP 2 #define PROGRAM_TABLET 4 +#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 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/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index e243d041c7..d7cbee5820 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -10,6 +10,9 @@ 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 + 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 = 0 // Whether the computer is emagged. 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. @@ -46,7 +49,7 @@ set category = "Object" set src in view(1) - if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) + if(usr.incapacitated() || !istype(usr, /mob/living)) usr << "You can't do that." return @@ -70,8 +73,15 @@ card_slot.stored_card.forceMove(get_turf(src)) card_slot.stored_card = null + update_uis() user << "You remove the card from \the [src]" + if(active_program) + active_program.event_idremoved(0) + + for(var/datum/computer_file/program/P in idle_threads) + P.event_idremoved(1) + /obj/item/modular_computer/attack_ghost(var/mob/observer/dead/user) if(enabled) ui_interact(user) @@ -92,7 +102,7 @@ /obj/item/modular_computer/New() START_PROCESSING(SSobj, src) update_icon() - ..() + return ..() /obj/item/modular_computer/Destroy() kill_program(1) @@ -188,26 +198,30 @@ 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. - kill_program(1) - visible_message("\The [src]'s screen briefly freezes and then shows \"NETWORK ERROR - NTNet connection lost. Please retry. If problem persists contact your system administrator.\" error.") + 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.kill_program(1) - idle_threads.Remove(P) - visible_message("\The [src] screen displays an \"Process [P.filename].[P.filetype] (PID [rand(100,999)]) terminated - Network Error\" error") + P.event_networkfailure(1) if(active_program) - active_program.process_tick() - active_program.ntnet_status = get_ntnet_status() - active_program.computer_emagged = computer_emagged + if(active_program.program_state != PROGRAM_STATE_KILLED) + active_program.process_tick() + active_program.ntnet_status = get_ntnet_status() + active_program.computer_emagged = computer_emagged + else + active_program = null for(var/datum/computer_file/program/P in idle_threads) - P.process_tick() - P.ntnet_status = get_ntnet_status() - P.computer_emagged = computer_emagged + if(P.program_state != PROGRAM_STATE_KILLED) + P.process_tick() + P.ntnet_status = get_ntnet_status() + P.computer_emagged = computer_emagged + else + idle_threads.Remove(P) handle_power() // Handles all computer power interaction + check_update_ui_need() // Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_" /obj/item/modular_computer/proc/get_header_data() @@ -299,20 +313,20 @@ return 1 if( href_list["PC_exit"] ) kill_program() - return + 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 - return + return 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 - return + return 1 if( href_list["PC_shutdown"] ) shutdown_computer() - return + return 1 if( href_list["PC_minimize"] ) var/mob/user = usr if(!active_program || !processor_unit) @@ -323,7 +337,7 @@ return idle_threads.Add(active_program) - active_program.running = 0 // Should close any existing UIs + 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() @@ -347,7 +361,7 @@ // The program is already running. Resume it. if(P in idle_threads) - P.running = 1 + P.program_state = PROGRAM_STATE_ACTIVE active_program = P idle_threads.Remove(P) update_icon() @@ -359,12 +373,16 @@ if(P.run_program(user)) active_program = P update_icon() - return + return 1 // Used in following function to reduce copypaste /obj/item/modular_computer/proc/power_failure() if(enabled) // Shut down the computer visible_message("\The [src]'s screen flickers \"BATTERY CRITICAL\" warning as it shuts down unexpectedly.") + 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) // Handles power-related things, such as battery interaction, recharging, shutdown when it's discharged @@ -380,6 +398,7 @@ if(battery_module) battery_module.battery.use(power_usage * CELLRATE) + last_power_usage = power_usage /obj/item/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) @@ -395,6 +414,7 @@ user.drop_from_inventory(I) card_slot.stored_card = I I.forceMove(src) + update_uis() user << "You insert \the [I] into \the [src]." return if(istype(W, /obj/item/weapon/paper)) @@ -573,4 +593,46 @@ all_components.Add(battery_module) if(processor_unit) all_components.Add(processor_unit) - return all_components \ No newline at end of file + return all_components + +/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_updated_needed = 0 + if(battery_module) + var/batery_percent = battery_module.battery.percent() + if(last_battery_percent != batery_percent) //Let's update UI on percent chandge + ui_updated_needed = 1 + last_battery_percent = batery_percent + + if(stationtime2text() != last_world_time) + last_world_time = stationtime2text() + ui_updated_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_updated_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_updated_needed = 1 + break + + if(ui_updated_needed) + update_uis() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 9dc87d3517..26d65bf31a 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -80,6 +80,7 @@ return ..() machinery_computer.update_icon() + machinery_computer.use_power = 0 return // Tesla links only work on machinery types, so we'll override the default try_install_component() proc @@ -94,6 +95,7 @@ // Consoles don't usually have internal power source, so we can't disable tesla link in them. if(istype(machinery_computer, /obj/machinery/modular_computer/console)) L.critical = 1 + L.enabled = 1 found = 1 ..(user, H, found) diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index 5bad3b5177..413d10475e 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -3,6 +3,7 @@ /obj/item/modular_computer/tablet/preset/custom_loadout/cheap/New() . = ..() desc = "A low-end tablet often seen among low ranked station personnel" + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src) hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src) network_card = new/obj/item/weapon/computer_hardware/network_card(src) @@ -10,6 +11,7 @@ // Alternative version, an average one, for higher ranked positions mostly /obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New() . = ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) battery_module = new/obj/item/weapon/computer_hardware/battery_module(src) hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src) network_card = new/obj/item/weapon/computer_hardware/network_card(src) diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index c3877cde06..35a24d321f 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -83,8 +83,8 @@ if(cpu) cpu.shutdown_computer(0) battery_powered = 0 - update_icon() stat |= NOPOWER + update_icon() // Called by cpu item's process() automatically, handles our power interaction. /obj/machinery/modular_computer/proc/handle_power() @@ -133,6 +133,7 @@ return else ..() + update_icon() /obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) if(cpu) diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index b6e63700f3..0ab40df336 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -5,7 +5,7 @@ var/required_access = null // List of required accesses to *run* the program. 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/running = 0 // Set to 1 when the program is run and back to 0 when it's stopped. + 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. @@ -96,13 +96,13 @@ NM.program = src // Set the program reference to separate variable, instead. if(requires_ntnet && network_destination) generate_network_log("Connection opened to [network_destination].") - running = 1 + 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) - running = 0 + program_state = PROGRAM_STATE_KILLED if(network_destination) generate_network_log("Connection to [network_destination] closed.") if(NM) @@ -113,7 +113,7 @@ // 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(!running) // Our program was closed. Close the ui if it exists. + 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) @@ -129,6 +129,7 @@ // 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) - computer.Topic(href, href_list) - ..() + return computer.Topic(href, href_list) 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..2901759b6c --- /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 \"Process [filename].[filetype] (PID [rand(100,999)]) terminated - Network Error\" error") + else + computer.visible_message("\The [computer]'s screen briefly freezes and then shows \"NETWORK ERROR - NTNet connection lost. Please retry. If problem persists contact your system administrator.\" error.") diff --git a/code/modules/modular_computers/file_system/programs/_engineering.dm b/code/modules/modular_computers/file_system/programs/_engineering.dm index 83d1797af7..be9af3f5b4 100644 --- a/code/modules/modular_computers/file_system/programs/_engineering.dm +++ b/code/modules/modular_computers/file_system/programs/_engineering.dm @@ -6,10 +6,28 @@ nanomodule_path = /datum/nano_module/power_monitor/ program_icon_state = "power_monitor" extended_desc = "This program connects to sensors around the station 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/computer_file/program/alarm_monitor filename = "alarmmonitor" diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index 0dce4cde6c..440b6d529e 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -24,7 +24,7 @@ dos_speed = NTNETSPEED_ETHERNET * 10 if(target && executed) target.dos_overload += dos_speed - if(target.is_operational()) + if(!target.is_operational()) target.dos_sources.Remove(src) target = null error = "Connection to destination relay lost." @@ -89,8 +89,9 @@ target = R return if(href_list["PRG_reset"]) - target.dos_sources.Remove(src) - target = null + if(target) + target.dos_sources.Remove(src) + target = null executed = 0 error = "" return diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index c65d0487d4..708e9dca5d 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -88,7 +88,7 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) + ui.set_auto_update(0) /datum/nano_module/card_mod/proc/format_jobs(list/jobs) var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card diff --git a/code/modules/modular_computers/file_system/programs/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm index 91fff9c10c..b41223e3d5 100644 --- a/code/modules/modular_computers/file_system/programs/configurator.dm +++ b/code/modules/modular_computers/file_system/programs/configurator.dm @@ -16,25 +16,17 @@ /datum/nano_module/computer_configurator name = "NTOS Computer Configuration Tool" - var/obj/machinery/modular_computer/stationary = null var/obj/item/modular_computer/movable = null /datum/nano_module/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) - stationary = program.computer movable = program.computer - if(!istype(stationary)) - stationary = null if(!istype(movable)) movable = null - if(istype(movable, /obj/item/modular_computer/processor)) - var/obj/item/modular_computer/processor/P = movable - stationary = P.machinery_computer - // No computer connection, we can't get data from that. - if(!movable && !stationary) + if(!movable) return 0 var/list/data = list() @@ -42,27 +34,15 @@ if(program) data = program.get_header_data() - var/list/hardware = list() - if(stationary) - if(stationary.cpu) - movable = stationary.cpu - hardware.Add(stationary.tesla_link) - else - return + var/list/hardware = movable.get_all_components() - if(movable) - hardware.Add(movable.network_card) - hardware.Add(movable.hard_drive) - hardware.Add(movable.card_slot) - hardware.Add(movable.nano_printer) - hardware.Add(movable.battery_module) - 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()) + 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) @@ -81,4 +61,4 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) \ No newline at end of file + ui.set_auto_update(0) \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index c1de5820ea..5f89081518 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -223,5 +223,5 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) + ui.set_auto_update(0) diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 0fa9c7a96b..42dab1bd74 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -147,7 +147,7 @@ /datum/computer_file/program/chatclient/process_tick() ..() - if(running) + 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. diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/nano/modules/atmos_control.dm index 26adf56c6c..154ac0d99d 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/nano/modules/atmos_control.dm @@ -62,7 +62,7 @@ ui.add_template("mapHeader", "atmos_control_map_header.tmpl") ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) + ui.set_auto_update(0) ui_ref = ui /datum/nano_module/atmos_control/proc/generate_state(air_alarm) diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/nano/modules/power_monitor.dm index c3f176b0ba..db63ebdf94 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/nano/modules/power_monitor.dm @@ -7,6 +7,13 @@ ..() 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) diff --git a/nano/images/status_icons/power_norm.gif b/nano/images/status_icons/power_norm.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b8d60edfa50061e871e38545f613dc8775fac77 GIT binary patch literal 431 zcmZ?wbhEHb6k`x$*u=oV@B;`Le*9oKaNq!t2M3D(x&2&2f}I@$T#fV$m>Gc*ia%L6 zH5gbJbU=zg+8LNVJ$Bvsr?~GV)811_tG)|2eeYD>$-vSu>$TUecap}dW?60X(Kg8X zZxDORUFMU7Vw_-vkx?=4giDbnCG)NxE1kLa#RdURiL4|QtfqV6GX2zwDX-^!UcJa@ zoxSedcLuJ09CwyVC_c)U%u$(n)L+QW)XXYWfupNQ!M=ouhCBcc!@ou<`_u6H! zYT3F)=M2|czt#M2GoQEPwXTzM?8YT3*ZNL8y>xLR(@H08mDepETZ|_wGh#CuPq?gG zzUrmqWxwp@8ok%K=B#(;F>*TiXv2|gJ=q0IHothGGoN?$q*-@kle;^f-ZrrmVz34P Dlu)Cy literal 0 HcmV?d00001 diff --git a/nano/images/status_icons/power_warn.gif b/nano/images/status_icons/power_warn.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c85b3a85a1e46e7ea81d98562f1cf10509f13d4 GIT binary patch literal 485 zcmZ?wbhEHb6k`x$*u=oV@B;`Le*9oKaNq!t2M3D(x&2&2f}I@$T#fV$m>Gc*ia%L6 zH5gbJbU=zg+8LO`Ja*mrr?~GV)812Qz2ejFDse<>RK<8qJ9lFO!-0LPH=Qzme2d$! z!Q?haTh*Hi7Wshi)kljKh4uzSyY(Ku_T|@RnU%MFKK}mNvplu%q^f7RZf?*W7f-BK z#lWnJy>!#N==SvE98BtZOF8>8eyx>dWZ>dlD;+z%n6=5OX>I#W7nOsF8=8YvD!usw zmVeOXej-@Cu6mAVXw_>A8ZTFIkYL$G`gO`34U23&g|61AV zmstl>WoP^`48OSIedNi9Dp>9EhuO9FRMM*N!cE@;ABg&?x-c+QnMJ*}n)|0UM=Ww% z@Uw0S&h*t^CF~>HKYS8&?+W?ya*oo<4Xsl;*JjN2oEj>$Y@+k?tAR&67#OSp?%csB literal 0 HcmV?d00001 diff --git a/polaris.dme b/polaris.dme index a8a9f2ab06..bae26201a9 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2108,6 +2108,7 @@ #include "code\modules\modular_computers\file_system\computer_file.dm" #include "code\modules\modular_computers\file_system\data.dm" #include "code\modules\modular_computers\file_system\program.dm" +#include "code\modules\modular_computers\file_system\program_events.dm" #include "code\modules\modular_computers\file_system\programs\_engineering.dm" #include "code\modules\modular_computers\file_system\programs\_medical.dm" #include "code\modules\modular_computers\file_system\programs\card.dm" From 677f91fdcef832a100ec2560b910f7786fcb9922 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 7 Apr 2019 20:53:30 -0400 Subject: [PATCH 09/98] Updates Part Four --- code/game/gamemodes/epidemic/epidemic.dm | 19 +- .../game/machinery/computer/communications.dm | 7 + code/modules/admin/verbs/randomverbs.dm | 12 +- .../modules/modular_computers/_description.dm | 21 +- .../computers/item/modular_computer.dm | 21 +- .../{item => machinery}/console_presets.dm | 2 + .../computers/machinery/modular_computer.dm | 3 + .../modular_computers/file_system/program.dm | 9 +- .../file_system/programs/_program.dm | 11 + .../file_system/programs/antagonist/dos.dm | 12 +- .../programs/antagonist/revelation.dm | 8 +- .../file_system/programs/card.dm | 52 +-- .../file_system/programs/comm.dm | 310 ++++++++++++++++++ .../file_system/programs/configurator.dm | 10 +- .../file_system/programs/file_browser.dm | 78 +++-- .../file_system/programs/ntdownloader.dm | 13 +- .../file_system/programs/ntmonitor.dm | 21 +- .../file_system/programs/ntnrc_client.dm | 48 ++- .../file_system/programs/nttransfer.dm | 19 +- code/modules/nano/modules/alarm_monitor.dm | 7 +- code/modules/nano/modules/atmos_control.dm | 7 +- code/modules/nano/modules/crew_monitor.dm | 4 +- code/modules/nano/modules/human_appearance.dm | 2 +- code/modules/nano/modules/nano_module.dm | 24 +- code/modules/nano/modules/power_monitor.dm | 6 +- code/modules/nano/modules/rcon.dm | 6 +- nano/templates/mod_communication.tmpl | 66 ++++ ....tmpl => mod_identification_computer.tmpl} | 0 polaris.dme | 2 + 29 files changed, 614 insertions(+), 186 deletions(-) rename code/modules/modular_computers/computers/{item => machinery}/console_presets.dm (97%) create mode 100644 code/modules/modular_computers/file_system/programs/_program.dm create mode 100644 code/modules/modular_computers/file_system/programs/comm.dm create mode 100644 nano/templates/mod_communication.tmpl rename nano/templates/{identification_computer_lap.tmpl => mod_identification_computer.tmpl} (100%) 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/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 68093398c8..97a3cfed95 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -529,6 +529,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/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 3f7908c1a8..0e043188b6 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -565,15 +565,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/modular_computers/_description.dm b/code/modules/modular_computers/_description.dm index a9ea30757b..2335ce08e7 100644 --- a/code/modules/modular_computers/_description.dm +++ b/code/modules/modular_computers/_description.dm @@ -1,5 +1,7 @@ /* 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 @@ -7,6 +9,7 @@ lift ALL locks on ALL installed programs, and allow download of programs even if 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. @@ -21,6 +24,8 @@ 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 @@ -31,17 +36,21 @@ ID Card Slot: Required for HoP-style programs to work. Access for security recor 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. @@ -50,32 +59,38 @@ Basic - Software in this bundle is automagically preinstalled in every new compu 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. @@ -83,20 +98,24 @@ Command - Requires "Bridge" access on ID card (all heads) 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 + +*/ \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index d7cbee5820..bc041adbd5 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -71,17 +71,17 @@ user << "There is no card in \the [src]" return - card_slot.stored_card.forceMove(get_turf(src)) - card_slot.stored_card = null - update_uis() - user << "You remove the card from \the [src]" - 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() + user << "You remove the card from \the [src]" + /obj/item/modular_computer/attack_ghost(var/mob/observer/dead/user) if(enabled) ui_interact(user) @@ -102,14 +102,14 @@ /obj/item/modular_computer/New() START_PROCESSING(SSobj, src) update_icon() - return ..() + ..() /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()) qdel(CH) - ..() + return ..() /obj/item/modular_computer/update_icon() icon_state = icon_state_unpowered @@ -318,12 +318,12 @@ 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 - return 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 - return 1 + . = 1 if( href_list["PC_shutdown"] ) shutdown_computer() return 1 @@ -374,6 +374,8 @@ active_program = P update_icon() return 1 + if(.) + update_uis() // Used in following function to reduce copypaste /obj/item/modular_computer/proc/power_failure() @@ -392,6 +394,7 @@ return 0 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 diff --git a/code/modules/modular_computers/computers/item/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm similarity index 97% rename from code/modules/modular_computers/computers/item/console_presets.dm rename to code/modules/modular_computers/computers/machinery/console_presets.dm index 4c7eb7b0d1..5e9e7f4987 100644 --- a/code/modules/modular_computers/computers/item/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -58,10 +58,12 @@ console_department = "Command" desc = "A stationary computer. This one comes preloaded with command programs." _has_id_slot = 1 + _has_printer = 1 /obj/machinery/modular_computer/console/preset/command/install_programs() cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod()) + cpu.hard_drive.store_file(new/datum/computer_file/program/comm()) // ===== SECURITY CONSOLE ===== diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 35a24d321f..21f040074e 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -17,6 +17,7 @@ icon_state = null var/icon_state_unpowered = null // Icon state when the computer is turned off var/screen_icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. + var/screen_icon_screensaver = "standby" // Icon state overlay when the computer is powered, but not 'switched on'. 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 = 10 // Amount of steel sheets refunded when disassembling an empty frame of this computer. @@ -39,6 +40,8 @@ overlays.Cut() if(!cpu || !cpu.enabled) + if (!(stat & NOPOWER) || battery_powered) + overlays.Add(screen_icon_screensaver) return if(cpu.active_program) overlays.Add(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu) diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 0ab40df336..4e09cac65c 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -20,7 +20,6 @@ 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! - /datum/computer_file/program/New(var/obj/item/modular_computer/comp = null) ..() if(comp && istype(comp)) @@ -55,6 +54,11 @@ 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() return 1 @@ -92,8 +96,7 @@ /datum/computer_file/program/proc/run_program(var/mob/living/user) if(can_run(user, 1)) if(nanomodule_path) - NM = new nanomodule_path(computer) // Computer is passed here as it's (probably!) physical object. Some UI's perform get_turf() and passing program datum wouldn't go well with this. - NM.program = src // Set the program reference to separate variable, instead. + NM = new nanomodule_path(computer, src) // Computer is passed here as it's (probably!) physical object. Some UI's perform get_turf() and passing program datum wouldn't go well with this. if(requires_ntnet && network_destination) generate_network_log("Connection opened to [network_destination].") program_state = PROGRAM_STATE_ACTIVE diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm new file mode 100644 index 0000000000..73f0ac95a3 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/_program.dm @@ -0,0 +1,11 @@ +/obj/machinery/modular_computer/initial_data() + return cpu ? cpu.get_header_data() : ..() + +/obj/machinery/modular_computer/update_layout() + return TRUE + +/obj/item/modular_computer/update_layout() + return TRUE + +///datum/nano_module/program + //adheres_to_NT_standard = FALSE diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index 440b6d529e..2f21771147 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -7,7 +7,7 @@ requires_ntnet = 1 available_on_ntnet = 0 available_on_syndinet = 1 - nanomodule_path = /datum/nano_module/computer_dos/ + nanomodule_path = /datum/nano_module/program/computer_dos/ var/obj/machinery/ntnet_relay/target = null var/dos_speed = 0 var/error = "" @@ -36,10 +36,10 @@ ..(forced) -/datum/nano_module/computer_dos +/datum/nano_module/program/computer_dos name = "DoS Traffic Generator" -/datum/nano_module/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) +/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 @@ -87,14 +87,14 @@ for(var/obj/machinery/ntnet_relay/R in ntnet_global.relays) if("[R.uid]" == href_list["PRG_target_relay"]) target = R - return + return 1 if(href_list["PRG_reset"]) if(target) target.dos_sources.Remove(src) target = null executed = 0 error = "" - return + return 1 if(href_list["PRG_execute"]) if(target) executed = 1 @@ -102,4 +102,4 @@ 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 \ No newline at end of file + return 1 diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index baa7b5d291..96ca2cb75a 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -7,7 +7,7 @@ requires_ntnet = 0 available_on_ntnet = 0 available_on_syndinet = 1 - nanomodule_path = /datum/nano_module/revelation/ + nanomodule_path = /datum/nano_module/program/revelation/ var/armed = 0 /datum/computer_file/program/revelation/run_program(var/mob/living/user) @@ -49,16 +49,17 @@ if(!newname) return filedesc = newname + return 1 /datum/computer_file/program/revelation/clone() var/datum/computer_file/program/revelation/temp = ..() temp.armed = armed return temp -/datum/nano_module/revelation +/datum/nano_module/program/revelation name = "Revelation Virus" -/datum/nano_module/revelation/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/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)) @@ -75,3 +76,4 @@ ui.set_initial_data(data) ui.open() ui.set_auto_update(1) + diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 708e9dca5d..5e012dd902 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -1,23 +1,21 @@ /datum/computer_file/program/card_mod filename = "cardmod" filedesc = "ID card modification program" - nanomodule_path = /datum/nano_module/card_mod + nanomodule_path = /datum/nano_module/program/card_mod program_icon_state = "id" extended_desc = "Program for programming employee ID cards to access parts of the station." required_access = access_hop requires_ntnet = 0 size = 8 -/datum/nano_module/card_mod +/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/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 = list() - if(program) - data = program.get_header_data() +/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() @@ -84,13 +82,12 @@ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) - ui = new(user, src, ui_key, "identification_computer_lap.tmpl", name, 600, 700, state = state) + 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() - ui.set_auto_update(0) -/datum/nano_module/card_mod/proc/format_jobs(list/jobs) +/datum/nano_module/program/card_mod/proc/format_jobs(list/jobs) var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card var/list/formatted = list() for(var/job in jobs) @@ -101,16 +98,18 @@ return formatted -/datum/nano_module/card_mod/proc/get_accesses(var/is_centcom = 0) - +/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) - var/mob/living/user = usr + 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 = computer.card_slot.stored_card - var/datum/nano_module/card_mod/module = NM + var/datum/nano_module/program/card_mod/module = NM switch(href_list["action"]) if("switchm") if(href_list["target"] == "mod") @@ -135,14 +134,17 @@ 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) - contents += " [get_access_desc(A)]" + if(A in known_access_rights) + contents += " [get_access_desc(A)]" if(!computer.nano_printer.print_text(contents,"access report")) usr << "Hardware error: Printer was unable to print the file. It may be out of paper." return else - computer.visible_message("[computer] prints out paper.") + computer.visible_message("\The [computer] prints out paper.") else var/contents = {"

    Crew Manifest


    @@ -152,14 +154,16 @@ usr << "Hardware error: Printer was unable to print the file. It may be out of paper." return else - computer.visible_message("[computer] prints out paper.") + 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" - id_card.access = list() + remove_nt_access(id_card) callHook("terminate_employee", list(id_card)) if("edit") if(computer && can_run(user, 1)) @@ -197,7 +201,8 @@ access = jobdatum.get_access() - id_card.access = access + remove_nt_access(id_card) + apply_access(id_card, access) id_card.assignment = t1 id_card.rank = t1 @@ -206,7 +211,7 @@ 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_all_centcom_access() + get_all_station_access())) + 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 @@ -214,5 +219,10 @@ id_card.name = text("[id_card.registered_name]'s ID Card ([id_card.assignment])") SSnanoui.update_uis(NM) - ..(href, href_list) - return 1 \ No newline at end of file + 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/comm.dm b/code/modules/modular_computers/file_system/programs/comm.dm new file mode 100644 index 0000000000..2fd3639ecc --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/comm.dm @@ -0,0 +1,310 @@ +#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" + nanomodule_path = /datum/nano_module/program/comm + extended_desc = "Used to command and control the station. Can relay long-range communications." + required_access = access_heads + requires_ntnet = 1 + size = 12 + usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP + network_destination = "station 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" + 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_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.get_signal(NTNET_COMMUNICATION) + var/ntn_cont = !!program.get_signal(NTNET_SYSTEMCONTROL) + var/datum/comm_message_listener/l = obtain_message_listener() + switch(href_list["action"]) + if("sw_menu") + current_status = text2num(href_list["target"]) + if("announce") + 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) + usr << "Please allow at least one minute to pass between announcements" + SSnanoui.update_uis(src) + return + var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") as null|text + if(!input || !can_still_topic()) + SSnanoui.update_uis(src) + return + crew_announcement.Announce(input) + announcment_cooldown = 1 + spawn(600)//One minute cooldown + announcment_cooldown = 0 + if("message") + if(href_list["target"] == "emagged") + if(program) + if(is_autenthicated(user) && program.computer_emagged && !issilicon(usr) && ntn_comm) + if(centcomm_message_cooldown) + 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()) + SSnanoui.update_uis(src) + return + Syndicate_announce(input, usr) + 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) + 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. + usr <<"No Emergency Bluespace Relay detected. Unable to transmit message." + SSnanoui.update_uis(src) + return + 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()) + SSnanoui.update_uis(src) + return + CentCom_announce(input, usr) + 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") + 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") + 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") + 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_BLUE) + feedback_inc("alert_comms_blue",1) + else + usr << "You press button, but red light flashes and nothing happens." //This should never happen + current_status = STATE_DEFAULT + if("viewmessage") + 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") + if(is_autenthicated(user) && ntn_comm && l != global_message_listener) + l.Remove(current_viewing_message) + current_status = STATE_MESSAGELIST + if("printmessage") + 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"])) + 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.") + + SSnanoui.update_uis(src) + +/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/modular_computers/file_system/programs/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm index b41223e3d5..5867efbdcb 100644 --- a/code/modules/modular_computers/file_system/programs/configurator.dm +++ b/code/modules/modular_computers/file_system/programs/configurator.dm @@ -12,16 +12,15 @@ size = 4 available_on_ntnet = 0 requires_ntnet = 0 - nanomodule_path = /datum/nano_module/computer_configurator/ + nanomodule_path = /datum/nano_module/program/computer_configurator/ -/datum/nano_module/computer_configurator +/datum/nano_module/program/computer_configurator name = "NTOS Computer Configuration Tool" var/obj/item/modular_computer/movable = null -/datum/nano_module/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) +/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 @@ -60,5 +59,4 @@ 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() - ui.set_auto_update(0) \ No newline at end of file + ui.open() \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index 5f89081518..bdb14fb049 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -7,71 +7,82 @@ requires_ntnet = 0 available_on_ntnet = 0 undeletable = 1 - nanomodule_path = /datum/nano_module/computer_filemanager/ + 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 + return 1 var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive if(!HDD) - return + 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 + return 1 var/datum/computer_file/file = HDD.find_file_by_name(href_list["PRG_deletefile"]) if(!file || file.undeletable) - return + 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 + return 1 var/datum/computer_file/file = RHDD.find_file_by_name(href_list["PRG_usbdeletefile"]) if(!file || file.undeletable) - return + 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 + return 1 var/datum/computer_file/F = HDD.find_file_by_name(href_list["PRG_clone"]) if(!F || !istype(F)) - return + 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 + return 1 var/datum/computer_file/file = HDD.find_file_by_name(href_list["PRG_rename"]) if(!file || !istype(file)) - return + 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 + return 1 var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive if(!HDD) - return + return 1 var/datum/computer_file/data/F = HDD.find_file_by_name(open_file) if(!F || !istype(F)) - return + return 1 // 16384 is the limit for file length in characters. Currently, papers have value of 2048 so this is 8 times as long, since we can't edit parts of the file independently. var/newtext = sanitize(html_decode(input(usr, "Editing file [open_file]. You may use most tags used in paper formatting:", "Text Editor", F.stored_data) as message), 16384) if(F) @@ -86,41 +97,45 @@ error = "I/O error: Unable to overwrite file. Hard drive is probably full. You may want to backup your changes before closing this window:

    [F.stored_data]

    " HDD.store_file(backup) if(href_list["PRG_printfile"]) + . = 1 if(!open_file) - return + return 1 var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.hard_drive if(!HDD) - return + return 1 var/datum/computer_file/data/F = HDD.find_file_by_name(open_file) if(!F || !istype(F)) - return + return 1 if(!computer.nano_printer) error = "Missing Hardware: Your computer does not have required hardware to complete this operation." - return + return 1 if(!computer.nano_printer.print_text(parse_tags(F.stored_data))) error = "Hardware error: Printer was unable to print the file. It may be out of paper." - return + 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 + return 1 var/datum/computer_file/F = HDD.find_file_by_name(href_list["PRG_copytousb"]) if(!F || !istype(F)) - return + 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 + return 1 var/datum/computer_file/F = RHDD.find_file_by_name(href_list["PRG_copyfromusb"]) if(!F || !istype(F)) - return + return 1 var/datum/computer_file/C = F.clone(0) HDD.store_file(C) - ..(href, href_list) + if(.) + SSnanoui.update_uis(NM) /datum/computer_file/program/filemanager/proc/parse_tags(var/t) t = replacetext(t, "\[center\]", "
    ") @@ -160,18 +175,13 @@ return t -/datum/nano_module/computer_filemanager +/datum/nano_module/program/computer_filemanager name = "NTOS File Manager" -/datum/nano_module/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) - +/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 - var/list/data = list() - if(program) - data = program.get_header_data() - PRG = program - else - return + PRG = program var/obj/item/weapon/computer_hardware/hard_drive/HDD var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD @@ -223,5 +233,5 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - ui.set_auto_update(0) + diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index c9c601a66d..b0bb56928e 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -9,7 +9,7 @@ requires_ntnet = 1 requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD available_on_ntnet = 0 - nanomodule_path = /datum/nano_module/computer_ntnetdownload/ + 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 @@ -89,22 +89,21 @@ if(href_list["PRG_downloadfile"]) if(!downloaded_file) begin_file_download(href_list["PRG_downloadfile"]) - return + return 1 if(href_list["PRG_reseterror"]) if(downloaderror) download_completion = 0 download_netspeed = 0 downloaded_file = null downloaderror = "" - return + return 1 return 0 - -/datum/nano_module/computer_ntnetdownload +/datum/nano_module/program/computer_ntnetdownload name = "Network Downloader" var/obj/item/modular_computer/my_computer = null -/datum/nano_module/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) +/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 @@ -162,4 +161,4 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) \ No newline at end of file + ui.set_auto_update(1) diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm index bd7fe683a8..9400ad538e 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm @@ -15,11 +15,7 @@ /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 = list() - if(program) - data = program.get_header_data() - + var/list/data = host.initial_data() data["ntnetstatus"] = ntnet_global.check_function() data["ntnetrelays"] = ntnet_global.relays.len @@ -38,7 +34,8 @@ 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) - ui.auto_update_layout = 1 + if(host.update_layout()) + ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() ui.set_auto_update(1) @@ -47,14 +44,17 @@ if(..()) return 1 if(href_list["resetIDS"]) + . = 1 if(ntnet_global) ntnet_global.resetIDS() return 1 if(href_list["toggleIDS"]) + . = 1 if(ntnet_global) ntnet_global.toggleIDS() return 1 if(href_list["toggleWireless"]) + . = 1 if(!ntnet_global) return 1 @@ -66,20 +66,23 @@ // 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) var/mob/user = usr if(!user) - return + 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"]) + . = 1 if(ntnet_global) ntnet_global.purge_logs() if(href_list["updatemaxlogs"]) + . = 1 var/mob/user = usr 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) if(href_list["toggle_function"]) + . = 1 if(!ntnet_global) - return - ntnet_global.toggle_function(href_list["toggle_function"]) \ No newline at end of file + return 1 + ntnet_global.toggle_function(href_list["toggle_function"]) diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 42dab1bd74..c16baf2895 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -9,7 +9,7 @@ network_destination = "NTNRC server" ui_header = "ntnrc_idle.gif" available_on_ntnet = 1 - nanomodule_path = /datum/nano_module/computer_chatclient/ + 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 @@ -20,9 +20,13 @@ 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 + return 1 var/mob/living/user = usr var/message = sanitize(input(user, "Enter message or leave blank to cancel: ")) if(!message || !channel) @@ -30,6 +34,7 @@ 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"])) @@ -37,11 +42,11 @@ break if(!C) - return + return 1 if(netadmin_mode) channel = C // Bypasses normal leave/join and passwords. Technically makes the user invisible to others. - return + return 1 if(C.password) var/mob/living/user = usr @@ -49,14 +54,16 @@ if(C && (password == C.password)) C.add_client(src) channel = C - return + 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 = sanitize(input(user,"Enter channel name or leave blank to cancel:")) if(!channel_title) @@ -67,12 +74,13 @@ 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 + return 1 var/mob/living/user = usr if(can_run(usr, 1, access_network)) if(channel) @@ -85,21 +93,23 @@ 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:")) if(!newname) - return + 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 + 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 @@ -112,14 +122,15 @@ if(!computer) // This program shouldn't even be runnable without computer. CRASH("Var computer is null!") - return + 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 + return 1 var/mob/living/user = usr var/newname = sanitize(input(user, "Enter new channel name or leave blank to cancel:")) if(!newname || !channel) @@ -127,24 +138,25 @@ 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)) - del(channel) + qdel(channel) + channel = null if(href_list["PRG_setpassword"]) + . = 1 if(!channel || ((channel.operator != src) && !netadmin_mode)) - return + 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 + return 1 if(newpassword == "nopassword") channel.password = "" else channel.password = newpassword - ..(href, href_list) - /datum/computer_file/program/chatclient/process_tick() ..() if(program_state != PROGRAM_STATE_KILLED) @@ -166,10 +178,10 @@ channel = null ..(forced) -/datum/nano_module/computer_chatclient +/datum/nano_module/program/computer_chatclient name = "NTNet Relay Chat Client" -/datum/nano_module/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) +/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 @@ -215,4 +227,4 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) \ No newline at end of file + ui.set_auto_update(1) diff --git a/code/modules/modular_computers/file_system/programs/nttransfer.dm b/code/modules/modular_computers/file_system/programs/nttransfer.dm index de2dd65aa1..404238d326 100644 --- a/code/modules/modular_computers/file_system/programs/nttransfer.dm +++ b/code/modules/modular_computers/file_system/programs/nttransfer.dm @@ -10,7 +10,7 @@ var/global/nttransfer_uid = 0 requires_ntnet_feature = NTNET_PEERTOPEER network_destination = "other device via P2P tunnel" available_on_ntnet = 1 - nanomodule_path = /datum/nano_module/computer_nttransfer/ + nanomodule_path = /datum/nano_module/program/computer_nttransfer/ var/error = "" // Error screen var/server_password = "" // Optional password to download the file. @@ -87,13 +87,10 @@ var/global/nttransfer_uid = 0 download_completion = 0 - - - -/datum/nano_module/computer_nttransfer +/datum/nano_module/program/computer_nttransfer name = "NTNet P2P Transfer Client" -/datum/nano_module/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) +/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 @@ -161,7 +158,7 @@ var/global/nttransfer_uid = 0 return downloaded_file = remote.provided_file.clone() remote.connected_clients.Add(src) - return + return 1 if(href_list["PRG_reset"]) error = "" upload_menu = 0 @@ -171,7 +168,7 @@ var/global/nttransfer_uid = 0 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 + 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) @@ -180,7 +177,7 @@ var/global/nttransfer_uid = 0 server_password = "" return server_password = pass - return + 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"]) @@ -191,7 +188,7 @@ var/global/nttransfer_uid = 0 ntnet_global.fileservers.Add(src) return error = "I/O Error: Unable to locate file on hard drive." - return + return 1 if(href_list["PRG_uploadmenu"]) upload_menu = 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index 7ca7a3a26b..f42c326678 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -64,10 +64,7 @@ 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] - - if(program) - data = program.get_header_data() + var/list/data = host.initial_data() var/categories[0] for(var/datum/alarm_handler/AH in alarm_handlers) @@ -94,7 +91,7 @@ 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(program) // This is necessary to ensure the status bar remains updated along with rest of the UI. + 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() diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/nano/modules/atmos_control.dm index 154ac0d99d..c077dc1283 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/nano/modules/atmos_control.dm @@ -30,13 +30,10 @@ 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/list/data = host.initial_data() var/alarms[0] var/turf/T = get_turf(nano_host()) - if(program) - data = program.get_header_data() - // 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) @@ -54,7 +51,7 @@ 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(program) // This is necessary to ensure the status bar remains updated along with rest of the UI. + 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") diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm index a593368aee..7ea34f8a12 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/nano/modules/crew_monitor.dm @@ -16,9 +16,7 @@ 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] - if(program) - data = program.get_header_data() + var/list/data = host.initial_data() var/turf/T = get_turf(nano_host()) data["isAI"] = isAI(user) 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 0b79001192..f8001682ec 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,10 +1,10 @@ /datum/nano_module var/name - var/host + var/datum/host var/datum/computer_file/program/program = null // Program-Based computer program that runs this nano module. Defaults to null. -/datum/nano_module/New(var/host) - src.host = host +/datum/nano_module/New(var/host, var/program) + src.program = program // Machinery-based computers wouldn't work w/o this as nano will assume they're items inside containers. if(istype(host, /obj/item/modular_computer/processor)) var/obj/item/modular_computer/processor/H = host @@ -12,8 +12,11 @@ else src.host = host -/datum/nano_module/Destroy() - host = null +/datum/nano_module/Topic(href, href_list) + // Calls forwarded to PROGRAM itself should begin with "PRG_" + // Calls forwarded to COMPUTER running the program should begin with "PC_" + if(program && program.Topic(href, href_list)) + return TRUE return ..() /datum/nano_module/nano_host() @@ -22,9 +25,8 @@ /datum/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) return CanUseTopic(usr, state) == STATUS_INTERACTIVE -/datum/nano_module/Topic(href, href_list) - // Calls forwarded to PROGRAM itself should begin with "PRG_" - // Calls forwarded to COMPUTER running the program should begin with "PC_" - if(program) - program.Topic(href, href_list) - return ..() \ No newline at end of file +/datum/proc/initial_data() + return list() + +/datum/proc/update_layout() + return FALSE diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/nano/modules/power_monitor.dm index db63ebdf94..3bd87cc5bc 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/nano/modules/power_monitor.dm @@ -17,9 +17,7 @@ // 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 = list() - if(program) - data = program.get_header_data() + 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. @@ -43,7 +41,7 @@ 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(program) // This is necessary to ensure the status bar remains updated along with rest of the UI. + 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") diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/nano/modules/rcon.dm index 0153b2ad9f..67a949a828 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/nano/modules/rcon.dm @@ -9,9 +9,7 @@ /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] - if(program) - data = program.get_header_data() + var/list/data = host.initial_data() // SMES DATA (simplified view) var/list/smeslist[0] @@ -43,7 +41,7 @@ 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(program) // This is necessary to ensure the status bar remains updated along with rest of the UI. + 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() diff --git a/nano/templates/mod_communication.tmpl b/nano/templates/mod_communication.tmpl new file mode 100644 index 0000000000..cd943d2122 --- /dev/null +++ b/nano/templates/mod_communication.tmpl @@ -0,0 +1,66 @@ +{{if data.authenticated}} + {{if data.state === 1}} +
    {{:helper.link('Make An Announcement', null, {'action' : 'announce'}, data.isAI || !data.net_comms ? 'disabled' : null)}}
    +
    {{if data.emagged}} + {{:helper.link('Send an emergency message to [UNKNOWN]', null, {'action' : 'message', 'target' : 'emagged'}, data.isAI || !data.net_comms ? 'disabled' : null)}} + {{else}} + {{:helper.link('Send an emergency message to ' + data.boss_short, null, {'action' : 'message', 'target' : 'regular'}, data.isAI || !data.net_comms ? 'disabled' : null)}} + {{/if}}
    +
    {{:helper.link('Change alert level', null, {'action' : 'sw_menu', 'target' : 5}, data.isAI || !data.net_syscont || !data.net_comms ? 'disabled' : null)}}
    +
    {{if data.have_shuttle && data.have_shuttle_called}} + {{:helper.link('Cancel Shuttle Call', null, {'action' : 'shuttle', 'target' : 'cancel'}, data.isAI || !data.net_syscont ? 'disabled' : null)}} + {{else data.have_shuttle && !data.have_shuttle_called}} + {{:helper.link('Call Emergency Shuttle', null, {'action' : 'shuttle', 'target' : 'call'}, !data.net_syscont ? 'disabled' : null)}} + {{/if}}
    +
    {{:helper.link('Set Status Display', null, {'action' : 'sw_menu', 'target' : 4}, !data.net_syscont ? 'disabled' : null)}}
    +
    {{:helper.link('Message List', null, {'action' : 'sw_menu', 'target' : 2}, !data.net_comms ? 'disabled' : null)}}
    + {{else data.state === 2}} + Messages: + {{for data.messages}} +
    {{:helper.link(value.title, null, {'action' : 'viewmessage', 'target' : value.id})}}
    + {{empty}} +
    There are no messages.
    + {{/for}} +
    {{:helper.link('Back', null, {'action' : 'sw_menu', 'target' : 1})}}
    + {{else data.state === 3}} +
    Title: {{:data.message_current.title}}
    +
    Contents:
    {{:data.message_current.contents}}
    +
    + {{:helper.link('Delete', null, {'action' : 'delmessage'})}} + {{if data.have_printer}} + {{:helper.link('Print', null, {'action' : 'printmessage'})}} + {{/if}} + {{:helper.link('Back', null, {'action' : 'sw_menu', 'target' : 2})}} +
    + {{else data.state === 4}} + Set status displays: +
    {{:helper.link('Clear', null, {'action' : 'setstatus', 'target' : 'blank'})}}
    +
    {{:helper.link('Station Time', null, {'action' : 'setstatus', 'target' : 'time'})}}
    +
    {{:helper.link('Shuttle ETA', null, {'action' : 'setstatus', 'target' : 'shuttle'})}}
    +
    {{:helper.link('Message', null, {'action' : 'setstatus', 'target' : 'message'})}} +
      +
    • Line 1: {{:helper.link(data.message_line1 ? data.message_line1 : '(none)', null, {'action' : 'setstatus', 'target' : 'line1'})}}
    • +
    • Line 2: {{:helper.link(data.message_line2 ? data.message_line2 : '(none)', null, {'action' : 'setstatus', 'target' : 'line2'})}}
    • +
    +
    Alert: {{:helper.link('Red Alert', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'redalert'})}} + {{:helper.link('Lockdown', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'lockdown'})}} + {{:helper.link('Biohazard', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'biohazard'})}}
    + {{:helper.link('Back', null, {'action' : 'sw_menu', 'target' : 1})}} + {{else data.state === 5}} + Current Alert level is {{:data.current_security_level_title}} + {{if data.current_security_level === data.def_SEC_LEVEL_DELTA}} +
    The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.
    + {{else}} +
    Set status:
    +
    {{:helper.link('Blue', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_BLUE}, data.current_security_level === data.def_SEC_LEVEL_BLUE || data.isAI ? 'disabled' : null)}}
    +
    {{:helper.link('Green', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_GREEN}, data.current_security_level === data.def_SEC_LEVEL_GREEN || data.isAI ? 'disabled' : null)}}
    + {{/if}} +
    +
    {{:helper.link('Back', null, {'action' : 'sw_menu', 'target' : 1})}}
    + {{else}} + Something went wrong. Please reset your console. +
    {{:helper.link('Back', null, {'action' : 'sw_menu', 'target' : 1})}}
    + {{/if}} +{{else}} + You are unauthorised. +{{/if}} diff --git a/nano/templates/identification_computer_lap.tmpl b/nano/templates/mod_identification_computer.tmpl similarity index 100% rename from nano/templates/identification_computer_lap.tmpl rename to nano/templates/mod_identification_computer.tmpl diff --git a/polaris.dme b/polaris.dme index bae26201a9..ccd27f2f85 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2111,7 +2111,9 @@ #include "code\modules\modular_computers\file_system\program_events.dm" #include "code\modules\modular_computers\file_system\programs\_engineering.dm" #include "code\modules\modular_computers\file_system\programs\_medical.dm" +#include "code\modules\modular_computers\file_system\programs\_program.dm" #include "code\modules\modular_computers\file_system\programs\card.dm" +#include "code\modules\modular_computers\file_system\programs\comm.dm" #include "code\modules\modular_computers\file_system\programs\configurator.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" #include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" From cca8dd2e460ad4d00c7c183995b05fe1379b8198 Mon Sep 17 00:00:00 2001 From: Neerti Date: Sun, 7 Apr 2019 21:38:23 -0400 Subject: [PATCH 10/98] Removes umbrella permastun, adds wind mechanics, and fixes four year old FBP bug. --- .../mob/living/carbon/human/human_movement.dm | 24 +++++++++++--- code/modules/mob/living/carbon/human/life.dm | 6 ---- code/modules/mob/mob.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/planet/sif.dm | 28 ++++++---------- code/modules/planet/weather.dm | 33 ++++++++++++++----- 6 files changed, 57 insertions(+), 38 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 244fdfaa5d..d856577519 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,6 +1,6 @@ #define HUMAN_LOWEST_SLOWDOWN -3 -/mob/living/carbon/human/movement_delay() +/mob/living/carbon/human/movement_delay(oldloc, direct) var/tally = 0 @@ -66,7 +66,7 @@ // Turf related slowdown var/turf/T = get_turf(src) - tally += calculate_turf_slowdown(T) + tally += calculate_turf_slowdown(T, direct) // Item related slowdown. var/item_tally = calculate_item_encumbrance() @@ -115,8 +115,11 @@ . += max(I.slowdown, 0) // Similar to above, but for turf slowdown. -/mob/living/carbon/human/proc/calculate_turf_slowdown(turf/T) - if(T && T.movement_cost) +/mob/living/carbon/human/proc/calculate_turf_slowdown(turf/T, direct) + if(!T) + return 0 + + if(T.movement_cost) var/turf_move_cost = T.movement_cost if(istype(T, /turf/simulated/floor/water)) if(species.water_movement) @@ -126,6 +129,7 @@ if(feet.water_speed) turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + feet.water_speed, 15) . += turf_move_cost + if(istype(T, /turf/simulated/floor/outdoors/snow)) if(species.snow_movement) turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + species.snow_movement, 15) @@ -135,6 +139,18 @@ turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + feet.snow_speed, 15) . += turf_move_cost + // Wind makes it easier or harder to move, depending on if you're with or against the wind. + var/datum/planet/P = SSplanets.z_to_planet[z] + if(P) + var/datum/weather_holder/WH = P.weather_holder + if(WH && WH.wind_speed) // Is there any wind? + // With the wind. + if(direct & WH.wind_dir) + . = max(. - WH.wind_speed, -1) // Wind speedup is capped at roughly taj speed. + // Against it. + else if(direct & reverse_dir[WH.wind_dir]) + . += WH.wind_speed + #undef HUMAN_LOWEST_SLOWDOWN /mob/living/carbon/human/Process_Spacemove(var/check_drift = 0) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d0882bc97a..8593b00dc7 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1725,12 +1725,6 @@ hud_updateflag = 0 -/mob/living/carbon/human/handle_stunned() - if(!can_feel_pain()) - stunned = 0 - return 0 - return ..() - /mob/living/carbon/human/handle_fire() if(..()) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 32bffb110a..e9218f8704 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -138,7 +138,7 @@ return M return 0 -/mob/proc/movement_delay() +/mob/proc/movement_delay(oldloc, direct) return 0 /mob/proc/Life() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index b6f7121455..c9d5c37bf9 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -203,7 +203,7 @@ mob.move_delay += config.run_speed if("walk") mob.move_delay += config.walk_speed - mob.move_delay += mob.movement_delay() + mob.move_delay += mob.movement_delay(n, direct) if(istype(mob.buckled, /obj/vehicle)) //manually set move_delay for vehicles so we don't inherit any mob movement penalties diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index 340320cbaf..e913da00cb 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -197,6 +197,8 @@ var/datum/planet/sif/planet_sif = null icon_state = "snowfall_med" temp_high = T0C // 0c temp_low = 243.15 // -30c + wind_high = 2 + wind_low = 0 light_modifier = 0.5 flight_failure_modifier = 5 transition_chances = list( @@ -229,6 +231,8 @@ var/datum/planet/sif/planet_sif = null icon_state = "snowfall_heavy" temp_high = 243.15 // -30c temp_low = 233.15 // -40c + wind_high = 4 + wind_low = 2 light_modifier = 0.3 flight_failure_modifier = 10 transition_chances = list( @@ -258,6 +262,8 @@ var/datum/planet/sif/planet_sif = null /datum/weather/sif/rain name = "rain" icon_state = "rain" + wind_high = 2 + wind_low = 1 light_modifier = 0.5 effect_message = "Rain falls on you." @@ -306,6 +312,8 @@ var/datum/planet/sif/planet_sif = null icon_state = "storm" temp_high = 243.15 // -30c temp_low = 233.15 // -40c + wind_high = 4 + wind_low = 2 light_modifier = 0.3 flight_failure_modifier = 10 effect_message = "Rain falls on you, drenching you in water." @@ -337,24 +345,6 @@ var/datum/planet/sif/planet_sif = null var/turf/T = get_turf(L) if(!T.outdoors) continue // They're indoors, so no need to rain on them. - - // Lazy wind code - if(prob(10)) - if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella)) - var/obj/item/weapon/melee/umbrella/U = L.get_active_hand() - if(U.open) - to_chat(L, "You struggle to keep hold of your umbrella!") - L.Stun(20) // This is not nearly as long as it seems - playsound(L, 'sound/effects/rustle1.ogg', 100, 1) // Closest sound I've got to "Umbrella in the wind" - else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella)) - var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand() - if(U.open) - to_chat(L, "A gust of wind yanks the umbrella from your hand!") - playsound(L, 'sound/effects/rustle1.ogg', 100, 1) - L.drop_from_inventory(U) - U.toggle_umbrella() - U.throw_at(get_edge_target_turf(U, pick(alldirs)), 8, 1, L) - // If they have an open umbrella, it'll guard from rain if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella)) var/obj/item/weapon/melee/umbrella/U = L.get_active_hand() @@ -492,6 +482,8 @@ var/datum/planet/sif/planet_sif = null light_color = "#FF0000" temp_high = 323.15 // 50c temp_low = 313.15 // 40c + wind_high = 6 + wind_low = 3 flight_failure_modifier = 50 transition_chances = list( WEATHER_ASH_STORM = 100 diff --git a/code/modules/planet/weather.dm b/code/modules/planet/weather.dm index 6e4447f4e9..c5202ab067 100644 --- a/code/modules/planet/weather.dm +++ b/code/modules/planet/weather.dm @@ -2,8 +2,8 @@ var/datum/planet/our_planet = null // Reference to the planet datum that holds this datum. var/datum/weather/current_weather = null // The current weather that is affecting the planet. var/temperature = T20C // The temperature to set planetary walls to. - var/wind_dir = 0 // Not implemented. - var/wind_speed = 0 // Not implemented. + var/wind_dir = 0 // The direction the wind is blowing. Moving against the wind slows you down, while moving with it speeds you up. + var/wind_speed = 0 // How fast or slow a mob can be due to wind acting on them. var/list/allowed_weather_types = list() // Assoc list of weather identifiers, containing the actual weather datum. var/list/roundstart_weather_chances = list() // Assoc list of weather identifiers and their odds of being picked to happen at roundstart. var/next_weather_shift = null // world.time when the weather subsystem will advance the forecast. @@ -42,6 +42,7 @@ update_icon_effects() update_temperature() + update_wind() if(old_light_modifier && current_weather.light_modifier != old_light_modifier) // Updating the sun should be done sparingly. our_planet.update_sun() log_debug("[our_planet.name]'s weather is now [new_weather], with a temperature of [temperature]°K ([temperature - T0C]°C | [temperature * 1.8 - 459.67]°F).") @@ -107,6 +108,25 @@ temperature = LERP(current_weather.temp_low, current_weather.temp_high, our_planet.sun_position) our_planet.needs_work |= PLANET_PROCESS_TEMP +/datum/weather_holder/proc/update_wind() + var/new_wind_speed = rand(current_weather.wind_low, current_weather.wind_high) + if(!new_wind_speed) + wind_speed = 0 + wind_dir = 0 + return + wind_speed = new_wind_speed + wind_dir = pick(alldirs) + var/message = "You feel the wind blowing [wind_speed > 2 ? "strongly ": ""]towards the [dir2text(wind_dir)]." + message_all_outdoor_players(span("warning", message)) + +/datum/weather_holder/proc/message_all_outdoor_players(message) + for(var/mob/M in player_list) // Don't need to care about clientless mobs. + if(M.z in our_planet.expected_z_levels) + var/turf/T = get_turf(M) + if(!T.outdoors) + continue + to_chat(M, message) + /datum/weather_holder/proc/get_weather_datum(desired_type) return allowed_weather_types[desired_type] @@ -116,12 +136,7 @@ return var/message = pick(current_weather.transition_messages) // So everyone gets the same message. - for(var/mob/M in player_list) // Don't need to care about clientless mobs. - if(M.z in our_planet.expected_z_levels) - var/turf/T = get_turf(M) - if(!T.outdoors) - continue - to_chat(M, message) + message_all_outdoor_players(message) /datum/weather var/name = "weather base" @@ -129,6 +144,8 @@ var/icon_state = null // Icon to apply to turf undergoing weather. var/temp_high = T20C // Temperature to apply when at noon. var/temp_low = T0C // Temperature to apply when at midnight. + var/wind_high = 0 // Upper bound for mob slowdown when walking against the wind, and speedup when walking with it. Randomized between this and wind_low. + var/wind_low = 0 // Lower bound for above. var/light_modifier = 1.0 // Lower numbers means more darkness. var/light_color = null // If set, changes how the day/night light looks. var/flight_failure_modifier = 0 // Some types of weather make flying harder, and therefore make crashes more likely. (This is not implemented) From 68d63d2cf3ccc763b16cbc3a7574469fd82564f4 Mon Sep 17 00:00:00 2001 From: Neerti Date: Sun, 7 Apr 2019 22:51:39 -0400 Subject: [PATCH 11/98] Adds wind stats to communicator weather window. --- code/game/objects/items/devices/communicator/UI.dm | 2 ++ nano/templates/communicator.tmpl | 2 ++ 2 files changed, 4 insertions(+) diff --git a/code/game/objects/items/devices/communicator/UI.dm b/code/game/objects/items/devices/communicator/UI.dm index 69f5bd0d4b..e37587812a 100644 --- a/code/game/objects/items/devices/communicator/UI.dm +++ b/code/game/objects/items/devices/communicator/UI.dm @@ -77,6 +77,8 @@ "Temperature" = planet.weather_holder.temperature - T0C, "High" = planet.weather_holder.current_weather.temp_high - T0C, "Low" = planet.weather_holder.current_weather.temp_low - T0C, + "WindDir" = planet.weather_holder.wind_dir ? dir2text(planet.weather_holder.wind_dir) : "None", + "WindSpeed" = planet.weather_holder.wind_speed ? "[planet.weather_holder.wind_speed > 2 ? "Severe" : "Normal"]" : "None", "Forecast" = english_list(planet.weather_holder.forecast, and_text = "→", comma_text = "→", final_comma_text = "→") // Unicode RIGHTWARDS ARROW. ) weather[++weather.len] = W diff --git a/nano/templates/communicator.tmpl b/nano/templates/communicator.tmpl index 41d81391bd..ed28ab828e 100644 --- a/nano/templates/communicator.tmpl +++ b/nano/templates/communicator.tmpl @@ -282,6 +282,8 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm Time: {{:value.Time}}
    Weather: {{:value.Weather}}, {{:helper.fixed(value.Temperature)}}°C
    High: {{:helper.fixed(value.High)}}°C | Low: {{:helper.fixed(value.Low)}}°C
    + Wind Direction: {{:value.WindDir}}
    + Wind Speed: {{:value.WindSpeed}}
    Forecast: {{:value.Forecast}} From ffb2a37595f585b50bebe2adabb28f2107f63253 Mon Sep 17 00:00:00 2001 From: Neerti Date: Mon, 8 Apr 2019 12:21:21 -0400 Subject: [PATCH 12/98] Fixes runtime from not being on an outdoor z-level --- .../mob/living/carbon/human/human_movement.dm | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index d856577519..2790fa8eee 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -140,16 +140,17 @@ . += turf_move_cost // Wind makes it easier or harder to move, depending on if you're with or against the wind. - var/datum/planet/P = SSplanets.z_to_planet[z] - if(P) - var/datum/weather_holder/WH = P.weather_holder - if(WH && WH.wind_speed) // Is there any wind? - // With the wind. - if(direct & WH.wind_dir) - . = max(. - WH.wind_speed, -1) // Wind speedup is capped at roughly taj speed. - // Against it. - else if(direct & reverse_dir[WH.wind_dir]) - . += WH.wind_speed + if(T.outdoors) + var/datum/planet/P = SSplanets.z_to_planet[z] + if(P) + var/datum/weather_holder/WH = P.weather_holder + if(WH && WH.wind_speed) // Is there any wind? + // With the wind. + if(direct & WH.wind_dir) + . = max(. - WH.wind_speed, -1) // Wind speedup is capped at roughly taj speed. + // Against it. + else if(direct & reverse_dir[WH.wind_dir]) + . += WH.wind_speed #undef HUMAN_LOWEST_SLOWDOWN From 0d0d4e02dba27a4e73faf0a94ab941c340c354d6 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 9 Apr 2019 14:37:33 -0400 Subject: [PATCH 13/98] Updates Part Five --- code/__defines/misc.dm | 6 +- .../computers/item/modular_computer.dm | 158 +++++++++++++++--- .../computers/item/processor.dm | 12 +- .../computers/item/tablet.dm | 3 +- .../computers/machinery/modular_computer.dm | 61 ++++++- .../computers/machinery/modular_console.dm | 3 + .../computers/machinery/modular_laptop.dm | 3 + .../hardware/battery_module.dm | 6 +- .../modular_computers/hardware/hard_drive.dm | 15 ++ .../modular_computers/hardware/hardware.dm | 75 ++++++++- .../hardware/nano_printer.dm | 55 +++--- .../hardware/network_card.dm | 23 ++- .../hardware/processor_unit.dm | 1 + 13 files changed, 348 insertions(+), 73 deletions(-) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 1a74eeccbc..b570aee7c6 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -188,9 +188,9 @@ #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.025 // GQ/s transfer speed when the device is wirelessly connected and on Low signal -#define NTNETSPEED_HIGHSIGNAL 0.1 // GQ/s transfer speed when the device is wirelessly connected and on High signal -#define NTNETSPEED_ETHERNET 0.5 // GQ/s transfer speed when the device is using wired connection +#define NTNETSPEED_LOWSIGNAL 0.1 // 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 // Program bitflags #define PROGRAM_ALL 7 diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index bc041adbd5..534f6b573e 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -28,7 +28,12 @@ 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/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 + // 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. @@ -59,6 +64,22 @@ 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 Device" + set category = "Object" + set src in view(1) + + if(usr.incapacitated() || !istype(usr, /mob/living)) + usr << "You can't do that." + return + + if(!Adjacent(usr)) + 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 @@ -82,6 +103,17 @@ update_uis() 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) + 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/dead/user) if(enabled) ui_interact(user) @@ -99,6 +131,13 @@ user << "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message." return 1 +/obj/item/modular_computer/examine(var/mob/user) + ..() + if(damage > broken_damage) + user << "It is heavily damaged!" + else if(damage) + user << "It is damaged." + /obj/item/modular_computer/New() START_PROCESSING(SSobj, src) update_icon() @@ -108,7 +147,7 @@ kill_program(1) STOP_PROCESSING(SSobj, src) for(var/obj/item/weapon/computer_hardware/CH in src.get_all_components()) - qdel(CH) + uninstall_component(null, CH) return ..() /obj/item/modular_computer/update_icon() @@ -116,7 +155,9 @@ overlays.Cut() if(!enabled) + 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) else @@ -175,9 +216,27 @@ else turn_on(user) +/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)) + relay_qdel() + qdel() + /obj/item/modular_computer/proc/turn_on(var/mob/user) var/issynth = issilicon(user) // Robots and AIs get different activation messages. - if(processor_unit && ((battery_module && battery_module.battery.charge) || check_power_override())) // Battery-run and charged or non-battery but powered by APC. + if(damage > broken_damage) + if(issynth) + user << "You send an activation signal to \the [src], but it responds with an error code. It must be damaged." + else + 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 && ((battery_module && battery_module.battery.charge && battery_module.check_functionality()) || check_power_override())) // Battery-run and charged or non-battery but powered by APC. if(issynth) user << "You send an activation signal to \the [src], turning it on" else @@ -197,6 +256,10 @@ 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) @@ -350,12 +413,13 @@ var/mob/user = usr if(hard_drive) P = hard_drive.find_file_by_name(prog) - P.computer = src if(!P || !istype(P)) // Program not found or it's not executable program. user << "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning." return + P.computer = src + if(!P.is_supported_by_hardware(hardware_flag, 1, user)) return @@ -378,9 +442,9 @@ update_uis() // Used in following function to reduce copypaste -/obj/item/modular_computer/proc/power_failure() +/obj/item/modular_computer/proc/power_failure(var/malfunction = 0) if(enabled) // Shut down the computer - visible_message("\The [src]'s screen flickers \"BATTERY CRITICAL\" warning as it shuts down unexpectedly.") + visible_message("\The [src]'s screen flickers \"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\" warning as it shuts down unexpectedly.") if(active_program) active_program.event_powerfailure(0) for(var/datum/computer_file/program/PRG in idle_threads) @@ -400,6 +464,9 @@ power_usage += H.power_usage if(battery_module) + if(!battery_module.check_functionality()) + power_failure(1) + return battery_module.battery.use(power_usage * CELLRATE) last_power_usage = power_usage @@ -421,10 +488,9 @@ user << "You insert \the [I] into \the [src]." return if(istype(W, /obj/item/weapon/paper)) - var/obj/item/weapon/paper/P = W if(!nano_printer) return - nano_printer.load_paper(P) + 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) @@ -441,6 +507,21 @@ relay_qdel() qdel(src) return + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.isOn()) + user << "\The [W] is off." + return + + if(!damage) + user << "\The [src] does not require repairs." + return + + user << "You begin repairing damage to \the [src]..." + if(WT.remove_fuel(round(damage/75)) && do_after(usr, damage/10)) + damage = 0 + user << "You repair \the [src]." + return if(W.is_screwdriver()) var/list/all_components = get_all_components() @@ -551,13 +632,14 @@ found = 1 critical = 1 if(found) - user << "You remove \the [H] from \the [src]." + if(user) + user << "You remove \the [H] from \the [src]." H.forceMove(get_turf(src)) H.holder2 = null if(critical && enabled) - 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." - kill_program(1) - enabled = 0 + if(user) + 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() @@ -607,16 +689,16 @@ SSnanoui.update_uis(src) /obj/item/modular_computer/proc/check_update_ui_need() - var/ui_updated_needed = 0 + 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 chandge - ui_updated_needed = 1 + 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_updated_needed = 1 + ui_update_needed = 1 if(idle_threads.len) var/list/current_header_icons = list() @@ -629,13 +711,51 @@ else if(!listequal(last_header_icons, current_header_icons)) last_header_icons = current_header_icons - ui_updated_needed = 1 + 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_updated_needed = 1 + ui_update_needed = 1 break - if(ui_updated_needed) - update_uis() \ No newline at end of file + if(ui_update_needed) + update_uis() + +/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/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 26d65bf31a..5e406d048c 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -11,10 +11,10 @@ var/obj/machinery/modular_computer/machinery_computer = null /obj/item/modular_computer/processor/Destroy() + . = ..() if(machinery_computer && (machinery_computer.cpu == src)) machinery_computer.cpu = null machinery_computer = null - return ..() // Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type. // Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore @@ -25,6 +25,12 @@ else return +/obj/item/modular_computer/processor/examine(var/mob/user) + if(damage > broken_damage) + user << "It is heavily damaged!" + else if(damage) + user << "It is damaged." + // Power interaction is handled by our machinery part, due to machinery having APC connection. /obj/item/modular_computer/processor/handle_power() if(machinery_computer) @@ -40,6 +46,8 @@ hardware_flag = machinery_computer.hardware_flag max_hardware_size = machinery_computer.max_hardware_size steel_sheet_cost = machinery_computer.steel_sheet_cost + max_damage = machinery_computer._max_damage + broken_damage = machinery_computer._break_damage /obj/item/modular_computer/processor/relay_qdel() qdel(machinery_computer) @@ -110,7 +118,7 @@ /obj/item/modular_computer/processor/get_all_components() var/list/all_components = ..() - if(machinery_computer.tesla_link) + if(machinery_computer && machinery_computer.tesla_link) all_components.Add(machinery_computer.tesla_link) return all_components diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 1c997202db..2154b83e54 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -6,4 +6,5 @@ icon_state_menu = "menu" hardware_flag = PROGRAM_TABLET max_hardware_size = 1 - w_class = 2 \ No newline at end of file + w_class = 2 + light_strength = 2 // Same as PDAs \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 21f040074e..65e81f0ad6 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -20,10 +20,13 @@ var/screen_icon_screensaver = "standby" // Icon state overlay when the computer is powered, but not 'switched on'. 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 = 10 // Amount of steel sheets refunded when disassembling an empty frame of this computer. - + var/light_strength = 0 // Light luminosity when turned on var/base_active_power_usage = 100 // 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 = 10 // Power usage when the computer is idle and screen is off (currently only applies to laptops) + var/_max_damage = 100 + var/_break_damage = 50 + var/obj/item/weapon/computer_hardware/tesla_link/tesla_link // Tesla Link component of this computer. Allows remote charging from nearest APC. var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. @@ -42,7 +45,9 @@ if(!cpu || !cpu.enabled) if (!(stat & NOPOWER) || battery_powered) overlays.Add(screen_icon_screensaver) + set_light(0) return + set_light(light_strength) if(cpu.active_program) overlays.Add(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu) else @@ -57,15 +62,35 @@ if(cpu) cpu.eject_id() +// Eject ID card from computer, if it has ID slot with card inside. +/obj/machinery/modular_computer/verb/eject_usb() + set name = "Eject Portable Device" + set category = "Object" + set src in view(1) + + if(cpu) + cpu.eject_usb() + /obj/machinery/modular_computer/New() ..() cpu = new(src) +/obj/machinery/modular_computer/Destroy() + if(cpu) + qdel(cpu) + cpu = null + return ..() + // On-click handling. Turns on the computer if it's off and opens the GUI. /obj/machinery/modular_computer/attack_hand(mob/user) if(cpu) cpu.attack_self(user) // CPU is an item, that's why we route attack_hand to attack_self +/obj/machinery/modular_computer/examine(var/mob/user) + . = ..() + if(cpu) + cpu.examine(user) + // Process currently calls handle_power(), may be expanded in future if more things are added. /obj/machinery/modular_computer/process() if(cpu) @@ -80,9 +105,9 @@ return null // Used in following function to reduce copypaste -/obj/machinery/modular_computer/proc/power_failure() +/obj/machinery/modular_computer/proc/power_failure(var/malfunction = 0) if(cpu && cpu.enabled) // Shut down the computer - visible_message("\The [src]'s screen flickers [cpu.battery_module ? "\"BATTERY CRITICAL\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.") + visible_message("\The [src]'s screen flickers [cpu.battery_module ? "\"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.") if(cpu) cpu.shutdown_computer(0) battery_powered = 0 @@ -94,7 +119,7 @@ if(cpu.battery_module && cpu.battery_module.battery.charge <= 0) // Battery-run but battery is depleted. power_failure() return 0 - else if(!cpu.battery_module && (!powered() || !tesla_link || !tesla_link.enabled)) // Not battery run, but lacking APC connection. + else if(!cpu.battery_module && (!powered() || !tesla_link || !tesla_link.enabled || !tesla_link.check_functionality())) // Not battery run, but lacking APC connection. power_failure() return 0 else if(stat & NOPOWER) @@ -111,7 +136,7 @@ power_usage += CH.power_usage // Wireless APC connection exists. - if(tesla_link && tesla_link.enabled) + if(tesla_link && tesla_link.enabled && tesla_link.check_functionality()) idle_power_usage = power_usage active_power_usage = idle_power_usage + 100 // APCLink only charges at 100W rate, but covers any power usage. use_power = 1 @@ -127,6 +152,9 @@ else // No wireless connection run only on battery. use_power = 0 if (cpu.battery_module) + if(!cpu.battery_module.check_functionality()) + power_failure(1) + return cpu.battery_module.battery.use(power_usage * CELLRATE) cpu.last_power_usage = power_usage @@ -141,4 +169,25 @@ /obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) if(cpu) return cpu.attackby(W, user) - return ..() \ No newline at end of file + return ..() + + +// Stronger explosions cause serious damage to internal components +// Minor explosions are mostly mitigitated by casing. +/obj/machinery/modular_computer/ex_act(var/severity) + if(cpu) + cpu.ex_act(severity) + +// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components +/obj/machinery/modular_computer/emp_act(var/severity) + if(cpu) + cpu.emp_act(severity) + +// "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/machinery/modular_computer/bullet_act(var/obj/item/projectile/Proj) + if(cpu) + cpu.bullet_act(Proj) + + diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 879b675c1f..9919df7820 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -14,6 +14,9 @@ base_active_power_usage = 500 max_hardware_size = 3 steel_sheet_cost = 20 + light_strength = 4 + _max_damage = 300 + _break_damage = 150 /obj/machinery/modular_computer/console/buildable/New() ..() diff --git a/code/modules/modular_computers/computers/machinery/modular_laptop.dm b/code/modules/modular_computers/computers/machinery/modular_laptop.dm index ff2e851dc6..bce2d5192d 100644 --- a/code/modules/modular_computers/computers/machinery/modular_laptop.dm +++ b/code/modules/modular_computers/computers/machinery/modular_laptop.dm @@ -60,6 +60,9 @@ base_idle_power_usage = 25 base_active_power_usage = 200 max_hardware_size = 2 + light_strength = 3 + _max_damage = 200 + _break_damage = 100 /obj/machinery/modular_computer/laptop/buildable/New() ..() diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index ae685c4b37..1443059868 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -5,7 +5,7 @@ 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 var/battery_rating = 750 var/obj/item/weapon/cell/battery = null @@ -50,7 +50,9 @@ hardware_size = 1 battery_rating = 1000000 - +/obj/item/weapon/computer_hardware/battery_module/diagnostics(var/mob/user) + ..() + user << "Internal battery charge: [battery.charge]/[battery.maxcharge] CU" /obj/item/weapon/computer_hardware/battery_module/New() battery = new/obj/item/weapon/cell(src) diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index e595c56800..8dbf4e5be0 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -49,6 +49,12 @@ 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. + user << "NT-NFS File Table Status: [stored_files.len]/999" + 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)) @@ -57,6 +63,9 @@ if(!can_store_file(F.size)) return 0 + if(!check_functionality()) + return 0 + if(!stored_files) return 0 @@ -84,6 +93,9 @@ if(!stored_files) return 0 + if(!check_functionality()) + return 0 + if(F in stored_files) stored_files -= F recalculate_size() @@ -124,6 +136,9 @@ // 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 diff --git a/code/modules/modular_computers/hardware/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm index 580d73745b..43c7dbc4dc 100644 --- a/code/modules/modular_computers/hardware/hardware.dm +++ b/code/modules/modular_computers/hardware/hardware.dm @@ -3,12 +3,51 @@ 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/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)) + user << "***** DIAGNOSTICS REPORT *****" + diagnostics(user) + 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) + user << "\The [src] doesn't seem to require repairs." + return 1 + if(S.use(1)) + 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) + user << "\The [src] doesn't seem to require repairs." + return 1 + if(S.use(1)) + 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) + 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/machinery/modular_computer)) var/obj/machinery/modular_computer/C = L if(C.cpu) @@ -20,4 +59,30 @@ /obj/item/weapon/computer_hardware/Destroy() holder2 = null - ..() \ No newline at end of file + return ..() + +// Handles damage checks +/obj/item/weapon/computer_hardware/proc/check_functionality() + // 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) + user << "It seems to be severely damaged!" + else if(damage > damage_malfunction) + user << "It seems to be damaged!" + else if(damage) + 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/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm index 000c1c0981..11caa79794 100644 --- a/code/modules/modular_computers/hardware/nano_printer.dm +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -1,27 +1,32 @@ /obj/item/weapon/computer_hardware/nano_printer name = "nano printer" - desc = "Small integrated printer with scanner and paper recycling module." + desc = "Small integrated printer with paper recycling module." power_usage = 50 critical = 0 icon_state = "printer" hardware_size = 1 var/stored_paper = 5 var/max_paper = 10 - var/obj/item/weapon/paper/P = null // Currently stored paper for scanning. +/obj/item/weapon/computer_hardware/nano_printer/diagnostics(var/mob/user) + ..() + 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 - // Recycle stored paper - if(P) - stored_paper++ - qdel(P) - P = null + var/obj/item/weapon/paper/P = new/obj/item/weapon/paper(get_turf(holder2)) - P = new/obj/item/weapon/paper(get_turf(holder2)) - P.info = text_to_print + // 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() @@ -29,34 +34,18 @@ P = null return 1 -/obj/item/weapon/computer_hardware/nano_printer/proc/load_paper(var/obj/item/weapon/paper/paper) - if(!paper || !istype(paper)) - return 0 +/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) + user << "You try to add \the [W] into [src], but it's paper bin is full" + return - // We already have paper loaded, recycle it. - if(P && try_recycle_paper()) - P = paper - P.forceMove(holder2) - -/obj/item/weapon/computer_hardware/nano_printer/proc/try_recycle_paper() - if(!P) - return 0 - - if(stored_paper >= max_paper) - return 0 - - qdel(P) - P = null - return 1 + user << "You insert \the [W] into [src]." + qdel(W) + stored_paper++ /obj/item/weapon/computer_hardware/nano_printer/Destroy() if(holder2 && (holder2.nano_printer == src)) holder2.nano_printer = null - if(P) - if(holder2) - P.forceMove(get_turf(holder2)) - else - qdel(P) - P = null holder2 = null ..() \ 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 index 1640105865..247508806e 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -11,6 +11,18 @@ var/global/ntnet_card_uid = 1 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) + ..() + user << "NIX Unique ID: [identification_id]" + user << "NIX User Tag: [identification_string]" + user << "Supported protocols:" + user << "511.m SFS (Subspace) - Standard Frequency Spread" + if(long_range) + user << "511.n WFS/HB (Subspace) - Wide Frequency Spread/High Bandiwdth" + if(ethernet) + user << "OpenEth (Physical Connection) - Physical network connection port" /obj/item/weapon/computer_hardware/network_card/New(var/l) ..(l) @@ -27,7 +39,7 @@ var/global/ntnet_card_uid = 1 /obj/item/weapon/computer_hardware/network_card/wired name = "wired NTNet network card" - desc = "An advanced network card for usage with NTNet. This one uses wired connection." + desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection." ethernet = 1 power_usage = 100 // Better range but higher power usage. icon_state = "netcard_ethernet" @@ -51,6 +63,9 @@ var/global/ntnet_card_uid = 1 if(!enabled) return 0 + if(!check_functionality()) + return 0 + if(ethernet) // Computer is connected via wired connection. return 3 @@ -60,7 +75,11 @@ var/global/ntnet_card_uid = 1 if(holder2) var/turf/T = get_turf(holder2) if((T && istype(T)) && T.z in using_map.station_levels) - return 2 + // 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(long_range) // Computer is not on station, but it has upgraded network card. Low signal. return 1 diff --git a/code/modules/modular_computers/hardware/processor_unit.dm b/code/modules/modular_computers/hardware/processor_unit.dm index c258a3e5aa..fdaf216298 100644 --- a/code/modules/modular_computers/hardware/processor_unit.dm +++ b/code/modules/modular_computers/hardware/processor_unit.dm @@ -8,6 +8,7 @@ hardware_size = 2 power_usage = 50 critical = 1 + malfunction_probability = 1 var/max_idle_programs = 2 // 2 idle, + 1 active = 3 as said in description. From 8a550907387a31a8f25020ae95289d42ee8d079b Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 9 Apr 2019 15:47:44 -0400 Subject: [PATCH 14/98] Updates Part Sechs --- code/game/machinery/recharger.dm | 9 ++++--- .../computers/item/modular_computer.dm | 26 ++++++++++++++++--- .../computers/item/processor.dm | 16 +++++++----- .../computers/item/tablet_presets.dm | 2 ++ .../computers/machinery/modular_console.dm | 2 -- .../modular_computers/file_system/program.dm | 9 ++++++- .../file_system/programs/_program.dm | 24 +++++++++++++++-- .../hardware/battery_module.dm | 14 ++++++++-- .../modular_computers/hardware/card_slot.dm | 1 + .../modular_computers/hardware/hard_drive.dm | 6 +++++ .../hardware/network_card.dm | 3 +++ .../hardware/portable_hard_drive.dm | 5 ++-- .../hardware/processor_unit.dm | 6 ++++- .../modular_computers/hardware/tesla_link.dm | 3 ++- .../modular_computers/laptop_vendor.dm | 2 ++ code/modules/nano/modules/nano_module.dm | 26 +++++++------------ .../research/designs/modular_computer.dm | 13 ++-------- nano/templates/laptop_mainscreen.tmpl | 1 + 18 files changed, 116 insertions(+), 52 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index ea0e0dbb8a..bac28562d9 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,7 +8,7 @@ obj/machinery/recharger idle_power_usage = 4 active_power_usage = 40000 //40 kW var/obj/item/charging = null - var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/laptop, /obj/item/modular_computer, /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) + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/laptop, /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) var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered @@ -96,7 +96,6 @@ obj/machinery/recharger update_use_power(1) icon_state = icon_state_idle else - if(istype(charging, /obj/item/laptop)) var/obj/item/laptop/L = charging if(!L.stored_computer.cpu.battery_module.battery.fully_charged()) @@ -107,8 +106,7 @@ obj/machinery/recharger icon_state = icon_state_charged update_use_power(0) return - - if(istype(charging, /obj/item/modular_computer)) + 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 @@ -118,6 +116,9 @@ obj/machinery/recharger icon_state = icon_state_charged update_use_power(0) return + else if(istype(charging, /obj/item/weapon/computer_hardware/battery_module)) + var/obj/item/weapon/computer_hardware/battery_module/BM = charging + cell = BM.battery var/obj/item/weapon/cell/C = charging.get_cell() if(istype(C)) diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index 534f6b573e..05661c32de 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -148,6 +148,7 @@ 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/update_icon() @@ -198,6 +199,8 @@ var/list/program = list() program["name"] = P.filename program["desc"] = P.filedesc + if(P in idle_threads) + program["running"] = 1 programs.Add(list(program)) data["programs"] = programs @@ -395,10 +398,6 @@ if(!active_program || !processor_unit) return - if(idle_threads.len >= processor_unit.max_idle_programs) - user << "\The [src] displays a \"Maximal CPU load reached. Unable to minimize another program.\" error" - 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) @@ -407,6 +406,20 @@ if(user && istype(user)) ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. + 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() + user << "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed." + if( href_list["PC_runprogram"] ) var/prog = href_list["PC_runprogram"] var/datum/computer_file/program/P = null @@ -431,9 +444,14 @@ update_icon() return + if(idle_threads.len >= processor_unit.max_idle_programs+1) + 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. 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(P.run_program(user)) active_program = P update_icon() diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 5e406d048c..86bd00f9c2 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -16,6 +16,9 @@ machinery_computer.cpu = null machinery_computer = null +/obj/item/modular_computer/processor/nano_host() + return machinery_computer.nano_host() + // Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type. // Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore // non-relayed process calls. @@ -100,10 +103,6 @@ var/obj/item/weapon/computer_hardware/tesla_link/L = H L.holder = machinery_computer machinery_computer.tesla_link = L - // Consoles don't usually have internal power source, so we can't disable tesla link in them. - if(istype(machinery_computer, /obj/machinery/modular_computer/console)) - L.critical = 1 - L.enabled = 1 found = 1 ..(user, H, found) @@ -111,7 +110,6 @@ if(machinery_computer.tesla_link == H) machinery_computer.tesla_link = null var/obj/item/weapon/computer_hardware/tesla_link/L = H - L.critical = 0 // That way we can install tesla link from console to laptop and it will be possible to turn it off via config. L.holder = null found = 1 ..(user, H, found, critical) @@ -126,4 +124,10 @@ /obj/item/modular_computer/processor/Adjacent(var/atom/neighbor) if(!machinery_computer) return 0 - return machinery_computer.Adjacent(neighbor) \ No newline at end of file + return machinery_computer.Adjacent(neighbor) + +/obj/item/modular_computer/processor/turn_on(var/mob/user) + // If we have a tesla link on our machinery counterpart, enable it automatically. Lets computer without a battery work. + if(machinery_computer && machinery_computer.tesla_link) + machinery_computer.tesla_link.enabled = 1 + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index 413d10475e..d9c9905203 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -5,6 +5,7 @@ desc = "A low-end tablet often seen among low ranked station personnel" processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src) + battery_module.charge_to_full() hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src) network_card = new/obj/item/weapon/computer_hardware/network_card(src) @@ -13,6 +14,7 @@ . = ..() processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) battery_module = new/obj/item/weapon/computer_hardware/battery_module(src) + battery_module.charge_to_full() hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src) network_card = new/obj/item/weapon/computer_hardware/network_card(src) nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 9919df7820..5d86004a72 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -30,8 +30,6 @@ cpu.battery_module = null cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) - tesla_link.enabled = 1 - tesla_link.critical = 1 // Consoles don't usually come with cells, and this prevents people from disabling their only power source, as they wouldn't be able to enable it again. cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) // Consoles generally have better HDDs due to lower space limitations var/area/A = get_area(src) // Attempts to set this console's tag according to our area. Since some areas have stuff like "XX - YY" in their names we try to remove that too. diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 4e09cac65c..cfb51bd47b 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -25,6 +25,13 @@ 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 @@ -96,7 +103,7 @@ /datum/computer_file/program/proc/run_program(var/mob/living/user) if(can_run(user, 1)) if(nanomodule_path) - NM = new nanomodule_path(computer, src) // Computer is passed here as it's (probably!) physical object. Some UI's perform get_turf() and passing program datum wouldn't go well with this. + NM = new nanomodule_path(src, new /datum/topic_manager/program(src), src) if(requires_ntnet && network_destination) generate_network_log("Connection opened to [network_destination].") program_state = PROGRAM_STATE_ACTIVE diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm index 73f0ac95a3..cf7d88edc3 100644 --- a/code/modules/modular_computers/file_system/programs/_program.dm +++ b/code/modules/modular_computers/file_system/programs/_program.dm @@ -4,8 +4,28 @@ /obj/machinery/modular_computer/update_layout() return TRUE +/obj/item/modular_computer/initial_data() + return get_header_data() + /obj/item/modular_computer/update_layout() return TRUE -///datum/nano_module/program - //adheres_to_NT_standard = FALSE +/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) \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index 1443059868..f14d99e115 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -6,6 +6,7 @@ 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 @@ -13,6 +14,7 @@ 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 @@ -20,6 +22,7 @@ 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 @@ -27,6 +30,7 @@ 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 @@ -34,12 +38,14 @@ 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. @@ -57,5 +63,9 @@ /obj/item/weapon/computer_hardware/battery_module/New() battery = new/obj/item/weapon/cell(src) battery.maxcharge = battery_rating - battery.charge = battery_rating - ..() \ No newline at end of file + battery.charge = 0 + ..() + +/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 index 1771c347a1..d2ef03cabf 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -5,6 +5,7 @@ critical = 0 icon_state = "cardreader" hardware_size = 1 + origin_tech = list(TECH_DATA = 2) var/obj/item/weapon/card/id/stored_card = null diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index 8dbf4e5be0..3699eaedcd 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -4,6 +4,7 @@ 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! @@ -12,6 +13,7 @@ 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 @@ -20,6 +22,7 @@ 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 @@ -28,6 +31,7 @@ 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 @@ -37,6 +41,7 @@ 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 @@ -45,6 +50,7 @@ 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 diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index 247508806e..8ffc802dbd 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -4,6 +4,7 @@ var/global/ntnet_card_uid = 1 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 @@ -33,6 +34,7 @@ var/global/ntnet_card_uid = 1 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 off-station." 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 @@ -41,6 +43,7 @@ var/global/ntnet_card_uid = 1 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 diff --git a/code/modules/modular_computers/hardware/portable_hard_drive.dm b/code/modules/modular_computers/hardware/portable_hard_drive.dm index 411d917802..7e86cba6ca 100644 --- a/code/modules/modular_computers/hardware/portable_hard_drive.dm +++ b/code/modules/modular_computers/hardware/portable_hard_drive.dm @@ -6,7 +6,7 @@ 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" @@ -15,7 +15,7 @@ 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" @@ -24,6 +24,7 @@ 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() ..() diff --git a/code/modules/modular_computers/hardware/processor_unit.dm b/code/modules/modular_computers/hardware/processor_unit.dm index fdaf216298..d84bd1fc01 100644 --- a/code/modules/modular_computers/hardware/processor_unit.dm +++ b/code/modules/modular_computers/hardware/processor_unit.dm @@ -9,6 +9,7 @@ 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. @@ -19,6 +20,7 @@ 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" @@ -27,6 +29,7 @@ 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" @@ -34,4 +37,5 @@ icon_state = "cpu_small_photonic" hardware_size = 1 power_usage = 75 - max_idle_programs = 2 \ No newline at end of file + max_idle_programs = 2 + origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) \ 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 index 6943b75ae8..9b9d87738b 100644 --- a/code/modules/modular_computers/hardware/tesla_link.dm +++ b/code/modules/modular_computers/hardware/tesla_link.dm @@ -2,9 +2,10 @@ name = "tesla link" desc = "An advanced tesla link that wirelessly recharges connected device from nearby area power controller." critical = 0 - enabled = 0 // Starts turned off + enabled = 1 icon_state = "teslalink" hardware_size = 2 // Can't be installed into tablets + origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) var/obj/machinery/modular_computer/holder /obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L) diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 4ce6e94e17..56a699aabb 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -246,10 +246,12 @@ obj/machinery/lapvend/attackby(obj/item/weapon/W as obj, mob/user as mob) if(process_payment(I,W)) fabricate_and_recalc_price(1) if((devtype == 1) && fabricated_laptop) + fabricated_laptop.cpu.battery_module.charge_to_full() fabricated_laptop.forceMove(src.loc) fabricated_laptop.close_laptop() fabricated_laptop = null else if((devtype == 2) && fabricated_tablet) + fabricated_tablet.battery_module.charge_to_full() fabricated_tablet.forceMove(src.loc) fabricated_tablet = null ping("Enjoy your new product!") diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index f8001682ec..82b04a4ed4 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,23 +1,12 @@ /datum/nano_module var/name var/datum/host - var/datum/computer_file/program/program = null // Program-Based computer program that runs this nano module. Defaults to null. + var/datum/topic_manager/topic_manager -/datum/nano_module/New(var/host, var/program) - src.program = program - // Machinery-based computers wouldn't work w/o this as nano will assume they're items inside containers. - if(istype(host, /obj/item/modular_computer/processor)) - var/obj/item/modular_computer/processor/H = host - src.host = H.machinery_computer - else - src.host = host - -/datum/nano_module/Topic(href, href_list) - // Calls forwarded to PROGRAM itself should begin with "PRG_" - // Calls forwarded to COMPUTER running the program should begin with "PC_" - if(program && program.Topic(href, href_list)) - return TRUE - 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 @@ -25,6 +14,11 @@ /datum/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) return CanUseTopic(usr, state) == STATUS_INTERACTIVE +/datum/nano_module/Topic(href, href_list) + if(topic_manager && topic_manager.Topic(href, href_list)) + return TRUE + . = ..() + /datum/proc/initial_data() return list() diff --git a/code/modules/research/designs/modular_computer.dm b/code/modules/research/designs/modular_computer.dm index 253087cb1e..5bb19b0be6 100644 --- a/code/modules/research/designs/modular_computer.dm +++ b/code/modules/research/designs/modular_computer.dm @@ -61,7 +61,6 @@ req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 100) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/network_card sort_string = "VBAAG" @@ -71,7 +70,6 @@ req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/network_card/advanced sort_string = "VBAAH" @@ -81,7 +79,6 @@ req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 400) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/network_card/wired sort_string = "VBAAI" @@ -92,7 +89,6 @@ req_tech = list(TECH_DATA = 1) build_type = IMPRINTER materials = list("glass" = 8000) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/hard_drive/portable sort_string = "VBAAJ" @@ -102,7 +98,6 @@ req_tech = list(TECH_DATA = 2) build_type = IMPRINTER materials = list("glass" = 16000) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced sort_string = "VBAAK" @@ -112,7 +107,6 @@ req_tech = list(TECH_DATA = 4) build_type = IMPRINTER materials = list("glass" = 32000) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super sort_string = "VBAAL" @@ -136,7 +130,7 @@ build_path = /obj/item/weapon/computer_hardware/nano_printer sort_string = "VBAAN" -// Card slot +// Tesla Link /datum/design/item/modularcomponent/teslalink name = "tesla link" id = "teslalink" @@ -201,13 +195,13 @@ 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) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/processor_unit sort_string = "VBAAV" @@ -217,7 +211,6 @@ req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 4000) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/processor_unit/small sort_string = "VBAAW" @@ -227,7 +220,6 @@ req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 32000, glass = 8000) - chemicals = list("sacid" = 40) build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic sort_string = "VBAAX" @@ -237,6 +229,5 @@ req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 16000, glass = 4000) - chemicals = list("sacid" = 20) build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small sort_string = "VBAAY" diff --git a/nano/templates/laptop_mainscreen.tmpl b/nano/templates/laptop_mainscreen.tmpl index 20aa8fe75c..c34d9443a8 100644 --- a/nano/templates/laptop_mainscreen.tmpl +++ b/nano/templates/laptop_mainscreen.tmpl @@ -2,5 +2,6 @@ {{for data.programs}}
    {{:helper.link(value.desc, null, {'PC_runprogram' : value.name})}} + {{:helper.link('X', null, {'PC_killprogram' : value.name}, (value.running ? null : 'disabled'))}} {{/for}}
    \ No newline at end of file From 2e8acaf5a4da864c408cce9df287c85ddc5eef60 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 9 Apr 2019 16:16:16 -0400 Subject: [PATCH 15/98] Fixes compile error --- code/game/machinery/recharger.dm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index bac28562d9..46ec3a892e 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -101,24 +101,31 @@ obj/machinery/recharger if(!L.stored_computer.cpu.battery_module.battery.fully_charged()) icon_state = icon_state_charging L.stored_computer.cpu.battery_module.battery.give(active_power_usage*CELLRATE) - update_use_power(1) + update_use_power(2) else icon_state = icon_state_charged - update_use_power(0) + update_use_power(1) return 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(1) + update_use_power(2) else icon_state = icon_state_charged - update_use_power(0) + 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 - cell = BM.battery + 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)) From 2d6ada0237e43cd530dc840fdb54fb3c4721b8ac Mon Sep 17 00:00:00 2001 From: Neerti Date: Tue, 9 Apr 2019 17:49:24 -0400 Subject: [PATCH 16/98] Tweaks comment. --- code/modules/mob/living/carbon/human/human_movement.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 2790fa8eee..6d1bd819bd 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -147,7 +147,7 @@ if(WH && WH.wind_speed) // Is there any wind? // With the wind. if(direct & WH.wind_dir) - . = max(. - WH.wind_speed, -1) // Wind speedup is capped at roughly taj speed. + . = max(. - WH.wind_speed, -1) // Wind speedup is capped to prevent supersonic speeds from a storm. // Against it. else if(direct & reverse_dir[WH.wind_dir]) . += WH.wind_speed From eb62911b9d0dad9d5965fd3836a7e49a58ebc12e Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 10 Apr 2019 22:33:48 -0400 Subject: [PATCH 17/98] Updates Part Seven --- code/__defines/machinery.dm | 3 + code/__defines/misc.dm | 1 + code/datums/wires/camera.dm | 3 - code/datums/wires/robot.dm | 2 - code/game/machinery/camera/camera.dm | 53 ++---- code/game/machinery/camera/presets.dm | 6 +- code/modules/mob/living/life.dm | 4 + .../mob/living/silicon/robot/component.dm | 5 - .../computers/item/modular_computer.dm | 9 +- .../computers/machinery/console_presets.dm | 31 +++- .../computers/machinery/modular_computer.dm | 5 +- .../modular_computers/file_system/program.dm | 16 +- .../file_system/programs/_program.dm | 2 +- .../file_system/programs/antagonist/dos.dm | 6 +- .../programs/antagonist/hacked_camera.dm | 36 ++++ .../file_system/programs/camera.dm | 173 ++++++++++++++++++ .../file_system/programs/ntdownloader.dm | 2 +- .../modular_computers/laptop_vendor.dm | 20 +- code/modules/nano/modules/nano_module.dm | 19 ++ nano/templates/computer_fabricator.tmpl | 4 +- nano/templates/mod_sec_camera.tmpl | 36 ++++ nano/templates/mod_sec_camera_map_header.tmpl | 44 +++++ polaris.dme | 2 + 23 files changed, 412 insertions(+), 70 deletions(-) create mode 100644 code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm create mode 100644 code/modules/modular_computers/file_system/programs/camera.dm create mode 100644 nano/templates/mod_sec_camera.tmpl create mode 100644 nano/templates/mod_sec_camera_map_header.tmpl diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 95d4929acb..e95483cea4 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) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index b570aee7c6..d6e2fd4dce 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -191,6 +191,7 @@ #define NTNETSPEED_LOWSIGNAL 0.1 // 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 7 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/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index d484e7c882..20b3ace0e0 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -88,7 +88,6 @@ stat |= EMPED set_light(0) triggerCameraAlarm() - kick_viewers() update_icon() update_coverage() START_PROCESSING(SSobj, src) @@ -241,26 +240,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 @@ -272,7 +270,6 @@ stat |= BROKEN wires.RandomCutAll() - kick_viewers() triggerCameraAlarm() update_icon() update_coverage() @@ -287,26 +284,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/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index cf08e5a9ed..ccd53918ac 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -8,6 +8,10 @@ return 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. 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/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index 05661c32de..2a6a57a1df 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -776,4 +776,11 @@ 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 + take_damage(Proj.damage, Proj.damage / 1.5) + +// 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 ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index 5e9e7f4987..51098e5e44 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -17,7 +17,6 @@ cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(cpu) install_programs() -// Override in child types to install preset-specific programs. /obj/machinery/modular_computer/console/preset/proc/install_programs() return @@ -31,6 +30,7 @@ cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) cpu.hard_drive.store_file(new/datum/computer_file/program/atmos_control()) cpu.hard_drive.store_file(new/datum/computer_file/program/rcon_console()) + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // ===== MEDICAL CONSOLE ===== @@ -40,6 +40,7 @@ /obj/machinery/modular_computer/console/preset/medical/install_programs() cpu.hard_drive.store_file(new/datum/computer_file/program/suit_sensors()) + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // ===== RESEARCH CONSOLE ===== @@ -51,6 +52,7 @@ cpu.hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor()) cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // ===== COMMAND CONSOLE ===== @@ -64,6 +66,7 @@ cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod()) cpu.hard_drive.store_file(new/datum/computer_file/program/comm()) + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // ===== SECURITY CONSOLE ===== @@ -72,7 +75,7 @@ desc = "A stationary computer. This one comes preloaded with security programs." /obj/machinery/modular_computer/console/preset/security/install_programs() - return // No security programs exist, yet, but the preset is ready so it may be mapped in. + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // ===== CIVILIAN CONSOLE ===== @@ -83,3 +86,27 @@ /obj/machinery/modular_computer/console/preset/civilian/install_programs() cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // Mainly for the entertainment channel, won't allow connection to other channels without access anyway + +// ===== ERT CONSOLE ===== +/obj/machinery/modular_computer/console/preset/ert + console_department = "Crescent" + desc = "A stationary computer. This one comes preloaded with various programs used by Nanotrasen response teams." + +/obj/machinery/modular_computer/console/preset/ert/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor/ert()) + cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) + cpu.hard_drive.store_file(new/datum/computer_file/program/comm()) + +// ===== MERCENARY CONSOLE ===== +/obj/machinery/modular_computer/console/preset/mercenary + console_department = "Unset" + desc = "A stationary computer. This one comes preloaded with various programs used by shady organizations." + _has_printer = 1 + _has_id_slot = 1 + emagged = 1 // Allows download of other antag programs for free. + +/obj/machinery/modular_computer/console/preset/ert/install_programs() + cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor/hacked()) + cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 65e81f0ad6..06daed0dda 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -190,4 +190,7 @@ if(cpu) cpu.bullet_act(Proj) - +/obj/machinery/modular_computer/check_eye(var/mob/user) + if(cpu) + return cpu.check_eye(user) + return -1 diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index cfb51bd47b..d3878bd025 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -2,7 +2,9 @@ /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* the program. + 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. @@ -80,6 +82,9 @@ if(!access_to_check) // No required_access, allow it. return 1 + if(!istype(user)) + return 0 + var/obj/item/weapon/card/id/I = user.GetIdCard() if(!I) if(loud) @@ -101,7 +106,7 @@ // 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)) + if(can_run(user, 1) || !requires_access_to_run) if(nanomodule_path) NM = new nanomodule_path(src, new /datum/topic_manager/program(src), src) if(requires_ntnet && network_destination) @@ -143,3 +148,10 @@ 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 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm index cf7d88edc3..2cba7960c9 100644 --- a/code/modules/modular_computers/file_system/programs/_program.dm +++ b/code/modules/modular_computers/file_system/programs/_program.dm @@ -28,4 +28,4 @@ // 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) \ No newline at end of file + return program && program.Topic(href, href_list) \ 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 index 2f21771147..a913e3ddf2 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -17,11 +17,11 @@ dos_speed = 0 switch(ntnet_status) if(1) - dos_speed = NTNETSPEED_LOWSIGNAL * 10 + dos_speed = NTNETSPEED_LOWSIGNAL * NTNETSPEED_DOS_AMPLIFICATION if(2) - dos_speed = NTNETSPEED_HIGHSIGNAL * 10 + dos_speed = NTNETSPEED_HIGHSIGNAL * NTNETSPEED_DOS_AMPLIFICATION if(3) - dos_speed = NTNETSPEED_ETHERNET * 10 + dos_speed = NTNETSPEED_ETHERNET * NTNETSPEED_DOS_AMPLIFICATION if(target && executed) target.dos_overload += dos_speed if(!target.is_operational()) 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..be69b012b9 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm @@ -0,0 +1,36 @@ +/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" + 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.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" + +/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/camera.dm b/code/modules/modular_computers/file_system/programs/camera.dm new file mode 100644 index 0000000000..6aaaa21b80 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/camera.dm @@ -0,0 +1,173 @@ +// Returns which access is relevant to passed network. Used by the program. +/proc/get_camera_access(var/network) + if(!network) + return 0 + + 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_SUPPLY ) + 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 = "generic" + extended_desc = "This program allows remote access to station's 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) + 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(usr, 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"]) + if(!(href_list["switch_network"] in using_map.station_networks)) + return + + // 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 + 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 station's 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" + +// 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/hacked/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 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index b0bb56928e..77c0d97a0a 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -133,7 +133,7 @@ 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)) + if(!P.can_run(user) && P.requires_access_to_download) continue all_entries.Add(list(list( "filename" = P.filename, diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 56a699aabb..a7ed86a207 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -221,15 +221,17 @@ var/list/data[0] data["state"] = state - 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 - data["totalprice"] = "[total_price]$" + 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) diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 82b04a4ed4..e5e0bf64f1 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -14,6 +14,25 @@ /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(!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 diff --git a/nano/templates/computer_fabricator.tmpl b/nano/templates/computer_fabricator.tmpl index 2df5c3af2a..c8d8b572b3 100644 --- a/nano/templates/computer_fabricator.tmpl +++ b/nano/templates/computer_fabricator.tmpl @@ -12,7 +12,7 @@ + {{/if}} ") + t = replacetext(t, "\[cell\]", "") - t = replacetext(t, "\[tr\]", "") - t = replacetext(t, "\[td\]", "
    Current Price: - {{:data.totalprice}} + {{:data.totalprice}}T
    Battery: {{:helper.link('Standard', null, { "hw_battery" : 1 }, data.hw_battery == 1 ? 'selected' : null)}} @@ -63,7 +63,7 @@

    Step 3: Payment

    Your device is now ready for fabrication..
    Please swipe your identification card to finish purchase.
    - Total price: {{:data.totalprice}} + Total price: {{:data.totalprice}}T {{else data.state == 3}}

    Step 4: Thank you for your purchase

    Should you experience any issues with your new device, contact technical support at support@computerservice.nt diff --git a/nano/templates/mod_sec_camera.tmpl b/nano/templates/mod_sec_camera.tmpl new file mode 100644 index 0000000000..0afb80f4b8 --- /dev/null +++ b/nano/templates/mod_sec_camera.tmpl @@ -0,0 +1,36 @@ +
    + {{:helper.link('Show Map', 'pin-s', {'showMap' : 1})}} + {{:helper.link('Reset', 'refresh', {'reset' : 1})}} +
    + +
    +
    Current Camera:
    + {{if data.current_camera}} +
    {{:data.current_camera.name}}
    + {{else}} +
    None
    + {{/if}} +
    + +
    +
    Networks:
    +
    +{{for data.networks}} + {{if value.has_access}} + {{:helper.link(value.tag, '', {'switch_network' : value.tag}, null, data.current_network == value.tag ? 'selected' : null)}} + {{else}} + {{:helper.link(value.tag, '', {}, null, data.current_network == value.tag ? 'selected' : 'redButton')}} + {{/if}} +{{/for}} +
    +
    Cameras:
    +
    +{{for data.cameras}} + {{if data.current_camera && value.name == data.current_camera.name}} + {{:helper.link(value.name, '', {'switch_camera' : value.camera}, 'selected')}} + {{else value.deact}} + {{:helper.link(value.name + " (deactivated)", '', {}, 'inactive')}} + {{else}} + {{:helper.link(value.name, '', {'switch_camera' : value.camera})}} + {{/if}} +{{/for}} diff --git a/nano/templates/mod_sec_camera_map_header.tmpl b/nano/templates/mod_sec_camera_map_header.tmpl new file mode 100644 index 0000000000..459027797f --- /dev/null +++ b/nano/templates/mod_sec_camera_map_header.tmpl @@ -0,0 +1,44 @@ +
    + {{:helper.link('Show Camera List', 'script', {'showMap' : 0})}} + {{:helper.link('Reset', 'refresh', {'reset' : 1})}} +
    +
    +
    Current Camera:
    + {{if data.current_camera}} +
    {{:data.current_camera.name}}
    + {{else}} +
    None
    + {{/if}} +
    + +
    +
    + Z-Level: +
    +
    + {{for config.mapZLevels :zValue:zIndex}} + {{:helper.link(zValue, 'close', {'mapZLevel' : zValue}, null, config.mapZLevel == zValue ? 'selected' : null)}} + {{/for}} +
    +
    +
    +
    + Zoom Level: +
    +
    + + + + +
    +
    +
    +
    Networks:
    +
    +{{for data.networks}} + {{if value.has_access}} + {{:helper.link(value.tag, '', {'switch_network' : value.tag}, null, data.current_network == value.tag ? 'selected' : null)}} + {{else}} + {{:helper.link(value.tag, '', {}, null, data.current_network == value.tag ? 'selected' : 'redButton')}} + {{/if}} +{{/for}} \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index ccd27f2f85..1c60e35ea3 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2112,6 +2112,7 @@ #include "code\modules\modular_computers\file_system\programs\_engineering.dm" #include "code\modules\modular_computers\file_system\programs\_medical.dm" #include "code\modules\modular_computers\file_system\programs\_program.dm" +#include "code\modules\modular_computers\file_system\programs\camera.dm" #include "code\modules\modular_computers\file_system\programs\card.dm" #include "code\modules\modular_computers\file_system\programs\comm.dm" #include "code\modules\modular_computers\file_system\programs\configurator.dm" @@ -2121,6 +2122,7 @@ #include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" #include "code\modules\modular_computers\file_system\programs\nttransfer.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\hacked_camera.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" #include "code\modules\modular_computers\hardware\battery_module.dm" #include "code\modules\modular_computers\hardware\card_slot.dm" From 37f7cede188a00c680529cd92105587a811df33d Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 10 Apr 2019 23:15:14 -0400 Subject: [PATCH 18/98] Forgot invalid network type --- code/modules/modular_computers/file_system/programs/camera.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/modular_computers/file_system/programs/camera.dm b/code/modules/modular_computers/file_system/programs/camera.dm index 6aaaa21b80..abefb25d3a 100644 --- a/code/modules/modular_computers/file_system/programs/camera.dm +++ b/code/modules/modular_computers/file_system/programs/camera.dm @@ -12,7 +12,7 @@ return access_medical if(NETWORK_RESEARCH || NETWORK_RESEARCH_OUTPOST) return access_research - if(NETWORK_MINE || NETWORK_SUPPLY ) + 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 From 7f0695496dce140e060eec9b38cf0cb79aa6300e Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 11 Apr 2019 13:56:02 -0700 Subject: [PATCH 19/98] Re-adds the Space Worm. Splits its icons into its own DMI. --- code/modules/food/food/snacks.dm | 1 + .../simple_mob/subtypes/animal/space/worm.dm | 429 ++++++++++++++++++ html/changelogs/Mechoid - SpaceWorm.yml | 36 ++ icons/mob/animal.dmi | Bin 266875 -> 254237 bytes icons/mob/worm.dmi | Bin 0 -> 5525 bytes icons/obj/food.dmi | Bin 106899 -> 107201 bytes polaris.dme | 1 + 7 files changed, 467 insertions(+) create mode 100644 code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm create mode 100644 html/changelogs/Mechoid - SpaceWorm.yml create mode 100644 icons/mob/worm.dmi diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 294baee09b..31a078d9be 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -3451,6 +3451,7 @@ center_of_mass = list("x"=21, "y"=12) nutriment_amt = 4 nutriment_desc = list("cheese" = 2,"taco shell" = 2) + /obj/item/weapon/reagent_containers/food/snacks/taco/Initialize() . = ..() reagents.add_reagent("protein", 3) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm new file mode 100644 index 0000000000..38644641e0 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm @@ -0,0 +1,429 @@ +/mob/living/simple_mob/animal/space/space_worm + name = "space worm segment" + desc = "A part of a space worm." + icon = 'icons/mob/worm.dmi' + icon_state = "spaceworm" + icon_living = "spaceworm" + icon_dead = "spacewormdead" + + tt_desc = "U Tyranochaetus imperator" + + anchored = TRUE // Theoretically, you shouldn't be able to move this without moving the head. + + maxHealth = 200 + health = 200 + movement_cooldown = 0 + + faction = "worm" + + status_flags = 0 + universal_speak = 0 + universal_understand = 1 + animate_movement = SYNC_STEPS + + response_help = "touches" + response_disarm = "flails at" + response_harm = "punches the" + + harm_intent_damage = 2 + + attacktext = list("slammed") + + ai_holder_type = /datum/ai_holder/simple_mob/inert + + mob_class = MOB_CLASS_ABERRATION // It's a monster. + + meat_amount = 2 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/worm + + var/mob/living/simple_mob/animal/space/space_worm/previous //next/previous segments, correspondingly + var/mob/living/simple_mob/animal/space/space_worm/next //head is the nextest segment + + var/severed = FALSE // Is this a severed segment? + + var/severed_head_type = /mob/living/simple_mob/animal/space/space_worm/head/severed // What type of head do we spawn when detaching? + var/segment_type = /mob/living/simple_mob/animal/space/space_worm // What type of segment do our heads make? + + var/stomachProcessProbability = 50 + var/digestionProbability = 20 + var/flatPlasmaValue = 5 //flat Phoron amount given for non-items + + var/atom/currentlyEating // Worm's current Maw target. + + var/z_transitioning = FALSE // Are we currently moving between Z-levels, or doing something that might mean we can't rely on distance checking for segments? + var/sever_chunks = FALSE // Do we fall apart when dying? + + var/time_maw_opened = 0 + var/maw_cooldown = 30 SECONDS + var/open_maw = FALSE // Are we trying to eat things? + +/mob/living/simple_mob/animal/space/space_worm/head + name = "space worm" + icon_state = "spacewormhead" + icon_living = "spacewormhead" + + anchored = FALSE // You can pull the head to pull the body. + + maxHealth = 300 + health = 300 + + hovering = TRUE + + melee_damage_lower = 10 + melee_damage_upper = 25 + attack_sharp = TRUE + attack_edge = TRUE + attack_armor_pen = 30 + attacktext = list("bitten", "gored", "gouged", "chomped", "slammed") + + animate_movement = SLIDE_STEPS + + var/segment_count = 6 + +/mob/living/simple_mob/animal/space/space_worm/head/severed + segment_count = 0 + severed = TRUE + +/mob/living/simple_mob/animal/space/space_worm/head/short + segment_count = 3 + +/mob/living/simple_mob/animal/space/space_worm/head/long + segment_count = 10 + +/mob/living/simple_mob/animal/space/space_worm/head/handle_special() + ..() + update_body_faction() + +/mob/living/simple_mob/animal/space/space_worm/head/update_icon() + ..() + if(!open_maw && !stat) + icon_state = "[icon_living][previous ? 1 : 0]_hunt" + else + icon_state = "[icon_living][previous ? 1 : 0]" + + if(previous) + set_dir(get_dir(previous,src)) + + if(stat) + icon_state = "[icon_state]_dead" + +/mob/living/simple_mob/animal/space/space_worm/head/Initialize() + ..() + + var/mob/living/simple_mob/animal/space/space_worm/current = src + + if(segment_count && !severed) + for(var/i = 1 to segment_count) + var/mob/living/simple_mob/animal/space/space_worm/newSegment = new segment_type(loc) + current.Attach(newSegment) + current = newSegment + current.faction = faction + +/mob/living/simple_mob/animal/space/space_worm/head/verb/toggle_devour() + set name = "Toggle Feeding" + set desc = "Extends your teeth for 30 seconds so that you can chew through mobs and structures alike." + set category = "Abilities" + + if(world.time < time_maw_opened + maw_cooldown) + if(open_maw) + to_chat(src, "You retract your teeth.") + time_maw_opened -= maw_cooldown / 2 // Recovers half cooldown if you end it early manually. + else + to_chat(src, "You are too tired to do this..") + set_maw(FALSE) + else + set_maw(!open_maw) + +/mob/living/simple_mob/animal/space/space_worm/proc/set_maw(var/state = FALSE) + open_maw = state + if(open_maw) + time_maw_opened = world.time + movement_cooldown = initial(movement_cooldown) + 1.5 + else + movement_cooldown = initial(movement_cooldown) + update_icon() + +/mob/living/simple_mob/animal/space/space_worm/death() + ..() + + DumpStomach() + + if(previous) + previous.death() + +/mob/living/simple_mob/animal/space/space_worm/handle_special() // Processed in life. Nicer to have it modular incase something in Life change(d)(s) + ..() + + if(world.time > time_maw_opened + maw_cooldown) // Auto-stop eating. + if(open_maw) + to_chat(src, "Your jaws cannot remain open..") + set_maw(FALSE) + + if(next && !(next in view(src,1)) && !z_transitioning) + Detach(1) + + if(stat == DEAD && sever_chunks) // Dead chunks fall off and die immediately if we sever_chunks + if(previous) + previous.Detach(1) + if(next) + Detach(1) + + if(prob(stomachProcessProbability)) + ProcessStomach() + + update_icon() + + return + +/mob/living/simple_mob/animal/space/space_worm/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /mob/living/simple_mob/animal/space/space_worm/head)) + var/mob/living/simple_mob/animal/space/space_worm/head/H = mover + if(H.previous == src) + return FALSE + + if(istype(mover, /mob/living/simple_mob/animal/space/space_worm)) // Worms don't run over worms. That's weird. And also really annoying. + return TRUE + else if(src.stat == DEAD && !istype(mover, /obj/item/projectile)) // Projectiles need to do their normal checks. + return TRUE + return ..() + +/mob/living/simple_mob/animal/space/space_worm/Destroy() // If a chunk is destroyed, kill the back half. + DumpStomach() + if(previous) + previous.Detach(1) + if(next) + next.previous = null + next = null + ..() + +/mob/living/simple_mob/animal/space/space_worm/Move() + var/attachementNextPosition = loc + . = ..() + if(.) + if(previous) + if(previous.z != z) + previous.z_transitioning = TRUE + else + previous.z_transitioning = FALSE + previous.forceMove(attachementNextPosition) // None of this 'ripped in half by an airlock' business. + update_icon() + +/mob/living/simple_mob/animal/space/space_worm/forceMove() + var/attachementNextPosition = loc + . = ..() + if(.) + if(previous) + if(previous.z != z) + previous.z_transitioning = TRUE + else + previous.z_transitioning = FALSE + previous.forceMove(attachementNextPosition) // None of this 'ripped in half by an airlock' business. x 2 + update_icon() + +/mob/living/simple_mob/animal/space/space_worm/head/Bump(atom/obstacle) + if(open_maw && !stat && obstacle != previous) + spawn(1) + if(currentlyEating != obstacle) + currentlyEating = obstacle + + set_AI_busy(TRUE) + if(AttemptToEat(obstacle)) + currentlyEating = null + set_AI_busy(FALSE) + else + currentlyEating = null + . = ..(obstacle) + +/mob/living/simple_mob/animal/space/space_worm/update_icon() + if(previous) //midsection + icon_state = "spaceworm[get_dir(src,previous) | get_dir(src,next)]" + if(stat) + icon_state = "[icon_state]_dead" + + else //tail + icon_state = "spacewormtail" + if(stat) + icon_state = "[icon_state]_dead" + set_dir(get_dir(src,next)) + + if(next) + color = next.color + + return + +/mob/living/simple_mob/animal/space/space_worm/proc/AttemptToEat(var/atom/target) + if(istype(target,/turf/simulated/wall)) + var/turf/simulated/wall/W = target + if((!W.reinf_material && do_after(src, 5 SECONDS)) || do_after(src, 10 SECONDS)) // 10 seconds for an R-wall, 5 seconds for a normal one. + if(target) + W.dismantle_wall() + return 1 + else if(istype(target,/atom/movable)) + if(istype(target,/mob) || do_after(src, 5)) // 5 ticks to eat stuff like tables. + var/atom/movable/objectOrMob = target + if(istype(objectOrMob, /obj/machinery/door)) // Doors and airlocks take time based on their durability and our damageo. + var/obj/machinery/door/D = objectOrMob + var/total_hits = max(2, round(D.maxhealth / (2 * melee_damage_upper))) + + for(var/I = 1 to total_hits) + + if(!D) + objectOrMob = null + break + + if(do_after(src, 5)) + D.visible_message("Something crashes against \the [D]!") + D.take_damage(2 * melee_damage_upper) + else + objectOrMob = null + break + + if(D && (D.stat &= BROKEN|NOPOWER)) + D.open(TRUE) + break + + if(istype(objectOrMob, /obj/effect/energy_field)) + var/obj/effect/energy_field/EF = objectOrMob + objectOrMob = null // No eating shields. + if(EF.opacity) + EF.visible_message("Something begins forcing itself through \the [EF]!") + else + EF.visible_message("\The [src] begins forcing itself through \the [EF]!") + if(do_after(src, EF.strength * 5)) + EF.adjust_strength(rand(-8, -10)) + EF.visible_message("\The [src] crashes through \the [EF]!") + else + EF.visible_message("\The [EF] reverberates as it returns to normal.") + + if(objectOrMob) + objectOrMob.update_nearby_tiles(need_rebuild=1) + objectOrMob.forceMove(src) + return 1 + + return 0 + +/mob/living/simple_mob/animal/space/space_worm/proc/Attach(var/mob/living/simple_mob/animal/space/space_worm/attachement) + if(!attachement) + return + + previous = attachement + attachement.next = src + + return + +/mob/living/simple_mob/animal/space/space_worm/proc/Detach(die = 0) + var/mob/living/simple_mob/animal/space/space_worm/head/newHead = new severed_head_type(loc,0) + var/mob/living/simple_mob/animal/space/space_worm/newHeadPrevious = previous + + previous = null //so that no extra heads are spawned + + newHead.Attach(newHeadPrevious) + + if(die) + newHead.death() + + qdel(src) + +/mob/living/simple_mob/animal/space/space_worm/proc/ProcessStomach() + for(var/atom/movable/stomachContent in contents) + if(stomach_special(stomachContent)) + continue + if(prob(digestionProbability)) + if(stomach_special_digest(stomachContent)) + continue + if(istype(stomachContent,/obj/item/stack)) //converts to plasma, keeping the stack value + if(!istype(stomachContent,/obj/item/stack/material/phoron)) + var/obj/item/stack/oldStack = stomachContent + new /obj/item/stack/material/phoron(src, oldStack.get_amount()) + qdel(oldStack) + continue + else if(istype(stomachContent,/obj/item)) //converts to plasma, keeping the w_class + var/obj/item/oldItem = stomachContent + new /obj/item/stack/material/phoron(src, oldItem.w_class) + qdel(oldItem) + continue + else + new /obj/item/stack/material/phoron(src, flatPlasmaValue) //just flat amount + if(!isliving(stomachContent)) + qdel(stomachContent) + else + var/mob/living/L = stomachContent + if(iscarbon(L)) + var/mob/living/carbon/C = L + var/damage_cycles = rand(3, 5) + for(var/I = 0, I < damage_cycles, I++) + C.apply_damage(damage = rand(10,20), damagetype = BIOACID, def_zone = pick(BP_ALL)) + else + L.apply_damage(damage = rand(10,60), damagetype = BIOACID) + continue + + DumpStomach() + + return + +/mob/living/simple_mob/animal/space/space_worm/proc/DumpStomach() + if(previous && previous.stat != DEAD) + for(var/atom/movable/stomachContent in contents) //transfer it along the digestive tract + stomachContent.forceMove(previous) + else + for(var/atom/movable/stomachContent in contents) // Or dump it out. + stomachContent.forceMove(get_turf(src)) + return + +/mob/living/simple_mob/animal/space/space_worm/proc/stomach_special(var/atom/A) // Futureproof. Anything that interacts with contents without relying on digestion probability. Return TRUE if it should skip digest. + return FALSE + +/mob/living/simple_mob/animal/space/space_worm/proc/stomach_special_digest(var/atom/A) // Futureproof. Any special checks that interact with digested atoms. I.E., ore processing. Return TRUE if it should skip future digest checks. + return FALSE + +/mob/living/simple_mob/animal/space/space_worm/proc/update_body_faction() + if(next) // Keep us on the same page, here. + faction = next.faction + if(previous) + previous.update_body_faction() + return 1 + return 0 + +// Worm meat. + +/obj/item/weapon/reagent_containers/food/snacks/meat/worm + name = "meat" + desc = "A chunk of pulsating meat." + icon_state = "wormmeat" + health = 180 + filling_color = "#551A8B" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/meat/worm/Initialize() + . = ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("phoron", 3) + reagents.add_reagent("myelamine", 3) + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/meat/worm/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/material/knife)) + var/to_spawn = pickweight( + /obj/random/junk = 30, + /obj/random/trash = 30, + /obj/random/maintenance/clean = 15, + /obj/random/tool = 15, + /obj/random/medical = 3, + /obj/random/bomb_supply = 7, + /obj/random/contraband = 3, + /obj/random/unidentified_medicine/old_medicine = 7, + /obj/item/weapon/ore/strangerock = 3, + /obj/item/weapon/ore/phoron = 7, + /obj/random/handgun = 1, + /obj/random/toolbox = 4, + /obj/random/drinkbottle = 5 + ) + + new to_spawn(get_turf(src)) + + if(prob(20)) + user.visible_message("Something oozes out of \the [src] as it is cut.") + + to_chat(user, "You cut the tissue holding the chunks together.") + + ..() diff --git a/html/changelogs/Mechoid - SpaceWorm.yml b/html/changelogs/Mechoid - SpaceWorm.yml new file mode 100644 index 0000000000..a92623314b --- /dev/null +++ b/html/changelogs/Mechoid - SpaceWorm.yml @@ -0,0 +1,36 @@ +################################ +# 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: Mechoid + +# 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: "Re-adds the Space Worm with New and Improved [Doesn't Break The Universe] logic." diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index f3836ae2c16ca4c3dd5ad673973f9e1a846dcd40..2f22e0ddaaa9979c819d5018fd7b6749f0abb7b0 100644 GIT binary patch delta 138276 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 F{(qzkGZO#+ delta 151023 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 diff --git a/icons/mob/worm.dmi b/icons/mob/worm.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0d5e61978b261c16c5e9d22eb8ed29ba3848fd61 GIT binary patch literal 5525 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 diff --git a/polaris.dme b/polaris.dme index 4c4221a50c..ab2cf8e93b 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2075,6 +2075,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\worm.dm" #include "code\modules\mob\living\simple_mob\subtypes\blob\blob.dm" #include "code\modules\mob\living\simple_mob\subtypes\blob\spore.dm" #include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm" From 30474e627fde582cf567c900ad0657ebe1cc53c9 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 11 Apr 2019 17:07:25 -0400 Subject: [PATCH 20/98] Updates Part Octo --- .../file_system/programs/camera.dm | 10 +- .../file_system/programs/file_browser.dm | 2 + .../file_system/programs/game.dm | 151 ++++++++++++++++++ icons/obj/modular_console.dmi | Bin 26093 -> 26868 bytes icons/obj/modular_laptop.dmi | Bin 25753 -> 26672 bytes icons/obj/modular_tablet.dmi | Bin 1467 -> 1636 bytes nano/templates/arcade_classic.tmpl | 44 +++++ polaris.dme | 1 + 8 files changed, 203 insertions(+), 5 deletions(-) create mode 100644 code/modules/modular_computers/file_system/programs/game.dm create mode 100644 nano/templates/arcade_classic.tmpl diff --git a/code/modules/modular_computers/file_system/programs/camera.dm b/code/modules/modular_computers/file_system/programs/camera.dm index abefb25d3a..939e1b0812 100644 --- a/code/modules/modular_computers/file_system/programs/camera.dm +++ b/code/modules/modular_computers/file_system/programs/camera.dm @@ -6,15 +6,15 @@ switch(network) if(NETWORK_THUNDER) return 0 - if(NETWORK_ENGINE || NETWORK_ENGINEERING || NETWORK_ENGINEERING_OUTPOST || NETWORK_ALARM_ATMOS || NETWORK_ALARM_FIRE || NETWORK_ALARM_POWER) + 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) + if(NETWORK_RESEARCH,NETWORK_RESEARCH_OUTPOST) return access_research - if(NETWORK_MINE || NETWORK_CARGO ) + if(NETWORK_MINE,NETWORK_CARGO ) return access_mailsorting // Cargo office - all cargo staff should have access here. - if(NETWORK_COMMAND || NETWORK_TELECOM) + if(NETWORK_COMMAND,NETWORK_TELECOM) return access_heads if(NETWORK_ERT) return access_cent_specops @@ -46,7 +46,7 @@ for(var/network in using_map.station_networks) all_networks.Add(list(list( "tag" = network, - "has_access" = can_access_network(usr, get_camera_access(network)) + "has_access" = can_access_network(user, get_camera_access(network)) ))) all_networks = modify_networks_list(all_networks) diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index bdb14fb049..fd2b935069 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -1,3 +1,5 @@ +#define MAX_TEXTFILE_LENGTH 128000 // 512GQ file + /datum/computer_file/program/filemanager filename = "filemanager" filedesc = "NTOS File Manager" diff --git a/code/modules/modular_computers/file_system/programs/game.dm b/code/modules/modular_computers/file_system/programs/game.dm new file mode 100644 index 0000000000..42d3e35eac --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/game.dm @@ -0,0 +1,151 @@ +// 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. + 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 = nanomanager.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/icons/obj/modular_console.dmi b/icons/obj/modular_console.dmi index 3b852ddb576838961f87ef493070849ca0b3501a..a409adf4961cbc0cdbf94cc1b17c050bb11de091 100644 GIT binary patch literal 26868 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 z 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 NAugI5m0fUn{BJYZ)NTL( literal 26093 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 literal 25753 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

    Y+f{K;v8>)uanRb`nDqQKx|T?XW#RQj?nx z`r^#T1O+p4_`@1J`qYTiu^*BtxRfA7IeTI^KPXd8OgM;W!WTG2yfDJ^9LEFYQ3(t$ zdag{~0knvUr*;gUd=k?yjE>X!LdHVcAnHpd+3lzWNy3-*0y5GM$F9vV))F*PS4m9Ovaa1`T)V`CP)OBIw(1FT;8sPj9t~w7VpGaZz7bfLVBdSN@alLb&;rnoW&J7PaXT|e1IcJxf!}1Q0Kxgg^?<2z$$u_4N zzL$!rS_a6Y4GqSU-!eo{z496Jz}o~OL7Ed?UUa7W+S~Q_*3Dj*+F98%%|Y>ntkCQs z@KY&I|Jq2H-U1bTOrTqZLmtgkAm0KgL-JOCa3b4)lFhbTp|2|4Ni}3a2XqV!Yn?;?OA?nwsV(GDBC!q-gu|+TL7q8GPFvM4ex< z^>fO4xZ`(9)79$K%mCfSMB^(1NVZ`d0&GxvuryIVj6HF-L{(JKXJz7S6D1nSxtk>~ zR|?;5!yqy6jL%w;Y9I-T)``cZaYhw4ywD4I$Wq72`v<7H*TzcU&4UXG7xQ$Iw}O9{ z_gw8H+h=bI3@D&Cm!||pRy8duAOuC1YLd3--A!P$&Q2mrz!sVsbsV0Q`k%%xtK(qF zV{n3|R?>tnc7L;<%&4IC0iE_>MVH>l-PbWO+Z}v9iJ#Uvqk^datM_hDt<4mpK~gVDlvg@5dzt4qpnNf~&27|7CTs0kMsB*lTsL=s-KkeWPah&9XfC>9 zR^bnlG=^S(ZO*wSRTTdyFGMh|#!0v|{PqmK+$X})tE71oL`yGn?}ZVvlb$lphfdPT zp-?7-KXSf%a;ojFCE~^@E@E-c98?XS>?BCg>W3kQYdv!;1fDL7-h*tBX$AO@)A<=0 zFN(8!8o)Ur4RJvrVnhFJdx5{}qO&Z33~u*R8WxE!(67N`EZ8nq`j$3*g2hA|OZ_QE zMXCOYRhO#~dttEt_nWd#STr87;XPfSWxQzMI?ENLIxgzmFbUspcC#EW$FW0zzL6|Jq1 z8WwNd(AwIXiT2^p^eUn{^{%ia&$~kaZNN$GyMM{Zh!nASUb$U;vRFe7huB=0b?b%& zY>P&T4em*~qkw!7!^@ya?EO%2&!Op>o{3-;XQ0{Lu9yQL_5;zI)}lX-D#Kt91V=amu}9k5VK`y?!X{^Rj0NYj7ybRWcia%#kV_7LLi8%F{WR#+4@wCY-*M!j zp7u`e>o5_Ox9E!~kq*3Ii=Uy$;==>|C=o?ZZQ--{zl4G}%lHW%N^IucrMYjA9LVNw zW^XrF3fuHKl>JFIh9G(`irE>``xO4IM*oA-(Q9jzHl~DO99~6IbKj$*fkhl2B{@JC zN+wQl1f-u_)v}9#6jSwR zgJiQ*vXV_emd;VPC)AEk*%-R&jt$KhOiIF&X>2b~9Jd3;fA09R{sHHFz}uNZ-)r#G4Oo8ej^-LmQzA?=?6|oqbugnKZLDc;fB_5 z3*f}7LIbx*t)IVV0iYl6WwVjgrT%X>mshpZf;ZSpNn}fis*SP{Oi@ zTL=8Y(ONDku7H1#wf{D7@_+i^Mi`K(J6GefpIy=EyBzy&-yhHshEDp0lNqA$-zKq|3epLU=8HJ182C#7X7R-7VuNFP$>6WVt_*hN6L z7mDBWHS)3qd$vNq-f;Zb z{4n9neK|O;F7>cGhmjWxH@c%Df=+vCp8{w*n!Rp;YjC2Kbk711=;FgoeL#t_3|~cU zcEhFI*nkAPMquU*JK8bga(yo8RoXp8{kE$58~DoOhz_HwI_oyBCB_A&P#1mGBeXv*LTqf`o$8 z-2fFRh@Z_nnthWivE`54;O+x0zX}}J5A`L{H%i<*m3#k(iX;E~YEkjv5X!ZSNwWC@ zc&??fvsA47z}{A?v6M$>S1Md@&z-td9IXiU^#iz~1CkZrs?ee6xekhq9kkLy|A6_) z@({9|@BSBa3XPF3v9CHG|4VOv3{@FI!Lqxv%(CZ8{yiY1PiL@F-UFaZ>YR3T($`+> z7D{pg#^l7of>y8S_>5mKVh*UEKB(XxpY7qeE2u|HmtI1GF0H-?5#V~?Et7%@kE;_Q zZV!J2;UEv*z6hdxpoUr|)0K$^WC9mE)|z z9LP6j&wOq(P*6RB`z8&|CR10W#-QNC^VryhiHP2lanoK=mY>v*Sl%pO_8<$T(|_vV ztoLd&v*wqz0d7$aH7cjct|$*VZ1K9<%}RyJ`9AD+D=UYK)cyxYe7iH0Pl3Xo6CXnk zZ}I)kIFf#Dh$$+&M>S-@>)GoDE+oBuaEC6ih5w6vK1n3NpzW{pQ!;A@-o(YkJc2-* zNv{q_`Bmv7;u(ew6%%P+Bhr=s$oN)H2c)&-oNI0}Z$jNieHoCCyI&9} zC1c^L%;fL|nZ4XAD4;1!gi${{RTokyMfaxd4fepB|JOAlOVW-lkmj|I)8KN+M)2+DR} z24@fHvb16?FXOnhaDz%fIPPVwuqMt73V)kfwDjJXXp!}f`GOW59^bs9Cr=kz*coGx zjt`%p1Xo#)WP+Xj><879nyyfV&yNGH9rmDK)21u!7#dSC@%vc>ba~VRZ8wAFe(2ry zY6Ir$zlYnczCn#i)YI;34Af()l*bx?xV6J&v;8zcF9IBs>6NwhrWAtCbHogswbLg0h)jh{Kh)2z*d_@_A&Ls-*9BZ?~(ida1*Yoxy+$5nt=me3GP{12Ob3ZjC+sZB$HP z*B8daeP%nez`xNZyMurOEx6u!bDc-QO?&ZAEpfoM|oc@ z#O_83UZ)`>#KRR$Vnh1&T4X@ZV49T27mtOLxtKO)at`>lj}W|CU>1Q2(OvaKF9rRU z6v+j<>wP(VcUI_hp+f#U7cMK#UF5e2@3?!ZLngeA{i2Y}v)!9qXnPVX9Ny$zLSy3u z3!beEuzL;sRhDXo%VnCfV2wT-ROEr7c$Wz6q85D2keOi zV19oKZB-&G-TzV~XWFHy>L!c{Qu=ZJKTezx2{s}cPj zUJ+xHj*cG26mzLlqJ{c7B)W!K7rI$MVycU4ciji{x#0*(R?BvpVFocCzWP3g?lie!$ov&@ zaU`sLP|r610x0GP|5pC;3c_x<9sQ#H|3v}(e;9cAU!k63%C1vwvbb5A%I(0hyQ>lZ z2EzzY@kuX0Ge(h5WMm{~bwnYo7dJsH&x4%F;gyFbvAW`J0;d}!#(L)EHY%7vEdW8> zu6HN?hVoUh+K!2qCsHzSK#G97d~N=CXR!f<)Qm_g>^J+0CcWLR%lvUacOz)~ZM3se z@KP$W(lRB=r8_vkLIWiD$7c-CN=5BwCnC77S^wU0cU=M(B?IPP_ZW%o@Yn4KvOZ1D z%>!Te_>f3;8Bl6|d<_cWT&@gWS%gAB?XeEy1bN_aV7LuSbjiK|vb?9ueD6#gZyMQr zi%r^E+Yfk1`nwX|F^2<}oO5}4S{nz>Zs$w_jmmPBXd-J(58PV?Hwg4|3#!}J;mJ;2cxLhFNr>#$?P=W* z`^#fNMU!M%xYw|ck|ZuWl41}f)(wSdn;NPkEhpwTX@27R9LH;N4-wFiD_GO<-~z%O zm)6)(Uf_F@gKY?U=40yDHYam*kFs1(3v3W>F#<=_&#-<~@_ukb*hWv1eNz479}E&U zAbjE!%c?DfzDtDYJ4W1w|xynzE-(j69>ki`pOZtSd&WZd>8oq&r3LYAYz zm#tAu;wH^U5aFeMdhM;qWz+-C#vIlMM}U%*kxNtpM%b`Xt!v0o~#**Z$xPm2=5bJ zD`evvZ}q@OJ7}V-sdtK$O-rb3?51DizeSmCerZls{rit;>{8)C@bi5_YCxJ&8r+jT z(!K{mFst5*TIxdPwviiTrSA&%QVra|j(0&-a2r;Ub$&{-sk82OPcl?lLH7rH+MmR; zX$iV%x%eH^TI~Yc@@9~JGLIMXM7wuWN5GKG{;rI*F?M7 zU@G^a)ldlA0j*pO0h(ZE)^A7T^l}ZZj{ZSCTAFc#Q}u(hJ5o~tB_i+}p;dp2JBs_1 zSOY)0VfJ`leXWGb?;D1&B=W!NIQriYs{g@`z=v?;+20 zkQg(K<#Ip>D%)J6OaIlhlk*EC9{BQMfdU1={c9Gw>fb6aUQz@%ipt|!1NXq5bO+mJ zFO?rqB`y@vJE5;P0!N~o+|0%>uR_QrucybuV*RkwqomJ3ZG$Mbx2Z^QJp>jM)W41m zopNC{#WprBSj2C>($7+G>wnO2t0AufmzQTynjHZE_MD>N;Az8!uCK^>BC*FA0Tovr zIti>A71Z^9N`UG!gG#$Z?zlS+&BiVedn6P_fkQ(-HSBfO62*iO-&qSajJDJR z58&I7W5RKD?52RLGiuu3WXkH;iP?~cvJQMtS#HUDhF8J6;~WZB*mN14ggShe`Kt6g z8tmtI&N#d68a2eerv7+ivE6CsvCje)Vaugnt}G@&Yenb+5IwhN`Qh?F6P7 zrOtHA#McG~2fN2-STg9ZsPn`E!~@&OnqyzPWEDmQfp5>GlBd0GmQ*FonFR%37-C7* zDA3~@z!J}Rl=CcHx8$n8)PI8i?g^>_JKQYB9%&V}6hrCU!%d2n_xi;kuD1w506!MW zPF^!eGj=3+ZIf|3ONlLqWq6^BXrQ?^@Eaj6AtC$FixN~7Ym2>(XC}4@>ao7n^4(t6 z-UjG&zj^bfrOU^xkVkVBD@-Z6093v%Md>i5=E;MFe@orB2ldgofaKT+&G?L3002AcEqVxDO9%%|tZP$k?-H3gyYg~7odVQ<=%;USqAFY7zl07d1x8o@@_ z2*MwsAYD^WZ^446V+BHK-j4H*pa^9}DxcAJL##T_xFLqBKCW5iD$rAv^a;YICxHw` z=elU)o%5Km`i7Ye3tUM9jKq2uxR^Og;IB%t`&>>rw{>1hHYwQhk$U$7;W%7*RU0AC zn#f9z>q68!`f%MeWVpa|UO%9jkO3u98y~~diu-|YvHgN`fm&7)?1eYOKCNVLwOHhf z-Sm)>%M6c!ycozPL9sKXkg@?=Cua1J&6mTuiQ&I9!c6F35vJc!nGXS?+c}UMc>~Tv zmFtnB!Gp$Nf=RRo63<6P`5fLF>);aO75K2_p*;g&L|mlD>7o}jK=9w z3S~iOWz$H5=Fx7Xg`82CoTb;;%r-^R!~GVr?_Uc)C(+e0kMMV)sBEJZV@6B-@S5xh zG7Uo7r{MKjmE5(}k@o6g{8Iw<4IUS2i%NYX7}$R1le$(xj?^|5&nemk_$1Y-KXEq6 z61HLjM;CrI;lo9z^Uq9TjUL!eo2W9c7GR<)LTc9|QcHaL51r0@65DjsM_J#_eE9Ai zoR;iVaq9C=B|QD>6l?1`9U-pQuga zJ>jPVGfs}nxPCx3bZFuVwB<`fPY?(11~SW?Jh%;gPjxbJ&Y)F!!leohoE7+TpNl;U1TXe|fkCgku^gU^lQgYb4+4PUzMMg>;pro%YC`MQP57}1 zRu`BH)e9H6gcE(cIAyUEmQ&U*1^5M%anK?{8y*V+#33ItH>19ejQG`q={LOUxN#D0 zdG7y*4$J>FSNYS^dCRi`S&!bW-qQK{lvg{Y3Y+E^2;MR zpQGiVrF*uht_XXf_Csj?_f7E___h@MM;ci6Lt7}N!EdDG;IUHp7-e9x`Xa*g6tfOK z-gePBBuhR&jT3tOASeT2Z1+~zT%?%rX_E(h%KGuy={R+gR1!_Q*V$^gu~t(J!Nxwz za{&MLTQ#7JuYH_Rz*17J5X(uQ#&3QfnY%rS){jS#K1miG0@mL?YrFwA2EWA9!@vES z9%Yb_f)B3H;&cy67{+@C%^g7wlXdl+oa!boP5Wyz;muM(HaPg>=UlW>KOP|eq})R? z?6ko1$Y93tu*F%7;kEu1|2FSl$#JT}+G|)$Jzv1h3hRU8D`o04HXK^JCMOzmp8IqD zV@L7c{9-fn0G4%Zs^PLw<0@%m3U05V;pU%Cz_npypm(}*-^0IC8xF_Fof_u zN%aIGu4YNMO6WldUAMQX_lqt?BW2LbrWk$LY0=STY#nS}zJcVxLI*#XVN3VHL{N<_ zsnyqSpY=qW&xX#X$7iph8CBhr*{`Mzp3w~(vJ~{8HG{lo$fNjR=3nXjUxZ3p7|Qw^ zaan7G_-lEg1l;NmPl3a{z~8fjj-gj?Njlk|=*;c8UjfKfp8?d}b4ksUprO)sCBwvh$v#dMUzr)LU6{&yh}z_VY(x{;jC* zuXGgn`-2U>dlw8nQ}9V#?p)KZVkmukGthw;?g%02bQg1Sdy=!?ypcupb^)vYs%wK; zhbhunblB4!;8>IualC(%1;L3+y2f|Ys^#6PiwtgZHWfM0Dhl7HO`eFVF^V4mh-xyN z6-#n|8OBC`0V1IS0V{Xjgp z)N4l7D_Xr(c=pB*M7Ts0jhE$6Bu4Gmjc%*D(5pHbvH4maU%wby3T@MW$mo+I)TG$d z#bih0PONeYhJ)trc!%l?(PO*AO*Ha#c;xr3)t!oOduz6xwG^l zP1~aHsTeq?N3Z+#1zWnhIkhDG0>woJ1Va{cSkZzQY{T>P>#ruAi~!WnO_QCeIR-G*CKS=Qd@PsTRTdC}9b1+-b;Zj`?g&@7+fKbWPM*sx zJ{Y|CNPN8LeJX&9H5^MciglnMY`Mpt#6a}-Ey;huOuVAx%7*!qUue9mdkM82!&Jx3 zjNHGi8MQyM3g@(*m0#Gj-hc0=#HpP_s>Iu4)chO>0{tj?8vewous&XaK> zx@QR@7o8N?a+QMxrv=wLWH2Qu&a!7KKR`q$`tOOeq+4B9|BI8e(8Z?Kb%k9aqd~U9 zHbb~sJEx?Or~hF7!T}4b+qqe|aazr;tPF$14dcYcBhlwJPISwct{%AoQ%T_LxtKPl zGyv8<+x3(YqG=telY`)2tn2ib^Vf+IT>(LpvXPP2;EQBz%E>W8 zjZg?jp&wg+`vs@5slut3)4`2C{kpB-yW)&FSX7lU*A}1s;)d_l?N`E=giZH`p=rdgT@|YV+E1LVExPuGK>p52 zA=6Vs6usgrs|WinZ@cR$I}3a!Qw96yd#ox@1vL3pbizR+fy0XcyaCC8_trR(qp|Gv zZ;h49;fpuoqk9dhpt{E+(6-&CO3et%XBpc_0JE#e+}-XV66i0ym1zN}5R!kaP?AAu zYrslFUG14Oe6L$wG3OeAHi+RL;zlflU9qQaO;&3hD+E=uRlP}-V^`c*-gyCzyO;R$ zcAgDGZ!Lhj0a!*M-8Icy1JD`H`3ToyY$aP+pQhE4vasn#J|97`_`tz}9Px}w4wXT? zAW4L*;;}Vh(}R1N@6?)1g3!WY`YEe(5bEeg!p)@TRdSGOB`E>uzmefgr-XNJ$*Cut z&{}=AlcKGaxNCRun9AYF8~z^U7Ly74kik1{Ag(CK!;Yjk!%t?WXNZr2iidmLs$r(x znsd|Ny6FrYZ&IyjoNs%w@#_KA_$#&q38yhj?gD1{g&Z?~4moYyik}Aq5SXozrt*uTp`vwsZ$U}f3Re$ai9?`vaw6)6LpSjXCJf?qM<~f zifuNYZ_@^tLj1o2Oz{QXmkr*(zuG(a#EV=zafs>cUx=gy?|ZrC22dDFJzqkx$jO2=EnF`EnTB#`UYdkY6IwjN8!Q2HPyhsb#r zTes54*kyH%_}6+-O_SNMS(qYfX!e@~`)iU>C0G_zdoS}TLJUXpuELYQe*>vnP1#*b zK}Tyy_%BFot6z*$hrlHI#5&KzNxN_a2sxtP4nTh8t5c=Jpa8fH#Y-UXc>3kii?S1`9xkb|0%etkHEXR#{k zc?_t#(Dg!w_ULTsxR3Qf5hbKJb{z^ zzubWu8c&j6XdWOPYb}()o2jXf^oyEN%i1W4t=^#q-(YD0P;0`@vSh$ZcKE=h9YFrcE|@)0A4 zBAD#wMeM`9G~yG}0d|YU)dH1t@a28}Ll$_i)EmBv&3<>?`rjqn1ctil#uzS`c<823 zLl$3TgBLb|F6-Cjp^dTE>se-}fNwCZ0`&IK6PFe+9!hf8{Ke(39ybMQpDeRyo_kUn zog1OfLdMwg*!bz&vs&l11CNLC?|hFT9(+aIgQMh8wj6TfTvHMII+E z6VbP8e&`;Ee%S>B%k~%X%R?J_MNFp{(YUYt*#(T8++A_!DS5BLFD-JBSc4Dz*+l4g z?l~7eBO7sH|1)8I4Zt#p3s{D5fyRLwg`Q|QRPOmP-8zB2Z%%!PFcr|mkm*&uFbQOL zWhK|K)hqD!_W2)aLo#>Iqn*X$oTrjgu;KDg;GM!>{Ki3AuzX3lW&=p_ckKtXnh(*y zmqGl_jG{X5v-I}GzxT3UDL(48I)HwvP-6{jH3};ym;}k>_S5Kn)4@Lx2Hi!M$52O) zlo^K}+7gx)A*7|-atq@VHx9?hTqnu|nV?B&lM;*!C% z=bYEN4?07@n(!6={C(Hw(PJ_~QddNvZkBNPaW}|0t4kiO{#q%Fo%h4hPmRu` zE*+qQGvJXmY5CDRfLUgT%ypSU1u74V9vMWU9uQUU>mmS^y<4<&-zmg4Vs?4 z&8%S8=hYe|sCOtIWX^dkukXX3rPaREVZ3EsUQI}blNokIlPtcYW}HoIdOL|&kTQBqsqPc{92Gp$OTu)}@j{($8qot`Yc-z=gG1|q6vrko3J zm_3pxL65V+%^KJ1I;y{Xa?%rgCWbTf4)nY?21v2CQI&RF zs}!lQQCmKkUyA|{W)WB>m)WpJR#iQ92sZz|$Vplo9B@JJAo^}Ffp+j{!3l~%Fn^NY z>+A_pU(`H7UOIiI5WqbYckpbOp(BhJCvFh*fna}6N>bdx!fvE5pj3#4Y9QR zCs&3m4*-U-E!W*AaGR9*0tm@>aEctWUAxc&2pB*lAp394S1Lh~{a{hJe2ybb?#OUf zxwGp9&J)>)p;)KY`}`-wH`d;GaZvIgu({QS<&an?3%q(ZOID}jT&wW#l0=j*rJ^S6 zDi^w~CKNQuVR%_WO9PcaI)%4_+2UES@yxX8^cGjK` z6A!$R-Bvko=Ni<8p&yKEBw)mVRf@z9p%WfxM>gn#uROpW+XvMFp2CZ{s+UCoN&fho zTsANKhWKM`p{u>yzxZ%(K&F>-Lp&qn@A=#uEejLIbF$raA&87Kd>(whic=s=&Icq5 z>hJEj(9I$5XWNBGW?&Ec?)$!VFA02GrE^GXD_fHPEWzioS;SGN5K;DX`7raF7W#Y7 z95R}UwcxEkR-2a;gp9w^4T;3?!LrS*8ddzTPfn+Wl*yM#uwxh3H$rs@X#KG^&GdxkO~xO(fquv~_>1RSNM{S`FOtgV>Zw{Q4eSaoolx5RGGG{LMfA zBx7ww651LAwd?=0tN8zpwu;_l$9i1|qg)yiJ#Vue-3+9H^H;P)z*aO012uO-j(}n! z@QWB|M+=2}TS8fm7;{nb28YQ)LS^PLs`S9ZDATuo{%!Kt7e8jTQ_|AnP6gXrrT95q zzEodN2D*aD+z)Jtfza`23@njQ-R^&g8ae2H;*8Kr9tmvLN=wH3jNFTc_Wd-*!XYnK z3NPc6M@Tz{_%~6Dr(Rsv5=4IuObmU&C?W=(!osHS#Nx8d`?i3wBW*r@ z+=19d5y+Q!zBy6g)GUAG;uTmMJY*nSo|q%zRmWJ1!M$*b59IycMs~lp>(pl_PxN>j z48<`Ua;g!Ht1E-QBhIG4;p(9TN+F!B@j>kGi?2l3kY#R|?dqapz-#>&uG9^ozYb1) zL{CS;3`KR-bl2~@{bW5SN}yBs=~70W=HrcL7v9$O!Wv0xGT=C7F;^kbEgoqTCrT7vR;^o_paPLfFhaFFC%(EQl#~Uyq>*dKDP3Hk3O7Prw|Js-VWj)2eGD(>u{CE-$BWt5u(3aPw@OE2Y7E#>na; zLm6|mgX_e6?n)WF94W|l3$D?k+`QnZGp9M?a)j75TKYqFtG_SHBHMoAQ zkzr*Ib}me|IoVZ>`aK09aXTH%aH}iTtRXqXXJbRjXt&aFg*Lao9&(tSS4@@@XKF59 zN$88Z6DMaFP9aa%?z*Smm@gX2diEl{li|{p^21ni*a$fJ)kjf2ujvlZNWiY{LYGof z%^UM6l3}2vEc!mf5Sl(*TtFNFTyBI zxVuXYWzpZ5tmW0E4wU#h=;{SI7LCl_@7tc-_Rw(~bZY3LxZY{!J(&4*&2})L-2T*Q zzpp_hZmC(=^XpFjUqx)k^i1w4DlOB3PM`6q=CB@Ud0U$~TG5yOUS=nxR@H~S8K~QJ zT9fG;mfxomVj~Zt)8LsW^Df_0Jn+fkUh)97drf^lwPsZ9lvj$bPj%&zg7eUQpmmqJ zd0I1r>thT(3r(r(dyf{f&LOIO1ni#f^6yu0Ce8!Ez*nRP?X} zk02^bT#&HG^+-fOQAE~=UQxh+VHJ?X4G}?>AfRk#_mRTWmcFw)3IR@fJZ38 zceqjv--GG=*)EnXn0<_{;v*HUMJmm+Q@i-?%ZQ;C}UA|&%1Pjj1R=SyRu z=8OtG_V2y`=dutKm%60 zCGU~!^?1ni6&o|nP6Ne24eGD47DZs#oU zF|0KJi>tu4K>B2KI)fpjag)eWyC8{}j*SuzHlfPlG9h7%kA%q|T%VZpU3VN@!R#PX z<`B=WP$5VX&2yMcIxio&j1}hxe(?*uQQZt5C#G3YEz@dT4rwn`zl-+z#=a9V&rXYQ zkXVlI;kovjo+@^QD2pdHW+*#kdHINsd%2K0Q<)B57K_;4oclL7Kg<%FY%8bC1`ef8oI`e2)kG)h9~5xJHN-7m^6{w~9VjBLQ!Idd+1?;Y zsV*~~!|Tj+DVKoZdtjwUFcU&6urZjAtV})JD030dF?LTk6BfpCBe&j197d$q<$4Fe z93&SDM_W;jf)SQ>fpT~kL|+l2jV-_Zop2K#2N z!%WxYvQt#{Hxb;)!Bl}>p3EHK2?_)*pht~z(8{IBxZLftP^uJx& znyi=>J6UjhrOp(a=y2#cU*i*cyX9Sv~8H@;Y0IPJk4CJ zq5B53Fx#E=Gd)X!Xhd+Vd|y|kt?uChP3`@t;M{w}HT_Fyqr7fjH$%^ED@*L{@^#VhW%cd*&LCXG-;ZriQOFT#wQ#|8hu?E z&FQ)+35$UhgPgXl+~BQ?8-64TtI|5-ZUw6oRf-8ll503&Cp&4Tf{E<4aV-8!!roBW z!nvP`hMvAQ-#I{}=3BUGhC8LQ4t_cD^*h-H zZCvkOAZm|3f0}1h)R+<%oWg7P8B4#6dVmo8YVEW6Mn#r^URc!D>e8s%qkm|eFeGu8 zs`Pb@P&Jnv|6K4gq|`7IW`#u$hNp^|e$Ha6-zMC!ZUBR=PU@3I1!bPZ5>qX56x08V^uKWycYi$ z2^Z->(gGf8kfm|lbiWZ8(bI4c9V+^44%Tn>x~^JkH{%6P?9{o3+IUIT#qv&N6!vc- z)L%aY?w41+v*7#T^nZ~*QhyY#s=3Mas{enIKgJ}d!mC|dwPgZv_P?INLH(WSaB%;v z-y{e2p}$JN4(UD#P2H7GMVpwL?-T?KrtS80QA;hJs{zW!qR2n$V-ELdz~TESs0_}T zncoN;zsgOkK|j z3Uj~O&z?29xBl$^1%u^-xJnQ4PZ(zL?=bA-&kcjU3l#6&EvuW1bzJ2B9YgspW(D@& zdk>$ocb87NJ45q>Jx{441wM5v{r5%_W_l6;5KwWzlRZVaqsUi-uO6fxM@bVzU)E5? z?!fnUH#)Y5zO6#>aJtbfa4`*DG&Xn0O2qK!e!-g333YgeZe7T$XQ!m|&B%f}`=F8a zZN7s_Hqz$XDeu3*cH~5jH+x8$@PQI8UKAcQ68E{KQw9~v^f43AAPJgIZdm*Myeh`4 z?7IC7hw+FIbFhV)=MvaqnwehIv1G#bssd>Q72*r!5WhIR})N<_oJ>KKLh|I7{V zz@N?P-3_7!tDj)xzwL4V%qqg*-zUw2#(otO_|v9raU*4F)jY?50WfhDJuHlMn6~Bg zx%?3z$Anw)k4;N)B<)!J&Zzbmd|XXmH~(+2QQVlyE-&U@sS4V>EVdtM0kJ}?e#gZT z7FvyD^6EI4xH78=m4(hdWJBwgN>A`znmxv3g>*KE8Z_JJvK9b@L>bwpMZx+ZH|E(Z zXW6w)d?i$1uvKf$!YVdUC%!`^f{n|CPs_+NICa0oLuGY#Xvf=>t6h9`BESp)WYuWL z3tCA+{&fi813>EYh&QuE{-Aj=3iep5i3LR6SRd1XHE9HN1fzh{t+!kv$?QmkfwVo#f5sT)Y-G zZjy_Sme4sY25^**42@f!6p0yRGFJfoAT4KRYH+C(RRY!aES8|ALp|sj1vw*$F4=H`m zQ~PVfi1^UUluY2Ay(7)M1tiHk@7HrW)jfiSfl%iSU{H4_~bEK z%v^f+wh|~@y53;54uUNxr7-V9(;v}~PFG;Hy-NlyWd#EUF(OV~`uad%pMRHHh&F6q z?0JrcFIaju3*K5i0qn6QQR=KGJB$h@f)`^!!G0AD5~=*neN9|!*MaRlGQ}#;iG8(& z45pgTwQ#XN+|n4=cqh(Ff2iCfRhzIXQ&&N-PxYs#!NzXw1Hp7c1w9H?rrITv?Fm5K z3n0T)41B2Znq}yKpS5e7NQ(S$tpvEL#g-3%OE0?jKi(BeEB`3f7P%z? zKbnS5aIw!&+QeMb*e|d$swR-KMB*(bhwjQTk%5(2OXqy(S?(5+H`8*AM>$t#-jA6ob=vz{anH6x~43?C8~RLz~X~1-lf{0RD!Pj zR{be0N%1zFKC;PeCnXNh;s)ETIWQ3Ybg!cuMto>O#4K$wR&x*km3kA)6TGfQkuQ`1 zWsk{IL&S!*0e)!dv#X;Pa#;ipz6T zJ$VETo4*+VXS)#!0O=y{eYL(skZWoJnd+mMNL zv_8nH{^bezl}it3q2GoYUvEo&r~0YMRqKVBdONf&9*&EeuVtsFy@h0&6*j6}zly@{ z6&b%Prhg!Wj%b5%$JMT@p|Ap3YXF_lV+x~?x9~)Vcu6c%jB`cRFrbD@ukh3ymWBp@ zs7&o1z4p}#t$8B_LS3-VJ859sLXXp% zElkiC3u)|T8qiK-uN4Lsa!lFy3&VkG*UKXZMusTBpniul>HWEpN2TH)O|GL|VI|=b z$}kWnL5%p+rB+~fW2(T4ov4eBrw3$4{sa$rYUKkOxpI))I8dV5hVlgRW`xjUfTPA% z5G4H-P$TsZkrsjO{rpShb@%_4O@!wDYfHQCtRASpDYrlR|CQQ9#fH4kikTgUlRM)| zJ-VehV#st4*|yi(#AE^TPwhwnA8fvrGq5;_OoGe(q>z4I%~*qJbjz{CI;eXt95lz# zG*6|bsvUF*{9i!F{r?F%p0C|93XRZbC}|j}rvjRbx=o<*#z>Y$?dm|E^jvE4AIobX z_w3I&6o^qSetd953`vf!@ZTZ_COCxd{0w;UdBPo!cm|&n$+5&9PfhKQ!L2%%2qG79 zkxTs|s+tc?vcvg+-iEy0lhxhv`%Z##bn}QFr8gt}L*Q0r*VpsdNd1j983=Q$fBVd+#Gp%bp zL96X2{Lt3(1v~X7DBI~CQ&gPf*YP&P7N_}sK|Kw8`?*(NC+_(Mjt(g7W*tFLkRvA7 z(sMznCil52intKQm;eHKD#w_Wb7qNv&o$CzJD=b!8|FTR{c8QNVP=a$m}-pT`WnzF z7IUnsud`V%MzsiIOKTeae8SmFxff@}94>tn`MbO8@)WC5@P_+%YmH*-QgpO5 z9}*+x1=hV{<5%Lw7?HcI!p7SSszcelIDKKXBc;P8zp9En!w6UDq3!RJNHbh?5$6Y? zX*l4A=CT-4UQ%+-P5xWZc#1FzDmWnDGJZ~`fqh0d)&0~Ejlf+@_!K=|KIpVW6>t5j z+Ida~9%%VQ2&W}pDp}Vx_P{#&W4#_D;p4E#5ONt8zyk1HC87XWMi-&b{kZoLnu>APv!!Vg>BK4kr zMBejf6mmjX`eM|Mt4KAaxwN^Pu@Ns`zJI)DFFa8Gf(avg8DZseQ+`3X7#_ONde4SI zcnIY^e@%HnH;sT^ojR5<6-G7Yxw^4ju>0mjQ-bixmYK~Z|7b# z$xhL&5^WM@B-emB<~(KSU7!5OYtiF6#>a%6@IAR#;`hYgDV!ZTe1uV0QEtVY4k|BV z`6Bg`xV{lBz4Jr@Ylq`|huIt8pSG(}ktI=5yZ#CXZF+CF*fLTehWc^lo$Ef<5ZGbD z(3z%0V;6eZXyPQ^szQBA5p^I*31t>~MgJ?%Zs*b{*+pLpT|NMJk>#sd=FA3QendUy zV3Pq!faOlJNt zb&=yb#*4D-3i8-kfAbf9N6G1vvZHL#=ae1Ny+wL^ml3Yrc84rm2amota}DIp#P1NG zO4oGHHZ*@hkKW+Xb~BS-Odd6~qw81U5l@7^XmrVfylB6TapHH4%8Z1gj4ehA37q&3 z@-tD>zF(J5it*Ury6Slx<#~&;9hi#n{hryGDSbtdJ27SY++XpHy{Y(JHTq3vJi+ntsf zF|0`0M{?}$Wd56PZTk2-^KFn|Fha>7nP0dkyEVz^E@+cf%5KKrT>X{bpd%;uP4hn# zX79QNlRFa8frlf*)Z|`n`MRnt!an42Bh^Q@O4Bo-D?7+62@k@}`E}2S0Qw%f)7g3#O>KYeqk@she2R+g&;*Y?iN0 z*?IE?Uy{oR!&{DyPOwp&vfOAZI}NX=+m0IESNvAc1Zev|y`%4u6PSOl(6_wb>5Z#$ z66s=DPVAle;1_|2^2|Ozg!%k~3HCH$q>roG=^u=;S6-~XFU@1#a}D%blK9+?{s^5; z)9=VB!>=zjx`~NCx-t;S7+05xena%|$Sb*{5poR&rhD0fqOs_!M-V+X1}q-DY(^

    {9?v|6O~o6!aJLqv@QoC);2M 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 XelL3(f67Wluv@PKd}-7+pIF|1wLEI- diff --git a/nano/templates/arcade_classic.tmpl b/nano/templates/arcade_classic.tmpl new file mode 100644 index 0000000000..5792a15b6e --- /dev/null +++ b/nano/templates/arcade_classic.tmpl @@ -0,0 +1,44 @@ +{{if data.gameover}} + centerh2Game Over!h2 + h3{{data.information}}h3 + {{helper.link('New Game', null, { new_game 1 })}}center +{{else}} + {{if data.information}} + centeri{{data.information}}icenter + {{if}} +centerh3Playerh3center + div class='item' + div class='itemLabel' + Health + div + div class='itemContent' + {{data.player_health}} + div + div class='itemLabel' + Mana + div + div class='itemContent' + {{data.player_mana}} + div + div +centerh3Enemy {{data.enemy_name}}h3center + div class='item' + div class='itemLabel' + Health + div + div class='itemContent' + {{data.enemy_health}} + div + div class='itemLabel' + Mana + div + div class='itemContent' + {{data.enemy_mana}} + div + div +centerh3Actionsh3center + {{helper.link('Attack', null, { attack 1 })}} + {{helper.link('Heal', null, { heal 1 })}} + {{helper.link('Regain Mana', null, { regain_mana 1 })}} + {{helper.link('New Game', null, { new_game 1 })}} +{{if}} \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index 1c60e35ea3..a48bf6b7bb 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2117,6 +2117,7 @@ #include "code\modules\modular_computers\file_system\programs\comm.dm" #include "code\modules\modular_computers\file_system\programs\configurator.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" +#include "code\modules\modular_computers\file_system\programs\game.dm" #include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" #include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" From e62eb3b0686296ff8ff1ec5350fbc0c7a1d90906 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 11 Apr 2019 19:14:25 -0400 Subject: [PATCH 21/98] Updates Part Nine --- code/modules/modular_computers/NTNet/NTNet.dm | 14 +- .../modular_computers/NTNet/NTNet_relay.dm | 14 +- .../computers/item/modular_computer.dm | 91 ++++++------ .../computers/item/processor.dm | 8 +- .../computers/item/tablet.dm | 4 +- .../computers/item/tablet_presets.dm | 2 +- .../computers/machinery/modular_computer.dm | 13 +- .../computers/machinery/modular_laptop.dm | 20 +-- .../modular_computers/file_system/data.dm | 4 +- .../file_system/news_article.dm | 21 +++ .../modular_computers/file_system/program.dm | 8 +- .../file_system/programs/_program.dm | 2 +- .../file_system/programs/antagonist/dos.dm | 7 +- .../programs/antagonist/hacked_camera.dm | 3 +- .../file_system/programs/camera.dm | 10 +- .../file_system/programs/card.dm | 6 +- .../file_system/programs/comm.dm | 51 ++++--- .../file_system/programs/file_browser.dm | 15 +- .../file_system/programs/game.dm | 4 +- .../file_system/programs/news_browser.dm | 119 +++++++++++++++ .../file_system/programs/ntmonitor.dm | 1 + .../hardware/battery_module.dm | 12 +- .../modular_computers/hardware/hard_drive.dm | 6 +- .../modular_computers/hardware/hardware.dm | 23 +-- .../hardware/nano_printer.dm | 21 ++- .../hardware/network_card.dm | 12 +- .../hardware/portable_hard_drive.dm | 8 +- .../hardware/processor_unit.dm | 2 +- .../modular_computers/hardware/tesla_link.dm | 2 +- .../modular_computers/laptop_vendor.dm | 2 +- nano/templates/news_browser.tmpl | 62 ++++++++ news_articles/space_magazine_1.html | 135 ++++++++++++++++++ polaris.dme | 2 + 33 files changed, 537 insertions(+), 167 deletions(-) create mode 100644 code/modules/modular_computers/file_system/news_article.dm create mode 100644 code/modules/modular_computers/file_system/programs/news_browser.dm create mode 100644 nano/templates/news_browser.tmpl create mode 100644 news_articles/space_magazine_1.html diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm index a925c726e3..6dd5785df9 100644 --- a/code/modules/modular_computers/NTNet/NTNet.dm +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -7,6 +7,7 @@ var/global/datum/ntnet/ntnet_global = new() 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() // Amount of logs the system tries to keep in memory. Keep below 999 to prevent byond from acting weirdly. @@ -32,6 +33,7 @@ var/global/datum/ntnet/ntnet_global = new() relays.Add(R) R.NTNet = src build_software_lists() + build_news_list() add_log("NTNet logging system activated.") // Simplified logging: Adds a log. log_string is mandatory parameter, source is optional. @@ -61,7 +63,7 @@ var/global/datum/ntnet/ntnet_global = new() // 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.is_operational()) + if(R.operable()) operating = 1 break @@ -93,6 +95,15 @@ var/global/datum/ntnet/ntnet_global = new() 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) + + // 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) @@ -145,3 +156,4 @@ var/global/datum/ntnet/ntnet_global = new() + diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index a73e356622..bd91ab88b3 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -20,8 +20,8 @@ // TODO: Implement more logic here. For now it's only a placeholder. -/obj/machinery/ntnet_relay/proc/is_operational() - if(stat & (BROKEN | NOPOWER | EMPED)) +/obj/machinery/ntnet_relay/operable() + if(!..(EMPED)) return 0 if(dos_failure) return 0 @@ -30,13 +30,13 @@ return 1 /obj/machinery/ntnet_relay/update_icon() - if(is_operational()) + if(operable()) icon_state = "bus" else icon_state = "bus_off" /obj/machinery/ntnet_relay/process() - if(is_operational()) + if(operable()) use_power = 2 else use_power = 1 @@ -113,14 +113,14 @@ if(W.is_screwdriver()) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) panel_open = !panel_open - user << "You [panel_open ? "open" : "close"] the maintenance hatch" + to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch") return if(W.is_crowbar()) if(!panel_open) - user << "Open the maintenance panel first." + to_chat(user, "Open the maintenance panel first.") return playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - user << "You disassemble \the [src]!" + to_chat(user, "You disassemble \the [src]!") for(var/atom/movable/A in component_parts) A.forceMove(src.loc) diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index 2a6a57a1df..225587e2b3 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -3,7 +3,7 @@ // consoles and laptops use "procssor" item that is held inside machinery piece /obj/item/modular_computer name = "Modular Microcomputer" - desc = "A small portable microcomputer" + desc = "A small portable microcomputer." var/enabled = 0 // Whether the computer is turned on. var/screen_on = 1 // Whether the computer is active/opened/it's screen is on. @@ -55,27 +55,27 @@ set src in view(1) if(usr.incapacitated() || !istype(usr, /mob/living)) - usr << "You can't do that." + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) - usr << "You can't reach it." + 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 Device" + set name = "Eject Portable Storage" set category = "Object" set src in view(1) if(usr.incapacitated() || !istype(usr, /mob/living)) - usr << "You can't do that." + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) - usr << "You can't reach it." + to_chat(usr, "You can't reach it.") return proc_eject_usb(usr) @@ -85,11 +85,11 @@ user = usr if(!card_slot) - user << "\The [src] does not have an ID card slot" + to_chat(user, "\The [src] does not have an ID card slot") return if(!card_slot.stored_card) - user << "There is no card in \the [src]" + to_chat(user, "There is no card in \the [src]") return if(active_program) @@ -101,14 +101,15 @@ card_slot.stored_card.forceMove(get_turf(src)) card_slot.stored_card = null update_uis() - user << "You remove the card from \the [src]" + 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) - user << "There is no portable device connected to \the [src]." + to_chat(user, "There is no portable device connected to \the [src].") return uninstall_component(user, portable_drive) @@ -124,19 +125,19 @@ /obj/item/modular_computer/emag_act(var/remaining_charges, var/mob/user) if(computer_emagged) - user << "\The [src] was already emagged." + to_chat(user, "\The [src] was already emagged.") return else computer_emagged = 1 - user << "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message." + 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/examine(var/mob/user) ..() if(damage > broken_damage) - user << "It is heavily damaged!" + to_chat(user, "It is heavily damaged!") else if(damage) - user << "It is damaged." + to_chat(user, "It is damaged.") /obj/item/modular_computer/New() START_PROCESSING(SSobj, src) @@ -235,23 +236,23 @@ var/issynth = issilicon(user) // Robots and AIs get different activation messages. if(damage > broken_damage) if(issynth) - user << "You send an activation signal to \the [src], but it responds with an error code. It must be damaged." + to_chat(user, "You send an activation signal to \the [src], but it responds with an error code. It must be damaged.") else - user << "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again." + 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 && ((battery_module && battery_module.battery.charge && battery_module.check_functionality()) || check_power_override())) // Battery-run and charged or non-battery but powered by APC. if(issynth) - user << "You send an activation signal to \the [src], turning it on" + to_chat(user, "You send an activation signal to \the [src], turning it on") else - user << "You press the power button and start up \the [src]" + to_chat(user, "You press the power button and start up \the [src]") enabled = 1 update_icon() ui_interact(user) else // Unpowered if(issynth) - user << "You send an activation signal to \the [src] but it does not respond" + to_chat(user, "You send an activation signal to \the [src] but it does not respond") else - user << "You press the power button but \the [src] does not respond" + to_chat(user, "You press the power button but \the [src] does not respond") // Process currently calls handle_power(), may be expanded in future if more things are added. /obj/item/modular_computer/process() @@ -418,7 +419,7 @@ P.kill_program(1) update_uis() - user << "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed." + to_chat(user, "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed.") if( href_list["PC_runprogram"] ) var/prog = href_list["PC_runprogram"] @@ -428,7 +429,7 @@ P = hard_drive.find_file_by_name(prog) if(!P || !istype(P)) // Program not found or it's not executable program. - user << "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning." + to_chat(user, "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning.") return P.computer = src @@ -445,11 +446,11 @@ return if(idle_threads.len >= processor_unit.max_idle_programs+1) - user << "\The [src] displays a \"Maximal CPU load reached. Unable to run another program.\" error" + 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. - user << "\The [src]'s screen shows \"NETWORK ERROR - Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\" warning." + 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(P.run_program(user)) @@ -493,17 +494,17 @@ 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) - user << "You try to insert \the [I] into \the [src], but it does not have an ID card slot installed." + 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) - user << "You try to insert \the [I] into \the [src], but it's ID card slot is occupied." + 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() - user << "You insert \the [I] into \the [src]." + to_chat(user, "You insert \the [I] into \the [src].") return if(istype(W, /obj/item/weapon/paper)) if(!nano_printer) @@ -514,11 +515,11 @@ if(C.hardware_size <= max_hardware_size) try_install_component(user, C) else - user << "This component is too large for \the [src]." + to_chat(user, "This component is too large for \the [src].") if(W.is_wrench()) var/list/components = get_all_components() if(components.len) - user << "Remove all components from \the [src] before disassembling it." + 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].") @@ -528,23 +529,23 @@ if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(!WT.isOn()) - user << "\The [W] is off." + to_chat(user, "\The [W] is off.") return if(!damage) - user << "\The [src] does not require repairs." + to_chat(user, "\The [src] does not require repairs.") return - user << "You begin repairing damage to \the [src]..." + to_chat(user, "You begin repairing damage to \the [src]...") if(WT.remove_fuel(round(damage/75)) && do_after(usr, damage/10)) damage = 0 - user << "You repair \the [src]." + to_chat(user, "You repair \the [src].") return if(W.is_screwdriver()) var/list/all_components = get_all_components() if(!all_components.len) - user << "This device doesn't have any components installed." + 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) @@ -578,48 +579,48 @@ // "USB" flash drive. if(istype(H, /obj/item/weapon/computer_hardware/hard_drive/portable)) if(portable_drive) - user << "This computer's portable drive slot is already occupied by \the [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) - user << "This computer's hard drive slot is already occupied by \the [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) - user << "This computer's network card slot is already occupied by \the [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) - user << "This computer's nano printer slot is already occupied by \the [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) - user << "This computer's card slot is already occupied by \the [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) - user << "This computer's battery slot is already occupied by \the [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) - user << "This computer's processor slot is already occupied by \the [processor_unit]." + to_chat(user, "This computer's processor slot is already occupied by \the [processor_unit].") return found = 1 processor_unit = H if(found) - user << "You install \the [H] into \the [src]" + to_chat(user, "You install \the [H] into \the [src]") H.holder2 = src user.drop_from_inventory(H) H.forceMove(src) @@ -651,12 +652,12 @@ critical = 1 if(found) if(user) - user << "You remove \the [H] from \the [src]." + to_chat(user, "You remove \the [H] from \the [src].") H.forceMove(get_turf(src)) H.holder2 = null if(critical && enabled) if(user) - 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." + 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() @@ -783,4 +784,4 @@ if(active_program) return active_program.check_eye(user) else - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 86bd00f9c2..6b77dfb3ee 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -30,9 +30,9 @@ /obj/item/modular_computer/processor/examine(var/mob/user) if(damage > broken_damage) - user << "It is heavily damaged!" + to_chat(user, "It is heavily damaged!") else if(damage) - user << "It is damaged." + to_chat(user, "It is damaged.") // Power interaction is handled by our machinery part, due to machinery having APC connection. /obj/item/modular_computer/processor/handle_power() @@ -98,7 +98,7 @@ /obj/item/modular_computer/processor/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0) if(istype(H, /obj/item/weapon/computer_hardware/tesla_link)) if(machinery_computer.tesla_link) - user << "This computer's tesla link slot is already occupied by \the [machinery_computer.tesla_link]." + to_chat(user, "This computer's tesla link slot is already occupied by \the [machinery_computer.tesla_link].") return var/obj/item/weapon/computer_hardware/tesla_link/L = H L.holder = machinery_computer @@ -130,4 +130,4 @@ // If we have a tesla link on our machinery counterpart, enable it automatically. Lets computer without a battery work. if(machinery_computer && machinery_computer.tesla_link) machinery_computer.tesla_link.enabled = 1 - ..() \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 2154b83e54..2b02f58696 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -6,5 +6,5 @@ icon_state_menu = "menu" hardware_flag = PROGRAM_TABLET max_hardware_size = 1 - w_class = 2 - light_strength = 2 // Same as PDAs \ No newline at end of file + w_class = ITEMSIZE_SMALL + light_strength = 2 // Same as PDAs \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index d9c9905203..86c31b668d 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -2,7 +2,7 @@ // Available as custom loadout item, this is literally the worst possible cheap tablet /obj/item/modular_computer/tablet/preset/custom_loadout/cheap/New() . = ..() - desc = "A low-end tablet often seen among low ranked station personnel" + desc = "A low-end tablet often seen among low ranked station personnel." processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src) battery_module.charge_to_full() diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 06daed0dda..33d6e54e1a 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -1,8 +1,11 @@ +// Global var to track modular computers +var/list/global_modular_computers = list() + // Modular Computer - device that runs various programs and operates with hardware // DO NOT SPAWN THIS TYPE. Use /laptop/ or /console/ instead. /obj/machinery/modular_computer/ name = "modular computer" - desc = "An advanced computer" + desc = "An advanced computer." var/battery_powered = 0 // Whether computer should be battery powered. It is set automatically use_power = 0 @@ -64,7 +67,7 @@ // Eject ID card from computer, if it has ID slot with card inside. /obj/machinery/modular_computer/verb/eject_usb() - set name = "Eject Portable Device" + set name = "Eject Portable Storage" set category = "Object" set src in view(1) @@ -74,6 +77,7 @@ /obj/machinery/modular_computer/New() ..() cpu = new(src) + global_modular_computers.Add(src) /obj/machinery/modular_computer/Destroy() if(cpu) @@ -162,9 +166,7 @@ /obj/machinery/modular_computer/power_change() if(battery_powered) return - else - ..() - update_icon() + ..() /obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) if(cpu) @@ -194,3 +196,4 @@ if(cpu) return cpu.check_eye(user) return -1 + diff --git a/code/modules/modular_computers/computers/machinery/modular_laptop.dm b/code/modules/modular_computers/computers/machinery/modular_laptop.dm index bce2d5192d..cd0f4ac666 100644 --- a/code/modules/modular_computers/computers/machinery/modular_laptop.dm +++ b/code/modules/modular_computers/computers/machinery/modular_laptop.dm @@ -15,22 +15,22 @@ set src in view(1) if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - usr << "You can't do that." + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) - usr << "You can't reach it." + to_chat(usr, "You can't reach it.") return if(!istype(loc,/turf)) - usr << "[src] is too bulky! You'll have to set it down." + 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.forceMove(src.loc) - usr << "\The [src] crumbles to pieces." + to_chat(usr, "\The [src] crumbles to pieces.") spawn(5) qdel(src) return @@ -41,7 +41,7 @@ if(stored_computer.cpu) stored_computer.cpu.screen_on = 1 loc = stored_computer - usr << "You open \the [src]." + to_chat(usr, "You open \the [src].") /obj/item/laptop/AltClick() @@ -51,7 +51,7 @@ // The actual laptop /obj/machinery/modular_computer/laptop name = "laptop computer" - desc = "A portable computer" + desc = "A portable computer." var/obj/item/laptop/portable = null // Portable version of this computer, dropped on alt-click to allow transport. Used by laptops. hardware_flag = PROGRAM_LAPTOP icon_state_unpowered = "laptop-open" // Icon state when the computer is turned off @@ -78,11 +78,11 @@ set src in view(1) if(usr.stat || usr.restrained() || usr.lying || !istype(usr, /mob/living)) - usr << "You can't do that." + to_chat(usr, "You can't do that.") return if(!Adjacent(usr)) - usr << "You can't reach it." + to_chat(usr, "You can't reach it.") return close_laptop(usr) @@ -101,10 +101,10 @@ src.forceMove(portable) stat |= MAINT if(user) - user << "You close \the [src]." + to_chat(user, "You close \the [src].") if(cpu) cpu.screen_on = 0 /obj/machinery/modular_computer/laptop/AltClick() if(Adjacent(usr)) - close_laptop() \ No newline at end of file + close_laptop() \ 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 index a87ce1ae72..7ad48bea54 100644 --- a/code/modules/modular_computers/file_system/data.dm +++ b/code/modules/modular_computers/file_system/data.dm @@ -3,6 +3,8 @@ /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 = ..() @@ -10,7 +12,7 @@ return temp // Calculates file size from amount of characters in saved string -/datum/computer_file/data/proc/calculate_size(var/block_size = 250) +/datum/computer_file/data/proc/calculate_size() size = max(1, round(length(stored_data) / block_size)) /datum/computer_file/data/logfile 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..2a4a25c7d0 --- /dev/null +++ b/code/modules/modular_computers/file_system/news_article.dm @@ -0,0 +1,21 @@ +// /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 = 1000 // 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! + +/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 + +/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 index d3878bd025..21cd6403c4 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -59,7 +59,7 @@ /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) - user << "\The [computer] flashes an \"Hardware Error - Incompatible software\" warning." + to_chat(user, "\The [computer] flashes an \"Hardware Error - Incompatible software\" warning.") return 0 return 1 @@ -88,13 +88,13 @@ var/obj/item/weapon/card/id/I = user.GetIdCard() if(!I) if(loud) - user << "\The [computer] flashes an \"RFID Error - Unable to scan ID\" warning." + 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) - user << "\The [computer] flashes an \"Access Denied\" warning." + 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. @@ -154,4 +154,4 @@ if(NM) return NM.check_eye(user) else - return -1 \ No newline at end of file + return -1 diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm index 2cba7960c9..149c6e8926 100644 --- a/code/modules/modular_computers/file_system/programs/_program.dm +++ b/code/modules/modular_computers/file_system/programs/_program.dm @@ -7,7 +7,7 @@ /obj/item/modular_computer/initial_data() return get_header_data() -/obj/item/modular_computer/update_layout() +/obj/machinery/modular_computer/update_layout() return TRUE /datum/nano_module/program diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index a913e3ddf2..44e5fd8cfe 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -24,14 +24,15 @@ dos_speed = NTNETSPEED_ETHERNET * NTNETSPEED_DOS_AMPLIFICATION if(target && executed) target.dos_overload += dos_speed - if(!target.is_operational()) + 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) - target.dos_sources.Remove(src) - target = null + if(target) + target.dos_sources.Remove(src) + target = null executed = 0 ..(forced) 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 index be69b012b9..2bc063a8eb 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm @@ -24,6 +24,7 @@ /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 @@ -33,4 +34,4 @@ 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 + return networks \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/camera.dm b/code/modules/modular_computers/file_system/programs/camera.dm index 939e1b0812..d56c29fdca 100644 --- a/code/modules/modular_computers/file_system/programs/camera.dm +++ b/code/modules/modular_computers/file_system/programs/camera.dm @@ -36,7 +36,7 @@ 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) +/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 @@ -92,14 +92,11 @@ return 1 else if(href_list["switch_network"]) - if(!(href_list["switch_network"] in using_map.station_networks)) - return - // 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 - usr << "\The [nano_host()] shows an \"Network Access Denied\" error message." + to_chat(usr, "\The [nano_host()] shows an \"Network Access Denied\" error message.") return 1 else if(href_list["reset"]) @@ -164,9 +161,10 @@ /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/hacked/modify_networks_list(var/list/networks) +/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))) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 5e012dd902..b8dc33af34 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -141,7 +141,7 @@ contents += " [get_access_desc(A)]" if(!computer.nano_printer.print_text(contents,"access report")) - usr << "Hardware error: Printer was unable to print the file. It may be out of paper." + 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.") @@ -151,7 +151,7 @@ [data_core ? data_core.get_manifest(0) : ""] "} if(!computer.nano_printer.print_text(contents,text("crew manifest ([])", stationtime2text()))) - usr << "Hardware error: Printer was unable to print the file. It may be out of paper." + 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.") @@ -196,7 +196,7 @@ jobdatum = J break if(!jobdatum) - usr << "No log exists for this job: [t1]" + to_chat(usr, "No log exists for this job: [t1]") return access = jobdatum.get_access() diff --git a/code/modules/modular_computers/file_system/programs/comm.dm b/code/modules/modular_computers/file_system/programs/comm.dm index 2fd3639ecc..2089c987f3 100644 --- a/code/modules/modular_computers/file_system/programs/comm.dm +++ b/code/modules/modular_computers/file_system/programs/comm.dm @@ -8,7 +8,7 @@ filedesc = "Command and communications program." program_icon_state = "comm" nanomodule_path = /datum/nano_module/program/comm - extended_desc = "Used to command and control the station. Can relay long-range communications." + extended_desc = "Used to command and control the station. Can relay long-range communications. This program can not be run on tablet computers." required_access = access_heads requires_ntnet = 1 size = 12 @@ -24,6 +24,7 @@ /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 = "" @@ -104,13 +105,15 @@ if(..()) return 1 var/mob/user = usr - var/ntn_comm = !!program.get_signal(NTNET_COMMUNICATION) - var/ntn_cont = !!program.get_signal(NTNET_SYSTEMCONTROL) + 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() @@ -118,31 +121,29 @@ else crew_announcement.announcer = "Unknown" if(announcment_cooldown) - usr << "Please allow at least one minute to pass between announcements" - SSnanoui.update_uis(src) - return + 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()) - SSnanoui.update_uis(src) - return + 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) - usr << "Arrays recycling. Please stand by." + 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()) - SSnanoui.update_uis(src) - return + return 1 Syndicate_announce(input, usr) - usr << "Message transmitted." + 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 @@ -150,34 +151,35 @@ else if(href_list["target"] == "regular") if(is_autenthicated(user) && !issilicon(usr) && ntn_comm) if(centcomm_message_cooldown) - usr << "Arrays recycling. Please stand by." + 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. - usr <<"No Emergency Bluespace Relay detected. Unable to transmit message." - SSnanoui.update_uis(src) - return + 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()) - SSnanoui.update_uis(src) - return + return 1 CentCom_announce(input, usr) - usr << "Message transmitted." + 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") @@ -194,8 +196,8 @@ 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") @@ -214,9 +216,11 @@ if(SEC_LEVEL_BLUE) feedback_inc("alert_comms_blue",1) else - usr << "You press button, but red light flashes and nothing happens." //This should never happen + 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) @@ -224,18 +228,19 @@ 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"])) - usr << "Hardware error: Printer was unable to print the file. It may be out of paper." + 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.") - SSnanoui.update_uis(src) /datum/nano_module/program/comm/proc/post_status(var/command, var/data1, var/data2) diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index fd2b935069..a47669662c 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -85,8 +85,16 @@ var/datum/computer_file/data/F = HDD.find_file_by_name(open_file) if(!F || !istype(F)) return 1 - // 16384 is the limit for file length in characters. Currently, papers have value of 2048 so this is 8 times as long, since we can't edit parts of the file independently. - var/newtext = sanitize(html_decode(input(usr, "Editing file [open_file]. You may use most tags used in paper formatting:", "Text Editor", F.stored_data) as message), 16384) + 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, "\[editorbr\]", "\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", "\[editorbr\]"), MAX_TEXTFILE_LENGTH) + if(!newtext) + return + if(F) var/datum/computer_file/data/backup = F.clone() HDD.remove_file(F) @@ -235,5 +243,4 @@ ui.auto_update_layout = 1 ui.set_initial_data(data) ui.open() - - +#undef MAX_TEXTFILE_LENGTH \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/game.dm b/code/modules/modular_computers/file_system/programs/game.dm index 42d3e35eac..e947bea365 100644 --- a/code/modules/modular_computers/file_system/programs/game.dm +++ b/code/modules/modular_computers/file_system/programs/game.dm @@ -69,7 +69,7 @@ data["gameover"] = gameover data["information"] = information - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + 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()) @@ -148,4 +148,4 @@ player_mana += regen enemy_play() check_gameover() - return 1 \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/news_browser.dm b/code/modules/modular_computers/file_system/programs/news_browser.dm new file mode 100644 index 0000000000..42836024c5 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/news_browser.dm @@ -0,0 +1,119 @@ +/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" + size = 8 + 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 = "" + +/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 + +/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(.) + 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["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) + all_articles.Add(list(list( + "name" = F.filename, + "size" = F.size, + "uid" = F.uid + ))) + data["all_articles"] = all_articles + + 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, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm index 9400ad538e..ed3b37ac64 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm @@ -11,6 +11,7 @@ /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) diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index f14d99e115..f77aa386b5 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -51,14 +51,18 @@ // 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 device that creates it's own bluespace dimension. This dimension may be used to store massive amounts of energy." + 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 = 1000000 + 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) ..() - user << "Internal battery charge: [battery.charge]/[battery.maxcharge] CU" + 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) @@ -68,4 +72,4 @@ /obj/item/weapon/computer_hardware/battery_module/proc/charge_to_full() if(battery) - battery.charge = battery.maxcharge \ No newline at end of file + battery.charge = battery.maxcharge \ 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 index 3699eaedcd..93cbf8526d 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -58,8 +58,8 @@ /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. - user << "NT-NFS File Table Status: [stored_files.len]/999" - user << "Storage capacity: [used_capacity]/[max_capacity]GQ" + 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) @@ -164,4 +164,4 @@ /obj/item/weapon/computer_hardware/hard_drive/New() install_default_programs() - ..() \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/hardware/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm index 43c7dbc4dc..7cd79ceb09 100644 --- a/code/modules/modular_computers/hardware/hardware.dm +++ b/code/modules/modular_computers/hardware/hardware.dm @@ -1,6 +1,6 @@ /obj/item/weapon/computer_hardware/ name = "Hardware" - desc = "Unknown 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. @@ -16,27 +16,27 @@ /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)) - user << "***** DIAGNOSTICS REPORT *****" + to_chat(user, "***** DIAGNOSTICS REPORT *****") diagnostics(user) - 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) - user << "\The [src] doesn't seem to require repairs." + to_chat(user, "\The [src] doesn't seem to require repairs.") return 1 if(S.use(1)) - user << "You apply a bit of \the [W] to \the [src]. It immediately repairs all damage." + 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) - user << "\The [src] doesn't seem to require repairs." + to_chat(user, "\The [src] doesn't seem to require repairs.") return 1 if(S.use(1)) - user << "You patch up \the [src] with a bit of \the [W]." + to_chat(user, "You patch up \the [src] with a bit of \the [W].") take_damage(-10) return 1 return ..() @@ -44,7 +44,7 @@ // Called on multitool click, prints diagnostic information to the user. /obj/item/weapon/computer_hardware/proc/diagnostics(var/mob/user) - user << "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]" + 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 @@ -76,13 +76,14 @@ /obj/item/weapon/computer_hardware/examine(var/mob/user) . = ..() if(damage > damage_failure) - user << "It seems to be severely damaged!" + to_chat(user, "It seems to be severely damaged!") else if(damage > damage_malfunction) - user << "It seems to be damaged!" + to_chat(user, "It seems to be damaged!") else if(damage) - user << "It seems to be slightly damaged." + 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/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm index 11caa79794..996d2dfb62 100644 --- a/code/modules/modular_computers/hardware/nano_printer.dm +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -2,6 +2,7 @@ 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 @@ -10,7 +11,7 @@ /obj/item/weapon/computer_hardware/nano_printer/diagnostics(var/mob/user) ..() - user << "Paper buffer level: [stored_paper]/[max_paper]" + 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) @@ -20,27 +21,21 @@ 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() + text_to_print = stars(text_to_print, 100-malfunction_probability) + new/obj/item/weapon/paper(get_turf(holder2),text_to_print, paper_title) + stored_paper-- - P = null 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) - user << "You try to add \the [W] into [src], but it's paper bin is full" + to_chat(user, "You try to add \the [W] into [src], but it's paper bin is full") return - user << "You insert \the [W] into [src]." + to_chat(user, "You insert \the [W] into [src].") qdel(W) stored_paper++ @@ -48,4 +43,4 @@ if(holder2 && (holder2.nano_printer == src)) holder2.nano_printer = null holder2 = null - ..() \ No newline at end of file + ..() \ 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 index 8ffc802dbd..01c9167c19 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -16,14 +16,14 @@ var/global/ntnet_card_uid = 1 /obj/item/weapon/computer_hardware/network_card/diagnostics(var/mob/user) ..() - user << "NIX Unique ID: [identification_id]" - user << "NIX User Tag: [identification_string]" - user << "Supported protocols:" - user << "511.m SFS (Subspace) - Standard Frequency Spread" + 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) - user << "511.n WFS/HB (Subspace) - Wide Frequency Spread/High Bandiwdth" + to_chat(user, "511.n WFS/HB (Subspace) - Wide Frequency Spread/High Bandiwdth") if(ethernet) - user << "OpenEth (Physical Connection) - Physical network connection port" + to_chat(user, "OpenEth (Physical Connection) - Physical network connection port") /obj/item/weapon/computer_hardware/network_card/New(var/l) ..(l) diff --git a/code/modules/modular_computers/hardware/portable_hard_drive.dm b/code/modules/modular_computers/hardware/portable_hard_drive.dm index 7e86cba6ca..b6b42a51c8 100644 --- a/code/modules/modular_computers/hardware/portable_hard_drive.dm +++ b/code/modules/modular_computers/hardware/portable_hard_drive.dm @@ -1,7 +1,7 @@ // 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. It's capacity is 16 GQ" + 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 @@ -10,7 +10,7 @@ /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. It's capacity is 64 GQ" + 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 @@ -19,7 +19,7 @@ /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. It's capacity is 256 GQ" + 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 @@ -29,4 +29,4 @@ /obj/item/weapon/computer_hardware/hard_drive/portable/New() ..() stored_files = list() - recalculate_size() \ No newline at end of file + recalculate_size() \ 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 index d84bd1fc01..8f9009f72b 100644 --- a/code/modules/modular_computers/hardware/processor_unit.dm +++ b/code/modules/modular_computers/hardware/processor_unit.dm @@ -38,4 +38,4 @@ hardware_size = 1 power_usage = 75 max_idle_programs = 2 - origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) \ No newline at end of file + origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) \ 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 index 9b9d87738b..5296f0e120 100644 --- a/code/modules/modular_computers/hardware/tesla_link.dm +++ b/code/modules/modular_computers/hardware/tesla_link.dm @@ -17,4 +17,4 @@ /obj/item/weapon/computer_hardware/tesla_link/Destroy() if(holder && (holder.tesla_link == src)) holder.tesla_link = null - ..() \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index a7ed86a207..49eb797994 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -5,7 +5,7 @@ desc = "A vending machine with microfabricator capable of dispensing various NT-branded computers" icon = 'icons/obj/vending.dmi' icon_state = "robotics" - layer = 2.9 + layer = OBJ_LAYER - 0.1 anchored = 1 density = 1 diff --git a/nano/templates/news_browser.tmpl b/nano/templates/news_browser.tmpl new file mode 100644 index 0000000000..17b02614f3 --- /dev/null +++ b/nano/templates/news_browser.tmpl @@ -0,0 +1,62 @@ +{{if data.message}} +

    + {{:data.message}} + {{:helper.link('CLEAR', null, { "PRG_clearmessage" : 1 })}} +
    +{{/if}} +{{if data.article}} + Viewing: {{:data.title}}

    + + {{:data.article}} + +

    + {{:helper.link('CLOSE', null, { "PRG_reset" : 1 })}} + {{:helper.link('SAVE', null, { "PRG_savearticle" : 1 })}} +{{else data.download_progress}} + Downloading file...

    +
    +
    + Progress: +
    +
    + {{:helper.displayBar(data.download_progress, 0, data.download_maxprogress, 'good')}} + {{:data.download_progress}} / {{:data.download_maxprogress}} GQ +
    +
    + Download speed: +
    +
    + {{data.download_rate}} GQ/s +
    +
    + Controls: +
    +
    + {{:helper.link('ABORT', null, { "PRG_reset" : 1 })}} +
    +
    +{{else}} + Listing available files
    + {{for data.all_articles}} +
    +
    + Name: +
    +
    + {{:value.name}} +
    +
    + Size: +
    +
    + {{:value.size}} GQ +
    +
    + Actions: +
    +
    + {{:helper.link('OPEN', null, { "PRG_openarticle" : value.uid })}} +
    +
    + {{/for}} +{{/if}} \ No newline at end of file diff --git a/news_articles/space_magazine_1.html b/news_articles/space_magazine_1.html new file mode 100644 index 0000000000..dbdd3f43ed --- /dev/null +++ b/news_articles/space_magazine_1.html @@ -0,0 +1,135 @@ + +

    + + +

    Welcome to SPACE Magazine

    +
    +
    +

    + SPACE Magazine is a new force in Journalism in the 26th Century- bringing news and information to the multitudes of Star Systems settled by Sentient Life, + letting everyone know what’s happening across the Stars, millions of miles away. News if first and foremost our forte, but articles over important + individuals and new developments will also be here in the magazine, which we shall ship out every month with a new issue. This, is our very first issue, + and we hope to continue for many years to come. +

    +

    + In this first issue, we will address a few incidents that have come up as of recent days- a attempted, but disastrous attack by Pirates against the colony + of Onaios Prime, thwarted by the latest in weapons technology. A meteor shower that rained disaster on the colonial world of Brinkburn in the lucrative + system of Nyx, causing many citizens to leave the planet. An attack by terrorists on the colony of Asilliss VII, resulting in many deaths, and the Great + Carp Migrations that have been occurring in recent days in the Nyx System. +

    + + +

    +

    Pirates Underestimate Colonial Defenses

    +
    +

    + This week, a pirate group that has stolen a SolGov Battlecruiser has attempted to commit a raid with it upon a colony world Onaios Prime, in the Onaios + system. However, it was quickly eradicated along with its escort by a planetside battery of Mass Drivers produced recently by Dawnlight Celestial Defence. + After this incident Dawnlight has registered an influx of demand from other colonies, as their weapons are relatively affordable, registering slight growth + in stock ratings for the first time in 250 years, when the success of Dawnlight even competed with corporations like Hephaestus. We have found a written + account of one of the writers of local news agency, and with their permission are including it in this article. +

    +

    + “It was almost midnight when I was driving around the AURA 2, a new anti-orbital installation, on my way home from my office, after some overtime. I have + heard of its construction project and have never paid much attention to it, the world of Onaios Prime that I live on has always been only moderately + wealthy, and peaceful... until last night. A loud siren played from the complex's direction, breaking the silence of the night. I stopped my vehicle where + an overhang down to the valley let me look at the platform, from 50 meters above it, and about 300 meters away from it, and I saw it for my first time. +

    +

    + A great bunker in the middle was having its windows shut in blast doors, shying away from the reason this is an anti-orbital installation: The jeeps and + trucks that were scurrying to hide in the bunker were but the tiniest little dot, compared to the massive Mass Drivers, that slowly, but so steadily, with + a bass, gentle hum, began towering to the sky, reaching out to it with a barrel so long you would need two loaded semi-trucks to cover the length. The + barrels aligned, and I could still hear the humming, but it started growing stronger, stronger... before one of the barrels sparked inside a few times, and + I was blinded by a vast flash... Only then, the humming cut off, only then, I heard the lightning, and only then, a spiking, overwhelming pitch of + capacitor discharge plummeted to my eardrums, only to be followed by an encroaching thunder of a blastwave, shunting masses of air against me. +

    +

    + Only after a few seconds, I regained my hearing and sight to feel the echoes of the blast, and to see another Mass Driver was discharging, sparking. I + covered the sight of it in time, to see the entire valley was lit for a split second as well as the sun could do, and I heard the discharge again, and I + heard its calling. Every spike, a declaration of freedom. Every thunderblast, a declaration of sovereignty. The Mass Drivers would flash, marking dawn upon + the invaders to signal the humanity made its stand here, and it shall persevere. The warhead that it would expel was our fist that would smite them from + our sky. I did not know who have we fought against at that time, but at that moment, and ever since, I never looked at the night sky the same way again. I + believe that that sky is our home.” -Written by Liun Asitero, Onaios Daily +

    + Written by Lucas Shiito + + +

    +

    Brinkburn Refugees and Sapient’s Rights

    +
    +

    + One of Nyx's planets, Brinkburn, has had a catastrophe happen in form of a meteor storm three days ago. Nyx has lashed out with a solar corona that, while + having a miniscule effect on traffic and stations, has managed to deflect several asteroids from the belt natively present around Brinkburn. This caused + massive, unsustainable damage to the habitation complexes present on the planet that are occupied by several hundreds of settlers, and given their scarce + material stocks, they had no other choice but to escape, to find another place to survive in. +

    +

    + The situation was further complicated by the very asteroid rings that have started this misfortune; the refugees did not have sufficiently advanced + navigation computers on their pods to steer them safely through the rings. Approximately 20% of population is estimated to have not made it through. The + shuttles that have shipped the settlers on the world in the first place needed to be dismantled and used for scrap to expand the living area, and the more + advanced components were used to wrangle the escape pods together. +

    +

    + Most of the refugees have found their way to Emerald Habitation, a station in Nyx. The station already has issues with over-population and air + purification, and the sudden influx of human settlers has introduced even more problems. Firstly, it has made it much harder to process travelers passing + through, making travel in Nyx either very dangerous through Void Star, or very expensive through NAS Crescent. Secondly, Emerald Habitation has been + housing a large number of Unathi, which have been harassing the refugees, some of them are even a part of the station's security, making appeals to them + only worsen the situation. +

    +

    + We can only hope a new home will be found and built for the poor refugees, and that the Skrell present on station, that are keeping the situation + relatively free of casualties, continue to sustain a safe, if not non-hostile environment on the overpopulated station. +

    + Written by Laura Hunton + + +

    +

    Terror Attack on Asilliss VII

    +
    +

    + Planet Asilliss VI has been a civil uprising hotspot for a few weeks now, and things have recently yet again escalated. A research facility belonging to + NanoTrasen, one of several to be specific, that specializes on an undisclosed project, has been attacked by a group of masked raiders armed with automatic + weapons, using several buggies for transport. Two hours after the incident, Asilliss Liberation Force claimed responsibility. "Companies like NanoTrasen + are advancing us, but into slavery and containment! Their technology only brings control to the corrupt over the honest people of Asilliss! We cannot stand + idle! Join us and befall those who take our lives from our control!", claimed a man hiding in a shade on video that was sent to a local entertainment + station to be broadcasted under threat of attack. +

    +

    + Up until now, the government's militia has been relatively ineffective at quelling this terrorist cell, while their statistics register a number of arrests + and casualties, the group is still registering influx of recruits. However, NanoTrasen seems to have been highly impacted by this attack, judging from + press release of NanoTrasen, Nyx Division: "As a company, we must maintain our safety standard for our employees, as well as secure our installations. The + continued unrest on Asilliss that is resulting in loss of investments is forcing our hand to resort to particularly prejudicial measures and we are + arranging cooperation with the governmental forces." +

    +

    + We have information from a trusted source, who we shall allow to remain unnamed, that NanoTrasen is arranging a loan to Asiliss in form of acquisition of a + small number of vehicles from Terraphistus Military Armor and small arms shipped all the way from Mars Security Industries, as well as hiring services from + a newly instated PMC, SAARE, to protect other NanoTrasen's installations. We have very little information on SAARE due to its novelty, except that it has + accepted several decorated veterans from various security forces and armies, and specializes on top secret operations. Only time will tell if these + measures shall be taken and how shall they affect the unrest on Asilliss IV, but be sure that we shall provide our readers with full coverage! +

    +Written by Johnathan Townsend + + +

    +

    The Great Carp Migration

    +
    +

    + Carp and Pike have plagued space station windows and ship paint jobs for the past hundred years, and while local businesses make money off of eradicating + them by the hundreds, they only seem to increase in number and size. Xenobiologists at Brickburn have come to the conclusion that that these pests most + likely came from Erebus. "Was really hard to figure out at first," says researcher Gregory Hills, "They really like to, you know, bite things. But once we + got a few hundred tagged ones out there the answer became pretty obvious." He went further on to explain that through their research they've created a + basic carp life cycle, starting at the center of the gas giant and ending in the upper atmosphere, "They tend to die there.", he remarks, "Carp don't + really survive in space unless they are really, really big. Hence why we get so many." When asked why the carp come to space in the first place, he shrugs, + "We don't really know. We think maybe they can sense the stations up there somehow and are looking for food." +

    +

    + Sadly this does not help much in protecting the citizens of the stars from the dreadful beasts. In the last month, there have been a reported 37 deaths due + to Carp and Pike related incidents, making the Erebus Beasts a serious threat to people thinking of working on a station. Scientists believe that at some + point this year, stations and ships in the Nyx System will be subjected to the largest migration of Carp and Pike that has ever been seen, and it may cause + serious damage to interests in the system. +

    +Written by Peggy Re’saih \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index a48bf6b7bb..9a8cebeaf4 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2107,6 +2107,7 @@ #include "code\modules\modular_computers\computers\machinery\modular_laptop.dm" #include "code\modules\modular_computers\file_system\computer_file.dm" #include "code\modules\modular_computers\file_system\data.dm" +#include "code\modules\modular_computers\file_system\news_article.dm" #include "code\modules\modular_computers\file_system\program.dm" #include "code\modules\modular_computers\file_system\program_events.dm" #include "code\modules\modular_computers\file_system\programs\_engineering.dm" @@ -2118,6 +2119,7 @@ #include "code\modules\modular_computers\file_system\programs\configurator.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" #include "code\modules\modular_computers\file_system\programs\game.dm" +#include "code\modules\modular_computers\file_system\programs\news_browser.dm" #include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" #include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" From 43b14798fcfd0ad80700e1b8c2071d02466df449 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 11 Apr 2019 16:33:49 -0700 Subject: [PATCH 22/98] TABS --- .../simple_mob/subtypes/animal/space/worm.dm | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm index 38644641e0..fb7df40c1d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm @@ -404,20 +404,20 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/worm/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/material/knife)) var/to_spawn = pickweight( - /obj/random/junk = 30, - /obj/random/trash = 30, - /obj/random/maintenance/clean = 15, - /obj/random/tool = 15, - /obj/random/medical = 3, - /obj/random/bomb_supply = 7, - /obj/random/contraband = 3, - /obj/random/unidentified_medicine/old_medicine = 7, - /obj/item/weapon/ore/strangerock = 3, - /obj/item/weapon/ore/phoron = 7, - /obj/random/handgun = 1, - /obj/random/toolbox = 4, - /obj/random/drinkbottle = 5 - ) + /obj/random/junk = 30, + /obj/random/trash = 30, + /obj/random/maintenance/clean = 15, + /obj/random/tool = 15, + /obj/random/medical = 3, + /obj/random/bomb_supply = 7, + /obj/random/contraband = 3, + /obj/random/unidentified_medicine/old_medicine = 7, + /obj/item/weapon/ore/strangerock = 3, + /obj/item/weapon/ore/phoron = 7, + /obj/random/handgun = 1, + /obj/random/toolbox = 4, + /obj/random/drinkbottle = 5 + ) new to_spawn(get_turf(src)) From c6f07c7b1cb4adb43418b501c7093159c5d2a68d Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 11 Apr 2019 16:46:45 -0700 Subject: [PATCH 23/98] LISTS --- .../mob/living/simple_mob/subtypes/animal/space/worm.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm index fb7df40c1d..46dd577d70 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/worm.dm @@ -403,8 +403,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/worm/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/material/knife)) - var/to_spawn = pickweight( - /obj/random/junk = 30, + var/to_spawn = pickweight(/obj/random/junk = 30, /obj/random/trash = 30, /obj/random/maintenance/clean = 15, /obj/random/tool = 15, From a0904cb9fd42931d13a11145e596bd90d5e9281a Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 12 Apr 2019 16:40:04 -0400 Subject: [PATCH 24/98] Updates Part Ten --- .../preference_setup/loadout/gear_tweaks.dm | 149 ++++++++++++++++++ .../loadout/loadout_utility.dm | 17 +- .../computers/item/modular_computer.dm | 85 +++++++--- .../computers/item/processor.dm | 60 +------ .../computers/item/tablet_presets.dm | 4 +- .../computers/machinery/modular_computer.dm | 72 +-------- .../computers/machinery/modular_console.dm | 5 +- .../computers/machinery/modular_laptop.dm | 2 +- .../programs/antagonist/revelation.dm | 4 +- .../modular_computers/hardware/hardware.dm | 3 + .../modular_computers/hardware/tesla_link.dm | 7 +- .../modular_computers/laptop_vendor.dm | 8 +- nano/templates/computer_fabricator.tmpl | 10 +- 13 files changed, 252 insertions(+), 174 deletions(-) diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index e8b1a56d62..7ddb6957a8 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -140,3 +140,152 @@ 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) diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index 7d4d1c1c9b..091d732299 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -158,14 +158,23 @@ ..() gear_tweaks = list(gear_tweak_free_color_choice) -/datum/gear/cheaptablet +/datum/gear/utility/cheaptablet display_name = "cheap tablet computer" + display_name = "tablet computer: cheap" path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap - sort_category = "utility" cost = 3 -/datum/gear/normaltablet +/datum/gear/utility/normaltablet display_name = "tablet computer" + display_name = "tablet computer: advanced" path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced - sort_category = "utility" cost = 4 + +/datum/gear/utility/customtablet + 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() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm index 225587e2b3..b9dcf2211d 100644 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ b/code/modules/modular_computers/computers/item/modular_computer.dm @@ -13,7 +13,8 @@ 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 = 0 // Whether the computer is emagged. + var/computer_emagged = FALSE // Whether the computer is emagged. + var/apc_powered = FALSE 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) @@ -39,11 +40,12 @@ 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. - var/obj/item/weapon/computer_hardware/battery_module/battery_module // An internal power source for this computer. Can be recharged. // Optional hardware (improves functionality, but is not critical for computer to work) + 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/tesla_link/tesla_link // Tesla Link, Allows remote charging from nearest APC. var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with. @@ -165,17 +167,13 @@ else overlays.Add(icon_state_menu) -// Used by child types if they have other power source than battery -/obj/item/modular_computer/proc/check_power_override() - return 0 - // 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((!battery_module || !battery_module.battery.charge) && !check_power_override()) + if(!apc_power(0) && !battery_power(0)) if(ui) ui.close() return 0 @@ -233,6 +231,8 @@ qdel() /obj/item/modular_computer/proc/turn_on(var/mob/user) + if(tesla_link) + tesla_link.enabled = 1 var/issynth = issilicon(user) // Robots and AIs get different activation messages. if(damage > broken_damage) if(issynth) @@ -240,7 +240,7 @@ else to_chat(user, "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again.") return - if(processor_unit && ((battery_module && battery_module.battery.charge && battery_module.check_functionality()) || check_power_override())) // Battery-run and charged or non-battery but powered by APC. + 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 @@ -273,17 +273,17 @@ if(active_program) if(active_program.program_state != PROGRAM_STATE_KILLED) - active_program.process_tick() 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.process_tick() P.ntnet_status = get_ntnet_status() P.computer_emagged = computer_emagged + P.process_tick() else idle_threads.Remove(P) @@ -315,6 +315,9 @@ 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" + switch(get_ntnet_status()) if(0) data["PC_ntneticon"] = "sig_none.gif" @@ -463,33 +466,56 @@ // Used in following function to reduce copypaste /obj/item/modular_computer/proc/power_failure(var/malfunction = 0) if(enabled) // Shut down the computer - visible_message("\The [src]'s screen flickers \"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\" warning as it shuts down unexpectedly.") + 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() - if(!battery_module || battery_module.battery.charge <= 0) // Battery-run but battery is depleted. - power_failure() - return 0 - 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 - - if(battery_module) - if(!battery_module.check_functionality()) - power_failure(1) - return - battery_module.battery.use(power_usage * CELLRATE) - 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() + /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 @@ -619,6 +645,12 @@ 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 @@ -650,6 +682,9 @@ 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].") @@ -678,6 +713,8 @@ 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 @@ -697,6 +734,8 @@ all_components.Add(battery_module) if(processor_unit) all_components.Add(processor_unit) + if(tesla_link) + all_components.Add(tesla_link) return all_components /obj/item/modular_computer/proc/update_uis() diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 6b77dfb3ee..127d08e5ec 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -34,11 +34,6 @@ else if(damage) to_chat(user, "It is damaged.") -// Power interaction is handled by our machinery part, due to machinery having APC connection. -/obj/item/modular_computer/processor/handle_power() - if(machinery_computer) - machinery_computer.handle_power() - /obj/item/modular_computer/processor/New(var/comp) if(!comp || !istype(comp, /obj/machinery/modular_computer)) CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.") @@ -55,31 +50,10 @@ /obj/item/modular_computer/processor/relay_qdel() qdel(machinery_computer) -/obj/item/modular_computer/processor/find_hardware_by_name(var/N) - var/obj/item/weapon/computer_hardware/H = machinery_computer.find_hardware_by_name(N) - if(H) - return H - else - return ..() - /obj/item/modular_computer/processor/update_icon() if(machinery_computer) return machinery_computer.update_icon() -/obj/item/modular_computer/processor/get_header_data() - var/list/L = ..() - if(machinery_computer.tesla_link && machinery_computer.tesla_link.enabled && machinery_computer.powered()) - L["PC_apclinkicon"] = "charging.gif" - return L - -// Checks whether the machinery computer doesn't take power from APC network -/obj/item/modular_computer/processor/check_power_override() - if(!machinery_computer) - return 0 - if(!machinery_computer.tesla_link || !machinery_computer.tesla_link.enabled) - return 0 - return machinery_computer.powered() - // This thing is not meant to be used on it's own, get topic data from our machinery owner. /obj/item/modular_computer/processor/CanUseTopic(user, state) if(!machinery_computer) @@ -94,40 +68,8 @@ machinery_computer.use_power = 0 return -// Tesla links only work on machinery types, so we'll override the default try_install_component() proc -/obj/item/modular_computer/processor/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0) - if(istype(H, /obj/item/weapon/computer_hardware/tesla_link)) - if(machinery_computer.tesla_link) - to_chat(user, "This computer's tesla link slot is already occupied by \the [machinery_computer.tesla_link].") - return - var/obj/item/weapon/computer_hardware/tesla_link/L = H - L.holder = machinery_computer - machinery_computer.tesla_link = L - found = 1 - ..(user, H, found) - -/obj/item/modular_computer/processor/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0) - if(machinery_computer.tesla_link == H) - machinery_computer.tesla_link = null - var/obj/item/weapon/computer_hardware/tesla_link/L = H - L.holder = null - found = 1 - ..(user, H, found, critical) - -/obj/item/modular_computer/processor/get_all_components() - var/list/all_components = ..() - if(machinery_computer && machinery_computer.tesla_link) - all_components.Add(machinery_computer.tesla_link) - return all_components - // Perform adjacency checks on our machinery counterpart, rather than on ourselves. /obj/item/modular_computer/processor/Adjacent(var/atom/neighbor) if(!machinery_computer) return 0 - return machinery_computer.Adjacent(neighbor) - -/obj/item/modular_computer/processor/turn_on(var/mob/user) - // If we have a tesla link on our machinery counterpart, enable it automatically. Lets computer without a battery work. - if(machinery_computer && machinery_computer.tesla_link) - machinery_computer.tesla_link.enabled = 1 - ..() \ No newline at end of file + return machinery_computer.Adjacent(neighbor) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index 86c31b668d..af51211ba8 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -8,6 +8,7 @@ battery_module.charge_to_full() hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src) network_card = new/obj/item/weapon/computer_hardware/network_card(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) // Alternative version, an average one, for higher ranked positions mostly /obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New() @@ -18,4 +19,5 @@ hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(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) \ No newline at end of file + card_slot = new/obj/item/weapon/computer_hardware/card_slot(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 33d6e54e1a..345c2aebdb 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -7,7 +7,6 @@ var/list/global_modular_computers = list() name = "modular computer" desc = "An advanced computer." - var/battery_powered = 0 // Whether computer should be battery powered. It is set automatically use_power = 0 var/hardware_flag = 0 // A flag that describes this device type var/last_power_usage = 0 // Power usage during last tick @@ -29,9 +28,6 @@ var/list/global_modular_computers = list() var/_max_damage = 100 var/_break_damage = 50 - - var/obj/item/weapon/computer_hardware/tesla_link/tesla_link // Tesla Link component of this computer. Allows remote charging from nearest APC. - var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. /obj/machinery/modular_computer/attack_ghost(var/mob/observer/dead/user) @@ -46,7 +42,7 @@ var/list/global_modular_computers = list() overlays.Cut() if(!cpu || !cpu.enabled) - if (!(stat & NOPOWER) || battery_powered) + if (!(stat & NOPOWER)) overlays.Add(screen_icon_screensaver) set_light(0) return @@ -102,72 +98,6 @@ var/list/global_modular_computers = list() cpu.name = src.name cpu.process(1) -// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null -/obj/machinery/modular_computer/proc/find_hardware_by_name(var/N) - if(tesla_link && (tesla_link.name == N)) - return tesla_link - return null - -// Used in following function to reduce copypaste -/obj/machinery/modular_computer/proc/power_failure(var/malfunction = 0) - if(cpu && cpu.enabled) // Shut down the computer - visible_message("\The [src]'s screen flickers [cpu.battery_module ? "\"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.") - if(cpu) - cpu.shutdown_computer(0) - battery_powered = 0 - stat |= NOPOWER - update_icon() - -// Called by cpu item's process() automatically, handles our power interaction. -/obj/machinery/modular_computer/proc/handle_power() - if(cpu.battery_module && cpu.battery_module.battery.charge <= 0) // Battery-run but battery is depleted. - power_failure() - return 0 - else if(!cpu.battery_module && (!powered() || !tesla_link || !tesla_link.enabled || !tesla_link.check_functionality())) // Not battery run, but lacking APC connection. - power_failure() - return 0 - else if(stat & NOPOWER) - stat &= ~NOPOWER - - if(cpu.battery_module && cpu.battery_module.battery.charge) - battery_powered = 1 - else - battery_powered = 0 - - var/power_usage = cpu.screen_on ? base_active_power_usage : base_idle_power_usage - for(var/obj/item/weapon/computer_hardware/CH in src.cpu.get_all_components()) - if(CH.enabled) - power_usage += CH.power_usage - - // Wireless APC connection exists. - if(tesla_link && tesla_link.enabled && tesla_link.check_functionality()) - idle_power_usage = power_usage - active_power_usage = idle_power_usage + 100 // APCLink only charges at 100W rate, but covers any power usage. - use_power = 1 - // Battery is not fully charged. Begin slowly recharging. - if(cpu.battery_module && (cpu.battery_module.battery.charge < cpu.battery_module.battery.maxcharge)) - use_power = 2 - - if(cpu.battery_module && powered() && (use_power == 2)) // Battery charging itself - cpu.battery_module.battery.give(100 * CELLRATE) - else if(cpu.battery_module && !powered()) // Unpowered, but battery covers the usage. - cpu.battery_module.battery.use(idle_power_usage * CELLRATE) - - else // No wireless connection run only on battery. - use_power = 0 - if (cpu.battery_module) - if(!cpu.battery_module.check_functionality()) - power_failure(1) - return - cpu.battery_module.battery.use(power_usage * CELLRATE) - cpu.last_power_usage = power_usage - -// Modular computers can have battery in them, we handle power in previous proc, so prevent this from messing it up for us. -/obj/machinery/modular_computer/power_change() - if(battery_powered) - return - ..() - /obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) if(cpu) return cpu.attackby(W, user) diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 5d86004a72..9c3853914b 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -21,15 +21,14 @@ /obj/machinery/modular_computer/console/buildable/New() ..() // User-built consoles start as empty frames. - qdel(tesla_link) + qdel(cpu.tesla_link) qdel(cpu.network_card) qdel(cpu.hard_drive) /obj/machinery/modular_computer/console/New() ..() - cpu.battery_module = null cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) - tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + cpu.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) // Consoles generally have better HDDs due to lower space limitations var/area/A = get_area(src) // Attempts to set this console's tag according to our area. Since some areas have stuff like "XX - YY" in their names we try to remove that too. diff --git a/code/modules/modular_computers/computers/machinery/modular_laptop.dm b/code/modules/modular_computers/computers/machinery/modular_laptop.dm index cd0f4ac666..75cb719633 100644 --- a/code/modules/modular_computers/computers/machinery/modular_laptop.dm +++ b/code/modules/modular_computers/computers/machinery/modular_laptop.dm @@ -67,7 +67,7 @@ /obj/machinery/modular_computer/laptop/buildable/New() ..() // User-built consoles start as empty frames. - qdel(tesla_link) + qdel(cpu.tesla_link) qdel(cpu.network_card) qdel(cpu.hard_drive) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index 96ca2cb75a..d67081aeaf 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -29,8 +29,8 @@ s.start() if(istype(computer, /obj/item/modular_computer/processor)) var/obj/item/modular_computer/processor/P = computer - if(P.machinery_computer.tesla_link && prob(50)) - qdel(P.machinery_computer.tesla_link) + if(P.tesla_link && prob(50)) + qdel(P.tesla_link) computer.visible_message("\The [computer]'s tesla link explodes in rain of sparks.") var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(10, 1, computer.loc) diff --git a/code/modules/modular_computers/hardware/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm index 7cd79ceb09..a7e82b7667 100644 --- a/code/modules/modular_computers/hardware/hardware.dm +++ b/code/modules/modular_computers/hardware/hardware.dm @@ -63,6 +63,9 @@ // 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 diff --git a/code/modules/modular_computers/hardware/tesla_link.dm b/code/modules/modular_computers/hardware/tesla_link.dm index 5296f0e120..3bba3f032d 100644 --- a/code/modules/modular_computers/hardware/tesla_link.dm +++ b/code/modules/modular_computers/hardware/tesla_link.dm @@ -4,9 +4,10 @@ critical = 0 enabled = 1 icon_state = "teslalink" - hardware_size = 2 // Can't be installed into tablets + hardware_size = 1 origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) var/obj/machinery/modular_computer/holder + var/passive_charging_rate = 250 // W /obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L) if(istype(L, /obj/machinery/modular_computer)) @@ -15,6 +16,6 @@ ..(L) /obj/item/weapon/computer_hardware/tesla_link/Destroy() - if(holder && (holder.tesla_link == src)) - holder.tesla_link = null + if(holder2 && (holder2.tesla_link == src)) + holder2.tesla_link = null ..() \ No newline at end of file diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 49eb797994..838547d73f 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -23,7 +23,7 @@ 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 (LAPTOP ONLY) + var/dev_tesla = 0 // 0: None, 1: Standard var/dev_nanoprint = 0 // 0: None, 1: Standard var/dev_card = 0 // 0: None, 1: Standard @@ -96,7 +96,7 @@ if(dev_tesla) total_price += 399 if(fabricate) - fabricated_laptop.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop) + fabricated_laptop.cpu.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop.cpu) if(dev_nanoprint) total_price += 99 if(fabricate) @@ -153,6 +153,10 @@ 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 diff --git a/nano/templates/computer_fabricator.tmpl b/nano/templates/computer_fabricator.tmpl index c8d8b572b3..f3eceee431 100644 --- a/nano/templates/computer_fabricator.tmpl +++ b/nano/templates/computer_fabricator.tmpl @@ -34,10 +34,10 @@
    {{:helper.link('Standard', null, { "hw_cpu" : 1 }, data.hw_cpu == 1 ? 'selected' : null)}} {{:helper.link('Advanced', null, { "hw_cpu" : 2 }, data.hw_cpu == 2 ? 'selected' : null)}}
    Tesla Relay: {{:helper.link('None', null, { "hw_tesla" : 0 }, data.hw_tesla == 0 ? 'selected' : null)}} {{:helper.link('Standard', null, { "hw_tesla" : 1 }, data.hw_tesla == 1 ? 'selected' : null)}} - {{/if}}
    Nano Printer: {{:helper.link('None', null, { "hw_nanoprint" : 0 }, data.hw_nanoprint == 0 ? 'selected' : null)}} @@ -53,11 +53,11 @@
    Battery allows your device to operate without external utility power source. Advanced batteries increase battery life.
    Hard Drive stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.
    - Network Card allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.
    + Network Card allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts. Advanced cards also tend to have better bandwidth.
    Processor Unit is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.
    - Tesla Relay is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.
    - Nano Printer is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.
    - Card Reader adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards. + Tesla Relay is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source.
    + Nano Printer is device that allows printing of various documents. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.
    + Card Reader adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards.
    {{else data.state == 2}}

    Step 3: Payment

    From dfd9415458e74aa3f5e2eb87ddada06df036c0ba Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 13 Apr 2019 14:58:08 -0400 Subject: [PATCH 25/98] Modern Modular Computers --- code/__defines/machinery.dm | 18 +- code/__defines/misc.dm | 3 +- code/_helpers/text.dm | 49 ++ code/_macros.dm | 2 + code/_onclick/hud/fullscreen.dm | 16 + code/controllers/subsystems/nanoui.dm | 1 + code/game/jobs/job_controller.dm | 22 + code/game/machinery/camera/camera.dm | 18 + code/game/machinery/machinery.dm | 6 + code/game/machinery/recharger.dm | 19 +- code/modules/materials/material_recipes.dm | 9 +- .../mob/living/carbon/human/human_defines.dm | 4 +- code/modules/mob/living/carbon/human/life.dm | 6 + code/modules/mob/mob_helpers.dm | 2 +- .../NTNet/NTNRC/conversation.dm | 5 +- code/modules/modular_computers/NTNet/NTNet.dm | 16 +- .../NTNet/emails/email_account.dm | 82 ++ .../NTNet/emails/email_message.dm | 32 + .../computers/item/modular_computer.dm | 826 ------------------ .../computers/item/processor.dm | 75 -- .../computers/machinery/console_presets.dm | 112 --- .../computers/machinery/modular_computer.dm | 129 --- .../computers/machinery/modular_console.dm | 45 - .../computers/machinery/modular_laptop.dm | 110 --- .../computers/modular_computer/core.dm | 267 ++++++ .../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 | 151 ++++ .../computers/modular_computer/variables.dm | 53 ++ .../computers/subtypes/dev_console.dm | 18 + .../computers/subtypes/dev_laptop.dm | 37 + .../tablet.dm => subtypes/dev_tablet.dm} | 1 + .../computers/subtypes/dev_telescreen.dm | 59 ++ .../computers/subtypes/preset_console.dm | 117 +++ .../computers/subtypes/preset_laptop.dm | 32 + .../preset_tablet.dm} | 37 +- .../computers/subtypes/preset_telescreen.dm | 14 + .../file_system/news_article.dm | 4 +- .../modular_computers/file_system/program.dm | 56 +- .../file_system/program_events.dm | 4 +- .../file_system/programs/_engineering.dm | 85 -- .../file_system/programs/_medical.dm | 10 - .../file_system/programs/_program.dm | 31 - .../programs/antagonist/hacked_camera.dm | 2 +- .../programs/antagonist/revelation.dm | 35 +- .../programs/{ => command}/card.dm | 13 +- .../programs/{ => command}/comm.dm | 0 .../programs/engineering}/alarm_monitor.dm | 230 ++--- .../programs/engineering}/atmos_control.dm | 189 ++-- .../programs/engineering}/power_monitor.dm | 190 ++-- .../programs/engineering/rcon_console.dm} | 247 +++--- .../engineering/supermatter_monitor.dm | 130 +++ .../programs/{ => generic}/camera.dm | 21 +- .../programs/{ => generic}/configurator.dm | 0 .../programs/generic/email_client.dm | 497 +++++++++++ .../programs/{ => generic}/file_browser.dm | 44 +- .../programs/{ => generic}/game.dm | 0 .../programs/{ => generic}/news_browser.dm | 16 +- .../programs/{ => generic}/ntdownloader.dm | 8 + .../programs/{ => generic}/ntnrc_client.dm | 8 +- .../programs/{ => generic}/nttransfer.dm | 18 +- .../programs/medical/suit_sensors.dm} | 113 +-- .../programs/research/email_administration.dm | 142 +++ .../programs/{ => research}/ntmonitor.dm | 2 +- .../programs/security/digitalwarrant.dm | 141 +++ .../hardware/{hardware.dm => _hardware.dm} | 5 - .../hardware/battery_module.dm | 4 + .../modular_computers/hardware/card_slot.dm | 2 +- .../modular_computers/hardware/hard_drive.dm | 2 +- .../hardware/nano_printer.dm | 2 +- .../hardware/network_card.dm | 16 +- .../hardware/portable_hard_drive.dm | 7 +- .../hardware/processor_unit.dm | 7 +- .../modular_computers/hardware/tesla_link.dm | 9 +- .../modular_computers/laptop_vendor.dm | 42 +- code/modules/power/supermatter/supermatter.dm | 32 + 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/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/status_icons/batt_100.gif | Bin 102 -> 0 bytes icons/NTOS/status_icons/batt_20.gif | Bin 200 -> 0 bytes icons/NTOS/status_icons/batt_40.gif | Bin 123 -> 0 bytes icons/NTOS/status_icons/batt_5.gif | Bin 279 -> 0 bytes icons/NTOS/status_icons/batt_60.gif | Bin 122 -> 0 bytes icons/NTOS/status_icons/batt_80.gif | Bin 120 -> 0 bytes icons/NTOS/status_icons/batt_none.gif | Bin 132 -> 0 bytes icons/NTOS/status_icons/charging.gif | Bin 106 -> 0 bytes icons/NTOS/status_icons/sig_high.gif | Bin 337 -> 0 bytes icons/NTOS/status_icons/sig_low.gif | Bin 160 -> 0 bytes icons/NTOS/status_icons/sig_none.gif | Bin 154 -> 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/modular_components.dmi | Bin 3291 -> 3532 bytes icons/obj/modular_console.dmi | Bin 26868 -> 30082 bytes icons/obj/modular_laptop.dmi | Bin 26672 -> 28597 bytes icons/obj/modular_tablet.dmi | Bin 1636 -> 3544 bytes icons/obj/modular_telescreen.dmi | Bin 0 -> 29210 bytes maps/southern_cross/southern_cross_defines.dm | 1 + maps/~map_system/maps.dm | 1 + .../alarm_green.gif | Bin .../alarm_red.gif | Bin .../batt_100.gif | Bin .../batt_20.gif | Bin .../batt_40.gif | Bin .../batt_5.gif | Bin .../batt_60.gif | Bin .../batt_80.gif | Bin .../charging.gif | Bin .../downloader_finished.gif | Bin .../downloader_running.gif | Bin .../ntnrc_idle.gif | Bin .../ntnrc_new.gif | Bin .../power_norm.gif | Bin .../power_warn.gif | Bin .../sig_high.gif | Bin .../sig_lan.gif | Bin .../sig_low.gif | Bin .../sig_none.gif | Bin 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/email_administration.tmpl | 91 ++ nano/templates/email_client.tmpl | 183 ++++ nano/templates/laptop_mainscreen.tmpl | 1 + nano/templates/ntnet_monitor.tmpl | 9 +- nano/templates/supermatter_monitor.tmpl | 125 +++ polaris.dme | 64 +- 164 files changed, 3597 insertions(+), 2080 deletions(-) create mode 100644 code/modules/modular_computers/NTNet/emails/email_account.dm create mode 100644 code/modules/modular_computers/NTNet/emails/email_message.dm delete mode 100644 code/modules/modular_computers/computers/item/modular_computer.dm delete mode 100644 code/modules/modular_computers/computers/item/processor.dm delete mode 100644 code/modules/modular_computers/computers/machinery/console_presets.dm delete mode 100644 code/modules/modular_computers/computers/machinery/modular_computer.dm delete mode 100644 code/modules/modular_computers/computers/machinery/modular_console.dm delete mode 100644 code/modules/modular_computers/computers/machinery/modular_laptop.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/subtypes/dev_console.dm create mode 100644 code/modules/modular_computers/computers/subtypes/dev_laptop.dm rename code/modules/modular_computers/computers/{item/tablet.dm => subtypes/dev_tablet.dm} (76%) 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 rename code/modules/modular_computers/computers/{item/tablet_presets.dm => subtypes/preset_tablet.dm} (60%) create mode 100644 code/modules/modular_computers/computers/subtypes/preset_telescreen.dm delete mode 100644 code/modules/modular_computers/file_system/programs/_engineering.dm delete mode 100644 code/modules/modular_computers/file_system/programs/_medical.dm delete mode 100644 code/modules/modular_computers/file_system/programs/_program.dm rename code/modules/modular_computers/file_system/programs/{ => command}/card.dm (96%) rename code/modules/modular_computers/file_system/programs/{ => command}/comm.dm (100%) rename code/modules/{nano/modules => modular_computers/file_system/programs/engineering}/alarm_monitor.dm (79%) rename code/modules/{nano/modules => modular_computers/file_system/programs/engineering}/atmos_control.dm (86%) rename code/modules/{nano/modules => modular_computers/file_system/programs/engineering}/power_monitor.dm (77%) rename code/modules/{nano/modules/rcon.dm => modular_computers/file_system/programs/engineering/rcon_console.dm} (87%) create mode 100644 code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm rename code/modules/modular_computers/file_system/programs/{ => generic}/camera.dm (88%) rename code/modules/modular_computers/file_system/programs/{ => generic}/configurator.dm (100%) create mode 100644 code/modules/modular_computers/file_system/programs/generic/email_client.dm rename code/modules/modular_computers/file_system/programs/{ => generic}/file_browser.dm (79%) rename code/modules/modular_computers/file_system/programs/{ => generic}/game.dm (100%) rename code/modules/modular_computers/file_system/programs/{ => generic}/news_browser.dm (90%) rename code/modules/modular_computers/file_system/programs/{ => generic}/ntdownloader.dm (96%) rename code/modules/modular_computers/file_system/programs/{ => generic}/ntnrc_client.dm (97%) rename code/modules/modular_computers/file_system/programs/{ => generic}/nttransfer.dm (94%) rename code/modules/{nano/modules/crew_monitor.dm => modular_computers/file_system/programs/medical/suit_sensors.dm} (82%) create mode 100644 code/modules/modular_computers/file_system/programs/research/email_administration.dm rename code/modules/modular_computers/file_system/programs/{ => research}/ntmonitor.dm (95%) create mode 100644 code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm rename code/modules/modular_computers/hardware/{hardware.dm => _hardware.dm} (96%) 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/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/status_icons/batt_100.gif delete mode 100644 icons/NTOS/status_icons/batt_20.gif delete mode 100644 icons/NTOS/status_icons/batt_40.gif delete mode 100644 icons/NTOS/status_icons/batt_5.gif delete mode 100644 icons/NTOS/status_icons/batt_60.gif delete mode 100644 icons/NTOS/status_icons/batt_80.gif delete mode 100644 icons/NTOS/status_icons/batt_none.gif delete mode 100644 icons/NTOS/status_icons/charging.gif delete mode 100644 icons/NTOS/status_icons/sig_high.gif delete mode 100644 icons/NTOS/status_icons/sig_low.gif delete mode 100644 icons/NTOS/status_icons/sig_none.gif delete mode 100644 icons/NTOS/tb_close.png delete mode 100644 icons/NTOS/tcomms.png create mode 100644 icons/obj/modular_telescreen.dmi rename nano/images/{status_icons => modular_computers}/alarm_green.gif (100%) rename nano/images/{status_icons => modular_computers}/alarm_red.gif (100%) rename nano/images/{status_icons => modular_computers}/batt_100.gif (100%) rename nano/images/{status_icons => modular_computers}/batt_20.gif (100%) rename nano/images/{status_icons => modular_computers}/batt_40.gif (100%) rename nano/images/{status_icons => modular_computers}/batt_5.gif (100%) rename nano/images/{status_icons => modular_computers}/batt_60.gif (100%) rename nano/images/{status_icons => modular_computers}/batt_80.gif (100%) rename nano/images/{status_icons => modular_computers}/charging.gif (100%) rename nano/images/{status_icons => modular_computers}/downloader_finished.gif (100%) rename nano/images/{status_icons => modular_computers}/downloader_running.gif (100%) rename nano/images/{status_icons => modular_computers}/ntnrc_idle.gif (100%) rename nano/images/{status_icons => modular_computers}/ntnrc_new.gif (100%) rename nano/images/{status_icons => modular_computers}/power_norm.gif (100%) rename nano/images/{status_icons => modular_computers}/power_warn.gif (100%) rename nano/images/{status_icons => modular_computers}/sig_high.gif (100%) rename nano/images/{status_icons => modular_computers}/sig_lan.gif (100%) rename nano/images/{status_icons => modular_computers}/sig_low.gif (100%) rename nano/images/{status_icons => modular_computers}/sig_none.gif (100%) 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/email_administration.tmpl create mode 100644 nano/templates/email_client.tmpl create mode 100644 nano/templates/supermatter_monitor.tmpl diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index e95483cea4..48babcae96 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -72,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 @@ -109,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 d6e2fd4dce..2c4b7b06a6 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -194,10 +194,11 @@ #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 7 +#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 diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index d4fa4a74bb..3422613fe6 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, "\[/list\]", "
    ") + t = replacetext(t, "\[table\]", "") + t = replacetext(t, "\[/table\]", "
    ") + t = replacetext(t, "\[grid\]", "") + t = replacetext(t, "\[/grid\]", "
    ") + t = replacetext(t, "\[row\]", "
  • ") + t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[bluelogo\]", "") + t = replacetext(t, "\[solcrest\]", "") + 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..474f3ea24b 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -20,4 +20,6 @@ #define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE) +#define qdel_null(x) if(x) { qdel(x) ; x = null } + #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 8f722c0413..e7f0d3c249 100644 --- a/code/controllers/subsystems/nanoui.dm +++ b/code/controllers/subsystems/nanoui.dm @@ -13,6 +13,7 @@ SUBSYSTEM_DEF(nanoui) "nano/css/",\ "nano/images/",\ "nano/images/status_icons/",\ + "nano/images/modular_computers/", "nano/js/",\ "nano/templates/"\ ) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index bfc964f7f2..30735649c0 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -494,6 +494,28 @@ 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/complete_login = "[replacetext(lowertext(H.real_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 = "[replacetext(lowertext(H.real_name), " ", ".")][rand(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 20b3ace0e0..e07bb12d6b 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) 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 46ec3a892e..08eebc8df1 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,7 +8,7 @@ obj/machinery/recharger idle_power_usage = 4 active_power_usage = 40000 //40 kW var/obj/item/charging = null - var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/laptop, /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) + 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) var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered @@ -44,11 +44,6 @@ obj/machinery/recharger if(E.self_recharge) to_chat(user, "Your gun has no recharge port.") return - if(istype(G, /obj/item/laptop)) - var/obj/item/laptop/L = G - if(!L.stored_computer.cpu.battery_module) - to_chat(user, "There's no battery in it!") - return if(istype(G, /obj/item/modular_computer)) var/obj/item/modular_computer/C = G if(!C.battery_module) @@ -96,17 +91,7 @@ obj/machinery/recharger update_use_power(1) icon_state = icon_state_idle else - if(istype(charging, /obj/item/laptop)) - var/obj/item/laptop/L = charging - if(!L.stored_computer.cpu.battery_module.battery.fully_charged()) - icon_state = icon_state_charging - L.stored_computer.cpu.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/modular_computer)) + 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 diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index 08ab6df4dc..7071ec2feb 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -89,9 +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("modular console frame", /obj/machinery/modular_computer/console/buildable, 20) - recipes += new/datum/stack_recipe("modular laptop frame", /obj/machinery/modular_computer/laptop/buildable, 10) - recipes += new/datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5) + 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 f8fdae8bbb..37302de386 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -108,4 +108,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 d0882bc97a..d42f628059 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1305,6 +1305,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 @@ -1366,6 +1371,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/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 index 2af92c74e5..28173c09d0 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -27,10 +27,7 @@ var/global/ntnrc_uid = 0 /datum/ntnet_conversation/proc/trim_message_list() if(messages.len <= 50) return - for(var/message in messages) - messages -= message - if(messages <= 50) - return + messages.Cut(1, (messages.len-49)) /datum/ntnet_conversation/proc/add_client(var/datum/computer_file/program/chatclient/C) if(!istype(C)) diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm index 6dd5785df9..a00b634a85 100644 --- a/code/modules/modular_computers/NTNet/NTNet.dm +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -10,6 +10,7 @@ var/global/datum/ntnet/ntnet_global = new() 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. // 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 @@ -34,8 +35,13 @@ var/global/datum/ntnet/ntnet_global = new() 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()] - " @@ -103,6 +109,10 @@ var/global/datum/ntnet/ntnet_global = new() 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) @@ -153,7 +163,11 @@ var/global/datum/ntnet/ntnet_global = new() 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/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/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm deleted file mode 100644 index b9dcf2211d..0000000000 --- a/code/modules/modular_computers/computers/item/modular_computer.dm +++ /dev/null @@ -1,826 +0,0 @@ -// This is the base type that does all the hardware stuff. -// Other types expand it - tablets use a direct subtypes, and -// consoles and laptops use "procssor" item that is held inside machinery piece -/obj/item/modular_computer - name = "Modular Microcomputer" - desc = "A small portable microcomputer." - - 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 - 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 - - 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) - - // 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 = 'icons/obj/computer.dmi' - icon_state = "laptop-open" - 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/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 - - // 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) - 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/tesla_link/tesla_link // Tesla Link, Allows remote charging from nearest APC. - - var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with. - - -// 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/dead/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/emag_act(var/remaining_charges, var/mob/user) - if(computer_emagged) - to_chat(user, "\The [src] was already emagged.") - return - 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/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/New() - START_PROCESSING(SSobj, src) - update_icon() - ..() - -/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/update_icon() - icon_state = icon_state_unpowered - - overlays.Cut() - if(!enabled) - 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) - else - overlays.Add(icon_state_menu) - -// 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/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 - 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) - -// On-click handling. Turns on the computer if it's off and opens the GUI. -/obj/item/modular_computer/attack_self(mob/user) - if(enabled) - ui_interact(user) - else - turn_on(user) - -/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)) - relay_qdel() - qdel() - -/obj/item/modular_computer/proc/turn_on(var/mob/user) - 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]") - enabled = 1 - update_icon() - ui_interact(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") - -// Process currently calls handle_power(), may be expanded in future if more things are added. -/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() - -// 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" - - 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" - - if(idle_threads.len) - 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 - ))) - - 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 - -// 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() - return - -// 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 - 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(user && istype(user)) - ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. - - 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"] ) - var/prog = href_list["PC_runprogram"] - 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 program\" warning.") - return - - P.computer = src - - if(!P.is_supported_by_hardware(hardware_flag, 1, user)) - return - - // The program is already running. Resume it. - 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(P.run_program(user)) - active_program = P - update_icon() - return 1 - if(.) - update_uis() - -// Used in following function to reduce copypaste -/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() - -/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)) - 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].") - relay_qdel() - 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 - - ..() - -// Used by processor to relay qdel() to machinery type. -/obj/item/modular_computer/proc/relay_qdel() - return - -// 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) - -// 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 - 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 - -/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() - -/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) - -// 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 ..() diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm deleted file mode 100644 index 127d08e5ec..0000000000 --- a/code/modules/modular_computers/computers/item/processor.dm +++ /dev/null @@ -1,75 +0,0 @@ -// Held by /obj/machinery/modular_computer to reduce amount of copy-pasted code. -/obj/item/modular_computer/processor - name = "processing unit" - desc = "You shouldn't see this. If you do, report it." - icon = null - icon_state = null - icon_state_unpowered = null - icon_state_menu = null - hardware_flag = 0 - - var/obj/machinery/modular_computer/machinery_computer = null - -/obj/item/modular_computer/processor/Destroy() - . = ..() - if(machinery_computer && (machinery_computer.cpu == src)) - machinery_computer.cpu = null - machinery_computer = null - -/obj/item/modular_computer/processor/nano_host() - return machinery_computer.nano_host() - -// Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type. -// Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore -// non-relayed process calls. -/obj/item/modular_computer/processor/process(var/relayed = 0) - if(relayed) - ..() - else - return - -/obj/item/modular_computer/processor/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/processor/New(var/comp) - if(!comp || !istype(comp, /obj/machinery/modular_computer)) - CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.") - return - // Obtain reference to machinery computer - machinery_computer = comp - machinery_computer.cpu = src - hardware_flag = machinery_computer.hardware_flag - max_hardware_size = machinery_computer.max_hardware_size - steel_sheet_cost = machinery_computer.steel_sheet_cost - max_damage = machinery_computer._max_damage - broken_damage = machinery_computer._break_damage - -/obj/item/modular_computer/processor/relay_qdel() - qdel(machinery_computer) - -/obj/item/modular_computer/processor/update_icon() - if(machinery_computer) - return machinery_computer.update_icon() - -// This thing is not meant to be used on it's own, get topic data from our machinery owner. -/obj/item/modular_computer/processor/CanUseTopic(user, state) - if(!machinery_computer) - return 0 - return machinery_computer.CanUseTopic(user, state) - -/obj/item/modular_computer/processor/shutdown_computer() - if(!machinery_computer) - return - ..() - machinery_computer.update_icon() - machinery_computer.use_power = 0 - return - -// Perform adjacency checks on our machinery counterpart, rather than on ourselves. -/obj/item/modular_computer/processor/Adjacent(var/atom/neighbor) - if(!machinery_computer) - return 0 - return machinery_computer.Adjacent(neighbor) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm deleted file mode 100644 index 51098e5e44..0000000000 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ /dev/null @@ -1,112 +0,0 @@ -/obj/machinery/modular_computer/console/preset/ - // Can be changed to give devices specific hardware - var/_has_id_slot = 0 - var/_has_printer = 0 - var/_has_battery = 0 - -/obj/machinery/modular_computer/console/preset/New() - . = ..() - if(!cpu) - return - cpu.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(cpu) - if(_has_id_slot) - cpu.card_slot = new/obj/item/weapon/computer_hardware/card_slot(cpu) - if(_has_printer) - cpu.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(cpu) - if(_has_battery) - cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(cpu) - install_programs() - -/obj/machinery/modular_computer/console/preset/proc/install_programs() - return - -// ===== ENGINEERING CONSOLE ===== -/obj/machinery/modular_computer/console/preset/engineering - console_department = "Engineering" - desc = "A stationary computer. This one comes preloaded with engineering programs." - -/obj/machinery/modular_computer/console/preset/engineering/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/power_monitor()) - cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) - cpu.hard_drive.store_file(new/datum/computer_file/program/atmos_control()) - cpu.hard_drive.store_file(new/datum/computer_file/program/rcon_console()) - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) - - -// ===== MEDICAL CONSOLE ===== -/obj/machinery/modular_computer/console/preset/medical - console_department = "Medbay" - desc = "A stationary computer. This one comes preloaded with medical programs." - -/obj/machinery/modular_computer/console/preset/medical/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/suit_sensors()) - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) - - -// ===== RESEARCH CONSOLE ===== -/obj/machinery/modular_computer/console/preset/research - console_department = "Medbay" - desc = "A stationary computer. This one comes preloaded with research programs." - -/obj/machinery/modular_computer/console/preset/research/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor()) - cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) - cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) - - -// ===== COMMAND CONSOLE ===== -/obj/machinery/modular_computer/console/preset/command - console_department = "Command" - desc = "A stationary computer. This one comes preloaded with command programs." - _has_id_slot = 1 - _has_printer = 1 - -/obj/machinery/modular_computer/console/preset/command/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) - cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod()) - cpu.hard_drive.store_file(new/datum/computer_file/program/comm()) - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) - - -// ===== SECURITY CONSOLE ===== -/obj/machinery/modular_computer/console/preset/security - console_department = "Security" - desc = "A stationary computer. This one comes preloaded with security programs." - -/obj/machinery/modular_computer/console/preset/security/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) - - -// ===== CIVILIAN CONSOLE ===== -/obj/machinery/modular_computer/console/preset/civilian - console_department = "Civilian" - desc = "A stationary computer. This one comes preloaded with generic programs." - -/obj/machinery/modular_computer/console/preset/civilian/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient()) - cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor()) // Mainly for the entertainment channel, won't allow connection to other channels without access anyway - -// ===== ERT CONSOLE ===== -/obj/machinery/modular_computer/console/preset/ert - console_department = "Crescent" - desc = "A stationary computer. This one comes preloaded with various programs used by Nanotrasen response teams." - -/obj/machinery/modular_computer/console/preset/ert/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer()) - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor/ert()) - cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) - cpu.hard_drive.store_file(new/datum/computer_file/program/comm()) - -// ===== MERCENARY CONSOLE ===== -/obj/machinery/modular_computer/console/preset/mercenary - console_department = "Unset" - desc = "A stationary computer. This one comes preloaded with various programs used by shady organizations." - _has_printer = 1 - _has_id_slot = 1 - emagged = 1 // Allows download of other antag programs for free. - -/obj/machinery/modular_computer/console/preset/ert/install_programs() - cpu.hard_drive.store_file(new/datum/computer_file/program/camera_monitor/hacked()) - cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm deleted file mode 100644 index 345c2aebdb..0000000000 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ /dev/null @@ -1,129 +0,0 @@ -// Global var to track modular computers -var/list/global_modular_computers = list() - -// Modular Computer - device that runs various programs and operates with hardware -// DO NOT SPAWN THIS TYPE. Use /laptop/ or /console/ instead. -/obj/machinery/modular_computer/ - name = "modular computer" - desc = "An advanced computer." - - use_power = 0 - var/hardware_flag = 0 // A flag that describes this device type - var/last_power_usage = 0 // Power usage during last tick - - // 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 - icon_state = null - var/icon_state_unpowered = null // Icon state when the computer is turned off - var/screen_icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. - var/screen_icon_screensaver = "standby" // Icon state overlay when the computer is powered, but not 'switched on'. - 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 = 10 // Amount of steel sheets refunded when disassembling an empty frame of this computer. - var/light_strength = 0 // Light luminosity when turned on - var/base_active_power_usage = 100 // 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 = 10 // Power usage when the computer is idle and screen is off (currently only applies to laptops) - - var/_max_damage = 100 - var/_break_damage = 50 - var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. - -/obj/machinery/modular_computer/attack_ghost(var/mob/observer/dead/user) - if(cpu) - cpu.attack_ghost(user) - -/obj/machinery/modular_computer/emag_act(var/remaining_charges, var/mob/user) - return //cpu ? cpu.emag_act(remaining_charges, user) : NO_EMAG_ACT - -/obj/machinery/modular_computer/update_icon() - icon_state = icon_state_unpowered - overlays.Cut() - - if(!cpu || !cpu.enabled) - if (!(stat & NOPOWER)) - overlays.Add(screen_icon_screensaver) - set_light(0) - return - set_light(light_strength) - if(cpu.active_program) - overlays.Add(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu) - else - overlays.Add(screen_icon_state_menu) - -// Eject ID card from computer, if it has ID slot with card inside. -/obj/machinery/modular_computer/verb/eject_id() - set name = "Eject ID" - set category = "Object" - set src in view(1) - - if(cpu) - cpu.eject_id() - -// Eject ID card from computer, if it has ID slot with card inside. -/obj/machinery/modular_computer/verb/eject_usb() - set name = "Eject Portable Storage" - set category = "Object" - set src in view(1) - - if(cpu) - cpu.eject_usb() - -/obj/machinery/modular_computer/New() - ..() - cpu = new(src) - global_modular_computers.Add(src) - -/obj/machinery/modular_computer/Destroy() - if(cpu) - qdel(cpu) - cpu = null - return ..() - -// On-click handling. Turns on the computer if it's off and opens the GUI. -/obj/machinery/modular_computer/attack_hand(mob/user) - if(cpu) - cpu.attack_self(user) // CPU is an item, that's why we route attack_hand to attack_self - -/obj/machinery/modular_computer/examine(var/mob/user) - . = ..() - if(cpu) - cpu.examine(user) - -// Process currently calls handle_power(), may be expanded in future if more things are added. -/obj/machinery/modular_computer/process() - if(cpu) - // Keep names in sync. - cpu.name = src.name - cpu.process(1) - -/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) - if(cpu) - return cpu.attackby(W, user) - return ..() - - -// Stronger explosions cause serious damage to internal components -// Minor explosions are mostly mitigitated by casing. -/obj/machinery/modular_computer/ex_act(var/severity) - if(cpu) - cpu.ex_act(severity) - -// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components -/obj/machinery/modular_computer/emp_act(var/severity) - if(cpu) - cpu.emp_act(severity) - -// "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/machinery/modular_computer/bullet_act(var/obj/item/projectile/Proj) - if(cpu) - cpu.bullet_act(Proj) - -/obj/machinery/modular_computer/check_eye(var/mob/user) - if(cpu) - return cpu.check_eye(user) - return -1 - diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm deleted file mode 100644 index 9c3853914b..0000000000 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ /dev/null @@ -1,45 +0,0 @@ -/obj/machinery/modular_computer/console/ - name = "console" - desc = "A stationary computer." - - icon = 'icons/obj/modular_console.dmi' - icon_state = "console" - icon_state_unpowered = "console" - screen_icon_state_menu = "menu" - hardware_flag = PROGRAM_CONSOLE - var/console_department = "" // Used in New() to set network tag according to our area. - anchored = 1 - 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 - _break_damage = 150 - -/obj/machinery/modular_computer/console/buildable/New() - ..() - // User-built consoles start as empty frames. - qdel(cpu.tesla_link) - qdel(cpu.network_card) - qdel(cpu.hard_drive) - -/obj/machinery/modular_computer/console/New() - ..() - cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) - cpu.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) - cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) // Consoles generally have better HDDs due to lower space limitations - var/area/A = get_area(src) - // Attempts to set this console's tag according to our area. Since some areas have stuff like "XX - YY" in their names we try to remove that too. - if(A && console_department) - cpu.network_card.identification_string = replacetext(replacetext(replacetext("[A.name] [console_department] Console", " ", "_"), "-", ""), "__", "_") // Replace spaces with "_" - else if(A) - cpu.network_card.identification_string = replacetext(replacetext(replacetext("[A.name] Console", " ", "_"), "-", ""), "__", "_") - else if(console_department) - cpu.network_card.identification_string = replacetext(replacetext(replacetext("[console_department] Console", " ", "_"), "-", ""), "__", "_") - else - cpu.network_card.identification_string = "Unknown Console" - if(cpu) - cpu.screen_on = 1 - update_icon() \ No newline at end of file diff --git a/code/modules/modular_computers/computers/machinery/modular_laptop.dm b/code/modules/modular_computers/computers/machinery/modular_laptop.dm deleted file mode 100644 index 75cb719633..0000000000 --- a/code/modules/modular_computers/computers/machinery/modular_laptop.dm +++ /dev/null @@ -1,110 +0,0 @@ -// Laptop in it's item state, can be carried around. - -/obj/item/laptop - name = "laptop computer" - desc = "A portable computer. It is closed." - icon = 'icons/obj/modular_laptop.dmi' - icon_state = "laptop-closed" - item_state = "laptop-inhand" - w_class = 3 - var/obj/machinery/modular_computer/laptop/stored_computer = null - -/obj/item/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.forceMove(src.loc) - to_chat(usr, "\The [src] crumbles to pieces.") - spawn(5) - qdel(src) - return - - stored_computer.forceMove(src.loc) - stored_computer.stat &= ~MAINT - stored_computer.update_icon() - if(stored_computer.cpu) - stored_computer.cpu.screen_on = 1 - loc = stored_computer - to_chat(usr, "You open \the [src].") - - -/obj/item/laptop/AltClick() - if(Adjacent(usr)) - open_computer() - -// The actual laptop -/obj/machinery/modular_computer/laptop - name = "laptop computer" - desc = "A portable computer." - var/obj/item/laptop/portable = null // Portable version of this computer, dropped on alt-click to allow transport. Used by laptops. - hardware_flag = PROGRAM_LAPTOP - icon_state_unpowered = "laptop-open" // Icon state when the computer is turned off - icon = 'icons/obj/modular_laptop.dmi' - icon_state = "laptop-open" - base_idle_power_usage = 25 - base_active_power_usage = 200 - max_hardware_size = 2 - light_strength = 3 - _max_damage = 200 - _break_damage = 100 - -/obj/machinery/modular_computer/laptop/buildable/New() - ..() - // User-built consoles start as empty frames. - qdel(cpu.tesla_link) - qdel(cpu.network_card) - qdel(cpu.hard_drive) - -// Close the computer. collapsing it into movable item that can't be used. -/obj/machinery/modular_computer/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/modular_computer/laptop/proc/close_laptop(mob/user = null) - if(istype(loc,/obj/item/laptop)) - return - if(!istype(loc,/turf)) - return - - if(!portable) - portable=new - portable.stored_computer = src - - portable.forceMove(src.loc) - src.forceMove(portable) - stat |= MAINT - if(user) - to_chat(user, "You close \the [src].") - if(cpu) - cpu.screen_on = 0 - -/obj/machinery/modular_computer/laptop/AltClick() - if(Adjacent(usr)) - close_laptop() \ 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..5474fb1f40 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -0,0 +1,267 @@ +/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) + 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..89c35a56cf --- /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)) + 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..699f113970 --- /dev/null +++ b/code/modules/modular_computers/computers/modular_computer/ui.dm @@ -0,0 +1,151 @@ +// 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["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" + + 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/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..4aef23213f --- /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 \ No newline at end of file diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/subtypes/dev_tablet.dm similarity index 76% rename from code/modules/modular_computers/computers/item/tablet.dm rename to code/modules/modular_computers/computers/subtypes/dev_tablet.dm index 2b02f58696..7ebf646e10 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_tablet.dm @@ -1,5 +1,6 @@ /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" 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..95df05320d --- /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 stationary wall-mounted touchscreen" + 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..5b8735d79e --- /dev/null +++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm @@ -0,0 +1,117 @@ +/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()) + 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()) + +// 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()) + +// 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()) + +// 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()) + +// 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()) \ No newline at end of file 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/item/tablet_presets.dm b/code/modules/modular_computers/computers/subtypes/preset_tablet.dm similarity index 60% rename from code/modules/modular_computers/computers/item/tablet_presets.dm rename to code/modules/modular_computers/computers/subtypes/preset_tablet.dm index af51211ba8..65c3a47c3c 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_tablet.dm @@ -1,23 +1,28 @@ - -// Available as custom loadout item, this is literally the worst possible cheap tablet -/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/New() - . = ..() - desc = "A low-end tablet often seen among low ranked station personnel." +/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/install_default_hardware() + ..() processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) - battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src) - battery_module.charge_to_full() + 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) - tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) - -// Alternative version, an average one, for higher ranked positions mostly -/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New() - . = ..() - processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src) - battery_module = new/obj/item/weapon/computer_hardware/battery_module(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(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) - tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) \ No newline at end of file + 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/news_article.dm b/code/modules/modular_computers/file_system/news_article.dm index 2a4a25c7d0..2eea86ec20 100644 --- a/code/modules/modular_computers/file_system/news_article.dm +++ b/code/modules/modular_computers/file_system/news_article.dm @@ -3,9 +3,11 @@ /datum/computer_file/data/news_article filetype = "XNML" filename = "Unknown News Entry" - block_size = 1000 // Results in smaller files + 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) ..() diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 21cd6403c4..e699b009d8 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -21,6 +21,7 @@ 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) ..() @@ -59,7 +60,7 @@ /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 an \"Hardware Error - Incompatible software\" warning.") + to_chat(user, "\The [computer] flashes: \"Hardware Error - Incompatible software\".") return 0 return 1 @@ -70,8 +71,19 @@ // 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 @@ -82,19 +94,23 @@ 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.") + 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.") + 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. @@ -155,3 +171,37 @@ 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 index 2901759b6c..0b001b77a1 100644 --- a/code/modules/modular_computers/file_system/program_events.dm +++ b/code/modules/modular_computers/file_system/program_events.dm @@ -13,6 +13,6 @@ /datum/computer_file/program/proc/event_networkfailure(var/background) kill_program(1) if(background) - computer.visible_message("\The [computer]'s screen displays an \"Process [filename].[filetype] (PID [rand(100,999)]) terminated - Network Error\" error") + computer.visible_message("\The [computer]'s screen displays an error: \"Network connectivity lost - process [filename].[filetype] (PID [rand(100,999)]) terminated.\"", range = 1) else - computer.visible_message("\The [computer]'s screen briefly freezes and then shows \"NETWORK ERROR - NTNet connection lost. Please retry. If problem persists contact your system administrator.\" error.") + 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.\"", range = 1) diff --git a/code/modules/modular_computers/file_system/programs/_engineering.dm b/code/modules/modular_computers/file_system/programs/_engineering.dm deleted file mode 100644 index be9af3f5b4..0000000000 --- a/code/modules/modular_computers/file_system/programs/_engineering.dm +++ /dev/null @@ -1,85 +0,0 @@ -// These programs are associated with engineering. - -/datum/computer_file/program/power_monitor - filename = "powermonitor" - filedesc = "Power Monitoring" - nanomodule_path = /datum/nano_module/power_monitor/ - program_icon_state = "power_monitor" - extended_desc = "This program connects to sensors around the station 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/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" - extended_desc = "This program provides visual interface for station's 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/computer_file/program/atmos_control - filename = "atmoscontrol" - filedesc = "Atmosphere Control" - nanomodule_path = /datum/nano_module/atmos_control - program_icon_state = "atmos_control" - extended_desc = "This program allows remote control of air alarms around the station. 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/computer_file/program/rcon_console - filename = "rconconsole" - filedesc = "RCON Remote Control" - nanomodule_path = /datum/nano_module/rcon - program_icon_state = "generic" - extended_desc = "This program allows remote control of power distribution systems around the station. 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 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/_medical.dm b/code/modules/modular_computers/file_system/programs/_medical.dm deleted file mode 100644 index 1cbba48fd6..0000000000 --- a/code/modules/modular_computers/file_system/programs/_medical.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/computer_file/program/suit_sensors - filename = "sensormonitor" - filedesc = "Suit Sensors Monitoring" - nanomodule_path = /datum/nano_module/crew_monitor - program_icon_state = "crew" - 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 \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/_program.dm b/code/modules/modular_computers/file_system/programs/_program.dm deleted file mode 100644 index 149c6e8926..0000000000 --- a/code/modules/modular_computers/file_system/programs/_program.dm +++ /dev/null @@ -1,31 +0,0 @@ -/obj/machinery/modular_computer/initial_data() - return cpu ? cpu.get_header_data() : ..() - -/obj/machinery/modular_computer/update_layout() - return TRUE - -/obj/item/modular_computer/initial_data() - return get_header_data() - -/obj/machinery/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) \ No newline at end of file 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 index 2bc063a8eb..4d224a5bed 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm @@ -16,7 +16,7 @@ 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.current_network && (HNM.current_network in using_map.station_networks) && prob(0.1)) + 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 diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index d67081aeaf..1a5659d743 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -16,25 +16,24 @@ activate() /datum/computer_file/program/revelation/proc/activate() - if(computer) - computer.visible_message("\The [computer]'s screen brightly flashes and loud electrical buzzing is heard.") - computer.enabled = 0 - computer.update_icon() + 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) - computer.visible_message("\The [computer]'s battery explodes in rain of sparks.") - 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(istype(computer, /obj/item/modular_computer/processor)) - var/obj/item/modular_computer/processor/P = computer - if(P.tesla_link && prob(50)) - qdel(P.tesla_link) - computer.visible_message("\The [computer]'s tesla link explodes in rain of sparks.") - 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.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(..()) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm similarity index 96% rename from code/modules/modular_computers/file_system/programs/card.dm rename to code/modules/modular_computers/file_system/programs/command/card.dm index b8dc33af34..8aaab7ea0d 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -42,7 +42,7 @@ 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) @@ -54,7 +54,7 @@ data["all_centcom_access"] = is_centcom ? get_accesses(1) : null data["regions"] = get_accesses() - if(program.computer.card_slot.stored_card) + 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() @@ -88,7 +88,7 @@ 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.stored_card + 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( @@ -108,7 +108,10 @@ var/mob/user = usr var/obj/item/weapon/card/id/user_id_card = user.GetIdCard() - var/obj/item/weapon/card/id/id_card = computer.card_slot.stored_card + 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") @@ -168,7 +171,7 @@ if("edit") if(computer && can_run(user, 1)) if(href_list["name"]) - var/temp_name = sanitizeName(input("Enter name.", "Name", id_card.registered_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 diff --git a/code/modules/modular_computers/file_system/programs/comm.dm b/code/modules/modular_computers/file_system/programs/command/comm.dm similarity index 100% rename from code/modules/modular_computers/file_system/programs/comm.dm rename to code/modules/modular_computers/file_system/programs/command/comm.dm diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm similarity index 79% rename from code/modules/nano/modules/alarm_monitor.dm rename to code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm index f42c326678..b4d5635ffd 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm @@ -1,98 +1,132 @@ -/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 - -// 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) +/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" + 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, 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 86% rename from code/modules/nano/modules/atmos_control.dm rename to code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm index c077dc1283..fa3d43176b 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm @@ -1,88 +1,101 @@ -/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)) +/datum/computer_file/program/atmos_control + filename = "atmoscontrol" + filedesc = "Atmosphere Control" + nanomodule_path = /datum/nano_module/atmos_control + program_icon_state = "atmos_control" + 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 77% rename from code/modules/nano/modules/power_monitor.dm rename to code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm index 3bd87cc5bc..475a03cfdb 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm @@ -1,79 +1,111 @@ -/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 - 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" + 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 87% rename from code/modules/nano/modules/rcon.dm rename to code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm index 67a949a828..0e22a3ba1e 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm @@ -1,117 +1,130 @@ -/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) - 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" + 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..bd60780c78 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm @@ -0,0 +1,130 @@ +/datum/computer_file/program/supermatter_monitor + filename = "supmon" + filedesc = "Supermatter Monitoring" + nanomodule_path = /datum/nano_module/supermatter_monitor/ + program_icon_state = "smmon_0" + 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/camera.dm b/code/modules/modular_computers/file_system/programs/generic/camera.dm similarity index 88% rename from code/modules/modular_computers/file_system/programs/camera.dm rename to code/modules/modular_computers/file_system/programs/generic/camera.dm index d56c29fdca..7dde9c0d3f 100644 --- a/code/modules/modular_computers/file_system/programs/camera.dm +++ b/code/modules/modular_computers/file_system/programs/generic/camera.dm @@ -2,6 +2,9 @@ /proc/get_camera_access(var/network) if(!network) return 0 + . = using_map.get_network_access(network) + if(.) + return switch(network) if(NETWORK_THUNDER) @@ -25,8 +28,8 @@ filename = "cammon" filedesc = "Camera Monitoring" nanomodule_path = /datum/nano_module/camera_monitor - program_icon_state = "generic" - extended_desc = "This program allows remote access to station's camera system. Some camera networks may have additional access requirements." + program_icon_state = "cameras" + 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 @@ -154,7 +157,7 @@ /datum/computer_file/program/camera_monitor/ert filename = "ntcammon" filedesc = "Advanced Camera Monitoring" - extended_desc = "This program allows remote access to station's camera system. Some camera networks may have additional access requirements. This version has an integrated database with additional encrypted keys." + 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 @@ -168,4 +171,14 @@ ..() 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 + 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/configurator.dm b/code/modules/modular_computers/file_system/programs/generic/configurator.dm similarity index 100% rename from code/modules/modular_computers/file_system/programs/configurator.dm rename to code/modules/modular_computers/file_system/programs/generic/configurator.dm 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..429a68c3a4 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/email_client.dm @@ -0,0 +1,497 @@ +/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" + 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/file_browser.dm b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm similarity index 79% rename from code/modules/modular_computers/file_system/programs/file_browser.dm rename to code/modules/modular_computers/file_system/programs/generic/file_browser.dm index a47669662c..4311c2dedd 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm @@ -104,7 +104,7 @@ // 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:

    [F.stored_data]

    " + 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 @@ -119,7 +119,7 @@ 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(parse_tags(F.stored_data))) + 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"]) @@ -147,44 +147,6 @@ if(.) SSnanoui.update_uis(NM) -/datum/computer_file/program/filemanager/proc/parse_tags(var/t) - 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, "\[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, "\[/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\]", "") - return t - - /datum/nano_module/program/computer_filemanager name = "NTOS File Manager" @@ -208,7 +170,7 @@ if(!istype(file)) data["error"] = "I/O ERROR: Unable to open file." else - data["filedata"] = PRG.parse_tags(file.stored_data) + data["filedata"] = pencode2html(file.stored_data) data["filename"] = "[file.filename].[file.filetype]" else if(!PRG.computer || !PRG.computer.hard_drive) diff --git a/code/modules/modular_computers/file_system/programs/game.dm b/code/modules/modular_computers/file_system/programs/generic/game.dm similarity index 100% rename from code/modules/modular_computers/file_system/programs/game.dm rename to code/modules/modular_computers/file_system/programs/generic/game.dm diff --git a/code/modules/modular_computers/file_system/programs/news_browser.dm b/code/modules/modular_computers/file_system/programs/generic/news_browser.dm similarity index 90% rename from code/modules/modular_computers/file_system/programs/news_browser.dm rename to code/modules/modular_computers/file_system/programs/generic/news_browser.dm index 42836024c5..d06741d934 100644 --- a/code/modules/modular_computers/file_system/programs/news_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/news_browser.dm @@ -3,7 +3,7 @@ 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" - size = 8 + size = 4 requires_ntnet = 1 available_on_ntnet = 1 @@ -13,6 +13,7 @@ var/download_netspeed = 0 var/downloading = 0 var/message = "" + var/show_archived = 0 /datum/computer_file/program/newsbrowser/process_tick() if(!downloading) @@ -38,6 +39,7 @@ loaded_article = null download_progress = 0 downloading = 0 + show_archived = 0 /datum/computer_file/program/newsbrowser/Topic(href, href_list) if(..()) @@ -75,6 +77,9 @@ 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) @@ -95,6 +100,7 @@ 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 @@ -104,16 +110,20 @@ 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 + "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, 700, state = state) + 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/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm similarity index 96% rename from code/modules/modular_computers/file_system/programs/ntdownloader.dm rename to code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm index 77c0d97a0a..5968fea260 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm @@ -17,6 +17,14 @@ var/download_netspeed = 0 var/downloaderror = "" +/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 diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm similarity index 97% rename from code/modules/modular_computers/file_system/programs/ntnrc_client.dm rename to code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm index c16baf2895..5b384ba4e8 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm @@ -28,7 +28,7 @@ if(!channel) return 1 var/mob/living/user = usr - var/message = sanitize(input(user, "Enter message or leave blank to cancel: ")) + var/message = sanitize(input(user, "Enter message or leave blank to cancel: "), 512) if(!message || !channel) return channel.add_message(message, username) @@ -65,7 +65,7 @@ if(href_list["PRG_newchannel"]) . = 1 var/mob/living/user = usr - var/channel_title = sanitize(input(user,"Enter channel name or leave blank to cancel:")) + 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() @@ -95,7 +95,7 @@ if(href_list["PRG_changename"]) . = 1 var/mob/living/user = usr - var/newname = sanitize(input(user,"Enter new nickname or leave blank to cancel:")) + var/newname = sanitize(input(user,"Enter new nickname or leave blank to cancel:"), 20) if(!newname) return 1 if(channel) @@ -132,7 +132,7 @@ 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:")) + 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.") diff --git a/code/modules/modular_computers/file_system/programs/nttransfer.dm b/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm similarity index 94% rename from code/modules/modular_computers/file_system/programs/nttransfer.dm rename to code/modules/modular_computers/file_system/programs/generic/nttransfer.dm index 404238d326..9630613397 100644 --- a/code/modules/modular_computers/file_system/programs/nttransfer.dm +++ b/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm @@ -19,7 +19,6 @@ var/global/nttransfer_uid = 0 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/download_netspeed = 0 // Our connectivity speed in GQ/s 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 @@ -31,13 +30,12 @@ var/global/nttransfer_uid = 0 /datum/computer_file/program/nttransfer/process_tick() // Server mode - update_netspeed() 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.download_netspeed, download_netspeed) + 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() @@ -55,18 +53,6 @@ var/global/nttransfer_uid = 0 downloaded_file = null ..(forced) - - -/datum/computer_file/program/nttransfer/proc/update_netspeed() - download_netspeed = 0 - switch(ntnet_status) - if(1) - download_netspeed = NTNETSPEED_LOWSIGNAL - if(2) - download_netspeed = NTNETSPEED_HIGHSIGNAL - if(3) - download_netspeed = NTNETSPEED_ETHERNET - // 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)) @@ -125,6 +111,8 @@ var/global/nttransfer_uid = 0 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]", diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm similarity index 82% rename from code/modules/nano/modules/crew_monitor.dm rename to code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm index 7ea34f8a12..3e83dd2248 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm @@ -1,52 +1,63 @@ -/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 +/datum/computer_file/program/suit_sensors + filename = "sensormonitor" + filedesc = "Suit Sensors Monitoring" + nanomodule_path = /datum/nano_module/crew_monitor + program_icon_state = "crew" + 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..5e9a7a1bc1 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/research/email_administration.dm @@ -0,0 +1,142 @@ +/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" + 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/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm similarity index 95% rename from code/modules/modular_computers/file_system/programs/ntmonitor.dm rename to code/modules/modular_computers/file_system/programs/research/ntmonitor.dm index ed3b37ac64..48bb583d84 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm @@ -2,7 +2,7 @@ filename = "ntmonitor" filedesc = "NTNet Diagnostics and Monitoring" program_icon_state = "comm_monitor" - extended_desc = "This program monitors stationwide NTNet network, provides access to logging systems, and allows for configuration changes" + 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 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..ed7b404b75 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm @@ -0,0 +1,141 @@ +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" + 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 similarity index 96% rename from code/modules/modular_computers/hardware/hardware.dm rename to code/modules/modular_computers/hardware/_hardware.dm index a7e82b7667..90150bc547 100644 --- a/code/modules/modular_computers/hardware/hardware.dm +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -48,11 +48,6 @@ /obj/item/weapon/computer_hardware/New(var/obj/L) w_class = hardware_size - if(istype(L, /obj/machinery/modular_computer)) - var/obj/machinery/modular_computer/C = L - if(C.cpu) - holder2 = C.cpu - return if(istype(L, /obj/item/modular_computer)) holder2 = L return diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index f77aa386b5..3b7ea1164b 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -70,6 +70,10 @@ 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 index d2ef03cabf..4cf8afc705 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -15,4 +15,4 @@ if(stored_card) stored_card.forceMove(get_turf(holder2)) holder2 = null - ..() \ No newline at end of file + 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 index 93cbf8526d..c9aa58d8d1 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -160,7 +160,7 @@ 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() diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm index 996d2dfb62..ac5816345b 100644 --- a/code/modules/modular_computers/hardware/nano_printer.dm +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -43,4 +43,4 @@ if(holder2 && (holder2.nano_printer == src)) holder2.nano_printer = null holder2 = null - ..() \ No newline at end of file + 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 index 01c9167c19..d7305a0f80 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -32,7 +32,7 @@ var/global/ntnet_card_uid = 1 /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 off-station." + 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. @@ -52,7 +52,7 @@ var/global/ntnet_card_uid = 1 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() @@ -77,19 +77,21 @@ var/global/ntnet_card_uid = 1 if(holder2) var/turf/T = get_turf(holder2) - if((T && istype(T)) && T.z in using_map.station_levels) + 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(long_range) // Computer is not on station, but it has upgraded network card. Low signal. - 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 - ..() \ No newline at end of file + ..() diff --git a/code/modules/modular_computers/hardware/portable_hard_drive.dm b/code/modules/modular_computers/hardware/portable_hard_drive.dm index b6b42a51c8..9a0feb3653 100644 --- a/code/modules/modular_computers/hardware/portable_hard_drive.dm +++ b/code/modules/modular_computers/hardware/portable_hard_drive.dm @@ -29,4 +29,9 @@ /obj/item/weapon/computer_hardware/hard_drive/portable/New() ..() stored_files = list() - recalculate_size() \ No newline at end of file + 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 index 8f9009f72b..9ed7ab40ac 100644 --- a/code/modules/modular_computers/hardware/processor_unit.dm +++ b/code/modules/modular_computers/hardware/processor_unit.dm @@ -38,4 +38,9 @@ hardware_size = 1 power_usage = 75 max_idle_programs = 2 - origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) \ No newline at end of file + 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 index 3bba3f032d..b23bb963af 100644 --- a/code/modules/modular_computers/hardware/tesla_link.dm +++ b/code/modules/modular_computers/hardware/tesla_link.dm @@ -6,16 +6,9 @@ icon_state = "teslalink" hardware_size = 1 origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) - var/obj/machinery/modular_computer/holder var/passive_charging_rate = 250 // W -/obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L) - if(istype(L, /obj/machinery/modular_computer)) - holder = L - return - ..(L) - /obj/item/weapon/computer_hardware/tesla_link/Destroy() if(holder2 && (holder2.tesla_link == src)) holder2.tesla_link = null - ..() \ No newline at end of file + 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 index 838547d73f..ab60291f55 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -2,7 +2,7 @@ /obj/machinery/lapvend name = "computer vendor" - desc = "A vending machine with microfabricator capable of dispensing various NT-branded computers" + 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 @@ -10,7 +10,7 @@ density = 1 // The actual laptop/tablet - var/obj/machinery/modular_computer/laptop/fabricated_laptop = null + var/obj/item/modular_computer/laptop/fabricated_laptop = null var/obj/item/modular_computer/tablet/fabricated_tablet = null // Utility vars @@ -55,56 +55,56 @@ switch(dev_cpu) if(1) if(fabricate) - fabricated_laptop.cpu.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(fabricated_laptop.cpu) + fabricated_laptop.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(fabricated_laptop) if(2) if(fabricate) - fabricated_laptop.cpu.processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(fabricated_laptop.cpu) + 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.cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module(fabricated_laptop.cpu) + fabricated_laptop.battery_module = new/obj/item/weapon/computer_hardware/battery_module(fabricated_laptop) if(2) // Upgraded(1100C) if(fabricate) - fabricated_laptop.cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/advanced(fabricated_laptop.cpu) + 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.cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(fabricated_laptop.cpu) + 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.cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive(fabricated_laptop.cpu) + fabricated_laptop.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive(fabricated_laptop) if(2) // Upgraded(256GQ) if(fabricate) - fabricated_laptop.cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/advanced(fabricated_laptop.cpu) + 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.cpu.hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(fabricated_laptop.cpu) + 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.cpu.network_card = new/obj/item/weapon/computer_hardware/network_card(fabricated_laptop.cpu) + 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.cpu.network_card = new/obj/item/weapon/computer_hardware/network_card/advanced(fabricated_laptop.cpu) + 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.cpu.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop.cpu) + fabricated_laptop.tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(fabricated_laptop) if(dev_nanoprint) total_price += 99 if(fabricate) - fabricated_laptop.cpu.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(fabricated_laptop.cpu) + fabricated_laptop.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(fabricated_laptop) if(dev_card) total_price += 199 if(fabricate) - fabricated_laptop.cpu.card_slot = new/obj/item/weapon/computer_hardware/card_slot(fabricated_laptop.cpu) + 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. @@ -252,13 +252,19 @@ obj/machinery/lapvend/attackby(obj/item/weapon/W as obj, mob/user as mob) if(process_payment(I,W)) fabricate_and_recalc_price(1) if((devtype == 1) && fabricated_laptop) - fabricated_laptop.cpu.battery_module.charge_to_full() + if(fabricated_laptop.battery_module) + fabricated_laptop.battery_module.charge_to_full() fabricated_laptop.forceMove(src.loc) - fabricated_laptop.close_laptop() + 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) - fabricated_tablet.battery_module.charge_to_full() + 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 diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 739c48e0cc..35df250581 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/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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 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 zcmV;Z3s>}sP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002fNklcSVvGL1dxG-x-vQgaFA7aC5OIN{ptt0NLl1hQNTQfdQ|KND2W`45oTPG}<5;b-<_t eMjb#a02lyf)pSdidKsz!0000L*0GT)McKrO`A+kOrgvg-0Y)*SYD zb9$kwhmP?^k=%e^_LGGe3(Chk)2N_VM!;mjEqd$y*;-Lxu@@G z5^70HFPTyK;6P(Zk!*u0*Mez}ul{%-$MXNr{eur4JTRCX!)~xh++~V{8;=9O?wY_4 zpY7}JPv*WMscmp%gVlqBwy&c3yp3Np=-m{U{jq&GCb0r=E-Ok|Y>gTe~DWM4fh-!KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0004{Nkly7BCe<&09L(2;JY07?&ca`qx!0|tUIS1_%2^R+yj6WM57{%r;h-D z{<)yrvn$of?EnP6%l%N0s$PZ{1OV&Ax)Oj&L}#9vZP%)|vPq?#hzQIKBH|Jkq~9~e zC_MoHxEbBq8HSllm)1Tumlng5aGajMzdk2>cDU+y3wf*qbJWgPE_pN`AX?-g^deR* zs~b%zS;hWLiT8WUm(c=8Z%+V#S@(E|-r?mkmed&Qi;$>bBc=B2CpSKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00032Nkl)ino5$KEsXbvO52(V<55K+`BsG@@`*+ljz{1t%?=d~t8oK3Z0XR^E&)Ze_p5q5f2p|y&i*dhM0RX`L@q)Z48+*syQvDV1 zEaNB?J}a#OroGtnDNB=<>o^MQHP5xbUxXspQ%Lj*IBeHE38*SQFUp2%mckeUQd6uF z0swG2UnonH-h9us!SMq%ZP*ne=d1vw1o-cRN&?zP@gxG$Gg^WGn%{CGzz8q`bPIS7 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/status_icons/batt_100.gif b/icons/NTOS/status_icons/batt_100.gif deleted file mode 100644 index 72f04cff011a353076cd9852efe5c5df001ecd3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?wbhEHb6krfwSjYeZ2M!!y_yJ-l{^#~{4GDI33~)8lGhk)}3H@Z@;V8o`~8mN8UgOeK45?30}8s6s?U^!%(;54gqN#`n&>~jVt=hOql7rmaovElU; Y?bfyvJpCum7}{O%PxVSwVPLQZ08WTN_y7O^ diff --git a/icons/NTOS/status_icons/batt_40.gif b/icons/NTOS/status_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/status_icons/batt_5.gif b/icons/NTOS/status_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/status_icons/batt_60.gif b/icons/NTOS/status_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/status_icons/charging.gif b/icons/NTOS/status_icons/charging.gif deleted file mode 100644 index 0c66c9d17b501a21a27d31d9acfacd5e9a33a65e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmZ?wbhEHb6krfwSjYeZ2M!$g@dLzA{Lk&@8WQa67~pE8XTZz|68g!)X~e+HpaYTz zX<=Z}nA6{RU=~kf^~RN2zWd5LHu}y}lahaFa7e3#yJ%U#&ZCo~n=D)31~W2P0|2j_ BA7B6g diff --git a/icons/NTOS/status_icons/sig_high.gif b/icons/NTOS/status_icons/sig_high.gif deleted file mode 100644 index 2cb9c504115a9cd74d4ad102be521deafc8504f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmZ?wbhEHb6krfwIK%(~Kfw6M4~7E=4uJSzp!lEL&ow02*)hP?NY8+o5h$qmlZ7*d zft5iAqyVIyf!QQt*BxFiv6pFku4cVja$fvMs>4nWrV|UZ4sKd7`_Nefjr>yS=MOn{g^eI6Re91RhJAF RUGp?VSYFK9m(Ijs4FINwE@%J% diff --git a/icons/NTOS/status_icons/sig_none.gif b/icons/NTOS/status_icons/sig_none.gif deleted file mode 100644 index e43f72feda1358d4f98c9c659ca362c7b735dfee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 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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 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 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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�x=gRA&(h?D7^#vJdMWy%F#Db=?ry}2R_0eU|Jco9Qr6~m)LKT_MG|fuv=<37y)*C6u z=J$Ts`oIi_ei`4<(WEaS`80RVjQ1L6ZIdun_haw87QUH;f*+fInBc^G*2%=gc3BMC zC)sC`R|gyyt2h2j&5?Rn&idQ-J8P#eF4(m|pN%|w6tmDx-_V}U{i19E-oOiaBp=$EBJH7CAs!+ z#Z`4{qnxR-J;&(^g-VARZM969ilN?F(&HgY%+tU?nLh0h1Fq6s5q)b`#%dyton^PT zBI2LUj&D$YPrH9NUgM*%&EF@)YNU2axgTr{B64zw2O_HHuJhMv2^|Poy z_J!;=-x_|CbC=8*-BN+I--xkKT4MXX!VwGBUmafA9+|C_)ynDUAG(bkKoTPz8+UWk z0wxuvOt(_@=sr4f;^slHs_}oFikraH79Vnt5U>*X5v|YTG%IJ2BAU9Rr3MZJ7}pME zfg|F;K%e7wr}D|JjFZLXs$E&kmVMy2nTHRuvaL2lbN9`e%B)gsC<<21%*E3~Z~ig( zA%7Dj=Wh@12-o|-VBZQaD+{vUJ_mGfg5Cxo8neP?Mi7wCY$!JN*mo}^qo z_~S>sZ*s&99OPOQr}kQ-6&%@xMmpk$VrrUDRi|eXp^`~jwMvOH;%qY&fS=A z@wETg_tf7a{9$KDUWRV5E?mynIY&n3ef<^iR;+oyzj;^45&(I`YerB@bF-ngt*L<% z%28Jq>pPqJe%KwbX3$2L#_lWZs?6+qJ~a$AXX`1=_S-^(NfZLQsZoUKFKHTN-2BRA z{CnPLyEd-h(9A$xImhOU*<3KO-2&Ik4nDc&I(e~h2Lo}gQ{R$cB))4BVz=M?=dKb6 zew=?Xzdg2bqkNw*ctKeh72~}Sk(U$4qt&qf$EN5x^r)cslf2u26jBzS26NK=ha}7nqo^SB%-j2fJ9}5H@V6mgE(&P;*P2xp%9}KJJ#_9z1rE&8i3ab^hF~Xl}-)>tUr>#syKGqO;Kb?sNomIJ0SXx6QtEr1Tt-^Fv@Hr z)W|MeDt67<@_CxTd@r#n^>l#fL)`1?yTccATi#kGu9!SWS`oZYPugx+g;ftfDz8h2 zOILjXFCC@JH8>qxx#wxi0q?xPvLW`nI8(wz_s~)Pje<&bRLstS3tx+tTIRPrI*Emn z4^;vuGnYu1)ORj{q zF?1zA!5G%qQGAW?)4$-P^z-%YuA(ZG73VCipA`FCP1lED)X$BIRd|q`1G}g_vxH)QxQYkkN(5N}ZHq_ipdvTu9J^{Cvb5~6|FBSwR zT}$}pAS0Bx^i|(@Q2(%b$EWJc(NWkt4nmVpz$G8`j$R+rgLcs!Q{i&Cbfeo@IaAz? zd;QD9RXk+RzSTbTg7~;WWNlou!hId;^_C+%8w6k(2Q#xXP8Gw1tzLdPhkelUxbr#! z-}d(rW!49LHJ}1}6DRFJI^t^eq zlaMZmy1b03?q)IgcN5$7WYKA|=$ii$II5sl?tJOF18~X7sNh)6eAtkuAkA2FUOc89 zDU7yeFZFirF?I)=pP9<=MSQ}g)GFR>@@BJW&&&lj6xL2;H z;R|l&mxq8B&jkkSS3C-+W+Y<;Arj$vtzU#1#N~{NAr|}4_bvCY!13gxHsXLIAZjV& zR=A0Zfak$VzV$nyXNR6)xMx2H*FG)Ll#{-GJ)h;8mA?|y!m2%F=#0Yqfa|kiUQO{; ztu=w-*a)vcV6Zi;&AZs!t+QmUln-1ej)+&SR8$H%ss>Gkb}D}yat8}o($zAO#$N1s zTlxXeOY*7n6#NVY@anH3z%|g(n5jBY@y{VUUTxmn@v|wa+ImL6sxJE=v%!H)$WdLM zzr6sYY#Bqt?;|v}`wz7I?h0*t*3zF8utJj{^a2PL%8_0RvgD z^+BCYY5b1Yx-z=K{?onUr#mDX%3&qcCVj7bG5KZX`|iFD4qyFtQcV)D4U1V911Ie# zsiMaRxU9r?{HiQ)_T+R)@ezH|9Z@M2;ed5m;1)>Eh z9@@|=0jon)=w95zh(i>O;Wv!*INAoEfarFm)ZcIHD?9y;VV?tqj$i`?-a3qpROdEi zTTF8+`eQGgI*n67O;8`-+Z~4NXddCFV+W-N`k9{J96GGRvLdKHDvaSS)yKK`0>9c;?;i2(npELD*@Ff59-h!z zhfsb$ZJ{MF9d6MlE)E1Vr;_56bFkUoLK);J;&8W-`NO1W$=EQByP=ozm#Yc07h#_?dEjlw36D8rPKOm{C_>f$L3b_G!5ARC#gLK;%hj z=C}BBYwiuPEkf6;Dh*-ZsYG82y=khV`|3i$!3Or9tJqu4%0T2Rg5PBf!`))ts87oz z0^;j=mdWsh85(wpU&2}>Mb0I;LqG||{w$8+yz;pCD4Y1a5MT@Pp!A>ovV~zMr?XSo z$|qYHqlNI@7vY)8#bfFJ!Qyz&Qp?Th@qV8UE$L_nwFpV3zX1BY^g}q+!Wh<6=@?et z&H-GEYcc2mh7a#Kcm0HxUcNOes${n19c7fmy>mHc_}GeV73P#Uf~`r{6hv!Q~f*1xYq-zTjTymxc$7551H$n97Td@YD}%r)qm^X40k= zXz;djWNyN)ovHy>syFxg^QTHCYfPf$^$p;-9F#Y+Ll8*iFI7_);~})<-@0;yg5MNv zkOqmeKgjO2H+?5!X$f&0Q7pi}#+`mzdWp@1@w}PSM%l3OIHWu1$1l>4fW$=;6PlyovfwdrO1UX&ljQFqwq&`BOc;;DuLM z#Gc?!Z;e8GJNm6CAo;Oo0PFf7HDT`HX;pBbh8YK7-E>I2kHhKLEMRVN%230*Un>(h zwDhg%$r80`rvjD}p)ed8KtMkwm7_C8tpl1OObbozyd$LY@*eB6nL)Yh50Wn@E-A~9 zym@RheY~kbX+SfExYT;h$^A+a$`DeUQW^@!O+R$9Ve3vAO--slM!5O*`Tb9Wdb;>H zx#YYGjD2%6a5_lhdx_N-Ilq>`?v=#ULC^F58Za_76#E93?3Q;~Ue-6Vg!kT@kM}j% zXTpJi|6FoHKi8Yg{)V!;*CXm$KuFE0cY6f|$0uL-9G|apEP7A$;P}El?Gy>Srg4Y! zw+iAoQC+T?@r-GC&bv3EU(W+qU8#^l?s-p~A6c?HWle%;W9eMDSkb|k8MaD&89}FR zKe89=rumdA$td%GU&(-{HS7@XPE5=12rgcc;6UQ5J?N=fGm$y(k`#T8BzZg@~9XN+cwR=NRg4%E(~ z;o{_gg{cL3*^rlu=$B{H1AbgDSvwA%mTdg*zeN>|VgEfL9hwzra|5;T`Vt0rm$ zylm!vNrCu%b)+Z|T10(#x~*+7Wm1ZNoe&2vt)CO)P8W@;TkwBIeV=O-_$;9?!p78C z)Qht?Z5~1KKQXR4wc~A)R*VLr3UZ_uEsCS$$ELbN1r+809NQsI8r=-#@Uj!}ee=vu zfN;WUVdm|yrSK@1M!H;$Qn@qeyk6BOYxLaj(otr0prqcV5JA0al8mxhB47%rblL!&SHHxDr4Y}a8nz=08s8GMYcAUpTDV{YSvRkC(M4! zRq1{=4pBjCzcut$GE$$;IJSTBv~k1piA`ERjh@qJIZD?l+N zaZlkOeqYh!ElW!ppzQl!psz0iskgp4ky?9eqd!Xko&xZc7Yk0l*;Vq$qdk&vQ98z{ zIX>^&rT&&jcT#H3_81}(tp(OWYTYFy^V|G+q;s&TG54yEZ`l+u2Nky@tr@7wGPl!g zW1EoR@^8YFbpJ}{!ZsL;1~dq3VNAMCBVO$RwRLI}ea;_t(l;@ztD>jR08~cU!0xOU zYK<@w=yLc80RJFSo{3@)rQ5S3!m(A{bc=RR*NRfxYR#V>+ZU7XYuQ&w82K00Aiiwk zD6qVI<8#=3YH!BT`cPPc;8gTZ|K}q|t4oITt%Q3h93zpgAC&bHkaEkYRW{g4)m1=IN$bvD;^?O;V)j8zBV@L zq(*Xo{k-M0I@7c#(^Z6jlhPHlBPhn|U)zh3;Mnr<`P-RxOo5@po}D?Bv>RY5AL|K* zEDWd8XKc=8*BE-f%Lk99IWL;T*GkVf>ryYJZDh>g_T{H?W@+DPeP{k?Cqc&&zv}?V zUj{S#_S#wVW3-fc%Bo4I4>VkP3~6T_0ypw_ZGS zck|;JJ83KiCM}IuIRZX-sh~e~8y_S?tTH-RKJ=&`2bIp4Ih4?~0>3-^<|haQI(rdD zicUSSZg>xyA4&^{`>dOk6{hc7qhkG)SRn8);tn+t=U-=(mc5U^rIzkB zoA*PjI4!SRsrlB*$gg5~@yU|>Mha{b`1bN_2=eOWAhCR*+Np0SPTkg|KU(ZYFz8G^ zeEWI-RsT^zUg4Sc;*2j}%$~xT@cgT0n`ZfOE<)8}wzAJ97QvJM(wqee&9v)8LBZ9~ zsu?q9i&dnvrL$?d5bfiu7X{h<-O;IGnFy}1i}bLE}StY2@#xhX|So8@;mP* z4tC_tq)(Xm#qgHC3_VinEo+PB)o^}YZqg2QdvU|)(uR!xbY59V zMmHN&_3zZ5nMaFfGKb@zwcpwwd5nl{sVG9CUvFAWkJLZc_7s9m5rXoEUjh~>8%u)k zhjsQZ8;VXpkCH7B+CjVuQ?Hjk;y*CRT=*0px~q+EEcz#xINR;)ZU zb3Hl4 z?Fwv>R|{tv)q`#~PCfff*lnD%?rX!V1V~%AgpkZtlMyG=7ant_Z)1(y)~19s6(J-q z)s`D?`p;dcuGH8yKd&Nv5>ZeZEC)6@NgjNfBqovqUcP$Y>RYV-q~=u>BPxvIZ=)VS z>@#GM{l^?i|>UUc*yA{bmZ{)(aO1BB+sYGDi|lEDSf-< z-bkr4IIjjP5@go@@#8Nv1)dT$6OvUOchM)~)m$qbT#~!!eK*KgG_tAL`E4*h?@z11 z@@!0dBfE?lSw89T<-r+wmfDV6($oIp@}K5l_hLvy|5-fUXPOh-!fsGTY*co`q>sQt zraJWz3i)?u^lpVwo$sgV@8Jdx%KB+m#7a=XvYIE9n=45~&Y^Ge+W0stIPEyw+8Z$@ zG~}z}9kqm-n>0g9WziNp4PGe99gn=PIW7wpNS!#{T)8r?qic^J?3IAJARGDqp z6(9mM(@1r+tp5!Efh~{*JuA9l@NftA^7~w=&GmxrbQSZi#z*}=%`o=3=C3p69BUrL z5~tF0?Z_A>0b5Qo2lmCU)MY(uwufa^sMM^?Ixn7^g;^0*N;5S;y^tNpX{zTVX+q>X z%@@x^5=>Mn*@fdGP}z@KB#(xCt@wnU`!4{Z%bkY}|8?`p{O69v$9m^fXN`v56v)I6 zZ#5qwkMy$>3a1p@QCz>JZgDK#*F>j_1qloajeFn!TK+FcXMJp-{3AJ1n~}OKM80+E zRfy6FFLXJ{VaJH4Kdz#uL{Ax)y+W?ma}wR&ANvoSNBW$al`G=Vm81~0Ce_=oSR~dc zL=6i;EdLikl^;q&?y-JM(osYNu4kyuJTj%!OV?1w`kwOSuPd?{_jj%N2#wuf`kNZ; zo>Z$Dt?EKvL>iz@JE;>a2E!in-X!B;G`&Oy2RSyYi5|PO`sK z4rdQF=VF~1;|c#!^@VgzTE?LF>h{_JL!9~Ifb3{nz#ld5060rSHwe>-F?#4S<3x|Z zxqsO(E9vVnOcEqx0V%2l_U1pW*p40=hr73>!fcz_PJfgEBoaH@81jpvDiH)CTo*fVSW+QTfj$RP{;QdH|E<<;3;Wo?*G~%3M*1 zR$0mU=QQ^tmG|M|nK$h^3~obA43H7Y>Bfqfby;$lW~a2bZ3<^YZZe}l_Ey=SO+bi7z`<2vaj z_pU00b8I$zRavzJ%*XGo}i(f{Fl&$p{ zEW3;D^iSc4H(fsWIa@-5dTD0uI)KmZ&}Nl4PtD#eg9aS-aw_{))&O)@tgO|E>3Vb* z))}Bp(WjibLVrZIC01VL`93D6$v<*M8@;?da=UxYeo*;JNF&xz0(k1=Txy#b@RfTZ z>1QOoYeyt}lzFnGmrbGZj03l{2!V8Y?^yxr`2I4xe1vc(bayDLv`EY|d8J#j`YBaZ+X!@2D0oauf1xXK6@TwZ!cN5j zqt-#!!8tq7sp-kqYZa)}z{id82&HwuC;E$@#jaG@3UF2BD0^b1ofbZwgL1s4S*IuT z&?BAg5Jg3~A(A9yMy4zdXk zON7caj)@H^37qt+f?dg0_k}`q>$0<52M*x?5<6w?z^c zp%w#QxZb)*L+2;`9@0Ed1Kb~-g=8lSx>fCWsOl`cbMj&h!h6@$hsslhhsI5@jN)z? z)qP2!b^?w3sMIlj*bl14R*x>&#j#a8Q;3`1I`X-tq*%7W>#t~`u)hh#57A*z zeDiXG%?9OCDf6<6;(w0A_}K4r#CKhAbh z>ApdO)jQ4%Dp@eJz2{ek44%_E?%%i{Lm+gjf>VrT_{_b+Gwc4ld5!bE_;#1@>+bq? zdG}rMZQ9Bwr~mgMi)`MQpRmW9aylC7x97g*Vt?d}Hf(xVtVGDA}+! z5I)5R;bOOUUNAX$1Y3WUoLa9UUe};#SgClVMRG1r=-FO^9ef5ZeK2xH<{orpR-xBm zzKZN>q&^kM{(vXA`W8&q?C?6VTv#jSYL%=})?zp_kjZ8Y=4+GEIc(uPKBVPzydp;D z99A1kA8sNfTr2g@g^ELxJU@&TjM6j&uef;E`jV2;jl-MF1u6E2D7*S?FzWY*bcXDc z>0B22w}Igyb9s4woR$*xgR7V^cV2e)6l-nl_NSvXB4U7*3;X&Se}wVTBgv+6lb4x!!+B9jTeJsHV{qd29>Ma`q;PsnwI?I#-p1 z$a^U@C=Z9Z3l4*!m5whRgK+Nq;}^q*8m`Y{>@Oed#Sbc`Oji2OToubc?^1x7>`=Sl zP8z%{*Onqr?!`nx2fK0c=O;7NyV!hl-7o?9+#oVlM1jY0M%L2j8!DA9u#J5>O(kF$ zs00;IZES$Z?qB5aP+rDbm5b3Nfh|{azVHKYPy?m*)7MN1TJ2f8nyj9S`_eIU)~me1 zHx(PS+!W=9uzPJ<;^^;Br&egjBE%_Al+<(X1E1GD}${8ww z&Ry81*Ne02>tg6w*26DlfvP}u%cL<>7R^8G}|(*`Lr6Av5fW& zfvWm1FrU56+xV|kz#6gY zrX;?bO5Dw8iJdAby0n@xY5Ojt$*n~QXsX}_YKYvNybrayxmk^Zs?`E>RQ_|Ge>36} zG=WEV4_eNQQb#LO;oN*^JPW#zW0ag`$M zOYQO%>3bDdN)Gz<;H;pT%c$QJPg1b|^7SvrJnCreW#`V7lToovg$lVh5T4NHB<>x> z8J57Q8iV<1@15ljWjK@7k)=t%Zpf5{)&J&9E*IIYnB0cNj1qA#!eJb~rV@AOrFk1} zQhm625RWKcr|)+DRwA7&kC__nT# z(^&+i!C*>$GgF$_d@>!(Zqdh}CR$ z*>gTA@-ZGm);BzY8N~|#O~<-hU?Gtt2C|M2SIJpl2HsBkq@i1SX-b?i!62(@76e-H7mxJr)ra<7%-Pxg^aZ{S1mi1d~AUeFK69MT=v;%{d zsFTuDRG^*$9rthib&%`ep)B`CoaC&p{X zLiZZeIcfQxgWmE;l~DP#@Qezh8B5+<*tbOqect)zuAkP9@E;_A$1M9N*Ni}SfrJC( zxZ1j7Cq;66RZj;*Zca|z!qdm|=Bp&wHVaU14t|Azw}5*AbgxG{#s6)~ko5nqGb4=S zBH_z-cguinQI2Q0**5{73LIWrJYigXr+D5T%eh@@^EtoUuFu}EhU=Kj#SRYWj`sa= zvQqfnC8rW4&+y27d(Aw>2J<))!F<7+-aetCKTeL@e#^#PSxqnn<@h5#Ei9|Vsv%eR zt2{`9+H`a7L5R}p{ZS&KYxfL!oqkvUkEZL6OFIAmS6y{2{Z^M|rgoWmisRJMa#2_A z)Uv>VO69;!?k(-%%z@^D%9V*z}!m4erFO@`9p_i3{{f z(KD~9jvc1C!e#^0~F8(wm_!J%|vvHUmp8=dnZeUay-hN;`04$R+;2^*3O zhd6pU4tF2W4ce0sxjXu#FHw~GnMy8+!V?*=d zF*fJl3mblcpLfRu9Uk<-^(X-0c*fDi>k9ETVSz^L*0cSozOxNKFYN598I*}U z+W=X@NEm08M1Vv#zz05q}vh%GJRdUJB{$iFY22)C8&X3AW!@g*}IJ!nT(LRNPU z8EkUh?oig7+*O@+v^?oMAbL>eyfkC3Tj^eL`&5RMZ{I@Ore2Oo0f#SSYl=t^DJ0A| z{=hYYSI!*D9xmt-vNe#GCBELFh0r`HOj#_j^du@b=I`%@iDG|9g_U^(JGZ{8NI#E$`PIJQ7B#W!t2JM}49y0w7F{E7bCIxi8M-dqaNas|=pX5^C@wi~ z+plN~3FCx6cPl7V-KTlt?VV2`!3~p;Cx5$KjvF^wzEHV)UKms%_`@opq@aQ@b&}b3 z;*;$*V%H<0Ft)WhbF22q`AWi1^@D-2k}LGll^C{>hnBsZeQS6Hi~VH9U?{L;(&QO0 z&b^L8)^gm+06wYQ)BspUDk2Qw6-B@E2=|++s#fGS2@ReKy9?ygNa7w#_DLckeSy=Q z{H=HFAOChLc2Ip&hOwBcA=BJjR@23~-WEML@i93wJoLI?^{w*bgI1JdnPMp?TEcZ< zEB$DBpq=PyDk67yo7t zrS#mCdV6XFp=Liz_Ln6Z5~_fgG>fchK%<;c}+~q$0N|+9e_RhWIt`whvjF={%dpQLuxL~u4^t{G=i}e4ZXq=? z%@ENhgl}-+GYFC-{7!hx%<)q1MtzsfJ{kY~jD&E=W|ohf-(525Y}Nn`tnmgb>leow z_y2(f?*IiZXY(0uJ>RiJerLV_VHc*g`m^b?>#n!#+Mfz_XF?MFTS zE3*a$($7JKd45l-yY{%NU3ygD=bT1Xkect^wuvLk?0Id~NBKSAso@Ti5!L8^qCw|; z2Fegs2mF*92gf`MDtiDCTwZe=eZ%<3^bwD<*onq1qvWRexa4SoiB}G)Q8X;$;J90; zF=;IFyUM9It1Dw6!am+qakIG4V9oA~9R(!T3Fn6iiok2fVjp9)iX%dr;Le(5HsX2V za7cw$c*jpwxp}BR$6b(k51nZvN*Mc|ADmb5czL-Q?*j1ObI8ei9cB~R@N96~lfwyuy>gCO(HX_h4|@KlEd*1x_LmL)mmr&2c57*e8mJ2aH_{fC@Lpf zSkR1L4F^?(nQaX$@ZnlbpvR$~PJ=3@Uxi+xDT8Ber}*&E_V~*`pBcXDm><>nzBei| zfbN{mjINHHM6~F8q2Uh#cQwWT!#VxpxBFN0wnM%bTvdn_aRvvBD|bgALyb*G8AsVo zkFkk7T;vqEvz%N4|H`TG^74upO;mSQu#1blc@rW{g+-$(F_(@#{3&EWKNv5_9}lyL z&7N5kXzct{F+OVl@p`*lE|Cgt>Cw9h*b+s{sQ{V0)Jz;ict(dsdwMU&KI*BcM^&QK z;;WxW)5Q*QkO|}Esck~W#&!uU+ffs+uFK{A+n)f*)a`Bk?Z1v}CnY+ue1p_>mnrjv zg}scDpf2tE&p301^eG*)`j*%q*iRXMpxN& zvEBH1Ri(Oq8(VJ)33e6;CX(!@<7C}dnP`F&)39sg2npR1TOAC+TiDfABSIHZ|0U6| zzXkt}Odm1}=R;>FUEy(W-)$uwtPIgL)H{6orS!4quRq}2E*=+`7Vn*O>zj|99ogwu zs9PSe73e?-o4&YB~&Ti8%+`&dT=VzOkY}^L;4i{l?5xgt2#BuM;e|E1uY@< zEd$5kns;2Rc*j69kU2LrH-_{9%z+3 zF3dXIQXs3=r^S~yK=XeeIqCBmE4iE(Dc7a5DIGdRuQsL>_w&2u(&B&=W^g3>Vg|PG zN%RcvZ$bHTLPB_-Z?XU&(ZMRWcQ?+V&bk%G;2NKHy%!=6KzKP*IqX9yceSL_@#|R9 zPjD*e*b_+hqaYtq5$eB&!(?LS_Xy>kK9w_7Gw}3lknG&0u2#CVDm`)L?!<&QBf0)v z6zRbYxvaSEkJx;foXMI0`4{~5dH=Uq^Qqp<=VZt}miyr%yOo)mJ*aEaZ% z*@QD1PYIWhKYSSj4~LpMC{^D3*70j!g+^X=qg(YC z8W68H(gEwFoGhx)&>I7e3~&pw(R=>wIgqagch62k*xLuNUttq-i#9daUD`;Wt?dt` zfQQ(~w$Lh)c9=-Y^LtOB<-Yck1WyZRz524E{YN(57|sbhCUjI~QixEhq&lk=l$qUI zS)?b%&5zxpR^k^``y_oo06iDRxkW07fB^Ki;Y;j(|pgqvMcsiXRCY14^8(;)M`T7|DY4r-!fE6M6X z?oq?T)e-fyAD-2Yn9~&NWm_JpDk5 zduV}nJSA96`{XO=9{(7b3`W$^YuvJ+(~cI4;9kjdXo3k(@6Jk2i>V zIX7ZjVz}~V=e#cAhXhAn*vdJ5x`G|p?)0>~DvRQfdPJ~z;FNg)-Fj-T;W}jWynjeg zviM~fG{Wm`vzc8{H4|>D8@ZDejcFu6`9F3Gg>6YgX2H-+))vC(-Po>G z82(m?39GSGN?_~;{txF6{J1j_1bhDZmEFe!NsSeShK)P^p+`3oBA&sE)){4&{z6Yki4K@`W`Z6GVC3Zd)Xl1_Cx3j_Z;DaW zqSQPlj`&p-bRS#zVSIV#2%2+N&`o7{=iEYZ2~`U#bVgr-p}dgytFNPhSNQC+j^(Td z<^IBS=aLQ8F@_d!KwWXB3~$8Qo4{6D2@C`ntPYT}e`d67?y;Pn^~2sv1s4TdnA*J+ zmKtmtN+XX+oN71$g_K#-ZExjSxs46fuU?qu{Rpm$Mici{0sG;&9&4+jtJMPn(k-#Q zKFQ4)7;-MHa8jcv2@M%HHzN9uSgv034H%7PGmfE3wYO%pMOo{ZmqudpM_fQ2`@7NuE=0r^H@#Wo}>e;}3MEj@R6G z!GsO+(PUCai1~d&lLD2bIoHK0T_nGfLfm5|i+=1s=XbIGNOTsEV&ozn_PvNM7AuO7 zrz;hkd;z&-f5HyNfY=&%HngZ`S<5y>TjY%oAli5Y^qJ|W%2~D@vo|zG7kHZ*HPk~P zQa{-j#q)qzYBwMmo`tLezo$;>r%B;|mpHo{;|uo6#T{2~bwzHpo=2)_x83_?{e!F- z<84Ruh=DJ&!a&JtwtoTPSZH>eI=tGPc;FcEolBW*S07|ZXwZsnFiy}g1WzcScnhXy zwFYk2sm{6Bea1E%=${)jiHRJLLsj3_N7-P9uZVrlH@=c~LyL5Yr%V}YSlWB@ZYbb5Yy33Eem>5+F?9lOGdB)o)ep|J zR~W1P7LqAKSBKXnQ{|sk;6tB?N;r`kKjx6g`$&NKbNn9;WvCWdDE*GeR~8@ z@Lbh&{es!}FL%KWuTXDBzg|07^mVlYCewta|8`XYFf&TH3vnGk7Ltp?+Big7eAmdb zpR{{zgH}~qL&=0RRLMMDU-6op!CQbVeFW*tH7O^zRkzr1(69N>b?T4J;i4}>?SC0Q z#)I+WXtywpg^K56&Cglis*pi*jc-pZ+P(YKvc^)HBp4NJ=LYErQ(KLlNsY zPmBA#2OBWP>5JuBh*PX;vn_B{+I(!dOIG92OVbM2P5^+HAdy^mO3yy z)j6Uk+=cqgQ5GpMVs~3jDnjSRqm)!80o1#5jk?v8dj753QYzT-W?j-@8bR5eol7jC ziAT;qtd09mxn|FN7|tAj44O5WnA;yYGM#E>({%sh;C+odySm3vMBWEhY^oZIX$qOk87xcw+4&lBtuSQUFI10v<}nBDR;PuuQ= z?Fz(hGdLP_Pb>uuz^Gn@UCYK5I3HWo^mU-`Z7!Tw=DZI70t|T+fOg*p;4=V%e-@ba z*y)jr-hTlX>8t8%%@+myGlk+GUFWQhAuRU^kv#w6&9y|Fg}Ir=coBO55)5uOr1=bs?T0Z!~=uqBB+VXW8{q{YZX6chIh~ zkO+cDP^>JG-{|bBa|jDS`(IbM(!vS(l|E?~9%;b^SmZDw%6Q4EeH|doN%`@DJm{U% z`{3X4_!kXB8Jp%me8#@HMrau?UWVNnSC}ZBn1D|8%Zvnd!&NmWl@1GU*1YY4ye3#cukr)xGGUbhRt3Teqbbu-+`{?4=5Fm7R)x>y2!@G zd3;u7+R+)7g%JT#u|=X`&(xF7H-L1eV?PB5g@D&X7)}K$UN>t){^yJ*nUljq1aB3a zvjQgQ$Jz_r-{img1fT3(IJc6raUc#3^|)&AwRx9jAsRewV;%a}`dZ)7j{$3QT|z6` zgzIozg}y|fGXifrs&;8a48GAG37W>aDr&}>F+v_xO~~c%(g{j5bNnW^hB`M`SRm=` zz@lM9FVJkP{_j@xxis#xx)ay`Z4fhbk)bw6hO>}3`6O=n^C~6GcxuFo;o1Cg; z)al`TB-}=_HZ3hD2Mblz3i z!RP_4_PRfd?pH*Avj-*SP)o?R`=^@zmJ%^8Ix1MkC>jvZUG>)^NmCUFO6aYlGG|z2(-?d8NXP=&>(Fs%neAc$nA+U)}{!n{hqE8EDJ1X(RH%yoK+yh|qkR z%q?GJdi}2H!MYeubXR1h@?zoV(N~mD<;{HNy-3q>$PJnrT7Cd->j*Z;Kk?>EC=tl8 zZE$?KZLW`rV2*d6dd>4Q01t=(9YtdWBUBR<4&K*jJ_{*L;USw;L+iq(NH4q?Vn?-& zU0)?)HCZvf8UR!rb4g#vfw8OV0YMy2b|t4H3~;`=1cHzGCo$I*mY+W*M&Q-38C z(QY_T4bl487i*34kWC9~m}=QO24B(|P0UZE$D3l}22b1DPkmU&;4ZPX4V}ZiTJs}F zPo!eon5fEGSd0?X;Qr)MRJP}!gnU5ck|pRM?_@<&%9BYS#@F(fYeWY|dm zs9~?Dc9*B{?wetw%!&^O`E#9CQ&WPHfefDz;8GR|O}oTPhzu~@4wgpdM-NUO zhvj^w$wvDgA#JOq^?F5I=w4`sCIn(ktrk&sYo$)r7Kq|zhemxnR$gUXbzzI8ZspqN z=A_%L<&-A34PKqWx^|&u{9mH#z(aL2H)@PbFU<|F4&3C6^=IH|7mZtCU73-aWNu=VsN-$CNlWre{m&ki9XY&97z=rRDWnaKWFSz&f3MW$@?P=)P`BBoOcp2a!gHHsS6I35rKzt&ARie9PPK>EcrBA=IVvZ zHngcv8jLfZkVX}?B&tBhz5n#zH?`w*@@EWCz-;ECu?1CccQsE6_tcyu}_cfnxq+O|R8r98Beg#hpTW%^E{-jZbF00fGW5||kS}m?FyzjY3FK1XQ z59={{O>Nj}JDTxnaoxaT(l;7@M{5h)uely8dh!2SfG2~;PF$Yde-WIcjZRlwGewPD zu%I`HC-$jn)7rgEsLQHGrRe$d_~Fhqk>rS{aeO~>lWxFi(H*z2j_=q0WAaMhC;0TD z-b@{SAdKiSFs%r~p>;fz9NQ00k&pPQFCjhST3N^uEtd$$G3A&w>#+S|gp;UcJz7?; z&>r5gIGSm2eOE;i9o|`%{&wjXwDwqox}a&{-4J1r(A%bbO(8wDv-?aNEp{5M+?kA# z_ehp3f+fwSgY1I>es~pfwh_8?cUBV9rEjC1a+r)8jf$!67RPY<2BT&yji)<(3cb4y zcG7MQ)vjubmJ~MdKitd~7%KTAW{W_(V%DB&Vvea5`zrw zk7@!~FVOn_o`ZY&QQQYi*SNTDarKEYM(XNI?qojIP{~SuRwATIaBiLdn~!Yv4I)ug zhwz&eh*v)+lFslsUomsfv_i;GH|9m6mt}Y2w;Hl1U@YY2AlUd8jUwiv!a9H29`E)@ zwy+XDD(eH}OsPRqnpknV`!ZH0wtmKwT2(xd8eUSR9%+H;@_(VA(os!@-Jf<{;J zg*m6uD550q3TA_k(_C1+a?}6bHSuKL=Tazym;uf!YP)sEI1 zU+RW;Rj8IA`VEWa_ilbnaCss;7S$sC2Q^gt&6RT7Na??zI}+kv$Nb5``EPkL4euAa zm{@N-zGUz$+Ox0gefX;FDVLU9*S(s=u(Y=4i%vFWI|qoOBW$JO##ghMm?EEM%a}J( zok9IpepB|L&g5mxx{?Nk*RxWOoCG!gHB6vj^!>O-d7|MNAPe<3ucT~5Hq@G3N69d* zT=t25o*GMUD2D~C6RvR^Ri|soqxp?1;t&ONilwurLVAj=1BI7d z=^I=AB97Gcdriqy%1Mmr7mpn#A~XrS(p8gcv1LSk9gub)6H}(3@0X1j2IRHA;d-!B z+U%l6mTY{zx6ZRGMr-S5Gpb-UCWC90DQ4axJ2PxwnvHlWK-jTnzVL8lM;+Vc7+wMz zqbF;we9_Zvn#Hb$^gegT9sU60mEo=l{L#;77HG|p^{AI(enm^7=@dv++0lBj=KR#? zGXSIocP(t5%JcR{f!MH-RPT1^HNG2f^Q<%|8R{m+^=X0$j=X+UL7^lh%Et1j-asQ&Qf zUa!T=7e^RRnJEeQY_wI;!A^OTme4B9tV;8tu=`xvW@CS+%deu?%^BG2kW8>;(vct7$bm=U?&`9V;Xm`3Id=jcM=;tq zL%*HW9?E>2;|~OhDu*f&c5GLlmKA{WaXHJ{fyj}Uv)La$Eu5tF2Z>`V>im|>uk>V1qSsSuiuVMl|B4Wc{ayhd6rVnBl*86eQ z-Z1YaJlEA^#Wal$cj5JD4?9zNe(@{1FrL9$^3~YqyHrWBA(9REQxW%R7YZ#5*3GBgHE2lG|OH_SN& zwUmqrh`^{jzXlLP1FJ`1z=|S;A0IqWP4iEQR~r-vN`|c0yk-|^4Dx5MdHDq&oW6b< zJEL6=Gs@u>I;MtqtbeXHrYZJjrXM`N>%zWHTYn=uYeCQHh;+~Ala8Z&A%045#gz)% zwYmxJ+>>@MbI|&ti{>vE(yaDTik}_RjG8%cCi+2#y=j_h!bHU-_I3mJgn7+tKvMHf zds*99`6D#0FrF~&5m)7*b*VytmI5-V-ldJr`&zVG-@L>n{%E0hg|q%%HSU+7I{IHSk9=5IO%s`!Ks{2 z-8l-UVwTt%h0szRv9NVlr#Pnjs4W%i;hQsIlI8qLlSr|E6Dl;|3_u zR`vuDDRHhUb*~QdBBAzQ9=WHp|=6)XiOKnt@w*R z%EK|RYO22Kt)$!u4qQFEPx69jWg>G7@F%r5w z5Qx6F0Zu2F4GtQjw`fOj{y=$lVDt=i|L|#3_axYDd&->d!^0|yFi8BsH)YsWg1_^=7I0f7Qn+M^5aLl1TJZ|9*t7e#t6Ri&zkJ3 zDgecQst|F%v*0IrUeHpAlASfavmaCC+>+bZm4Ho1tIw~{f#--s4Mc?ENGNLQK&tQMg*$coF^jA3nQ7#;k8+dC zF`K7U{|wXF9lnf`_iZ>1vh17nC8#)`nOvf2kheL$YRz|>QtvB>AD^hi6fb^dXm$nG?EvkijkDA~=! z>t-yrANX_k$+6@16hH>+0M`MP@obRxZo%-bAp`F|E8i0R%=GjA%Ihx>ODYOOVNqc= zgxBG-{MiGQw*5j(i)x6QOs?sBb$Q97nvU1ASDJ^Y6ViPrx%RoH7JfDklRlz+M<%Ro zC&nM$W_rZ1p%5j8@p04X`c?cam+`0mhH{&ga@MRU!{Dg^C$Mf=Ih9pHmPaNRqjPR(j`fNT{t8{#YMh6 z!=%lP=Qv#}`k6&=LHmd)VuUJTpXVi6F2~(t>qYC4IqGR%gO(n(iH(V05bK*qcjTwN zKbFcn?3+_b?O$e(ok{n|odzIF1e`oVeW3wL%`Hdat5@w+(rZs#IczTbq?cp8P0K$x zwQlp}>)VQ=wCWC+W`k7Pwl6b1eg64m<83nT?a*A6+}c!)B8*NRQGhQIn6$K{yMhj* zVlnlv5}C1w*Tt6Ye9<&E+HJrNeE z&QM5|xN+MPiMn(Ss4hOno{apEu>fsEkOK-j!bADOb8J=2V*1ntO>T|wU0XnoHc8t- zu}Yd}8av1xqUIe>vmIW-)9U?ZpAVWFl$dq>)rO_+sG1&5U^Id=ScG-&_WgMp-7PN6 zx|VPJpfN_S6f!oZ$Yic3fah0n`HKVQ;DB@lRy#~9{s zme^+m%EQb6+)Fp)4DEuCLaYJPFXWv9??<6RPK%9)o(=R1FWSqK^$J10-IPouT-J;7eAZ*YGKHd%j*2X&xpTiD?+GrE;y1FQxi1`%r&$_!exYX8cb$a!H9u$N zaNg{3w~iA#caY7qyPnJJvO*%h+z)j5C3&&tet7zai)VgVtgXRsCT3l1dd&EUt$+Wt ztG^G%F_|5haUyto6;4u|fvp*F-L=0TpXL5p2u^|ST1>GL=52~*DY};)V5pJqs&S#& zU%ZRi4wD>x8^Jagsd@JU5vh#OJRZMp7b}oa>#9gV#`o4Lvz)&oo85hj9N^#Q4Wj8~ zsYI`rlDdSD5~cc=NW*E~@;nL4(>9UKlcJlJA1{w{KrJ^+SyKGCtAqSpyLrluWoM(j z^qZ?fYM{_$B&YfvnSWHFB0MpzTTi6gZZ<}76j2J z^!*Q;h_XobsVk1USO}vQqbsT$!JHB-rssN@RgW-2$TiEU!JpKpWG`IqDyWeNn|QdM z8T=^2(z!0!;oaR8dbkkCsCN|(v|?KOJ^Bj(XAoi{ z;3vh%Y;}QudZ9n2Wc;F6uClHk0kniKrF;~dHw*{)dGtBEO~#lU8aeBuzc8}6MrZg{ zB;3jxJX^Yyk-uthf}_K2=Ysw%=8DGR=gfCAc*MF;|Mb@)LqZGZna9+bT*Hnp*H7E> zHc=n&O855Wp>|psMhG@Kbe<(1bq~+IoG@Fhc6&FddV1sN^v06yoY2+)dckTRIc1eO zUfC>dapvZHdZk=(uIsVCzHgIqH)VPITuio*g5R`Si@|>Y)@CO?_Pt|1xLAeSQ{Lk3 zTeaAqVDgBT51mukH5GHyH}^+AE?PeJxr_+dyJuG*YUObB*MD`y?$lPAwvQ(V+>pY1 z*qium+-K70z&`6bvyZ40%Hlm_3juSz+<0m+tJ;57?iM$u4T|&tmvGj@>7=NW*W7ZG zCS&$e?p)x>+lTp^@BNe%aV=e$7KY}6xEM^?aP_68U4h3xhkI_d?T1P{>wM=MRRo~U ztN=B9WXrYPybUV##*+~YRzmEZb1zOX8~oiAZ%d3f@x z4HY@(0bSh8ZuZUAxsdaU0vNY)+ckmFC&9_AKaYfi0Er{fnh)|o*;LacDP2`>7)vkw zEsklzzlbBUyjsQH9qW$6JOj|;nZf44)JccA>np2i`k1B?44Fr=&hbVOahntwH(pNH zT)X2erSsnrT_gS7f<~!NyyVhUS+Lg2Pnqrcr2;3%yuwCeyJVlf(mm_9d(;$S-K%8r z7)yFjoi&pX+!8REw^f^Rk$B=#$IDcF{%KsNmra?$o7a&0G8!w!#r9J=>(3IM8#J23 zJf7YlVRlB`cyekw-D79G@xEszW(>W;3{y4DN4sXC3fD;A{N*bnc0De>DT}udJHswq zT1>%~MHkzeKPaIsAHh=@(^TEH0}kY5j9KMK=pPESDO{z=?zFf@pBv-FDxGf>ik0bbx>^zQK&Qv&sm%^A&*~vRMA)>#uvcfl4AtLqAL$2T%h-9Ai^;4u z>r&Me&H+iN>9GgL-Z5=eXQ!E)`CpX-SACUS;A&&b%yX>JICy+AR zF^VC}KP%%-aVfM4F?=<SfGyblS?A`YKv~8A$D{qVPqMXfP5aRH|C0gDlYQZ*3F>;WpO%D$km$j4(lFdf4EY_2&Q+m1Y@(yPxv z-!9BqA;&Bbu3p_vpg_3UK%-6074>Et`JtM18w$E2d`xy@LaaQ6428>rPJr*x8gtvIaEN#$ zO8N0R#BOY7r<6;(A=hP|5Muv&*w+zU@PR-<8)767kH$lVCH&q& ze|cQ72XxXp8bR$_YKa|OdDJQcdT^&IWuzDDx52loQm(7;aBHxy!P~K^l`Qm~nZ!*dCp5}F|cu#W{5^5TV zBYr>2<&BQ6Pwi@1xl#$(+SU7{ zfV?=Z>y2!odtcm9t7@peO%CE<<_3SH55b{!ot|8jyC$zP&zUQuT^q*ta?F=#xCFja zMCo|Z+Ii~u=7RR!sP(}xvQpv<^)+`mgMzQyVR$+tmD=LZb6k)vt|>e1Z$OMK3Cu|Q zOnhB`xhp4nsxF4a@vm3$`&1PR8dJ63dfL(vbz!L6Ypqs~Z%<*?P$-XTrxxqmK7yj! zG6sa8dFUFBaJ#8)ddkqfhLT=$H!Ni&+~1=UEeQQSWqwyQY2h8PoPLX&4>Bb1B2Ql@ zp1)>fu@=R`JD%>vs?o0SJ}n%*yhzjyhea1E8g8`#9++ftg@5H+0H)Qp{h8979`|h_ zcwPeobeqO*mp7J1d&J8Z2nuB#TNF8k$_UrY+>~4XA)tV23k$S{HKf^mn)(x9dbf}2 zWE`WRzP6_{`a61zo$fIfm#gbJxb&q;ftb4Ej!_;~MPcLk(Dy-?o&=f5Dlx{^qb4r` zLdn9kza{(M$8m3sg(L;vNA2Ac_5Sa@iB1Z7y-a@V?#fHR<{}M`?`~&K*^;lBw$tDP zPqVBlhjhf%MPsKhD)6Cp3OH$pPxK}ih~+2DK2Kc}SU&e25TGgf1tk?A8Ms)!k*uKs?fnSt$BE+ zPv6Aa*Cd=>=TA=cl~1qM)^$(cH!*^# z05|)(@dTSR3b$#=ir~3=hr94`p(CO-dLR2X%GbSf&Tt6vXF)&8&hQIWx#T@+~)okoAxU4&=$my8jKhJ1_gRnS$a1A z@g%O=857WNULjwJe8tq$f9^ibd@5*!@C@>?VE=3Ka=s)5+$cP-;A|F~^wLCvof+*} z?w5?Me(IU>jriz+s;ap-LL2V-QG=Buh&n$71YByDR%`(Ins8Zi2 z57-90h&L7=vy~rUozDp*W{bFUIm;3plCZUOWU}e5C>|?PxYV+&F3Bld+ic2KbT>^C z)p^DUho6$Q1eNpU8EAzEQG>w^2L<^mgK)>v#VhhwN;Nx=@JJ`)AK@U9jc>II+|Oaf zaUPpXc(mkq5HE87BrohGI-C@U=b)Nn6xC-CBDjrvPVeygjn0aS9aafX{-NH#98Qsq zy^R>z=xD%6;rFv^D&ioGjbRq4&g}?h+tE#~a(}l(Ors=7@DjcfHD+I+79>%Vn(7;D z$&OU3&p;nh3!QUm8glU!Z;BVej7OdHD`awAYVn>~pm3kqC()RF)ej%4F$}EAqycY- zo)IthM+|n2Ou%x4t*QR~AvRc)8nZ-_5#XMX$D}>g<_v~Kae4-=z;1SwA&%9)DWd~K z=#%wxa3_4-8XQO)O{S9`!Ip8n*{)Ixp~odV3{ z8#wK01|q)v#$!4ATwEhMYGE44lf7>-H^ep{e{9e^yxWDVn<>#*zhGceI(ED&z(KB= zTh0As+#8U2N_2dF2#1*Y_CUmp2u#LL?{JqvGSpIZys7t?xk>fcsKHgX{Ry)VO3(}W z@F(?OhZ;#Pg=V>vV7k;7*%IPN4Q#=L~AM+i?xYu9xL$oI^o+~z{YQs(po zm38Gh;(#3vN|N_1{3+#q+D~SbeJle}zcJ2}DPQBaRXL^^ry5k1Y1eJtQbT!PD}czT z+0QhEyLNStzkz6_U73%nOJ&=S+0QnhckiKX%sv~NKo|FU znvmmdf0CptlQnHe(x-{J7VA4cx~Ba?a<)ivS<$;(~t0NBo@iGMID#R679 z31v+Y#y4H#8f{@ZYJ6Pm#dmVS?KvqXxi0|s*VgPgl+A394zs4v?cydiNO zLk7jK_K2+;O-E7c?OP>Unph zh9!6av{CBpHltPrH4@fi>9Sz0z&?Ib$+LP#_UD!nif8}A!_;TGx{eDjf72)0yezsu z4OxmBWqZXg)LdRJ9inzXgkc@#6HDf6IObb8bPJ3inXbaQbxY2 zQPB7{)Gl4Gm_ZBu;FYNV<+K7>L*8ETTXKOl3BOlrXDwIV@Wx|$KI$RitHrA$4-khP zYTX^T%B(T^gR9V`Y5{NvMY?Adru2dGjbTO|ohS482;3Y(B1zly`yk(@og2=jg#!;_LdpA9{vpmVwSL zJ=9sSE-Iak;SA_ng=mTfy;ap0@vH2`d6yHPyW6`z3y5Rhx-43nk4s=^#!ia%7pbW2 zydyjVUAwnkt=zuq4;6T4NtZ#obv~eZ`RX~9VM3&gn9I+*s0g~bF4Tsyo@=jpIZByr ziA0@4FZBGu>2aUZwSj)P+-_bLrk2q=NBdKBXy0U5!);Up{98FJ%_Mj1&|Vg-*0gO0 zJ5*6%Q|`0Ffx+xl<||N{&PLw|1W_U_A$AKsHCNU6be&n7;#D2$-K63sEbyY$_3qXy zHq0BAA8z+@W@68zAK*JQ{@|LuikB0a60rl*Q-tJ$c;ep4BT;P+M&6+}5blCX6Jtc25~g~rJKV1{zcEtDh+ zF~(5Wz!G4HFOrmnQGm1eg3{sY>{?OXOz=Mz$Ee*0!6`~f2}&Nq$oEH|-6~r@2PkYj z!x$L|?u+oah-J#nwS(`D_DXXUH#VVYMu}6m2J-)S`tqcj&t+o^%d*33p_ zlgviscGHT;!Tb31*bl$|aYu zL+s`Ec8Omwi-;$0mMAk=#oQlvdnh<8zR_#RpQIFbAyz5SQ){h$|1tVLjSHx``*pgr z-u&}rF55bG7G|lvZ|K=cCF4=t#S->pqQ6O#barnmlD-$;g4IYe}Qu!zhQ_@S>Xnsf`yQLR0tZtmK?H+=| zrlcoJAL-whm;Uf}@yUe%9Co!FqF1NSZ^F;yxdvGmJqauu%ZI-Am&F@*AfZb?$<8z` z;~PDN6(x1E_vfMGnP)_vUSQ*AXeseVAEgTmsevPjja}HhBJe#vB%xWZ;im~AjPWsI zy|ol$M2CVm9C_hM0nXk&X3WhX^Bnd15UE-P2&z`sB?*pRqJXdaHG)PR#Z~>ZF!K?O z6JpmVGn6d2wABBtqJ!fmc$%voBHYz9W#Y&<#{z%Fv%6$sm`rp zYFzxp@ojeCpDv_q?++>Pafv&ird*}d)Q^#!ITkwkH1E%`zKJKR{K&_7M?Tq!i_UFH zXV%2^7D)zueRs}V9Q)X;y)#L{f_Cj#5gdOwczNF~pB32-nUX*DTt1P*or5Nub@E-E zr_jGeQsYUePC8jL6VVvVThhzV3HY=?e4S|EQ~QdavZPt=WHOjIZo5vI)Z>`rnpyl) zA1cR0hGlXg2MX#xBc8?@WUdwajt==~i69Z3@kC6Kv}K&0cS*?cw)&QM{m6SSSz6mF zWo?F;b+9Lj7BC%W7ZErnUx1ESdnhN4;wbpV_xdrTWVXu|A)KJ&a710^0!6ML5~dn7 zpSv}6H$ne^E@mr&>>Ll~H~)q;aVUI!R30A2gRry|#$?Ps!62W*6Z$@7-l&Dl>*zsO z1uG}t=GVB!o9i!o6eD|J%mNq4$6_|Gymq+j$>I=xn?|1Dp{ zn1auotdA0n>&$FjU`iB-gWfI9%{>w_(a>fwn*W=fn$p-L{};~-(9!TE{-d`^)-xXs zq0}fa{bJ*_#gC@XpnjjO>c93e`f>N_^`;-g=}5=VT&Q2~F;ozBYyD;Jwx{;W%Qxup#`rDRVCW~k z&N|-6*lt?xy5UogS1#mVGUQ9*6b2ygc~j#r`ZVEP3U?jQGKTu`CNqwVD{YR^VE3@{ z`ycwYM?vMc{Ookw4R8-~akFAemd=h0R*mH1+l} zaWnGXlML_{rmn4GAr`LkIBfmwI%U4UHUyo1EY5wk$1>kX7jXq~ z_h!p#gAuh0O6aD6pXoW88{SQzJ-@E#JL%(Q0>sJGMj0KT;*yp@ypz>c9!LpUB)|>np%J-lU60V16GCfaWs2DgTTQV+`1;#A>BNEbvfkCa<7-7 z`kTHx=l!&_Iuz72?}-|z22rfesfr$_iH+Gy-eD!H9Oaar7??kynvIrI?-0P%mg;gA z85AWUIpAQU|FX(dMcTfw!LUC2?@*BGFt&}S{|Y?MFaB5=R>@l(@FY$KjJ;qyowpQw zoBi-xIstL{?LeK@Z)XkLxvzYDe&)+NK;3m*4;6}{T8(1eKTcO2_G*vxO{qbg$oi6+ zkUPArGzncXpw8y2#l!B1b^mEh;0{Hv?b-$;SKtZ|wbZ?rF9R&>t+~EwvydrolD}A+ z`ZaAA^$@~LN+{Wzs6Lk~OkpCpK?j%;pN}Bhm%gA{T0>-U9ZF_CE>&J_Lgf9VM+92i zD>%qdbX~;F2*@)lga^D07J`M&Ssh({vLf?PUe5b2EI8IEYwt+b%B@pD<3UTa$VcUD z`n#%O$?Tk{ac%ahHng@LkImb-$vl67f?B1F3}ap8vn^uJtnjzgH<_}qa4Lw`oPy+s zn^R<0H-nyo7RJ8(XI(_+rOeN!^;{rjU&H|gPL_kt+m|phcRXIx3ozIP&*|AO=r^F9li6DHkpi557VNgk!Ka(PkIvR14v8R^W07s3 zQlE1rs}k>RS|K#T!HEG&vZ7w?2Ylkh$DQC8w|zL*N3{IfsqvzuE>bpg(J$(ZjcM(280c3U=eq#*3fxLGGC5=9MOF- zXy^rZYCho?O;lva@4c>iZ#0CuOSRCAR#@Y-rTFd^x{G?SfzE%Fx$ZRnCe`(H{U^F3 zsC4+C>mYQ|__$AabbS5J_Y3l9CS2`0OJPj;sjO(`!H$fd055=y8{q_|t0+UD z2IQg8i%ytUINhdy07Ba~j{q0`%2H{(dXHEr2-}5= zg(1yN{3lw!*Zkc=J4oc2 zm4J)w2X!nlJ~@2wQ{oQ{r}ep2kyF*xPae~hpBwb4s(ZXYo)Qg=3vCsU{Q|kbI;Y}0 zrzQQfpheP!824DWsPZ7!{Gkv9xe`ndqc-kEWOsJGK4J5zOn%_r15=V;XHIS)6)Ry` zlMbBBEtSiS0eXQN`UZ|hPD-|loprOfCH6;@b}Asj9k3X};vcKmBlJCel;1edeBbZ7 zx0oN*{l?_J%+s09qP0m0Re0{X1bC_TyT^VBa9zgYOa?{?s2MIxlz!Ns1U#6mPKBbY z`^<}C7H{n=zlMYZB|%p@V2)rhp`NXD2RGHl(2^D@U1C{i6}MtbKc50X$l@-n=J`ku3RO9?tuCT8 zBTQ>{`et4pjt9wuuK$cgI}%-EigX}9t$V_NvgxfwdyTks21%$+D_3)ti{ifG`UQ!c zSho_`C1VBfx!k{;5&Wm)w)0TwG`L#6qz18cHJz6;uW*rSl0#1gykrj&Tlg^9Iz9Po$ZkiRUus@r zKdXJveYtsFyGmfd)&y7E=QDL4&H|GuN>9NoO7DjQCAI6b#Rz9YV@V-rS zSZ+*1ciiFdCUorOse_L|`7ya=KRYPYmVc4@YSl-yZpM7s;RhmwS z@2~0HRv($Qj_`O|m^qI<V_6|Dy!qB@|1JeP8Kj(UFP++{FrFjbo8rk>%L zwxacNh5rw$xcAEOAphcKW70encdpI-V?q~Ja)-h8qCrq*R7(GWrqZFEDZM%>-_BQ8 zYob2vt-g0@tqup-uCSINu(F5D7F-+e4%MjGWJtT*T z(vdv5FeTBRbP~Kp>n=99MjilKDBjn3s0}V(_a3^&Nk3Uuls?DJtG0R*&I^|=N&wQA zhKA^Ba`m1)ZO&5EC@}6IMa|nRLYuH@P0Bwez}uqMDInBYDg|Xd(Ig9Rr9;d7XwEf# z=h0`Q!nt{sBeck^i2rQW%RK4vMmzlgV$mv%FKY-|F%ml74jH4cFO{?>8fz&l#mIfi zd8s*AX6VxVr`DOsXl+NQC1Yo3m{%LdRJA5XBzj^Uhd4&}X*6wbuvwc$m)0FtpMKY+ z)1-;HqoX~BP?&UhGZ3XEL83~Y)%H|)Qgpb%hrSdWgHrpxPTH8PZ=F2wefKkQAOo6w z-!q?|LQLk~@fH7yj@ONr{JP!7*B>$2iwGDq`|iaZ@nFs`R|MD}8LyopwqqV~YOSjS z?a|F&c0DDGLLFQj-zrh`C<^=Xf;6qq#F=;UV)i=-Yu9v{Lm!xR2K~@RhUIkbC#n*` zqP@@G;=b>LK7ynecq5ro(zT({g90@Wc?oK-jE?VBUu)@CA6Z#DNT;6Z;|BgRm-a7B8LO;w?+;;hO%|Z1%C3i{2UmAoDDJ&ewog24puFwd5XRF_)VJ9Q1tl*O z+SxaL5lC$#^=~$>PJh^#NY~F;ZwW}X3Th6>wLv5`=urIIqNN=wV?*}KB%KlYa7%Dk zyvf@(VMSd6*M{@e?*zSR0EKk7BLo45UU#%VK9Z%cEAqlbi`}w(i^NGXx!R$e!ZysFZKxll8QN zv+ zn>~Ze@*nQC3BEplvpf*9U#!uJ+P2{aB<%s{Qz!iMD>%fnYlG60T$Du9q$X_Rd@DbAXBh>JhUnHut4?n{vf<&!{r)rM;bIvGH z{Iwh*+ecG(E4(iK{;cnzrgVq=v-vk2oxPj#L~EHt^hr0pHm>YpDI|IO;I68iAW+3E z?i4$3-MTpHcqlI4q?r3WR!eZ|6IhHA?pO8FNsZk{nCs?fb;EtXzp>rRZz820mvtGG zW4^84AkDfs4>r}<1Ti9$m7Rt{?=9Tk{%Iq7AYyQtIR`cOUM4x@tg(-D+|OEDpS)pu zZ|Vwb0DtCaqm_!^E!?S!?uozq0wH=xEx>+Smjn;F9>R`PU!oEW$sEL)gT zSYh0xlB!>A)vNM7hqU?4Q8+tqQSSd|d<a}f##s&JK*b6Gc54_?xJ%gP7gXJRrN7B<>aWJQ5&qMvnRTMv&1 z<{S<0rdB5dbQR(v7$TuO{$F~J3pc?xQyqR1W~MRh!d$T!84y-$oQ;z9(P>E_N+scSG|2lMee-XwZQyg*T?RlQ%Z)NWTmyFx`D*83NEdCf7M&G=454EO$+NT2-?U*-vax!?= za_fcv^mBq<>622)OeFSC#iiS^{@q`8dr!a)J7{kc|8a2awfNc8?HIp@;mO@-%xoPP zm^%CDR@um|7rRF9U`AZ0xfKK+*cTqGDN5N8Uw{bD>&<$cvp~1xqhNk91-k%`En++lj?R zFQ_K)zGRPy6Pfdrv@zH|YHs09I8Q%yUy4~%f#9DzWv`W@gI)byeP1Ja#MCj^o?Nf{ zC2MMJN&RoqGKi%6RRPcUrpFQ@>#Ok+h+MZm=<-3qhs}Q4<-x5`j}9QPE|wHmnYzI{ zTe-?OFW=RqJ=vwz_a8|k9focSNtfTKV!S=1``+xhDbg}B%hz&le<`*pZ2 zxvButGSM$lrvHkyg^UG{J{480W|%D}<&;mNrv`C?c?vcaUdm;v@%3Nl^&zQm)*$@w zuI=6pUSqI^*#0q?4CaS~^HZ$Mw=G33;~(7&9QcfubP57fpl&Zk=%= zSk&=$S4R|kz*E?E4GxClu(D)(AYDja%1=__VE)@Hq0KMaxJ5Saz{MnmhxqABZ?%}O z)_Glw8lKa*>;Sqf){=>dSu{D3ars}`KKxAVWnOE3Z#nBB_SIrqH{vqng(HYn6M``c zu!s?-4|p9m$+9|;q#pM+O-}WtQazN}k;NhJSBLBh_v ztd;Ns?dP3UngVjqW$(lx&eW|JQni$Zgi0RK5p5T5pbcT_7v!b3()ToM;roX34XLxCy zzTsu-I{M|bf#z`3x=OEQv>L%w6WfJNvrw(x{4Plx!fI%p?W<^`9i>K&NO9DtP`%^! z^vC9>snChOPwSXhaP5&{{)O#N^fVm9*eB$Do;P~Gmp8P_L3GBnZpBgaL7fpld_m*9 zJ0PL>W$KF7Hz5~&JTUGC37LjMKlqc^+@W7G=b$hXo+^RxnVI9*<{7IJYr9bPTeD*f zn`b!IxNkLNIht6U>_c{R{ht@WVpJ|#c__yaGgt6v<$gad0=;L?hp-;RtVSqc;V&Pi z%@eWu>U{#ATHPu5UwgUB{B#|ymqBQ1SWKWrfmXYM{Bm)hM78yu1F<~~X9>$kCe(k% zGaW$h{x)K`E0IEkva7>k^?oV9ZE#p5CPH9hW{-!>J&Cf%WnfbZ&vX#5N^NIC z#$$}@e8t|u)2JlH_e1Vm=Y-rLZ5#GP!*6E zf-o7s!B9~uEHu44Z;611PsLsoJCQ+rBZBEZF>DJJyn0?#*jk6#n&HXy85w1|$KDg= z@pd#Ai<2N;ls=j<*EbXL2NH`63UggpQ>3=i|JNTWR{2#Zv^bVAPDODR8SSdkjanct zU_d9ZV}sfwvODgxeqHG;jW_$X-V7TPbNFm)r)ugXTo6MH z`w$)GCBj$ABT@ zT0!+%AeDfq8=^_;2(Q>1#E-P@!42+vxp`;=V_&(t$;(Lx>m4weZSrjr2FBS@JB@*EsHO&q8cmhW z8%l=PJGA7()vV2pXbu*|Ivd+tx9|62^K2q+%ZR=8a)TTlx5M%djT-;esK9^Pddy5! zR3qr#f-TFsGAjQnRH>$^sEK4=0Y~sZT4*(u+OU1Y=&y0db~|pPv^RFG65x*5!tLc4 zH`7)B6^s^D=1VJ{=irykBCKK)8To{B9-{XnxD|xukwPGp%8xWCgJT1?EVA0yB~k|AUH<}7vt!LrY#_B5?pmVYt0KJ}>vXU-=OUCJwK8V7n*L$0 zpP1lZ{9es@w6q}H3r0(s$a6Fa^FMrYJ$%+i^@PmdZvr{%r=20v_(|wry`dkC$q!$| z+*zF57d3jj9dAIW*WXS2yZf-MG5UV<%26ctSNu>(dVk>e@RA|h_BiGh86-U=C#5Vd zbv5x?`EVUIeXB}Ym=K%4OzJ)X7&(_diHtL7xTF_nwm}$;NY_K$(^nuYG-SB#g~2?F zX}K4=m>Y8sVvCJACcbgh+2(j`V}GE)o^?~y81_V=J+O-9G;anQ#?8tKjX3BzHvnNo zdgj#py_rj@50(*6`Hk>Q*s|mg-B<+rk4OPVLF|n=+g`&Cd;V}}Zmj{{AsWC(tgPCE zbv*Z5lHAdbtBovdIjNAEq9vP$F#RxPK1bYt&t$e8M}^w^D2u&0`$4IjmlF_QlHLYg zLle#%FHL7GnKxo}GOp*3HtL@L5{yjd-C5#g+(ydL{go{^mg6^YM9snht9y}lj)c%{ zb$cFh%4<)StV)-_3$Op3`Yj+X38V&WwVtuu>J>9IqzE&ZNJ$MhtpcW<$%y%Zk4VDS+_z?@4f=VLU!9DLN_6E05)Bx-n!{A ztrfGm-+IMdZP&auN85DfPwqAZu$3&WhfEPpcnJRq8B{maB`HNsMnb&J<*s&2Xyf3} zt6lBH2o)=q0wJULG{@_^azFbSIymIvRnjkU^2OM9KKjqI4;w$XvnPGx;6cwTkD!P0 z^9^U^&b52A%fBIA&9{}`{h?nfBLCH3d0r;=ji-&oqaQ%kpdMuP>F{(8FB7JB!{@U6U8SA8p2@1H`5gHB1_r(*=ZcNx00EM?&pa=_b1)mcU3&dL$ljwbQP-H9u$cxaxeU;4P8alY0j z@im7hxBE-|`1(P}l{I2S;Vl2>37d<>g|!IQ&L2z0qC(gtZ|$e`1t&3{|4I%NeqW7h z-WZTqq@hyVl)miZA5c6V+nlZ;M7AHha6?%gHy4%70>CD?#j*pniB^3*bQhJ}(zb+p zMfrkt#OUN03F%}*VYDz~dZ7x`!TufH`9cEJ0~Wi{`|(hDVo`z05o086eZJ*w;on5 zX>gS_0$7m`u&Iy#Z*4l<+qNy;q80gtV(t>H$!#$k-=Vpp(@muzcP|penh~zXhCK3x zU7?w{-Sc4koO$UBa?*790(z=wJ0MMa)=hfeBF4t;l1*0nux>2UH)SI*lIxUvsBGq= z_~NfddgeZcaqr9PS{`~mew}La!!)VdQ^85=^vo1D)cbkW;#qz?Zy{hhQZUJNlb>dE zUk-^ER%hs3DDE)TRnh2#?mmcTq<^T#)QyFc!(mrRH;aQK(m4g(R1)m9LVFY!C#4WR zss0K6>GqOK{zqF=1#(kh-H?5|y}u7L0b~O`mK#Lnbn8w)xer_pAkrp@*~>T)cpXRc zaOLds_Ubt0g0-J^4NQM_X=w^HiCAY(s3_eVdCNI zVG->g*=U-FUiqD6(=5|vU5sZoODnz$8{$uOaI2j#^48wl3>w5TmU^nS)PhQ_PB*8* zwF5`6ypl(9gA#h@zngw}$seFe1B!gSZLE_~mLj_bF|-xk&ujh(0UsqQapaIWAJ6(7 z)M|>1u)^LQE2T2*%l=(zCG=0uGk<{afAsx=k9qMeTh zw=jYhpbcMyKob#ua)F`&!%Ml>*A62OGg~sW zl(L8RVDXoH6pxcK@aEem#5c5pqlsSxlAN>bLN4{8W>kONpIwBzi&d=j-nD*QOv^EX zYLy>`G5H!o@Ql5ugpSCy)R*1s}I1YUFfjX{BbSRqpAma&rLL&jeZ$<{o6 zPguKDA}XcX;}X@G?+Le!7VU{s{z5eG=m3ldsXe;3zEv-YT7Z7Ev0t7X!DB}++s|>I zRt#syJa0AaGa1pu#e|C*_ar&?T-|7^a=nUZ%Tp4Qm{P1+8AGq&)OQ2cJyKa(YOENq_P|71JfRf;5^gBG_SiJTCm82wW+b1Ko z53Lq_+zf)OTnFcLVXLGegAeSvF#i8GcjO(H`m-FzFl$#thh6jAW{y)=gTDIA6`tK_ z^qn_e?U~xHBdHb=5?JlNZt)&x@cIe;%cxbiy5=wN2NpA5^X1;o zOe$03y73$p^hxq_4^wkNsluhU{ta$>fHEr7K*%lqCjvtD9j~v=$QbkjB=_XpmGSY3wnThq`God0w~)hlSz8AnQbiRKK4z1rPsa`xr_B741gGlA zh%;C%=ho4Ix}PFU!XgglNs1S06Z&i(+L+^wA@-tIbc3`!X+p(zI_3=$P=LmMSTf{dH8)qIhxe zr@fuGN`!Q6*TG!RsL8k;!U=Kgsr4i*6S*OcjHI;$AI`Jtv+sipNc`s4;q#*_j@Jwq zDjGh19jJjAjdS^q9F!mHebaZu+E0y1_UR=i+F>STcqwF`ROP!1qqC4`R<$kf{S6 zAs%vs3r3UrjF#Z~XMB8&ryEhEW4ik?09L1skFy=b`-mJ0C#A>hj=}=x2O@m4lwcb& zmEqG@j$doP93P91{u-UuK4ent;Dp0ULN8F3Db4e{wBBsm=TETpOA*0{%K+@q*KSK6 z(FE&BWno=`BFv^gf)42|ZL{>UGcQ@oV~kB&Gdwg&Y0eyFBYH1$!Z0o|r(Pf|Q= zf=uR^v{`x6sus27?WG+f4=~M<09z6Dm*@IZ*t)PaQ#ZhrZ9(wO{ z-ETXk2KcH%Yo$oI?#!rD3+-Ct{j$5h-8A8?S~_B9A?Tvk4Fh3tSWh3`5R>9-ME!t| z>pG7u*|Ie933%!&6An--LMM-7APvQYkjNmZrhTK+55_luTVq}tjhLvMaLBLxWcn_n zBIqpVO_iCY7+2fkr?iNGgaVWV*e6{2!&{XB*a8?lT;JkX;M_sOAl_#1XFiKGg~;!t z#fQAkzeB0#Z7{pAt|TO1j#DmOt&HoBWeMOuHGK??xa+JMLh+1g1+CqEugy+mDdKJ_ z0sI0a%SCCW!pDmei~zDTfEvz!!fQ?h@riGmLq56yg;-v!(P>KT%?Jy}VL_&0F{`vq zeB7n~FNjGPM*m|wHOxVVuD_udh^?auOSlsvVp_Ib=Hn965qJ?=Nl7ug)Af3tv{pXH zM(apc!u0w~K^>ZQ8EP%L6Gj>2XNuXSK2oqn^A(4pLg=Z|jjZb{rFq*%d$EgJf85?b ztF?K1X_lag_b#Y;t{*a}hd2fWcd+w@SLK!*Eh<-sj|2=a zwCKze^x}}1$t`@MjDTerVNyRZk^UiCbX^bfE~63|bic$kh%uP2%<285+G9I-IQ8rZ z4fT7Df8Had$2ir6KjIYI3jQ759?DR7m_(}iM~20? zs|U~B3cu_V=VYc4HlH312;EP<2x_~qt2xisnst=xglTXVWb>0tT~u}OB0j8AC(HlX z&Vhn(o*Z2&%(-Lspm!2H)_9-T$#EO>$|I(z`9^!{6UE*4>E-s29C&RJJeTTUyS(Ne zP{Kqd3OzXH;7*N_UnQ((|*OJQp4R#4%tCd@mKSxeE#hy7tJp51}sep4Vy!^r}_)A1F zB3+omhID@J7z@8AbuWf=Drcaopk@>O7Fts}T=3zQ+!DHB#adJ|d=wCG)iQ+ELY{2@ z=OrsX2g_EXb114<`%m#?fC1$3aR@ocgmHoryRk$!eQ^|>)_(&52S}9WDj$S2to>L*#U|l=Q7SK74tVB& z(*&r#jE-Lab9W5j*(lIbHpj*{sCN1U72qNsZ>CLdseWVLJrmtrCP?15jr`j`owp_o z_^fsE@MQ?+YIN#K(cmAxN_lwTR+5s7nnpO@&i+3W?mOJVIl>`ZDd- zda7@>ENuv)Z_y!m(0XTOcTQBHXPY_HOdP~Vq zI2kut-tL#$sjR0EpK0*?n@ugezN!9>UYs_%jZ`*~Q?pBaLQ&pcelBo7M9ci;OsnXS z>t1MJ=LNWb$C)M4P;i=xE6`_uO*&Il!Af*dqq*t7wcmX=PQaby^k(cqI7EUtRc^j8f$)j=NjXK3o6z|jVC|me^+Y5GONur2 z{uvrC`Mfy4$y^aWSUi%sOzBs**Sfr+Bc*gb?of?C*NK9Qy^o@$;{YX&L@-Q?SGxdp z=y0A;R42eU+hG zswSEpT_(uYo>r6+x3!86Wg2TRheEOquJ)FVJDZ2iHtGbq3;76Peq-;jsJK@`nu36< zXB#vS!vS?)2jH;*RZ=aReH3sn`Z?>V55#OvU=iH5ab3d3!z3k-HJc?UI4Nq+3c__V z6z224KJ{s?0_uZWajOtHTN!bK&163>TtZbe^zLzKm5*0P zAq)M8Vua>(^1{tW06O@;(r?%*L#@j1g};()Arx#sL_XIyZ1%CHJz^^>9CAE?M6mc* zrikxwh?E)7EQ&*qy0K!KGlcyd=Xw3sYmdX`Nu^pV zZt@a8l0~`PqjVdbZ?(0wn5IJkt^q4c?OS}nfr{FC3Hz#Ug^K{ z0(&Nj%NX$L%z>!3jYkbFoG60`icH`8~YU zZ(3GP)l4=*dHj|sHWN^rM;R`IWNpU zv4-hw0NQdVLMOcC6|Tj7AW4eX{R-YYc2J@PE2ytr(-kIUeO>BC4Ox%@n+kP9 zN+nlIMtozbO{nldUFQvuc%EGrRE+^TKzc|H{HE=3X=8+o{XTpp{3i7J<8$+Iw}dCu3Nvu<*xPoZT4A zAGLn&aDac4W}5$Lv|&07N5AfWwx*Z3edz;ngsz$0LMA?nJN!3-!_Ed0VAtcK*?DQ| zK4VPGKhHBFt~F)6tct;bO zptL)ozWY)x*d+C&%Wjd)&Cjy#SI_MAHuc7w_4}Bqy(?4lIZ^8c$vDUu%!j1+y81i6 zxLc%U%NW9R-kA@`gx8~WyiEaZXw+j26ozhyJXQ*Do3}lmq^XEHlt*yb6VC0q%G^qX zUoGIt?v*<}*?nAtImupq-GycN-K?1wu*OF4(koMBGtQ> zZ3d;SMkbzFwpaCBds9B>b1Xvf?x<34JW4uc=B9PtQSi!nJ+rrz2gMxBg{sY zp*yBGgXk0`J+KHI`rvmeFS-2}d4%~t|Tj;PvIfL%P0_VN{wWf`GVSivs zl^IMF z`oY;7A6oOe6+IQ6HP6%2z8NVjru|YswEau<0_ikJ&{kI)t$-=2aP@8*rk*Y5bxmDh zkG`?hn=&+=Jbal+L4pUAtF;=}a(&U)jT7PwCjVph#(`Mex#MXHEW?f* z(ATo15`Bw6{1jGxGvPv+55fYlXT~V>p6i$p{Lc%ZmCtmMW(N^5c7G;0BDm38T|q%1?KiS^7?1B-z=?X*cJv`%7eA?DHVpb)`s_|8w&@t zi|Y&?^uiV8(kLgI>l_k@nIV#Bad_wDIG+wr-iDA6gJuVKkL0h^)0u4aI@(Ne7aUR0 z%QmbSltseYRsN_LPOzUqPMmi2OQN?;*WB-x6)K#3jb>l#OBxTZ*31}{62ll&BPg>#EZC@)SDsIn6xL&4_jmVJ92}=>5buEuXvi)?9Ad$m=zdw&#YS4agS?J)Sjwyj?FHhUPuRcs}o8 z=LXs=?-yJ>o$olKkE`5-YbQZ`lWr73kcJ>)Z&$c+ZF0EKW z09&cGyWyn6&gV>)7OvHCW!5;Ezsv<6S6^n$Q~dalC6)cNm)sbQvEBfnm7a2Q++QSZ zwEM;#Zu;|t?>@Z@jlG}xgc{jRZl-no=td=$A~_^sOcvAf%%U_bwAVTb4GV@56W^ki zk#%6vIxp;!7}YQ~Phk?UoPv(Yqx=U?E{PYo9xWD+ALk%Tgc@S&HrEy_XamZdpJmpM zMX(2x3OQ#JB#P7FviUQU)92bAiL;&*4*>bVI=~-u9IM))L;-Av5(z%JC?&tQhX5ym z?L0+FM+6RI6g0>53c{z>T~mn?kexK(H~!cCbZ6{+^~bmxF!8WO`>>Xk|AUJAguj0~ zv4iboJrPA8Hb0)&ti4Kni92>lOE=PQ%!VDL5^46E!K=OuP~;4!_V2P_)Ku0t_|>bh zkenIMZVCCi{X2)*8V5syy3Yt?MT0kbO{t$N)yN+lWd{^J-MUn#WMC}s{Eaq=MeowlII*<(sZpQjN=^;T z|DoFKNv+h8naJqSeLGe3`hsWD*PM4{jbNSszcwkcJDh__{D5PDMPAa^kOd9# za1&=BuI&c|1(1gA!T8I`5mH``e9O1LCsj>*8T_f?9QpK@K2+D)h}rbEM};+m>Z&Gb z@Q&a!@i7@XO*T<$tMP1i#{*0!DRFT1Cb~p_0eAjo_}4OhAM-q!{aY0=Ht>Xzc0&k$GI)l|1ZefwL!mW` zkfnPhSuARSB5MT6_K7kSh4bZ>i~u8a)W5kDiyV0P<4`%Ens@U5N`iv`-OVmecE;fA zc@@Jb9Z}63=>HS$tP0f8Hs4Wzrv$fvT^Q51fUzwK=OlKc?P2p6UPp|9@An@_KdP)j^cgD>|sjLX8|>73rWPhmlxlREC@l zvsbB{Ew7qGPDO}eSmwMXY|QB;IgDmy&U2a>#%#Yw@6YS=`TkrkUAkQQql?QtJfDyI z?S8vmZ!1SuwSPX%s4d2n7Y9ljXKOYO-~K44s02Xp`Uhj1u>xoaOYfhr zQNx3OWQOvdcoc8@Ru-XxHu`qOS+3`v)AWAq)*#j|sgvX^;m0HsyJ7QwRCnWT+{5*v`6ptn5KVe~(e1OV)T>kcJK=U!7MH=2tr_D z+s(A{)gF=OfOq`1zQ9!1ZJQlSw=_uzU>k)CYWqBSj85ZwbHsarn|0T3w&c1#7?@AjsT?q0(6fFHsvTCq*Lmv;o3U9||f( zF3!L%ub+E=Na6hk$;a(m#A5x_U~d5I5}OCaBH${^>@qfh~jPaY0=_Ay;YbvY*Cw=>uk{&ftwTQ z&wB+^YhSgQV>4N`oIVout6?p+)UB5T*#_ zogiWIJ2r9|$E=Ja2PA6F?W4tv>?|jI9f1P!+dW14TAClm4Ghn_+8t=ulB@4u#^E*@3%O^IN5IJ-V5ZY8}z~0Iz0PvlB5`-;sSPYW|et zjfJlc=J}5d(%EIk!P_O5!!#`hx&#Y9*oU(cuxh~4u@}DN^OgL7d#a3Alnj=$A8j)| zIEpcO9#c!iQES^2zd7JiDk|+;f`widePCC=xEddQ|K16pqzx0E$rYmLUL6Z(nv)=y#u9o zV0`XU7fKCxGV&mMnPgE>R89?rxmR`;&I+VKX&BbaH9uBu3u*4 zIDL(DbDMC;{s(71a=$rXVp~2(w2XgUxc0q8DX{lejGInFg;pKsMU}bY-X|8tgB~(S zGqSBI(m_%-g^Kln*etG%k@K3cG&40exvqB_HUMp54EKj72~8AGu^={{kZc^KqPK0D09X$Ivq6 z@7;m(d|m#MXA>yy{gHC5_JpILx7RAOJs^b9Z*`Xac}=0D&rmus+-A~O$;P$9%Opt2 z0K6p?{&2&%n0#mwEi%G%nD=jCX_jYwuT zI3p6wJ{VlW^X=}dGCjuFtWTcbeqhb$J0;o& z4|OuoqG29%lnwDcCUM^56COC>-lI3Q7AX6_i<{-Qv*qg3sboKj+Cr>bsQBPy6~a(k z+bv$p*@W`O@8_$0&HvudS!6PO&)6>WWzYY<)#KTStBjRMAGi1voc#;L#oAY%%5b2` zIBAa@u6%V6h#|DO$;ZF`*ftXhQPy&4LjICJV|#oXMB&rOju%Cjn5p+4LIG;@wZroq zfMsl1o(z0|c^3FcF}wpRc&C-ef=tca(j8iK*Bt(8+TeVqjrOK*j&?yb;&8=i##Xk%lWi0cs%w z3H!M4{K!h%6ZzkXQ|4mR#j(fX9=aOD39te&C^s5y2QIOXd)vyXS(>jK_4rOg_>UH$ zu0r}qs*N`)v^<5`tS~dXOL;c5NYw5;c2C#xkQ7?bzMgP{`Zv}K(^&!1k)8^-=4F=* zL~)!Ju9^e8<|(!>JqIFk9JlXQW{_%QhFVsV9+WzaBcRX?o>Ys+N2?f|RR%KJd9YI3 z%A&G$V%tHhaDv}cS8JXWJ@F1@6iToZB}D@wP&sM-v9onwPi2^_#C6u~ZWFDTPL=OX zvOct6@dq5DRlO6RJ6Ksr2`S$*`~g%tc>dj?f(x@T(aL1r`p)B9V3k&3guvnPuGo?y zujAZK%X&0o$1o)`^>1HWvtW9Jt$Fj4)UG856YEXNQve84t=TDYuK)`Fm3*D<_GLIj zQOt@mUxX&dQKIA5Ra&Sh_{XI#?Lx9_8Hn@w?jm6q55Q!$YT^?M&6fQ z$4@q2^x1*y)?Xn2BaLHbo#=+hbJ!}z{8T|$MOHVWlX?&z=++0cTDu^S9;KLx6!4BE z5FD1+EbW~gO40e>b9y(5;e7wKvlHR|f0e`WHBI71pBgE;nx*uuT@=9sI?ng*=a{{} zAub-4WU`ILVNY5H=Po5i?D>t7KQ@OK8Am8^RydasN8x&j0ciAy@b~*UVYMu6tHbMK z`4Yv$uWy`tHu>j$wO8;qdf4|XtdB8Q>>Kvt$A7rLU_Ge6AkIC5X(ZY)qf|;vfVkc> zaiibl)FvR7)P&|Xa-~M(%L5-Ph~C-vFFbDY^?pE6Krc*q=ZEQ`NnW#Z7AQqJj4nPC zI0}Cggt}86#9>*>LL$BlCyxvkQ4HV$v|{+mR}7N!C|iA=1s zC4D9?sL$RXpLO$_HBcUCaXp`PwK%!l)TPM@1&Q&oBnU#cXh)NjrJv)N< zuJ`6HsZC_i>X1%0R#T1-VJe%v!8X8X+>a0SG*QaN8FjC)X-3@OQoE!l;o7~ z(o3)-XI7g92z6`8>SQ;Q*Z{Ov=++IVVB?BceESHS%Lxmz(jW2*2M+Ka=GV3Vc1?&! zw-$AsYy4#y!f`9`i#!TOYrsUQitP%y>l9hixo|QTVAUF2P(q;J?q(IvyW*ox^{7xLe|Rr3!cMkVZ#6 z@rVPanq1e&ljpFBM>eaw3CiX{^+q}B-Pglx($Zk2Oat`F)_wc>7_>RB@CfyN3QeDf zMd{GEsOpQD~u#CBN1ddg&UPXcU4&5I9C_84$) z!nL{w@y|n=)^(KK8XVH9aD0_W_99Z?)%)V{9=!-FT(Hrg)Z(3gq>X+8m>uVCQ+@?BOD`mB^yj2`4>A5j5-+8xXUSz;!%*-Y}Bn+!vS*Yhy z?~HI%iNy(ZK$n%HOYvQl5pC2E&M6L}n_M6{w3Z^Atd!#1)7USJowj0Owo690naxz{ z43DfeuF&-F>Bwdgi9s*VTua{D2UDv8)&waq`xrlvA3tq@vaZS^6DuY#z?rE!rq3#Y#-YEwIIY z_)j&mv?E1R)x=)KYJgg|X_}oAz932y1`ikl*%BhQ0s0SoT>NMx7WF>2sGy0ObvMr^ zX!0CbY|YiSj)EOnyRQAgf#+~Ov4pM!HN0UeiYp%^GzoP_5wd$F&I!?29k9AQWC*s6 zi4%7rV#A8L|KaROhuaMJu|7`S?F<{^v4oBhH+tYW<2=r1m(l-j$AjJI123KVf)n#S zIA5yy-%8!uBjrVeQJGipu0HKcSK^j+m~8ag)_vZp6^22jsG~?-X*G43Ke`oe_ME$~ z@7?7qr_1m5Zcb>#R?4)`KO4xm_vkmb%eG>F+G8%ml+%9g*?nIX^N3Z^X$HIJ^SCR* z2>qGXDKt|ncC=gQfjT1>VWvjsVdRDc%LSLKMCZlJCkX?YpI{dxId4m+Xl~(aNlced zzPYHJVC82QO`98+N9_??xE$Dv5Z$ZVnLP${M|Cw|FK8=1{t_`1Nds0@7W*JE#=DK*N=Zl=m# zcbM&3tMZiMFSbBFdJvVcR@I-WhGwufD~ITz`Ghyiiq zqSFVlsYZdlyLyc>-NvXxik)7mohN-(KPb0QE%F(4#Tj#SvQd4?-wie6GjHM({2i$* z?y_jAw8pF91Ezn%?QWsreGl$0UYCQ?up!?bp6Ff$;Kn}>%Hj3;6AI%eAEN@pZ_mw- z@+|BC#HAlE;_~XEZb~+;iOteHoWU<>cU?afyH%2-WEvT^C^#0UyvTwGLDlIrdbYvhFEo^Z}*;NSdkD0ojVDNSyW= zXP;cyd^_PSMk-cs+bO9Cy)CTb#ub_WIB7=r21j#thDZBwCz<)J^Z!(HGmjhpuzHI- z_(n`~W%hU=B{YBnTpN%70q_2k)k1V#LS4#B+J<};ydok@azzKKh4yS79+roih_9<~ zB1|SrJ3jl)$PAVwBa&ji{8ONg5h-#K1L_k#{yOUp54JwASNI9m`*lx1+zj+ML`af$ zrcJKjf*lP0+b3VLLo#^d?^%7`VS2Sn27~5-%$XFH-_hiEb0PjWX)tFGhdh(`M%@L2 z%{yiV*K&H7*vtZjJq zQcn|1oy+r)vSPW{!q-ypt82O&sy4FFF}=gNsQTghHmM%PcG?$|W=p>*`R1YQw}$C; zT9m@S`odsU^YLhnNT|4wi@>>+$B)9vIMObQ;13&jG;T&Jm0O1tMeN27H`H1e2xX#H;fo>acnQ!q@gI8ZAdPA z;S<%qOF<#^g%I$w5}F{NO1m8q6&2Q5oxB5LApp9to`d9_v>~v~tHmui zq&;$gAjT1a#QS|!#j{|VGV(X>VgP9hLo!+JiE-O)g}Bp~5UN9Q1o6M@nGx0_Cv%Zw zxzkArN~8c@G5=JZ$;%`c5lNzRi=Uww7I z=x8h+j6S+84TuY!%i0R+?XZ>|?`=Q9tY6=tqxOw%R{BBGaXV8rSKdY&5eMlv=)a*> zr{t0x8j3$6lZh)=>n`Z+kbJHG5}Xt9G*IP7-HncVU;Xcf3g*=(DNV%R!qkTHnTF6Q zcLnN$6T>g*M42;(@`FE*Sg>v34@`z1vt3eHugi?p7l#ts0+$`j(oZI3q`04dec?wz zG}bnPqz$ZD0{3-oqwWr>eR6|6QkddInmnN($@oKT|a5M|Jm8yjnQigZrRyT7xiGsaQudk9g?`q+(^wis7_)+rh7%wHGcp2XgC zq;XF~qrCrSe$+o;lm=BMUJmh1JW+w@f{%U}3OX;ArS z?=|MX-i?M2r6>B%*?#oqjv39ao#qkvqe*QhKXom|)_aIcpQW1b3!~!+zEmsn#Z$^p99c8l?2`6e zuI@2a8~V2FJyOPh@VVznB~GU6o5i|(wr*{0V6-@w!uSR9Wp3Of{i}1>_dhODCqv4h z@I>B%V!T&ks6uHHVpgy2#lo-1&s|UFz?8XFH@AEwEunZm70Z7@7XFo9Rns0GGh6l_ z9A&8bQ|m)9l3Lp7Eo}qKF;`XDo8VP|-{S>4sHPeF>lfOm_$yk@cBL0e{Oz#hc{|sU zQ1uv#DsB24CSN@bs##R3T>HZ>n zs2`EDlCVq=8CV=nwiUH31H(ghnPm=f_PItpG&K>{P-_;VIR0*5doj_u23$Yywk?&7 z3@Sf$g_rmBylZZ-AZ~I6Clw}*#3jqyJh8|KKUqnT%j6|J-OpO>qfCYOo%#`x{@s#7 zIv27g*k7#D{=Z&;(G;FAZl65+On=#VIY(lMw#G<9I@QVe{vu%1EG&i{*p)jN2lLW5 z{wHreucNN0b>eDB@eJutRwnxCBi&K9g)+z3F%Gf<;XUUOqh{9MDnQ`q9Z0}Ae*?j9_qfUx1l_5Ff$sYML;xrBJK_Xh`BrUzfH6i zjq7LZW6rro-KaE5E3SGGCq4xOB27a>dJ`2lj@WPuHNX!3wh9ZTyacaN#;_X>TSs}T zVsO7<3BpDAMEs3+Ss?@kPuUkz&3(uIXR6y`9(*IGxbPHEAI7Wi%=ZfM|8DCQ1D+r* z9p=nm|4+}r%lVby$ds4HnI_+ly}ve+$dB##o#DRZ7Vo=pKHQH78#Ua9+OIKmKkgIE zBcC!QR|L6rwWgx{t>Lrhf{&hRL)?ElE_*~KPxC~#*01O7h7g7phh7;iKS2Bv66I$h zVN{;^ey=6nMrRKB%_qnXm4lm2Ne@D;*p=VuhOz2SPP2XuIWoyVa(2Zv0e<|cK=&2W zc$n>Y6c^Q|*`3dgt+kG0Ci(*u?p zNwPd2*=sD9VKn9!dVwxE7k$-68rk4m&^rI;q}k|$#7w*+e)@6b9Ulu_?xb^F@Pz3j zET6%t(Z|tO;`-}lvBjD`U5_LEziQDYLwRekbkBEPta!bb--HrP>2xiT(N5&zHF0fcpz+F2e z+h_m2_*JbCINKOE_JXH$=6Yd=Z_Y`X$R5w-) zF89Z+E`H;%wbsM^jsfO&Oe_V=dN6nHI^?`O#^!v0GS1gTQ#Kv%H+UH+Y(IAh#7`ui zj~yi!#96KGcC6`snG^E*L7+lV(Z!InA{v){PrydLWDrM^eKBz^(c5 z<3)9i@IBKjNB9q^Yd;Yc!B&)P5zlp^9T!&PLflyr1a9Y3fnFa0=7B z9!GaRL~NLYlC{o%Bs3$(PPq3vOU)3!pAy@;CV!?fh%6liKvd~Rzc)FIQ?BrA{Q{!U zw7drdLZ{Wb5wKNzQG#fVeX#!g$ zF1DaigGzL0lT!IT<~|u=)SJb$ErCZSTa<9Qr|t<_!=tOuIerKQZ{mE7_?}WD+$b6D z97Eb!Ri-C5Z5LvSNo$?4E=|jXPi~0~KQ`fkB#4w7>>qf+C;r$SzrUPK^0Xnc9O=yP zFs0cy2mZhft@B1Zm$xB4yJ+_qx;@9zzt1U_OdE!X;@r3`ieUor)@gD^-@}dRM5zz2 zQwg;3=wRMDty8}{+{U-fzlD6}ktsmhr z=@217|Fs_bM~^1B2QaNn@D;WjhlqhfT~3dtPZ&&JROi1L$9py%^WQlzRQ#4w++DVQ zsS9%%uoRwf&kje7tOrlbeMc<6E4tL9YoX7nD)xr=6GMupmX~d3^1&nwg;anutlFD) zUA?@&mr4=`r7Wz?2n6Wa5?KQOrN?)KLBwLa9uE8;!$TfuJ1X5$NjyhW3Y(n{`9&h_ zclQY#gtoQCN-rmbpDD`Uc;=b90i^~UM4o6SBgfkKOTmo8kCFd1n_h%LZNHEN@Ut>2 zOM|{`def)FpAD9SNV8#v4&W_h(l4g95`Ot-r z?z}eU(>f&6_d}l_f2`9s{JQup>AY>voYxww!({wLO3^Fktw0F*#NfoVeD=iN_MnCp zIQO@`UaHii+Ui^{L!7VV&y77_yqr4u!RGGqVu7o2qTH-PUqovc{sxM;`+8O26Kcf6 z$XQthKQh&2_TAWpPwT(+>*RCVkLq+X&TMvA+Px6Ac>nHLqp;Sj{KmAx711OA$MBP2 z(iTkd5U(_{MQYg2t=X%6c_<>z>w{?Bqd(uSOO5wyF?7&RS#m1WL8T!Uz%w^(geeJH z$FbW%u}DQ6*2wri8f?!FB1jbv3^+%h$I-s~YJ|xrOpEsmS0yy8Z+r_wHsB}xYHx*o zf;L_u!%nW9q_1_HnewGv`as=?K#gwm`}9W<_w-#IR^)4>mr|$E3v2JK)Kj$4j8V_8 zk{rJkXnxqFb=AHm)$hB!tqxTZOPUGS&co*M6-v^k>5po<6wMqK9BLk=TYk^DI}S=C zc+j}sByW6o&m_2oG(PM;?g&`Ud zw#VcNe$NWrz6Y`fXAmXRD&@@h!pFX81)PubFZ8!fE1TyQpkcQ-7wdjq44& zEP^wG& zpgsw$3z>g^N%8Cln>XrT?OtySe7XZ7W0Dz;Ic~P4GwByg!*Y`Xma(tDgG)$1&S(!lh0)z=uDt{IMBg zBL(oxl+RRrwY30?Pbo<()x{)ICfEhyJh1JaFXAw%|!JvnIH>^fYySp}MA((US|Z7^-( zw~%|rKN3v8y>&V!n!RvRMm@dnVP*Cp<$>1xdbqX<=|0_ROnM6FHrJ~B}e(~UQ zTp$W(pzCTh+>y^JQ;L+_&Nbh0(D_d?qOT%o0Sb}4-@%bzo;E5t&ibs5BNXAl zc1(IV7Up}7j|4wg%=}JqCo24yWGF?`-lCD3gorn>k(?;rV_;X_@q^th@}!$i=FjYu z1ksL?8tyn$4r)M-64#BX5Sf z!UpvfIg{Bm>cQ41Yw6XKhGl}^!tB4jf`8F26Fxif%9nk{&r0kis!Co7IVi9}vt5^V zZ`>(~jm8qn0*xoPRIi@d%BrhwrX@xbjGX#B*^Q2U_TNqpobGLaArn8j8WJR$l2h7; zy44lsGEE+Ba;FD7sVs^<4P$gq<0Chk`f$?|c(U6kOdgP)f+NV$AYAWxC5+OZ|QVSK3hFR2I~=rrTTDOD&pXRlr}fA6g3X4Cu_pLj=Ao4hsnd@B!wVN>{cj z2LX{23JdrP9sHReNuuE=1Mpfy?{@bHqrb5_DnSc%?&HV5*4{B|rXm`1|Gl2zE(PMW zufYKm_oHgTYgS-K*TNUD3t@`*qdnk|=PvF9Q)Lv<+wGfk$KmcV&JZ*VtW7A+orw*b z8wMLsyC7YVhYstHmm*B;=T4K^^vMLJqea852xCS@Q-YeKG!h?`oo1|If*jeoa(ZN2 znnJ4sQ+A*G{zwh4zN{*qoYy~tu$F-C6X{WYWSP;oEr|D3Vt||^T+Zq~^p9?T_CMs# z;T|c7CarTw-iYko!`qKvO-#eF4D0Ep+ zLk06i05ZPJ_e;WcW~H{{8uGbISBXaQrOm+|8q&bDx~;>Kc=~q$A^k2WZ~|gnaVAJ> zGUSIFsl`TfHS6C`@{b%ok)_g#hjRSG-FQ9R?tU3)&`pC@sbZ{ljqXd5enV;vL$_PH z-VPW^MV%tY5*ZB@o=?;^`{CS%BBIr7S-H~2xw^zF*`4q;IS%jH_}P4eiuTbbpN+D_ zkM7#ch46Lqb=p^5|A6doJ4t~PE44@LHJ0C&CQKsmmq<|p?Jz4PkGV+w)Ol$`WAJ@t z?a8B-`!VjscA?@7vr#d zZZ)AJUX!um_eq4PY1R>)@lq7Gh*)F-RBNTXMzC8z)t*Xw;_(9!_7gCtWVy1qfTgSN z=M@+M$6DX!q|#i$BGGJIOmqzsG7UmR;@U;8Y`?{ETTYKL1agLbDG4uO=tOa5-1OFvfX&a9Gz$aMxEk z&-M$eUby`z@)h3e@+qhaQpOP?bF*QO*EX|<>I+Y{;g8~_w(thr?S8eNJDS;9X)!_> zjHDJ#3CH(nuH+-``|qYIBP@((ij0q{G|nKQ=N$lLN>I?Ws{%|qpLaxTc}sdY({TE5 z8(Q0WeHrhR!qRis|3{h2&NAK@2&+Nv7Rzo~RvVg1aAqtq!fJ12wLINf7GL5S##)HP z9zoKy#D$7T>CfdI z;Vyt%Vkcb1EK>9~UHoCs`6O}kEONcz+Yh$#;I2Vu6VQxjdn7I%Th4+68P4AeFPy4~ z82lKG^}v+tFNJ)Xa0tP$6LAVx`HUjIl8@+Qbm<<+ugfH9$L4>-`d1v;^o zhYG@iUd!WsvvN4@Vl(X?bhE9!ci<+Mc_)UCQhplr81+Hq=`|=$N$@l!BR;$SrM>#6 zBg6$`I^eZ=4%qjOYE>V&PYV6>U9fH@9sdAEi_b5@SY-pba>^+Dp&Gl7 z8{=w&-){s8L9PgJf~2VorV59eYP)5o+!Nk%d}yxgh;6`VggF4M?3{EofB?^ehkugN z)Y|(sz3yNhG+hO>*@B_5LJYRsLp?;2xPc9evQLyRjZvn6r_ zkn_rar_^WJoG5@^I;&FjwLQC)YNY`JX|Yay{f`i(Lxkis5WlRjpAatEf+~f(;LhTm zyH>FujuXh5inw{8-vHLoL=D0`^0G}57#Wr>`nc~GoE)#^{&+~p0Y#`EIvC-fIfAar z;GxNXnJ}I`4n(`vs|{{Y%ae{LS2r>Y^{~O>o25~Cm}_eSu3f_xUl7A8+ht_6VRgip{5<2=Pz zDx_y+4M$@SDe$&RQV~w310AyguzDk>y@N!h(odej3od6otuwEnH}?o!lzZc9jnvaq zLmK*37U0K%zY5vAH@G${as=8`AA~GL`NdIaR@rJCc7+{w<&WBF`k6q%X3KqYz6fPqzok*+qFXduIZRFUA)W{u%-4t6cMNq> z?Ujc^w*xx<02O!#c6!`2C`LWUmftAZ&8g8^QXty*w|ii75m|<>%E}zR zTz*mL303i2^TAn};%>O}#f2rGvlF&A{M+o2v< zBFd~iePR&%092)^I2(=bYLcaVS}DW0XAPg*10k+w2>+gLV{}te8{RGmJo=;p6$9_l zNlQ&~2m6T{Svew+V_}@SowgB5i7@|AU0ghtd$-aFPkGr1oP!*!E_KL9e;k#jDGBxZ zT37&@8=NHCo3IHc*MQ633^^-tbqtEo@H!zm#q;__+X-Nvnq+-@mEkMd4ZQq8S2W-t z2&*3DK4po*wg)*8z~2gZ^kp$JH2XQ$13Z-zNH}w8wN3sW1HEyYhXt3AGyal`% z>f8eIHq(^Nk}uTg?w=;~`-97F5wfrLPEBGw)>diqImoR3{91U9(k$*^ng5ZZH0%#k zu}kdps}eeRC+k`od#_`blJb}r7l5qxKRU+IGK7nNMB|($ZO@T|()-*@Mjst>UoiZ6 zEZe`RNmnOmd7Es{V|B{Pj9gl`Hx6C=q`5q)<$YEQp|2bMk9RWpPH@rbyk78H+<%yO z(@O#AGlo=>A2t{Y2vb=l_mR!8i~6!E6oV{u?rxv;A%(4LuJ7=NUS=7+Zy((;W7|09 zWwI3U>tDix`oOsIdE}xmeOb!{Vq)_$>DqnVIDGxx>Pq>IOA=6z;s~F0Ia7SSF8^~% zV8c3@Y_GrGJ=4soP#SEc?zO+0`Jws2ISknKkxz*fDtWnU0~Et3ZJ(wEPpjFFWYT(B z24-#bJg9up1srD@R_jb`lTHJJdhikJ9=m+}fY{8agG{HAsbcx?Z(5iS8^_n8ma@8L z2cWK3e~P`lfC)&5hU!-6Z-H;)ijIdD%AWqzNGn|2ht_) zZHY$d)OQQ5Xn6ykep0&{!v4@lH-Tu6Xrtqk@%@3Opwl`4X6V$9vo~4nSB)k1pEzcT zFBe4*Jlt4d$SLI3pluO0U7Uj0F4V|#G^_T)=7{o>eZ#eZHQTI2jHTB`*Uv%UNRa}3 zZWb4J2Q3nB!`^tHYt@{r?tBz?j%JTqreHy5pr!YaP+?7O(ydz$D%mNntc6f2{D6gG zz?~0p#y}bO1|B=3fcp>;fp+EV6JBA3`63In4EY>I6k?l81w{De9|(=!X-5m=QT7GV z`Xh0rwsV86FeNj1CloF|ijYEh)MW;Bay!xu-&Xp!7lf~`t(}e?0XW-thm-TZH7ic%s zJ>`h+YK15lT@30?RZ@*7zarhPvPr+J#N>Fp@_l#R>57Yfxa!jiU6Ufr9=Ax3ZbnF);XDskdL9AO3+1iuIGJSmz=1#4q_dSB}ipDcdg-D7D1%O z*Z51+idxtquy=;WgYqIEbt$yi;nXJ2laqjhAlitn zF4>DA<}pcov(=4@kY)Ao%RPCI3)&6|RTWnXA6UlJ?6sRzKBQtd7u;*Lqoyq%eD|Go z5dSjJ)g~+e@yIf0rM&^7d*nV)EGFNV`>7KH_K(~8eaGT80;jnjB z@IwB@7}iJk|8^}DX_QtXSHX!zO${4#Q(s+r@;@^ci6i(QH(Gq%ja7COpqNw+$K#0N zkr}Ueo;Fo;HF7}~fw|kp|5C&qRL7LnXJ7uy>lXTG-tUhCa!al?ACfO0O=ytKJc!z_ z3+b(FTb^5cZt8PMedrc>AeKJsb3et)k5qwrRTFsyw`%snylLcX{5szd``lmT_xoq> zk6qM-mox_H?Z>6K>x9&S^VA`iAFOcsNc!3EGrpk6(8%V~)6@NRIgxE>ghAW#<@7Q} zzISDbj%vjui}K9vXx-J@M>;=rhfM2548nKUlNri8S5ak#FRsNCnoTmk4^n|c!d9Gi zOPJF6JV*cVQ5At1@I@;ojL$2!^V?Tgz(}6bL}kCiG6Qc?5m5^RrzGy8XIc-kfLrpk zwy_J^nKEgauk&UX(|_grz40C7$z7xpjW=n=AD<&Gxf=i2w&jt^C*Q7H3ASDE?83Qt zNZ*=Kpcy}=m3C98!RCCOF^p;(3i5DEV3yvMfxHrA#+#QU7Mp~M6qrCY70~i@;jV7a zJ8S9zSz@cBJ3Z2@?ytFLT6gE_P^Hl#J142IjQ5XYKS%QE8xeZzq?KYnlP>e3R=rz2 zoz*Wpt#bA0F!;*O6b5wO6C9y-I=`9&h#$Km|; zw9;!0rWq+bXcmOu^?)_PY+Ab}E}2+R-)K#(Eu!A0G+{sw%#ehz20smkD7f<+1mb_) zjHuhax;DU9Ahz+_>w=&YW%leCOQ$o4T>ELj? zk^)gtU}ax&m*0i%_*d!@L{GdNIehebTo=FR&XFi4o zc^wY^%d61)04d>Oz8vm!{SCvs1TX#Y7Jd~fVB7bd_rfZqtjllOE7=w8Ir@IL-1LDeAz$m!Tc%+$OsLl<}ns1_J^L|#H_O0u14`RTMPUGP2RuX3}strtM zUUvc-fI`_z4{#T8@s8X3tzgceX+sN2qU(KLf=(dUiS@&tY zpR#UF{kSPHBN!9AXJSBpNUyMCq1bpKCC7+`lF9!}#f`es)YhI~CR)7jo>|tb)|cFa zF1?#KFF~JviPg$4^#8r1YL53v9Lm#pGobEydk1lowkCR;nz<3`Ip>{C9%$6d&1uR4 zwn4G=@^|0LZZ!2l7W2M1c<4-RzjRgLcd# zI-+K;Z($=hH&|<{1mPOM6e~zd5d;JrT%AyReE7vg5T;8v{}AC3s^;V{@+kXr$So&o zj&#ciNbhw(BX44b5Dq+%n^e8@UKBpt$6{Aeraz4(J&Y@$_% zaxQ2tCsfOC-qx#VqV^5qA_7anPr=7~o=1GD9x-cLbrS%G2Hab4|G%Ufuf=)rVM)I{91$ab?1wRIsBoG`8Ce5_b1Jfn);<<<@_{Q#`28u zdVwhW<(VYbY|Q<%BVna4!;f;D&UnL$((95mJ@G+83&?<6hcC*)!%&j{=#m1 z&*iG^D=I6t|LIfit@{?#5zDgx2w}yNWHgv~dk8{||IC zm3emoydN8>9atRJ0TWWIDz+Vc-`Cc!rL%BKj3g5$*mz?F-h$URNo{cL2a7Ki+J}ln z>3tq!1E(Gvy07GfgCLW@t`eOjOQ@qBLrbQi&pyp5UKIfnPMDxPUR*w+tqDd8V=`42XS ze}Gfq#H(tj_N1t(i3O#g*HR8sF7m_(t%bo^-Et2+*74<&*T6k#KTjRZK_v{T18a8c zeA{f9?GMB;lUR~00$36DvgGYg0)tH`vS@0t5ig3PyN$Uy^1y9Dms9ZhhTAv9iMUHM z-z=FPHh)pR?T|b%MJDoQMGDiOjP7;}|3;R?PXP*P#AUaur-x5RO|pz&$T_DTpYdSO z=o34CEu(Y!p5o>y@xP@8YjQKSe|8dPt;;zY)T0{*yL)}y7C~<3@bKAiqyHY#aO;jW zfwtL^CO&(iIZ~W%% zK6*JLRPEGoeByBeL%x`7X4CEShc1#h@~laWDAz?!!tDl+hkkWWx~cf82kNv(Eh-e{ zeAzJm7o#wyAOIF9dyzz+{ZTB7IPg>uP~O)3_&#t}+PWR}oGgxi1mPf{I|}2tzh-5F z?(lMD{BJ*YN-lpZ8#S1*8apmND{etNch`+{kTj=vJ0n(R?Zc(SNUi>LTjAgLXw>4) z`t&#aRE#g^E<<{Ocj0CI2IvmZ=`-=BC$Nkhv!+XU70<6&j}5=q`lZkKE}Cck zcf+pxBt*l4>X$q}mwftGjuEZ4!@a=7G$TIzb?0_N%F2WkdAHx5M2`95!bhWb9m8eC z@a(-r9pl65UX-3QA|9=$Jn7hj_J*ZLZE9#f4fLag%BD-Ze!)522lt1%b0-9pLT+j^>*-;r8Q* zZX!xqXu(Cq$6?hZqXX!=aw4bcrZ{usDskdxJp7`Qq+$ttN`^=-=}W{RNsdWYW~L~8 z?tDn7#_I||tZ*uRy|5UPvSCn`k+XDh-~=A42F&toIrA(bo(Clr#s^zw@3fmQ#<~sf zU7cIJ5JLi`9oW6c<%R~iSi7&pBpT(Vh8ca4`_3}D0qDVPY{uzly4&WhAVji7C$d_`psxmItHU=X{$06-4QTcWeOF zwq4(SJuFDvqHVum2Ti7Xnr1EPDfPZgIb*~Pi}v`=Ze7(~OP?-Wg7)i{T22V=2+cv? z0kux38}_L=4gxH!=lcgHsf=wfeD!`jf2_hSZgvOO#x90!720eqOJS@h0G~jq{to@Q z7KXvaL7PX(Ib@owkvM z&sP}WEPFa(RS!*sea-5*lvgwti|Q}MdzK^jGTC#$XlTS_4{+ zo%T+e>)V8gT2PAOhDj(a*kLZRBY)iK*yWR;7xL1W`Q-WmaV1tqY>O(SxQp;i*V@;9 z5|gljT1DM1$n@;$y^Se!nOnE8++}N3-IE<=37OBF#w(h4{fGDT_{rNO2GR*+&Vv6B zgZ0)xh4{Hb3w;8rfa~FoE%tPK?AnD`K;3g$@b3DN3j{Ee-E0aLdlW&&PU>pKEas_* z#1I^5Q$MNg`$XVCY(|+zI1LjGr~Y-|dEo9_w-hk>R%^B@&-=FTlB(W&fOB~t`-wH0 zuuH>NOMRo(nyk+3q0e%MYPSmFgZIQQLVj47I35VlUt>%6NsDW)4v5&S$1$t^TA|8` z_N-5eo9x|^#hDs?v~4Io>(Kln z6oRvm8{H{!O}|iQ7yhQgS65Ohouw^qq3lP9n^W#GBy|e!6w~n-=?rqg7zQa$peXfr z20c@-Q?qyC@M|zhnDMuf#hat~*|y(Ws2#x|6RwoixDkuBHR=j4Px#hGEvI}Xp3&NH zh&V`>b}3x8P4^Y1ctzU=-Lqf$cIX7D-a+C99KeMZs{iN!B8i{YCU zjXU*43fZqJiF)Lj*D<57W9xEQ*Cxi;t-K^|nqrl-4#E%V9lOd3$_ohy6cYl}C4cu_ zwWX!W#6Q%ZTFa2_YFs85d$rs&ACUI;_p;_tz%iqKX#`gZPvtb@ehQrKDw`o(0BN&W zEaC`@G>{E+R-T?@Zc%;)B=DSrC#k0vK$mC^$otI2wPm=tg=>&vs~oC}q7sdC!odeT z!EVVV2!kGbCKGi`90kLg5_fcV3$?fFnzJmqjv(le_ZRF2*#KqJfT~EVzBODYTQ_gnn_>Ys(O+C#ZCx_Wj zE$Yv!wW>C3r(`!Ww!3>Y=DT@H5jj-3m(?%n47=0+A5Y&MmjwR*f7O*;mezTuW@zKe z64TVng`=)3@64=D5lxXCNabFjIjBr62UdzBS7mMmm7J)QrYNq`a2qM^4K6^0-}^py z-=BZ>c=+fMy?MW1ujlm4dNg#zHK>8Gi4LVdcJYtQ*ga8w2C_9j_f}mUC~i@U-KUPB z^Qd?1+m4)QpgxDaarmqyu5!w5hd_Mm9}~>i-@Zxkik%l0^%RiFVW2BcE4PiO+t;ip zjBf?&F-I13WTMxB7aangPOQnx`B9Iv*Q%TizZ+i0IZKaA0sodVUsptS3E(GJJe$RN zXSaaI(x+RSzo}{L>Aeh=vS*;qxBFS>tDJ)GiH|HX@NfG@QM(KLu`X64xA?#JXR4u2 zOKw*^XmGb^o+#UR5;gPuvTBWmd;*>K*I+t`ebh7g_}S<95gNJIf#& z*btMXtzL7Y_g*-u0YnhR?y}#u)!TR$y@dry)`3sj{D3kj!9WP}krTIsCr07%W2s== zp+S^Uj&kDh5Ra$~2&+F;T=<)8)frnTXhJFrhKq>lP~rT_7|8&{WsQ0xrp)TGy(JT~ zARe@EZRyBPH*qwc!kN_O<6=QZzA(QBH*Z0d<1UV|ws^Wpi@JYC)mlFk+VSyGc*Hi7 zk$(Rz40FYn;2G6U)q-b|#J7a=6ONmn4eB-`SYN<@gTj41_5oZ7c?!1BaO7GQ8x{AP zmmx{S%+~zxzEoo6W^MT#eD<(&GW`O&Qm2tr#Pb}oNZ$%k?Rb{PVdJknUKsoPe>Gi}< zI)-V`?G(g;UkzdgNJeE1BY$ZL&Y3ot+4+Et;xx_oY!j>jJ87GXjK-I-VmW0jSoq~X zT7b&b?=|B*RU9o;)WyWT8I}nq&~_};AW+`lKGLF{os|6?PF%H>6&p0{r&R|@h`TB? zw(s|_`K>BzI7Z>t0nD^AjVD%$}RMeAAlEur<_&wH1qgt_>89LL1N$>Qjp;r|NW?5-d z(Wp7z)cp|qHlIaCbwtkMdpmS;yN3JG!((6!!l_&HtFpC=Skyo-(j;4hYn}l*L%|!6 zU~)pdH2xhaRNNY-0A#fKHeTs+ykmJOQ!`TXYh1&;!s=3CM=GmcOFa4li*}$~Yq21a zOSQsgXBJkx-al)@26S>|l8595D2TX*Kq{zMc#kRSC#TC}8==2v@fRL}Ire#Kwwq7|K2b|+W2 z9@fUHbast9R(=Ng7!KxvAF|S>)&1ozIM?zUxw}b}I&D?&!lYr>*~ z`#=(3?D4j%`{?rmEi}4`VR_&#KKatrJP(c`k9kQr;e8KosVNC(T74Fr))DI^cdxBY zgE#WD8pA?P-Q-hg#^f_Gae<(*G>7ofyJ_=+8V5)8RTce|nueIQeP=(9&^Vt}G8 z3K;597oo9ZQ=Q~inos(wLVCn{jwrGk8@dG1iT6QvONly#7VZ+n5*V*)cp3{nY}v(- z!=PrTu923(1HYt>Q}x$51ANohrW0Y3^Fu|(7Ps1b1N;}B36BhGvQZPVuF6SowDGQs z=sAL-aiXWS*W3@~Tz$lw>SqziMP=$r6-Q&}@Nn=^-NhdWO}P%(feCaS>wH}Ira|B^ zYEoxUvY!K;9KYJZVaH;GR44lV%;GHE+y%QINR5c0&%_7*`r8(Yt^#0iyswBv-HeL| zc+IpvRoE`V3BjXU64KEA6ScZARjec$#jMJQ8YzgE9PnX##3!&Euc_%3#H(82ykV1B z{ag3RY|>nQBl*3Uh+RyaUfOkCRcscDYPJxK5|_c}WUL@&HPbG?i}AgwLv_{pE+!fj z_I;e?AgW=c(8|V6G~cz8_VK3w-f*;E{+$RT@Ufh+=6jP~EdJCA_rv7lz{Qnl z3SsIShHLO3Y$txm!0vPY=~*AnuUpU7)vhNg1yp0-)M*-r9g56>$HYVO>jt&;VlLf9 ztP{_kZu%>EmgGVWD!-CfeX-9r@$x4@n8GsZ$oS5NmmIbH$}Yx-*&?`cpHzlP?q=%6 zQRdYql6&5$rs8>F;q?xbL0C+49EY>}R&Lcv{B9(z{?!dmq?z29`@$U0VNahjA}r2R zLTtSV()LfF7AH_q7`Wc*y;x`ZXT?_rH~B?jHQ{*9k?j!-$E%VbZA3?U2X+&iNU7?G zO(3#o_`>@>?Gqa;k_-$V>f8yOzEV1LK2Frbv19ZB%haB-4zH5;O&zCIXbJJ5&wL%S zM~g`VlmM_rUx?^H6$CyJ$X1%?mG_q6b68h1d}P9i^mXU`(J(C_2vlGrXwMu6lWicW zhh7w^ijS_o?&vseo$HrydiZ7~iYizwwhNwgDk$M%Y4b*6ayg z7k=rI!AAAiKN(u?qTw+Xl%`bLNbA60jG?PVRH56N5eR`FMWy0#N_!e&@X!ndU)N0~ zVT*nIJCI~MBIdn+?{wDIj}A8w4nzD(w;&DK?X;&by=yt(W31 zpZvH=_GJ(j$KyC3 zQZ3XVWXzk3V19|3Emm3Q`RfnJB zaU1PC+BmE5fMb>~zlwW>bbu(Oq814YdpSrXvWu^s0=u)NI)aDr`6LfA_ZCtUy$0LP z%6e(pS&PEtK%Kc~g>={SH;$9cVw>>#+M9p=N46MrL?~h#gL><-_-g`v?JO-Z2NR@) znrvvh~ZdNTlRU4nRvP% zSuyb><%hMk9>Cb=7z;jz+_7F>n6FLoQhDq3=>UluaCUo8d1#hSL5Qo8#21O{F2Wd8bGI<=mDpiY;zz+02-43?t{9fB zL9Aw{4~lMXs5%W}CI==_rl@{$bwd-Uj7WCrUKSuCNEQe>bEAYy(O+^`$ylHEL>k;1 z(W!h}RTR}$KTOAlK5e2M0)dN-7bxeZd_4Sla?+b*u2*8gg6$4LOZRt_94Z5k8n`cxDvt!%n?Xnl&?iSlFcE$!* zN3^=_e%U)$ZkhV7?xl6bGEs*y_sBZsd(WTw#0n|FDb^Ykjr0;Qk}!iav7`U zB6xT6+|vqi@r^U0l1wiNvFp0*cAGX2Q9rZz{wy8fRZJ1s(4rc}{vu>2NF=m1Dl2dK zjUxcur9EKKzF4159>wu+#3BSA!T(qsi{&mygTSpfvC=1|DE9h7F;(M2?8mQZ+ zVH4@2+Q%?1hKmBX5S>ZouWvs5H0{=7VN2H>S-O79-Jxdn;lA;e<=|lh(bG1YEAFO< ztWyld@cy3!Re@Q2zN}Qc;MHnzD+_KE5agND1y8lmi*kd862KmNnw>y601f#t#3UL| z%{Xtu?TT7v9ADcnjLG z!`RiU&f%P0iyMwhEi^$SJM>ZGX9@nXgmt?7@@Wo|P|Z+8Dv*S5 z1$i-V&kp6E^?q;MuKK7O-}!#9<&NvFm}Rx+j<3{EeR>9WByZiNP)dK1`*}Ll{!hQd z0kx9X%xT&e{SMbBA~WQc;Fv}Y??s!yg@Go~)MWa0H$Hxo0u?9aZvEqa^KAkBu$ z`DKJeb-D_+>|{3_SVBWCh|uVIP^9Hhb|YWzW^u{u(C#T#Z1M{{jCSNDQd`s+IHUSi zyK_so+PW@~mppx|`ybSz(0AT_t`_`S$&H06R$zQU=3xIA3;qp+@K*4Tu9k%zYX6_2=T#=aM2JW@zLr6AUNCt&5&OoOe-+Su%I)9I%H)z|=yQsz z`O;#mo7_Z`LYMP2b}K{Rm}A+Nzg9AZyrhGeO}f4xSDJm@#ltUl8}&=K`|Q*#*Q+lR zISLWQ8Iu5`XHy}W?simUB&0fT2gPm+i&pjnyuWpl#mGXgzo6>5=A@H(ugM*>%M;uC zgs?GE1a`9A5NRcZaooY1@D;cWH2ejGokQMoVr!j0U?Nu$@}q?)RACF$Z`w!UGp4J1 zq*c2XR>(!!7TS(Ph&PYx~z|$x3Yv&&pf)r9HLC zI|1){#c>623rGL_8OU)Rm$CToOtgQ;!a zLssw43A`#({p7^hp4#&C%IMaqkTc@a z0n9HFBt}5e7kA<{W!g`Pu4Ku2+@U?6@!mCe%g5HiJZiDht_mt#VE7AK|G++d-);xl za!Rq>Ko&EQ5b6A|Z(}Ig+%>(8>Id4vs?<_r1Rs|(0tPW1dadAQ3)~#Pk+%wViqv9N zq3tSa-Mo8()rNx&(LvVk7*pdH>f)IgOU{eD0Rb9bwNPU#ly%WL!ygP$50)Z+TTH&S z>B*AuXd4H9@HH$;j1_FC*4Fj5u~#$_SQT!KKxc&qn#(Y(cVLD3Qo8uWfFI}*kfZW9 zqdQwOz!h6BMlQBnq|E_Iu-zn-bSEb?fK}kIzJ>5t{#V5oVq93J5sAKM(9hJ%gW~F# zzTYG=|A*^I=zqBJxHlyBqxA8Jl~_|HXJJ+8%BxRJ>#EZ({R<8e@UfQ&k#5*Ig8yNe zfyay=(;gxuK@MRyL^G_VCQZd!F5iIfd}QPg>jUOCB6%frfySu*Mu}RZ)d6!RI=1_> zt#`ZBm3(f^u7RtpJ*c|N!z;En$ik+pg(xeDD%u0qrxlmwsWJx%^)-W%|) z(VNb_19Tg{6*_!-Z?CJcT_8X7(O=chCd1W$7E#*$oyEYr&Tut)bB6ROpjFRF0Ul7~ z^4cR7kD|+qe+(tF>+!%jp@2Cd&W@$>lAGyVLg>Z8kG%eh_`#gdsR{6~{tViu>4Ffm zsQD9GFtRtIpAdM^t50P^KdQUjmm#=ip3OVO{%$TukR+W*sECPQ9%r$Bie1L7XfUh| z-wZ)>0}j$T(b}q?46f>POcb}ueNG8{a^0R+%YG_@`pyprcGJ|ZpR(hO*tEtweo<#O zBx>Zh=-uBx|9EirT>zTmhK;wGyuh@OwH7{LY8m7 zjT)gk`~GM!5W9vx=P#NkJx71r^=ZqQ}BzuExf0 z;3MZ}0RbFIVH#Rv8&ZcFYg4Dy`ci%1uSoHAZ;O7PTE@=!>bteT0KPdtDva?lBh4vh za9bx>`mVp*wvwapq4X%fM7t74UgRPCMDL`O3p8^6JJhFhX~IpE4!x-FIs6sQN4ye5uEqAK zy3A%^3L4Qz?f!V>9UB%axTXb9zkP5vEbdCqy!*{LwV{^e6N7S}q4l;kI0-O5B2c%_ zm4$`9%IZz`?hmMR|A>3D6vY*)M%GyXoqO&+yK|2UmqoFU=G^Lc(bhPn<=b zsP;XR9FsXkZ=*;O8?!$;FLd?8Y_x^7vb>3y!ew!a8Pd)+=&T{DpSMgB#&~H2X$00) z1bPOOjHfKoHI1P%MJOjQ^bsxA19a)RPcuMM+a0iChtL;_mSn}&-ID{_kyET<$R9LH z8h)9}G&7zLFU(N&yh5^S;1#Wq=MW1(Wpqc7QU?-Ma}EHifvtx&4OxN;({e^ZYcw>o zOxZXb@2ub`>R=fNpeC)1=yg~u>dSO%_2X!10Qq;&F|(!dxGis-<0X#|NRGrz!dr*Q zU1ay8ZH)u2Kbto#5xev=ozjA=KZNk5YGh!%%^O!I>C*u2C5BYllUFnZYfOQq$L{{k z6pikXWIL%jKBVhex5y)84Qd;V&{7yVKq@rW7F!Lz(My~yS!m^!Br%a;C)q5|tim43 zZx)%1%vd~PsNS*NtH0FFG!ESWhE(**vUeCe<27K8Zp}xOutvN=(XEYNvYO`$nI0FEb^>}2EkdlHLI{|e94Nxu(*sj z=2b>DX&+Jusab8Y_sZ1L%dw03!uTed?7;D4P{MLwCS!iH@IWtI+4_OJ*r2Bo z<7TRpK-0gbONc=Ap&u~EULPkhQI&0bvhvKPhvNHFuFf`uP;9PqXG~_{Hs-zCV%N|MsUio082e6znJq=Kj1w8>vRPHZd zFQuA$HcMwzs5h2ci^f&zpCkw4QZu)=-N~CFWcz%lZ-dTQevfvo1#N( zM2LG*7_-VA(tV{~Pl~`9bTscHj8^=m>oEE3!N3sQRASZA&ly2arsy;Za-7@$z-$+{ z!?bVon|zCdIuk6yqVTpzYb|o(i(czQGLEmikv5P8^#|1CUHC<6*$v#GppaN{C#}di z$z=Dy9!kvza7>`e9~(megEABbif-`TJ;k}0PZaseL|sshJ2K6twrIY4AL9R4Lc6`zzG1nUF@L|fqP*{UE{+jr<$J9-KHHP&|{h+%@*>mKcO)@x{`k^y534{(_mQ9 zCN#eU9ZEg-+4Y{LgNM|ox{PvLZ^NXr9Yx43l@C2>0>WyMQMDw_V9{i&5hON`wBpQF)xNIob{Y@C*8C^-{K(Z zlp4^hEE8B8oGjPeEL6@9!4g%B6~mtOulrd9-|?3IP18=Z&hKekhADj>sWC*{9=uc~ zTW^yKa)7zs!#8qI?!@2IobnU=IQ&EHzP0Pl_OPRmW)m~uSv4}n@ox@P-%_kOrwH>8 z@|U}*YBLl0ISh-&!ixr$H)Vofp6kvu~tqg8sVD$O^Os;FY+AYe*52vxRF662bV0 z+1dwptFns{On2y8aJ)9YbOD1kpLw!b0WtrGPZ$->3to0Km|M#!n5r&;oed$lzkami z^u~UwcLe@LR4sq-IH=e#s6?zM<&b-t=VS5OM&ZJ4{~CagLk-}sz$EqGZZtpBL8feV z1sut8zbJm5x&OAZ^GfI5>6L%nz#sSgh}vgCE=O27Q)>I2Tfzt8HnO?PBaYC`pO z#n!*x*~xCaRdFV-ktrEiIriQemB?0mP_3atMKPW3v7HFFQ)Ufu%)O9cRlc7Le^=ww zw!4Y@t-AXuU49OOd$awW6`iAUREM2zhn%hN!Qxd)eVr8FAvoXQ;zymdHhS2%NiW%M-sYk4f#fw+MZm%ihdYyZCF7Zo zwCh9};Omb<-vdhN@t)aTQ!FVFvP3!=ugxzmPK*P$N7AZU$ou2qaosNp@DJG|t_@4# zkl9epbE{RVi^OTuOx){`@xlYPb;E>_Fy$;C62(ebv{oZQlbMe=fndx~rwK;G82Z(p>y{YU;PHT2rRF!8(6uKY|`snC=rB-)|d) z;z(qKXnUp0Xr_+(#swJ&Et>;Et#HWBj3zBqxxr@1+_$r!v%GJ5wC)W3uW5$;qt&B# z=l6+8yhe2~mi`+w;3<#B@d;l*d`B@ONxolLjWl!95K{Hh7y~riBSI?5OWJ7&7EMod z4obOqxi1-Y3A;fUDDWT6$^Q0vTwtg>P) z&tE^CSBrJOg+(6)=m8j=U$n}zvz0=m;^Wr=M1A>2oPKb7z*)WO@cc zl&nOz(C#X-o2A4p$+6Ww&-ly*N#@=7c926>vUUReVY`p}TmNkf;XLmlkEK76J5gS( zE_P*C+ui`d`0GebR1`kd-8Eh{9B^mCb_)PemWJbDA&(t1$_qm#j@>iB1^^b99@I65 z4#teI6DN;}slKqu@fEV$E~sV2;YU$EU~*O_3$Cpht>T%dvr)C>kM@MlD~^yE#Zxp` zpmDE>n60ej?mdL4%0LG>A)U7ZF9yC3x@d5ERkbv8#86?mdRwj?owJa-U=vo1JY#27 z*Q=3Hx}Qnb&>wj=OHCWH2{Jdg?Mf#MHV-W`bvktVOIq#Et(tvfzDJ4{hX9`fo23e= zT1zu4%jv;&gxc#TKs#c*9*butj0vsiH8n}VBVQvK-!%2`=V7qg?1sQ?I1fj6e8;D? z(`*$C!||F~O}iCPq!qhU8kC%Uv~c`MAb?hEP+c|~l2w`;FEsH6dt%YhC{hT^0wSA1 zQ;NOfNfrp&>%#-QA=c}Q9MukS^?}VS=HaHQga||rv!hOZ){(pg^l{Vg(-Lvre#*-dP zHqYmWh_iRQIkbo$Wd{&;iCUOlYEBI+^Xla_5#jw^JIyd}!q0s>K0rQv2B|Q9LJQ*j zV<_=@^@pdlo?imG0ux7V4dI)r?y~MXD7`*kFBNGAwtqaV1Y3O47QNm&bgS|?RdOKd zCcc6nMcj3Hy<$RE&-lflZ0IF4Y?aS@`+NN#^Y3@7#0^VXA!}<5j#iAH96U_|(U6KW zrFbBh0haOd>meL`-#2S;w;{C%is7poy*MJCv)g^abU*Xziv^{uu|jFMFvgcD$pNq= z)c7xmFn{QhDNQv2Y&yf$Lr+Q>w9#6C#IXmCU;UcHIO#;hQ{;N#p`fWmT&OkhktVAf zF#JvxRdL*mzrs+WtFOmW9i%XIk@t@3dj`)X4*sZ=8PI;L2*J!P^p`0{!XzxIb&+E> zSUqt-=vQZ~~=cTp}{o_fd&fwTAQS`_c%Ia$Ib~nE;>9k!``H-E!i{;F> z#dE$$Q=dK{cEUx4ip5qV z9Nv%F3S+R8H8rvPx}O$bA)P3j^N>M92ZsBfug@4o{iEZR%G~d>ch+MCRS*H>gSltTDG6&qNyV_6zWyY z7T)p?e_#32=j0Xpy+d(DQSn;TuZST?4YR*VD@eQU_Kbg4m0%~@UKq2ftubX;>4Ms5 z)_G362mhuSW=ehK`&H79o|J-sJkXy31Ks_Lonlh11CcHyf{pEA0{-oN3lk%r( z;sJuKE#k?e?K8n=Qy`xiYuR}0q7T>qjnp&j=gH_+8O_n+W$?7-BK1QixL)S*sNX(u zNdkYgL<>AfOZmwdFV;PL7F>TC$*k`Nu#_)jtfHf_zRyhu`<1>VfenZt-Kuk@MH3ZL z)9Rq-M0Mn*yX64^4aP2DST;P( z#-G-1kGhATKeNFXcOn|d<9a#CZN+mtbgjDP7w%k@C|bM&S8kVS&-FW4A+y}IOhkeV zyATBU7ZZ@9+;;cbH58FPiJ~V%{dt@4ch3B5WqSo(gLLK#@U$w>;Rc}D^uriS4b_~5 zSVtRLPug;%ZAkY;X_E*8fRIkU9)*iSV?(z2o}!FU`%XM8toIAbQ9|6ZGOFBkXAI1r zL?0D#Igfxu4m+95PTBn>w{=Yi3yk~PU8&-h`5>BBSBwE}#mm|P3;~?4`=Yc5iJ5Aw zF;;`SY~DhCOFmJZX;H{+6Ml|H&968&(-7{r*V~Z`-*e!Q?$4qBUaO^%T`7oWik@4^ zIHAeZIo6N&kE-Xpf(`G~uhR#6?rvLDm{iP>^K^?vkkq}J8ptJ8) z+{|9cKg=K0CL8P8J-3v+sh%=Y{p`ZG_&2m-S-FtGv_F~edCWkC(j^*s`a0&Z!#OAxNo;1gCu86*aV~BkLZz6j+1)j&mMo=;C%VC z;+7BYg&|ZWahc)YbGD{PSj2e53QRHm%S(gaIY8X7-$es5*bsL;;iakH@F zsvOK=0`38&%tATj;l6`&&mS8Mynt*p)j{us9a}|%1Ghe^F0M^q0GX!E+&4xGAcE^! zd=PUi2V~MHs*ei6Sv{aSs&Nzg&9PO7TgWXO(h81*dh`0fEV|$E)laEtCa~rz5A`bt zR2v9FrY^746ly+tnZxVn+)$WGfg43hPO#t#(Yjc_xkUES4rc=jc^}jyq0JGs(9-Fi zs%E(I)R`8&Yhd6?h0hu;HOucyXR^=plSS?Nj6GN~BPD_^K+hvmE%Gu7d4rWs)Y+sf z>q2M{I}}H8*SU%i4p&gZQ>wJZojnD0#Y^^5eqa7#l_6(+hQEU_rvQ*&wjKeh44d&+ zNjxcEitS&(DpAXd`@SFGqHKx>T(;C1p!bTmuo>zX7!>2 zP_q~x`Ic{{a6U``wF*KAZuY6z3@^6YKeCJ*6(ZUlnMuqwP1JM^Y&|MBB%8I&WI=a(nBjqG@N|&n)>`Eq(X{%%Yo+{O50|wa)#_DO{}I;WO5UM?NRH z|8QPc(h6%{P5beUYSU=`uGh-#SB|9LXdi+5#zL2U4H8FR5c2~1BW#Zigdmy z^Q;WVdHp!N5n;ICnmGc|c*zdvKrFdh85dMSKEN zZ2*RgQODlfti;`t&z0QgQnjMuC4Kf4MZ$G1H zOo*#3|7RW1Io;TRm}Rus-Z%ecd*Rr{myF-pQLe8Xy^%gyk~*WFM*Cc*Zbrg730Q(T8h z3t2G#zQ$rJT41mN^qh1#EWe)i zU=~JzJK9~Y6}xz7`-ofAeb4hRf9tr~5wlU|ozuI6{SB<#{T$S`{{m1afeI)5(?zDX z9++HrQMxakBF9K&)u0pBccYt#{AC7(noeJ?&=QQZ5C zvb_$7atL7jps)mDjwuAHWq^M0-<-St8sxpyouFd+2h*F|Oe8X_G(uB@{v+QZ?r-_d z<03~-o=yuptt@Fvz!oSUQYKN|=9m>H=|71TvLF|uC1DHr%D`WG7i<=a7A^)5vCoAY+~{K@1MNUWw+aIt%v4`q|yoca^tkPP03f) zd-;3&@0XRYx-X!A9FoVE{F>`%K-Ks;y_u>SPdVnG->&8%7yl6@^{L!y!$p$3fR3V+ z+7qR7+vbREB}1ExM!zIaqHrY$+2}9VM0w!-Q~KmQm+a=1+kYLX#0AyzRl}Lj7QCO1 z8(B|lO0#d|0x_WNg9s+d=oM#FZqQ7svdU};+{Nqkxo603Lo(ZKMZ@h{ES_1d(gL#N z+3|3Lq#K;}SRB8qy-h)^Mav>W+$@3hs{4B)*zHt-M*xU}y5IEF7{HF&wfPSx`sw9x zhjILRsTAq9o?-^6=X=USCUo^9Q9aMWM)4+1kaK?fnu_#eNUK%omBA1GtdB*+E>*Q8 z>fEpmt7{-SF5~N~r{$V0`fR!PJDSQjUP0a}geTu>&Q6WX2tf!{9mq$4$MvN6#HKa7 zM9=#6$xVVF(sjj-A^94)mZ}O z0`&ggG1O$00;vP_f|k`rLkvv;SxdPyOg=kIWQzp^M`h`615(-+a8BwnJY>dOcdG5- z;(-1^e>rijP`ekf(i=O7W?t(ZHe}7N4Dnn0Q{?i$9M|2c&mQs07VwaS9&# z$GIia&Us_II{JB6%UF7{?4PGclRubeUA~FjX&2Yz@0ms8{#~ zf#EDatiG?689}{Q6i%D7bsjCy%F-ad1&4Ot^KOe!e)S7mB^-I8DAuU?g^0h@;w>C}?E0kMkDe;2|*E>G3PqwlONLD<+j)Zz0=JxYq0iM)Hm71`B?0e>_>J zb+ZNI6KmKsNH_eNVnxKX$XKLaU7F`=B(w!8FBWl~1h&?;4!KPwmvtelo94^1{?jxy zB%mfB2;r^%NHZ4LuM#`ujm2FWEjVMTDZ-0#;g?*@3VB|l9QzfLSMH;CZIuaTuXAf9 z_e(ye;`IX(OEmmLl7f%T;HFqMrqLJ*->aEcC@O8hu99P-@fkI1_cQ4J%#<9McyT=X zMs+wo>i``Wc1nbv?^bvV8gv^H@R}h+d`5ZbX>r);bWxg7|8fUS!J3bYz)xKWGjAG0 zp-;|>WpC)!!9jsXaa?ih#ZgaIJ=J3&u;D-K^?D#gydA6kTKll;CUd>J6yYVcqAk2W za8-`h{Xaumc=r|Y!N2YQyfGbZ!n;<&!cDCZ)iF}TZ6+<>HTLIne0m{v{>4uzx4))w zpixh}kLxn*kw@Vh1@A{A#z;u7G4cbFngvld;mw>LG{*O{)jPj~^L>MQksf1nWMdaV z&CI(yi5efTZZZ!pMq|5nZLQi)YnSV6Y0XXh?^$-P+q}-9-OnreX!K<9E@hSWK>sZl zzIY+{&F~fGG{vCFxUJ_7{^kSth?&tD{8*w#U#5LM;-C8f*L100x5ZFaOiE1a$>}i& zNL&{ODraF%2r8?_<}bMbrHXUV_s|vDHgozQ9`g*{ouGhrpMgJcNY@KM1I^(i0`XPMBI0Fhw@YCSLmz3W?z-eA+8O%x=bw8^LKt1fJ=gIP*Jr5be`9OPi}XUQF~|D{tDi_3@X&euthPq(hh!gj8MO6PVkh&W2mN=b=MQ9; z8i`8#^9nv7*J|j{+!ec8$vhN-X^YOhrA^9tjD_54KZI!mq zHrUtU(-{|0dyxLTpi;_uo6vZTr%Y2#nxxA;+9#D&!fR0%8*G4&;l3phggf7!(3-fs zVDgXZ1l4Ic8m@R3=;W&s@GruNtkGs#^{oRz0g7*M_qhX?O>si&5MCy@J)-f{LF%_j+B;j%d%VKucnbmUv2$? ztDu_jp0lDusy0xH>X8DtSAthoLR)+oky2u7VWeQt4~@2oXm-QO=at8|`DRkfqXuKS z+M(t*a<8?`cwf$|8_}5!>4*aMN?Jl%wfaWSNZ zx~eA}{^BDS^^c?({QSCCgM{?#ZaKHHK0cN$UHN_Iv^@Ji3gSN4_#P4TdCL+{*yN$V z2!WGhh{p1Y)VXh92HvEp`Oc6xDc4;zo||6sSSmWW`ssiIv+>Qzsv=rK74W_2jB2G4 zAU0mw$jY*yD>pvPMPiC6cd2O@m78Mwg_syFAYotU>g0&KyyuSP#);{zsKWemCkEr zKaN_X&s@_sx~0P|g@Xz1i-S(3HyvTtkf1aP-U8Dsx2V-RcZ(uHAHx-9&R+Q;cV5ZH zZt}5eF=KcPHnn_chFvt>&OWl;?f51P_w&Y<&M|5Ps*^o6@i=2b3KJ zWC3{#+~8>5QPH-vJJO69+(MIg;H0z{P?j1L?m1_IAhMZg!OD^4f7~BuGg2Xl;o6w! zc7vd7i0z=i{#GGUR#nuww(w_m53VNo3cYJhN_-U`CLtz#K`9daqCJ(+F~CP+!CEE| zDQ-Zd(*Z~y&a>j!bOWm}@jh|OdGjsm3i+kwC{Vby+%E6$xWqXy_1ep139n|| zx}Msv+%KNN?anA&7^)#RVn(9m+I@T`G(T|Fk-nsW0K4U)K2^8uJ}u)V1f7 zN~c;BKOmEI&fW1BMQKSt^i>7hA&XG!{KMYt)di)e%?3@VLn(stE7K-FEwwY$q=xBg zGzp<&X4i=eZvDi}y&;+j*MG5|SI9!1drxnk+7Wcn-7-kXJv)aDeX-A3qx5rM@eONk zYTZ-!lZj16XXHYE?XB5a+#ZDVn3&^|?Z~$xx&2JZwEga5BGN9BOyLc^?bAuew@xK= zO|hlKP7h376JO*Y?@1HGDr?RPzCr+MPxtw(E(!>oy0N2D;;0vnhakrH_8Dk_``s=o z|60zijWRtDkn-n*?=5pXjv5+L9Szsj>rpb!4_tBm{Q=wkb*}S~XRfXLO_=USZ06q>RG=5h zie2*seX7gACX!rYsy8|Dso;tmGcu!mS#WT2SJ8WJ&Gy{E#amO4V}h4Y@&e(U}MY41P~f>`8dg~?(n^Aph6qw2LgdPcI|Z+ zL&`j=5=dDp)QAhv(1M|(8KYF}JB{$Pawj2%XnTs97N#O5jBzwp$EZMQ{imsG9>KcB z5DtufSPvjxBd90iDetSrjSxwz&~zj6co#$EJ3gtu4D{Q#l!8!nf8kYKBQ`2g_R+jR zD&07(;==yr;;h99R?&=-cdgz3W$TA}(;0)j+s*p@wgd9cu~qi0t*5K=rvHoM64nC~NZFnx@a?-_-AX`iXLzSN_YR4q^oL{-Jl#miL&Ue^eeTaG|Cd*w~WQ zzL#n>$_cyPA~8SoBCVW1TyFtgEJ1C}6Xr1BWF+4%Ypz>zT44QT&#EBiGG`S}ieCm)a+KH(En5)*)9rR0q!g1mOHtMBGq|C>u$AY7Q#&WW zBbvYLNm5Bz{6xK1E3|u)raPZ^W>*td+1PjJ;(oGDle5wk3o-&SUA7UzLtG8Ym)Ut) ztI%c8rG9m39FrGolZkn_&YW2V%R^N6Ev>Jv^X8saLdtuK;E!_5GU-3Qk%Y&FmfULt zP!5I0GHiH*xr3`B5BH=rB|c6ir9M@o)xA-Vo=g(le&6{FwTN?`A-{AH)(q*s z-M=6S+`;eQm8zl=7dmgr@D~rKO$$55&^I$X%Lc@H!a}K!Yu;P}u{)pft}$9n>%qWU zLvGNs2%Mq=&@dP7xY26a{?UqLBA2$W^4ZTG1$`%-9!x4zKOA^z3&9PY&0X|-*(hAv zF(%)llc_zNUb*ld$PQCQ`#O{j6wApgUT9O5c(-;SSI?>dq`&ml8mRIQZBx>KNPt_L zYFBGsGzu=z(aclp#frcbTOaj#kR|8fKULJ24#P&2$yP)9b<}$E;54hy3>Y$d>tk>Y0A} z=CXA9%_x+9qqmz#DE*UUzo$(kF`(9JL)>^_IKR~Q%vFVha)J>1N2rxWUr-BeUs=2hg7_bzNgK55N~9{lYd zmAZfZ$~WFMZFwDZivcDIwqg>)dc+GU-2Zi|t?CW_FO?)#)$_0?=cn~=wj}nR-Ac(a ziWw3TjcA2-EtZ2*C*UkIyxMA^(AALP(|&aFQ}B;&Cd7qe(fPVs>sr-?3D*5Pvh4Cs zqkr&20r%I{V6%7zt??Rj6((`^D8&3*Vh!LmhvwAPm)8!MuNG^J7hs!(cbjPh;e9rK z%J0ODD?#dBn%k-wW-*gLKN2eThAPsAG`JeDABw9D*(leOQ*o7JelF-#qEAar>ZqAT ziC?eozdAg^9iE_-yix{Ji3cY9WkA-QoAM5UChekwK z;e3;vugS{kZx8cqOyDNPYd{51b(FNS`~+rVd!^6VrUu(TI&L#J{M}flms0aRQD(R~ zTDeotMMMreVBPkI=)+1Yt`NN@wu@59x*cb-CrW-B;R(8`~{nzP~4b#Tgm7$B0c%f*&6XrH9GU<381B$STR1Wm!(Zs^^V_av`!nn{soqp(;mZ3JI zeM)a0)|0=O9oh6PVn`CEkmju)k1X=}a)@VbpxZcD_I63TMt#U8#P{V|hgnZ_r%aTG z!hFXBigMv_v4^Ih#6A8wu!tL`CB*2!c}XUV{TPb>*MSL#qGFSABT}Zv^9wTd`iqa! z;~w4(TC5nLn_L|ggVv9ZC-^+wJVa?=mG&ru)&Z9W#OwXfph`%n_@`sal%f&c+(PYMoodC<%yKlIzN zPQ)}yGP(V30HLA-RA37ftb^G3xrOiyzXYSm^l5A z{Q_@VXc`ifE?-zTR1*?~@$#ovuGhi+_`}*3U;|pj#f)P7%)t8ajP_c0&R-l^@R!O8 zdul^}S)R1u!K>vx<0J_{B$7!`F+xm}flY;WH3AHI9&W&g_>e6#wI!cSSSejsF)8^Z zbIZBPZsPxQpPJL6TsN5h8_TbD#F_lp8i6%21fZwOGY}ouhLu_8#5X@=I0r&hOJvuZ zC09o8dEFszjFq zfp8gr5kt%A;lPa91P(%6Uvq>J>7mr+`qx>#re|)kA+kdJ+7pfBZF8B4#N{5Owc@BaXxvj)E%(psP#4fxjZ1CXV8_3DR9|e!+<+Lo*L+Oe$)>R~O z>!rO9PLa|p&ul~-OI$qkpAa?pXkfv`S)iM=kP&2yf=!90Vs11)oozuOr;YwR07y|( zP2(ofLax+SjpbEj)|-c?Kx{#}uf~ANt!WQu#}jYmzFDjloA$hM(e=qnvQ^;*Kiz(WBZE1%ro0C7a%E~ zf-5zwN}KU6 zaV%SVrlcQ56@H2%wLSJP|4e^+R4^BF9%(!Me(&7#Su3gQ!x3?KiV_F}PQoic_FrRt zFO+ zuT>Q6CsxrAmq6Yh#bg;)C&n{dX3{*KR)$NbK%d!CuavcCtUdy%aH`B?3uhkBABl$}}yCk7BMBgKw?; zph%l!iImS8=%a2hy7YTmc+WF_hcor&UthbG)7f5os++8h^njDKbb;pXXaGe;1(%!G z@n<|mqc^&(J@7a@DuC&DY&|p@2maIQCvR8BzVCc+E6Rk(DWob&SADXL&$@2h4Ye~` z5DZxly_^s2_Iiqnd zCRL2yKg?rE_e`N8#DwO>%YkL? zWiyb^g|SZy`oxxZL#lRF-nXM@o6f8L4dp#*KIf=*j@0#9lyTAn^HftUnY7zkB8Bl+ zkKC4sZ7ku3hAlnjY0U@Q_BbB?EL@+sUd3^IRvA_a>bp|@{qUvlk%6kH~!Ky0Q=!_*TjK>7U>QcMgeHYT09!J51UR#4>5 zd{$LB??WsO>6tLFaQsl7CCBL=M(f<+?Tf0d61K}}_McDz-usvZ*wsA`i)I$h_9m{8{?<2e~(M?5Sk; zxU9GjcE;UVr|Mms_#neQmv&N`Y&G0ENQdx?rpfqtkVteAjlwbbn8%hBvdnjqhM-Z_ zQ{VYv)Ss+5r-#yZCQVu{HtcqZfY|I*2uOzb!2l+%;^1``SJ51I;6w)ZGp~U>a2;K9 z^)DNYe}9&IR7lhqPzabYRB4#Z2eU<|TJ<8>TjC+=KaR0w_*-Vqz@G>?x&1#p)f4UR zl4%izB`NIoUL120(oOh>iNUuC{H3_@Hpa4jDU%(OBfK(L%3|qJRB}vu0g2M4#wbza z)Wy6UiLgxS;7oO?s06zqxFchX5vVJo3nci@xc4TtICgY-!n>Zup1e5HNY8i!?vs!br z8>i?+){JNIUTZ%7?bBu(?H2wWv2to&J6rFaZxne`#Q(Tx(r}Ne@S(1mbCpCBm6`bo7(cV%)EwnA2 z99*ehW(nhjS!+V-RzTUkNW5`_sQ@`aUC;m$Q{A?BtGv13`a1t{-sFvM3i^9Gj)3@M zS*m!)HKXiZd41RB+uCW>*AcVN?LIo!8Uy-BZ;ka@P$stj3~Y~8d^u7@u=o>US5i}? zLXb|t(kdzC>Qr*`no1N!7?13{x=L3O?~_@TDSp z#~-lTniMOjV*c3L&+nj>JrWnSu?>+Fmd190ppZwOm~ir#)RyIDea75-&RP7Jg#*|& zaaiMH@Z#mW2myc`&i-CZP@U-F#c3L6z?%7UsOb|lnIEBB0 zc1pHl5O)Xi}vh&~GE72_e5T0*wl&?xn zuUvz8>l}8`DZ6q%;NvNhu3Eg4EmcF3TvuS5Sr^9{3HbX{zNmXX;L0g;qI-|dt2d?k zWo75K+ZRxR{l#_{a|pio&khbwjHRmOT?k6MiLhU;1-1y9lQ9K&XmPD6dBvfi5yfA6 z-f>z;z9Ux178wCEHZty;yKtI3yY zy<*G?!M~g+#dHhf4@wBNP|qj8ld(oS|K0~-Jj)_TOW?wssLIFhQWjI!+(H}*8<`lx zj&_O#kPU=@V5waLB5Y8J6gGi2cILnaL;ymbt!JVjPI!>G{NFMAR9nz9edxN?MlhhS z4J7>h{=Ze+%1iFL_{2WM-IZy4*^(S%{}$@xIhQv_XSw9-CIs?9uW$>DLjeAnk2Y^k zs?Z>+&`R>0jr@5HnxsL-l?rPD+^Eyr@OMtnvLu2amgSgcC3|QoaP}{Q(LG+5G!Gsq zvJWizKKTtrypc`NoWX;m_sC>|Ae-a&UH0M;MEDKBJO*`BUy$aZ%UNIKT z6=~rb3ZKBp$ub!{FZIo)P8mAgjFSHx98Dah5(pvXI)~>qcvmhx67PddKbg=!IbmYvvW?}kYY|wXSYe*-uQ7?aToejcA=J&({6MK zh1{*zbu(or56`eRs_%`f3ebDoLf(t9RB+3dkTdD@v%4wPp)MOz;(buoRwKw9LNs6v z{@v?3oXl$w0|>X?9v!I`ITLU0hJAq+K$>IsQrYK(Gra00=Ms@G=2X&?LAyX zu4S;DAE2n{pgZtvJGpduL6~|Gh_u73$5O4+gvQ~xG_xoiWUPcLHJ7P5XCPLpH zf9x%1duEo0k*+Mx<%+FbG7}GxT(C`5qrn#$YbYqXo&Tu1q}BLYP$@PoW39b4ki0j( z&iTYX$xXnA&)fu*Y$ID8xa!Mt%HTk;y)YyZ*{nZBRp;th^;#ACqepjub z_h-Ry5PW}YE`VHe@!*rV52 zgCCq@*#fBx-y@IUZ!tdiUd=l8)-{skBRcr=`)$gVnlO0ohb1TDfogQRlgb!f?Q>LbUe#89TyYWgpN4vo35k^&iUv>x?%;b$;>2KQ+9;*i)l-FiyW3ysJrWa7!UKlFM)(A0R1oK3O|>hOndJPsXexRf|S_a?pMMM ztj@BN)hHe^2QK4IOq3VT9e4gJvLE#d2SHhvklumjFaOqEAR_Dm+aeF9e9eXkwv`W{ zmCHD`4BaCurBx}vl9*kSFJTC0)-+1#EQi$rdM(Q*uA^)|fR5Y$rPwMhx@t-KEA@Il zT;;x~sD#mpIcmc{y6>0>`|SsV)XhB`X*GW(em`ctQTO_0i%@s<;$=HS>61va73uAW zuW4fXRV0n~=19sp_vX`Td+THNc-GanvkopH3nIP+cJ&tQeq{IiMdVjc%n2E(>QqBB za-D|dS*xPm(~##{nc=ReeSKLANg%PP5zj<#6s6YLw{Asr%>8i(eTiPhxbT-*yzgXR zWyt}TT{pr-3cd~0I?B!K*7)f6wT5;jDfE?bs4WNj5JXU>A)l>Xlp^XGCUzuJ{aEW4 zrdC@e>~Y6e=SWa}>!dT7@qv%jS;@MKdcPA;=~9sW3*3 z;bMgXzWQjl-rje;z|!&p^rA2;0v9<1;9mr5wyM||xor%`D?bws{0jcrJTM&4W=Q~d zfZ%aoxB_5XSj3I&UsEj(q0azXD(XbZ9r8hzstzVvXXCxD4 zHnc`U0*B|AikwGu!_S}OBlc{s{7@xu?c4q|G3Qxt!VggwI%Ycis-K1p-tEF^>mLQr zG)QSXcVoypT^KMIDkXGzj8{`6d;-dvrYC@0{`v?!DPU9C?s0_Z`L=>pp;RDt`=59a zA^hH6-r>^ea#rat((g=IfU7;Ss}<(PRQSR7dZ1M-c?3wB${fk1%m|Ol`$aF$PJ$tB zS|%!{BECez`ze}vpwwN{gOdEPMS5*OnzZ?;>+o&+-5YK&6+(Sm)6wpWYngS3Ik}d7 zJJ?Z607KyKgr@!CEGvFYaO+QnRR?db6!T`i{S`YZxfG&u^V?Y1#QdC(M^EStbV{EW z%(&$ms|}$=s`~j89+i-{P>>Vy)+X1%f6-fiT~jKPeRN8BdY4>5@a?MBKIaJ2Ty%e}xc9?MlfjBWyFTM{G4rlv=`)+-+kA0{9L{@gpWF6a@Po~5~_a2zCS zj-x)e5Sx?Xx4=k^i^2_XrFhU4C1AVT=~KLIWhgT=p2_dfGfoTxq05i_9aSW*nVN9v zSYIut^e4z)G)9j!xr_F+7IRqub5L69{!v3m=s#WYHF=Il42;6fgiVvJuwU~g$21=a z77Y`7eYuDsHpp!h-*Dk4;}=QXlnGA(W#bmG*VvK_EcqRL=X~>e-$CTV`kEU{{|=*j z8sddbu}5CUdG*x{oOngEAbV?Gm9F@gC4)OCKSnmO7i@3L*lD@jVRbR5W#9OS305{+ zPy9!cz|lxc6Vnw+Pmxi7&|Z2xc@cx~dG#PR;XmmU@w*3~yK9=aqk|24o{<$tnW9XkmHy1 ztrh7p!^J%=-I~y-M-He6M9dgMN_B*SO;%TP?^#t%sQ+2qOEtL5lw2WE9_BY{k#p=r za|Ff37D{=|yDZA>v~9Ht;u@^uU*WXl?{hPGDQiO_wV)9B`Y13`Pm#3aJ3sw8K+Xz2 z@ME@*_J#QiC|$%6b<3;D0t&}l@x0k|CfF)w&BoikVq~?a`Xss~#g&Kph(0xGy2cL@yq)>;yp!cG4!l^q-sdrGXCVOAr{LKc~%>6B}hWp?UQ~A zmxpAme!GUjClFn&nhp)YNUro!uyit9FY*PK5C5q>?{R>CcHtF zJgEfDRc(o};i>VD?6m$&)$V_e)}^+t&vJ@aL_6)*RYy3P^J6}c;R%#!)RtSBsyihc zbuEXZ-(%C21HkB(d&GoII?e&BnBD*$h`NES!E!8*)yDOC!d**7R_3Xmp0a6Lu23I zG(8ZC({cWc?NlZpd3?TE4@@if)#yfp%>{4)PcCN-FfQe1fNXnr~{PM|wk6Tx*KYy6^Vtgkb&F>BS`0vhO z<2UgWl!A$pAW{vz46lzV$fm_@sd zVqJsS4EkTsol;ctA6ZZq+CDCPP6-9~lt59Wm-|EjyfuEA@MIyyfI5DFhLAj9Gt@1q zl3CUIDX*ck-DRRvLH|HP(SdByITlBAZO(P-lT@yqATtm$PmcBj&U`7XSqike_vqFT5d0Km`^d2g zXr45GcL-fk%l^go-YqHlq&NqLwkE_pIRET>T!(!Isr>S8*Njh_Kc8qs(h?kDb8kBm z8HD|Mb=saz18M^wv@H1Pq4yWU8}!Tz->xS7CxhbOOv_b?Def#CUuK;b!1?c-QO!x) zIHzrdj5pt!5#eNJxFb$s*kPSmBi*x^d{2S)u?vJ-Khg_^` zdUhtZesWA(s<;4%A|fi-`Q>cd{Ac*eXsI}BnXnb>8NxTY)a`x%BB0!)*K-GgJR1m9 zC$kwf`)Fo_T_|_MXbA|H`J)uF*ezm{jK{q+q5Z^|nOffzhfr8lECvwn9UdO z8>Wy82r4P@2hHp1xl(=pO2)qY{W2uz z=A)=kc&5w!*$gQ|kdc^he{11WI&W*2ok;;Zk4H_JJeqa3a$m`*Z|7Tb7E-O)yQ&7&z@?Ca#$J2Hrv1XDz+^R|&gb5{>ar%`IG-sWiiC~67RZy?R?1MA zNI^+xMGK@)oelQGCpaQ4E{k?j|Qy3)$_l6f`bUF*36j#cW)3=)GsBJ_BsmZ zxqY3cFo)Z&)2D2OOC)r@NGN=Be6&Op0pbpZYgVyDBcc)F8k`8b&YEdB&+Il2c9`Tb&d*L1MzEy>6LIA3lteZ!{(o+Q!nBu;`z zyrZMy>}y|9^ym~^9~}hNbZi%Vz<(a6g(1NPsL1Q|C=)efg8|^oS>VJP@bydS2G%ihn(VUi0eoHbBkfpXNbD^6M{xvYq zBBs%x=o}d1zA`xk8VeZG^6zy3EIVJ9)Ly==f~kE>n467HG$0a+H~w8tEnL7XWOsE8 z>&*zrAOE!>ikR$(dZ}So0&#VtX%?rG--P6^1XkX+JbPb@v!ME8a`H|km;1!6!8Jf% z3z}a4aQglG6+2C@2Ha7tVPbT8uFr{zdxp1(Fx26BwLj}U^82VN`d*-A$F6f7&a)YE zCbEuMyBug%9f1VA4ZoPljVPCpH9!xtwZBs5D9?K>+e>@>-*HMBI`1?!_EI>mvo5@D zzqEwrrf5$6dYKTOZNqFRHY{2%{G^rE-O-?yuWXXMW>QUn5BE+)Y8qETb;lZTib4Zy zFgOYS9<<2!a+I$wmJ>3QzJeLE-*tF7R|n_6`fikNa(aN?>b@lk%-?lT_4P{_--`|1 zp_P4DJijxtG)@H~pRqXjw_kb67i-LQo%td)BJnCJjoC3*k%QuObBUSl#r)lyZ#w1s zQ!rD}30cgK*vz-R@LZNB?Qw@|-n^W#qm#I6%e5Z~Vs`qp{8~W~aekSA9gV$|WZc>h zI3<$-<3j4adbw-HbcG_0cdrK0JoRYxn|QYRdu_7!)Yv%A)Lh5Pd$kC=EIo+AY#pSb zeN+;Nnvpq#+ijZ-ZZW$COfl~Mv?7vVVa{&W1YUQd7o3JPD?~hPo~xeUpeS@iBAJ(% zIB{W<&~^f)Gy)!^!JoXX%&&W8n1Te|2sS0xms@?x>;1h0J$j9kG2qB;pPzfa0p*YP zv*Uxl!u8h5?(LDlDgn>%$S$eEu7K^w`HdR9g~1OYRoy~&pp(2Y{6e5;`CoJ z*jl3|`A#v>zETGC-^@0665j@53J>PhOS-w}53_rvgrqVkkrYVBrpCH|jXzsxZ{zJ! zN580MPxy#D1Ubb*6n5A3AS>sK)P)dP>mb;DX81(6;++j+?5jJuF(`@7&?_@nyk~C2 z6)nDCOk;O;06$w!_dx9=4nGZD@k-LpCU0Fly7(Ljz4*YN`D&Tgkvif!IwLXV4bg-UEBeWeDPD@Sr0STI^gT4EbyNg z3}?sU7>G4Q;HgX1sFQ`^a0mn{kXS768~4x8u-hv1D{M+D?KC~*Zl#+(O#NghnNy3-sdS!&4Vc!Yr`=`Lt+&?vOkhZTMTmJ6)~MC3 zHBVwHJ@#ZEFgo3EA`*yVog`3iW_S4q3ZvE~R$&zkhG;rDRgOyDn=t@(>#?`&?E=NP;XHs!3}VL|2q@yi_f|)7OgA*rNUM#tAL7KINmlf20%-i#)(lxOeYRN zV~ORxBd?mrOHD9()Y%ysA^5!qjYSk253l}riWJE{;M#3AbGcp7)3p1a3($oZ)DwT> z{lz8v@n4Cvve!Pw-j1pCdYN}I@6-*#(#Sd0(q81*X(Hveh`S~sxb~Zkb?L$fNzdVk zZfFn7eTP5Hc28CNAX2q!!STQcD7x9XM`)9M2{|`^G2W?pmlyq_yyw-$N z$l4U4PrF)gPa_>}DZfTRI7c4fe(#4M(~#Xarr~8N;x@3) z#3k-;t@(9}9pymWaC!J@C8KI2Y$rHY4D9~?p|WLNCnhZPOEacdgNIaZmwTY3a59G3 zO;yM*)@)1^>syMPye^UFeur1*|7><9@;P2TR=eKY()qNnE+|9!#J;^^l6*rBp^t6s z!;rWI>9aA+v4>k}#*#ChoX6R)_brQv(7s2unBMw{cz4$oc=fh_Rx7Wt-u5aoJ2&g} zrnFi0pkk`9r0HdsUhEn|GHQ0YqvN*Vk!&j;h$w{L=u3A~UpF_!hgHT?xfJpe_49*1 ze)bxEf${y##UC%*$TZ!0L9U8Za)3Sg>CI?deF5l9!^ytEA%fnoTzQ~$3%;K7=Rl>> z3dZJMb#aEy)H+H@^zhKVyllq%RX;wsHf3Jg%v=uwk?p2;fKwRHcs=XSt=3k$vuT_N zbnZwtW|`-@;&nPiS6Ij+^b&NA09&@K6}P(26b9CpCh*Y*MWE=apFYIkFFda5Ad8Nm zo_q6Bn82o!W+ao*G`*}o=ZcOCtpwjr;r~`(ZJXXya{Msfm9-puEWtVK885Mg9I~tg zf(UTNxbYCcnz`S7tR14Ewhk^)^WJyAfz9A|6hgOSfbD>ccV^fBe{!aM0UH@0T)A=a zByRtAi`9=cnpECe&OZYrCbi+MUOR%MEc2#Xz318U0`I) zY1IU`@QZ8yecgmpW&B4w6^(7pQ0<@nMh?0>kp1hdS*w)e(gdk?x$3X9Fq_J5D(8C@ArpNkI;~#66#7bd<8fZ-bE{ksblU8#=cEEXJsSzxNt$Lch zb%jlFLOzogGb%CKz2MVogYXN`Z;cDtBfOdhW7rldRM`E8x}c`Z5ITn`l{QHj5PGk?WRetp%wKl933reht zhaZiSJ>;CItCs33`Jh`TG~{%6d+aQTT~x(R{a#g-tCz(1;r->?J8lIGJC_uZ=t}h; z>>iSyQg}JhjT%mq0D8}8e<7CJ!3pQ(s$MO_(IkP5F&n8iLtM=h8G8|dTVHL|_1h#DTcz7XC{Qx3( zq{2K49<;>AoG(5)cC-3T>snMMFLx5P-~~?L8!YC3c`v2@}XKEjYD+IT(9k3j+avetE7LA(w-}o>)gPz zlSNzA|M{0@sOP=oz%i4VRL6Ixx-a1DZy9gpXLY~^y0`1ggcpvt(06Oxom1Uod>j&T zVK5?H*Yxs zsWe_Xmd3BSKWwwmy>QXoVOXp0vy_cFl9)1Jv$+)W2I?<)cqphJA(7$?O0W&B0p^;- z2hc7Kpg6MCfl6UZw{fwR7=86&GtSbSd*lmUW(DL#xmu!RixPWU38#wqVe7ZF3%nY4 ziyltG?JenKG2SY0JZ81=f$IbhXfO3V-9%j>q9>K@81S7@N%?xTg&ruj0^%c`2*xX5 zI4s)FRsbS%XDuc z_97OOd20EBlR|r$qH>_02mGj6%<9tAZ0Ost4o(8tq|6rQI^d-X8eWY*=*!>G8dVUR zZL^raYr~aRm^rW6F!?*WIR)Fg|1ymC|Cjd&g$YcssZ79{=6_wYiWE;8NmenYfsqyAg7wiF*Ags*B|#p=p>CW z@Cqe8Ja6nMfe6fQ;LejAGvsQOTqmHuz|snR7Bpp@i*$uzS6)kyf1gd zmy3x-&0m4CcFK$qy+I?wNEcaEY-Ot93m}Rm$4X^xTA>GD%~YV#rYR&FTi8EpydHN` zxpg*OT%qyb$_#Id3HJ8Z6cbQ1sLJ9e^nJ%#rKgzw4X|f_Pxo|J`UhU(^qguRaS7G)bv) z_kg5ZrsknmR^4f;xw?rI=cQvGiM#(`h60g^W1|p2d)oNffBrx7E1uaUb0vK`(=q*U zlYWmL8wNBx5%3a?hJun(nEqSFQ>XA*NJQJ9U8uZ!N9IA4%`yCv$8w9Q*sviGPy#k} z+3JsFLzZk%U>xhGk~S^Y4HkEauiZ6p8U|vsj#aB+Ip1-l_@^oCi=sOQ46Jl~$E(!* zNqzcyDq!(S4MkscCoxvgO}q73X@F(}WXDq1 zz=o#?JGrU8s);m<_ZI6ePNGK}6^BC8I>ig(JX9NB>o<#mPTWqGN|5y^M3$%_O8x|q z?#{aAVS$`={b^b6agz}p)>7hYYT}k{d^zQRUI4FG)r>Xi5U|Wf_rzD-mm^)6bqr;4 zXCCgdwf#8>2!G_`JzXuEMb{J8A_7aC&oD|$%rJPhsv->?*yRu&mzK>eqRW&L4O+&>Yn1P|oD*A2G zCfc$#ICK@zxx`Yt;B^n8TFB4o;iV5y)YFJis{tvHZvUU;Bu>`@k=c3BoXcH)J&t^{ zbj#_VngV|21G&3!-wpABeXah4%q>l7Ab@oxovrXAA33sOAK|1lId`!qbd=jSpGgs4 z-~IN{a$8qj>9k>~?| zKQEMrc~~;CAl9_rB0ZOcWA#v*PBGU@v>QGindeRqJm_c`)l_l_{^EMS)*u~$AC^cz z>8MZ``Y9Sq&nvUn3Zp6L2UvNB$;@xa0D04%T}~q3vWf2mFu;)3Jk^qx#8gzJWp&m} zrR^BkA04@%kxXp9VznoYa5sqXQ$Pa?y0=KPWZ&oEc;E8@Hq5a(xAxAl!g=Kzym1(J zV0K96))@hM?dNyGT+Jj+CLjWb$976RUDGo8395GB+W`a9hAEbX4JxXMtj+V4<%g#j z>W}a0XvP0w?z;_{lH2_Q+aI3_h63ldsLhn0bH9X#nlgqa zP*P@!Lx$2k;;Exya2?a=I>gM2zJ3J-6XHjzUNlsi_qYpEmEsrRCG4=Jq}rDP>_^ueK2g?@d3O>ac@3*$t4vhQ9j)IAfO!6J2z{ zHZfO4mRT)fCqM@EfPx^R&#}C%L@s92D~ZLegmITiazalXFOL0{gOdeqK5Ox4KpL z>rnO8CfqA_rnb(I@MEM+g>w)bIrY~` zwIgVQLiHeuR-C~h^(m)Q*ll*y8XftuRceQ7W^~NQ-IuNU%MCGMUD97?mADHFghHo0 zlcpWre#+@dVs?LL2wnB-P)5FCna~`|D9y~Rh&Hpx@a|{ruNpUhi{X_(XEW4y*KyJm zEKsU)IWyIn98mC90TK8g;++K{2dni-shw%Xh(G6(p0<$VGatozQ)ZmeKQ<*LSpcSg z7?GPf0IsajzJaIubg3bw+@sv;jt>Z~)KEJ(3_Qv@9u|5yH?4{Z{I}w+kAV_A^&7Tf z6g(a^9fK7S_|s6$jHEgugA$b1G?`Lr2<O`Ns&3;SX9P`Kmkwd? zW?Ua*d#J=sO$~D_IROoK(JHhxF5!rRB|Vwcy6H^*BZ!DBKjXv>;W>? zEqnHDGgHIW@hT^(1PpXNi9-cpAJ?*JWHSNlBUx-i1@|)7X%i%{OtVk1Jh3&7C~y^9 zx{lQaXo0$i|4L0+3E2&NC*K%tOchnS|I^%m#U}6jCnsXFC%n9~U!+SB2Bv9e<1%FGtf6JfjGVPbjG2y) z?V~I;amhNH(9=$NA)---#0REURuFX$P!Y{i;fY55kU{y}+sJgU)jUYX#?k!Yyt#&vw;vZ+?kBw!RNsL)1w1zTaQa zKXCjZf-5o%l4etZ*j2yn9fOi+y)``oiS052eV;al;8B<7bVB5xb+}2?8QZMg4#@1< zIaT@S=$u=ATG#?^H^Q?4Wpvp%@Dr*K>Ow1#MfF9{#Qix!G{_Rl%(E6k7} z24cEjSnI3WQwW2Tw1kIAxE`uLBy7Y_+XMKzM?ts_l3f>-^xYpHFbWg#CM^TLV%^G^ za<<2R0zieK50bx3XeAeR;#`3?PbR8Yy^_xJQ<2qJ0Lmzb<_AvC%k(PD2H{K}ekh0l zZmW)OXn9MmrAr(K(7!}A;?J*(^Yy;db@JVvX6>?kxl$%7A427!CjK@3SEj3rLW}rY zIzWV}AyCOS_UNeKNbqv6d`eHJ5thIRzNYY%XYC|et)*TMLRH1s8uq{4llIP2)t+y} ziS3`KFV*1**8e=>`6CbH?BMf%WUgJtoNb@(6Q;?ySg*l<)>t=Vcb>LwE3ki77o)US z(Ra=lJ>^UAtjpeTf2Tp()dxbxvzTKRqS-xNVrCz1{*Axs?o+fsd!Rc8ZHme7bFBYN z@l6VA4J49&QnJeXny7(-8*j}p?wCSknQPqIGm&I}^oAJ3ET?@o=C2s<3RF-*bcy5ey~aU}YUz&-1CTA5=qQG6Kc zbHJwWuYhG}^LPCn6n7iQAs3&e6u!Y!B)1q*8;9TLdAxab#Gr|G1s|%r2wF^{Q#8CJ z70^IdOky8gO3Us61OUA}=w>UDpU&e!`Lg6A9W)ct8ESb;?sZp1-^j3|6Wtw?vABG9 zw54ckRqhXispJ>*OGq=%C?`A5+Xi<-@#O0V=9*)xsN58d1}H+mn7Aca!#sgZ2$VbnVlAHGnU zwSB}bogOw5y6@sDA{u97f<(7Udu>7Vi7MG_*MJdZPeDWZEp1z<@KY(wR|b&wN&e%@ zZg`Q6xxJFO(mCJr!T?7Cg6&mJ$k-Aw$7%4|$S@~#3a&h>+)GTj&eMg4oEH}Qj{(ZL zgKAjuA7X_wf%xd z@t&p{wSX^3lZjMdS=g!-SB5=iq%M>SlRArdy3`SIVer;LdR6vQ99~|PU`z@{tf;q0 z@Q-#N0U)Ze=rQ|Pa?hqleSi6t_W2)3kF9^itMG88iLvANDy3Z99t3xVaewkR|LNUm zR%ttEr8EugL$%i6W_%vZkXFKCHJ41TijQ5DcMjbrq^tL9)Li)P`PQ)hjP|>Qn1ed= zBm11mqFAS8bc08$xkiAJ_nTSJIqzv|c z^gs+ZVe@;}Q%GZ}$H=){r#;%49Bb1C`JulbCCsMaSr!+@U)iy~-^2H;>R;Ga)4FrN z*$?66|4|vdt6ZkASL_wDbFYMD%I;mNxs6rawR!yfRUjA=r@r#jyL#Hl5FtR{^(QNf zuiSM@1DGhSU;KdA;hfURv7lXUm0g0xR`lm1ZPYldjjL$|2--y_M${pPBNHzVHg+lWokaV`6+HjK({xzcrVK{(!j1r}tN72sUQA7a;n zjcusRSAA=K8h7BDQxMx%$%@tH>-<)YDg}C|A!i+X*#qxrGHB zJY6O1C@?n)s&m4b4h@SOq+)gN;`HKo-_yePVbI|)2?OI1eAF0f+{B*M2Es~I0U@yb z8|}>p8u>l>bq7aN&CiEhjhepAw_OX8+zQnZc5@!x%3`}K4p2@37#3wA-lw`-P;Gh3 zMI?R~1)~sAe6ariJ4kmP5|=M`>lgg2s!sT?O|Q&b$XgL`dQ8;kPW-kj+M=SsumI z{qti`t}fPUSW3a-c2&1Ae7!yca0gTf9S4dNi03_WO-SMRR?VrlJJ`k;cSBd58mHR6 zY}H#B^3?sMR?@ED=0fsNx#i`N=t+k*z<1eKS%qk7{cvfuU8bvt($gl@g}kV&|&kG7=(D~prPdqNM#ueDoDtFhSQtEZ`a@~p9QHq+D=x@FDK#P*Qm z2_2EXM)8Rgsr*+Hh z+4qJooq@sb4;z4p&C-pBrQ>6dR2MjednScF@X^lxPD#vyh7BkpY-S#(qErY&@?en+ zlK=Cb#u1t8aBKayDCX?9D5mSiX~HB*L^HsOQQDigqzdV%7dP^s>}hkNCG%vqKF{`~ z0t17=KR@tNydgmGobStOCNCM(YUh!9;PxWj+@4BilrVl>}PPYxzrp-+D!BREAF&?GYvZu}HIpK=qo7 z9u8ETkaz#6`?1q4^Z5TwFAghP@T|smOzjcLkJlU(3Hde@HhkRQMWo+t?W1m=44Euy z++8-tnkq5+id8z4eDphVO;ll{f&HX1=yYr1Wgjc2dVItKZemzAGy#@0T?qiPRF zMm6N1e9%On*{XqPFAMZ-B^o+-Ixqk?tCE;d)x}p)pHdJR!Om8E{j+x}!`p(l42ZeD zoE+d9z0ttXTrm*&UJ9)FeRoIaHs{{oL;{D3O2U3xjrBxrpl?=t@b5yEEb9WFO(=pio(W=GlRAI3UIADO&NQ2I!~Si=0jV!p&eRTLGn& zl$$uV_7wt&Ccy+*Jj;dp>*8B>z?!e_X^Y@krx$z6xrNiRp(teg2t&aDd-Q2j_BKoI z_uK2A-4e!81NjSc&xNW3OBf3PAb{?>E3MfK13d z@HCCgXIA2!Q2h9i`R?!E!TbDithHd7WeWkNkYWE3s*ExKaKjD3R$szF1y|A#i#XVJ zFB3H^vT9jQx~08W=b0>(BcB*gs88Xy1iAY-8B+3NT<|Bm|Gq1&?7-+xR83 zyvel|vRfS}Mlvrmil21&w)H@;tw?j^oeB5x;bYGW4L)*gLdpVC(IeXgVl(3uN&1g` z_uT66LX?%CNpSqX@)g&@ZEbb%=1fjaoR7TmKSyrO?gzQ%SKU5kX*sWZ zwe6N!Ud53!5xu!^;Z`hfSq^N7BUj}$2a1Y0QOQ(P98^wRsE89q#DyaKUiWi9_xE3( z(>V&fdA**`$JCQqlM-`tC<^$vQQ}R$F(gL*Vag}JkMtQ{So^(T# z_=2kNNg3e`+vJrJM>CmY+lbpg{ca)G3QzeyMn>2{AM$#$D%3Hm7?X*LtGFv4Gmu zF?z|{JIzxvrEWu|b+EI4>VU zsGA_>ccgcZzfxv4o)`^}(`c1T?~Cdh{qdMt%2#Q^M7=KPsDVbN-XW60tQNhv4MoAz znnbM_!Hy3#`YFiCYKlHT5VvhasR6;xc=Jc z+q)IxP!rFHZ0TDZ%ssZRlAYZVC?+mJ;D-VHW?*c*e3fo$QEf@P_rw(RWbpFg9rXt_ z>mllr3kisukLJy8ceP92Xou|X}U|E@RgQ;-{r-!sI2M#!1h#2DqA<8_^OyB zXd=1^CuVhW^n=*PHZtVB*4R&a2k%Ih5^MbXGgJrRGL9X{P2wl5VNF@ZN&g5W3RGP1aq`@I{L<_*{lUotq|92JAa+ zHPC4!+NevYzp;hr<>X+*ai4nJ=W7n?ZbD{mKNWSDKV~YqvWera?&k>mkZYM zx(tYO!Ci_TEGo_@K{2%li$pyxhw>k(!_La$Q3|&3G%OJ_BR;HD(TGhhP049?!{IbD zUEF9V`fc6>-h^)c@~^p-0kJ3><*E$ZX+ufgN;eSBg4KzAi3beCMM{hkkQn{+0HNI-k}Bv_idVMR zbNTxo7FPe5TxmXk=H3tymAufOIkBo2LQ)6aQOW+kygczZ+K0KFO!+_$-_F^l^RPkQ zaC<%o>t;#<&s1$UL55tS@qa62KHNWeWitu#P7J=Z0^er44*Lc91ZfKrMoH34#XHUK zkSa3JFttuQP=J&7R(CFF?3eDyo%H3LVYgE>>IGd{WRKXaKe5`}LkiEu{4h;GQUsQY zvZDLeiA(?mZ@5R`amq+bryzZGZ$nS<={4qR`Elc{e|1^d>ou!iz2R$2w~A^pa4i3C zN|^e69LZ}`lUssB?yk;TjDqAsMf(|o|B{6G0pge9H;auo3)m_rG|G0**O5=qB!tjq5}2_xE1t_&0kN&0g52Y+u+G99H%#<8qYw zGs)lW$hMs+I`@p8BF~m<1rN)ue!S!i-D(IbW}j>psbrRe8Vmp4?>W%~u&2M9vEIBQ z#MVd(1u-IAAi$)$arCHvgCd&=u>&Bsb|L6)X{r13js)utrL zj!v!baNP|5nXl|3Gw(KT*v>@z+JYuo^3Ww8(}K0z!1V*VLuSyNXb@o0aEk?RldBb2 zS2k95nWgsdQUI~V)b|DojMhviLrv>(=4jwK8@)Z{Oi34~UP8`3lVspo?OTHQc0-BB zz`p&KzMsyKs=v(kweuJfivE_W(XUZs&v}wE$tOlpMyIt{@bf9jp#znz1QEb}bJXyr z;E%tP{!W;+2g+Z<4Hh~_1`+>+1Ne&$#B?_3NDX@Ms7L4jNuQ6Kp9bB?M-Tov)Xb&I z#&0ttHMT;jELX*orB7e%=n}`WZphf&))Q{*Gd21%Ieery@j_^G4*BR|EqRiOROQO} z7j@x3+R657Ai5iSv8`6Q_lu$+gyJA(=~CFIe7w`|fNRX)5UB>6Y;W(;AxB{IF}G!D zD<7VY5VaJWFK0H<6X;OXVc!RE5r-#U@ukVi`hAE3iEejZsRNurMF(Jc%n=(->`!#9 zfySkgnZW0#FeLKI(&}eWO!68tdK_*93p&?Ix;IEt>!)XyG%YC zl|q}Cc42g*EB_CsWn4m7tH>R*UDY$olIG(yXbKO%)V^@b410eN0pn+?ZsTdr0iGRL0I9_)_1cv_{dX;p-| zMRFu`OGVg+pG8S$r8>X|K8#+aFE4fffXbGR0IGK-p{6+e$s(57y@9Iaot|-2v=(CH z46HfQcE$m|vjD(UOM)2=Lz+wAI2`DY#mVQao>{R_4CV|^x5_Ji>rEdFdWOX4toZ*{ z!-wr^Dl*;LJyEQ*EaJiVa9#xd<`^K=T zITvapo^GiA(5lCrt!)1AuNL6J=9lGKV5|Pnu<|>_Qoa)w{ikl&jKC|D=xWQ%V8jQx zfwCx_G#F6tY@T=j9^B&}Ed{$)XuV7u%IyU9}9eGM#5L%)>X2fsI_IRRNY3D(r`fXO7*(3S|Q95b}4 zqB-xGo~0aaeljbIgd}ez_!h5UjP9w)iMP+>y|74%>n-afjNIz+w26`wm#o|%)qrr} ztPo<1ry>bU5Hn7J?)BiP#4#NxD=92`cf;X=A_3}nc;EJLB-FnL-+Dr9UM!$#CM8p; z=8@nqp`;r9gFGsz|BFNU#h4Z&Y%fLIJOxLIxZBl<)yhO011RqE9n_eDS2iXP(p)#! z00sRjXf39 z)eq0@B9OLKz;)*{zxVk_IX+<6Y)y^UM#x0k8xwxv&)oG!yF~nl|Ix@}TZ>bBh?ve7 z<}Uw2bKtJ7f%HYgXkeoI-#Qs}X<#?cnGhZ+mN5LUmqEO3f1bRzl81CIaTPi#8+D)W zLEer2khH@i2)+9GqRl~)bY0-n(wr+kLefTwH5c1rZ;E`Wq89AXd2;%#@=rQ8phBC*~65NZ;u?5uQ>2n&Vls~N0zBV$=eFm<9Hb2 zfQ5fxTF2>XQo2(&w&T~iTAH-=;vH3CRebc~f?e@)LhhxeW6q)O9xV;g&!kY>>K!g1`^k5OPgVN-pc2FX(lJ# zDQIt^x}fU0>o{=~Wjyf3Pq2eOn2bNB!c80}u1|LC3BW8--2_V^e6dNJb~}O5@FSi+ zzKr(GG)jw6bQJ6!M!(cSf=qDV)~y@I`mV~4=LJU}ol$oAxj%sUi1nm(^CttVgHVsbao8Z&2!X@Z`g+GEW2FoGyfKClGm6#y_n@7V@v=nSR}b$JM4A zL>1_{%^(`{&L)7`ofAOYQByW+9dUL|{S>M3?XO3M2r>lsNI%G}uHdLB5E&-_`x)$` zfv~I53uc%`QtpmxaO!aJb+oScwx1y+N@4S&pR+7w*&0PeQ>=C-l=ILF4^eh%{5s+v3ANflRBtX{+yg|CZEU0gjRs5qLD9?%% zIksKBTLkDIyp{J3)E8b1o9M5zdd>YT`%o4~W?^R_32C;&wd5v3t7qzykn+)n;mljP z8TYG~sYF86eVz_4TJ&)z;e{C!X>X9#eFA({7`o?e9|5&r5BTr;Nq22`biLpD^s3*Q zoRb6wC)=g}rq%-sxZJqisH2|2vUURdpC0lSp^p-}4+5T`H9yM z5e#nV=YY#Q=LP$}idfT>>G0U(|shu#GoC9&0 zLR}`RBq1xJ8tcik9*z)JdH;5RT)jz1ykfS7?8-xV2cO2$bv10VCO)+p0yGUU4w#`` zVgu(l!Lb&TK+iDIE{D$owtuxQFj|OqkDi}d-Z^_C=fc})8((ac2v5_3TS~kQk}yn` z@ZD#9qM+{#?82YjzYZcMZK{*mCwZjip8MrHw7w|pIxz}+8AH&EeQc=t%|*SQ;ej0D zbrR4{gfA$S=^k>%FkQZ;uZv6JQloc%;@qK}3b?yoT629?s>3E5!y4rp5t)c1V^UhY z2b;gg$gy!`JwMhL>GhjEroLvpb}mWDFz9T}6WW+$s3v9UVJJa?T_36W`N`&qw|QMb zPiO@Ww-(7m1`=MT1I6((F4{vf1~IR@Y#(C@Aa6;a9ctSZ@V`KL<`7FLV83c6s_AjqFIkZ?y<_(DJT;U z_@J42%z5&&^`HzJC$oJ(X*|qVc`q_Jl%s>#aLX)-c0|&)oI0A#K;Pjb`6j#P$uBV= zGvgxL3=<@>@;k3Vd3k|p6g3dNqr0mek~6Kf26yyyW;H@YuUw9jLd9gNLC0WD>t4SkGWy1Mzlxq>WEFTPh(nQkKf--tLlBjN2o zgWkkCNhZpc6Zp8Wk6Ah~e+qBE7P9b+`1z^0t@{^T&S^72kyjeVp|`K&Z3Og{Z#x|c zJ3f+Y;k=cDzA0O|UnKyeyUNwCXuU6HU}i&~8fXv<+T=_zyd_ssX3!Lj8_rHWHLs^I za#d&0qQ`IZ&yP6mPo_&NMuUy6;xFrK+Um0h^WQ8A-qez*BHMG8K0!o6s)XjH-4txL zbGBSNi4L&5H?)nrgD3s??|oCAJCMDwxMffS$1{k$V7V9!UL^5EXs7Ava@;ZqXFF}E zKJEX9WShTY_R?CFmzi0NXLf}_g{CAwWKKxob0Qp8>f;&obBFwvS=1keFoF5Q>rPd<-1JImP15Ly8yj@Ayp%s;4S zIq4k#&@$F{u)vqpKZ}$usO`={F+KrmKZIO!?ql5x5od@yuK&kC~Pj% zLoW5tc~@&L=$#1K{}NwVzr)=xW99^2h@*7Zg}-1&zAF;=D-k#pU|DQE&6P|Pd$QvIYcZe{O zsd)cB^3So+W(HF4--lV&r`3ozfqed1*~Gk`7yZ*BeeZda;^}5oi67?4d?s=CRab}W zMd1exD}9HMP;UJRlQ{pu*PVqhG+uE0k>CGjD? zm$6n}D`7Cq8ct3G%eznRhy9=02^0hOq-C*ZPBYk@(>)| zCAX*#8;BiS)}ijg9bH4~Cqh;sfJ{LQ8r-C`V(~&9nfI)8F+yynvgvYMiLZ$)-$2Oe zyRD7UJI*%A1r}}_3w_n)(HtJHX7*}+H6QpOd=-fDd>5)WU!{8sDZCgaExbKoXA1xtf;$JI(9@x(PW!5{ zVWRp8rlT=7@-T%W%_fo)3{xk4?qyQCHyVsS&OHVOWZ#UHQYZBsitJeFLxGD~=d(kg zundb(ITa@-Z1K>(ylTKEHn4JuKmvX;196nc6+g@Hk!>;LG!j(x-B4X#YfIQ)DzLI$ zQ|r4J)wu(bV&Y%CCX~cYP(tZyzuX6DBeq)v09>yiZFkZs0Y~@-Y9p@e29ZW-;vK&% z+0Zkcz|5?pK>;Y^J~QE-G86n50^}9;yoo5V6Qh#xPCUeVk|nj(`7zQ)$t(?&6#1oX z)w0y)^tod+YI=*J&7+vZpc5iB(fj=QZJ^s;kp-_*v5T;30{$FGb{>n_Ut0LuOiNajOiem?c-uFDA*j=z*dRIcXy};Vn5*ksN)ikcds*y1BGQ$b6Y(k5 z>MC!aw9qnE4=dyA;t4X@IbU{50-kIYbER+e5-C4%nEwIthioMc^#tfT>GUa-5W z`)PH?s-TsMj8`d4H?rzV#L2_h*!>=2*OI7Zymf}L@?}AelVQkSX_nd?6D45NCu4OX z=$gDL@@GEQIYrKZ7|Dag!(SsQy}E5^ZsbiojJrGw8wO|9`VIZntkbWB4PYa2e}RES zHIV})bjaprmVHwQq z3<&fH*Xv`>2K5xqwk7vO8u!uGV>2$}t(Tma20BF-Km~tyW^kTYe}z-;yU`!6B=e zvthvl(*yfZz6xi!5>I+dNvD_1sze&BpjN_x$S4HlieyKAPY3rIKqeV6f?%p+CTkR! zv6+A3`TLhZyv&9c$CmO64eWOb0yp%yiSa#{<|eRSiaBx$y2xJ$@|hM9N=P%n`$&*y zsTzTk!0>{eTlaXjx8^R-GX^GmW;sg-wOzE&jE#z$&EY75BnHK|-RsWngkuRv71YZS z3fS&9jYp63s~Uaw(E+aM%i}cx!T*)O%gGr@Elr<|RKz?j+Gcl~{nw|Y_+pQox6LA( z1|ze^bg{whsd5xA}V?fX%p2gl|IWm8$b8%w)a0DncWidW`~ z^wqmweb*y+av^|JzYf_e4&F3gHvD8&eZ6B#WxXQm(v|t<_Qqo;0^hX-5x@{3ezPA}R93#(OMO&eKnI^Qq_7|x6rfl)0gpj5 z2x;GL)A)U2HZjCn(}~wRsh7!NgDow*JGeMJNxT83vkJEH6urI%P(pzJdiQl)Mp7{W z@OAu<9nDDLO-RwsA6Fj6C*~}RNqIz?T_W$kWW9Sxu76@OtJc5Dnv z_Pw^t$jVKp1aj;IcFAHO*VZSwz`d;TXFr4jB<9Pegx!3dPJ*}zS=(UsC2jiBCy?8% zGekk8V)W3g_mLOuoyvU@8djf~e70N+8oHGdxQ!mCmqa=7lGS7^!En>P14Sd5)9>(v zYgr&XC*g!+3jstgw%1s4aFwx~@%j^VKrDR!gxS9(gl%4O@q0n?%=&|Nifc55=s$|OA32s(^xsJ!j@vG~w zqS1rw59G;dAZ&m#A>seZo5j7$Qxy&v|8G`_I`l&Jz_teQ?rkd#k>|RPwK_MO(%2s5 zCcX*q#ijrARI=MLZSRqmu>W=eZxUzC-o4Cqd3LPLdPR@=*MMj)bnRE+5#s5*xRI0Q zs)DH#G5(`*=-#DxWJV49Rw*YOl|Hs(Ou!kaXW?Y0GH_9qi4;^S~ab?3YGQ^W`~y5%EaFT}-3=WD+cU8RZgyz(lvp zokgo6ia=xy&eu81r0LpFI+&Gk6m9KXzqKZVI@;(Uo$9ayh2a`5PI`pD_Vim*tYUuK*T^*IG2-jQ0hb6F zd!O_YAo!<#;_dczXUtA5S-}3+SnV59ty@v>T>rxLdU>&u@U< ztreY!_6?PTb?$7N4NKp@Fq^zCV2DzcG1JZ>N5-AkD~cYfO$?m%5$Z)`;OB`u${VZxYt;kG6Fyp%|C% z-A^6SqD%KwRX>Rhbc-n?#H{h~u0SkwjOg9>C?V`@W6;~vk;jkjIne`J4keqLL}F6T z>Iznli0+Q$vJIC&?&ki3&AXn??kg3-L$yAu(+(dX_Ch`qv4|k5AewH=J`A(IAM4h< zcBS}p_v5UQa>*IJpvluiE3)+K7!LI{n!fUWX<2MMkfi3W12Y)Udh7B8c@`Iv!ENP^ z407=iZ_mDc%__e(8>hJoLekeOUkEuGHq2 z1MBFAaqe;&rd8qZ3i9PT=82W09iy%4hft!6P)`^R9|JU9;wzr zbw+Q$Pt$*D5Bi>haT&WJYp`g+Qxy-@L%^Ex>k93LGW< z4+GOlPWv^K{-MoJybj6x~$~JD= zYjV;t(ff9;Z|RecGD5%}eQAD8OZX&h-Y*Apz*F*gcDT!Qq#5B@u-lZ9u$ywda@bqr zHF+TgSu^F+xykw=##?*bq=TA+9p)yV?%5AsM^rYmELnQxDukB z>NlW0_Dju~NR<&RFDyFgp+{(GJx!zA^!c{`r#JB}Ezgxd1(&Et?ljCWDOEysqVSIG|pTm`a1O z%cDRPrCSzJZ$8`ln5_2dZ{*)WnHRkwS^(kYzzdS#$DCxA?aS}Ol6YsATYJ((07OF*WaEB4H&$6@mDl$n`=V)_;U|j2 zQ<`U~*>LR#YVW!^5;Q+cx;%Plra(&Y&a%(T>coiU!B%>GT%lI1@;w_^DyCUWUitp) zfE`)3tD7NnEBAuXHmX$2a96I4my#DCYQ(RIUhAbm8=VSE>eB|Z3bgPL1AH1wPqx1@ zTY!;bZksMq=__yIA6%A{L$L{S?L(I_y5`c?H*I&W7YMNpSDM_cK&4dq`Vn*NS@14+ z-p`?ET(L;2jnM1J%$lfAUF@1`&%STbG^gm0Vn|%bmBWBez*UxV6qO0}egE2og(^Cj%^+b+_y_UCC!@a-^) zLk@bT*-}t2&1l01MlWjGBM-56!4)!7pWuSoxTElPQ-lW#DQ^6u^%!5%z4^-~YrC=; zq}kxSgPc*|&kA9^{#Qy}@m!bS1#p6f%L_(P|8@PX9c8^+lkmyLG$FV4O~e%pU`P>p zk!bhWMEO_C3y5IM2IJMW^FnOew8Q)>&mQXcWP>Ur=*A%pbLaV3J4x%rh-`s<3Stn> zs;Joe_Jzw7{G2JuI35ymz*yM)qnOcyZ{bCkNJZGPYlF|4I6o;SERP;XeBfGe7?;hp zoT@EDj7Lv)91?`8*pq55bVO%K?4Fumd4(EZiipx{L8n*8kJ(r%VbYfhNw-qjKTR2R zc)tJxM7$~R`oX=_!}W-)-e>am%0Nh+3CD8VmHC=ZlvZQ{Qr_gH4p{ig5E*jw-~Kb# zQY!(#j_6;Pc(UM*4w{TjGVstR5>^|))bY}64c@Ms$-UT-lVu3vX;t<>I@nUyU}6*O z?HQWOhG||h^2F++Nvye$j9ERmfE)cezndz?S8g-LVH`Mr_F(%Wo;tOLcSa>Dj~V~; zbREQ@FS0;KLn(?RrLGV>HfFE%0adq^L-5gi66KT(^@u!-qAm?b9WS{zAp4TGlZQwo zOm;@O5eeo(c!hpRau1U-dW97`;{u~4+z%ZR%21>2B<;;?j}@)B(~-$kUv%E-;PuK`JrW`RXaRW5ICXBK$O7+;%to7lEUM%yzGpfdf8@i3lDX*~^I z4BY>+N!S~fTJx{4f*e3{n+xvN1LL$~UbNyKSJoG-f|;dYLXUX}G^kcs##jmB;2tV| zbYdN-&bNBP7{HE_vJL&>l;^&4n-~4FW1b5=QipFqXc%6!{S#V?HwoB)G-UL(62?_M zlt#IOfb7W;AN~++yT5!FAZ?r;zLLKJ~T)dxo12P1F8~>D|ywTf~WJNrT;+8nq_HJEDrs4 z#LZG?GAy9OA*%nhO6!KYebHN^1=a2;>R~|{jc*BCu7t`j6{M6cYbx5}-142G%7V$F z`d=a;X6@pbe8fAcJ%H*0m$m zku^iz*}8pBF?zoZ6dTD_FsOY5-Sr8y3`~oM82-|iVZ#}}UJTSwiWl_3^u5y5O7P)T z@Ig;3$;XoZGZ^YZ*wpVX0lg)reY?%wgw=@rnR*rXwk`5dt_%}`l1X$(4 z#v-mZYC2PBSaH>;c-<3j>oHtunn94cN|=emcUJvCmU5#TqqDTxWs(HFE$jWMrPTpb z;>nVRioPbq^1oVu+7GtlaojBQbs2NjtYt5gs^t+smT9*kAA^9|n56ak6zyX0rVNx; zjaW!Mb{)xhc&YZ`{4ogChCUE_9ylQpzRkbeq)xAuYw2X~!;fso25a+xqc7Ncd~Rzj zs=pZuz(eHg#y_ASW5rPl|2JeOsnA8JysV7M3jgTD(h3~W;%sYk0TVf5GFS%t3djzDY{LxqGg$Bt z(;w*m3BFB{4;brTTPE8UI#*rdX?_Qd9Sw@T1iN&N;5?%@NEt;pS;iVOszo(R7y}+@ z!4EsO?G6K;gSma#+}k{eCZHEl`zf%yJ)4}hW%Q>~?tIBW7eXchC$+wHyYE|{fGuUkB zAO@v-mT;PV&n?fhlXF;$zzaeUD@SZ9>&x)5Yjeu{)g9@9ESBS?EP7tiPCDzI!E733 zFnsFI004$o=70qB=7eF|y)R(hXt!rqm7JZ?0)Fi4)5|+eX8!eBAnQ&u9H4!XxMj=2 z8JBon&t_oQ)IR~tD^femSTIJ*vKw%oS4;|f&)Yd^%Hnn*?6VjexLAd-zPZcCV12y24EiFA8D zrYX{F8{IkTd#$&{$4`qdSwDl|PEU7rl_KSwukOhZlviOjRYqR$0zI=X1h;uc*(1J0 zs>(abQD^i!MT(XkafbihgPWvNFQ?D0GRvXg zOZfX+E8bTvZ@v7tRu?bF%XzG4qXjS@m)3c6!M)rvMMvI*jACU}IuajUpH+Ky*^9TY z6QdZ&H^Bnm8L=nVldZM~dR~H1pi(Vf=@n81Z^)Hhe$`d><3UU{KPSYap(Mfp+iD**U*dP^xtqV0}zJx2mCVWtM;>LzTA` z;}q}o9!eR^nsf_SinUpU9n^kizRG1b9>x6_7Ini5A+?N87+!UT+&XeYgM1jzN_--F z&7pf6?WX1%1_H?3|he#iS0Z^?(eluyfvo2u-wzHOMb95rGd{!!tZ-?wO`p26r$ z(kbz_x0mE5cOGgf^+8CCR11i^Swpo(yAM@eI^IL941zYi%Zr;Wb~oTC?-^)@b_AzR zlPq;l&difZ1j*szU?O2bTzS%Sowz^8Px|Fae|excBG&#ND8{XR zT)o=RN-YIbIFSr?=U2MUinQn^186EGd0mTQw{?QMcZzqPhY%ktssE94-QJ-MVQr2V z_bqG%*J4GbGl+_63a7D;@p>8iKY=F(l4)LO+>jAHAXDpAY9IucQ?RC&cn6GMXhMs5 zxX5`kDvs^mOnr8R2gwM;!v{h@=jtbSXqGy%Z>eVvT_py^p?xJ(Di3)YKNbJ=CV#HE z>ER+IuaZe=T<*(H`Ewmyj~cvWBi+510sn_T*+H0T^(uS4lBtC(7khM37Sg=a1mzDr zS)`m%ht%MmAGq=sz$1wbBHc6w^R^16#^EA{_**p}F)Wpof{VfzagF-Nrl&51^2!0~ zeyxsc2#eANGYK$mjRGt$5*gbyGVM}0d8d3A9Gpu{FEOtNvyuTqDz!}j1kF}l_uD@r z8HQWxkHM2hwhqx$cxPb4v7OEbn73~{^0kUqE@Es&nU}*M7VYnz9byED*laI4HiM^5 zDO{l!40ay`bS4cAN(}Jaq{-3g@U1#{5ngCQpW#1n;? zOa?^#w)?MMl_0$BFw()3y_#v&Lkrel&4Gm>`Jae4Bm7wZOeIYR4tU5rO(Tr`$@hPhP5-<4R4S+*WE1|4AX%t4rNNAyUd=yMEFVwbG?T>={GdqN?kMCBRt9 zI%-Z#{>y1P{uA6z-qy=!<|-P+=$S9sb!{lI8Uo^{3m{eaJF|~Dg7h(tjc8y$N2g>z z$^HtoLjt&(ps-{XvpbBM##oc=2YuF|<|R=SxrL#*HZL82FOZfZe<5h}oUDXTkG`F6{M8>Je*+8%o1iwjizh$pYQWzwxz-Es zHTki*XUJ@)VeDIEo+`g&2Y6!o8po%pvKRLx-xK%G0s-jlF+klWgW4~kx5KQd#dQ;M z0vuS(9LFFS?D60SFQJ?$@KRq7$~Ztb6#goyTS~Y-Y0HKePCy!HXVu9|t!B0$;vO$o z4^(^kB3t$>=5koKn*2n{0a>Yp>vqN(DQ}(_l+RIzTgVR?NnMx90nG1|DlgvzCW@XK z$yHd0-kyu?rv@A2jg6m5OMmG^%hDU<;vV)h8n5bnLCkoqnUiZ71!5wd$O|K-cZ-c+=dxI}wv zC+m1HOn5Ih`NIgIWVPqHkLC^gk^6U)wvKxDTO3$d5g7A><#y=g5}GT|zOAl})KWM6 z+{)-;BtBlqQZ|;93x_r;wrVJvy#MO=2LedlN3tz>e_@6zyIv!nnWVP+rMe@6_di80 zn2;J1kQ1^O?IWUM&kflc$65i_>6)idrwnjl@BXY<^eEgur_yK%3}*EQtG^P=RjbZa zDWT?_co693YXCH7k_Z>}@Q?CauY!9~$@D3xNc*(l!8nHf6J0j2|*A zqj7oZfsXN8Bu4uys_$Z9H=!~L*wvR;&q3Z{sPuitsle{G+E;ybVSfg)keis091}i6T{{og_STK+%b_A;OZ$%+^O6%Nkq6@1RdGWcMuX^PtJz7{E4|pu2nB7F54lB%SS-EKdfy z-#5UR$pkYXym7v|fuGEUEP{`(YTq^FGOe+v4-h-kxFR#)2e5L2UO@tBXv1#k|Bu&v zS#k2~d`td+6-$J}wO8Zz;aeqI2dwB0T$31)w@87KDM>+Us4i9G{ewlwR{Q%@2dZ*j zq-&$Fh)uEU%JIcJ=OeQo3=|w1ExF9}7xfK&x@!LblzjciB?Nl4t9$Zm9F=m_a{FMR z*$1y$RorQe_kAuE{eb@exNpJSTuQ9$fr%{KE3FBG!{U%C^{jK%R;>14l92|FMUJ$xrm19#XBoF48j> zmFGC^qQj#&0L@yv_OX8Q?2W7kxh0B2+TDquOL!u+U^H^~(vX_%8eIF9VW(bNSx|O$ z@ioL-s{%}A#5w-0y^_}77J}@XR9qZcqNEm{r=}&?-7@b1kzS>2$LujaF8Y@taB8O} z`__R6)(N=fkK8W<+H~(@Ri-(cwNP?TY`9Q*wQqd`l_5om%|cM1~T+KrZW*M8V0jBHaL zJ{j!VY+u4Z6ey~Gi7|ZI^y?Xnx6LQqQM%ruO5~jls2@h@r$TzFLCxp=)uxm`Ig{w10ULE=C zMC~upq?OOL$BfDkn^h)-z1Wnm5dD-b^~O`_LJz6nu+VU-yhZr=yNex0_RXlt3rfr0 z=ajOTgS|aKEdZ`1%fg1EB%)IP3Haek19hH%)cWlE1SISEd2b1w!WjgSAXAR=U-1Iz zBq>OWXiJe6>AIntLo*k{1Wh*^+Sh9)i%DRysq~eRqlN&0IX7U5-s6jq7?`FqVyy?I zD4qqnY#NxE8=Sj9o0&B?5eJOkqsL$_uf@Bq8~MqzU^2@`27L?1z|YsN`vN0E;_?Bx zM73ABlx!9}RhM12;6J21P}eLvsahmaUx+KjMc34_->XNSwnk^tXRbHDwwlm2F`F_Ej&@6rp@cBn%vr`IS+Fe*Grxgcl_f(B_ep zV`xR@4hJ150qz{)MbcM zoYTZr;DG~E*F&MAz!yMnzxAkwi1kScOl`uNn0fYWU*I8rC}xJz+a)BtM0E>y%y980`<{N(MTL)I5`V^HfQT;<+D%psg5AwpPl@uUso)so{m4=EkC$_JSB>ugL%e`~pSY4;)~4*1aX)z}=3I8H=TO>UwTS(J!CvzF zr^y!e`r^*Syts7`xT_R{J@i&tzN1j$Pa7S*2)kE~V5irrw|B)$to8btc)~>^gCEo! zt8*zcm9;I2HsGdqC7G-Od?Dn(NzMftbzxgeFaEQKNjmbo7{l~ZeEc^p9xUkB?)Vzl zQ&q;lm@rt9L zt_q@^EKgyXfKQuUjuV>4f;tHTdkt5TqLl_9_Gm(!&%~Ru;h*Q#_4djW)XJac3v?*3 zGs710XIwm08FJFsvv5(Fjdt@SHJknVy(^M5+xYUr6~^?+g4E2zxH7F&r%dO=3e68? zs1`X8c}RHmC+p?o=jWeAd5E_uQz0D9_Er+A&Ld$Nv(qtIml84)5s2Q)=pED!nV5cD zW8zQ5jtS*x3z0&0a=T!Gjy%Zng~DuH*R)IgU3+BcnC>ThC%1F35#Kt$5ILxDAqKlM zJi%Ai3y4?Yq@!0p)1$+L;$Ai&J(!WH5*5WVvb-)H>Qo6J46>Xm>Y5#Bb@fQFz48H&J58`Iq z@?YGcz5H}C>--vmZ$o7xnp1!xBkI6K;jrRmVqk+QmJ**s?1YktLL(J^09A@^m3BtHpU9j99LeVY z#o2>syelq!?rluWc!Eg+Jtat+<|1VwGpuXtm^h5z6VWDWMrTM3|6VeF1L2Q9bv=0DkpB=MQ&Zg0 zf3UNwhbPJ>c}={_t4nARS#J~F70(evZGYN1oZ1Lz-uv^mA9f-$0e7S6P% zo1|_pzpoM=VBP>fV-<5zc5iTJR7SC{akU5IWpQCY6Nsqa<@q#vGy@|(JzzG8W%2-d zq+unt=6!YvRn8(=T)_!k=ccel#;~L{$op4n-6%l$g3He+LJ+so21JNKtjdPB@$>LMn2$k^fe%c*|H6O7Tw+CMp_}mIFHTMulUG*r3zV*WN zg>{4AY=u>3_V!7;J}zaV z<;Jr-X%j5tW8d>UI%kUlCX6qAnyXy@;FE2Dc{1&x5c$iS>iKEp#eM@rLZTn#aQf?Ats9H-8rz zXbmb_o#?^?n~8s?%8Zat0MagfxgM;?c7yn*hP4kugzO{h)`8Ed>Lv?_RnSppDWvix z?ADBhOKA`P7+##+1_nO>#(Od@I6$Z$_*h2gMm;x@4rKpq(B{ek07y^GV=3oEPX44r z9dTV{Y?WqQ`2V;%_jsoJ`0rOLR|nMP5-z8%TvrNNDCa}xuB%H9F-s0BjB=XukXhxD za!f4bRJlSM8AB!x5S}wTJ`td=GAqEQ@?1}-(U>8L!~|=QdY;Xe7DlX>J{J8m#Xei z-w2JUk9BX$T9S0jo-%RGq&mp)ch?o6{a=zl9F91qC#7C{wleP8{loj`J%{`%kFDJi z#i<}yt5r5&T^g}udk`*tX{J)9qx3so$^x6lm9a6jn+Gf;l>11XaAHtp5>38f!z9=o zHSX1zbKJUi=4k0Yg)-uX30}p+H_#Cb_)Ju!tJ#^vQRc&75Hz z0o`&${Z8}>7Ld4K1LuzKYmhC49UYVd3lB3O>RfIRnRk?{n^=oBBi-IKmZM=pRI}x& z$@YLQCE7_k2+v$`ify1%1fZdF4gv-gHBF(#?iqH990hFzztyHQR(MGOp(f%>v80r#a#3LFF4{zw;#;Tf0=^L-vp*m%1(24(mBHqh5_WEw9!Oc(>MkJzoO7Igx+ z&5~5WDl+5{l>)WCs0>z{8$f%L8iS=gLIB%spzuU&I>qE?kn|U*5?s)yOaa&6YC7fB zy=6o3)+%oXB&+3sz^>NQ+@U$aN^*ldD4qi@qM>3naRmXe4p0L7S$e+(Bj%g7jgTpJ z#d;MLh+GPFyiMmo@lvN<#9X;82Fk7og+Ixml1*jdy56z@NPJY?gl}C=^NFbvcgFc# z28EtIH1-d7U@g##vgCShXu@n?=mijS)^3Xn0-Zu0PgJ>B^#`IPu6-(j=g8pa3luYI zT%aDS9hxTTT`#W`c}b2fI~iF%W&c|)|2ufoySRUP=iAA3_Slj0wJyHV!|y{M>g*UK z$UuX0PZyqBKfFB-b{2ja1wFd^=He1_k6$a`5@e2y={Da#_6!k7qaPO@GmdZgfPXNo zcfB&2{;9d^!IEIQ;<}ai)&VuCp>lW6O7q=2t46ZWHgIfrg84Jg!l;!GeWlZd&nb+T zY30_WIcOfrzUh`8sn{!C{_l}@qk-}Rk}|8&)e7>ma}-Azgdz>wPzi(-43IQ{B}QYF zL;D3*i7bZ%0E!LotZ3-iytfl@qxH|WZ?85TzXo&=QiTLdfr)*j!Er*o5`F6)sZLY(wJ>P9t*L&%Co$L4Bb$}eblZ-~ z&s9xCfzf9>nL=e5d($Gm;GcwP-2t~(`8vV6_3by~i5q^kc1M$$?##C_QI7n^UWQKa zMl0Xw0gb|!$%?{tg93QYxNvL@ab&dJ3vh$xArEK5#|24<5M^o z8Z@>M7F2h`qJf}d{-)vd#h|eMbKtl52har#JUDlHrSah$Q6jEbLQa)NoqXP^=oGt| zAsE?Rm@3EGOR@=$WZ0E<&*(}~u@D6tl_iEppvKY? zeEG=BG`f^-_XK?HCehKT13YeFAyR<$O`L#>k`25>N}N`u6)-&e`WOSs?8uy(`rA}B zy202!-8byVj&K32U8o|co7`uBc5!tQ0mbWHSm@BdTjqbiB;Mk{o=}xgKYkDP+Pkj* zUFF90!?L|IGrG64Uhd^W%XYM=u1*$`tZ#D+`Ym-;{bEzoJ25m?FIfUZq8J|cm=H6qNCp_iqJf5Gb^YFLf zV?F~w0aLzk(h@|>L)5h|kOyO-&260KJ*$;dHeR9b>SY15s>eJhI}=)tm(il{T#ndA z=*g_vYFte5$Ep*Li&MV^r!cHs@(0ax9~}{#!WWV%em_owdqQ>CXD}^ zib}|$Pb}T!45xcOtm94f-g4W5P;HqR2WP9^4%x5J$Yas6Gb7{Vcv*;PXe0vAP3JBT zTaY8b-C1J|=Bop3d}WZ)-f^$F`9TZCWfLYcU&jk>mQK6^7wLxdN*52Pm?Vs-WzsTo zEfGv6fXf5vW({;xsmVD-OeG3QUwlx654gq2w*=Xzi((8Ga}YcxwumhQu;75-D4L~t z6wURF(42I-x07gY9us0~9&@tkL5EDP46~*4Tel9_`fZ(#vW|%UZ4!P|L#Plaz5=-S z3K=!NeN;bn%LkaM03Z3Gj|3>^)nd77$-7u~25^;5H*52PPmpUrQlK9F0FT6K&%~m4 z7X8Z;_%|c*`e5`Admj7{sX8Y8PDyT}lV^MHJ-YbzZiT--S@f-Qr-MrjcW^E+%etFx znXQhi#8wu3A#i2Bj`-)6>%Pdj-=4mjD$%#|NiGKNcw-gX;S(h0#qvZ$;|ZnNl&e|# z7lebgQdX!B^Utke7!}dWi_U}?L(I&!H=8~KLetHJZO-bfpIGu77*gLGnR^Y=Boey9UceY*c6}$gpv~`d{Q@EvsOM*7C4`Nic5aYT&Kne^`ajY? zg)tSWAb&)7HMOkki0-QJXm7(v0UzJF0IIO>*fC>QScGuhXmsFC zBBoe9iv_Z6`?V>(8uDOCpmjW2ZDeIbVea9v(xJ(PWn@+ce@;YbIR^n$$`0nK~$_k<+I4$3aZJ)2EJT;FnW^-_o0@_stR4FoRLIPf8a1YAw-mAu&`Oh_kjiTDvV#XjbL zvFJHb+0IGC+P?8te>uhp{nNNWU}M*p&X96?MEppZKda!}?}E7?ImE#?>UXo-C|{oC z8c*Jty8ZSbngKS~95ZK3ihp$jxYe}bwa8D^z-%~+aO2WpK;~I7q{yMJ`P7;(e;w*M z9`-L4>0bdH^hxUnbNzM6b}1KqFAE#fgHmQvJ^6>nux&f8EUM%?eb$i5GuAAU>Qt1{ zEkD6O{92PDZ=pVk9xGG%n@As@*=*yCq*&-%uAT0elH}}H#HDBD>)u|h)z2g@A8+bp z;Lr#82kyqsVS6uYS2Qs13(cdy3W7PlD-BQI84x_*eM1%|_$}I+AVt^m^~aw3XU}=z zzaxuf55tvpN2^@<4<^`)v2j1WB6=B{;iQzJ(2NAIJQ9ASf?KiHV zPr~ril4`56W}V!!yS05J;KGjg^N19#U%`OLuR&+L$W>Tyd6~GJY92h0?GjTe_WEi( zPQ2$w7AnitA9G!_f7l*A6YpyL47qV?T56d8UiQ@sE0_mIYXa5!N1E=`>nQh-)lPVb z4*k5Wm%sY1spzRMY58|BQ>=D5!NZx{BKOO-kI@}Nr~5V4Ha=HA3bbF!@ zI}a6i5#UXdi)0Wm(Fq3A7ge{8KcCGHs4zqzQ|?}fn6*&d+EQK?0+9gsTy=A~3WJB0s!oY}XX>6Oj7>RJbsIn@T{+wp^IegUTU&l*ix)Y+#c=tj?D;63L-LG~QD9$~+Ly+-m ztndYCO0{k-=7&MRr3Gw02gU5@HZJGdo=22G;# zE>KWFy+8bL*)#5YO-j0QDM;w4h2OY>o z;*4svdRVvnk=Lt@i}bz*Ty1E5w6t2#;uI`GlLpnJ+$mQ z0?xR4TpDe5sZ{G2Qz8sCRC&h!v)5ZnS)1f-=#V-m2O5mvB531 z5jE`v#ut(amdfOKMZkPnB+=wM@Fi?wYpmC{_DZPm`<@6liSo*&=sq{7v=m{Att0!s zUNn}n3S5FXslC{s$j?Xf)(P&pi~v!qMGy;kGO?CHakS|G3lvqVmo_a*7Ib<$u@4s1 zyf|0GaIoKsk3h+7M#{nws(%MOjy|Ggx+=ha^NjoiA8L`ZVce?yR+qujX5>d}We-2t z>aBguee!c=DyEL#PdIK(AbX;ho^KGMM7yS55CB|-AD@!P-_&u-TQk6nj6e(sWiMpw zCu?w$k?5w((c`2!@aOgT#!?Gv^1M1xdzLE07>o?}sFGY%3sMOe);;~gfqzX1?)SFM z|E1S8q|n^15AqtwC(w0tKrzBz1XckjK5{j=608UXuUaT6VJCy=CSVsvnK}@dI(vOF zqLI@G#=cqIV@t@jrU~|KfTr{4#Q8cc3o#8{~fSBXei6oV(6F{RN$-Sz? zLK{ggq4y6Ok!-#SZN#Z}09f6s?=cFLJY0G>pg6)hhQN=7`K-8Oo1XGi(f_VW{{3Rt z+9X!^Tc6vsCRw^VLm|O`dw;L{hk=|IIz~M%+p=aGj+DLHagb|ovG4bY@YZ`rGv5TX zc{_)?-DJ@Y7boM8+IOMR`ww?Zblf1Zli@8|sCqkdyEtO2^@&`#?vi+}la zZYRtOURHZHx8T&*%-53^)R2i+)moVYrk^>xU+E|p%>8isnT|`)8AZu(o>v;1*0`5@ zwhcP}T`rFYWY>L-Vdyibkqux&|3>oXB;1t3^*j{uz01@^6xJQX~IILaWpz z8~9gKIk(pHgOJH42t&52m6t(dYH-zq0r4KVmTyMVzF%Jl;+a`MXj^GAG$Udg|_OiJ2Kl z%J5?YUzT>_opKTJ%M9EoQdN9Sx*4pM82Ii_6oLj(U|ieOaz4iwB_SsR)j;2%vTqJ( zzSYzKDsSL;{as&}@%aei26B>Z0y7kMMcvwnS4xCgfJU=1QnC(8px%-)>o{iw7t8cFs|1#$xqS&n* zLU!)U9Lc%lg7r8`=}8aNmnvYU9zROvx?XlZZRhTadz(fHi>TO$%U^Mfn|UHL&EmX- zvNwJxJ71-yPNt__@u4L$tkRm5H^HxMLz#eSMhakEY(Ec>A1~+gf}kKq7+(h(lvRf8 z{0j!aK8T-ZMx?o|fs=1WjPMvGn|Rdf7C8=g)onI)zc-Vd-1Cv;gY5=dr{{`yzQrR+lUuzo6bf=g#{9Si+_ov073%~>T{sTR^B64ZJIAS_!^89p7C(_$OdFy99 z@XIkpAd{V$37%wf!qPyHa;K)hWw-)S_iKKDaX8cuJOghtvFU70iFj`j*f(v$QHv&< z|18}^UUzccuaumt^#B}2l89NO-~X<5Zbjk`o^0Tp`Bspmrd}!lso+3X0gQ*SevSct z&c?!;OmHf96tkl6I$!|$255|$v==#d)0;+3l4+Zmf;>=IoL)`wpn;sx~a za}Te;egojet{44|xv>erkZy1Uh-}>@66XI(-u@qq-1^Z#ku}fo_EXivRg;MldbH*W zElQ=_U8b=?B}A(%w;k7W{Y7*{CVbbQ6T}_f@6QZ$v`O8zWs!|>E_r45LTu)CKW>oz zrTQ?g+V`};c{}U;NVz?_=EuL1VmvjR!cOj6O8+%5ju!H$!E;EYjy!bX9T#@)r@_=- zp^xFJ{h7D;nCqIoY7xWKA~Pt0>E>v3)AhJ1^YqtDpd=zOu4whbKV-DtGu{=le@sf| zHVm3hCzQztdWH@gvBs5WUVhfyGF*nFP0B9Dvl5K41#m|f4ji!p5>Rh7IEZaDey!-G zkZje0ZZ@{|8-NdRbwXcF2c>oBIuK;T`wu~W1(u^Phq3{>b|Tgr;kl&@!8Km7_V9}2 z0Y>qC5I*nMons}LR61i`oS$1u2mT%f$;2RLx5USQ_>44xw|Aa)#M<4m>T~h(j-i$T zNGvT#xwS7>ZuXn6k+&*!2*%8*s8QAH3aFR@2}t&G=2gf?1u zX`reYx=hJwU17nHW|j<$n<$}as=kV{)2dt&*>13qNb z7qlVOnD-I8v(Kw1D2P)R8mlD{5idc9x}`h(uc70AMia-MUVS$thc{W35J)YlE>E5u z503A~#fku{dOle06f}aq9RA?`72~^MPr_QFQveI?huINv`-9nI#z*#9;m=&%zfsvx zzuousfSTbItLeF&tyLCxNlt4eFLD{9r&_1*rg=5^Jcw20qXEN_z2$29Bgbhy1#|0s zaiFjAS0xv|j!ttAKf_ifGRVV3F7kyss(B*kLzVk3RKXZAYzc8h6ZmgTSG%cJy)LOF zkOx&xF<%Z^!t6kDq3HYyX|R}^1bx)>3N$XO;)Ni)Nf;96Y<#}2YePSj1vXBy*>7Tw zz2hT858e$s(t;_#Vw3ejxs~@~wZ0DJ7mM(qBOs-*JFP zRDyA*5yYAHN7jHcsqRU0ODcV4v8^oNgHcDnaqj*BHX^k8RI911J!WdE?I70LzFG&J zt83I;a&5SE&o1gnlMw3k#1>2+Gv zT(W_<;{EdY+4r{O$yNFxt&y{dUOJ`>li>Q0Y=unNob*XI!7#_85tp%`gFxdEB#;^WJNwKS5c7dBk2=W92t1AMKOGn+TNd|T? zT@Y&8m*QC52>T2i&Z!Z=2h(M;m-a{Nue(afAgdMJ+DhY{a-yMf2OO~r9a{AX8H&A0mBcnpFEoGEbeqCz17*lQF`Qc zKaFXdW_2jbAu$EtLc}|1)lMy>*eTd}dtpi86ejN~H-Nedg0L z)T7Uq$$C*ecJl5MO?oQw%v_sG!q0L!i(FUq?Ib?&`JZ0pBdTq|zey&p?y9qxZWjS? z$H2IO4;)L>E*9JYpH{MqigmY&xx?k!>GRP#A^@lIHU&IXn_E~g4^HJfgYOGZ{~)L2 zWc6SiR00i?u4-TYG1R^L%U*0$Yd&d2&CQj?8ue;QI}05MU_oH51B~RrkMlK?nZ@VX zqg+1hrU9nj`&H z(98ODff+0|3s&^h#VGH~!w?!(pgp@fPr+G+~jKC3O_$PRtWM=4-GBj=x&&1X?A zv6I}uK~PZinQP8Ls&9Bwf@u9eg7~z{M!6M1H3ScNX z&J%=d@h-0*r``kVQ@?@;zj*dj_%rJKMhY+}Oo2*CY=G>H2QsTQ&`9e80b)N88!uW} zlS{rEyvs%7(#ZNwt(4ovH@wO>0<+ldu2^u<|98}8W%&;aj%F>XUsrM6 z|2kRenD-qhb3gR+j=8Lnzmh}0Ud<`jlXbe;lM$^^6Q^ajw)Wx*;Yt|Y(@Nnv01K%mIIK)^+voHKtG7yniOtB_Lv zKr!t07c_sQjPUE}6r4LQaZ=SKH(yP5;TaVDbu|n?+JV#KEuHd>HPX_xICK+>!3LEs zjC=6ML{|jmd7M=h6mQB7rdbmZNT6 z^?>I9(@JCoBFy=<71fCa6Q^sNZ{@c|+3{7Mowfc6@kSC5aLmIOyf<%mu?d|5Oq}Gj zIE4lVxzrdV^(Pp9<=EjO9cEt*kRvQlD&tJ&H=fT|*6yRWK#Qo2e)Go~Q^Zo&=!e!D zSbBZ+b2qawE~Ee0G60(AE)b7~;!odsc4#F$uE|K{PZ!sd;tKB8zGj%$L;e*iiQ6zF zF%YN5QUiW&nE?Z}i;E4JB0=&GV7~XBEJ%xu?GvNKTR$Ud17JqBz8wf3M7C3G718Bf zocr(=&v$~2>pGgh#UlyVtwz_;zlH7KooEn|d#L8o;LhKp<+0Q!7-(WFBO-zYeaiAo zrO1uqrys0ARQ;lt};R%>8g`gLxl^Z(s((?z{3enJx zSrdRB8RvJZ*NLzq)|a`gkc|^7_nA#Qr`Yr3n%Pps3EF?>XmqyLLiuY;rU% z?zVW8pdu=e5$N*N*OE9(S0PGcw-QI3f{#zPKQJ^L*)we5Ep6j5W*r}fuCpFKr7Gp3 z(eS}stG;yE`TgMkgCVzIYfrSTsxt&D$Ac{$4XG<`n? z?-;PI`zU8*Ebjx4_iI;1X?SOYw_Ut8E2{#F)+XXFpG`dx(bX3nZ{c!RKW`X#Y4?QQ zFiNZpcumZEXmmC9H*sna^ZK`C$Q*utT52e#J^i1gvY?x<8VP~(G1L&0pkw1n$d9hH zv7d2(hXrQ3t!B>4KoTXm!c=0tyMaHxsH(YsP+vp+8d%~vuz~tpMLk#VZ91QqH7okD zr!i7fs3R`$`Vh^knqVgxHVo@8oFfB0P!9`G{&@2zN^$wm4IOR4vsbnWOfA_~dkZY# zRR2ybefFF0$BPai#ywm=aMF&g?;TC4#czphU5nGoN3=Yo6V0+RXMNqCGtGLh$NoCm zmzN8n!$%}kBd2I(MZ}u-Rw1@Ef(zhi&m66!5e)bXS1>hN*LMw(m@l+Ved5KtIjR<7 z9cOVKDTx`@YL+I8p28GJr6o}EG#E07@1yYN+>D|ANeec0NB&0(a0S(Gtyb@Ldd1^I zR{_`|Q<%3}a*EuG5N4wG9;*kKj67$KiEycV9B$JsFm{zX4$Q9+0%H#tSV4p4*WY(| zAHdw(jyQHR#EJt7ZI^+@DBqb6nXF6!n(o~tQtK4pUAolCt)Jt^h*Ncc+b$mHA!#D?uf5;DIfb9VY)H`pI4s z*oV*a4~yvpJoTRxqkc#gWyL&Yhu19)fj*3%- zC$Dzp$x0ZfB8wSKrsec*z+`TaQ$|D=exS(05TQjtNJWqZgJKP3AkOIfC2i!6zq4&k zbT&rWw`%o78V9+g*5N#0uSG(|0rjVajr;;Cb}lOcY)G`PS$(q-51;aBzC25PJOA>x zR*JjY%El*6At)m{D7Q5?zAbizP!EDn&gMV{jb5CN18s(@eNd^zbce|)e`(b^H41gA zKJa6##YUDwp~GBGO7Fz!^+1wBsgK)xljrS>AzaTw3VO|Xa#qF3!?*l`a=BiP7D+~E z98WI16`9J9n|~933}@}UMrj+dxfBq8+c6tsu6oE?@-tEh#(rNszS5e3_$Rh?;|iE; zdh1t4bScHE%KYxT>QLL+?NI8k$xRI%Ih}JQZ%zuv*86IuFurs#8&j|~3#dG%xoUWb zcBsi~(1elA&ioAQB!UH0g*t1LsDgHZjVL)H zmGfmZdW0$QXr+94s0OYM2RpYH@*XmslH180f{n3Fvei870r*+{fhhTXb`^jE`;*+osgz3!vBgc&mBYe)sSiHBh}gakHKFD zgpMx>lz5xBFUQ%0&Ak#R_PVih7E`PheyY=#;QL?ATkB+Z)#W@)%*wLSb>-&|rB8?o zjfOw^uI=-!a;tf0zj`yQ#Bld@a~tpGbF;YVMJ3^lTELltNh@JqrOX0R5UlS+zoyl_ zpI@rSMF{k`_6Qx>4)4i`ua4M-!Ese@=M7veE+A`Mb-(W&=5}O0hWm>St$%UUBy)tn zPtDeyqkGx6m7-=65%-fM@*Sm@D$hN$2)O9~0L6#uCg2e-$P;W6YcP@IfN8JCtK~i+ z%2$%S@SqWVtTOY&0mZ{1%p!uY^vry3sWOEa%O|AawFj-d?B@1`I>mQMrxhbxi7=Xu)`%NZx zi+Ak%#J;zYf#~qu{~qSjV&Q?F`c(d_pbND4qd_mCCcfm|)-uW4Wu{gALJf@c&*Fj# z-#ywO#S?SgVTbXUzFM`ri!G3j2h)r1BOk1GJ`-B*E^_cOTD$&!7=70pQCDrrbwuKP zqOq|y>4>U0!0m(X^1;^7%#yIa57?jAXgLVcF)I zXfboH8Oy7xRHBE^#Jujv$X4?fc8WThyZ!yr7_}{lHa|^Afi($9x~hXRf8vo&Fxv67 zI!^j8PxI>UDIHXx=D|=MRzNXWs}V$|4oo+n@3CfN$kO4j-bMo~n)ylHg5;nG)xi zNN)1v2o}qq&YDbF9r)F9B|S&0H$;WPF3D3nm&7s5v)9@XB=MHW&rz8eP2=jC{0S54 zV|h|{Y1-N4W1GeED#A{B>vHY_R7KzRt{QSP85<&4KO`Q!)pYF7Rq4(2>Z<&6)2<=0 zm*RqfPIY<_;{tzU5u)lFJQcp+xeSZ-sgXdxag#(zF@#4lH*Z8JHFi+CA9yLMbVU75 znvnHHRwsdWETL_?&2GA*_&5JzmeQo;;V8)$oT$AZ8JGea4%NV{QNo%IME@kW7vR9C z-N1H4Q2e~xZC|BztsHzDUIG{$D=<`FoGTx~k`&LU)a9b-48R#AOVB$d9snS_U&Ojd zrR2($6OLQtVNe2`4p4|!d@mm+K1SdND;h?>6fb+!NWee?vChdYx>ak~+$lgUj_2C+ zAI*?A6cmrX~+pH4L%Z%FE zoz`H{UNO2I{h&@v-B`4@k|H@`9Yvcb+T+hiiiAjA;F^2$9f%$K027fM8PRX5AQ`2p zOQ^zwLevujTS-^Q--5apnyp774FC4JWWS%RPs8VI?`X5;=k3Asvu$1ys3lGsZBNMT zAJ56v8p=~^_8th)$l{!hcFA+vqI-iA9iSLc@sv|>ud!GZHT4cTWwxw2bRdvgcZ@7D zm%H^#;-|INmT!P7Q6oK_9Pw!2i*4;dxL`L+vEz8qn~f(GkfTT7$6O8b+|?__%70T8 zR}9(DMy%p3m_z=%LQdRGC@+X50OO1ze7aSvqmsYYCJOI61a4Acy{pw-K^r!H6;=eb z1jwO{J;Lmo`z;g_5%XKMw(@N`Pb@~q8g*L2$gv&P2p6FG4MP>Di`cn#66{ok02Ox` z^NbJi&r8AhJ_j}@iED`Tas>!0S_C>|jp1w2Z_i;iNG4sF)wj%XKWR1XYYXW{AVv-0)LbL8)8Cl*h5cwNl~j zY@F<>MuL29Cp(~OnUalJD@VspvTOk76b>Ni>Gt)(X6!g_J zvlQotLdu_iA14H~e*B$hC30Q8TwumLl)me0QwAB%t)=*%KP_t?9gO)ZNLWD3PsUWY z+A5r92Bp+}tv~E_>-Q5uiz!Xj`l&%15?AWq?wK(dX=lHIyNfT47JX#vq;&NVmKD8zU~WM)@BtcX7}8pq z$&6r*x-*S3-=c>ZQ5qu)$ltv^ixy$R_9F_wgCd}gxgs}L=D+Pgx4RVqTH~uDX z!fEUze>JhErM4xWXs#Z$8~iBVSB*#=9~-K7mirmJnjham)|1 zlNh*wXRs+&i(keHO;&0Om0)p>ggq~2EX`Y*Qh}R>*T&eD7p_@htjY> z;FbjhAExYWB&eOBbK(!G8WN9ks(7e)h~nvmK# z?jFzfX89sWdp_$POFvxygb^0e)z~Mbx$Ncey$PPpt?_dDj8=xJeW_AjGHEN<RAKxeuEu;xYPJa^> zevRk2v%BMhnL+L&t#rmi&vP?kV^+Ff(fLKrFOFif!iOe@#_2kke9T~pvh+zgh~K!` ztGFPtn%EiQGhTJ5^j$Yj{i}l5)AhI!&gxo~w?oVnQLwOa)50prC4F@@wKsXW>XjTS zqykZU*a6qU2yVy=M7msO*#q z6n~(vJ1$(%v0%bMQr&8-ugh__%&&Aitg zb#w8=n(s2oQ_H-2fWBb6sEE5O)N?Eq75qKk>?CrR(I70XyKtAnmTx9#v#WZ?kw^Pr zp+(P`!Ry;QbILu|n||gEM@TmP#6EIc4=3t%#AfCh68Eh0A!J;LO+Xl$rzVQX7X^vU zWWxn>8=Ez2!cDzeP0S?uZe<&PUG7*Oziy}wFN)CbG8eGMV-hKu4LTIw1k(BFUz-&3 z<`7Q$e~!QSG}q#d)0$*4hE^3& z$XJrmyiIs08=UeL|BvhdegqZ1`mD`dfM1R?#`IN9T4_xZwRwl?ZG`xZ$s~w=M)E4j z-HFO>|5bN$X#B6|FPuX~P=wj4uc&n{JewkaNk0zK|wRs)A8DvR?$kC`_a%X^MpHWC7DNM@? z6&ZKT)fQD1?Kx*I>@X^|!o4*Yx-uJ*DSeiHGvaL4P~QmRKtG;49tab3P-0GvBWt_U zD1H(Y(K2Fdg}8N9m`qcV4AO2J(V749H?5|>&_vP(@+8yv{eaKQvEJZOlgCcmnK=8iyJKH>>59@^O{+N_dLh! zXv`suzTC2+awcDK?qdvL3ARdu36s|%1#`{#z`kZDuT+LoVxSp2t4r6i_b*q}u*7!j z!X`|};w;IM{(F9#-P0wa8Q$hMiPfX8_3zMQki$%yr6MirC2?Rt*jY`5x8aDdtj(j% zi&o#VI7}Hc@{5?unfDCiW;Tv)=W9R7zw@ITDvo?l>)D4>ioX&?T=h&{`>iX82-tQL z1`VK~BDCtN|M*oje^ioxqVPJ@D&oPt#vf2WnmBFuS*yt`nHpMPa(Cws;H1P%)2F+d zh=P)h4}W|XREdZ&Ht5+O6fw<76dW&HUhSJ#Y~ixv=1r?b-Vw@jT@Pw$VD*l?csahZ zZ%~@U!0y4gTb&kmtnn?P;6no`AfAbPt2}^GZ5-Zw4P2m9pF4hyY5dBuEYgt(58>kjD8we`gvivH$3+lr!^d9@lFo59tpLS7dyvRM3F$MrCgG^7&muB ztOLer$IVm^98ixSpC9RE{+O2?@Ji#Hropc@7 zDX~HC(362&t6~0~$ALkj7DNNm)+b`^rMdb|$yc$d#u508*|#)B;;}U0)I~k|Zn&a3 zhb&qc8pe9*t}BE4HO}QYS<>3P0To5ukvEqY`#>IqCO>wMflA!LMf~gHzS=*ja1X&S zIKdQU3@Nhl2*P^pmo>G?JC0%l`JXW4^>VjMAr_OwYVxxgqUXMWnM21>0{o$~FcBip zf7Yyelg%50l#nn$%2ZH)qLiDq=Lke&MQ5l+e|D2s{W@F=W5{nggd=wUozw3?h1(WY zVyX*-9SwPu&RyBYqR?o;{W5_>wnzb^xYaGduYr=#Z@9lH64#u9-Z#<;XC&Tfdn}8A z=A#lRA2eFw)9+<5nne?kMLC{htgnx^95Xy8LJNZphNI@q#6Chz@Q##GcZ^h>Llv1B znb$6w7+wC)i(UGG_zRR0bDz6==edHzzU!9?<1GSQU!xwh1o#{Lau0EI`^bpVRCPhZ zH@}Zz*N|FKqk9Zs_gzMv)hN1x#tS!U52VC1&BZ=<_=(7|k7vHy9oS^@iGInrE-3kp zS5Xb*8GhqY8blAXMkUe3i&C1mNUVpwUNv*wB>Kp>msWk3DEIp+Oe>$6zQ|7o79Dt@ zTSzRz+)<3P=v}#)O(6uGR=2;?7w_QjK7;Jzd2i`%5|$U16*Z1>gU4W=9emir-L<6* zmAp@IL98O?UBO~CRG27q8oB{zITfs1@UA;W4Fe@N5o^T6rCxsaR%mjOyLn>^o4A@wOZ#JFWkFVa zNm*UXo2HSj#rhB)Az~tR=hprZzDf&Aq%b|>4o!0=7X@Ita(TqR#L=g25eF$3ge6e0 zyiD=eH{`*XQazeY#3=j?{Ddq)gioW%Vxn2H7~VB1o6-Ev>#IxsLR1Dv?pFC%Ve3|L zH43~76_LWZoL7R)=H?A7AEuU`LK!^jcPsogxWVI=o5KpyC_$K$l%MZ2Ik$r;JfB%%CugHt~W@fAs3>4z|Qq zGVI#037Kkwkp>v7-0bZvu?@DD$|7{v+C+L`zA|!T>9j4`Bo%I0W=7TL;u z#GR##A#aIBX1m9bw9=r$|1^}v8Woat|KAfP6rV(DWtS$Mxu9Sn6XFqTD4UIzk9Mov z%`Tbb&e>EyY)V_~G;Z&eu?=~05$l*KYFv7~+`a2OKJ+EyBdJEDKV4mLaf0#CtcVmj zD6=0_;pbWdVH}kD^Rbo7yAF`%q~{`&^_}jHiOa%lnJ#lhlWocRB;#vUke~?zy7vrb;O4z_!(8jTKg0cgqHCB9yC1r?BD>`z##Mj0G~b&= z37UAi5-H+->jRY-?r3y>PvFe;VnVjx1i1r_z1+0@8aCP$j#>Sk8L=;n2}iWlw1>}U z3W3vVMV^=)MENofF(d+MpUTj;CF3Ep(fO1+^tj++&x)b`anL@m >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 z;RVSvGTEH^EN-tVri!<)G@$>UKd`#Rw-zL?e|8s7Y$3BL=Ia!CA?c-n^-kJ(fzI-1 zXO}ZNt%8y#9l#)41zabou;q2VyK3SFvuM$C4m2Wiu#3|mldSCu0>5?q8LiqT$;S1VJ*}D!9aq^B=bf4+LjNtC)LA%J3*&l=|`$XYv(Kv0_t?hkD{Cisg>144GR z;Mh>9nVy53q4`Sj1hUn$HdQ`5XT49fVDUDCpS?a{ng5E~KNh5&nS|xV*?#P5DW8YCYB3&yz?x3&N zS&y64=%WLr^3@1Be4zB?pC8k>TDha4=17rnl|w$$PW^fYvuTGiz=sF_ietRwaD@A`5Ef~|A8HMFdc?S2S6 z|MIi0$KxckK5$*DCq(1r&YyZ%fgjIZzFqEdW6cUr*cL`;h!U(pQI~xOac<2FHFY!T zV;-kE4BHR~uNS-l=6OJr#_)J7fdvgU+u z5An|lA`Im1R=!a$O!xZ0dE;z(He!f?ZIiJ1O3z4|VAeH)=Q8As9LkI3S9oo%idDuJ zaj5_cc4k@XCs87!d6cLz{5kA2 zw8lziBkA-5!-r)J`n1PxZ6Abmqlzj--z`9W@HC~MhbY779kpN3itB$0XdjTXhsH={ zhBa2FZ&d;Gb~{m+y+R?SV(`cLRa11s&P_TmFqV9xMHQ>ZdquOW#3=EFxIKoJ9NIjqZX!d^tZM zF#>Cu3J=NGeP1rJK9`0I82E$_!n&k07H{E}uHc<|s!oMCAI<&dr!8%<FEnAv1< z(6*&~f*md+b2r-oX{n;(u*mz#we*M=HtA(RlgHA%sKO$+)^kRiC=5wf2`r(qem101vZ zL>T1=79Q8m7qm0lGCK0?ni&CuUXlNtZDDZ6?r|->En}**rTP~ctUy{UGQTZ@PfNqi zRSnqs4q~7Alg166;rlffpI^y7kL&-2Eds;m?=gecHMj7bV~k@a^YaIL)>ksSR1;A2B(`L6anILdOO5>QR|);Bo&M(7O4p3bIeVm zQEoQ^i^Za8PR-$lf*<{{Eog5xf(v0lLAlU;UVnONzi@iI!H>qLS=4=%);EPOLK*PT z*&zp{Qvgj!5{l2t=;tVCiSz^zkrJ@iy|7BCUop zSfQr!YT`Q0%CgoqyKFx@#MZ2taE`p9G@V$dz31B^GTha@gSTSnZa>==q^AGeG;L6$ z#7>mTn%!7ZevG>@6_MITH|^PR0Og0>x`QAvb&pUh3>L5bdxKgz~QOh9)!4IYp>#PY+3G{OSzswpxe(cwau*}(L3m&?D# zCS+Cq#W7Z3MYl49#AZHQ1r4mU2t378Zs`u*chRn^J*z(_?Ig4PcH5@Fm^`Rt-QMzB z7S4}M)X`x~b%TL&IJz3~fiwM)&{T&1g0Aeba7R%7^xQL_u{;HOct+E5k-M(gW{_?$ zk_(0!@_1mrf9yKQG#1SH`Zs+JO3O&!K!o!(NwWmQ&k+Aif`j1qZEh?BhOFTMOepac z80&<9y*(N=-LLwCDz#!ICADn~Youy;{_xPMO1|$()m%oF*;9a{H<0SwB_zqw=C zEz4kSi-wT8pIUt5m?reEUuIFF>4=Yg?D#kUCaJrhba)E|$knzp3dBwl+{aHYnoN{K zUO5^e+2Os^?<*M^%e#~6%U^E0WcD9MC`F14mfu^rcf{sO&xXC_F*BR`@Eg)iu1s-S zf7CV(2IL}^@ax~>R_yNvpVNPi*s(yqek;r!dCYarL6pPlOtIU2K<=`}E{-a`i$6I} z#lg5U`}XvsCMYWEFYew&YwI`}JMp%+@7seoecWv1KwCpyn~3%ciH@ z){YmgI-2k;3g7)^8*EQW!?ul#Qqx?{7YJMn&u!7d_eJf1kSd7EVEj8lb(ERB7IJ_U zm@hkbS(vTInN^KXSog2Qr_tCuTW&60$P z3mn^y^;U33%xd~jT?eAGo(CyNJ=FZ#4U3x&QP9hu{}#lFXA=PWmWIya)w!{zlF%m+ zk}xS*z^V2j0ER7CwVO9iy4Ktspx!r;o7x?1J$U2Kl|!ZF@4AF>kG5$LL*^_lgjjP9 z2)yMr3VBYr>esivpqmXxcwl~#XV1SiC#W~0Ep4dPEm*c-cplNN67v&a8!B1vgesnI z4|FHuJhBD*qLo3>A4U0*MrLyON>yZmqrp62fy4jA6O25)mW!!QSn@J#haPI+R~F@d zWU4=C@W_57E?M&bP30Sh6l3ol-fz}vmqxK9|K5WDi;8>&RUSKtA$a8|^x~ui8S25l!3k zjd%Zmvp!WU#GSo^Wf{P#`P8fhTWzn5Q61;$L(yfr2Yv|LcvdS1ukk&jw;&lzG7+pN2iaMsEun6=N1G3qGGjCqK3}rY)m8y zvg!+y1F|?Kh0McSEQw}xeL}fOVpVg^+uc0Oz%jA;;tOiMoMvQR>Si15CrUDau9-M~ zqus77&~7{6!YQ`-N!oTy+vT>$z4f@%>)L^*T=ZYN(tmDDH!576`sHur$69hV=J$o! zja8<5EN{xDrePwA<)SjoL z8xuEL(3ai*Fu((-Nn;7KOI!UzEZ=I-h3ltLoU$)~K+Xpek6$Ft7P5~;QJeqW&t<9K z!}ol3jH*^yCS@dFBGw5l+6o)w{F$=3M3N3tK0T!9>XK2RnRZH;|9Ips-8R25kD(Oo zNS>r?x1yW4;f)ZQ*8wjomLeY)#Mc2 z?i$TBy_oB(2x(z+?gVB$p5p3_2jFw`GAvpAhlOdlHiu@k>t=TK6~3{Gt-b#%>I;5V zk4=eRm~6T$qb=4iTY$p)N*#vkzo4xt#}cGNe2if31-PBrC}#Xwf*dtpo4@{q zqXP)PVf@WE9^iH_iX>jr7EGP(S!vm>@`#|YX7r~I0v)7ehl-k%P}*!ePD*gG7A9V6 zm;o#%mlw`81>>@nkqc(z6ypVefz$Kb8H5&SKgLY@R;CCwoih(lfg{xCnl3uZ5dFtD zGE12Pl!(|ba6~)BiGRh@R$O@x!QMGV@Q)FEcA+X{3M%`ZsYjItR zu6=*upQD26r~LtQuj00wh(_0uRSWJ)J^r~Dm#Uii%KEU^wflol>jNwtGX|Fn{pF$v zTYg2NwT}1lJy+&_P4^shdR;Z|gyreK#=D*yp587CiDugVW7S7%{igdf{#xVsN1h~D zA?t;@w7S-`dg?(Q=T$eyfiQ!zEHfaVXtmj^JT0$LyNHzkLoanw5)xKWmF&IfJ)7fC zdcZ-kx|(fj5ZJ4$j``9gI8E*7uiwBsZf?8XKJ_g9^hsYdSs_>vB8ErqheYCsFd^_~ zo8B(2Wz0)a@~rskL=b*h2C$C)k)S%jGxh`6pnp`sQW6+jYk}U1RT)%kW?*Dh%h4YQS=De~wo}RMqd(pX^C5@8qkYG3xag!DlxoWX zkl(4uZ}iym^B)KnMdsJeYLZcf-|5v~(36>Fn?(JX{$ioZU~g07j67Ef4nvDNy_w<% zF;{8$myDpYD3guzX43HLFQN>vG1*2x-><;%*9=OODm1K8pQgcg1G=m@iVfW`cquQb zLm18SKB(Z15e>FRpP@%~i4IF0a)etXtf<^hG%dabifPTr*o4SXM z0chiy6u!mnN_SlY5^m=Z+v-zivpw&(*kU8KZfGc!9wY|Hi-^+43r!#16PuJ>Wo}61r`mdPdXK z`#Ra@suj zvdl@Xza>?y@*%}aTTh&mjIQ-ZjHxZPQZwU}$ArJOsoxGBVhZR6vQi6Gw3obwp(hv= zrd+LL81Ywc6B$uR`yhZsc4JozZbULy)U;H`J3{kclz`m6OGvNedjx zYOy?BlLX&J1B848--7=1tS)pJcJyswpkhV&dn@kt_R*LDs@kyp-G`QYmcTk&fT3xjyqV6k3w}(Zt3*Uh#lmNVXN&yy1MR%J^dF~O(orufDxe6*w4mq?J&JDdZfJj{yQ~Bt!2$< z#n#8+nqMMihi=ZS`*5{HWe5`)uCXS>5;Z%3^BesfLd&~|8AQw~f&HMk>+cEp9@m2crcMJy}cfqFKK}&s;-``42s@FAT~R@CemrY|;uM^@+)w4u#yS#`8+EwU3Nu zRA|JO9d6Rv*vHF%NTeay%AWdI&G8jCi;Hxx>hVB|Yzw2;@m3q-_DL(9!GoAbFui)i zB2K~zsZGTg%a@ya-tZX=Dhzp+%6~a)+p-y%%Q5>ohw>*a?PLBy8#LW5JozL6ruOe0 zOabHO4G^JNEF@HV&u{@=;yop#>{j(;Tg{6_o+5;d<-$5r2kaeP zZqzQ(OL-yI_r6UATus6mZXx_09m@3{HXLH{CPwV($2D@arQDIGcNz%ROSQ$CHgf7F zQu3C;{&0s$C&2k+2V`4h!-RS@2r=6(FT9KGN?~R)3!|@OV#6fJZTR8LcjKhr14lux z24#gh^pSuRY&9KlJVBD=%Fhj#`AVzwF@xpVlnXzB@P_KEE%m_?RkUV?tS)n*;q^#0 zsin1Z25iGCn6^#yeuBF z$915K@cyrH^1|F%yug@Ax)`kpX}rv<3}QT%!dd3RJE!<~jl<4Y^i!TP4FWtLSFbw# zS=^Lw0($)=9Z4rQD^m4Mi(-i?`>L1?=By*0E+$e3R(fmdLBv^Q9!XH8twJetIhV%M z`Y8HupW~t!DA*cwC0}99jxbFxx4VY}e(V#*HU6RK8hXEsFyi;1O5s4s43llMrm4b7 z%aO~$RAQzH>v*Z=S%ih#Yj*{NG>#m#PK+Y1zTz6=nQks_VFSN+cj|sjj68Ipqj9Wb z({}a8WuyBBD3+fsX5PmjSJwxegUOAqO7GpK@z+DsVFii3)RS)Wxr&KFX$!l9EyI?K z@8FAegg;nvQm>H5HFplTKJ>eKZ>6XK6>Fc0qAxy(#5Xdkkh0(|eXBePYr5kDMkxXX zj*W;-ke0lRP-`~ywDPlOKZ_Jqa1qPyzIu$Te>fMR@vgpq2{W%Wjmi=297Jj;hX2DI z{Gm{XyKvk6HF6f+XB8?M97Z(*d52K#LqDNEF0#fy&9+VYvPl^t8lC_ZwF%WdLHeCN zwp?K;8~D2iCkbN_f+p=zEuL3N)AQ70b(4qj;jD-sHL}ha&RkW9-!9ML%3BC8@539z z{qIJ)-h0VcqNh_k6B|__HBYx!gZXpCO^o4?Yspz7H$j``$d&)5u>zU<;!o z$-CF!uZP7}fB5S$EIWQ#V0mH}5zN4FHTXns60D3;@@wZdDfZyZn9`Cw=Hm{n3I=_Z z1%{W*)5%STq4NHe0sK>Y*|flqu)$@6|q=3`!g~piJ>50`qxrHe6yr1Tevb5zwP!NoDnYZ0512 zz`!4%*-)l$oL7?ys~vNt8&Gzp9V=u5>V-)5+!vY#cQl{5l|tv`Z65%{mAZ}eslP=hJi<%G{gf)882V*E_A zk@rm7X~WM-O8N^me<|6l<*a$)rZryOmkso%7l2;f7NxWt4W#V|09+Q8$TABC_`Zja zIo;_(H>dgvmT!Qc!|YhWJSBPmOFe6%384WcZ*+OVPwF$o3Z03IIMKPja{ib6aRXZ1 z;LtkY`uH9X_zX)cW?+0=8!rjwu07ywr-n|$v@zr^(9^@x0Uof)B(sahSY*}sEV1i)hcd(aFd8b zH%-sclF4QgZ2qj{*-}Tf=*hsAn^IoN1>K8;7EhFiAy@ix^|W-{x8mj#v9i8W!)dFZ zvA-T1DM-TZ>`N34t3(_?UiAMTEr92*yO+qfAtMKmdN-+$`NXEIOgOV7;zhEteQwu- z{S=ChgtdBi=`h1S3+M$--NlKckWh19g(UJx; zs@oYAQd4PlL?+LBUpIPM2VxZZ&46EspCwAf5{u+Jt zH134c-b&{~qYvKdKdHSLz56AzmbdjSCT>YPuu5I-q0ce16St9hWyzHA{FLV|j%jMX z$d(OXnIYj_qsNr`dAT76a(CwDsB~XDdUbSNI%lPEcF*fBO*7N$Q@i7}@r3y2uIfv6 zbjlH%?yq929p|~dZX2#s-*+F`NznYGtd67S?Nm>F_~}yO)1`|+>Y>Xj;&R;lD4|*d zy8$ZA_2nB+Xxgda(||~BJkTdzOUp|~NRr9L}t8ZUbv$mM|=%C9Lq;IvQ+A7Lc;6UTY z5y;L$g=?arw~4I}r^-d`>{DqP&kSTyB|msAXoq}_0)bgcVVM*D{+CA=kmyW4%8h4( zbO~+wHZ_@6^QAZEuGAkL&e1kHZ4! zYOWlF)1YVOHQBvnCa9$DJq3>9_)%_Ln@5yx?#YI8aHqLXOT!B_bp}FO)-5maZ$t0* zDjDaUdQXA%sQ9D@_TYAAt5- zaPDG{3>E^xKE*pvf~?d59TP@`DD2TIUoSNcF9|kPHVm}k)pheEIrzb6#{?7 zsR`tgt0|RB&%8Guj0N%ogy?bND_{)cpYREWR_?6!`2GpKo56c^4>J!#K{8dy(1K|Y z@);)^G5}!C$R@1-g`s%wN@S#tv;;{3A$7H-E!pOiQ@EP0}Sg z#TmNc5JXRc>)etHjii?8?7-e>p$bcOPXh2D_l*D$V&;Qyn2fX+&smz34p%g&+cwMg z3kWN2H5}c{#p6vtQhH9yxcIe1pCBskVm9?NHx_ z^J%dDXx=)=@7>m|wa0noM|VWo`W5WWC+_>9wRWk*bT>&MK!EarPn=`hfTJaVhb&vkW z0p3UaJFA)V)bHTdJ>UFDUIW=NDKPmXNA$DHmVypT0qeS=!)$!EAy3jxOtRn2>y$XuxM1~7hqn~usD}K(*2bFMmOK&g-n4|$& zip8QDKy>RRulK%TnG2DLw3v`hz&6dM9FGKW^xA&aisWGlQ#qE*H#%5 z&MAj^)8)mZ%FAv*jkPT7kR&gCX*No@)o=W6cEhcoiQ~FP&L8+oNih9XbD+J=hr(ka zl`p$X>HsOwOzmEMs-j|FWY4M|4s!8TP30T61W|*=%9I)3dAH5W{to^0U0I9w9wYE( zZqo&O+kxfdQ?zVQdEZbgYtyQCIPjN-$=W4hl}_BT?G>bmJd00AExf*{0~mK_G3&KmTXxia*kG&7?o6Mk0FCtEeP znqMxJijKaQgGAoyAn3c{+~l#K(ss&B$U3YePLxtq|x%}L=_`oI#?^J!K)SxMv`AXMD7+=0UK+L;b)i%UpZP>l=RT>xQb zGy~&XmrV;g?eXlJnYma8a}4cjc%9P_7gssCDZ1abD#GLGLIRvAPk%%UUb=I>M0RDn zx7994aUUU;U)rEA`SQtXuPr+Ry9?4-P@At=A+(L@+c7ksZjv8tZ25{DV9kcBb9(XEbuRY<`K*r6&C|q;DlEC2Szk%6HM1 zvbm;k#=@b#|4uQqyDu1b2kYjT7tsM^82<$B9t`%I#9ntdc%hYAyHvj9VMF*dmo_U{ z|CgiHQeyvZq2|=i5L3@tPpsQ@#ba~+y)gkLUWh($Bl>7YAs8WfFdoz9dVw^9lI#$3 zf9HKYkO|);xg2ZbFOH>5IWJ2`@L_k~o(4R+L z1(cp){WvfF+q)$ZZN(2yZ=C_ohi3=dR)32dCkgI=399Bdf42J0am%}U!z0SjcSzCY zjCB0yYoR!?avvkEJq7k74?H`MS#BpwSlyU8%<>}}(kLJa#(6J?abiXSj9@BvJY#!Q zZJ*u>@p{Ym2!T+u`e^Yo<1?r(6{}7XBskt6p!Ins8T~cml++=_Ok)~|BO;#jmAW;| z^}%4>KEJG1X#`$~2{C#%ke4>c=Z*BSE4NqyGfdy3N@``Rs!^aFMUFZa*h1?#+XA{t zpIaRFrHiWvni)3q1la0+<9`J|49%D|g(`D|iFN7v1{+BxnV;8oX!lP@zCFMobA1a0 z`6_h{)0w7LeLwDBwC-M4l)5?=oVun++_lyNc`p6`FJ?PD^dUdugIF*$(AI8x;^uN= zFU{>-mI0^s>&mc~-_lYZ&Ukb9K=S$wEk-6s5c{by!qZ7ciN zRVqm=v%IzZ8DYF$#hPw<)=ERqGoSmR_H0M)%4e3D1Q}L1ZNB@m4N(91P4dc{SKrUG zKwPqb|Ci2u#`LTJGfpIE-7!MhYF*Y#|I$4i|CC_tWhTXF{-AOAD822c4oZC_*U>-* zDDSY4)^>J|cG=OOzafG5J&%A6_jbh!HC9hsB*HU^;|)YR`jB!Uuul1ZYq$&)3A*Kt zmE2L1nbw>Y)YUs?z+;yq7xlR00q#f%Z{?SUr9A9ofj9frwee`}C53LQDl|%?!F$X! zb$Gt{!2!^9#FfzvQPMxUUDZDockO6)S$ZmJ7mtqo)fsl$dGX^R8Xjjitn}U9|KW0O z!2Je}20eg!Zang7V#Y^Ca@Dhed=C$4aGh`~M9+-^ z?pWF^BTgFoC-mK5p&K|WSDWhO{(Tvgs&u4}En@cG1Y?3JfkbDKJYpTf_ebu!l;-Bm zmXn&5IH=|Tkw&8b>j-+4+mUp76@OU-tg+di-RB0lh&>Ag1rGv%KX zw+0Zl=%#0%_jbX34#>AeRhHK?Q@6Hwd#AzuEov@V&$0;N=T!7}PHVa_%Mt1t3usml zSX0?PVDGlC%XTPlfZ?W*)4ieA)+PoXvb=Txn zFsax7ut_LrAWnCu;WOBho?yq=Dz1$wjlt``_R40$CzXxD28)1Ptzo3pudfQ+p_%+k zgW&XI`&bVDD_92bHrkQz7Y~2y!!humYN)pkW}1N zXrqyxhCK$9kp}Fha^dvurPv~9HxWovmk$DOn@RHQUN8mJf=8dYupLAe6pfQS9*qZn zN*)hP!b>04z71I1`D5^hHLyUKW&%R_{)d(WfBY*&g8>e)?W&p!=+vKf*L0PBT$DQ)JT*m8-8l_#Ysa;TGgax zK)8g-%=5@p>$8t^^?NxOpS8SQ`na|uS`#utm-L1Ghb>zmp_af*aHxE%S7>01*4lx9 z>zP{a?tjQx&!+Pxfqz_U(ZLobjI09{m=M zBRt)>-`G$UKWy-8P$b6xF~j6VyLZHm9}l`!zuB+FD6Vn1@9K@WDu27f^|j@leN_gT z&=0NPoeOOfZ(k*4TkpjTl$2Q&l3bL4TPTM5))S-mI9JUzb|bJTNBr#~iem@o2fh+u zGO`L#z;g_USf{Kaf8vVv?#Fi@bkn1Yy0^U=5?!^3dB3F9Kt^vnNuEg^m{d0(ue<$4 zoIjs2KX=ljQjMagd7CP&Pdt*N8;*@1f59X<&)6IOBI5k(-dkD*KbYt@k(MNE387wX)$V^rmmYmq+kH>fkEU}$Hr#BMcopvIPnslLnZ^|$5oefg+D?PoM{I}b!lELuH+)eLF& zW>BucxSitPx@ao(sOefY5Ev&u8-44^N@NM?w`?RlZBdIJ{=68VzP+;cwZ3hF9v>=ZTbr5SBeJ*ZGks|( zRF^8kXA{~RPPlhka@Q{xG?nU3BWb^Gyb<}9LhthPVJi-f9>0@@Zr$*!PPYDMq9!?f z{X35H;Fe6E`(BE=xB=8HPJieOd30&`zT+oMyc=~gMWwsXO@cd=S;Z{v9^s()MX&A_ z0kI!x0H0zpxs`~hnGrl(1^jz)cWMr*>sJYh)1~=}wi0DyEo@ILyh1nl(|gfZlw$?2 zhmZ{woGMML)9wwq)IWa~$#73Y3h?O8gEq0%tp1{zgic%XB+8FQa zi0yb_#s$Sev%!*;zv;y*E1cLT^JL3i{`Qq-@-TPcN@WCDB^A?RnB|XzSlR6v7DWmS z{@VS`=w@Fa9C+UmMkrmA;u(S9;RVmyL*EPESDLDqJx{FrwnKb0tau(c0Y;xKKV|$- zrHmRJAop2$;vMUnJA!pvmCg&h=d zdEj<_1MyWab(R4#7(&jVMA3^tU@2b94QJL&a|TJ|M&Vln~}hK5Si@)9^ltMPzdlypx7`qlydq1@BHuvRPUc5R@W8*Wok=q9KrP02i+a$C6y|25RlpqPXjYe7zp?>{*eU>6G4EN zW%?v<)64oVjQ+|dG%ZlNOIpjLS6=Z^=|M6^ds!r6Rr`b-q!m^UJTd=;b!0_D>(BRO z2P!7DK6srdK;CzjOK@mx?T{0HRPnmIw)q16R*h~TWh1w0+ur%uLgsU-TSdIfy&2A= zC#y@zTWkL5e5lfIK7nP|SUCpN*t^Q+G9y`z#-4k2Yke@*_Q$W%L#1zoue#Tb)VW=@ zByRClDoT=-)NSRG(eHoSeDX=08`=2Qll)9K-jsnEeFf)XS^=J6d>?V-k)y zfP9%lj)S=;u2+2iINkjaHs_Z$)e-P)bH(hT%3D@Li}8>AdApZ@lYaG13tAeh1T+x^ zpX8u&^y%>!HEHZW5E4+E$m~(jZd9Ykrvxas!Ee7{V)q&w2I>|$>+rT!+vE%ZD%5`` z5X8K7qo8xlxgYl-j@>j+VR}XOmd;ENHABd$P1^qPa9ajZGW*eTFa-~6MfMpmGFM-V zD2OO2*zlVT=l7fg^Dr=NaC^_P*XHf4`nAf}uYKTfC30J?TeOLkP#e*a&d-?kP;ndq zYR-`1lPO`je&N9{l1kCJHt5FX9KOx!rjUu=?`X)!XO$G(?2%jzy?i7&VxdbA|n zITfKR{Npccc@3jj%95MZ!wCowaKnQ>9apD%qL+r_?`ivtnVkDza5c7;M2>VU>9o(C z*@I-p5#)OHN%r*$XURvJzXPUhHE=&IaDJIAa+%r+QJWNpY{?CvM0A{@pgR)7%%ruR z-SWSd2ByF&#_<39c+&_{6 zJIX1YAd1mp$sh4Rxi$^JOTz~s^a7R4KBOnL^<388Q8hbP)iiz^-NykSEmIlX%|+0v zgI9!GP&RAQJmuu%t5e=M`-xCLJVAU%K zH3;OQz*K6yCoBz)aLq(3L!zM&$qtzsRI`2H3)%uij_^kJ0=DjC3*(@UXS4*4gHsm* za!b_5=M|+6{!#y@pF#d|PqWc(|MqWpcP7VOa_v^Zc0VX_RN54Nm|a*%h-G*C*PlGZb;Xeq)ni|HxIN|UWTt> z7>D$tcOH%}b1@CVtt%B}$4*E**W-9ZRfB(6EyVDoQjF-z%NJzRjG< zqy%FrAOLQfVLID1G5BlMGEOpE>B1Izjo|K!g zuhxIwGM%sjRzvDYJ+O-B`hAd_^1S7X?_yKn)S$Iu>IF~q5WC2FQh_0V`DJog-jK&` z>$Y$Xx02#@Kjgy}yTeFkF(`f(daU%mZIW~Hxi<=Q2X&qz?iT?NlNJ;x! zR(ru1(7&J{n)Y)5d0Mkvqda1COF(q!vs)kZ?aY=v6ryL=SK)x1UZ&&T+P;JhZZSIYxn z852EH>|kKNgViF%!QBx(LXO$d|1h)X4EIQsp%|hYL_Uq`=-iuQHrpb z-Jeh#YiB+tXJR5|&p+%Kr+<(la1Ltk@Spbr@gNWGnO_(a_%IL(=#sh>YP>bwa!7Hs zWA_VFtHW~k-ng;v%KB7myN5;6MK%LMhm1B}^+qqQ-rdNd7X%;G8sorSs znIlv;>#M8J$4mZJ2@HlNs`;9NGL0-V|3m&-nAkAo{=)JehG*156M6Z%owPQ}5?C`H zzD%YFr);>ibx*clYTul>K{mt>D>T^@4wiq*=9SH=Ej^O%P*@w-5qAVLy$CKa4Uc zycg=;{l{`OEhdG)Q(y!+FrY&e==I-96OB-m$lb@!y4R)>2c-MdaxAzG&SX}e>Z<}IHs=jVC=6MCL&DEZ3U;A9!P47uqqm~2G zRtv8ka`dC?hB3@6hPCb+Ra$d+_&9d==;U5sZ!3E+F{-<^0n^i4j$_!fur#f0=gm}* zqjnqI(kv9K+ckePvN9RIY*{F|O?DoNK6)iV{CB-K+MiMd)x^*Z?HhSTISP|F?)rRQ z1HXR*2NB3=TQ`pR<+0+kOf2Kqdm|t)14gliZZ907{f`#lC}S*ep;a4d?y#}wa#)Pa zcxEC3QvQnQJ`I%r8_8WD6w9(DxE%)VreyA#U$>-F)19_rraTjqSPLSMX2O)dfLTYd zd-WQ80K{;KwOLA4g)3=)`jKZ|h28q;+1n`M0q5py3Xu0gLDtgq0&j7;s3mZBm?#Iw zHMn9wh2bx6jic5OyMPNSno3g(6Sj>%(nrQx=2I7I5tgG-|G4MF_VTZ^qe~i!BDa9$Wi~9aQa&P)lWWp5oOQLM6F*Vb0zI|#d=KJH77;5_8(Qi)r$dj4_%wq^i za7hU`ZI{kZ56RvF9uZ?LgfjkUBY{$3*8o7t#CMnJa_OjWBPqeNNC;N_9)w=#ao+SV ze;_R;!SZdu#vg-`u=qRYjR(|3;uA7Mo=U$rc$B{}o{t+aFbEI^)qI&k?$_|CDz|$| zaj5GQk!C>9p9&|*BDa}w+ixjVm^ctwy_-5Vbwq}gh6?~dZxtpPEpxMqHG{tQ#ed6a zzE=~le5hzVu%%U))BGV{5>|SXf;JDhtua)I;wwQXwuo5?aNvScEO0XJf~W?6oFPjq z8kQm@uU|3^R%+7O21e(b>yhNK23HW9xdjb%D2+S@Sy@05{T7dmWTDa;LLkD-NHcoB zxl%+?VGKEy_`tw#?xaqEwPPma;~dYa+I`Q-o~iR8qb6NSRRxuT?~6AglJXT2`q|c++o)f?@?FzP zc2C>R%znDx^WN>_cBr8p|E-%vcshCkOa0nxBqVCqM7+Irs|`J)P#(KPmlO|_4npCQ z+4tviZ8X4eps`R@(BX_%Iz(J~YgKGQY%4JDQpe*nDap*aIv((nUjx)*q{_ z%^?IMb-Eh9U|z1-KTVWdNYI+bxLOco#HDxFCeh*DG-So0T4v(K?v`s260=!Gp*-nU z)z9-dgBOg|va2zehFY=xBq^%;No4!f?O&A#F|MpxPJh8lxjAMI;N8+f%U>uJ{j?gU z22j2qQ}+cnNK5yehvEZx1Y!;I&5C#ya zM`Qeq?VZJ?cJK}(Ow)&>(I|+mqyf-?kvE#lElv%nxvE;LRbbQngk&XN1hwM56&pyf znk_*;5vDtgy}i)rsJ=S&|G0Y3peEDz{o979D7cF>X_j43K&pZeO)LvoL4;7GgknIX ziI4z766>N=SwujZt1Bg;2uP?V6q6tUqC$XB3=oPyNJtP!AcW`IXXZci-CxERzR(%U zeO>oij^lF}V7o=hP?VSu_i5F^!~dAJ`!&=ek=ws1J8@QO!7<9WSHs0rR<5GXVnr6; zn2&5y$aOm!W^KQ)j{x?GsN!SydRV(a1yfdMJcfBe=jyuy1Jq<&)W`-NeI0A5&NP_? zSmGzT9@Cmj03UP{Rv4o>q|=dQ#{Ab(89)jH&VS05eYouO;S`^UXOV_)xyCs0Ssfai zTP+NK#=v*pU`$txmvX{hoOeDd{gd6vhV{7=j-S?FnUTCso2w8=A|yzEP*d*b&1p(d z+z4V7X(aqDJt{Nc26U19R$l@)3XWLz+@Bexk)3q3VM+Uc71NsQ1f{Utv-Qn>N|E6$ zzXlj>amsrgV4+G!0k9ycq)2f99msk!l5(;c&a_;rafA}>xmRYdJ?JeBb@|Sm)Oq50 z$NXD{_TSv(Zmwd%H2i=o(_MyI=Or&eeTs?syT=qeO7fR`=?S|ZBfiJ+emm#hD!WAA z;}#P@R=@H`3A9V*3E@nz#eL18R{sED+FaD&o~L%R*JBD>SlnD!y7r^SpImRDJ|Mcx z-zHbY?WVYkoM7q63Os=3nsx!U_M7u5Tl?1xq|Wm{grCrqe(u=873YpGMh>Y}+JON4 zh_)!1jXMVcD<4F~08gaj3p(Qq$=I_3i)Cw;(^`BfMses%{53GkeymyE^y)nrH!Xfn zKAn4dnOV~IJn1wZgFltgRWpl7iR&X-f$bQtsknUR0z+9jVC7?R=l1@Yligy`DyJ#+ zx3W38)h|Bj)ouOgLVZ6O3-e;?ncH702oU#E6v@QTqzs3A+_N3@@}+uAudki~O@jQ> z49AK>#y;bRcD@!3SrXN7p5(`^cLjgm+(-MTF03t*q#e<(RcMyertotPgGr%(Y(aM? zLQAk&+UL&2N-Rll$#rEwf{?0Ipevz#NXaWlXHx(p2Zg#53;N&H5zE1ksk}m@xkKFm zF9B%Ngz%Njzjxv?Fo2l7kr+cxBzKo9vJ)daENzN0*U)Gn&;J3;SHBElzY;~M~m1G-<#Co{?SArGHjBJ9LbliN(h#d=b zb6BvoAW5C1Z^~+yqTIn_fJlNJkshjkP8Mt!Ey#%*i-R-C#Ytoj(0(jkPt}xCv5S>A zwUz%l=A+x;vf`ES2sqv%X?u^*3$~4Rz^XE}t(Kd5GT;>m!0_@dm}^LZ3}B7C%UTg>)Nb zTIiG2ugR65M=dTQkyQxSXvIL0<_01D@t62ctmxANzw-0qFYBF9f%GVHGV0N5AKfkD z#&KfAgSl=o^D1KyeWOUNJ-nJ^%g=WJbKEgb|q{ksy;U>p$ks|8#RVUJbhY>R63 zn+R?c^nb#}`N!&Q+=!(WN3i3e@byQ+AUzbXQJT?H2<3^Gfo3&(Wf=}jdkNJJ;xW<%Gk0aE;lp-~nAR@k}Y2+AwjB#7N z>IFrT)X@88s`efG6F=p|^yCwG(E7(8bM_r7O9aGKU-t97S!u)g!>T8E5gj&sirc;Nym(zT}`l-^F`P~N+E7~C@s6r-zs_e!f)qXT=AoAZ?7X^WW?H`woZdJg( z&lJ-Q;Oi&M%!GPVz$%bAa{=t#lhCh>x6DbNNy=v9w&SAeI+w-O1kUXow9+)Ohu@5N zHxmD5*nAlKt{Z<0cL>M+u?UPZtE-!y`?>rB*y*y_t=p-&Y2;2|7Sv10ue{faK*ga& ziFi>W`>lPaC=pbTG2c}&Yc){V0|lB0=qS z=klOh_5Nt*od5F{a2?xvfk$t~gFCFSVl{Z8z@Ilyse>kIOjSB8*qO zGN3Vd(MJK#lMF7_OnF?m??7eHvGu*b_VJgCW`{KCFG9K*%T<^xQ;)oUrt9x(?}}jH=A8M(_BjPcx@KHlu-g*>Dutg6%6{Q-N#XdSxL`_iq*IbwsEQo3} z4NDVXKlju=$)a>`tnLzl(1Povmj{??^ZlW zD%8`l((=*Tw{ht}XwN+XO1xgg&;R=>3tC@%oysx#t`CtOQph6L zc~&adhUXZkGfD9Xo{HjlBd4ZO7H%*d!pq+saz_ko3y$Z=ia1E;9H87!hfQS;LZAJ@ zotnX~y-w+gTI?5_0#F=kb}(elWx;};ND2Tpw|z0L3FOp_MT=NbCKxOk<6;oez;uQO zXxUi*c{8y4J$6)j7o&uOy*{<5GF^J7@!pQ3*qtZ20fL}f{%rqaO|!aEzXQ<6lHF3P zl<%kwfN+u8%?*8Jt|5LFnR(s0cLMicJsVaXJj*>hZBU$who+ZQZ^k}?xunVsz=^tn z#lWl5SYfA;)gi1um3Oat^iD5dI5y1iz-Cv$tvy&#zJkaVMdt{6-c=fbWvgq7w#_+Q??=5w z$4Yt2hchjRpRy{(hhw$p=8S$DBk7ZDbBfnp5Aol`frZyy$-F@~W!)b{Dol?JboR;P z1aWny%1_ZVz0)00%O5%YcI&q`J!#2zHi{;hGAy7 zx9k9^O)O{YA7k3!87G$rZjsors$NOxHDDc};=>lNl&O?G0L-*w24Ko)zKm zHAo}L1fh#)sEgbPYg`HdWTAp)cIZglRdmN&gi=M`!tnemZPIKAkR@*XL@}l+eDPI$ zKnA77)FYe~_ENMrglVhq4ol19oD8l_Z=PlVb*@zs=-R~4BeT}hDtjedr6F%x;AOeG zE@B>@2s^bc$>R^H?+_OZs?2lTZIq1$wF)XRFAf<&xl6Na2)O@>RArshQ1RW-Uf5W7 zY8Iq|NKZi?a zr@^nq6@~8pay8hlH@o;pA%|4=+5eQ3HGZ2&&_TnY`NgBFZf324Y(YEdPO+Yk3K0lWh* znghR^*{ffouL4-oy?XW^QoT@=h>pQh5H6(g3U%94&Qkpg-G2%}%*6bMM?IdBvS3Tx zux0bIDfl_wEK2zO$9ZN^WK6-kqm4>t9vfw|+&l1Nw;h&qM`oq9!psntp|{C*&K41R zYLHAFfp~UcYc`$=4v9ER?xh zx59J;(umNL(S~_tO3$Oi^RgQfDOR-TqF{h4@)ui4CS$Wwk|DEL864oBy#CSO0CgG4 zCiA3VrQCD@5Hh&A5?2H+@S0fix=9I_O^^_tB#_}rgU8V55H5gm?ourAdl>AoKyCv^ zOGAZ}Ll(ULWl@FZ2-ND9%3_WPEe78HtzDqT%1yef2QXM7kPSg`UT*Vz1lq1Ov#(~N zxj4k-+7*K2F4`2nn>$!MrNak+re}mqOuJ}~3*1j}=_coE^8CU9mE8}adJ?===(=5z2B<3@dAFl-tI6#?`U&>W31mX@UF1Qytx&%}hO7_pQkP#JO) zWMaIYBj&5sV~0N@eqLl^mZY_MkS@+F_vKsyCPrzxaQ>Az#^6#^GFC3R52iz)kt6KsAv`hw>V4rOtgz=IzjYh;z@-oxLVMEtZ zguDO3`k{H8q^9${Vb@RrjWy|?@etj$jK;NZ*rWRh68;Ya|vQe9GN5C)+p|vZTDA@6YQBY! zXcAAB#711<#CsG@U!iQvsCBnp$*MEI@d49{P&UdvhZ5(!JG`MKQvm- z%${A&qnqF$D}0CUrSNk5$n|)RQFZ2=BX?THMUbuXKyb*QiPYO>J+M+7z6DripACVF z{HHvQss3ujbsF4sLn8sppF?u~C9e@un1;CeWAGs~bqh=SI5)Z5z1VCGl5`h!a|Y06 z!mayY0qe0-kOBoosh4K0CGL&kWGcOaw6RZ$=e&hNh7wXmiNB^5ETYX#YkFmG!8&vHZof<@V``-8UxzV#`4JS1;~dxk z8%#NIWezNy|JGQ+mN96#+B_fWIC|whn8*?zHQJX0V`cGm$-Kr~X)2*yuoLWpq;T&g z8hN{l5%I3TZ=xc0hseIY4Qnb(h}Dbga+d6oi6|FZ3|a@?DTB*j4e+Ql*)W<^P&2tycSg7>S1WG%s$OIewvI67OAgiM*fNwdD)kQeKD< zyi>pSednF1Es_!Rk8O)DoL=D@*Y;kkdGA@1UOlq&gMO^xF*&K96hH5l9`Vn0^Mlh{ z>Vh!PX%i9mVVvGmS~}Uoh`)7cV!gd1U}oh0KZ?AqwXBThiQ^}4Fds?L!FogG^U=O_ zigzaOx@GfB#^xB}lT1Gh*4vPX(uqFbNSjduOteNvS=f)aTqFsu2sV4InT_J15+f;) zdoEqu^D-iM21vdtxC9PicKQk2!|NSVLA5?U{?6UnHpB;tcmb06IcvTf;~aJBeP6$Y zNkq(2;<+HE1P%qgu#5*c(bsCN`X#^&X1Q^6jLg;}0jxfwb85n8Hi?|V@cVvT}7;`_0D$8N7l62G<`jJjGLN7>6DO-EU)cDsw!-B|qkV z$d^eJh>x(6>KTHDZrS5>0$Cf}cbAj32Z;L9B!W4Z*HevIC=FWM>EU!RF0`1uyr4AX zamlJWr&>85LY*D7CO5i$azkKE#960HsirWxP8*q&11=)4EQLH`-z4ezk?g?2hbzF{D z%P|VG#SH-5QkuP>09W#q4(?`irf&e?#i`WK50uYRF)gNS3R{#ams!0y8zPQ<2kT?Y zeXG>oy>Vznu(I_VT-Y!{7N;va!y|Ak0Pw{~G6OKj&+b_(BWe>y2SA zk=Rc9r{;vgAULVK#b0M`vrlT9nbGHh8=De*G-ETsVI3ewYyfx{#!2$AgBH5>e?SvK zKUFY{&~ndfyHq@!TCSHDsT=2Sdl|LmOV3Z2Z8Q4tHTN1d*%I`YABLxMPPTXGBkttL zWkGt_Ffs=6 zu6aJczU%xhkBf?lL$>CLzt)tk_F2b_1c20KK!h9js075?R5&aS05_F^9szHPC*2M| zp6M{@L^_HKZ*@PW^KU{HeCaMUcOf#pB%Hf2-wqVXYu0UGM7H!<)89#g>QA(KIgG_a zodeb$)l-m4Dz2rpj;GuO(j{2q1}qSJ9nJL6-WjSjSAXLv@%_)f%PhfU#8Gtbjw zvliUWW+CZ3rll*YHP9)2P+#7y{NxajEkTDr1DTSoH_L=WIwe{SUf~rIGSws%)W@Wf!TIO+j<%NHcYtAJ-()3tfUR)lQ1J3;t`!kyt z{dnHV0B4S4b^mJ{HP0Lwt5}mcYv-2(jEKP{(X~}z{anwGuZLCwal-FAq)OkD!g&p# z%{IR-NoI7i5pxAk7%8cB&29jLLgL9Gj69{=4_8S^`)j!iDk}FQP6KnDVZ@|VWu89_ zSS#}%9QvZr%a=97`ZjjqqJZGqj{Ck!7A(prB#UpX?#JYm!~q&o0#EW$)`Px*I!on9 zorn)~)J+K{>w|)$GNuHiqy1n3_)3V}H&dzaN0Hp4Xi{_d$qMRu55wv?(a_NxW&}+% z@!x4^?XR%=pT^Z^tqVL4)bA=shqdPAb&`ZD@>d@==SsP+>;Bp`z#BlH-7q-w>e!{J zjS+9sVE!?KZk;11o9CqZ?yU1yn@-2}xYBGg3cpznG^y`xTOOlOU3E8JJ=(QerF~0R z?pOTiyIpti-XSM0mQHMWs<(--<*z(%ec7CtL$9x&@PRnc`ZSkDlp@QzRZdu9z#Pd&zeL%p*y#;-Wps4bs3>$KUz_B8{?aEBj9W^9dD|MUOF) z-p#qWrd+^$NC*(#@x7d!(=aZe{LxY1vf#oLcuK5MCr7i|hX_wT@@`BAoncPKQG%HB zm(4?q2VP{f#0@Bb!y|ZtC%xwf^HQ#2cY$PkV&%Qj9dqY5-tz)Z$Mud`_OV0Op6|a5 z;95iN3M+{hQpoM0H)YK%xPS*-Yp1{b-nVeVQX#AC4P6UJWgqAZ}cr7 zt^8@1&09w+oi8EUyY^pIKz^79`a-b0Cx%qOr00~ zGUFnm%RTy9xJVcu%ab6fC05t;y2nA4Xo;v1v5tAzz}}bczwD#7a%k^z*gg3Yzy+dv z0HmveULB%|ODvZ*41r(>N;8MN96kV{T zS#tlM79fNSu%wgJ_am5kKaWa+KCrG9tfe%%7FCS}yDW{s%k}1n;4Wn@221h$%6UMF zs^5vrj&Hf};hm^Nw6-@evEvTLgL?Y6Cu|6icZ@Dy;Kbhs{<8?6a*ReKtvylrRnT^6 z_EeOFA{vicaLK5DM0Ud#*}=MFs!ZJm4Hr2B;O(UsW?rlP3IyuZs#{!3F#kUlP{A+I z`~PgwQoZSL_Og;wIML~JUYzHUs&~h1lb-y!t6Tb-J~nPJw`lz?9~sX2{ONA3T_$6` zdX-B=&a?L91`O$7QCvH%O`JHrf&7f=kWhr^-qe9?xmP~kYFkILsOjyueKQ#sPwXt+ zf-^i)I@><6B_n$zuo<=g_+-fCU`7X$t&elk?#qjuJcSQ#KNij2^EARU&MRt5Q;*-1 zC6CkHZkokMaehM|812H57WT!Dn&d39QpE5wf3(8=#axHoY@~Q$z>;Vjr0ttiRUtHV zw5P&rk3cvd?%lZ{s2!h(TFk6C@f|v8RHgI;?N^y}!#g8`pd5yji_9WR{xvIg-icw> zy>%>KCA9(ic0Ad`AN+K$yg-YF0@b6Wf85A53jMqPrZ!v?elH_6wP@C;dd;S@Xc?Kw z*ThCHeljWM;h3ZfpuC2Ay^C7)JmG&%iZs{6F;TBr4uMUo35zybrS_Fq1pDEXvjgTv zUs~f5GCJ(L5vOl~2D7QaacrqgLGDRiSufq7PQ&o|xaokbjT$y6V&bfHyh6Sq;uQBJ zm0U`PfY-?*9%qSO8TCK?1c;5vDpep?2w%6b%=YjfYK$cLKc9IH1lps4wys zTqbh>Woftt!RygDj0Tgad%!2Ta}4`;NEEqD3p&n7AS*a{O-{?^T?2;>X?}C(YzNH^(f`5j-=4KHY;1@aQ*!%VaR?DrgV9kB|4v^~l9a6)m-n+=TCHED zOe-l=2s76zI{hg-mROSxfeGZVvJJJ4==lI7-el(#N`fMdqHCYuD{BgYB$m{Fzul5m zJx1NrJ-rjhtlKpgCFj)}H5I0j!`)vB+y)8zaDJ_|_jWv6dz2Udd_cPvrU^A@Cy3^j zi~RbJVOtru5G*PulUX5(U7CLy3Wz22m_|wR9DF|P_sIZeW&m18Y=(*%xX9W#bcI|m+g)rv`D7K*cRRHL=0sOMUp3;xn z8LQOuV}Hku7;U~u)Rn-|Ix*(~mj#V>0s#K(f$`%|9XV3eiPKU|_w=6^VeFE%U0XpX zJ?jbLw9s?ivrVmtKIR%5-wn7k(iO0rF#%F@%13Z2c7x(pCKdnWYw-Dz9xKrDr3bZ- zfYOEnNHs=U`n-Pa=e8eveI2k9KOiqYW6y3DC$42Kf!Lwj56t=Y6!X&Qeq4y96zz5r zU|uFlh0dpDzHdNt$e!-NJe))ZEo$giW(ArXNtLggmtWrodIQAQ$7Fb3iiv0AC4eLS zSb>{lnA-m^HnVjkagTGyS6W6|_Gn=>T z{ab}R@0H`;Wx?Ddi^&{G?c-A#x@;J#hT~QYM21tNFpadJa<3Ow>Go8RlJWfZ zCsA7m4_Z8fFqy>J0iPWBMg$U9r-j6UNrTPl4{0T{Al|M&qu|5g{2sNpbtD&H_;{NW z4PP?_pw{53@cm)nadw^2aWLr$H|B&9i!G~JpE-jE8>MipK|C!*_ZQ%cJ(UdH3Bnwu zC_t>Y^71azxeP|NXx>8R3iGNeTGt5C!sfN&@yTeN@R)-b7frSfx@c{zoE#i?Pc}7= zH!5rYDgcRI6?JN*&g-`Nnb&Vn8a!_}2e`0YH-*%n!Z$&b!3h6~n~qVKqrz^=@&Gll zBG+@u$mmaBDIgO&C=EJ7OHSRYZsV2r#yn&DZNC0g+leCSw4Y)Fd6Xf!jG-VNHJ5mO zJW)Sxl%lebc>ug%b|r4ieqT69th7%A5JtF%(>mJOg?NFsw9!$>SqGQDhZeXjg)_Sd zW(B#TSJ}OkKo{CBmlsPa6;no;sFl^cSPKgK^E%%NEQh)7m)RS4#WFD&MxAmW0H@>L z>z8w-qBZ%Utk{&GCJ~?tnb(JU^_C7Eb{CbZ<_R+EukEA*d%=e;32FtjW5I}Zd@HCL zvEx|K)HQS?Y6nzT)M223ni~Ig(g7G6hhW)c7V&6LRrm!RsJ#;rylhket0!jHqp_>bVfpv?fOenCI)9sb`eyAOTlzE?$qZHXKtot0w7M)+HDL zFJDj*dz!C?W4na*WVnc{WuFY2uWU-QdYPRElBMe2fS$96H)^ythyA!|o`Mj))%s%> z4j8bF$`!_Byno0NHx~)cUl#?yWG%=^@y3A}1`9z!(i97AQ&^mP@!; zT^xUZkQ0_WMbGN$&)u(0PLzzSR!dK(6N>O*0S5Q`y=WEJiV!ZKm+ZkJ#D9q;^3WqW zsgr&O6Fbl<_x#*y-qR-)a2Z!?q7Aqu=6B+p0p}O!G>cq+W6nefj6TW5r>PBu&UP`P zF^lFNr=EngNhTt|tp9z*_iq|#=K6^tV21swk_qd1Y{EK;v}I!7RK=xN-oH%`9{#Yl zeX65KpI9-gyI`@{BKW((HcFCb`YRb2HpEK6%R4Rr3FUy}e`&U*O7eOy7W-7ves$`% zA&+s$;8;UAyIMAN--;3rfdP~i>%P01czZvo9#MGCpECG6am>j0wRYz;&~~b)Fn&xU zz}yCoVVHryGwF{+{ep|(H92ANYVE_oH1l?M|Hn4OcPiGXG7rW9z|rAa zGhB8(PbKYpUq5N``~)hPLZrqr07B*LoA)hEPMrk{7F>TxG9QozYiUp?h073Rj94-% zDGx^WWU!IfC*vW+(9)Aj(;ET&-L;2Z()=&4WXtB*7OXTB&9C|W$-il9d(&o%-VpE` zc$NQk;Nrng$~&(gm6C*;%L)Ja7**huKyZdHmNuHC80WuiVzm8V;>5jGs69BEsF_2|)lk^s&yCa)kPkPUZvCEakk_^XeJ)SsR~jp2u|YJHZh?qdxd=SeuNse?TL zRnygE7pf|<1dw5$Q)Qw=x%#O9;(aTQ5$Etw5fPbQQwJl+4oi>Y{PLU?lrai1&qvr7 z8nRtj$)r!~ZaCFBl@-Rt>(n1fR{@Kplm-m_s{zCec1K^WU@qKvY|HVV55nol27QX{ zwASyA+%>}5KFKLDLFab$qO*8kNYg`dCHHn^#cWTb-(>Cc^4V#DRpQ$FV<(64pH?LX zW&4L*VyYXQ&G&7LW8r83hS6UnTU8jw?!&Q6Dk)zCW`5avi6H^uDbYsvXBKb!EN4AvHFn{Tc4DgNpBv=~!J*E;8m37pW5g&gm5=!};j6JHL5+rr$| zkaBgszQG>~M(jWNwIB-4N&OQsdWHPul}l<0E+X~Rb%>koumnzfaYTjqtsjfz+f*q*ZVx_$==f0-2O4i42 z!D98@a>0aA4^ITdtbH{E*9vV4B0daaPD*}7&Vq*WS2L4$X1l`PgGL+}5wwC=FG#!5 zj}*o}$(k6m(%)NhJxhJU1Iv`tR9q?#K{7yn&88> z`hZF@8JP{Xi=Okswb}oCF3%v^cc`KzGcUFJYXFZ(v!(x=BRUBst=C8Kf!hw>Wq{D8nZoy`iBwZ=L`+4Wy zgabtMS13o{PKOX743Pvk(h)!5SKE(Dsp!9ToDbt@qu_tCe_2LKkaFp7y5w<{sm&A? zVg18wEKnLOy*$?1@k#jc_Se0I^Dko`l6AkgN_I)@+`$)d8ZAj#zX*5sh~xca*Lj~8 zSL2m(D#_j`+$(bXmO@Z6tjKf!*7Uc17co$f!T4q@?S>Jb#y)2}`iB-5zVYIo(q#M-`_A~y zfo8~cfoguTfsx_9)TI`#cXs8~JV{1D%10$B)%^a-wGq<*NT;Z-!I(Z7+P{*wUfq;X zArEld6?ArrUO^FhoDmKlD!76XW*g3}U|`G$qD(xn|4C_%gz}_kD^Z~xoUXWB+^mX* z>e|~b&}3BFjG?q+KxQ754D;ToT~HH)zg0tlhFvv?Dlnp}V4OJ!DtmLmVOuM|v4Q^g zKS7&?T1=C`gJWKiP1u(epuf=l3V?;DF1aSLy;m%@y^sosj<4Gh%kkuVRdHgBUp<>z;fF-;_LJPp z4OU;?nU*HFk-cUrwOeD;DuRnekUz0IcE+sA4~-isc2&J$oV4+kB!fSlIWbleWcYX; zOp(K%2p(1u=TN?SwXo&GoW<&kQFL!4)?bRoI)?hBZXc_&fCb3x^Lg|#K8qM2=APela$+BcS} zmoph5YOEF=BovfljyjuAk)=1r!g6!1aakdgIpfviVV#P)1@OTvSu#`1cRF^czRY22ZS|((bbbW^=k=F(K4bjugfIwTBtr$>5#t4XtNFSD-qD z$bzqh?o#~lT4Q-v1}U4xVu9(C%G`PUT{rEPRbHp_L>SZ7N$ND@%E~fau1=82Mzre^ z%N%P3gHIFFIZ)z#a1TMNWfOhBmj-+6I8FI(kc`geb6vNyinIVp6bPY(?@60+nm((` zd!*k-7dsOr@ReV}&o2GcUR$lZpr>VDDz~h;=ojlxOGf&5j$xj)eZ_A?iRrW3L+U%S zu3^}4WEd}XB?-T-*XUYMnTMKq;XV_&j`TZ|;apPnU>M(VcWE0g4I$c zy%h_Y7=N*b^bp4m=qnn+C5aLWM{FVzkWvw1wRz+6YClJX^VT`KqC|{_P$lH!gFOEG zkX6kXbwDnas=`(h!LvW}CCuZ<>5xy7TZap?XTFfeji4uA09q=&n@xwK( zYhI5n*tox*#D*Q1H^iAx!AnWJpiCks7vQpuUrq`wpxnm_n<*cHcXvh8scaL^(xQ4J zt=jRhQb4x&DlILzbv{FU9G8)5*i&`a#dUQXj`i_(FAETZ(Yq9h`p>7PSX`*4JW%#9 z&+gR~w=br0FROmSEg`MVFLHF{rt)`81R!Y}bw(r*R?X$PIyK zn;?+Yc)vKmcX)ECmzg!f>A4{`AguLVY@M-l-Xpc%@rmOfm>U^P zRy5A*S4&qMxQVrD`I2#le_$w^&w5;`IH2{&-uwva5o_drc<$b7t;>KgcaNT>-U)4C zE1CP=_*v72IN`9iOIl@W1}cE+LOY>F-yUIY8?_Y6MCVFMJG^IH-AWlw1(l^S^0|v8 zTF`TiB2Ph7C=h*dt0L=?-z8$M5MMt8X13vWgh#GY55OcZs%{XVLD*EqvT#J7yxlU@y$P>J91qOacQX9bBUXIf>aW^;K{GH|vw#4cKl8!xDUH-N0c#l_BN1+nMB9 z(m7VZE80V7Hv{AjTV0!}4#6ekl$Rs_q5HUM?Cg zm9oxR8|V`A@Cv1ougINX*3xM888OMX16S{;y zT`I`3&>HGg#JP<}O&F=a{THdmS*6DzM!YE6ridz2sz@AdrfyQ^PVMQaa}s1Ooo{ES zXmnS`R%tdSjDhn_rxWwWjTYCBcHZ+ppY^_14>Xic{eeus z3itBAEYtPgz}DVSFTZuPjNn>0cOGq5)xeNMbR(wD`)7u@mk`{_Z%DcyuH80)n}>HS zyU6iOcI3@FqG-y2elyxTb~lu~(OVfK>m~4{l+A1#6qxK z62A_iBB-dTt;8iTWWNGu2fvAX{=qYp`jed=nF8tq!SG4&YV}1`wX#KII)Yk|I>o;b zTn^;NW-BGn1l^UW!G16$jq4T>gnp2&LFXd*VOfoaD>sKsi5y&fOu||z`G(Kg;gsq6 z>%oa>ns(xD!TYB0gIyk{golG2SFXad^)`mPUmV-U_{2LgZm!`@kom+tIOJ-}9ee#l zKURIQGj(N0@Mb0VBUI&!94IrN8IzFEe|iq4ierD4icb@V)HYgbE$r0=)%O&S8Uq)k2Q!b2-sMxM3!KLg$*VOG6Nfk+F3QntvlUoWJ7jDy#fcm?-g7j{ypZDO zID8IBOYqiT4|4+&0Z|vcM(EE9{M2SM)$wZznPfjnM^8JuZd9bsEw~qt373E;j>G;D zrQvQ(Jb)_#JGAiFpF72gG(`Xqu%_Bx#Q{-XU~asJM!x?F(qP>d%m=!@OP3 z?Zav2pEM{92DBnhd>g{KkbWI4@sx+4vMQMu7k|TLXh_lB3LO5BDC0@{aSB2szAFCy zA(zA2CSg~Kw8rxSRdJlG{o01kG?Vs#->K~Ofp)g`LCj5qM1D60ms)^$c!GWnd>sK2 zq=LrZsyNo8%RLs7-+$*;DB;{TlA98Vg$h3+;>m(64vIr+Hq$@6`qu~o1VAGHc2*nw zWp(kA)ZctK_IZXMso{S=t9Msj@+OMz@3t#^J&ZAUo}Mw^zLRU!;#rvShra9sw#%5&)MwRBWtc)00-)zUIAa_8+a#%yWauZ0GoaW{$|cb*`u9y6OYL&%z9d}T z<(L11vtx~b_{V|P99$3F@_tkivwSGkX%ac3A8Y3pdat%AS_*#g-y0;J7|1^jWZy}D zs~7|)7okh;vB$5eWMr}^94e*Etv(n>ff+zdAzHEVwrpLTX2HnXA$Z?D!{71~ z!p2?jszXv^Yc z2?Z0rxi{6@)O+|NcjyY7M-=a)3HV-mSefktje z^kw4IVMe(r1}T6wPsp;QTTu{w8=%VX*SnmEr{2JA0TiDR0Uyx7B7{m}2$i;&`B@PA zPRs0NV<1c&2hWzr6>R_lSQD7qrhtsW<=2L>#z&w{k0r=cRN23JA6-ZTbyHpPlA;=p zv-S2#Y2KP2LUAoybY|#gU|ii*K@_zZoPxBKw7=O@2D$F|qEEi7N)ow}aZ`eX(t<9U z+({~!r!22;!*Rkv1P$+O78C+@8Kg7w>Rk7+3ZX;I@9)wjAOH6>G^|#=QaDgKsuN0o zSZ84GuOPd4h0yX9X!@m&mUISst*6Q}*?-RuLJL!UuF@Bh;R z6isYb&bvSV?99Qrp(+l4FtW!b{c*-I<<9vD#y9WSF5wYauXt{Crm##EF7wYcDOAl~ z=n|5s=mgqbOkYYbs=H%YaIos;6LM+yuneNz=B3Rfg`ZFvtnH`6Df11=<(31jagKR- z?D9hS?dq?|mlvvICQ%7&TrkeS;CXF+$lEQt&!KUFX^Y5ba5S`nu* zqget?W`?=Q&5J6pobjP!&NezP;fziNZ5$^XVHjH&!s_6Wj$@kN`)F3Z`E9> zF%{7If&YG;kGOk>orN=8G|Oq7gZ8k=0{=Qnd_v(g|%=zC*{a4FbFC3fLL zMqA3;alR^<=oz>5r|QO?-P%u)Vd(r;>rSrEjhm4#Iymp6rcx8j-X|Y*$J?hCH1@|j z#gpZAbA=;oJE!Z=G%(Usf^n9)&@(J+Z9N3qR|}4f+PDZ%xVe&(Qq()q5Iml&6!l{L ziarOyjkR0oFJW-=ZIi>RF<%vex9W|kp1|o(RYd|t$SoCI%)y~}n$!9gzyY>ODQQP= zX>R~(g#3iu{%_aqp7w4l5tOSE`A25b6hQ>UZ{34}SlKVt1lUW?ca@`v0JRiPRJmOe zE?fHwOH|v|Z?K^+ngjUowuj}zaX>YW9?0_V%b5)`YpejM;pyMN#a?y(pAn$NF%+t7 z_~jik3ui3z_QbTJ!X_*JG~qO^~YI?_lqIgTIZCjfp^@#Ly=hD{bL)BDX5aAnKl~gHcGlWK4Az~AmL&EX*p0!?zf=#d-w3l zw;>>C>JM3;s%8iOHn#&wGgd8+><*kRoY@AgIul-Mt90C7@s>W8CUmk4-{K_0aAVyr z(9@TD6OcX!q63AA^8xdJ%246hl~dlv_jc*}n;8E&pCl6mAAK&P4hMuSo09nFPG^X( z_9e~0jm=-C$^7Pae`F`M%E}Q+Xc*q()Uf%Maxs5fxjkXd!ma_N5F~^>j_9x{xv22r z?azHUH}!kQ&S@Tcq#6#Yr6O`W*09)Oc(tl@f~8F zdl;x2yWlMNOZ+6Upwb{WHw8J0rjDjdk`vdSlf#~aE-~jC^>cS1*by0Q6(|17q@q&U zAScSa$bRT(?C)Xzfa6>aQsH!-y8sEOhvj-y?G@slii_xD$Rrfzu3PawOd{K)OP%E< ze#hHW*kuyA)`HfGd5F2Q;}1$5tbX6x(VMXp1eF>1XnogT`)#WQRSjC( zxsK+n6Z;qa6HwHFR8$!NL&}zi+JgST6SWw{uNa4-_#g0jR#8HZAn%$#ZOmwysVVJV z?p!U>6*b;V&6<1`cXz%T>Mn2@QOuh#`o03N>q(yApM6aW`f5i(5I4mRa! zH*B`8*E9k2WmYRDQfkmnF+oeiS3*IY^d^5%=U-e*FLM~U*XvV+KC=eG_7a})?7xzC{;>Qyg=$G@vNz7Wowev z)C(r~%>R7C%5Z5RcHZXOFGanOiOKagmmi1UKfdU4b^qIssxLl2e&Dyes=WP}qs*Ym z-o6@bdUKrJwT5)_9Pcwo#hQ+k#xu~%uoc=SQ$_d3Wy(+&aaPz7bPDb<#^i!}NacKo zmRE#Hw7bmCYK9=zS*!1N_b(Ko(`GU=?uzafS{-BQo%&N7%I9YpcRf(+B|<6*N^g7% zkIjn%^04`yY|l)%!NLY)(IRKB*QAl%g1_%Nn(Fj(G6Q_8$_athGWVk6vb4bC#*WVI zG|YKUZTKu{VK^+Fve)Srj+3&rVVo1K%IAIDdivWD{*B{CYufadQ;xUKWgipz8kF*6 zoYh)VC_V<4j-ly4v%!PHc3_EigWR+3Z~p76s$T5Q!9m0H>L61dqwZI-KGi=CTr|w6 z;#CLQ?2FGr+P!lS&}nlj>XPN^&AN+CD^Cq?Y!58_2!sO~#zSi7D|auycIZ^6aq5m- zJ{H&A(Je|$NX+D*7Br#u?Crs^+A#{1%gEmg2lyWFWz4 zpTK!)d6VmdbR9DtD$C$t5&XUr+@rMUj(^FCFWY9Ww71Fw-oN%|cCns6n5+i^3C7^P zhvc+_zzZy3fzb}fEkKe;q9N>`N+>d&KNJk#+ek?Yph;BM^I{C>+|d?BNe9pElg_s8 zi(S}33rvd@z|?zCVhA7tQ>4e|5N4ro?G~d#A)gVYj}r9DKVH#K@*g;2(ecolu|4R#Ims=!FcOptZ4b-pNyn$# z=T`*P3bz1lK0UcE3@j72<63%EH{K@;OjEMS>HHqAO!7cC>E8scEZ#Pp?O!&mlN3a$ z#S$Hxk=m(4NWE2Lve0=5wN_pz8lCMOqSHGGKDD z-&(@Zfvd>{KoZkSlE|*g5Zm^~1ad+meB-6SKF0&y zJGElnN%HPV{f_-O%Ljts!90xnaJ*d2ciS!m(OADK^;o2hO*f;m^sI2tU)q>Y#|5#c zu+!g9sN25T=&Yz~-m_R7g3r&(Y6Y((2o*Mc!0=6!whgF!9My6N0y4+toxFkvfH97T z#*>Tl!uMY;Fu597L$d$>xcc^ZruRSoZt9fEIVqRix}6jvl-pdotBy#_$YtfWat*P> zta3Vzd!>;Wl}a`YW9}xG&2@@ghsBJrnGxIA<@fIQc>ErZ-}&}m4+`_y`~7-7uRO)R zq9x<$5P_?Zw$`3R4$ugS(ojc-h&mKbYD;K=eh`WDkKWs+AsXu-#yZ%OUO3<0&ga1? z7r|_!otW1X;--M|l>IOqdnI=2b{$Oiy^D&sm-;~Q)^_eaaFl36yk>OKUt!SQYj7Si zt_LqlrmFP}b_kH5TTop00u;Zg{!{IBa7J2gTp6BncBPb zX%!!x6657zv{eiV@QR$_JIAaZ_#!8;tkkz<&a@4I^IenzU@#mhqckE(boPBagG}v_ z)9mhPqqH%ErfY)}dR}nvpz@xPxaKqcmw2O~2kgg?(Q6V?1 zIAJDA>gHTdA)v6yf4>)c2Sz=&eD!D{8K%y^JYY%ZOG8PP5ZeI%Fi&FX z_Q5(A1RtD#@B0+;Alxkp;bQjD#8x8~l*zDei<0S+hg?Pp6nx0@7abYN*nP;oS%;QO z>>NbN>qDL=%+;qikG#H{XT^g^LVJH(AFh8CruQTPe<> zYoT9pgw=ohlPkLesi*1%HWx-H7eLx4_JMMx7w}vTN|n|xj&B&5Z7e>ZgZ#fKVZ`Y#vcK+ z>!oV>CMjHeRnm}lpD;zZ%0GhE-$jRE6s@?68SO>Z#({BR8r=*nV2dCM&-mm;!LJLy zR7m|Kp4p)i5Un3l+YJ91@{}x16*LJtN5&aPG=3pWnfU^XCBF3wL?a@i>uRaAMbZ0~ zm1X4wLG55Z6Jex)<-7;IBoE&lr=$_9zweWjSpt0+QSrl?5EQrMX@L$h*NIEuYSGLf zUrp!>$lX&LWCeIcIlR~We}o)(y$|SQcx?UfmZR%+ILwvtE(P0cvyB1!*q7*<;=(5a zo!>E-)W`Hfo0$it=J^&SZZARXWmh^a_MUG`l@pT1?#F|EKYH^M5LT zRPNc@NW8E87-8IV^%02 z`GP#m-v`Vh29k&r4odVorxdg)5eZ6JoaWXW&bn()Wpfzq$nwY3nr1j<^OU-7QjRbr zq})%|Z_jd`KqWGfF=p^B1Yiy85dz3^S^O+)aS*kfH!_|n=mL30M+5R`^^IC+FBMk| zL=x7^e(5mgkBC4>0Phg#k_q7}JP<>DOrpKlznR{w&IKBabd7zAeHS#`APHB7o%i%X zVh(lYO>RDKpO*hsQ>3n}%J{u|X)@M2X+9)3tR8He=%>LRDYDCw{SQNyQlClbU&III z;|yYsOUhzs?HWP|*_sTh)T88W{QIdiKt z7^`E@xG=(Zy_{G;Shsd*v@)D+Ke8pwK5f>3jUxkbwHKhFQxyA%Py20Xf(+hZjd}eGInrmqSX`xf zCZqb8xJAIv6J)V6rFM(_3nMgr#42btw?|};ndZ7gy6lf|N1sBwpg%6Pl+^&Dhl=7U z9X2$Sn1#p5iM}`Jhk|GWmHM-503E!D z)Wq(vwey*obbtT(`@M=(nHNOvc{ZX!|MtD#W3!bSvjeB80@IUfoYpfc{s`#3Ora!D zH0SzK{+^?dSsK1X30qYop<_|bxtLt7XY(GeT93qzkK|J;uU6u0Pu8h?Le5iNTC%ZR zT(;IN^b@k(%5d?u0T`51+qVj+W9w-?(9zHjK&vwiK%{mh4}vr4P)wafV_h<^j^O&+%k6472FV6HNr-_BV2ca|a;MjPE#?n5dm zrEcRCY-a+yV*5Y>8He_j{WNqQt`ltZSXFG&&K%M$lex4Tf?xi=GN$W}Gif1WN_xhA#;gEkJE%K>KCWZPG3) zL}K|gKeFN5JH07w-7k`jbba@7>F&tGJ$dk9)8xU`)RGeh$76C63q8q=>gQgIlEwS3 zVl_`&rdU!*dpJy!m&5av>JoO9#kl`531$5yc*pIpB-_tEBZqwr`8d~b6q0+iE>2{Eb)dmO9k~`UsXS~iWIrTA_sW~GmUH=3& z2sX&CHC3ioC6Jew0r=;_UBvQC)58+T&p|xL%=ybnWUqUYvSlMFkr!-kyE>V~BXdes zDNou}%iWWso;?kNjQhW_$RIxel;>!=aP7HBtiMz`aaU3%T9)3GP{O{iwbA&xXm_9J zxluIkSN%7?)V~MQ%qT>6sZY(e$d+`0^x)KO%4xHwKoUXr+Sy)HQMYG%UyvwO?#x9A zWn275@vNeyAdwzYmne5spYh65y5H2O`Z21HjXoMYbpA3r6}`4%Vx-PQ#84hyn)ak8 z0gbWcNfM0B&l`J?ltj)1GJn@Il1owp3B>@2sYW_GZZR;DBNC?$K|8SeCI+tjN3b-P z+E0Fg(mF7=CDGkyBS-7sFT2e2eKs<+h6?wJ7j$=LvWmWO=cdjeCTmA>gzEf)8t7xA zitcONAlT!@0%JkXYN=P(rU_`{SV5i*+l&(5VIu5MKewMb(-`(MR%Qs-etGBLdGJ?T zH}~uB8rUWqV@(FG_+o=x=)?44Q21gY8}LrdHgV7G_YN5xC|0$qp?`__v-L3IoJBgL z0Iwz~zNgv2((|BV8x%D=9Mv(f{^lKM7mdPIh>=;O-Lf&h2c*oaf!BIONB80RtrTe+ z;|}rRkfNeJzU&KZI=9z&$z{b_VBGmSJ25Sr%N&fe_f(-uJa`%I1W@5_;oPJUU2w&` zKUh20FzDThd;*T`T_@HNS$y^l$m>e=bM+zjS}!7}yVq)dY%`eIf`-hN#7y!Nn8Oj& zOD}6kqaysuMk#1Sj(_Ux2uSTwa ze`rzox5aW25|EYM>J>leINGCru4&$VOwRfvGu-T4&MQmZn%6NVvc-$4zFvaeXr}(H z7<2WXtQG-mg#|^&$1I#=UXff{=&7MC$T-G~rgJ*Szq56ojhjkr$@5G6zd-{IUsGSL zkNsDfd6Jil3xJMpWB{PDh7fOVZv;Ln=N14gYiEDQ4xFN`=G{Z$Sca3twGel6ghWv_9@=3bI=B@H*+|7$JDbQ#=_nO z)Y9|sy?Edg8naW~+xIiePa~_)C#Gb>{prrVTPyoL@9eXo+=te-&l$)9KjiIT-%yQn zO@Jg1qWYsW?@`|?TtTd6qP70*TGJY(F11SiZWQhKhgugP4SEAB2;1%4*f6h1{EGVP zyV&si0Ey4Zt=hkcQ^uC=7~!$>Eb&`3Sn2|ut|?7UadlJ}r%Zd`(Z2zbRCGRt zIf+2rNOEW55DzHC;#%+VQw*RqODnkNC^`VpHSu1!P1H1BxraXdNa5oEisw;PW7)9HG)&~{= zz)#H-62Hv-?aUYjyg_aBXI}6q=mk1#ECw_DTs)6!y;x~B2!y9zOi+X3L~3SeJOhaV z|MHaR+0BehIYnb?PgR>Tf7fKHne9<_lrKX~*=#+Jymf}F6U#%6To^a-ux^;pJN>Ca zrSDTzKvyE`u+&9)H=1#a+{s7^)9=|XiFhzF5!|nrJ*}667f1~kEBB+1TiK2R*}&>o z5$6+=+b8k~U)SVibjKSQ;mdfR-wVl;g#BoPqdn#w*3sXONt(W^M90MTw80~+9#K7b zijf9FMQWws8CN7CEJiNve99ba=YdcH>CdC29xkq)3J*>YCCiW^1ii#hW-fC0)g_LF=8HJeJ*VmGGm6Qe@%2 z8&WOqwUD3*kNx&-xMcNC`s$x}nT^CV)8&e(iX0P9OViH|7~Qq*C$Eda;cY_t)?h3C z^u{7h1$0&4|0YuLZ#VYSeOBM8( z7Z#;hw!8&RTy1gw*juxnUB&>2OvR^!YfF>w4TxTAki1)0Qw!0V#gomoyqr5_KDv9dc1CMRb>8nk*v&7I(>RyVF!7G*qM*LbV8^m8eCFNp ziZ_{<*qalCn%wKC-?e2?zIP}2L+D>xI~cuWlx;GEtl&;PNDFzhhsiA`)(Cbe()E2L zP@&zTU@y8f*bVfJy59lvg-jfey8~#3y4QBClFK@O9zpY*zmij@gGUvVv&8zkd1A1h zqk=&6_}q5T-F`O4OoV0mfKRUiD^{k9Mhn|cMNT?j&dfL|DkO?erwsL}XS$hY!a&YRC z2nxe^NP-+v7hjiCErp*+$bC-Mj~V;QUxcqP((t_H=x3TEx5E|C@&8&xXJPY(Fa1(| z4+ZT-D@WNb8#C`FrR4zL!wMCL>I&*2#FSp)WendEVOQ4GNM1GWMN7zOHLqlHA4rnG zKeU8e!~XLp_vWzP0gL1N92d5fL4@C8G(Y8U%7waM8zYP#&`9|2%f%5WNCo+7#x>hp z8%+Odo_le^=8|is8h;{B%h}`FmXdZoh5IerA1l94dE8g^B~vDBn=s`@B5dr+iFSSAj6em0%b;M9LKiZ~AlgA?V{0Y$($gr1QGGhwz==B=dmSEC^HT6bLg!ds0#%M=#_2?#L- zIbLt`2sC)UTZNS*mzDdSD=O^Wf4Lv`|Fi(dpfla97A-}yy9N@222aSnR2f2FO3pOb z54h~aTt8}J{pbrzs4^-~}6`A?gxbv^z z`so;#;~#;mwfp`;T~y_-ZFhAPq_FoO&>P?j4pzU>w1eu(Oz^=fQYkZT2 zW@(q4PwkF>3hE$dckCX}np35Xh{HVXOR zs@E6u<;{JmpF5i#S=jm#d;DH(=zFJkHK5caq2J118|sp2QQq8AoY;|D$X*~}EqhD3 zY_A(>2<)Q>Upn;HVo^C~jAEM!G5E>ubX>pzKkC;{m@UvyU;%+ycDe6EU z>b@+x=kkVK%F`p}4x4l{iZzBq;F1N<&0tOZ>8v?CIr}P($EUU_LYSUE&XSI+Lqy%q zDuK3E3~CR5x0VzVpfP2&l!+yRQ^zRLr!=}lVF6b9TSQT5X+0QW+(U9}&j^u#|NWYL zICqNR7qy^o(Y~6Jy_!~f2FuX@DZX1?J13tWzUHwtm8(X=M~AKViJ&YT2kcb(avU)B z7=UJ15q75vQ{x}8MGWf4ZyJ}Iwxy3tGW0$QqeQCIV!=8X?;R@<-?(76pQH@rEGHAU;4RgEE$^~g`)=9c5MS!6|UQv^=xoZXK*qtO>kHBLKpzPc0Ccv@`k@Z7!&M)thlc z8A&WzcIBC+q{({`*KTWk3h3zxC_Q_$A6{|_s$mjITjQw}A1{d7o4?y&T6@8iZ>VhL zTdn_3TMxP?G1wiG(%LAC6lJfb=3R&(EH}M4Lk9S*P7k~p@ZJ>93PvkbyZ(r z8u4T(ceX`0iTbv#C(XiEO%npS$4$MupT9T#%z!o&EgD01lS+_OvJI%ex``Aef+7X0 zc18zG)U{+Fne5arfh)&K*KSP(yIl}jN@|@mLliW2q~uZsnARWb@*-@+Ve||FRBtY1 z651HEij+zh*K-n2vnexeNJ@W*)qrB3^`hcB#p*Hn&fzuIs5X#Nq(x~w6E6LM6Xb!? zob?nAH1}k3^Vg&a%@wFnMdNyh`UPBzAS*(Z`~TKt8Sp& z9U%b;Un#S|`xg4nO;QGY#ix@P1puMW*Du8D*$e%WPGw51#Sz1%F=on8#TL%#WaA>Cc3bvWd9<9?1~uAS}8 zTP0T7S=Y`HFW%8lUQ_Qxirt1&WoNZqp}DbX`)Wfurt-wT@stz!L1h>9bzY6n^0hU- z{L}fg`ouEI+HcR=ebY=;i5W+Qj4<~W3(B9LFuTrbeR>8n8lMG~6qo2-y*BMD@{!ke z*KiWzdvP&peZJyX%?#Rk#BlRjm+I$8Ht6GJjJG{#Q+Ez+4LAmJ0(BHKRr@9h?jQ>x zAdFA|z&idxY&^spHY(X6sSz*W1zDwcpMnS%_+v6eo~+IE%1^o8Z;FViOGK%qSIO!P zA)Nm4I?v+Za5Fl(i(6+Mu|=c7Ef24c5~|t)u9d<~yoFz^DURtH8ee?qUl9X*=B7KN zlo;jXBc74t-yxC$fE#vcXyiPM4IJL=5VFw}FZW@eIxzybfP85&odvYPLDPEve5=c5 zACe+nJODBj9A59017b&OeoY_w#Cu6RB<69*AK5RO$NSeGEi{!tRhG?*miQM$0PVok zNWvF(5xKar91y`0kC_XiN{7;g zFU6tq(;(Df5$tcynqL)tfg{OWV;_1r#M6q@0iT}9ZDQPsLW*h)x3+?`?X7D|@|8tLXrNG0evp-fa_?W5>&msXu9YSx||?I=rY>R3NG)Cx%*=m zAZW|r7tB7xR}wFGX^N7lAQ`|juz%WRe}Hi=hWvxO1C7bu2ho<8v0y9?B^SGt$MF-n z@+J=pqyGDlQe_zmc~e_$R87+^U>_CkI0fxEdd~UehaG0w&fctnw`m?S?Y1MxC1mVL zZTU+sD);D6&Fdc(*1hQ`l~Qu`yXBi6RV-=RZb;(!TZGT)`^V{g>1d$^=VJ@Yy-r60 zTQ?0lWA-U!;=(PWSx_a-sTiiCN8|-QKt)gUxI20MlKDYr<}S76=q!%0AFBO207`@9@g<71!7Ybr3*cY%%S^XC)hKgQ< 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 z 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

    {{:helper.link(value.desc, null, {'PC_runprogram' : value.name})}} {{:helper.link('X', null, {'PC_killprogram' : value.name}, (value.running ? null : 'disabled'))}} + {{:helper.link('AR', null, {'PC_setautorun' : value.name}, null, (value.autorun ? 'yellowButton' : null))}} {{/for}}
    \ No newline at end of file diff --git a/nano/templates/ntnet_monitor.tmpl b/nano/templates/ntnet_monitor.tmpl index 5234e6aedd..28dae46bc7 100644 --- a/nano/templates/ntnet_monitor.tmpl +++ b/nano/templates/ntnet_monitor.tmpl @@ -18,12 +18,13 @@
    {{:helper.link('TOGGLE', null, {'toggleWireless' : 1})}} -


    + + Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again! {{else}} +

    Wireless coverage unavailable, no relays are connected.

    - {{/if}} - + {{/if}}

    FIREWALL CONFIGURATION

    @@ -98,4 +99,4 @@ {{/for}} - \ No newline at end of file + \ No newline at end of file diff --git a/nano/templates/supermatter_monitor.tmpl b/nano/templates/supermatter_monitor.tmpl new file mode 100644 index 0000000000..1d7bdb7cff --- /dev/null +++ b/nano/templates/supermatter_monitor.tmpl @@ -0,0 +1,125 @@ +{{if data.active}} + {{:helper.link('Back to Menu', null, {'clear' : 1})}}
    +
    +
    + Core Integrity: +
    +
    + {{:helper.displayBar(data.SM_integrity, 0, 100, (data.SM_integrity == 100) ? 'good' : (data.SM_integrity >= 50) ? 'average' : 'bad')}} {{:data.SM_integrity}}% +
    +
    + Relative EER: +
    +
    + {{if data.SM_power > 300}} + {{:data.SM_power}} MeV/cm3 + {{else data.SM_power > 150}} + {{:data.SM_power}} MeV/cm3 + {{else}} + {{:data.SM_power}} MeV/cm3 + {{/if}} +
    +
    + Temperature: +
    +
    + {{if data.SM_ambienttemp > 5000}} + {{:data.SM_ambienttemp}} K + {{else data.SM_ambienttemp > 4000}} + {{:data.SM_ambienttemp}} K + {{else}} + {{:data.SM_ambienttemp}} K + {{/if}} +
    +
    + Pressure: +
    +
    + {{if data.SM_ambientpressure > 10000}} + {{:data.SM_ambientpressure}} kPa + {{else data.SM_ambientpressure > 5000}} + {{:data.SM_ambientpressure}} kPa + {{else}} + {{:data.SM_ambientpressure}} kPa + {{/if}} +
    +
    + Chamber EPR: +
    +
    + {{if data.SM_EPR > 4}} + {{:data.SM_EPR}} + {{else data.SM_EPR > 2.5}} + {{:data.SM_EPR}} + {{else data.SM_EPR < 1}} + {{:data.SM_EPR}} + {{else}} + {{:data.SM_EPR}} + {{/if}} +
    +
    +

    +
    + Gas Composition: +
    +
    +
    +
    + O2: +
    +
    + {{:data.SM_gas_O2}} % +
    +
    + CO2: +
    +
    + {{:data.SM_gas_CO2}} % +
    +
    + N2: +
    +
    + {{:data.SM_gas_N2}} % +
    +
    + PH: +
    +
    + {{:data.SM_gas_PH}} % +
    +
    + N2O: +
    +
    + {{:data.SM_gas_N2O}} % +
    +
    +
    + +{{else}} + {{:helper.link('Refresh', null, {'refresh' : 1})}}
    + {{for data.supermatters}} +
    +
    + Area: +
    +
    + {{:value.area_name}} - (#{{:value.uid}}) +
    +
    + Integrity: +
    +
    + {{:value.integrity}} % +
    +
    + Options: +
    +
    + {{:helper.link('View Details', null, {'set' : value.uid})}} +
    +
    + {{/for}} +{{/if}} diff --git a/polaris.dme b/polaris.dme index 9a8cebeaf4..64546f8ba2 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2098,39 +2098,52 @@ #include "code\modules\mob\new_player\skill.dm" #include "code\modules\mob\new_player\sprite_accessories.dm" #include "code\modules\modular_computers\laptop_vendor.dm" -#include "code\modules\modular_computers\computers\item\modular_computer.dm" -#include "code\modules\modular_computers\computers\item\processor.dm" -#include "code\modules\modular_computers\computers\item\tablet.dm" -#include "code\modules\modular_computers\computers\item\tablet_presets.dm" -#include "code\modules\modular_computers\computers\machinery\modular_computer.dm" -#include "code\modules\modular_computers\computers\machinery\modular_console.dm" -#include "code\modules\modular_computers\computers\machinery\modular_laptop.dm" +#include "code\modules\modular_computers\computers\modular_computer\core.dm" +#include "code\modules\modular_computers\computers\modular_computer\damage.dm" +#include "code\modules\modular_computers\computers\modular_computer\hardware.dm" +#include "code\modules\modular_computers\computers\modular_computer\interaction.dm" +#include "code\modules\modular_computers\computers\modular_computer\power.dm" +#include "code\modules\modular_computers\computers\modular_computer\ui.dm" +#include "code\modules\modular_computers\computers\modular_computer\variables.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_console.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_laptop.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_tablet.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_telescreen.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_console.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_tablet.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_telescreen.dm" #include "code\modules\modular_computers\file_system\computer_file.dm" #include "code\modules\modular_computers\file_system\data.dm" #include "code\modules\modular_computers\file_system\news_article.dm" #include "code\modules\modular_computers\file_system\program.dm" #include "code\modules\modular_computers\file_system\program_events.dm" -#include "code\modules\modular_computers\file_system\programs\_engineering.dm" -#include "code\modules\modular_computers\file_system\programs\_medical.dm" -#include "code\modules\modular_computers\file_system\programs\_program.dm" -#include "code\modules\modular_computers\file_system\programs\camera.dm" -#include "code\modules\modular_computers\file_system\programs\card.dm" -#include "code\modules\modular_computers\file_system\programs\comm.dm" -#include "code\modules\modular_computers\file_system\programs\configurator.dm" -#include "code\modules\modular_computers\file_system\programs\file_browser.dm" -#include "code\modules\modular_computers\file_system\programs\game.dm" -#include "code\modules\modular_computers\file_system\programs\news_browser.dm" -#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" -#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" -#include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" -#include "code\modules\modular_computers\file_system\programs\nttransfer.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\hacked_camera.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" +#include "code\modules\modular_computers\file_system\programs\command\card.dm" +#include "code\modules\modular_computers\file_system\programs\command\comm.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\alarm_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\atmos_control.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\power_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\rcon_console.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\supermatter_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\generic\camera.dm" +#include "code\modules\modular_computers\file_system\programs\generic\configurator.dm" +#include "code\modules\modular_computers\file_system\programs\generic\email_client.dm" +#include "code\modules\modular_computers\file_system\programs\generic\file_browser.dm" +#include "code\modules\modular_computers\file_system\programs\generic\game.dm" +#include "code\modules\modular_computers\file_system\programs\generic\news_browser.dm" +#include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm" +#include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm" +#include "code\modules\modular_computers\file_system\programs\generic\nttransfer.dm" +#include "code\modules\modular_computers\file_system\programs\medical\suit_sensors.dm" +#include "code\modules\modular_computers\file_system\programs\research\email_administration.dm" +#include "code\modules\modular_computers\file_system\programs\research\ntmonitor.dm" +#include "code\modules\modular_computers\file_system\programs\security\digitalwarrant.dm" +#include "code\modules\modular_computers\hardware\_hardware.dm" #include "code\modules\modular_computers\hardware\battery_module.dm" #include "code\modules\modular_computers\hardware\card_slot.dm" #include "code\modules\modular_computers\hardware\hard_drive.dm" -#include "code\modules\modular_computers\hardware\hardware.dm" #include "code\modules\modular_computers\hardware\nano_printer.dm" #include "code\modules\modular_computers\hardware\network_card.dm" #include "code\modules\modular_computers\hardware\portable_hard_drive.dm" @@ -2138,6 +2151,8 @@ #include "code\modules\modular_computers\hardware\tesla_link.dm" #include "code\modules\modular_computers\NTNet\NTNet.dm" #include "code\modules\modular_computers\NTNet\NTNet_relay.dm" +#include "code\modules\modular_computers\NTNet\emails\email_account.dm" +#include "code\modules\modular_computers\NTNet\emails\email_message.dm" #include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" #include "code\modules\multiz\_stubs.dm" #include "code\modules\multiz\basic.dm" @@ -2165,14 +2180,9 @@ #include "code\modules\nano\interaction\remote.dm" #include "code\modules\nano\interaction\self.dm" #include "code\modules\nano\interaction\zlevel.dm" -#include "code\modules\nano\modules\alarm_monitor.dm" -#include "code\modules\nano\modules\atmos_control.dm" -#include "code\modules\nano\modules\crew_monitor.dm" #include "code\modules\nano\modules\human_appearance.dm" #include "code\modules\nano\modules\law_manager.dm" #include "code\modules\nano\modules\nano_module.dm" -#include "code\modules\nano\modules\power_monitor.dm" -#include "code\modules\nano\modules\rcon.dm" #include "code\modules\organs\blood.dm" #include "code\modules\organs\misc.dm" #include "code\modules\organs\organ.dm" From ced7e8d3b0bfbf06b6752c50f73c0b9fc498a628 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 13 Apr 2019 15:16:15 -0400 Subject: [PATCH 26/98] Placates Travis --- code/__defines/misc.dm | 2 +- maps/submaps/surface_submaps/wilderness/Manor1.dmm | 2 +- maps/submaps/surface_submaps/wilderness/Rockybase.dmm | 2 +- polaris.dme | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 2c4b7b06a6..9a00c826d3 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -188,7 +188,7 @@ #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.1 // GQ/s transfer speed when the device is wirelessly connected and on Low signal +#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 diff --git a/maps/submaps/surface_submaps/wilderness/Manor1.dmm b/maps/submaps/surface_submaps/wilderness/Manor1.dmm index 683fd3d1f2..e343d57686 100644 --- a/maps/submaps/surface_submaps/wilderness/Manor1.dmm +++ b/maps/submaps/surface_submaps/wilderness/Manor1.dmm @@ -140,7 +140,7 @@ "cJ" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/obj/random/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) "cK" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) "cL" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) -"cM" = (/obj/structure/table/woodentable,/obj/item/laptop,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cM" = (/obj/structure/table/woodentable,/obj/item/modular_computer/laptop/preset/custom_loadout/cheap,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) "cN" = (/turf/template_noop,/area/template_noop) "cO" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Manor1) diff --git a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm index 6f0b427221..96abdb75b2 100644 --- a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm +++ b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm @@ -38,7 +38,7 @@ "aL" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase) "aM" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase) "aN" = (/turf/simulated/floor/tiled,/area/submap/Rockybase) -"aO" = (/obj/structure/table/standard,/obj/item/laptop,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aO" = (/obj/structure/table/standard,/obj/item/modular_computer/laptop/preset/custom_loadout/cheap,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase) "aP" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) "aQ" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) "aR" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) diff --git a/polaris.dme b/polaris.dme index 64546f8ba2..3a270fc957 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2110,6 +2110,7 @@ #include "code\modules\modular_computers\computers\subtypes\dev_tablet.dm" #include "code\modules\modular_computers\computers\subtypes\dev_telescreen.dm" #include "code\modules\modular_computers\computers\subtypes\preset_console.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_laptop.dm" #include "code\modules\modular_computers\computers\subtypes\preset_tablet.dm" #include "code\modules\modular_computers\computers\subtypes\preset_telescreen.dm" #include "code\modules\modular_computers\file_system\computer_file.dm" From 042720823a01cec64bd2e4a973ee13968ffa4048 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 13 Apr 2019 19:30:30 -0400 Subject: [PATCH 27/98] Updates Part Eleven --- code/_macros.dm | 2 + code/datums/repositories/unique.dm | 70 ++++++++++++ code/game/jobs/job_controller.dm | 5 +- code/modules/modular_computers/NTNet/NTNet.dm | 11 ++ .../modular_computers/NTNet/NTNet_relay.dm | 6 + .../computers/modular_computer/ui.dm | 21 ++-- .../programs/antagonist/access_decrypter.dm | 107 ++++++++++++++++++ .../programs/research/ntmonitor.dm | 29 +++-- .../hardware/network_card.dm | 7 +- nano/images/modular_computers/sig_warning.gif | Bin 0 -> 216 bytes nano/templates/access_decrypter.tmpl | 12 ++ nano/templates/ntnet_monitor.tmpl | 22 +++- nano/templates/ntnet_relay.tmpl | 6 + polaris.dme | 1 + 14 files changed, 271 insertions(+), 28 deletions(-) create mode 100644 code/datums/repositories/unique.dm create mode 100644 code/modules/modular_computers/file_system/programs/antagonist/access_decrypter.dm create mode 100644 nano/images/modular_computers/sig_warning.gif create mode 100644 nano/templates/access_decrypter.tmpl diff --git a/code/_macros.dm b/code/_macros.dm index 474f3ea24b..4549e01079 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -22,4 +22,6 @@ #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/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/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 30735649c0..88defa2ac9 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -497,12 +497,13 @@ var/global/datum/controller/occupations/job_master // EMAIL GENERATION // Email addresses will be created under this domain name. Mostly for the looks. var/domain = "freemail.nt" - var/complete_login = "[replacetext(lowertext(H.real_name), " ", ".")]@[domain]" + 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 = "[replacetext(lowertext(H.real_name), " ", ".")][rand(100, 999)]@[domain]" + 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)) diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm index a00b634a85..be42cec23f 100644 --- a/code/modules/modular_computers/NTNet/NTNet.dm +++ b/code/modules/modular_computers/NTNet/NTNet.dm @@ -11,6 +11,7 @@ var/global/datum/ntnet/ntnet_global = new() 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 @@ -60,6 +61,16 @@ var/global/datum/ntnet/ntnet_global = new() 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 diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index bd91ab88b3..7c76fdd2e3 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -81,10 +81,16 @@ 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 diff --git a/code/modules/modular_computers/computers/modular_computer/ui.dm b/code/modules/modular_computers/computers/modular_computer/ui.dm index 699f113970..cc4d23a4f4 100644 --- a/code/modules/modular_computers/computers/modular_computer/ui.dm +++ b/code/modules/modular_computers/computers/modular_computer/ui.dm @@ -122,15 +122,18 @@ if(tesla_link && tesla_link.enabled && apc_powered) data["PC_apclinkicon"] = "charging.gif" - 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" + 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) 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..1296fadf1b --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/access_decrypter.dm @@ -0,0 +1,107 @@ +/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 + +/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() + var/datum/access/A = get_access_by_id(pick(get_all_station_access())) + RFID.stored_card.access |= A.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: [A.desc].") + ntnet_global.intrusion_detection_alarm = 1 + message = "Successfully decrypted and saved operational key codes. Downloaded access codes for: [A.desc]" + +/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 + 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 + 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" + +/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 = GLOB.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 + + ui = GLOB.nanomanager.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/research/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm index 48bb583d84..8b28f71fc7 100644 --- a/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm @@ -31,6 +31,7 @@ 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) @@ -41,21 +42,19 @@ ui.open() ui.set_auto_update(1) -/datum/nano_module/computer_ntnetmonitor/Topic(href, href_list) +/datum/nano_module/computer_ntnetmonitor/Topic(href, href_list, state) + var/mob/user = usr if(..()) return 1 if(href_list["resetIDS"]) - . = 1 if(ntnet_global) ntnet_global.resetIDS() return 1 if(href_list["toggleIDS"]) - . = 1 if(ntnet_global) ntnet_global.toggleIDS() return 1 if(href_list["toggleWireless"]) - . = 1 if(!ntnet_global) return 1 @@ -65,7 +64,6 @@ 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) - var/mob/user = usr 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") @@ -73,17 +71,30 @@ ntnet_global.setting_disabled = 1 return 1 if(href_list["purgelogs"]) - . = 1 if(ntnet_global) ntnet_global.purge_logs() + return 1 if(href_list["updatemaxlogs"]) - . = 1 - var/mob/user = usr 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"]) - . = 1 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/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index d7305a0f80..ecf0bab6f6 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -58,6 +58,9 @@ var/global/ntnet_card_uid = 1 /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? @@ -66,13 +69,13 @@ var/global/ntnet_card_uid = 1 if(!enabled) return 0 - if(!check_functionality()) + if(!check_functionality() || !ntnet_global || is_banned()) return 0 if(ethernet) // Computer is connected via wired connection. return 3 - if(!ntnet_global || !ntnet_global.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal. + if(!ntnet_global.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal. return 0 if(holder2) diff --git a/nano/images/modular_computers/sig_warning.gif b/nano/images/modular_computers/sig_warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..17f6f61981e36252affa9757f5a38a76a51069e6 GIT binary patch literal 216 zcmZ?wbhEHb)L;-}IK;qUVZm_VzyXFIKo-LfAPEDC|GE8KLxPD8FWBuK-w9YyCQbo`Degq7T)`VH?aJ9q(@`x@)?2)n3P^k>h}`J`cXHX`GWQA zyXq0nZeKh-4oLK8FwYFwb+7BXOvM7Ldp(g)IodC+-J+`TeA8uB-;iHT*R3tKc1a$O zyfeT0VC>IhRp~qpMR{(LJUT5zXFpQ`)7fSqqJ4&zb8cFtKLp;ySaO
    {{:helper.link('RESET', null, { 'PRG_reset' : 1 })}} +{{else data.running}} + ##Attempting to decrypt network access codes. Please wait. Rate: {{:data.rate}} PHash/s
    + {{for data.dos_strings}} + {{:value}}
    + {{/for}} + {{:helper.link('ABORT', null, { 'PRG_reset' : 1 })}} +{{else}} + ##System ready

    {{:helper.link('EXECUTE', null, { 'PRG_execute' : 1 })}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/ntnet_monitor.tmpl b/nano/templates/ntnet_monitor.tmpl index 28dae46bc7..89c9b8144c 100644 --- a/nano/templates/ntnet_monitor.tmpl +++ b/nano/templates/ntnet_monitor.tmpl @@ -52,14 +52,14 @@

    SECURITY SYSTEMS

    {{if data.idsalarm}} -
    +

    NETWORK INCURSION DETECTED

    An abnormal activity has been detected in the network. Please verify system logs for more information
    -
    +
    {{/if}}
    @@ -76,7 +76,15 @@
    {{:data.ntnetmaxlogs}}
    -
    +
    +
    +
    + Blacklisted NIDs: +
    +
    + {{:data.banned_nids}} +
    +
    Controls: @@ -87,11 +95,13 @@
    {{:helper.link('TOGGLE IDS', null, {'toggleIDS' : 1})}}
    {{:helper.link('SET LOG LIMIT', null, {'updatemaxlogs' : 1})}}
    {{:helper.link('PURGE LOGS', null, {'purgelogs' : 1})}} +
    {{:helper.link('ADD BLACKLIST ENTRY', null, {'ban_nid' : 1})}} +
    {{:helper.link('REMOVE BLACKLIST ENTRY', null, {'unban_nid' : 1})}}
    - + System Logs -
    +
    {{for data.ntnetlogs}} @@ -99,4 +109,4 @@ {{/for}}
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/nano/templates/ntnet_relay.tmpl b/nano/templates/ntnet_relay.tmpl index 68875a8aa5..97b68368f6 100644 --- a/nano/templates/ntnet_relay.tmpl +++ b/nano/templates/ntnet_relay.tmpl @@ -23,4 +23,10 @@
    {{:data.dos_overload}} / {{:data.dos_capacity}} GQ
    +
    + Options: +
    +
    + {{:helper.link('Purge network blacklist', null, { 'purge' : 1 })}} +
    {{/if}} \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index 3a270fc957..0c62b7553a 100644 --- a/polaris.dme +++ b/polaris.dme @@ -310,6 +310,7 @@ #include "code\datums\repositories\decls.dm" #include "code\datums\repositories\radiation.dm" #include "code\datums\repositories\repository.dm" +#include "code\datums\repositories\unique.dm" #include "code\datums\supplypacks\atmospherics.dm" #include "code\datums\supplypacks\contraband.dm" #include "code\datums\supplypacks\costumes.dm" From 8fa53f6611e0d8b52b792d44776e5f04d180a1d8 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sat, 13 Apr 2019 23:52:33 -0700 Subject: [PATCH 28/98] Starts work on Pulse-based Reagent Processing. --- code/modules/mob/living/carbon/human/life.dm | 21 ++++++++++++++++++- code/modules/organs/internal/heart.dm | 2 ++ code/modules/reagents/Chemistry-Reagents.dm | 11 ++++++++++ .../Chemistry-Reagents-Toxins.dm | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d0882bc97a..c51eeb3226 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1545,14 +1545,33 @@ if(stat == DEAD) return PULSE_NONE //that's it, you're dead, nothing can influence your pulse + var/obj/item/organ/internal/heart/Pump = internal_organs_by_name[O_HEART] + var/temp = PULSE_NORM + if(Pump) + temp += Pump.standard_pulse_level - PULSE_NORM + if(round(vessel.get_reagent_amount("blood")) <= BLOOD_VOLUME_BAD) //how much blood do we have - temp = PULSE_THREADY //not enough :( + temp = temp + 3 //not enough :( if(status_flags & FAKEDEATH) temp = PULSE_NONE //pretend that we're dead. unlike actual death, can be inflienced by meds + if(Pump) + for(var/datum/reagent/R in reagents.reagent_list) + if(R.id in bradycardics) + if(temp <= Pump.standard_pulse_level + 3 && temp >= Pump.standard_pulse_level) + temp-- + if(R.id in tachycardics) + if(temp <= Pump.standard_pulse_level + 1 && temp >= PULSE_NONE) + temp++ + if(R.id in heartstopper) //To avoid using fakedeath + temp = PULSE_NONE + if(R.id in cheartstopper) //Conditional heart-stoppage + if(R.volume >= R.overdose) + temp = PULSE_NONE + return temp //handles different chems' influence on pulse for(var/datum/reagent/R in reagents.reagent_list) if(R.id in bradycardics) diff --git a/code/modules/organs/internal/heart.dm b/code/modules/organs/internal/heart.dm index 10fdcada69..b65b3bc709 100644 --- a/code/modules/organs/internal/heart.dm +++ b/code/modules/organs/internal/heart.dm @@ -7,6 +7,8 @@ parent_organ = BP_TORSO dead_icon = "heart-off" + var/standard_pulse_level = PULSE_NORM // We run on a normal clock. This is NOT CONNECTED to species heart-rate modifier. + /obj/item/organ/internal/heart/handle_germ_effects() . = ..() //Up should return an infection level as an integer diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 21775ea17e..8171e3f306 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -69,6 +69,17 @@ // Metabolism removed *= active_metab.metabolism_speed + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species.has_organ[O_HEART]) + var/obj/item/organ/internal/heart/Pump = H.internal_organs_by_name[O_HEART] + if(!Pump) + removed *= 0.1 + else if(Pump.standard_pulse_level == PULSE_NONE) // No pulse means chemicals process a little bit slower than normal. + removed *= 0.8 + else // Otherwise, chemicals process as per percentage of your current pulse, or, if you have no pulse but are alive, by a miniscule amount. + removed *= max(0.1, H.pulse / Pump.standard_pulse_level) + if(ingest_met && (active_metab.metabolism_class == CHEM_INGEST)) removed = ingest_met if(touch_met && (active_metab.metabolism_class == CHEM_TOUCH)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 6595343169..914cc91f60 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -253,6 +253,7 @@ color = "#669900" metabolism = REM strength = 3 + mrate_static = TRUE /datum/reagent/toxin/zombiepowder/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) ..() From 7594c28f21db53aae12a316c1106acd01f62fbc0 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 14 Apr 2019 14:38:30 -0400 Subject: [PATCH 29/98] Updates Part Twelve --- code/__defines/misc.dm | 1 + code/_macros.dm | 1 + .../preference_setup/loadout/gear_tweaks.dm | 148 +++++++++++ .../loadout/loadout_utility.dm | 30 ++- .../computers/modular_computer/core.dm | 2 + .../computers/modular_computer/interaction.dm | 2 +- .../computers/modular_computer/ui.dm | 1 + .../computers/subtypes/dev_laptop.dm | 2 +- .../computers/subtypes/dev_tablet.dm | 7 +- .../computers/subtypes/dev_telescreen.dm | 2 +- .../computers/subtypes/preset_console.dm | 17 +- .../modular_computers/file_system/program.dm | 3 + .../file_system/programs/antagonist/dos.dm | 2 + .../programs/antagonist/hacked_camera.dm | 2 + .../programs/antagonist/revelation.dm | 6 + .../file_system/programs/command/card.dm | 4 +- .../file_system/programs/command/comm.dm | 10 +- .../programs/engineering/alarm_monitor.dm | 4 +- .../programs/engineering/atmos_control.dm | 2 + .../programs/engineering/power_monitor.dm | 2 + .../programs/engineering/rcon_console.dm | 2 + .../engineering/supermatter_monitor.dm | 2 + .../file_system/programs/generic/camera.dm | 2 + .../programs/generic/configurator.dm | 2 + .../programs/generic/email_client.dm | 2 + .../programs/generic/file_browser.dm | 11 +- .../file_system/programs/generic/game.dm | 1 + .../file_system/programs/generic/library.dm | 191 ++++++++++++++ .../programs/generic/news_browser.dm | 2 + .../programs/generic/ntdownloader.dm | 92 ++++--- .../programs/generic/ntnrc_client.dm | 2 + .../programs/generic/nttransfer.dm | 3 + .../programs/generic/wordprocessor.dm | 236 ++++++++++++++++++ .../programs/medical/suit_sensors.dm | 6 + .../programs/research/email_administration.dm | 2 + .../programs/research/ntmonitor.dm | 2 + .../programs/security/digitalwarrant.dm | 2 + .../hardware/nano_printer.dm | 27 +- code/modules/nano/modules/nano_module.dm | 19 ++ icons/obj/modular_console.dmi | Bin 30082 -> 31288 bytes icons/obj/modular_laptop.dmi | Bin 28597 -> 28909 bytes icons/obj/modular_tablet.dmi | Bin 3544 -> 8820 bytes icons/obj/modular_telescreen.dmi | Bin 29210 -> 29216 bytes nano/templates/arcade_classic.tmpl | 82 +++--- nano/templates/laptop_configuration.tmpl | 2 +- nano/templates/laptop_mainscreen.tmpl | 8 +- nano/templates/library.tmpl | 75 ++++++ nano/templates/news_browser.tmpl | 41 ++- nano/templates/ntnet_chat.tmpl | 2 +- nano/templates/ntnet_dos.tmpl | 2 +- nano/templates/ntnet_downloader.tmpl | 152 +++++------ nano/templates/ntnet_monitor.tmpl | 4 +- nano/templates/ntnet_relay.tmpl | 4 +- nano/templates/ntnet_transfer.tmpl | 2 +- nano/templates/word_processor.tmpl | 49 ++++ polaris.dme | 2 + 56 files changed, 1074 insertions(+), 205 deletions(-) create mode 100644 code/modules/modular_computers/file_system/programs/generic/library.dm create mode 100644 code/modules/modular_computers/file_system/programs/generic/wordprocessor.dm create mode 100644 nano/templates/library.tmpl create mode 100644 nano/templates/word_processor.tmpl diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 9a00c826d3..4282731dd8 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 diff --git a/code/_macros.dm b/code/_macros.dm index 4549e01079..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. diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 7ddb6957a8..2b86685f17 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -289,3 +289,151 @@ 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 091d732299..bd2977a94f 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -158,23 +158,47 @@ ..() gear_tweaks = list(gear_tweak_free_color_choice) +/**************** +modular computers +****************/ + /datum/gear/utility/cheaptablet - display_name = "cheap tablet computer" 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" 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() \ No newline at end of file + 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/modular_computers/computers/modular_computer/core.dm b/code/modules/modular_computers/computers/modular_computer/core.dm index 5474fb1f40..30d9cf6039 100644 --- a/code/modules/modular_computers/computers/modular_computer/core.dm +++ b/code/modules/modular_computers/computers/modular_computer/core.dm @@ -82,6 +82,8 @@ 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) diff --git a/code/modules/modular_computers/computers/modular_computer/interaction.dm b/code/modules/modular_computers/computers/modular_computer/interaction.dm index 89c35a56cf..bf70bb7d28 100644 --- a/code/modules/modular_computers/computers/modular_computer/interaction.dm +++ b/code/modules/modular_computers/computers/modular_computer/interaction.dm @@ -136,7 +136,7 @@ update_uis() to_chat(user, "You insert \the [I] into \the [src].") return - if(istype(W, /obj/item/weapon/paper)) + if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/paper_bundle)) if(!nano_printer) return nano_printer.attackby(W, user) diff --git a/code/modules/modular_computers/computers/modular_computer/ui.dm b/code/modules/modular_computers/computers/modular_computer/ui.dm index cc4d23a4f4..81081c0cb1 100644 --- a/code/modules/modular_computers/computers/modular_computer/ui.dm +++ b/code/modules/modular_computers/computers/modular_computer/ui.dm @@ -31,6 +31,7 @@ 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 diff --git a/code/modules/modular_computers/computers/subtypes/dev_laptop.dm b/code/modules/modular_computers/computers/subtypes/dev_laptop.dm index 4aef23213f..eddae93f74 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_laptop.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_laptop.dm @@ -34,4 +34,4 @@ icon_state = icon_state_closed /obj/item/modular_computer/laptop/preset - anchored = FALSE \ No newline at end of file + anchored = FALSE diff --git a/code/modules/modular_computers/computers/subtypes/dev_tablet.dm b/code/modules/modular_computers/computers/subtypes/dev_tablet.dm index 7ebf646e10..62d12ba545 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_tablet.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_tablet.dm @@ -8,4 +8,9 @@ hardware_flag = PROGRAM_TABLET max_hardware_size = 1 w_class = ITEMSIZE_SMALL - light_strength = 2 // Same as PDAs \ No newline at end of file + 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 index 95df05320d..1f88ed6cb2 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_telescreen.dm @@ -1,6 +1,6 @@ /obj/item/modular_computer/telescreen name = "telescreen" - desc = "A stationary wall-mounted touchscreen" + desc = "A wall-mounted touchscreen computer." icon = 'icons/obj/modular_telescreen.dmi' icon_state = "telescreen" icon_state_unpowered = "telescreen" diff --git a/code/modules/modular_computers/computers/subtypes/preset_console.dm b/code/modules/modular_computers/computers/subtypes/preset_console.dm index 5b8735d79e..6bdb081202 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_console.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm @@ -20,6 +20,7 @@ ..() 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 @@ -35,6 +36,7 @@ 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() @@ -50,6 +52,7 @@ //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() @@ -70,6 +73,7 @@ ..() 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() @@ -79,6 +83,7 @@ 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() @@ -114,4 +119,14 @@ // Merchant /obj/item/modular_computer/console/preset/merchant/install_default_programs() ..() - //hard_drive.store_file(new/datum/computer_file/program/merchant()) \ No newline at end of file + //hard_drive.store_file(new/datum/computer_file/program/merchant()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + +// Library +/obj/item/modular_computer/console/preset/library/install_default_programs() + ..() + 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/email_client()) + hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) + hard_drive.store_file(new/datum/computer_file/program/library()) diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index e699b009d8..7124bdcd03 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -12,6 +12,8 @@ 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. @@ -125,6 +127,7 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index 44e5fd8cfe..0e0a1381bd 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -2,6 +2,8 @@ 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 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 index 4d224a5bed..27e5a26c3f 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/hacked_camera.dm @@ -3,6 +3,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index 1a5659d743..17199c3b18 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -2,6 +2,8 @@ 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 @@ -48,6 +50,10 @@ 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() diff --git a/code/modules/modular_computers/file_system/programs/command/card.dm b/code/modules/modular_computers/file_system/programs/command/card.dm index 8aaab7ea0d..2b5c3a6047 100644 --- a/code/modules/modular_computers/file_system/programs/command/card.dm +++ b/code/modules/modular_computers/file_system/programs/command/card.dm @@ -3,7 +3,9 @@ filedesc = "ID card modification program" nanomodule_path = /datum/nano_module/program/card_mod program_icon_state = "id" - extended_desc = "Program for programming employee ID cards to access parts of the station." + program_key_state = "id_key" + program_menu_icon = "key" + extended_desc = "Program for programming crew ID cards." required_access = access_hop requires_ntnet = 0 size = 8 diff --git a/code/modules/modular_computers/file_system/programs/command/comm.dm b/code/modules/modular_computers/file_system/programs/command/comm.dm index 2089c987f3..8de74ed700 100644 --- a/code/modules/modular_computers/file_system/programs/command/comm.dm +++ b/code/modules/modular_computers/file_system/programs/command/comm.dm @@ -5,15 +5,17 @@ #define STATE_ALERT_LEVEL 5 /datum/computer_file/program/comm filename = "comm" - filedesc = "Command and communications program." + 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 the station. Can relay long-range communications. This program can not be run on tablet computers." + 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 = "station long-range communication array" + network_destination = "long-range communication array" var/datum/comm_message_listener/message_core = new /datum/computer_file/program/comm/clone() @@ -23,7 +25,7 @@ return temp /datum/nano_module/program/comm - name = "Command and communications program" + name = "Command and Communications Program" //available_to_ai = TRUE var/current_status = STATE_DEFAULT var/msg_line1 = "" diff --git a/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm index b4d5635ffd..cfd9353eee 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/alarm_monitor.dm @@ -4,6 +4,8 @@ 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" @@ -43,7 +45,7 @@ /datum/nano_module/alarm_monitor/engineering/New() ..() - alarm_handlers = list(atmosphere_alarm, fire_alarm, power_alarm) + alarm_handlers = list(atmosphere_alarm, camera_alarm, fire_alarm, power_alarm) /datum/nano_module/alarm_monitor/security/New() ..() diff --git a/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm index fa3d43176b..3f88029713 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/atmos_control.dm @@ -3,6 +3,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm index 475a03cfdb..32117e845c 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/power_monitor.dm @@ -3,6 +3,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm index 0e22a3ba1e..d5ee88b670 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm @@ -3,6 +3,8 @@ 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 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 index bd60780c78..af0489a953 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm @@ -3,6 +3,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/generic/camera.dm b/code/modules/modular_computers/file_system/programs/generic/camera.dm index 7dde9c0d3f..47ac48eb40 100644 --- a/code/modules/modular_computers/file_system/programs/generic/camera.dm +++ b/code/modules/modular_computers/file_system/programs/generic/camera.dm @@ -29,6 +29,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/generic/configurator.dm b/code/modules/modular_computers/file_system/programs/generic/configurator.dm index 5867efbdcb..c3ce1e358a 100644 --- a/code/modules/modular_computers/file_system/programs/generic/configurator.dm +++ b/code/modules/modular_computers/file_system/programs/generic/configurator.dm @@ -7,6 +7,8 @@ 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 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 index 429a68c3a4..3e2f979bb5 100644 --- a/code/modules/modular_computers/file_system/programs/generic/email_client.dm +++ b/code/modules/modular_computers/file_system/programs/generic/email_client.dm @@ -3,6 +3,8 @@ 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 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 index 4311c2dedd..42dfdd622d 100644 --- a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm @@ -1,10 +1,10 @@ -#define MAX_TEXTFILE_LENGTH 128000 // 512GQ file - /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 @@ -89,9 +89,9 @@ return 1 var/oldtext = html_decode(F.stored_data) - oldtext = replacetext(oldtext, "\[editorbr\]", "\n") + 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", "\[editorbr\]"), MAX_TEXTFILE_LENGTH) + 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 @@ -204,5 +204,4 @@ 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() -#undef MAX_TEXTFILE_LENGTH \ No newline at end of file + 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 index e947bea365..b4c0688c29 100644 --- a/code/modules/modular_computers/file_system/programs/generic/game.dm +++ b/code/modules/modular_computers/file_system/programs/generic/game.dm @@ -6,6 +6,7 @@ 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... diff --git a/code/modules/modular_computers/file_system/programs/generic/library.dm b/code/modules/modular_computers/file_system/programs/generic/library.dm new file mode 100644 index 0000000000..b686cda14e --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/library.dm @@ -0,0 +1,191 @@ +/* +In reply to this set of comments on lib_machines.dm: +// TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such +// It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. + +The answer was five and a half years -ZeroBits +*/ + +/datum/computer_file/program/library + filename = "library" + filedesc = "Library" + extended_desc = "This program can be used to view e-books from an external archive." + program_icon_state = "word" + program_key_state = "atmos_key" + program_menu_icon = "note" + size = 6 + requires_ntnet = 1 + available_on_ntnet = 1 + + nanomodule_path = /datum/nano_module/library + +/datum/nano_module/library + name = "Library" + var/error_message = "" + var/current_book + var/obj/machinery/libraryscanner/scanner + var/sort_by = "id" + +/datum/nano_module/library/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_message) + data["error"] = error_message + else if(current_book) + data["current_book"] = current_book + else + var/list/all_entries[0] + establish_old_db_connection() + if(!dbcon_old.IsConnected()) + error_message = "Unable to contact External Archive. Please contact your system administrator for assistance." + else + var/DBQuery/query = dbcon_old.NewQuery("SELECT id, author, title, category FROM library ORDER BY "+sanitizeSQL(sort_by)) + query.Execute() + + while(query.NextRow()) + all_entries.Add(list(list( + "id" = query.item[1], + "author" = query.item[2], + "title" = query.item[3], + "category" = query.item[4] + ))) + data["book_list"] = all_entries + data["scanner"] = istype(scanner) + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "library.tmpl", "Library Program", 575, 700, state = state) + ui.auto_update_layout = 1 + ui.set_initial_data(data) + ui.open() + +/datum/nano_module/library/Topic(href, href_list) + if(..()) + return 1 + if(href_list["viewbook"]) + view_book(href_list["viewbook"]) + return 1 + if(href_list["viewid"]) + view_book(sanitizeSQL(input("Enter USBN:") as num|null)) + return 1 + if(href_list["closebook"]) + current_book = null + return 1 + if(href_list["connectscanner"]) + if(!nano_host()) + return 1 + for(var/d in GLOB.cardinal) + var/obj/machinery/libraryscanner/scn = locate(/obj/machinery/libraryscanner, get_step(nano_host(), d)) + if(scn && scn.anchored) + scanner = scn + return 1 + if(href_list["uploadbook"]) + if(!scanner || !scanner.anchored) + scanner = null + error_message = "Hardware Error: No scanner detected. Unable to access cache." + return 1 + if(!scanner.cache) + error_message = "Interface Error: Scanner cache does not contain any data. Please scan a book." + return 1 + + var/obj/item/weapon/book/B = scanner.cache + + if(B.unique) + error_message = "Interface Error: Cached book is copy-protected." + return 1 + + //B.SetName(input(usr, "Enter Book Title", "Title", B.name) as text|null) + B.author = input(usr, "Enter Author Name", "Author", B.author) as text|null + + if(!B.author) + B.author = "Anonymous" + else if(lowertext(B.author) == "edgar allen poe" || lowertext(B.author) == "edgar allan poe") + error_message = "User Error: Upload something original." + return 1 + + if(!B.title) + B.title = "Untitled" + + var/choice = input(usr, "Upload [B.name] by [B.author] to the External Archive?") in list("Yes", "No") + if(choice == "Yes") + establish_old_db_connection() + if(!dbcon_old.IsConnected()) + error_message = "Network Error: Connection to the Archive has been severed." + return 1 + + var/upload_category = input(usr, "Upload to which category?") in list("Fiction", "Non-Fiction", "Reference", "Religion") + + var/sqltitle = sanitizeSQL(B.name) + var/sqlauthor = sanitizeSQL(B.author) + var/sqlcontent = sanitizeSQL(B.dat) + var/sqlcategory = sanitizeSQL(upload_category) + var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO library (author, title, content, category) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]')") + if(!query.Execute()) + to_chat(usr, query.ErrorMsg()) + error_message = "Network Error: Unable to upload to the Archive. Contact your system Administrator for assistance." + return 1 + else + log_and_message_admins("has uploaded the book titled [B.name], [length(B.dat)] signs") + log_game("[usr.name]/[usr.key] has uploaded the book titled [B.name], [length(B.dat)] signs") + alert("Upload Complete.") + return 1 + + return 0 + + if(href_list["printbook"]) + if(!current_book) + error_message = "Software Error: Unable to print; book not found." + return 1 + + //PRINT TO BINDER + if(!nano_host()) + return 1 + for(var/d in GLOB.cardinal) + var/obj/machinery/bookbinder/bndr = locate(/obj/machinery/bookbinder, get_step(nano_host(), d)) + if(bndr && bndr.anchored) + var/obj/item/weapon/book/B = new(bndr.loc) + //B.SetName(current_book["title"]) + B.title = current_book["title"] + B.author = current_book["author"] + B.dat = current_book["content"] + B.icon_state = "book[rand(1,7)]" + B.desc = current_book["author"]+", "+current_book["title"]+", "+"USBN "+current_book["id"] + bndr.visible_message("\The [bndr] whirs as it prints and binds a new book.") + return 1 + + //Regular printing + print_text("Author: [current_book["author"]]
    USBN: [current_book["id"]]

    [current_book["title"]]


    [current_book["content"]]", usr) + return 1 + if(href_list["sortby"]) + sort_by = href_list["sortby"] + return 1 + if(href_list["reseterror"]) + if(error_message) + current_book = null + scanner = null + sort_by = "id" + error_message = "" + return 1 + +/datum/nano_module/library/proc/view_book(var/id) + if(current_book || !id) + return 0 + + var/sqlid = sanitizeSQL(id) + establish_old_db_connection() + if(!dbcon_old.IsConnected()) + error_message = "Network Error: Connection to the Archive has been severed." + return 1 + + var/DBQuery/query = dbcon_old.NewQuery("SELECT * FROM library WHERE id=[sqlid]") + query.Execute() + + while(query.NextRow()) + current_book = list( + "id" = query.item[1], + "author" = query.item[2], + "title" = query.item[3], + "content" = query.item[4] + ) + break + return 1 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 index d06741d934..1d4da6d4d5 100644 --- a/code/modules/modular_computers/file_system/programs/generic/news_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/news_browser.dm @@ -3,6 +3,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm index 5968fea260..a0b2194168 100644 --- a/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm @@ -2,6 +2,8 @@ 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 @@ -16,6 +18,7 @@ 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() ..() @@ -25,20 +28,14 @@ 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(!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)) + if(!check_file_download(filename)) return 0 ui_header = "downloader_running.gif" @@ -55,6 +52,22 @@ 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 @@ -79,6 +92,10 @@ 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 @@ -97,6 +114,11 @@ 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) @@ -129,40 +151,46 @@ // 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 - else if(prog.downloaded_file) // Download running. Wait please.. + 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) - else // No download running, pick file. - 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( + + 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 + "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 - ))) - data["hacked_programs"] = hacked_programs + data["hacked_programs"] = hacked_programs + + data["downloadable_programs"] = all_entries + + if(prog.downloads_queue.len > 0) + data["downloads_queue"] = prog.downloads_queue - data["downloadable_programs"] = all_entries 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) 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 index 5b384ba4e8..6c67c02c0d 100644 --- a/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntnrc_client.dm @@ -2,6 +2,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm b/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm index 9630613397..0efed986ae 100644 --- a/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm +++ b/code/modules/modular_computers/file_system/programs/generic/nttransfer.dm @@ -5,6 +5,8 @@ var/global/nttransfer_uid = 0 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 @@ -29,6 +31,7 @@ var/global/nttransfer_uid = 0 ..() /datum/computer_file/program/nttransfer/process_tick() + ..() // Server mode if(provided_file) for(var/datum/computer_file/program/nttransfer/C in connected_clients) 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..24c43669be --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/generic/wordprocessor.dm @@ -0,0 +1,236 @@ +/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. + \[bluelogo\] - Inserts blue NT logo image. + \[solcrest\] - Inserts SCG crest image. + \[terraseal\] - Inserts TCC seal"} + + 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/modular_computers/file_system/programs/medical/suit_sensors.dm b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm index 3e83dd2248..86ccaa73bc 100644 --- a/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm +++ b/code/modules/modular_computers/file_system/programs/medical/suit_sensors.dm @@ -3,12 +3,18 @@ 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" 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 index 5e9a7a1bc1..93ba0bded3 100644 --- a/code/modules/modular_computers/file_system/programs/research/email_administration.dm +++ b/code/modules/modular_computers/file_system/programs/research/email_administration.dm @@ -3,6 +3,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm index 8b28f71fc7..590837f2b5 100644 --- a/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/research/ntmonitor.dm @@ -2,6 +2,8 @@ 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 diff --git a/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm b/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm index ed7b404b75..28ca1b73f5 100644 --- a/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm +++ b/code/modules/modular_computers/file_system/programs/security/digitalwarrant.dm @@ -14,6 +14,8 @@ var/warrant_uid = 0 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 diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm index ac5816345b..0eb2a7b065 100644 --- a/code/modules/modular_computers/hardware/nano_printer.dm +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -32,12 +32,37 @@ /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 [src], but it's paper bin is full") + 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)) diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index e5e0bf64f1..90c213da1c 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -2,6 +2,7 @@ var/name var/datum/host var/datum/topic_manager/topic_manager + var/list/using_access /datum/nano_module/New(var/datum/host, var/topic_manager) ..() @@ -21,6 +22,12 @@ if(!access) return 1 + if(using_access) + if(access in using_access) + return 1 + else + return 0 + if(!istype(user)) return 0 @@ -38,6 +45,18 @@ 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() diff --git a/icons/obj/modular_console.dmi b/icons/obj/modular_console.dmi index 7d28d26da9936b6f7623a6b349575bdc8340f7c1..e16c2c7be81020cc801b1fc7508bcd5fdcf278f6 100644 GIT binary patch literal 31288 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 PfPm3Wvl|t9&XNBO?O0DY literal 3544 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 z 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 diff --git a/nano/templates/arcade_classic.tmpl b/nano/templates/arcade_classic.tmpl index 5792a15b6e..996e8e4715 100644 --- a/nano/templates/arcade_classic.tmpl +++ b/nano/templates/arcade_classic.tmpl @@ -1,44 +1,44 @@ {{if data.gameover}} - centerh2Game Over!h2 - h3{{data.information}}h3 - {{helper.link('New Game', null, { new_game 1 })}}center +

    Game Over!

    +

    {{:data.information}}

    + {{:helper.link('New Game', null, { "new_game" : 1 })}}
    {{else}} {{if data.information}} - centeri{{data.information}}icenter - {{if}} -centerh3Playerh3center - div class='item' - div class='itemLabel' - Health - div - div class='itemContent' - {{data.player_health}} - div - div class='itemLabel' - Mana - div - div class='itemContent' - {{data.player_mana}} - div - div -centerh3Enemy {{data.enemy_name}}h3center - div class='item' - div class='itemLabel' - Health - div - div class='itemContent' - {{data.enemy_health}} - div - div class='itemLabel' - Mana - div - div class='itemContent' - {{data.enemy_mana}} - div - div -centerh3Actionsh3center - {{helper.link('Attack', null, { attack 1 })}} - {{helper.link('Heal', null, { heal 1 })}} - {{helper.link('Regain Mana', null, { regain_mana 1 })}} - {{helper.link('New Game', null, { new_game 1 })}} -{{if}} \ No newline at end of file +
    {{:data.information}}
    + {{/if}} +

    Player

    +
    +
    + Health: +
    +
    + {{:data.player_health}} +
    +
    + Mana: +
    +
    + {{:data.player_mana}} +
    +
    +

    Enemy: {{:data.enemy_name}}

    +
    +
    + Health: +
    +
    + {{:data.enemy_health}} +
    +
    + Mana: +
    +
    + {{:data.enemy_mana}} +
    +
    +

    Actions

    + {{:helper.link('Attack', null, { "attack" : 1 })}} + {{:helper.link('Heal', null, { "heal" : 1 })}} + {{:helper.link('Regain Mana', null, { "regain_mana" : 1 })}} + {{:helper.link('New Game', null, { "new_game" : 1 })}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/laptop_configuration.tmpl b/nano/templates/laptop_configuration.tmpl index bd9197feff..69af3bd6c0 100644 --- a/nano/templates/laptop_configuration.tmpl +++ b/nano/templates/laptop_configuration.tmpl @@ -67,4 +67,4 @@

    {{/for}}

    -NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559 \ No newline at end of file +NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559 \ No newline at end of file diff --git a/nano/templates/laptop_mainscreen.tmpl b/nano/templates/laptop_mainscreen.tmpl index 4e3479b989..9d7804ae72 100644 --- a/nano/templates/laptop_mainscreen.tmpl +++ b/nano/templates/laptop_mainscreen.tmpl @@ -1,8 +1,8 @@ No program loaded. Please select program from list below. {{for data.programs}} -
    {{:helper.link(value.desc, null, {'PC_runprogram' : value.name})}} - {{:helper.link('X', null, {'PC_killprogram' : value.name}, (value.running ? null : 'disabled'))}} - {{:helper.link('AR', null, {'PC_setautorun' : value.name}, null, (value.autorun ? 'yellowButton' : null))}} +
    {{:helper.link(value.desc, value.icon, {'PC_runprogram' : value.name})}} + {{:helper.link('X', null, {'PC_killprogram' : value.name}, (value.running ? null : 'disabled'))}} + {{:helper.link('AR', null, {'PC_setautorun' : value.name}, null, (value.autorun ? 'yellowButton' : null))}} {{/for}} -
    \ No newline at end of file + \ No newline at end of file diff --git a/nano/templates/library.tmpl b/nano/templates/library.tmpl new file mode 100644 index 0000000000..fa8f3f6622 --- /dev/null +++ b/nano/templates/library.tmpl @@ -0,0 +1,75 @@ +{{if data.error}} +

    Error

    + {{:data.error}}

    + {{:helper.link("Reset", null, {'reseterror' : 1})}} +{{else data.current_book}} +

    {{:data.current_book.title}}

    +
    +
    + Author: +
    +
    + {{:data.current_book.author}} +
    +
    + USBN: +
    +
    + {{:data.current_book.id}} +
    +
    + Commands: +
    +
    + {{:helper.link("Close", null, {'closebook' : 1})}} + {{:helper.link("Print", null, {'printbook' : 1})}} +
    +
    +
    + {{:data.current_book.content}} +
    +{{else}} +

    External Archives

    +
    +
    + Scanner: +
    +
    + {{:data.scanner ? 'Connected' : 'Not Connected'}} +
    +
    +
    +
    + Commands: +
    +
    + {{:helper.link("View By USBN", null, {'viewid' : 1})}} + {{:helper.link("Upload From Scanner", null, {'uploadbook' : 1})}} + {{:helper.link("Connect to Scanner", null, {'connectscanner' : 1})}} +
    +
    +
    +
    + Sort by: +
    +
    + {{:helper.link("Title", null, {'sortby' : 'title'})}} + {{:helper.link("Author", null, {'sortby' : 'author'})}} + {{:helper.link("Category", null, {'sortby' : 'category'})}} + {{:helper.link("USBN", null, {'sortby' : 'id'})}} +
    +
    + + +
    CommandsTitleAuthorCategoryUSBN + {{for data.book_list}} +
    {{:helper.link("View", null, {'viewbook' : value.id})}} + {{:value.title}} + {{:value.author}} + {{:value.category}} + {{:value.id}} + + {{/for}} +
    +{{/if}} +


    NTOS v2.0.4b Copyright NanoTrasen 2557 - 2561 diff --git a/nano/templates/news_browser.tmpl b/nano/templates/news_browser.tmpl index 17b02614f3..ed32814bec 100644 --- a/nano/templates/news_browser.tmpl +++ b/nano/templates/news_browser.tmpl @@ -1,3 +1,4 @@ + {{if data.message}}
    {{:data.message}} @@ -5,14 +6,15 @@
    {{/if}} {{if data.article}} - Viewing: {{:data.title}}

    - - {{:data.article}} - -

    + Viewing: {{:data.title}}
    {{:helper.link('CLOSE', null, { "PRG_reset" : 1 })}} {{:helper.link('SAVE', null, { "PRG_savearticle" : 1 })}} -{{else data.download_progress}} +

    + {{if data.cover}} + + {{/if}} + {{:data.article}} +{{else data.download_running}} Downloading file...

    @@ -26,37 +28,50 @@ Download speed:
    - {{data.download_rate}} GQ/s + {{:data.download_rate}} GQ/s
    Controls:
    {{:helper.link('ABORT', null, { "PRG_reset" : 1 })}} -
    +
    {{else}} - Listing available files
    +

    Listing available files

    +
    +
    + Show archived files: +
    +
    + {{if data.showing_archived}} + {{:helper.link('YES', null, { "PRG_toggle_archived" : 1 })}} + {{else}} + {{:helper.link('NO', null, { "PRG_toggle_archived" : 1 })}} + {{/if}} +
    +
    +

    {{for data.all_articles}}
    - Name: + Name:
    {{:value.name}}
    - Size: + Size:
    {{:value.size}} GQ
    - Actions: + Actions:
    {{:helper.link('OPEN', null, { "PRG_openarticle" : value.uid })}}
    {{/for}} -{{/if}} \ No newline at end of file +{{/if}} diff --git a/nano/templates/ntnet_chat.tmpl b/nano/templates/ntnet_chat.tmpl index b91afd613c..592b648177 100644 --- a/nano/templates/ntnet_chat.tmpl +++ b/nano/templates/ntnet_chat.tmpl @@ -63,4 +63,4 @@ {{:helper.link(value.chan, null, {'PRG_joinchannel' : value.id})}}
    {{/for}} -{{/if}} \ No newline at end of file +{{/if}} \ No newline at end of file diff --git a/nano/templates/ntnet_dos.tmpl b/nano/templates/ntnet_dos.tmpl index c8562706cc..1ddf8eb06e 100644 --- a/nano/templates/ntnet_dos.tmpl +++ b/nano/templates/ntnet_dos.tmpl @@ -19,4 +19,4 @@ {{for data.relays}} {{:helper.link(value , null, { 'PRG_target_relay' : value })}} {{/for}} -{{/if}} \ No newline at end of file +{{/if}} \ No newline at end of file diff --git a/nano/templates/ntnet_downloader.tmpl b/nano/templates/ntnet_downloader.tmpl index 0bce1ff451..b53f36d696 100644 --- a/nano/templates/ntnet_downloader.tmpl +++ b/nano/templates/ntnet_downloader.tmpl @@ -1,4 +1,4 @@ -Welcome to software download utility. Please select which software you wish to download.
    +Welcome to the software download utility. Please select which software you wish to download.
    {{if data.error}}

    Download Error

    @@ -13,40 +13,62 @@
    {{:helper.link("RESET", null, {'PRG_reseterror' : 1})}}
    -{{else data.downloadname}} -

    Download Running

    - Please wait... -
    - File name: +
    +{{/if}} + +

    {{:data.downloadname ? 'Download Running' : 'No Downloads In Progress'}}

    + {{:data.downloadname ? 'Please wait...' : 'Standing by...'}} +
    +
    + File name: +
    +
    + {{:data.downloadname ? data.downloadname : 'N/A'}} +
    +
    + File description: +
    +
    + {{:data.downloadname ? data.downloaddesc : 'N/A'}} +
    +
    + File size: +
    +
    + {{:data.downloadname ? (data.downloadcompletion + 'GQ / ' + data.downloadsize + 'GQ') : 'N/A'}} +
    +
    + Transfer Rate: +
    +
    + {{:data.downloadname ? data.downloadspeed : '0'}} GQ/s +
    +
    + Download progress: +
    +
    + {{:helper.displayBar(data.downloadcompletion, 0, data.downloadname ? data.downloadsize : 0, 'good')}} +
    -
    - {{:data.downloadname}} + +

    + +

    Downloads Queue

    +
    + {{for data.downloads_queue}} +
    + {{:index + 1}}: +
    +
    + {{:value}} + {{:helper.link('', 'close', {'PRG_removequeued' : value})}} +
    + {{empty}} + The queue is currently empty. + {{/for}}
    -
    - File description: -
    -
    - {{:data.downloaddesc}} -
    -
    - File size: -
    -
    - {{:data.downloadcompletion}}GQ / {{:data.downloadsize}}GQ -
    -
    - Transfer Rate: -
    -
    - {{:data.downloadspeed}} GQ/s -
    -
    - Download progress: -
    -
    - {{:helper.displayBar(data.downloadcompletion, 0, data.downloadsize, 'good')}} -
    -{{else}} +

    +

    Primary software repository

    Hard drive: @@ -55,66 +77,24 @@ {{:helper.displayBar(data.disk_used, 0, data.disk_size, 'good')}} {{:data.disk_used}}GQ / {{:data.disk_size}}GQ
    + {{for data.downloadable_programs}} -
    -
    - File name: -
    -
    - {{:value.filename}} ({{:value.size}} GQ) -
    -
    - Program name: -
    -
    - {{:value.filedesc}} -
    -
    - Description: -
    -
    - {{:value.fileinfo}} -
    -
    - File controls: -
    -
    - {{:helper.link("DOWNLOAD", null, {'PRG_downloadfile' : value.filename})}} -
    +
    {{:helper.link('', value.icon, {'PRG_downloadfile' : value.filename})}} + {{:value.filedesc}} + {{:value.fileinfo}} + {{:value.size}} GQ {{/for}} +
    {{if data.hackedavailable}}

    *UNKNOWN* software repository

    Please note that NanoTrasen does not recommend download of software from non-official servers. {{for data.hacked_programs}} -
    -
    - File name: -
    -
    - {{:value.filename}} ({{:value.size}} GQ) -
    -
    - Program name: -
    -
    - {{:value.filedesc}} -
    -
    - Description: -
    -
    - {{:value.fileinfo}} -
    -
    - File controls: -
    -
    - {{:helper.link("DOWNLOAD", null, {'PRG_downloadfile' : value.filename})}} -
    -
    + {{:helper.link(value.filedesc, value.icon, {'PRG_downloadfile' : value.filename})}} + {{:value.fileinfo}} + {{:value.size}} GQ +
    {{/for}} {{/if}} -{{/if}} -


    NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559 \ No newline at end of file +


    NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559 \ No newline at end of file diff --git a/nano/templates/ntnet_monitor.tmpl b/nano/templates/ntnet_monitor.tmpl index 89c9b8144c..3ab1f307c3 100644 --- a/nano/templates/ntnet_monitor.tmpl +++ b/nano/templates/ntnet_monitor.tmpl @@ -68,7 +68,7 @@
    {{:data.idsstatus ? 'ENABLED' : 'DISABLED'}}
    -
    +
    Maximal Log Count: @@ -109,4 +109,4 @@ {{/for}}
    - \ No newline at end of file + \ No newline at end of file diff --git a/nano/templates/ntnet_relay.tmpl b/nano/templates/ntnet_relay.tmpl index 97b68368f6..24bd831782 100644 --- a/nano/templates/ntnet_relay.tmpl +++ b/nano/templates/ntnet_relay.tmpl @@ -15,7 +15,7 @@ {{else}} {{:helper.link('DISABLED', null, { 'toggle' : 1 })}} {{/if}} - +
    Network buffer status: @@ -29,4 +29,4 @@
    {{:helper.link('Purge network blacklist', null, { 'purge' : 1 })}}
    -{{/if}} \ No newline at end of file +{{/if}} \ No newline at end of file diff --git a/nano/templates/ntnet_transfer.tmpl b/nano/templates/ntnet_transfer.tmpl index fa770295aa..e7a9da892a 100644 --- a/nano/templates/ntnet_transfer.tmpl +++ b/nano/templates/ntnet_transfer.tmpl @@ -91,4 +91,4 @@
    {{:helper.link('Send file', null, { "PRG_uploadmenu" : 1 })}} -{{/if}} \ No newline at end of file +{{/if}} \ No newline at end of file diff --git a/nano/templates/word_processor.tmpl b/nano/templates/word_processor.tmpl new file mode 100644 index 0000000000..0a786f4973 --- /dev/null +++ b/nano/templates/word_processor.tmpl @@ -0,0 +1,49 @@ +{{if data.error}} +

    An error has occurred:

    +Additional information: {{:data.error}}
    +Please try again. If the problem persists, contact your system administrator for assistance. +{{:helper.link('Back to menu', null, { "PRG_backtomenu" : 1 })}} +{{else}} +{{if data.browsing}} + {{:helper.link('BACK TO EDITOR', null, { "PRG_closebrowser" : 1 })}} +

    Available documents (local):

    + +
    Name + Size (GQ) + {{for data.files}} +
    {{:value.name}} + {{:value.size}}GQ + {{:helper.link('OPEN', null, { "PRG_openfile" : value.name })}} + {{/for}} +
    + {{if data.usbconnected}} +

    Available documents (portable device):

    + +
    Name + Size (GQ) + {{for data.usbfiles}} +
    {{:value.name}} + {{:value.size}}GQ + {{:helper.link('OPEN', null, { "PRG_openfile" : value.name })}} + {{/for}} +
    + {{/if}} +{{else}} +

    Document: {{:data.filename}}

    +
    + {{:helper.link('NEW', null, { "PRG_newfile" : 1 })}} + {{:helper.link('LOAD', null, { "PRG_loadmenu" : 1 })}} + {{:helper.link('SAVE', null, { "PRG_savefile" : 1 })}} + {{:helper.link('SAVE AS', null, { "PRG_saveasfile" : 1 })}} +
    +
    + {{:helper.link('EDIT', null, { "PRG_editfile" : 1 })}} + {{:helper.link('PREVIEW', null, { "PRG_txtrpeview" : 1 }, data.filedata ? null : 'disabled')}} + {{:helper.link('FORMATTING HELP', null, { "PRG_taghelp" : 1 })}} + {{:helper.link('PRINT', null, { "PRG_printfile" : 1 })}} +

    +
    + {{:data.filedata}} +
    +{{/if}} +{{/if}} diff --git a/polaris.dme b/polaris.dme index 0c62b7553a..26838190d4 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2134,10 +2134,12 @@ #include "code\modules\modular_computers\file_system\programs\generic\email_client.dm" #include "code\modules\modular_computers\file_system\programs\generic\file_browser.dm" #include "code\modules\modular_computers\file_system\programs\generic\game.dm" +#include "code\modules\modular_computers\file_system\programs\generic\library.dm" #include "code\modules\modular_computers\file_system\programs\generic\news_browser.dm" #include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm" #include "code\modules\modular_computers\file_system\programs\generic\nttransfer.dm" +#include "code\modules\modular_computers\file_system\programs\generic\wordprocessor.dm" #include "code\modules\modular_computers\file_system\programs\medical\suit_sensors.dm" #include "code\modules\modular_computers\file_system\programs\research\email_administration.dm" #include "code\modules\modular_computers\file_system\programs\research\ntmonitor.dm" From e668b12bc5c3e406dd6f1345dc73e99c019e6cce Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sun, 14 Apr 2019 11:56:20 -0700 Subject: [PATCH 30/98] Liver and Kidney filtration --- code/modules/reagents/Chemistry-Reagents.dm | 6 ++++++ .../Chemistry-Reagents/Chemistry-Reagents-Toxins.dm | 1 + 2 files changed, 7 insertions(+) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 8171e3f306..bf34512eef 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -12,6 +12,7 @@ var/list/data = null var/volume = 0 var/metabolism = REM // This would be 0.2 normally + var/list/filtered_organs = list() // Organs that will slow the processing of this chemical. var/mrate_static = FALSE //If the reagent should always process at the same speed, regardless of species, make this TRUE var/ingest_met = 0 var/touch_met = 0 @@ -79,6 +80,11 @@ removed *= 0.8 else // Otherwise, chemicals process as per percentage of your current pulse, or, if you have no pulse but are alive, by a miniscule amount. removed *= max(0.1, H.pulse / Pump.standard_pulse_level) + if(filtered_organs && filtered_organs.len) + for(var/organ_tag in filtered_organs) + var/obj/item/organ/internal/O = H.internal_organs_by_name[organ_tag] + if(O && !O.is_broken() && prob(max(0, O.max_damage - O.damage))) + removed *= 0.8 if(ingest_met && (active_metab.metabolism_class == CHEM_INGEST)) removed = ingest_met diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 914cc91f60..59716a5493 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -9,6 +9,7 @@ reagent_state = LIQUID color = "#CF3600" metabolism = REM * 0.25 // 0.05 by default. Hopefully enough to get some help, or die horribly, whatever floats your boat + filtered_organs = list(O_LIVER, O_KIDNEYS) var/strength = 4 // How much damage it deals per unit /datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) From 5498735a740eca4b8347a1dac187fd559f37ab3f Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 14 Apr 2019 15:20:52 -0400 Subject: [PATCH 31/98] Fixes Part One --- .../game/objects/items/devices/holowarrant.dm | 110 ++++++++++ .../computers/subtypes/preset_console.dm | 9 - .../file_system/programs/generic/library.dm | 191 ------------------ icons/obj/device.dmi | Bin 71933 -> 72103 bytes nano/templates/digitalwarrant.tmpl | 89 ++++++++ nano/templates/library.tmpl | 75 ------- polaris.dme | 1 - 7 files changed, 199 insertions(+), 276 deletions(-) create mode 100644 code/game/objects/items/devices/holowarrant.dm delete mode 100644 code/modules/modular_computers/file_system/programs/generic/library.dm create mode 100644 nano/templates/digitalwarrant.tmpl delete mode 100644 nano/templates/library.tmpl 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/modules/modular_computers/computers/subtypes/preset_console.dm b/code/modules/modular_computers/computers/subtypes/preset_console.dm index 6bdb081202..d2f409b51e 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_console.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm @@ -121,12 +121,3 @@ ..() //hard_drive.store_file(new/datum/computer_file/program/merchant()) hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) - -// Library -/obj/item/modular_computer/console/preset/library/install_default_programs() - ..() - 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/email_client()) - hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) - hard_drive.store_file(new/datum/computer_file/program/library()) diff --git a/code/modules/modular_computers/file_system/programs/generic/library.dm b/code/modules/modular_computers/file_system/programs/generic/library.dm deleted file mode 100644 index b686cda14e..0000000000 --- a/code/modules/modular_computers/file_system/programs/generic/library.dm +++ /dev/null @@ -1,191 +0,0 @@ -/* -In reply to this set of comments on lib_machines.dm: -// TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such -// It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it. - -The answer was five and a half years -ZeroBits -*/ - -/datum/computer_file/program/library - filename = "library" - filedesc = "Library" - extended_desc = "This program can be used to view e-books from an external archive." - program_icon_state = "word" - program_key_state = "atmos_key" - program_menu_icon = "note" - size = 6 - requires_ntnet = 1 - available_on_ntnet = 1 - - nanomodule_path = /datum/nano_module/library - -/datum/nano_module/library - name = "Library" - var/error_message = "" - var/current_book - var/obj/machinery/libraryscanner/scanner - var/sort_by = "id" - -/datum/nano_module/library/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_message) - data["error"] = error_message - else if(current_book) - data["current_book"] = current_book - else - var/list/all_entries[0] - establish_old_db_connection() - if(!dbcon_old.IsConnected()) - error_message = "Unable to contact External Archive. Please contact your system administrator for assistance." - else - var/DBQuery/query = dbcon_old.NewQuery("SELECT id, author, title, category FROM library ORDER BY "+sanitizeSQL(sort_by)) - query.Execute() - - while(query.NextRow()) - all_entries.Add(list(list( - "id" = query.item[1], - "author" = query.item[2], - "title" = query.item[3], - "category" = query.item[4] - ))) - data["book_list"] = all_entries - data["scanner"] = istype(scanner) - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "library.tmpl", "Library Program", 575, 700, state = state) - ui.auto_update_layout = 1 - ui.set_initial_data(data) - ui.open() - -/datum/nano_module/library/Topic(href, href_list) - if(..()) - return 1 - if(href_list["viewbook"]) - view_book(href_list["viewbook"]) - return 1 - if(href_list["viewid"]) - view_book(sanitizeSQL(input("Enter USBN:") as num|null)) - return 1 - if(href_list["closebook"]) - current_book = null - return 1 - if(href_list["connectscanner"]) - if(!nano_host()) - return 1 - for(var/d in GLOB.cardinal) - var/obj/machinery/libraryscanner/scn = locate(/obj/machinery/libraryscanner, get_step(nano_host(), d)) - if(scn && scn.anchored) - scanner = scn - return 1 - if(href_list["uploadbook"]) - if(!scanner || !scanner.anchored) - scanner = null - error_message = "Hardware Error: No scanner detected. Unable to access cache." - return 1 - if(!scanner.cache) - error_message = "Interface Error: Scanner cache does not contain any data. Please scan a book." - return 1 - - var/obj/item/weapon/book/B = scanner.cache - - if(B.unique) - error_message = "Interface Error: Cached book is copy-protected." - return 1 - - //B.SetName(input(usr, "Enter Book Title", "Title", B.name) as text|null) - B.author = input(usr, "Enter Author Name", "Author", B.author) as text|null - - if(!B.author) - B.author = "Anonymous" - else if(lowertext(B.author) == "edgar allen poe" || lowertext(B.author) == "edgar allan poe") - error_message = "User Error: Upload something original." - return 1 - - if(!B.title) - B.title = "Untitled" - - var/choice = input(usr, "Upload [B.name] by [B.author] to the External Archive?") in list("Yes", "No") - if(choice == "Yes") - establish_old_db_connection() - if(!dbcon_old.IsConnected()) - error_message = "Network Error: Connection to the Archive has been severed." - return 1 - - var/upload_category = input(usr, "Upload to which category?") in list("Fiction", "Non-Fiction", "Reference", "Religion") - - var/sqltitle = sanitizeSQL(B.name) - var/sqlauthor = sanitizeSQL(B.author) - var/sqlcontent = sanitizeSQL(B.dat) - var/sqlcategory = sanitizeSQL(upload_category) - var/DBQuery/query = dbcon_old.NewQuery("INSERT INTO library (author, title, content, category) VALUES ('[sqlauthor]', '[sqltitle]', '[sqlcontent]', '[sqlcategory]')") - if(!query.Execute()) - to_chat(usr, query.ErrorMsg()) - error_message = "Network Error: Unable to upload to the Archive. Contact your system Administrator for assistance." - return 1 - else - log_and_message_admins("has uploaded the book titled [B.name], [length(B.dat)] signs") - log_game("[usr.name]/[usr.key] has uploaded the book titled [B.name], [length(B.dat)] signs") - alert("Upload Complete.") - return 1 - - return 0 - - if(href_list["printbook"]) - if(!current_book) - error_message = "Software Error: Unable to print; book not found." - return 1 - - //PRINT TO BINDER - if(!nano_host()) - return 1 - for(var/d in GLOB.cardinal) - var/obj/machinery/bookbinder/bndr = locate(/obj/machinery/bookbinder, get_step(nano_host(), d)) - if(bndr && bndr.anchored) - var/obj/item/weapon/book/B = new(bndr.loc) - //B.SetName(current_book["title"]) - B.title = current_book["title"] - B.author = current_book["author"] - B.dat = current_book["content"] - B.icon_state = "book[rand(1,7)]" - B.desc = current_book["author"]+", "+current_book["title"]+", "+"USBN "+current_book["id"] - bndr.visible_message("\The [bndr] whirs as it prints and binds a new book.") - return 1 - - //Regular printing - print_text("Author: [current_book["author"]]
    USBN: [current_book["id"]]

    [current_book["title"]]


    [current_book["content"]]", usr) - return 1 - if(href_list["sortby"]) - sort_by = href_list["sortby"] - return 1 - if(href_list["reseterror"]) - if(error_message) - current_book = null - scanner = null - sort_by = "id" - error_message = "" - return 1 - -/datum/nano_module/library/proc/view_book(var/id) - if(current_book || !id) - return 0 - - var/sqlid = sanitizeSQL(id) - establish_old_db_connection() - if(!dbcon_old.IsConnected()) - error_message = "Network Error: Connection to the Archive has been severed." - return 1 - - var/DBQuery/query = dbcon_old.NewQuery("SELECT * FROM library WHERE id=[sqlid]") - query.Execute() - - while(query.NextRow()) - current_book = list( - "id" = query.item[1], - "author" = query.item[2], - "title" = query.item[3], - "content" = query.item[4] - ) - break - return 1 diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 0f8d1d245b557ec7cfba571462912abb3a460694..ca0c0f98549b1600d2a31e02dcfe7791075fed58 100644 GIT binary patch delta 10242 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 delta 10175 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 + {{if data.type == "arrest"}} +
    + Name: +
    + {{/if}} + {{if data.type == "search"}} +
    + Location: +
    + {{/if}} +
    + {{:data.warrantname}} +
    +
    +
    + {{if data.type == "arrest"}} +
    + Charges: +
    + {{/if}} + {{if data.type == "search"}} +
    + Reason: +
    + {{/if}} +
    + {{:data.warrantcharges}} +
    +
    +
    +
    + Authorized by: +
    +
    + {{:data.warrantauth}} +
    +
    +
    +
    + Actions: +
    +
    + + {{if data.type == "arrest"}} +
    {{:helper.link('Edit Name', null, {'editwarrantname' : 1})}}{{:helper.link('Custom Name', null, {'editwarrantnamecustom' : 1})}} +
    {{:helper.link('Edit Charges', null, {'editwarrantcharges' : 1})}} + {{/if}} + {{if data.type == "search"}} +
    {{:helper.link('Edit Location', null, {'editwarrantnamecustom' : 1})}} +
    {{:helper.link('Edit Reason', null, {'editwarrantcharges' : 1})}} + {{/if}} +
    {{:helper.link('Authorize', null, {'editwarrantauth' : 1})}} +
    {{:helper.link('Save', null, {'savewarrant' : 1})}} + {{:helper.link('Delete', null, {'deletewarrant' : 1})}} +
    {{:helper.link('Back to Menu', null, {'back' : 1})}} +
    +
    +
    + +{{else}} + + {{:helper.link('Add a Warrant', null, {'addwarrant' : 1})}}

    +

    Arrest warrants

    + + + + + {{/if}} + {{/for}} +
    NameChargesAuthorized By + {{for data.allwarrants}} + {{if value.arrestsearch == "arrest"}} +
    {{:helper.link(value.warrantname, null, {'editwarrant' : value.id})}}{{:value.charges}}{{:value.auth}}
    +

    Search warrants

    + + + + + {{/if}} + {{/for}} +
    LocationReasonAuthorized By + {{for data.allwarrants}} + {{if value.arrestsearch == "search"}} +
    {{:helper.link(value.warrantname, null, {'editwarrant' : value.id})}}{{:value.charges}}{{:value.auth}}
    + +{{/if}} \ No newline at end of file diff --git a/nano/templates/library.tmpl b/nano/templates/library.tmpl deleted file mode 100644 index fa8f3f6622..0000000000 --- a/nano/templates/library.tmpl +++ /dev/null @@ -1,75 +0,0 @@ -{{if data.error}} -

    Error

    - {{:data.error}}

    - {{:helper.link("Reset", null, {'reseterror' : 1})}} -{{else data.current_book}} -

    {{:data.current_book.title}}

    -
    -
    - Author: -
    -
    - {{:data.current_book.author}} -
    -
    - USBN: -
    -
    - {{:data.current_book.id}} -
    -
    - Commands: -
    -
    - {{:helper.link("Close", null, {'closebook' : 1})}} - {{:helper.link("Print", null, {'printbook' : 1})}} -
    -
    -
    - {{:data.current_book.content}} -
    -{{else}} -

    External Archives

    -
    -
    - Scanner: -
    -
    - {{:data.scanner ? 'Connected' : 'Not Connected'}} -
    -
    -
    -
    - Commands: -
    -
    - {{:helper.link("View By USBN", null, {'viewid' : 1})}} - {{:helper.link("Upload From Scanner", null, {'uploadbook' : 1})}} - {{:helper.link("Connect to Scanner", null, {'connectscanner' : 1})}} -
    -
    -
    -
    - Sort by: -
    -
    - {{:helper.link("Title", null, {'sortby' : 'title'})}} - {{:helper.link("Author", null, {'sortby' : 'author'})}} - {{:helper.link("Category", null, {'sortby' : 'category'})}} - {{:helper.link("USBN", null, {'sortby' : 'id'})}} -
    -
    - - -
    CommandsTitleAuthorCategoryUSBN - {{for data.book_list}} -
    {{:helper.link("View", null, {'viewbook' : value.id})}} - {{:value.title}} - {{:value.author}} - {{:value.category}} - {{:value.id}} - - {{/for}} -
    -{{/if}} -


    NTOS v2.0.4b Copyright NanoTrasen 2557 - 2561 diff --git a/polaris.dme b/polaris.dme index 26838190d4..00e281fb66 100644 --- a/polaris.dme +++ b/polaris.dme @@ -2134,7 +2134,6 @@ #include "code\modules\modular_computers\file_system\programs\generic\email_client.dm" #include "code\modules\modular_computers\file_system\programs\generic\file_browser.dm" #include "code\modules\modular_computers\file_system\programs\generic\game.dm" -#include "code\modules\modular_computers\file_system\programs\generic\library.dm" #include "code\modules\modular_computers\file_system\programs\generic\news_browser.dm" #include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm" From 327d2b0924143288c8236edb987c9eeea25b6386 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 14 Apr 2019 16:25:31 -0400 Subject: [PATCH 32/98] Fixes up comm program --- .../file_system/programs/command/comm.dm | 9 +++++++++ html/changelogs/Novacat - modularcomputers.yml | 3 +++ nano/templates/mod_communication.tmpl | 7 +++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/modules/modular_computers/file_system/programs/command/comm.dm b/code/modules/modular_computers/file_system/programs/command/comm.dm index 8de74ed700..b69ba7bc73 100644 --- a/code/modules/modular_computers/file_system/programs/command/comm.dm +++ b/code/modules/modular_computers/file_system/programs/command/comm.dm @@ -66,6 +66,9 @@ 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 @@ -215,6 +218,12 @@ 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 diff --git a/html/changelogs/Novacat - modularcomputers.yml b/html/changelogs/Novacat - modularcomputers.yml index 796695a722..1e21807f7f 100644 --- a/html/changelogs/Novacat - modularcomputers.yml +++ b/html/changelogs/Novacat - modularcomputers.yml @@ -34,3 +34,6 @@ delete-after: True # 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/nano/templates/mod_communication.tmpl b/nano/templates/mod_communication.tmpl index cd943d2122..0b0750369f 100644 --- a/nano/templates/mod_communication.tmpl +++ b/nano/templates/mod_communication.tmpl @@ -4,7 +4,7 @@
    {{if data.emagged}} {{:helper.link('Send an emergency message to [UNKNOWN]', null, {'action' : 'message', 'target' : 'emagged'}, data.isAI || !data.net_comms ? 'disabled' : null)}} {{else}} - {{:helper.link('Send an emergency message to ' + data.boss_short, null, {'action' : 'message', 'target' : 'regular'}, data.isAI || !data.net_comms ? 'disabled' : null)}} + {{:helper.link('Send an emergency message to Centcom', null, {'action' : 'message', 'target' : 'regular'}, data.isAI || !data.net_comms ? 'disabled' : null)}} {{/if}}
    {{:helper.link('Change alert level', null, {'action' : 'sw_menu', 'target' : 5}, data.isAI || !data.net_syscont || !data.net_comms ? 'disabled' : null)}}
    {{if data.have_shuttle && data.have_shuttle_called}} @@ -42,7 +42,7 @@
  • Line 1: {{:helper.link(data.message_line1 ? data.message_line1 : '(none)', null, {'action' : 'setstatus', 'target' : 'line1'})}}
  • Line 2: {{:helper.link(data.message_line2 ? data.message_line2 : '(none)', null, {'action' : 'setstatus', 'target' : 'line2'})}}
  • -
    Alert: {{:helper.link('Red Alert', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'redalert'})}} +
    Alert: {{:helper.link('Alert', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'redalert'})}} {{:helper.link('Lockdown', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'lockdown'})}} {{:helper.link('Biohazard', null, {'action' : 'setstatus', 'target' : 'alert', 'alert' : 'biohazard'})}}
    {{:helper.link('Back', null, {'action' : 'sw_menu', 'target' : 1})}} @@ -52,6 +52,9 @@
    The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.
    {{else}}
    Set status:
    +
    {{:helper.link('Yellow', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_YELLOW}, data.current_security_level === data.def_SEC_LEVEL_YELLOW || data.isAI ? 'disabled' : null)}}
    +
    {{:helper.link('Orange', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_ORANGE}, data.current_security_level === data.def_SEC_LEVEL_ORANGE || data.isAI ? 'disabled' : null)}}
    +
    {{:helper.link('Violet', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_VIOLET}, data.current_security_level === data.def_SEC_LEVEL_VIOLET || data.isAI ? 'disabled' : null)}}
    {{:helper.link('Blue', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_BLUE}, data.current_security_level === data.def_SEC_LEVEL_BLUE || data.isAI ? 'disabled' : null)}}
    {{:helper.link('Green', null, {'action' : 'setalert', 'target' : data.def_SEC_LEVEL_GREEN}, data.current_security_level === data.def_SEC_LEVEL_GREEN || data.isAI ? 'disabled' : null)}}
    {{/if}} From 4b4035932fa328e5d6617d6eac6a6d6871ba15f0 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sun, 14 Apr 2019 13:38:10 -0700 Subject: [PATCH 33/98] Modifier integration. --- code/modules/mob/_modifiers/modifiers.dm | 2 ++ code/modules/mob/_modifiers/modifiers_misc.dm | 13 ++++++- code/modules/mob/living/carbon/human/life.dm | 36 ++++++++++++++++--- code/modules/reagents/Chemistry-Reagents.dm | 2 +- 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/_modifiers/modifiers.dm b/code/modules/mob/_modifiers/modifiers.dm index 115acb1b3e..6e738094a1 100644 --- a/code/modules/mob/_modifiers/modifiers.dm +++ b/code/modules/mob/_modifiers/modifiers.dm @@ -45,6 +45,8 @@ var/icon_scale_percent // Makes the holder's icon get scaled up or down. var/attack_speed_percent // Makes the holder's 'attack speed' (click delay) shorter or longer. var/pain_immunity // Makes the holder not care about pain while this is on. Only really useful to human mobs. + var/pulse_modifier // Modifier for pulse, will be rounded on application, then added to the normal 'pulse' multiplier which ranges between 0 and 5 normally. Only applied if they're living. + var/pulse_set_level // Positive number. If this is non-null, it will hard-set the pulse level to this. Pulse ranges from 0 to 5 normally. /datum/modifier/New(var/new_holder, var/new_origin) holder = new_holder diff --git a/code/modules/mob/_modifiers/modifiers_misc.dm b/code/modules/mob/_modifiers/modifiers_misc.dm index 61386ce6d6..64be119d7c 100644 --- a/code/modules/mob/_modifiers/modifiers_misc.dm +++ b/code/modules/mob/_modifiers/modifiers_misc.dm @@ -267,4 +267,15 @@ the artifact triggers the rage. return FALSE if(L.get_poison_protection() >= 1) return FALSE - return TRUE \ No newline at end of file + return TRUE + +// Pulse modifier. +/datum/modifier/false_pulse + name = "false pulse" + desc = "Your blood flows, despite all other factors." + + on_created_text = "You feel alive." + on_expired_text = "You feel.. different." + stacks = MODIFIER_STACK_EXTEND + + pulse_set_level = PULSE_NORM diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 987ab3ff68..5c0f80ec45 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1539,16 +1539,39 @@ /mob/living/carbon/human/proc/handle_pulse() if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) + var/temp = PULSE_NORM + + var/modifier_shift = 0 + var/modifier_set + + if(modifiers && modifiers.len) + for(var/datum/modifier/mod in modifiers) + if(isnull(modifier_set) && !isnull(mod.pulse_set_level)) + modifier_set = round(mod.pulse_set_level) // Should be a whole number, but let's not take chances. + else if(mod.pulse_set_level > modifier_set) + modifier_set = round(mod.pulse_set_level) + + modifier_set = max(0, modifier_set) // No setting to negatives. + + if(mod.pulse_modifier) + modifier_shift += mod.pulse_modifier + + modifier_shift = round(modifier_shift) + if(!internal_organs_by_name[O_HEART]) - return PULSE_NONE //No blood, no pulse. + temp = PULSE_NONE + if(!isnull(modifier_set)) + temp = modifier_set + return temp //No blood, no pulse. if(stat == DEAD) - return PULSE_NONE //that's it, you're dead, nothing can influence your pulse + temp = PULSE_NONE + if(!isnull(modifier_set)) + temp = modifier_set + return temp //that's it, you're dead, nothing can influence your pulse, aside from outside means. var/obj/item/organ/internal/heart/Pump = internal_organs_by_name[O_HEART] - var/temp = PULSE_NORM - if(Pump) temp += Pump.standard_pulse_level - PULSE_NORM @@ -1558,6 +1581,11 @@ if(status_flags & FAKEDEATH) temp = PULSE_NONE //pretend that we're dead. unlike actual death, can be inflienced by meds + if(!isnull(modifier_set)) + temp = modifier_set + + temp = max(0, temp + modifier_shift) // No negative pulses. + if(Pump) for(var/datum/reagent/R in reagents.reagent_list) if(R.id in bradycardics) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index bf34512eef..8ad8b6486d 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -76,7 +76,7 @@ var/obj/item/organ/internal/heart/Pump = H.internal_organs_by_name[O_HEART] if(!Pump) removed *= 0.1 - else if(Pump.standard_pulse_level == PULSE_NONE) // No pulse means chemicals process a little bit slower than normal. + else if(Pump.standard_pulse_level == PULSE_NONE) // No pulse normally means chemicals process a little bit slower than normal. removed *= 0.8 else // Otherwise, chemicals process as per percentage of your current pulse, or, if you have no pulse but are alive, by a miniscule amount. removed *= max(0.1, H.pulse / Pump.standard_pulse_level) From 547c00e1b697d292d4e04a5464ca11527397a8da Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 15 Apr 2019 02:07:02 -0400 Subject: [PATCH 34/98] Fixes Part Two --- code/game/machinery/recharger.dm | 2 +- .../modules/modular_computers/hardware/nano_printer.dm | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 08eebc8df1..e2ae58c8c9 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -49,7 +49,7 @@ obj/machinery/recharger if(!C.battery_module) to_chat(user, "This device does not have a battery installed.") return - if(!G.get_cell()) + else if(!G.get_cell()) to_chat(user, "This device does not have a battery installed.") return diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm index 0eb2a7b065..2496a6930d 100644 --- a/code/modules/modular_computers/hardware/nano_printer.dm +++ b/code/modules/modular_computers/hardware/nano_printer.dm @@ -21,10 +21,16 @@ 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) - text_to_print = stars(text_to_print, 100-malfunction_probability) - new/obj/item/weapon/paper(get_turf(holder2),text_to_print, paper_title) + 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 From 0293205549c2d092ed85f299dda536df7af38526 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Mon, 15 Apr 2019 13:46:42 -0700 Subject: [PATCH 35/98] Client check only. --- code/modules/metric/activity.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/metric/activity.dm b/code/modules/metric/activity.dm index 370ae0eb2f..c4acdc57ec 100644 --- a/code/modules/metric/activity.dm +++ b/code/modules/metric/activity.dm @@ -6,7 +6,7 @@ . = 0 return - if(!M.mind || !M.client) // Logged out. They might come back but we can't do any meaningful assessments for now. + if(!M.client) // Logged out. They might come back but we can't do any meaningful assessments for now. . = 0 return @@ -79,4 +79,4 @@ . += assess_player_activity(O) num++ if(num) - . = round(. / num, 0.1) \ No newline at end of file + . = round(. / num, 0.1) From 2cb39322d1a4b0e809c48cfa34690696b1571c3f Mon Sep 17 00:00:00 2001 From: Heroman Date: Tue, 16 Apr 2019 17:10:56 +1000 Subject: [PATCH 36/98] Changes way syringes interact with containers --- .../reagents/reagent_containers/syringes.dm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 5faa197345..242c79822a 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -171,7 +171,9 @@ return var/cycle_time = injtime*0.33 //33% of the time slept between 5u doses - var/warmup_time = cycle_time //If the target is another mob, this gets overwritten + var/warmup_time = 0 //0 for containers + if(ismob(target)) + warmup_time = cycle_time //If the target is another mob, this gets overwritten if(ismob(target) && target != user) warmup_time = injtime*0.66 // Otherwise 66% of the time is warmup @@ -200,14 +202,14 @@ var/trans = 0 var/contained = reagentlist() - while(reagents.total_volume) - if(ismob(target)) + if(ismob(target)) + while(reagents.total_volume) trans += reagents.trans_to_mob(target, amount_per_transfer_from_this, CHEM_BLOOD) - else - trans += reagents.trans_to_obj(target, amount_per_transfer_from_this) - update_icon() - if(!reagents.total_volume || !do_after(user,cycle_time,target)) - break + update_icon() + if(!reagents.total_volume || !do_after(user,cycle_time,target)) + break + else + trans += reagents.trans_to_obj(target, amount_per_transfer_from_this) if (reagents.total_volume <= 0 && mode == SYRINGE_INJECT) mode = SYRINGE_DRAW From f2a0c05f694f79a49bb1eb2e3c14e988f0085511 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 07:58:36 +1000 Subject: [PATCH 37/98] Fixes promethean mice lunchboxes --- .../living/carbon/human/species/station/prometheans.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 90bca20c7d..ee11e70cd2 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -113,10 +113,18 @@ var/datum/species/shapeshifter/promethean/prometheans prometheans = src /datum/species/shapeshifter/promethean/equip_survival_gear(var/mob/living/carbon/human/H) - var/boxtype = pick(typesof(/obj/item/weapon/storage/toolbox/lunchbox)) + var/boxtype = pick(list(/obj/item/weapon/storage/toolbox/lunchbox, + /obj/item/weapon/storage/toolbox/lunchbox/heart, + /obj/item/weapon/storage/toolbox/lunchbox/cat, + /obj/item/weapon/storage/toolbox/lunchbox/nt, + /obj/item/weapon/storage/toolbox/lunchbox/mars, + /obj/item/weapon/storage/toolbox/lunchbox/cti, + /obj/item/weapon/storage/toolbox/lunchbox/nymph, + /obj/item/weapon/storage/toolbox/lunchbox/syndicate)) //Only pick the empty types var/obj/item/weapon/storage/toolbox/lunchbox/L = new boxtype(get_turf(H)) var/mob/living/simple_mob/animal/passive/mouse/mouse = new (L) var/obj/item/weapon/holder/holder = new (L) + holder.held_mob = mouse mouse.forceMove(holder) holder.sync(mouse) if(H.backbag == 1) From c3bda9b6864937fda2d3163c479366b0e61a22f6 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 09:25:44 +1000 Subject: [PATCH 38/98] Fixes laser pointers targeting through walls --- code/game/objects/items/devices/laserpointer.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index ee77a47de9..810147dbc4 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -71,6 +71,8 @@ /obj/item/device/laser_pointer/proc/laser_act(var/atom/target, var/mob/living/user) if(!(user in (viewers(world.view,target)))) return + if(!(target in view(user, world.view))) + return if(!(world.time - last_used_time >= cooldown)) return if (!diode) From 8b34e47a84360d363b728c3a25c57cd64c293b81 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 09:26:18 +1000 Subject: [PATCH 39/98] Fixes fortune cookie recipe runtime --- code/modules/food/recipes_microwave.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index f683429789..f80fecdd9f 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -457,6 +457,8 @@ I said no! . = ..() if (.) var/obj/item/weapon/paper/paper = locate() in container + if (!paper) + return 0 if (!paper.info) return 0 return . From 28074e971dce57e667d712cc42fff218b460f029 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 10:24:05 +1000 Subject: [PATCH 40/98] Fixes silicate making fulltile windows invisible --- code/game/objects/structures/window.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 444ca1ce35..f0bab9970a 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -83,8 +83,9 @@ /obj/structure/window/proc/updateSilicate() if (overlays) overlays.Cut() + update_icon() - var/image/img = image(src.icon, src.icon_state) + var/image/img = image(src) img.color = "#ffffff" img.alpha = silicate * 255 / 100 overlays += img From 21f7057b303dcd33cfb43cd264638eb0aa1e9b8f Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 10:38:35 +1000 Subject: [PATCH 41/98] Fixes mapping tool icons for fulltile windows --- code/game/objects/structures/window.dm | 7 +++++-- icons/obj/structures.dmi | Bin 103890 -> 109589 bytes 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 444ca1ce35..311ecf2c6a 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -484,6 +484,7 @@ force_threshold = 3 /obj/structure/window/basic/full + icon_state = "window-full" maxhealth = 24 fulltile = TRUE @@ -500,6 +501,7 @@ force_threshold = 5 /obj/structure/window/phoronbasic/full + icon_state = "phoronwindow-full" maxhealth = 80 fulltile = TRUE @@ -517,6 +519,7 @@ force_threshold = 10 /obj/structure/window/phoronreinforced/full + icon_state = "phoronrwindow-full" maxhealth = 160 fulltile = TRUE @@ -533,7 +536,7 @@ force_threshold = 6 /obj/structure/window/reinforced/full - icon_state = "fwindow" + icon_state = "rwindow-full" maxhealth = 80 fulltile = TRUE @@ -570,7 +573,7 @@ var/id /obj/structure/window/reinforced/polarized/full - icon_state = "fwindow" + icon_state = "rwindow-full" maxhealth = 80 fulltile = TRUE diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index bb968eec1bbc96429e01f29b544a17a8576773f5..908c2981dd2148af876fd020a53a71c0fc80696a 100644 GIT binary patch literal 109589 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 QuQ(tt71ZU+WX<3IKls;$@Bjb+ delta 12642 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 J{Eczo{{Ur7=+poJ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index e20774b376a6f0877ecf1ddb3f741c866ac62bcf..9f6d7a8aed13f0efe0ac7f758a866ad2aea705fb 100644 GIT binary patch delta 2313 zcmV+k3HJ8gngN)h0gxmCmXRege*%m>{SN$3L$SHF()ZbQoWvcf_u0pMsiup0xdV#W z2Q^V|FS;!DSf^G^)a$q`TEM1F$CsFF0yR+s!bVr|5Nd=$S=2~TP1L9?)?_^#pKsZb zfYlX*1_J&ryV8L&c{dU-PI>9 zOj?n+l&r8Ku&zDT?OL!Kk@7@*?&{u|+>Tr?LEduR^V~F?78V414E19%lk8ugu@!RO zGih7-%c+_!=H)NsFJSRwPmf>#03ZNKL_t(|oa~)>cobFIv(5ntKmrb>v)Mse z2Y-)g;tt~g{;iQ&4D#N(l5KX#7!Hlw0s$Ecx-lb>7i|=rfz(Zx@y8NbhC=2tG+PwO zrpf-$M2+ZT23tTS22nB+UYsyUHhc?lf@LnP7FUGEa1PenALVzH(qaoe3f%Kaj6M3h zK8@!0+;hJ>?zuK}BH^6{AwxqJIe09x@PC#UdCTy_+S(iH#Q2wlQXCjtdW+d4vY?<~ z+^K+=@po!B;bhr)0M>;#^Wam2`Y*!Pgv5~%cK}#lhx$JiP6yb;+o|2;@%Z>#<}kiB zwrAtp+WXa^k=tyqLXA2g$8JC!p!+!mx{xwzMD@@J@etThkr?dQAo2*FS*D^S|J=Fn^WsbNfZW zKlKJtCZD(C+hVuas<+gQo{NtheF1Tf{$j>=>!F~m3SfzVT@5gs&BDY7;IYX+)8gB* zzte8ICcn4hvq@NA*Xr=xI>^rt>r&!Gn|$7m&y?&hHhO6VRi6^}uFY1wZro^9XC;<>6Vf0W?LL`h503i}a34jm@qXa;Rgi!(@M8f9o z(=A<;oSf|KuRw^`Pz6AUgw2`+(B163C6p(|6Cy>kCIO^nXhj`Qh<_B#_yo}1oXtmv z)bhrza<}#~c9kPKq?V^jfDq?qbOPvZ&gRoHv@mv+qc^b3t^2%t1IuK_u5zShXz6r- z5GQ8zRe-qV@-dUY>}ZBCk+r)oj!Ovk@An3l$l1j#PX_=(KR{2m=8juF`c&cW=4_r#{Kob{R5gVnEFuZ~wb%LkH!c7Gj0O$#_Zk2^ z7Lq`Bb2hIS`5dYO2pP}q3c$8WC?iH|?$%ozj9ukuy*1ikq<^t}5G@7`lDD5kT>3ZY zd(i$R0N_Q451hY(`rRsyi^5Ud|IKtF5{r897NV!5oeY_vxlJMt^l zu?Simg(Uth99*{pmHT>dY+DJmEA|7hCW5M_&@oA%w5$)|iRJXL2tw@4=tV%b(8tc_ z!y=LpxHt*`(0?HN9T)05aS%IDRDT*zY^s5LqkKt->mPS&e8*& zr3ZlZN`UPcPgeofvfg@`?_P5rI%*5?61 zmp?Q*atRbRU0kQ?lf7q!WRhQMUEDiT;0vR!4FF)&wc$vC@0j=P_alUi=TZW2RPqCW zdfpPK=YKg)49@nMETuXYswfQrAR_S?@=FI18JB~=#Zici%RzqWAR-cv0RU7{8YtDV z9*s}PT;%d8!0o#|xP7+=9LEWZehga_p&^v1AZ5a#etBKW{%m$S9W* z0GsTZss|{pX@}WthS_XJfGhw3vH)SbxTYPNs(%M#_VJVhdCO!%Z$(c~w@4K7sxtJi1ASZCgEv(^Ft4$9?N*|ib?(6O{* z%%Yzs+k;P};Y=nn_jID+Os2y%07A&b+`18HYg#f)CX=vje-*%FGGS|4vd6yMM2?r_ z%2ZJrv{rusRg{Jn{0Nx@x0-{pDnM^A;%;139SZ;53jjFuLJ78SP7%uf={Wj(3OyE_ zNZFLS1M4<+^8lc}6h3Pvygf<)M9QZ0+kmrq;uAt<_(MSnA>yJ0K!}7<0w6@fC;<>6 jVUz#}kuXXCgh<%`@p?tS7$!|N00000NkvXXu0mjf0l#f* delta 1486 zcmV;<1u^=Vp#j~R0gxmCkdY-af5I4h`W>MBOhd7EYo+hA>o|!!RYaC#R2zXaVc40LttHduG_U>cOvB<@wuyeXL37oy##s7b?3NgeEb4)reZPzVol>h)B07*naRCt{1oq2c^Rob`j>g-8pv)TazKmrSJv)@5k z2Y(5PDvII&{-4U4g-vLQB}tReGTIbPR%FE#i3w&U6-q?4i53O+fkj0v`dGHCMFbHh zB}l0CNVKrBRwdLTD9fnPz@dg{LY>!Q=1#9s>y6&))$acX!tmzF8I*J0z4yJjr@jA5 z;mR4a`}<>F*q9l!V{`4;K&ZL-rGHgmet&W(4*WUvR@o%7y1IJER6u3?y}QeB^;$iE z_(ELd$9K%}&BXS?Rf#iR0f@hzL zETA&w1Pkb@3!*D=uC&04#cAx4?} z!sGVA^D7FySpYE5|FdLT#*DkYy}d`oP~4e#s)qiloKpeS@mCaAcmUYpuiwyObtD%8 z|0XLl6Xj*=ku}RFet*)&A5KAj9)Ds05K1h*C0>j7WDosS$9KIa;G=uB_NULixN*lq zc6N61zJD|tMNUo*qR}Y&`uebIOHfJy5X5c4i>D90>w4e)&-i^u77|eEO^;`E48gE{)0iea| z81mk_;Bo*!@s54U{ujFA3x6Yh(MEOhtBB8S!6_|I8f)#g`$O-Euh|e#dgYxc@&7k0 z07M4krl3RyV*wyC7z+TA!B_x@48{ULWH9Z!TNV`+>HY{r#^MNo$Y3l0L@`=b+)d}%!hq`N;l5y_SIlYpW>d4FzhE(W{f1z>7P z33_^ZP*YQ5`=(3(j6|e}t0{o){^&%chU+x|-Tl#tNIusEKzDz1B9hNl0dV$52Y&ZQ ze;kSTLhniGj~*VB+aH~X)Ns8BnA#s5TY&{<&jJ8`hJX(i0Nh1W{z`1>ZpUjijdF=d zBG&~#cYkyulF!u?V1G2d&SmyTCn7amF9IH@+JdD&E&egyFWS+$(Q!G0h15;gn(9$2dy5@AN|RRX!1y_0EnqTS6wi^77$AOB(DA(`V&nq zquLg{AU_Xp>w-XC%CR)o35ZC)w5I?gEeP`JPc-?AY6QSUCo}p#a7!>EgRuY*8H@#h o$Y3l0Lx5>cP6|;YZ?z&Xc+?H!fr95 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 du9f+Y@&D1cz7(QH-fBf&Fw_m>fr9g* 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 Date: Sat, 20 Apr 2019 15:35:51 -0700 Subject: [PATCH 64/98] One day. --- code/modules/mining/ore.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mining/ore.dm b/code/modules/mining/ore.dm index 099ce46ba5..70d0e78685 100644 --- a/code/modules/mining/ore.dm +++ b/code/modules/mining/ore.dm @@ -28,7 +28,7 @@ name = "recrystallized carbonate" icon_state = "ore_marble" origin_tech = list(TECH_MATERIAL = 1) - material = "carbon" + material = "marble" /obj/item/weapon/ore/glass name = "sand" From 8d8b12edc278811631399bc9adfc32957bc6bc7b Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 21 Apr 2019 11:08:53 +1000 Subject: [PATCH 65/98] Fixes message on window frame fastening --- code/game/objects/structures/window.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 7205e4e30f..e1eba7ece7 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -267,7 +267,7 @@ state = 3 - state update_nearby_icons() playsound(src, W.usesound, 75, 1) - to_chat(user, "You have [state ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.") + to_chat(user, "You have [state == 1 ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.") else if(reinf && state == 0) anchored = !anchored update_nearby_icons() From 9640cc8f99e3e959714bf3b24d480575aed0836d Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 21 Apr 2019 11:35:56 +1000 Subject: [PATCH 66/98] Fixes ability to deconstruct fire alarms --- code/game/machinery/alarm.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index b62ba75409..c4f098bf94 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -875,6 +875,11 @@ FIRE ALARM /obj/machinery/firealarm/attackby(obj/item/W as obj, mob/user as mob) add_fingerprint(user) + if(alarm_deconstruction_screwdriver(user, W)) + return + if(alarm_deconstruction_wirecutters(user, W)) + return + if(panel_open) if(istype(W, /obj/item/device/multitool)) detecting = !(detecting) From 8df3d667f7fab807ebd524cd142f1b64227a83e2 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Sat, 20 Apr 2019 18:49:56 -0800 Subject: [PATCH 67/98] Changelog, because I'm not too busy to do this now! (#6111) --- html/changelog.html | 38 +++++++++++++++++++ html/changelogs/.all_changelog.yml | 33 ++++++++++++++++ html/changelogs/Anewbe - Jamming.yml | 36 ------------------ html/changelogs/Neerti-AI_Shells.yml | 37 ------------------ html/changelogs/Novacat - alarms.yml | 37 ------------------ html/changelogs/Novacat - stasiscages.yml | 36 ------------------ .../PrismaticGynoid - charactercopy.yml | 6 --- .../PrismaticGynoid - crashedescapepods.yml | 6 --- html/changelogs/Woodrat - mapfixes.yml | 5 --- .../mistyLuminescence - beltrigs.yml | 36 ------------------ .../mistyLuminescence - biginjector2.yml | 36 ------------------ .../mistyLuminescence - hydrobeakers.yml | 36 ------------------ .../mistyLuminescence - loadoutroles.yml | 36 ------------------ .../mistyLuminescence - turtlenecks.yml | 36 ------------------ .../mistyLuminescence - wintercoats.yml | 36 ------------------ 15 files changed, 71 insertions(+), 379 deletions(-) delete mode 100644 html/changelogs/Anewbe - Jamming.yml delete mode 100644 html/changelogs/Neerti-AI_Shells.yml delete mode 100644 html/changelogs/Novacat - alarms.yml delete mode 100644 html/changelogs/Novacat - stasiscages.yml delete mode 100644 html/changelogs/PrismaticGynoid - charactercopy.yml delete mode 100644 html/changelogs/PrismaticGynoid - crashedescapepods.yml delete mode 100644 html/changelogs/Woodrat - mapfixes.yml delete mode 100644 html/changelogs/mistyLuminescence - beltrigs.yml delete mode 100644 html/changelogs/mistyLuminescence - biginjector2.yml delete mode 100644 html/changelogs/mistyLuminescence - hydrobeakers.yml delete mode 100644 html/changelogs/mistyLuminescence - loadoutroles.yml delete mode 100644 html/changelogs/mistyLuminescence - turtlenecks.yml delete mode 100644 html/changelogs/mistyLuminescence - wintercoats.yml diff --git a/html/changelog.html b/html/changelog.html index 757677d2cc..ef602977f9 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,44 @@ -->
    +

    17 April 2019

    +

    Anewbe updated:

    +
      +
    • The Subspace Jammer traitor item now lasts about 10 minutes. It now blocks signalers from sending or receiving, and also obscures suit sensors around it.
    • +
    +

    N3X15 (MistyLuminescence) updated:

    +
      +
    • Departmental winter coats can now hold the same items as their standard departmental suit items - labcoats, hazard vests, body armor, aprons, etc.
    • +
    +

    Neerti updated:

    +
      +
    • Removes ability for AI to print and inhabit maintenance and construction drones. This has been replaced with a system which allows for AIs to inhabit special cyborg shells, called AI Shells, which are built with a new MMI type in Robotics. Most of the regular cyborg mechanics applies to AI Shells.
    • +
    +

    Novacat updated:

    +
      +
    • Adds new status displays for all alert levels
    • +
    • Adds yellow, violet, and orange alert levels
    • +
    • Added Stasis Cages, which allows safe transport of mobs.
    • +
    +

    PrismaticGynoid updated:

    +
      +
    • Adds the ability to copy a character slot onto another one, allowing for easier rearranging of characters, or wiping characters by copying empty slots.
    • +
    • Adds three new crashed escape pod PoIs.
    • +
    +

    Woodrat updated:

    +
      +
    • Arrivals dock should not stay locked shut
    • +
    • Two windoors in xenobio stationside lacking access requirements
    • +
    +

    mistyLuminescence updated:

    +
      +
    • Lays the foundation for RIGs to be worn on the belt slot. Doesn't apply to any RIGs currently, unless VV'd, but stay tuned!
    • +
    • Large autoinjectors are now scannable and syringeable again, just like they used to be. Unidentified autoinjectors still aren't, unless you ID them first.
    • +
    • Adds beakers to the hydroponics lockers and NutriMax vendors.
    • +
    • More jobs can now take certain items in the loadout.
    • +
    • Adds departmental turtlenecks, available in department wardrobes or the loadout selection. Look good... in space.
    • +
    +

    04 March 2019

    Anewbe updated:

    D=6~8->_rp42i9X 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 From 66cada73d2993ecdfeabb5c2fc8603197775257c Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 11:37:51 +1000 Subject: [PATCH 42/98] Makes taperolls usable on tiles with directional windows --- code/game/objects/items/weapons/policetape.dm | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index 78065ff69e..0556fd54a1 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -140,14 +140,14 @@ var/list/tape_roll_applications = list() /obj/item/taperoll/attack_self(mob/user as mob) if(!start) start = get_turf(src) - usr << "You place the first end of \the [src]." + to_chat(user, "You place the first end of \the [src].") update_icon() else end = get_turf(src) if(start.y != end.y && start.x != end.x || start.z != end.z) start = null update_icon() - usr << "\The [src] can only be laid horizontally or vertically." + to_chat(user, "\The [src] can only be laid horizontally or vertically.") return if(start == end) @@ -162,10 +162,13 @@ var/list/tape_roll_applications = list() for(var/obj/structure/window/W in T) if(W.is_fulltile() || W.dir == reverse_dir[dir]) possible_dirs += dir + for(var/obj/structure/window/window in start) + if(istype(window) && !window.is_fulltile()) + possible_dirs += window.dir if(!possible_dirs) start = null update_icon() - usr << "You can't place \the [src] here." + to_chat(user, "You can't place \the [src] here.") return if(possible_dirs & (NORTH|SOUTH)) var/obj/item/tape/TP = new tape_type(start) @@ -181,7 +184,7 @@ var/list/tape_roll_applications = list() TP.update_icon() start = null update_icon() - usr << "You finish placing \the [src]." + to_chat(user, "You finish placing \the [src].") return var/turf/cur = start @@ -199,6 +202,28 @@ var/list/tape_roll_applications = list() can_place = 0 else for(var/obj/O in cur) + if(istype(O, /obj/structure/window)) + var/obj/structure/window/window = O + if(window.is_fulltile()) + can_place = 0 + break + if(cur == start) + if(window.dir == orientation) + can_place = 0 + break + else + continue + else if(cur == end) + if(window.dir == reverse_dir[orientation]) + can_place = 0 + break + else + continue + else if (window.dir == reverse_dir[orientation] || window.dir == orientation) + can_place = 0 + break + else + continue if(O.density) can_place = 0 break @@ -208,7 +233,7 @@ var/list/tape_roll_applications = list() if (!can_place) start = null update_icon() - usr << "You can't run \the [src] through that!" + to_chat(user, "You can't run \the [src] through that!") return cur = start @@ -224,6 +249,9 @@ var/list/tape_roll_applications = list() for(var/obj/structure/window/W in T) if(W.is_fulltile() || W.dir == orientation) tape_dir = dir + for(var/obj/structure/window/window in cur) + if(istype(window) && !window.is_fulltile() && window.dir == reverse_dir[orientation]) + tape_dir = dir else if(cur == end) var/turf/T = get_step(end, orientation) if(T && !T.density) @@ -231,6 +259,9 @@ var/list/tape_roll_applications = list() for(var/obj/structure/window/W in T) if(W.is_fulltile() || W.dir == reverse_dir[orientation]) tape_dir = dir + for(var/obj/structure/window/window in cur) + if(istype(window) && !window.is_fulltile() && window.dir == orientation) + tape_dir = dir for(var/obj/item/tape/T in cur) if((T.tape_dir == tape_dir) && (T.icon_base == icon_base)) tapetest = 1 @@ -246,7 +277,7 @@ var/list/tape_roll_applications = list() cur = get_step_towards(cur,end) start = null update_icon() - usr << "You finish placing \the [src]." + to_chat(user, "You finish placing \the [src].") return /obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity) @@ -256,12 +287,12 @@ var/list/tape_roll_applications = list() if (istype(A, /obj/machinery/door)) var/turf/T = get_turf(A) if(locate(/obj/item/tape, A.loc)) - user << "There's already tape over that door!" + to_chat(user, "There's already tape over that door!") else var/obj/item/tape/P = new tape_type(T) P.update_icon() P.layer = WINDOW_LAYER - user << "You finish placing \the [src]." + to_chat(user, "You finish placing \the [src].") if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor)) var/turf/F = A From 8ea3a0f589be79b3fe1ef38046bf00d2d515c405 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 11:46:06 +1000 Subject: [PATCH 43/98] Allows voidsuits to be modified in hands --- code/modules/clothing/spacesuits/void/void.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index f1d12a9982..83dbdfd345 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -220,7 +220,7 @@ if(istype(W,/obj/item/clothing/accessory) || istype(W, /obj/item/weapon/hand_labeler)) return ..() - if(istype(src.loc,/mob/living)) + if(user.get_inventory_slot(src) == slot_wear_suit) to_chat(user, "You cannot modify \the [src] while it is being worn.") return From 8a14c0eaf9b35cc5318c44f0c164bf15baf12a60 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Wed, 17 Apr 2019 13:04:36 +1000 Subject: [PATCH 44/98] Fixes borgs being unable to use ladders --- code/modules/multiz/structures.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/multiz/structures.dm b/code/modules/multiz/structures.dm index ca535019db..eb88365759 100644 --- a/code/modules/multiz/structures.dm +++ b/code/modules/multiz/structures.dm @@ -68,6 +68,10 @@ if(target_ladder) M.forceMove(get_turf(target_ladder)) +/obj/machinery/power/supermatter/attack_robot(var/mob/M) + attack_hand(M) + return + /obj/structure/ladder/proc/getTargetLadder(var/mob/M) if((!target_up && !target_down) || (target_up && !istype(target_up.loc, /turf) || (target_down && !istype(target_down.loc,/turf)))) to_chat(M, "\The [src] is incomplete and can't be climbed.") From 1306f187e8a99f0528987d5e2501e17dd5985b91 Mon Sep 17 00:00:00 2001 From: chaoko99 Date: Tue, 16 Apr 2019 20:56:57 -0700 Subject: [PATCH 45/98] ore bags will now automatically pick up ore and dump them into a box if one is being pulled. --- .../objects/items/weapons/storage/bags.dm | 21 +++++++++++ html/changelogs/chaoko99 - pullbox.yml | 37 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 html/changelogs/chaoko99 - pullbox.yml diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 9d1365290c..eea992ec41 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -118,6 +118,27 @@ to_chat(user, "You fill the [src].") else if(!silent) to_chat(user, "You fail to pick anything up with \the [src].") + if(istype(user.pulling, /obj/structure/ore_box/)) //Bit of a crappy way to do this, as it doubles spam for the user, but it works. + var/obj/structure/ore_box/O = user.pulling + O.attackby(src, user) + +/obj/item/weapon/storage/bag/ore/equipped(mob/user) + ..() + if(user.get_inventory_slot(src) == slot_wear_suit || slot_l_hand || slot_l_hand || slot_belt) //Basically every place they can go. Makes sure it doesn't unregister if moved to other slots. + GLOB.moved_event.register(user, src, /obj/item/weapon/storage/bag/ore/proc/autoload, user) + +/obj/item/weapon/storage/bag/ore/dropped(mob/user) + ..() + if(user.get_inventory_slot(src) == slot_wear_suit || slot_l_hand || slot_l_hand || slot_belt) //See above. This should really be a define. + GLOB.moved_event.register(user, src, /obj/item/weapon/storage/bag/ore/proc/autoload, user) + else + GLOB.moved_event.unregister(user, src) + +/obj/item/weapon/storage/bag/ore/proc/autoload(mob/user) + var/obj/item/weapon/ore/O = locate() in get_turf(src) + if(O) + gather_all(get_turf(src), user) + /obj/item/weapon/storage/bag/ore/examine(mob/user) ..() diff --git a/html/changelogs/chaoko99 - pullbox.yml b/html/changelogs/chaoko99 - pullbox.yml new file mode 100644 index 0000000000..c1bd916206 --- /dev/null +++ b/html/changelogs/chaoko99 - pullbox.yml @@ -0,0 +1,37 @@ +################################ +# 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: chaoko99 + +# 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: "Ore bags will automatically pick up items when held, belted, or pocketed, and automatically deposit ore in boxes if one is being pulled." + From c5b8c5b4eb09bf1dd4ff5ccbc5ff0509314a00a2 Mon Sep 17 00:00:00 2001 From: Neerti Date: Wed, 17 Apr 2019 07:05:20 -0400 Subject: [PATCH 46/98] Makes transfer always occur if nobody is playing. --- code/controllers/subsystems/vote.dm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index ab65c7414b..e7c3d5aaf9 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -31,6 +31,24 @@ SUBSYSTEM_DEF(vote) reset() /datum/controller/subsystem/vote/proc/autotransfer() + // Before doing the vote, see if anyone is playing. + // If not, just do the transfer. + var/players_are_in_round = FALSE + for(var/a in player_list) // Mobs with clients attached. + var/mob/living/L = a + if(!istype(L)) // Exclude ghosts and other weird things. + continue + if(L.stat == DEAD) // Dead mobs aren't playing. + continue + // Everything else is, however. + players_are_in_round = TRUE + break + + if(!players_are_in_round) + log_debug("The crew transfer shuttle was automatically called at vote time due to no players being present.") + init_shift_change(null, 1) + return + initiate_vote(VOTE_CREW_TRANSFER, "the server", 1) log_debug("The server has called a crew transfer vote.") From b210ca4f7aa2e024cbdfd2b7fe23b736d87999d9 Mon Sep 17 00:00:00 2001 From: Heroman Date: Thu, 18 Apr 2019 04:51:31 +1000 Subject: [PATCH 47/98] Added changelog --- .../changelogs/Heroman3003 - syringetweak.yml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 html/changelogs/Heroman3003 - syringetweak.yml diff --git a/html/changelogs/Heroman3003 - syringetweak.yml b/html/changelogs/Heroman3003 - syringetweak.yml new file mode 100644 index 0000000000..4c0e623ee2 --- /dev/null +++ b/html/changelogs/Heroman3003 - syringetweak.yml @@ -0,0 +1,36 @@ +################################ +# 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: Heroman3003 + +# 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: + - tweak: "Syringes will now inject 5 units per injection and immedeately when injecting into reagent containers. Does not chage way injecting mobs work" \ No newline at end of file From 1f65d05721b5cdf9dde07682024c54dd9f8a878a Mon Sep 17 00:00:00 2001 From: Heroman Date: Thu, 18 Apr 2019 04:54:18 +1000 Subject: [PATCH 48/98] Added changelog --- html/changelogs/Heroman3003 - windowtapes.yml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 html/changelogs/Heroman3003 - windowtapes.yml diff --git a/html/changelogs/Heroman3003 - windowtapes.yml b/html/changelogs/Heroman3003 - windowtapes.yml new file mode 100644 index 0000000000..1333b0ac7c --- /dev/null +++ b/html/changelogs/Heroman3003 - windowtapes.yml @@ -0,0 +1,36 @@ +################################ +# 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: Heroman3003 + +# 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: + - tweak: "Tape rolls can now be used on tiles with directional windows as long as they don't directly obstruct them." From 5b3ce8dc046c101af88472e0f75b72fc5e0b3e5a Mon Sep 17 00:00:00 2001 From: Heroman Date: Thu, 18 Apr 2019 04:55:58 +1000 Subject: [PATCH 49/98] Added changelog --- html/changelogs/Heroman3003 - handsuits.yml | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 html/changelogs/Heroman3003 - handsuits.yml diff --git a/html/changelogs/Heroman3003 - handsuits.yml b/html/changelogs/Heroman3003 - handsuits.yml new file mode 100644 index 0000000000..88c31cc072 --- /dev/null +++ b/html/changelogs/Heroman3003 - handsuits.yml @@ -0,0 +1,36 @@ +################################ +# 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: Heroman3003 + +# 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: "Allows voidsuits to have parts attached and removed while held in hand (but still not when worn)." From 2c9658601227190681268a4bb91fe1e2c9c47839 Mon Sep 17 00:00:00 2001 From: Heroman Date: Thu, 18 Apr 2019 04:57:31 +1000 Subject: [PATCH 50/98] Added changelog --- .../changelogs/Heroman3003 - borgclimbing.yml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 html/changelogs/Heroman3003 - borgclimbing.yml diff --git a/html/changelogs/Heroman3003 - borgclimbing.yml b/html/changelogs/Heroman3003 - borgclimbing.yml new file mode 100644 index 0000000000..d65dad24bd --- /dev/null +++ b/html/changelogs/Heroman3003 - borgclimbing.yml @@ -0,0 +1,36 @@ +################################ +# 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: N3X15 + +# 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: + - bugfix: "Cyborgs can now use ladders regardless of whether they have a tool enabled or not." From 992db2f87d82315fb2e8f02ddf4b7d2f8fc88d81 Mon Sep 17 00:00:00 2001 From: Heroman Date: Thu, 18 Apr 2019 15:45:56 +1000 Subject: [PATCH 51/98] Removes redundant fix --- .../structures/stool_bed_chair_nest/wheelchair.dm | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index fc0b02ebbe..e5eba3f20a 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -5,7 +5,6 @@ anchored = 0 buckle_movable = 1 - var/move_delay = null var/driving = 0 var/mob/living/pulling = null var/bloodiness @@ -30,13 +29,6 @@ /obj/structure/bed/chair/wheelchair/relaymove(mob/user, direction) // Redundant check? - - var/calculated_move_delay - calculated_move_delay += 2 //TheFurryFeline: nerfs speed so you don't go like Sonic. >W> - - if(world.time < move_delay) - return - if(user.stat || user.stunned || user.weakened || user.paralysis || user.lying || user.restrained()) if(user==pulling) pulling = null @@ -65,11 +57,6 @@ user << "You cannot drive while being pushed." return - - move_delay = world.time - move_delay += calculated_move_delay - - // Let's roll driving = 1 var/turf/T = null From f970a1892de2385911b66cc5ffcb10dc0ab990e8 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 18 Apr 2019 02:01:53 -0700 Subject: [PATCH 52/98] C h a n g e l o g --- html/changelogs/Mechoid - OrgansAndChems.yml | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 html/changelogs/Mechoid - OrgansAndChems.yml diff --git a/html/changelogs/Mechoid - OrgansAndChems.yml b/html/changelogs/Mechoid - OrgansAndChems.yml new file mode 100644 index 0000000000..0cc59e11f1 --- /dev/null +++ b/html/changelogs/Mechoid - OrgansAndChems.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: Mechoid + +# 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: "Reagents can now have a list of organs specified to slow their processing." + - rscadd: "Reagents now process in the bloodstream at a rate determined by current pulse. No pulse, for any reason, will cause slightly slower processing if your species has a heart." + - rscadd: "The heart organ determines the 'standard pulse' if the species has one." + - rscadd: "Modifiers can set pulse directly, or shift it." From cdf63b7747cacf992220dcd6b8ad1a79ea2820ff Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 19 Apr 2019 05:10:34 +1000 Subject: [PATCH 53/98] Fixes police tape not appearing right when used without moving --- code/game/objects/items/weapons/policetape.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index 0556fd54a1..61162363ee 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -157,14 +157,14 @@ var/list/tape_roll_applications = list() for(var/dir in cardinal) T = get_step(start, dir) if(T && T.density) - possible_dirs += dir + possible_dirs |= dir else for(var/obj/structure/window/W in T) if(W.is_fulltile() || W.dir == reverse_dir[dir]) - possible_dirs += dir + possible_dirs |= dir for(var/obj/structure/window/window in start) if(istype(window) && !window.is_fulltile()) - possible_dirs += window.dir + possible_dirs |= window.dir if(!possible_dirs) start = null update_icon() From 1ed8d06a92b30db9f874403824ca955341566ef8 Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 19 Apr 2019 06:07:13 +1000 Subject: [PATCH 54/98] Fixes copypaste mistake in robot climbing --- code/modules/multiz/structures.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/multiz/structures.dm b/code/modules/multiz/structures.dm index eb88365759..104ad28136 100644 --- a/code/modules/multiz/structures.dm +++ b/code/modules/multiz/structures.dm @@ -68,7 +68,7 @@ if(target_ladder) M.forceMove(get_turf(target_ladder)) -/obj/machinery/power/supermatter/attack_robot(var/mob/M) +/obj/structure/ladder/attack_robot(var/mob/M) attack_hand(M) return From c5254bb7a8bbee90737f72bd5c70c6a020c47ea7 Mon Sep 17 00:00:00 2001 From: Neerti Date: Thu, 18 Apr 2019 21:07:11 -0400 Subject: [PATCH 55/98] Makes gamemode player requirements be able to be overridden in the config --- code/controllers/configuration.dm | 29 ++++++++++++++++++++++++++--- code/game/gamemodes/game_mode.dm | 4 ++-- config/example/config.txt | 6 ++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 5207499b53..3453f16d41 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -57,6 +57,8 @@ var/list/gamemode_cache = list() var/list/modes = list() // allowed modes var/list/votable_modes = list() // votable modes var/list/probabilities = list() // relative probability of each mode + var/list/player_requirements = list() // Overrides for how many players readied up a gamemode needs to start. + var/list/player_requirements_secret = list() // Same as above, but for the secret gamemode. var/humans_need_surnames = 0 var/allow_random_events = 0 // enables random events mid-round when set to 1 var/allow_ai = 1 // allow ai job @@ -248,9 +250,11 @@ var/list/gamemode_cache = list() gamemode_cache[M.config_tag] = M // So we don't instantiate them repeatedly. if(!(M.config_tag in modes)) // ensure each mode is added only once log_misc("Adding game mode [M.name] ([M.config_tag]) to configuration.") - src.modes += M.config_tag - src.mode_names[M.config_tag] = M.name - src.probabilities[M.config_tag] = M.probability + modes += M.config_tag + mode_names[M.config_tag] = M.name + probabilities[M.config_tag] = M.probability + player_requirements[M.config_tag] = M.required_players + player_requirements_secret[M.config_tag] = M.required_players_secret if (M.votable) src.votable_modes += M.config_tag src.votable_modes += "secret" @@ -522,6 +526,25 @@ var/list/gamemode_cache = list() else log_misc("Incorrect probability configuration definition: [prob_name] [prob_value].") + if ("required_players", "required_players_secret") + var/req_pos = findtext(value, " ") + var/req_name = null + var/req_value = null + var/is_secret_override = findtext(name, "required_players_secret") // Being extra sure we're not picking up an override for Secret by accident. + + if(req_pos) + req_name = lowertext(copytext(value, 1, req_pos)) + req_value = copytext(value, req_pos + 1) + if(req_name in config.modes) + if(is_secret_override) + config.player_requirements_secret[req_name] = text2num(req_value) + else + config.player_requirements[req_name] = text2num(req_value) + else + log_misc("Unknown game mode player requirement configuration definition: [req_name].") + else + log_misc("Incorrect player requirement configuration definition: [req_name] [req_value].") + if("allow_random_events") config.allow_random_events = 1 diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 29139b3a3a..140c4b133c 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -146,10 +146,10 @@ var/global/list/additional_antag_types = list() playerC++ if(master_mode=="secret") - if(playerC < required_players_secret) + if(playerC < config.player_requirements_secret) return 0 else - if(playerC < required_players) + if(playerC < config.player_requirements) return 0 if(!(antag_templates && antag_templates.len)) diff --git a/config/example/config.txt b/config/example/config.txt index 74f1f767d7..266ab33a83 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -124,6 +124,12 @@ PROBABILITY LIZARD 1 PROBABILITY INTRIGUE 1 PROBABILITY VISITORS 1 +## Overrides for required number of readied up players for a gamemode to be able to start can be defined here. +## If it is unset, it will default to the requirement set by the gamemode datum. +## Note that this does not control the required amount of antags for a gamemode, and so a lower number may still fail to start if not enough people want to be antags. +## By default, this overrides the voted gamemode requirement. To override the requirement for Secret, append '_SECRET' to the end of the first word. +## The format to use is REQUIRED_PLAYERS[_SECRET] [gamemode tag] [number of readies needed], for example, "REQUIRED_PLAYERS TRAITOR 1", or "REQUIRED_PLAYERS_SECRET MERCENARY 10". + ## Hash out to disable random events during the round. ALLOW_RANDOM_EVENTS From 1f9fe948c49a10d7c700d06946b4cd9d14065b09 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 18 Apr 2019 18:51:23 -0700 Subject: [PATCH 56/98] Sterilizine Hurts Slimes --- .../Chemistry-Reagents/Chemistry-Reagents-Medicine.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 38f0bf5098..25fa132712 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -966,6 +966,14 @@ for(var/obj/effect/decal/cleanable/blood/B in T) qdel(B) +/datum/reagent/sterilizine/touch_mob(var/mob/living/L, var/amount) + if(istype(L)) + if(istype(L, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = L + S.adjustToxLoss(rand(15, 25) * amount) // Does more damage than water. + S.visible_message("[S]'s flesh sizzles where the fluid touches it!", "Your flesh burns in the fluid!") + remove_self(amount) + /datum/reagent/leporazine name = "Leporazine" id = "leporazine" From a12314cdc7da0d083038045d980c3a2da32af631 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 18 Apr 2019 18:54:47 -0700 Subject: [PATCH 57/98] Changelog --- html/changelogs/Mechoid - Sterilizine.yml | 36 +++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 html/changelogs/Mechoid - Sterilizine.yml diff --git a/html/changelogs/Mechoid - Sterilizine.yml b/html/changelogs/Mechoid - Sterilizine.yml new file mode 100644 index 0000000000..51ea727eb1 --- /dev/null +++ b/html/changelogs/Mechoid - Sterilizine.yml @@ -0,0 +1,36 @@ +################################ +# 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: Mechoid + +# 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: "Sterilizine now hurts slimes, similar to water." From a5136b02e22cd9ab8a569c95ed35be13b0e43830 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 18 Apr 2019 19:45:29 -0700 Subject: [PATCH 58/98] God damnit past me. --- code/modules/mining/ore_datum.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index b54ac6c5f0..e578902104 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -140,6 +140,7 @@ var/global/list/ore_data = list() compresses_to = MAT_VERDANTIUM result_amount = 2 spread_chance = 5 + ore = /obj/item/weapon/ore/verdantium scan_icon = "mineral_rare" xarch_ages = list( "billion" = 13, From b477178fdfbbad50721c1ecbeab8c2ff39d050d9 Mon Sep 17 00:00:00 2001 From: Neerti Date: Fri, 19 Apr 2019 01:55:08 -0400 Subject: [PATCH 59/98] Hides AI Shells from the manifest. --- code/datums/datacore.dm | 4 ++-- code/defines/obj.dm | 4 ++-- code/game/world.dm | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 45d50ced1d..1ece4c93a6 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -83,8 +83,8 @@ bot[ai.name] = "Artificial Intelligence" for(var/mob/living/silicon/robot/robot in mob_list) - // No combat/syndicate cyborgs, no drones. - if(!robot.scrambledcodes && !(robot.module && robot.module.hide_on_manifest)) + // No combat/syndicate cyborgs, no drones, and no AI shells. + if(!robot.scrambledcodes && !robot.shell && !(robot.module && robot.module.hide_on_manifest)) bot[robot.name] = "[robot.modtype] [robot.braintype]" diff --git a/code/defines/obj.dm b/code/defines/obj.dm index b7f4eb2243..6c3c26ef3a 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -143,8 +143,8 @@ var/global/list/PDA_Manifest = list() bot[++bot.len] = list("name" = ai.real_name, "rank" = "Artificial Intelligence", "active" = "Active") for(var/mob/living/silicon/robot/robot in mob_list) - // No combat/syndicate cyborgs, no drones. - if(robot.scrambledcodes || (robot.module && robot.module.hide_on_manifest)) + // No combat/syndicate cyborgs, no drones, and no AI shells. + if(robot.scrambledcodes || robot.shell || (robot.module && robot.module.hide_on_manifest)) continue bot[++bot.len] = list("name" = robot.real_name, "rank" = "[robot.modtype] [robot.braintype]", "active" = "Active") diff --git a/code/game/world.dm b/code/game/world.dm index 4bcc4c8f74..da14592a2b 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -181,7 +181,9 @@ var/world_topic_spam_protect_time = world.timeofday positions["bot"] = list() positions["bot"][ai.name] = "Artificial Intelligence" for(var/mob/living/silicon/robot/robot in mob_list) - // No combat/syndicate cyborgs, no drones. + // No combat/syndicate cyborgs, no drones, and no AI shells. + if(robot.shell) + continue if(robot.module && robot.module.hide_on_manifest) continue if(!positions["bot"]) From af4ca9938eab9984f980cbe9c9d6483aa14de944 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 19 Apr 2019 13:51:21 -0400 Subject: [PATCH 60/98] Ports Baystation's SS Debugging I was not able to port the VV_static part because, as far as I could tell, Polaris does not have an equivalent to VV_static. Review this very carefully, I barely understand process/subsystem code as is. --- .../subsystems/processing/processing.dm | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/code/controllers/subsystems/processing/processing.dm b/code/controllers/subsystems/processing/processing.dm index c5d6dfa126..22975f9ff4 100644 --- a/code/controllers/subsystems/processing/processing.dm +++ b/code/controllers/subsystems/processing/processing.dm @@ -9,6 +9,10 @@ SUBSYSTEM_DEF(processing) var/stat_tag = "P" //Used for logging var/list/processing = list() var/list/currentrun = list() + var/process_proc = /datum/proc/process + + var/debug_last_thing + var/debug_original_process_proc // initial() does not work with procs /datum/controller/subsystem/processing/stat_entry() ..("[stat_tag]:[processing.len]") @@ -30,6 +34,32 @@ SUBSYSTEM_DEF(processing) if (MC_TICK_CHECK) return +/datum/controller/subsystem/processing/proc/toggle_debug() + if(!check_rights(R_DEBUG)) + return + + if(debug_original_process_proc) + process_proc = debug_original_process_proc + debug_original_process_proc = null + else + debug_original_process_proc = process_proc + process_proc = /datum/proc/DebugSubsystemProcess + + to_chat(usr, "[name] - Debug mode [debug_original_process_proc ? "en" : "dis"]abled") + +/datum/proc/DebugSubsystemProcess(var/wait, var/times_fired, var/datum/controller/subsystem/processing/subsystem) + subsystem.debug_last_thing = src + var/start_tick = world.time + var/start_tick_usage = world.tick_usage + . = call(src, subsystem.debug_original_process_proc)(wait, times_fired) + + var/tick_time = world.time - start_tick + var/tick_use_limit = world.tick_usage - start_tick_usage - 100 // Current tick use - starting tick use - 100% (a full tick excess) + if(tick_time > 0) + CRASH("[log_info_line(subsystem.debug_last_thing)] slept during processing. Spent [tick_time] tick\s.") + if(tick_use_limit > 0) + CRASH("[log_info_line(subsystem.debug_last_thing)] took longer than a tick to process. Exceeded with [tick_use_limit]%") + /datum/proc/process() set waitfor = 0 return PROCESS_KILL From c465391a247b7147665c7df4162956f004155c10 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 19 Apr 2019 18:42:01 -0400 Subject: [PATCH 61/98] Changes crash proc --- code/controllers/subsystems/processing/processing.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystems/processing/processing.dm b/code/controllers/subsystems/processing/processing.dm index 22975f9ff4..ef54b8a4ab 100644 --- a/code/controllers/subsystems/processing/processing.dm +++ b/code/controllers/subsystems/processing/processing.dm @@ -56,9 +56,9 @@ SUBSYSTEM_DEF(processing) var/tick_time = world.time - start_tick var/tick_use_limit = world.tick_usage - start_tick_usage - 100 // Current tick use - starting tick use - 100% (a full tick excess) if(tick_time > 0) - CRASH("[log_info_line(subsystem.debug_last_thing)] slept during processing. Spent [tick_time] tick\s.") + crash_with("[log_info_line(subsystem.debug_last_thing)] slept during processing. Spent [tick_time] tick\s.") if(tick_use_limit > 0) - CRASH("[log_info_line(subsystem.debug_last_thing)] took longer than a tick to process. Exceeded with [tick_use_limit]%") + crash_with("[log_info_line(subsystem.debug_last_thing)] took longer than a tick to process. Exceeded with [tick_use_limit]%") /datum/proc/process() set waitfor = 0 From f41f9aef98c43559b8dcb68da891c66eac7cabf2 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 20 Apr 2019 11:38:02 +1000 Subject: [PATCH 62/98] Fixes nurse spiders getting stuck in infinite loop --- .../mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm index e0fa9d4f21..477fefc81d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm @@ -137,6 +137,8 @@ if(large_cocoon) C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3") + ai_holder.target = null + return TRUE /mob/living/simple_mob/animal/giant_spider/nurse/handle_special() From 5b88eb10ca4aec5f02125cb024c546be2e20744f Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 20 Apr 2019 13:17:32 -0400 Subject: [PATCH 63/98] Ports Unathi Voidsuit Sprites From https://github.com/Citadel-Station-13/Citadel-Station-13-RP/pull/1274 - New Pilot Alternative voidsuit sprite - New Explorer voidsuit sprite - New Captain voidsuit sprite (Not used, but, might as well if we do add it at some point) --- icons/mob/species/unathi/helmet.dmi | Bin 41933 -> 43694 bytes icons/mob/species/unathi/suit.dmi | Bin 73289 -> 77926 bytes icons/obj/clothing/species/unathi/hats.dmi | Bin 19805 -> 20632 bytes icons/obj/clothing/species/unathi/suits.dmi | Bin 22848 -> 24157 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index de17a80f86a1241d208c474afe8611c71fb18eff..4bc29021bb81c964de31da8b5225d64f38442663 100644 GIT binary patch delta 23531 zcmZ^K1yoegw>J$csWj+_fC$pvpp>+TbV+wf$8bR@=~5b$?vQQ}N$KwH9$`RW;=BCc zd+S@@TkD&(2F{#w?##XW?7h$LxA#87eOMLKSaD34bMegFx=R)V-;?t8C$HkHRO>Bs ze&z<97XC{l-}Zwa@82HCab)Wp6N_jNmgq!so!8GN4y(Zr4$T*Z^SZV-6$axp;0H0b zDN;=QUXJEp5)Yf`qcOFJl378C8gNcI8F6+jpbk%kU7qM!a8^O>z64ojelQCdh3Xa6~5JpkfrQF z$>w*(*9f}OGtBv#%8hfn7y9Y3iVgn;u1f{A4~rI*no9Q+*qy5c7^$x`o@|m90Bi$9 zuzc0Vw@S`G83;W}_f+0lC|GFXDkXlP-68SwO$^N3Qx)XSzei|yw$0#jhUaiN^G8u5 zYbn#A2kJ6G=%kA;aCQ7%%Jh)llA)QQ7ha#yDJyBk;p-zyB9=js%e! zx14oVy+K!Oe~8(K-+v)%kgzu%ogy<`s@j6Tb$nZF=pvsGm*^~)rF+zzlkzMWJSdzE zFnGd(J;^ySUEQIh&ZS)EZ(Mh(#-78bVW?_WgT}m8b|8r@5k>#Aei|PveQEKgp9$|_ z)ay5MAx{Tm$SHdCUsCkkFE7$EpsKx3Vxyt#Sf}j}q;F_rOVO1dznq;U!LBEZh54G7 z!Sp8!6H`hj63HWyoJtzkxkQ(AbuKQ+=XSCcu&h;Q)c|(Yd_=9G{W$xk2FM?n1k%Z!=-|2jTPMQ9BI{4RUhwv!r9oN%U}C9V%q) z%Y&_L-}uZX*PNMRO%^*lJ8!^pPHA$J&j5He!q3rBgcJDp??;SJpFd*~>@SgZs09=- zqi{tgYZub=2V=5rc(V4wxx3B(>$karPrI)H9*VfhQpg_$!Sy4erg`p-XbZ>g3->?a zAp^A3=5KmiCr!@J;nPyHGt<>OL74?e#>SO5nsyMR+uq*B!N;!&v`riTV$zcn zv*^@t-jmzpl*T8dHZ>HU&k=vV%4b-GNz=|fZ)VF20fqvCe-VY;2!`cSmkMO`_rKAW zx}=hCH7&bt+%HH6-l(WdE&lxZlloi@7>>dzy1;z+=+VI7;Kbtal-IQ9vXwhwMPKFH z>Xd1GMk@GtZ#3QRr4O=JqQL0r#8^cBaJDjgao6(EY>IF7j zZ*_IO2dKXPdcEs|sw`@#4NYY6xk6qUAhPt3QszCR!<3JK=w&DTjC*I>Mqc)p2!G0@ z_MS6pt1{{w0sYpci^59!0w3Gx&^@kxTcs_S^~H4kToJ(-Z4jS)fB)}OJIU5Gck|q5 zOJ@2mx0I2*O1?)=0&>)8sY7#RgJ8iq$t#g`(cX^A@}jHImI zx|cKTn4bY_T^R0rW3SZxS=6&|J{-=JhpvPO&FZ8SpY9$ipKe(QLFLTMo;kN)7nt%y z`4o0s?&Zd2S^9U*wpyTBv(a!})rctCQ_pPR=v%6&@9pS5*}!MFjZHGQz~Gk&>#%nzn)GjTEKY<-DzE zYfu8r%q-X=!7Z+TJVS|S@{&<}6O%*&3`&4b?`)vk;45ZSfMT1G{rZUS8f? z&BIpD8XTX0_JWl#oMs_eW&OOt!FA_5;6 zVam?PpvMR$ejL%gKDLP7qE>>j?Y>vB#}Si{U31S!O01<`N_~J+SsI|9~i-52CST(X>rMY+x)2%qlu|mBi+sjAJg;8h9|ev?lL$A zYyIopR*IRAK!d*Oxh+O>mjMt&-{txWOmq2S#rH^Oa#SlG#?Q>me94!|q=hW9e#3JLV~pCGjV=gf znQt+ruMqy9Ho#RKmw^Knr_MA*&^Q1Bxj=t3n4S3Xo4F4XmvBSyWQ-Jil0K zYAT$p2>OyEog>XyRdZcFokZ9T1^MSmlzF(oR|fSvm~q+;JZ1IWGMeA*xcZS>kcnOi zi+SDW`9uWG)rvLosZwJ{W^%011j7o^5@Dq76M$53G|Egnp(Z@rfNDN8@xE$f5Bxi* z)Sb8%kMM8%1-v!TDQsw%vcj=LS4=+US`o5rKKM*^nx61)T1GEaYkwxJ3~k(%dV03%2pHy`|3MzP4-p>#}1$0=qwivtfTu5zbNjuNs;!k4lQx&a?`N zB+xC;MIa`?_IG*@n zB#p_@EvTV=XQMRiC%aI4W>JtEEfaG|(7ZV>p>n4Z#KmBjdnXe$Vi(tSQ=uQw-tO)Q zL}3eHIw4K->VMUZ`ni{E>=ko1!?=CPO46`70an%@UZ*P-R#rKZ={)#lYO*@z-xi{_ zz8qiK9z2_C@p2aBFzF(Q3?WME{r2y~x5Jw)D?akZ#x7gtBk{hzK%&#^t<_F9!USi(x6SwE%B|zSxgOK2L_PE!q-g)N;z0f-%0lF}!ual~&)osiBKQ(r1}ej_2!l;pG%$+S@tzXZ^) zRYzz!*!r4i>b}v{O|gwU{rDi_jgnGMb6JX7K!DRCh%E;C`?F$& zB2ZRZ^ZqrxwmV!=z+^+2Jb7)h2T-g_wM6gEI$0(=6G%8cHlMp*-JIb;>`n^Mmz4H- zT{x1@=otUKUM(s7Fm($$D&VYeSqAPn=-;@pe-QR^II&G{0R1tKBet!)_7vRTU$U~g zKL4#%s-pTSneO1^w}&L9I3QHOS#|IlLPoX@dv_Y*a-LqD#>;RY9p}Q!%S%`(`2xxH zWVntWxOiVjS6<2Xw5zM@y^i)z(@E`Rg23}?-Q1{7&_UNO6|g?f2Sm*FJ|M8M;ViC0 z+zcO4*{}ZNQ4&_GGg)_mi!YP>?xzRw;C6*)0XG*pT8Ul6nk*?{>(uRL$jIix`erAj zqbgX3UVL36;s`?^x8Iz%aOJ85>4~oP3_JIV&N5C-je$^4(0Ron;=0lB?eo0mp9vSv zm*zF|7x&}Fk-&Gt4?aF3o-LVMhZS8?+++Ob>k%1fwf50npmZiMN;jp9wfhI@CIi8z z)W+wpY95|$_uk$7L5b2}jM%L4yn~?T%=aP>Zo6jIyc#YPW>7&o$$HqUQnU&8r>6vt z!{A*Uc$w>@UEAE7hFDRP^0^1U#O8Slj(vKXqSkW1o>-a`=M`!2OOixx>uBI{rSkP= zvL{-_ul*FCQXSW=>5!{GwE%N!W(sR(a_pjBAF-3fEi$>3{mU3D7K4`Op z4Yv{Rs3=R{gEvHL(T@SB036cUU7V{Tg0jsntSzeC;C-M2ofQt)Ti`{hRb0SE{rP?! zPnV&D4AAc`4Qg5|>&rGaPGQMf-WoNCjlP+1Ntip@#QiiWIk}}REjsmP(7%<}AwPYw z<$73m*s4au*jUZQh5JED0gVy#ZFSLR{o=7d%%&oJXDIrS0KjOjLDgyynz>OEeVi_d zPsiZ#>ZbB^uk=-%sqev-zHmUB+`bfd&+CDBd8C-BjvuVo4_eoUN9))3kzrwYQ{Wk1 z9IRua7XY6}_1NutTt6$qz5UW@;^VRt&M;iWm$dUObQZaS@=VCG@Y~(af-j3yzCT9fqk6JZvU9FlP^G<)A6*BHNG!yV0N*RC*^Xs%KcAi}Vr)HL*7^tiS#W;5Ik~ z@TUVBtHK|*3;LSmToRkmkuU7eyuYUbm6SSuTHlCsLi}+j=-L*4pWjMc?kfegBaVa! zit-k*@BsDq&Mfk_EHGMQh5wx$E+ZOsOlT|WvEt&hoQm#g+_dnv<2@A?)>TI!6MR#1 zvO$=(Gn@|kwI2mD^IjmW$ru^g1sXXr?kLvGhZoor^TsMI!8V^hXL@C3A`llTcSfuW zXtREx5bxBT& z)7Po6`i4~v7_0dDh?MAW*iKxXuoTpf7k|whMbq-aNCCYOli}!L_X*=V zUd+ZIx_=NfBT+cei&@DL49n8?m<8;l=|OAje3=p6`Sj!CK4C-Mt+M+LDtsz{iI${; z>%Aiv+lHPXY@$3mU8SpV#1$UxFkGDjHiD= zv@^-o@bU1h%NyHr)pNSRM`+OrCzfc*F%{G;zg-FI9JjVjoUhcM3EQwEIRhR!KNNmT zJ0y|#+(oz}a5n%g2pOf5JvOrc@j(2_Q>^=9m9}Gq_w>gkZQqA}K;9MTb6ZTkx{z^? zjM>QkBh}Z!D&N?<3A)~02wLj>5=O4P=_tM3-oHg(=Ly}07~5BLs*eG=Q%mJ}*q3Nf z`JOSNdoTp1-&(WuaZmHnbFxpYQfX<|&N<H5Q=ISGfO+op_=Hew%O|C@f zP2jiG=F{D}kmenr$xPtBdMwDw-hjKJg4nN@i+;F zIbP(9Z-nS*(u3B#PeCd`RP%Dv{s^}hCG-A)n$|C_gQ=L!Oo5f7fQU)#M~$Lvb8&1# zcOD{XoHc{<#jfhl>w+42)k05q7oI2boc&OHgy^5;Ss-@oo8#vSDP!#1AkI#n4;=JJ z7echZC#eulCEtZ$)kp(N*m1~`Uz@x|qf|)GbZf`(Yas)sxBoH$fVE7Leq_=MC*DN2 zS1K7G9!qjj$L78n&Gj}{&lk*7e~R5I77(9Dk*S_gNTcR=J4R3-CF)*HD zD9XNiPj}Um6|v&eG`I1v-^Y=mUj1QFs95^(0QaG=RpL~B^1sRgGW|x02MV|Ep ztzC&}TkE}^FTl&Yqp$Q?lvLj}0q%4A_E=sGC@NHIt(B+cF!sfjg*xqjAyv<%Tt68e zoLcmKepwLK6Fc#pIFQHQ)Npn+SUY1YP}@(NP@W6NIB8nvB~5MOjk+I}%b#d6|I4qF zXTbGRb8^)&GWDCyktW8Zrh?tFL%i?9cLTdsZDV6CCV@v2FUs?bNIW5BINzNOpN_{f zusdEkBT$u67ClrBp{Yh7o14LHz!ywHF9Q9C<+jSBW6ir|;kg+okL-$ou zVV-Smn22~NJ)7e%&Mn@|zP1W3m=Px|tC{5BeQn}UJi~a=9$YBd9y!m46fiKvLOTlY z*SD`@L{BKodcdJy}$)*Gd^k(~Z zcexhk{@8oWfv7K*{Q|SiP<2%@AG>2kwmFXnvdSsGZhPX)J#if3?NZGJoEwjfQSJNyk-0G+Bq zePU9Qth_wl05EH0-gu4irUrk!XFQPp3KWE8G> zhHMx`MC7zO1o)X_b@;(YLs=k!!DCpF&KoRgSJU&dznQB3p1Os{5SqGAzo=j1hYUXT zzDXrq_U5;Zs-VTql$nE8C47;}R@KPjD@Z9@Bs>h`2mDAi#ps{^UQL!tl0AzJ82y!& z?893YUOXM9SYwj9iH4rE79t1j*P5KH2&Ce*9n5_b=j^L&5Uli8J& zHF^M@Q81`bRu?HbJ>k=*jUh8kMa_pQF9{5+x&K2Y{Ff9{MpP7GcPWVyI#R)nV;CZ# zbu52adjAawDW|`Fb(pKw62e;ZXP%ovs4 zDS0j=di@4-z(HBL@G#T92tDQIg-GTD77-@X&&(cPJP1JPI9J_%VD74Byg0p3YmEsx zMI<)#`dNu?tWRkyT;QKD@Ey{%m5Y0QJ|{->_Fd>k{QcR~enZpUhla4UxR!3`Nusjt z9;YmVj==zRcR%q`vL+2?gvv}hSP=8%_KRglI|5(lrbUGk#i1$ZCDoW zQZKM|jg4cLomj4$?axRE`Fs3d=-*5$s~b6VIA@x zHj;+d@IG^aSr00Cc*r3M@S{h+<*ZLkyFoGA?<0b1A+U(aMth@eDFwu|+D2N6^Dt2i z2f=h!`?ph~)B?-o6Z2H)K6%LL0rIPrr2cDo7!BTU!pE;be#4y* zDfnNUhk)vj9D3CS_pXoOK9NTVxdu3#@&UeyN<32PYnXIkMc2_}zqI{qw2Fc7`sW(=k?E6rPPex&%=;z8pu;u}qb z9?Q)o%SV;N^!f>BMXK*-lezH+ZOA{5*iZi{WLvo}><<;mfi$vUctK5^L- zyYl<7dfUE_{l4#N>Q~FEDzb#?0{M~;_>i>IWTQB1y%ebr`(gQS_eg;0Th3Kt-E<*a zBO29ObJ<~`7$sN_B_+Empqn9)-)k5QYjc= z1-|fb7_UNdPI=U~(tEBFo=88Q>YG~-j8a?mKhgDR&^E41esV1}y?Ch*04TnBLtsS{ z*C{cZIc+?@OBcoa)a7|Gc5ra;SSv{Y`j=aQabQ+}Yu1y|pgn+$ek}3lPhMyX*^UhJ z+8m|~!Gi~ri^@t${i=&t)b=<@sA!>;@b2~RwY5oOV{gl}Uz$MSUs-SN-Mgn-u8nbk zz+z=(U6;0{z+iSR+s783x&kCDRjGPO>{4Sl0GzQ?9%QjUggMz}^}4i4R5waNz77ku-seT0XWK@ne^NYJ&5k?cyRq!)@o(Cvp5&>x|94A4(d8tqc`J*nRpq7X>9bo8{5;AinavIGvfPssNb#_ z#HVxq_Y^!#i&{>Y^=kHc_KY#u9?z?+TxWR#8}t}X>jB+x0D?}04CH1_E&8=j82BN- z=yzWjJ@OmHy!TZLYeC_T?W4ad z4X>g&DtEf7sBL%|2L0#$l=_@5KE+m89XQaWc>AvF-Re`y_Y{1LPcwR$eW=na;1{DW%$j|c&<+k^3} zbI627lBAU1so7QhZsEZJcHvSJV`F2`lo}4g3#*7usZFC}bH{{IZelV;JpYmtWn$g^ zgFhD2+@p&UkgT{~ZdUm6g|I2_IC&8CSnL5hw*QRss{wStB~`LpV{JqXKqlB~_9(ou zfXc{^`H}eHiG(!u*n=u#m27@wbe%24w5#T1WwK6(mu&Xp*Gs{m7&1ZPWbNvX#th`` zRqh6F3D(6ti!$}ppRhjk7Jla+#)7|BwxvF|g_T%pn%qUnB-zlPzX^PVpgQN6apDJx zGVlh#NFDTa4(R4AFXIE?*JMK;7U`njv+6dMgVh!(SK>d}%OCoE3A0_f?7(IqukSEC zyPf$fIC+Dzv=EH*@-`74ZBNse*nTf5iI5Q>0#`iMaCgaxNkrod*!#i3&l;ZZ$Ks69 zTTim_RuvoUE?=<*SRnwCSDMvE!ZDiV`)yTb7pbr^|v@)8~{JjRUEqrH=d7( zRqF%g!t}&3kHrd{l~JQFPUz7XkR);2lzZ3Tw-k>@U?g#fYz^PVYV$r9VR~@gPg>8_ z=!yG$E?r=))#&bDp(C#@GR{PO6f(T%gI8GjLhJw6YaD7zENqPV;e%f-kjw>8S&AWr1=c2Wc4@F-K%|m zcH3rv>FwDqMNs>kl*Wq@99cQOl|Qg9OB*-~Hn%8CyZ50n;5@j(-AFG%AYG9Qi2eR= zj8}aS`>nqXO``FWu7t9AYe)Mhe=aKzC06b-{r0&Eu{q#E4|t5!|Bwm8;%*`?DJh|r z@FfQa={_PgZ`R5_l}T!K&0W5_@mtHeFfhW@*unl@^fRZ&lku%SXu;OV!i7zMFSEAQ zgs;gpx)07GRKdV;I{O=K1vIByDOWdMMiw?*@1!es*gyVC0{j^&HY)P}XE1T9-#09@ z>X5Rt9hhc3@JFm=Nk`jIWz9fmA8IDcycLw%G4US2Z}-rO{0gB+FD(4z&@CqKzxl#^ zHHeX3A4x4?-KI8`A+q&&fYEM*-gm?|Q>GMhHwez*E4$C@`3qn|w(&9?)Lnb#_P=Cj zEY=~xBcW47zY?lC$u+@V6I*}cf7%qb#*&p+R1`j$iDif`)6ybMKETH)6vKV{{=Mwk zBlQixQHg(Qjrf5c5M&zav(tyOs(2>&!7F3a`6f@Ffug}a(8m5ww~Vx$ut-4(11ncD zi*#_OuA(M%d;yHg4wUFxR$%mmm+GGSkeAikaW?AP-May}VWTOvN~pGbE`hiFr-lx- z?uxV)LVSMm`DEH-1+`z=+-|QjYz`+Ml|qXvCv!4Ow&SC^(LEJ)UmX@|zZluSgh5bT z8=HPr?)&eu0F;lqa?8HX72UozuEuoiK>#C{QU@?CaJ#LLPFdb7U9p+s_h01s|3{er zH(xF>iQ1YvQbHxV;1~WJ9lFIoX(E13U7G&woBY$+rgBWv?3!hp3Re1&k<5{U$Z0#d zN&faFgosxRaJNrVw0{Z_0%CSYVBYSk{gYfHlXvF#AUpJ;GK1tRgK zM$&wf8_O&?@m27ao_{OCJj?fh^>Ugde=VBN%M`aJ^Ry)v`uSdiquD_APIr}wuOZq{ z{d?o{<&XzdKjT8uG$u*eLe*y-@)-)#G%>rPlxSqbHV+j|l47!fY`$yorJ<>bO^Rb! z@{-`)tvdod_D+RpAQl~t4MowzegcT3a#KJY_Si2 zmsenhQFu-B5rB+HHXR3SgsNF=OwNltto~@Tq}z*k^`2{&dGPaj)!(ao^h+0{pcfBj zxYEM-bN4;#IwVicr&Y32O!{U=8=S~?LK4ys{r7&^5%pDHx%wBpMvVOsE?D{AKt&~% zvC7wp%?1VQQEs9wx+>s91O(Qvw0NeG@}i5=SNcDIRXc36NaeK-A{IT^+t8KqhK|fU zWPi(Ng+d8K4gE+ek}2U7)k2=l<$7mKo07l`|GU^r;4F1)?^?c2$TvVE+^4U6~gS1Gz?0?qwcU!*8KB%>H3 z>IPW$VE03$tlxA1>mthMaEg5T&D<$3j7B#Eb|BB;J8&<)caLN?I&6Ya>C{I%>Is$e zMtW4aVKR=mApWNx2e7^`X?*yD>kH0;Fx6h|+&oMIA|hsf{`bI*+z-i8+#IXlZ>L-$ ze9;)5mOEo4Z`9Ow@=o8VU1A}+c&v#7SpcPY3XB;O)Web=-LqpqoFrHtkW{_o3zJ4; z_{SuZ#>aiwgDLbb7j*#O>b{KZduS7q&84(f>b2?w0|T~HmRyA|{6t(lahZ6#=I-lO zCO@kSe;$3|0k{bIhM3v1Z-2S=5a&TVK705)KD{YnZsn1L8Hfz~hYb~Fe=%)@0$Ka^ z!!O^*$~^W1uN7ca=^sUA{baW+-f;DZGOKE%N`jT%G~T=%nP}E zyRJi6&}Yo>I!}g2-;1$+#*;_@6>U80Iv890T9RhvMi<53M#M6x0&-(bcv{gok|k;C z{avJkC4-GMXifj7b2q*`Ox??Wc(0Mod)XcSOaCHbb82UdlzTMv5BZ;U->R=ES9-mO zWXH}r58pxcbFsn)ExcjazEUj*w9$724f#@euKAG8TBcVUiTs9Nzza04diY~IEW?Rb zzA}d*DMOViIA};`br>}iQSaXh7pm_*w28F5+BqgX@yZ}RGMkMs&p08MZb@UCm2#^s zP(L!sdSU1L={ezdBUOr2x1F(yf(QnQjLmkxSs|Po{I}+#+p?A-S`@vUy~cjK>6Gxj z(&k&8qKM#|toR$Udx^k{LE{t8!c#lKD1Y+H!`%lQN-ud&*4rhp;>|efZf4nYmcMgWRwM_eQYFOWYb)RtO)j z8Z3~LD~G);kRc-_?F`*7M-wGzqe_t15)Wo*!9cRQNP22Wg^98n&19xv_;7w^}tg1se+}jO0YeUV!1uWtO zXCzN|4ygaeY-wm6tJH71CBuJw9k?`mtI1GufVqPrP5UL-Y90)4mkcSy9xdZLwuoeY z`ZN&e{4R|;9og;0U^bM^ZY;yT*Rr4MW6$=It+=Elr#E2dDr`aP+nTqRdfqtlSm{o` z^IR)QZB(E3r%8t}rYk83f_oHg8iEsl>f(WLDal}P;G{dbC6@xtj~s{Hi~gQ8lAf*1 zQ(JIW^Rdt~(}Z-V^{&b){w$tV`52iF;JSKY?1zkqJ9qMlYxT`xfol33{Cx%M=BjhR zk>2&LSzX60o-FJzw$HBOkkha*O#I7XZXHM-5U`kOsl7+WjjcAQ7V=@2Kv)NkuZS5) z|2Gy`!Eg6$I3eb@n*-EgwWKjplFm5zUJe)OEL8;V=~t_Nceo@k`c z?$VW)Bf9<2WPg+EF7y+lts`xP6MX*Bf&Pw2yS42#P_V@$n{TF&kvbL4fJls8@8RSI z50~D<+-OJ0#pju@mwt%!#2M}!)z}UWI29NTo&t322zgODEB{8{Je~$}W||g&7dL$G z6l~>f{=3feze)NC$m7JRDZ6W$@D zCtd>y)W;wfq)gs|tu$CCAd^Znpw*2`B)Kn1`LKRfj%{56~=YLD~V1OhUdSJ5mB2g4#vEI0{SMgwz6-Z`acM~%hk8K7fJu^csrXS7=Qhv0gk;;ET;f{E(CSIgN{Jx3V6_?j#*mrC~)p;48E^%DDpKc8&F!O{ir*>R9l7f$R z7xx&{qUfYKH|47I4v=*D_lMk+)xjO>`R{r&*e_myv5IYb$!VI zCptsR&%eoOjU3g|g2{Ixd$+=1Gw2Xc%{7u?`N@z6cHsw$znGvTd=N&79acTZb%%xa zM3t`*C&_7eYCz2o!nmGw#8LC|3qvBcuG(>O6}sWpMFGc^W2(x<5`m{-cC;9KD+B5G z`bwxz7dx>cFqaa>KwaR-dLtPTa1Mqwp)pqy_c}kZ6XTVXQdO*;M6FIi|!Cd_Ap9B)AEffSj z=eP*ArdGKI4@zk~SdP-xMyUEaQ$!iJED@Dwuv52g8zp+{bP^ZZAW5MpLD^ZY&3E-C zZ0CT}EdRUA)7%q7BJvOI3Em`Jw z%g#(Qs>C3?9&-*TqlB#H3by^vrH88rE%{V^{Q2T4@W%}mFRK1a zacFFZqnTZLl$12Gnh2w8C1Z1@LbCK&-W3^W@r+T7Y_9R^P_FR}046uSL>>KxV z83bp1>%PXtAf)3@xdjmB6USYlOVNM+Wdn#^lpX8KtWiNGyg-UkYrZQTW!p$tcD$%k zx|ml5ivyujB`=a{d+-8em}V?(+Z zZ>PN>+xANf2bik_bPJeI>W84tQuw@4s*(}Ee$nziHvQeBfA0Z|g>y!!fH4Z}>aIgK zA>5Eq&=POp2Y7)3Oi{7BL|AJzIpo9PJ@K|gjJ2Z?8QXBM^B3(yJn0VO<+qv-ht2u1 z1W?W-e|BPcoMD$$4i<>a&FsC^*f7*WUtCZ1-DLpS4wFR(IEtcNJo8^c!9tx-`RAN?g8|_|SdP?)XvM~-8%bK|hyZbv^uvz(LwBom9 z$ILP3D)`r|7jacz>z>sl7HraXP2^gwjfH?>zWF2kI~&p#qm!KPcIrKPsHVK+SlzZ; z2>sWfSGL;tb-TC}bC1?)d)m?x1CW)!aT`j@K|)mpOc_vlecl!19WP2N>lsIr6MouJ zC+3Jea!P&Djp#r<4#ZSkZn`=dNBpC5^C_LD_KCPSQu;+{pTu2qqR579n^zqYu!~HgP=hyKVCL_u(X!KL|9= z|1MY91#2UC?FR)yCGVZN9K7I|*B$}9vfF016`*a34fy6;n$$jDvTfvi?vj&llaf^r z`jo5mps;=3jj~fGW#ubfc9O!F3H>zVBB^>zpd~j3=CxGWM^2U~tuo`ti|R3GmieCy zI-W~@EV|73$vAi>g4rnR6A$M@d;VWB!+lN-d{@mK)HCRsb{|B>f%bX z7ZMwi!!!O8U^*?l4@{~h1~sn(!KwIvZXXT-2$OIj#en* zzOUk_h%h5cztni|G`GB2rDI)GK(nk#_q2(6D|^88bibsY?IFrZ&7hBQbG7~jBi0Ue z?4NkIRIgwwUq!QdHC4oW>*&u6&o!Yab2AYYFK4~)A37ltEM!`$tyE$(WRX{4RO{`ogb z2t<9fjOW`q@|fgRhYvf3h=>Tr@4h~4YRWJ&-zSxULvJ4E4})(X-;Rn~XVqI0xz)V@ zIJs5Ny!E`SD$=_4+n$Le4`QQZwxP(Q;u7)+_1o)F-Ivqn#+SS8zlywdZd!qS$JO?3 zj%#d{GGOi}^p;rrrq$90atz)}xk<+lIVAj0Xz$*F&E@load0Rfyum#yjEvr=EG&I- z!bvbYMd$ocgM}VDeefU>7i*PIgFUS@h*f+SL9-@w`*eq1IgZhW$5Kqt+22mR)%AEa zW|{*P3g{oci$R&`0LGl#l~VWZ*2nSFz1_lw%%XAu)ea8xe?36u>}wgBre<>njQz_G z369$s^de-6wzjOm?YN)}JU1t2Z{p-k@1{@9EBE{NPHyOI@Ds`nbwxb^se{9E=j?Bd zi&KYPIc4p>;^^h&?|pf?J|^E3HuXTkY8xAOVL#56+6`C*L|_S&^z`oEUY+3#zl3}? zJ}QBrFR5bm-$%*oyha&{YevS@YZ&-p1%fH1018w@dRF14P4Pjl8JNMt>>RCRyuQAy zF}vpETnMbS5dZEt)EDA(^`3AoAcLchro7U|p3%%o9QsXlO7!NM%)=2<*5vkO-;Uw5 zD3sBY689Fkbjhio8N=BtS%o?JOA{X?a(p z63z?Re3!xeuL;dQX3oZ1df9kAm)Aj`onkD;6L>_l zdm4|bCU!Z71)8$dO=xf!RpLsoU%Y&2zQ4L6btuM0>~gu7e<^bgZKUPu*)myDe)FbZ zE;UYDz3UFTUbdLn`I2fx&OG$kwS%_sK9?Wc4INLeMTY&pbM=mnl0z}M?aT6NQ#0?X z0B4ezIlU$RqVZw>sfI-xZ$gdPO9rI}H|*&}%lt+0DHW6rn_94>S*U4Jt(t~U8>)SF@D)crot%#kje?r&yRD*b4cEWy z=bFaGRw@RJ%y4=nxu{@P2MrkYR{wmsOmJ7Pv#yDuWNxS=-Z!Y^4PUi%;_)D= z@f9bY{fYig)nfMwg>o8@>R(;u;Asw6eFWO!qsNYu@V3^r7wjB8aIJj>g~f|HvaCFx z4U?OOt1pB^%>Ap7z^4H4Oh#t8efQp@nI-?)y!j=9I*WHBJ-BqFmg4NhK$Y+avTcWg zOr3|(BT3Nf#8Bq)n03Jp`DZ&=gQw)Ten}6gAm6aXgkWnqypFpTCTL#ii8#CzAw7G&#<^^zfURG8WbB#@>uM~S6`n+ zSU4EWf-VQ=S?e@w8GrgLLpX`o7$D7irIHqihj5?3kzB4)UDf8bXOaAK)vOxrohGLT z70BN9V@<8obiQ@(77SP*pS-ID1VM7_p(uS1#tkhHTdA|t;;557?Fomf$0sJr1hgB0 zr$7MTTHDbOicqzIdAJCq;wZ#NAkn<1#r~Nbbps)=i z&a!+hP9tMs^8##d_)Tl!T;FPHK&=KjL`1$I{Kdw{>uU(tum8Q0z%_4JTo-k#<-`Z8 z4R)qREoBh@awg*JN1V78Ny1iRx!*19UT|ZyO>F3gyj>jX6o{E<42y8tk98__;wd9R zyd-w@Ub2?+m6;C^eY`?F-f9xXavE12Uy~B!W2W=C1v=6!c zseYlooeh081b59P0MlS{LXUf;W?^Mz1v~`_){CQ;M=VNL3MFVvOZTnhsX5H#|2nEEBgZW-prQL7 zG*FXt_;q$DV9UzIwb|U^VZ8{6t@1O$?GyZU0;O=c-6X5HHShw9oc>LoaS@52QJ1-n zl$OGmr>mnV{t=%K_+{S}l3=n)FE^|nxN5!EdGv@@iEEKf{m|ueCI}oXR9sQ#MIJSTsfSW^el5P}>PtXlCFY{;QdHP&q^l z>Cr~Ubd<~=dv?R8{nCdE8WxW|k!|reY@rhX;GY|ZxoyBoa? znd%ncY0{tt?kl^b_y?}p|2{U(ROdo`e0(r2sb(NMtb^cTDr;eao>-F?Qe8w_`?arUejjB%Cm2LvX2F?Y zW{SE}Kt)zHA>odm3Ym*u5=K6*a;kFg-|M*5mOM-$X3w*i{w~S9R@{O*--lF+b?v13 zG^-81%&|DL4MwAfa>b+sTV4r#dj9B+BWPx?v~V($eubZ-tT@Hi+6{! zva`j{G{2#ap{=cLOE)_$jZd+E?)@v(A4n?9glK2uJspDKH~cQ;7R4-Wf$BV(c$cox zm=?D~4L#bOkVkr*f|?u&M!x- zUk`!B?e$~r^c#(q8nu*^PeLob;#Rb0-@a0G{bHcCp=7$S%StO99D9EChBsF9&t_Ht zxi*qm@w5WWu;$!+_)kc%0_IqPRTPr!u^LdS{-AbeEOLeWIg$qw$n1OJ1mKZyPXx+xN+eOy2w zEeiOv3{=Y6J3j6X`QVvRUx-*JGg)|NKq?-jW8W?go*1cjLHPc$R{%;e>AkN!e3!0- zF*^2d#3C1*q%#~Vq`(WuTk$dJuhgMz}Csk?V5a>uewf|(gNFx3l4aYL-pe>U-N zB?|;gBoB|Rn6m!~-Pm`uy0L4QevMhaHFZ2d-}Q8FVn-!R@1t(*>u3^Bg_S#QPb;V8 zFC+L>W<3zrQsQ#XI-3w6R-}()gh%&$v;%V|rbEdyQ_QQkuP=;~rGkN-J?iGh7n&YF zplXz+gPX^hM@6NngLFemtt+hv3UWp%Q(u5Fy!fvqw=hh9lKTQk#R- z56PoWNQBYiXdf;P_Y3YN^em>@dN2SfkZ`m6GVzs0qFsxDg+LSii!{c zrHBCqJ_V#o?;=8^h9)4zfT2kU7+OdI$vfWl?pyb+ci&py`{R_E*=J_&*|UG=cjlZq z2U^IV-#CA~072)S*j14c&3_MBQV}))UxZ|6UptQB8N>np&IiyR;=Kb!zpN&_Q(7ve znmxX;({Xj8`HpIN><5mx_E!DCsie>9KgHoS&Xp(-EYdmeV9`DK1|k21rO+SiSst&P8~4LRJ_e) z6g;N!(HF+u%z)7_I+x6tw>F@6?sKfS4x|&;2%BmvYilnH(vu$g*?|dF*X@xg(COCP zSnbySnR0K!kuN;A@9)8(?EsQme}g`&qrsXc&J$>dX>6E^_4`dUBkg%L8F_QOldNnd zR;xPkpegb!E5&e^HrFzb+&FwJJ$BmD;HhaGN|y2WWlPNy&IrO>M5<(P}L2|6x-e19c&2ohDELg7^$D7z3?$7yZ$T^N`@knpY)C_zH_)Y z#0mx1S#lf%v{I70D;u`VpExx3<2njFxDMTmn|M1uYa57^DZPHbv3k_O*T|U^8~az; z*TK|sZ{MHV0CP|eozbA&vseG2fw3J{r9a#+&@Jd1*a58F65zx*gq4HRa%)yvf zbEk&9h{){*@j&9bpMj3Ky}b~mZtdKu!n8Wor#s^S!&63XjRGZNbr%km#s3bPR34XcWYDc5SUUPwY8kkm;aSJd zC5fC6&VACNUeznr^^AAAvAhWXT>m$~3>qv*kie@Oj}wEnbmX}{{@RT@CIU!}Uj&0? zwj5eIhJ0Uq?4v94I;v2^=^N42)fK>xVI3gSKx%h$iPLw4@{2nT4PffXM=-nbPo;Z# z!>TgPCXHp?b%k46JG7dIWgS}29F0QCCHP)QL?&{&?b2iVdV6l#P9jW9bt5%xuV3#e zQCn(FD38>n$tKUc=z`+Q%KZX|19qbHM?8bAgI{8_&CCBZ5Xtp=s3ZV{_S>HMi+*iMwz{9GZ-vgyT zKf!}5@_UxrdZId++13J2E-g0O)M7RXKOT?BxbkW6?(~hRE3Z!Q^{d3GO25_;66<)> zF68{9M?n=3^7veE4tVPSbSSC*<~>zWBJ!$!s`2r=UoPbJrT)>b3_m3uuaqL}7W}4? z1Md56%snYvmtlyHrss@APelje89B97hVjejhIctj+UpHV&Gqb_`CdG z(adL>R>}&`?GlR!MU|Dxr4`D=o2(!wZR8{?JXBDh0T6p=fCbUCriI0z(?=&KiwT6b ziscP(f2FjvbYM|(x)o(HI6nRk>Aa^yPvK)ky1M3$bQgNfH1VMSn4#ZBcfi2U>wQ_N z_oRPzxY!LPjI{v97tPJhqtG3V=P)yzh(`;{A8S6#`5D#~NEi!tjISNd$grUh*l3#z z`0dY%W5CZO7A<>u>9K3cNUkEhwACZ;{jU?Oh#ON?`wgndDUn1fJ-aPcdWKpD=LCK# z#v`fZsjR3y#t!-ESP)K4JM-1RUcmcWUDBFtg)NoU@XlhsPkMyX%yLD?WDMwrf9hto zk&+Lt(0=&0w3Rp@TWTC0T)O!Cu&(HDiw6W`op5io99<)0y}MF<19qTm!-|g zm|2dQ=p{+>EEWBAMbUsno?P@5aHif!e(|ZW>egHuj{zxH<>r&Mme7<4=EmNc2n zBf}fvUl`xus3&elz5Vi$tnq`|#uppU9qXAGX>8iorCoYTZ~f!_TUHXa>P}Q>2~b~| znJ*7DUkix_^pEH^ujjZ?esm7Kc&(^g-{%TKq{?vx{9BGjfZj%c2GpH%!>IC#kjxhwJP#3#MiFvU}>RveH=U z%^zL1B1f>eT$AC+l|ZkDzAI?Af^0@!Sj9_g zTHejvrJ-FoI5;ZbU7^$Id3fi}y3mTO`fd#)RUUYmIPSYwcE{twuG{Akfjoq$-hRIf zS}J0j7ydqGZe=~r#wiX`=p1pn;w|HhcqX%XGZ`olL*o=)B&LAN#q-yOV2_y*iB#eW(w}ha{1Mhapdg#LH*I%(7H=!v@D)fl>mBezo|)UD7s( z!)pi|1oEAN%;x|PR&fvrWc}O)2qZ3&?-T^`5q|U!2xL|qtOD{Ynf(9+a@&xN9Rg|2 z|HoCJIPm|J|5tG(HvY+#MK5f}?H~ENU8dQB8`~GhDv#0VuPe}FnHzIDV9$(1o{Pj{ z%6f-AX*l^BH&mRvDG&h585=K}38Tj)|klLlnZ$7{Z&l)1TqA;0DwN z{XXksD5X=0gs}Umlj<(8&&O##7|Q6PRYIHRikot9bL6fHj`G_u`)L#6l0qF7BN1HK zp$m=J@SwM-*;k5u!bF)(Uvix3Q46hjg6WXzG?%i~F5$*4b6d8mt4?&*$rY z2-v*TidYs~#((QfNTznVo(Y#A_cRRXnZ7OF^s!UW*f=2|HMDG$WgyO037cM28UJ=3 zCw2OgDn|d2^qHksPj7PfTvoUcB|Rg~bUMZ&tL~`F zwc;nbsz3XiA4x2|DRTb6;{Ebo9j80dNxltdf8yr+)q7>KuOpdO@h0IrWkD_VPc;45 zP7I*5T<4;&1CNd7M_<1=8Am%`b4S>=#9g`X1!i0uIQ7Q=v7MRAjL2TA^KsWEIVYEz z;6S}jTwAX;@8ee{5-i_&w@wktZuwVjdm(7E&JmBK4+Z??CB}urvrdmfVBbOjMXtx% z!dASqlAO`lzkbkXJ%;BlrwFBJ$^4YEOoPVYUP=1i-L?vF#nkHjCARpy3Us?-=_^n1 zgtKLdfY@qy`jcbzHebd$Wh_mTHXmAUHHVZT?5l4TGmH!MkMgL>6ug|cDR_!#HEG#o z!;6f9b$L7G+!OY!=|CIj_UOSqc}Jee744>JI_Pjcuc^+BD3Xlb3NsU+SVbT0^*$&A zkNT=rj*MJzig9y^;e$qS!@i4V3pxHAQS7>}09^2MkdM&nG~2-ivwif!+}~9|3>*9d zBeK6(wu3-&@CHhU}t*}dvv3cKuc!{-v&|$axV?F+N z@aRmw*yIhJ&```O29sY_?mO8dU(Cw0M z3}kvnK5-C@TRp}-j>DGPoVFcUZ+wItRv9N4j?9_(*(C{{_CO_0FYGXT;?rSYlBuvZ zk#pe(rD;V^3@0PH$zQJkLld}Y{+fh@os1`|@xfDPsCMy{X{M5#K~fO?9X*@O`tPhc z=9Ywy!_#qBaE!pE9g-lrQykMZEWnS6yX;y|Y#HLlZ~>e!A+B?^1NN)GdY79w zYRc{2AMMjhb)3C3?t(cHs z!R#O4uRN81BMl~oaTecGn z>u-7})3>s{9PJVhYeLh8p~6C_Ogw|lt)|8KS-pGis3D9EPJVQfWU)BsponoVk7Aslp^jL|ql`!j66%aiDMlRh~D6-Eew7aF>~9x7WGxOG8+_z4w+|GR0l+ zdXB<{Ro+J_t(%CPdsU$oj6BLlriKAv7r|y7Fcy7-RsymH+h7o-f)}P|y=CCj;)lIv z&gMLJl|^P~OJ|WI{}l03Q08gJ$v>Ls_g(@6#Fhcr^UmK^yMT)}UGvUmAftk`>dD$C z7`1klM1sBq7|{*xIM$<3cd>Idxt0-H%(bH3TY-ew4Ry9r1WN|Pl3M~wrmp!OQ9QpY zw79F7el_au+;x4+cD|;@>L7C`Z9C}s#;@djw|^ir-E@FXrAUA3PIgfrAmN?C(#&yv z(fxk#b-NB#n}OYT9bvS2D(o;LC%7Y~80eLEHrzF}tX^$qf2(nm{HnW5FA@5)ctv@- zU|!ew9X>BQb{?pjm6^uaQ2ZKt0$%Dj(TI1+y!W! zI}67p8Xg=RsGw1tx($`;nE1;&&WI9yzo`DqkU=!CgUA~CZ{Q{MQiKf=;%?B@j$VYB{o&M-eIn9N7*HQ}Bj$g2A zGnJMt|pL)CdY*YcGZ!|Gv4${Kppz4J`7Y9`UYc{pv5J9jhN139|&olK5 z`WZXzO!Cz4lTF0a8U?bwaYE}$(UJy0Z?)=Lbk6ZU%s%ZUL-QP2@)T)z*o~qby4KMc zHHWq5hFiA1#=djCqQaA5(%BLxQE~1PW5O;MEa%^C8eznm{kd6 z)pMEr`9I7tMQnH5LcZlpxjFpM((&dG8@Z#DG{SO{q00+t)TCAUUv=~0v*U0qu5F(a zRe7_H^}648&%^sr*!CwlEW+zTQ0tz&Zq=f$vGwMs8b6nM4SEY#U27rG;>aV{M*nLR z&e~haxCf^EJ4zJ|a=%e>9X4~mqiK$nPHb+{*K`l24ILQu1)1gT1jp`;?zb0*CAd(b z@kE?sC>a{Bb=C9n;g3<)SaCMh$f1tygb=020D%H6Q86KRt z=C_|{AwDf>JV2Cz17Rn}Yd5!!U8nZ+OrTy?JGJ~u9&7nv4Z2b(z(FMgw7@!u1CoZn z9Ce)fvH+S;{`Gurz`v8y%?Yo0VwU>)&o5K)b~7kOZmP8SooJMrtXnMp8v3MVs!KFk z-I&5XaSh$12Q==R8V^_Q<9|*tm$te9sq&T4c6k`6SD*{MuvQ{gZhO~}r|qxo41`GM z9b$@I{%(Xtw-ejz=Z~%9!u%`JnuJ;-?CP8S#-@`^p1+byeR$b|OGFmZ=dJ6z;MOTC z(D4+lHRIwD(R);PhWS@SK&$Z-uoddO=a~zO-4G>Dpwn^!S=LpKw)GYlQ^SC%6;x`0 zdA3F;lRWu5M9mC;XTAJZZSU+&U14CheQ=A}Vaz%V>C2S=*TIQm83m{%S)=b{28NR> zsT8)ca~;bf6DKQaXJc5E65-gH_gUtN`Q+brKH-7f>~#)Y$HNk=!gXvk^@rI>`GHLx zqNqD2+I@d|V;7i!%XMvE9}5GU1NC3pUA&9x6|%ZtfGwM(+UnFQUiUJP_Nw7VJPTcJ z2P|7onsq65-9#HVE-ZYz`tsf`MM;Zk zq<_Ozl6e9%d0R9)UB|z*z%~_gGsM%{IM_$aj#z={3A9yOm4FJ-JVz;4W=!tLLQFnm za*`>$L0@xZ;>)U{!+-b2*n~(-EV;)43#-?!x<0N=+A~M{-j?wfJfuLB@yNPF1bvzJ z=~Tn&4;jYR`*o(rHSJPlrJNF}9#kNeFR^ONkOd2HIMbPMnT>t)!;!0TkYP8@fTPbI z0$sM-PTHdUr(Q(Fp6r)b#3u*7KcLw+xSGzdg8BS%2o%k{R66;i!yb%(w24Uh8|jXjxts6# z-RGWj{=7WT@T|Spo;_>7wLYKseRug3>QE1A^mCN)m>29?cIJIq@fN!iN6{7vbLKgJ za=#rFUdNGc>Rzm`Zts0yrPn-Q`J6+cRzbGBWnaaZn!Y!6byw>w8!!+Y75_AMZ;D`o z9V%z#FxUNcxU`_wVxW?F+mvrObQx{5nkMQD<0$Q_R-#7l4 zJQG0|7N%rgV+?Z&_q7VZec=gZ)D&(B5%(NdM7 z%GORBzZ7U>uxkypRI0faPYg8rBe_lt5hW2*?@DSv9lpLL9-y`x!tQQK?BNeA20nh4 z^0p=!jvr68!@((YmLuqR}(@DzcUq`kfXlR;zoSo8I2`7dgTN zitJKMziV~>M)f9}7BGhr_cY% z5t++`KIzhV{Ui~$EK6ONyc(B&G$($}rfdeaLMlF?E_7wQ_hsv+=ofE35aFO>_XP&_ zWkg3ae7i$%2qY#GMF%$US!En;cUW2sw=67kZ95&EHH`?k#c_Bz06nGoXheZqr)&ob z2bKxi3DYIZa~{@5BQ@K1tuPa~V=ZFs*DjTqt2z&)mDUF(iL$O*>NYEX-Fo+|BL4!w z*7_G#l6p=q{r1Bj$TnMz&sjJ(CDC6evf0e3XN-(}0|V=?<_8LpskYW|mcJzAy|x$6 z1ic2HmznlNs;R4=0R6``1wEGk{fdr*I58wYKOcgQfq_D_P>crtpn}|eSXF`Tl=@VB z+Pg(7A(hqapq}yZZ9}jr_z1G~Qv6N67SFI2=^D!5pqDt3Y4jHrKr3TjrF0V3aH)ZUHVOLIT-J-*Gl}yzl zx20opUNW(q+_P<{WxWX+r^$!du1}64i1-`qo7A%l`$sZQHEbz}iHUy!|0=@07q!lu z2UzQX=;-LIx`SnCW~Jj5Y*5zkBR#{@r{CarSNjJRdrdY?4qWdrVMi6pl}S@rxe1qJ z-BI*Mmp5m-ck)d$3fh7i`>=}4`EB($-XzaT+M4R9X{|e-t0lRn%L7pMjH05*5;n1$ zo8hy2!x%>!%aOFzbhl;uFQQeqz*b6j3M=p$w`uVaKgr5~SAo^#f*#rO${4v8c^~~P&w>zcw95Jg|Qz+!&(J?=kr@Y;#_PgH)HFZ^AM^?P) zXWp&!q7Xm={M*PUN`J%kV)I&rM8bfKdJ?CUM^eVw0l(Q8n=>jg8eh2e))Sl!^%7(@Ttrby(Epf36=TC5OaGFoLse`)MFAorNxltmX zF()XN^k#Yalm*Q4T|yQ0FZL&_vM=T~_E0e>Nl+S*a#%m68TW5cZ0eqQ?XXHNC0VOuwA z>sO#0@BKUQ(-F#;d4KYVbk*XQj%a;+E|S3OEUf5zZ;&1Dkg41lXa5=j{uPPSzW#nx zqnY2v{4|eR;3JX7q~$J(UEDlb1KIruN^5IK-r+*A<9>Sl`wnXqB^MtxQVb?VCm&e3 z!vQF+?dwWYJ^Cl+MZS_}*|Dw9T(=b^@7iEJ!F7qOF1D&C)sD*>ZlU{xJ`y7tII>!JY=nbSCuhX_1#%-aiyfBNS{23iHTWV zVDIHhp`@fFkHiTK4pvoGUa1|qK3OMdAyMzED``wQujaN>Q5nXCD6YpO#lHt7!3D#g z3I~l@6z0$)SIWro>PKX2tEUj?JVARbB_*X7?+KN)RU$J108(4T{I8)Q?`J|z$%~Aa z2W?NAtKaGGw;}NF@6jL&_%SN=8A#*&LhV{R$_dOzOgWip$Yt0WGL)cqRMLLF`FxMA z`Gn|VrRu?O)q9qMwWwE2B7L+fNTOah;JolPPHS5AMz7?5?LUs~T z2VOG>@FnJo*|gwr=qzWXhL!ji;mShuo{vwApN9f|W6UI|#}^2=nwmze-ZH(7O(*tb z<0n`Y5P=jvwpa0h2%82MF3Ni3L` zP5@caj5;1tp|T}8F=@;5hwnEtLe zGytC8vl|Pf9UXrSVNagu7YZ6QJI>)xVX-aov91mTUr}$hE#usVZEoE?=GJVvJeZG* zNsvCe4TFyPDD!^7mW0mzl@0rzXwr0gA7g4a&HX3n5lY-!NXf>2=xe!@Z;cdYW@h|s zz0Q>oPkGRS=vZX{5ueQbN&(CK#U?jLN#Ly~fyx9eQ*Msz&`=lIldh6m&Cf0b`a~(| znqui)conz&w=XWoSr|ULDc!(Ts!505l& znl6H4=5S#mM@yCdB-`)yyE}HIiU6BO^+iP?OD$e;F)`n6?Ye1xza!SKp|a(QW%{~Q zSR7^qTGnp8CjlcX8LussVVCQ~U6<-fxXzr6Y7b3{s~W5%#XEQjxw^Vam+I0=YJ*ag zf~t~Nn4ditk%mxKN_V$*oz!kV#|^n%m?3$ZAE^ZNxs0crk4K^EZ1bqNG4Sepl;$LgE&I zKR4y>OT4#GxtriY{kW#V6kvO<^YcskLHA1}-tFN#YPy9*t0v<5m)8%|&?S3BZbiAY z_XSQMJR&F5elrNq7n2u=S!gWg5;oE}B-IaL>sWpdQT z8S45@Z3A%`{wlzcAzfxy=GCK#x>skbp@pUN<=pa@7B7&tF$wpFtog#`2U=xCMZL*H zure+l90S{;CKA|<*75yfQe#^Qo{zhGeUDs=W_y`qr&WI-Gq~-@Dk zACIX{IaIfn_<@*3McZI_t8Ctt5i;Ck62Xc35TpM9`-MsITfN4T$9UMInVlRRfxR~X ziYuZ{(9?h6k-fYCGFLHk+pg{{7+zA%#HK|Px|SsCS=qrgLBe@x+Ba_of&8zwU23X# z&==g)PHOlk(5>7jC7)U4$jnpU?_^HJh)sFGz~A#W0t6JuvX$Zi|RF zRRO4gP%aYoLlP1aOzP$zWP6W_D$hk<-g|Sjap#TTvnJ>Tv0Mr#4K4?rKSR^QvC&QR<`Ml8gGbvDY$Qt{>13wR@M$ajM7kQ zTl=kC4mBXjSZr{VSO?2Q3|*WE{gF6(Ixj1&9|N{O19ll<9J^%%KwD9IGr)ELZ@Bbc zzIu~^yQKp&Oyki;@+_x7L5I+Ac0EJy;2E zYQ*^XCx3r`t-&utJ9`14Qa+ANi^G;t7ERW}OPn9L08TR3zfJbn0wS~HwFsAJ;!m1+ z$hq=XDs-xXLdEhIBqDXpaI8XY=642#MMRk>);eqiO1{qo4F=~0oNvC?#b;=Vu<90ew0^_?hnt{gY-C`vDPz#;>ns)jjO51 zP4eSWAQxjOayvWtt2XBnHms4ihf>1wb?S%Vr0l1^k7PZwXazt(T%Pf_MT`AbD&dh|y%=S`kUFA1dO*HXlrMz80)*pSdEwv#x_f<>-nlUNEmexN%OJKdLWWtB z`JVOYbevE2@i3alZ{5PP55A}G-Tm!-o)^=X^w(wc=QY-fbbfwRg`aP_Oh$RD3yLyAB{z0i?0Fz8_@*A zwzu@uEft@<5~B!C55AOD1Qv-H#(Sdc+6k$mrh6Ev>=D0Q-SBivowHDom zx@CY*osbldF4naEXbI`bCb~P7SOwEXkyVo8nha!y3-21DfiW+S3E}&rMSe_4QPBeQ z$>&T=s_F;-nn0@t`z062N@a;{&5dPl7y zv!7Q{-RF;80u7G3=2^JIo6+ow94qxk34ib!7%pmG;=h`Jayh906v=**cira^iXxnd zGOv5fyzue%x;)N?FgBN#_K?c2FXx?OJzT&45>Zk3dyEo9MV}8;3mf}B-lDVP3BY_%=0u&(y}2%3+E-&y#`6c69j5Rn5Q;2j z^|X;ai9K6eeq`#1N=Pn9u&vEK^J%M~qTY5*%ffr_Mv#FLIW3HUtm=OHad&|KiCiZc zd!bX|J`ov<+bO*6ru2kB%FUrG^V0weG@MV3xr?p$6!Ja=?_nN>Cg52 zAyLqo;V2pWY+B`0dvYJ$Cd~PWmCA2ktX!X@tsN_zUcQ3~Dk}fr7#$V-UDVEJB_k9Z z7Eo__`aW`V>tum`X{`ezps3Z0@k`M5l8tE+B9(+!n@q^tVEs8h{L1PO@OEIr%kWJq zSBbfIxhSkIjUsk9uCEP8ZuTIf%=!NAjLmQbQNBaeF6r{{+M9T;kg4_h-+H;C`euc4V9#Kmz4!Uc)Q_8pQ-}HTxac61{CiyU}s6C~! z`8ME&&3S~s*VFY!xd%|J712JizWf~Rla5aRk4L}xa=2#G@)Qz@T2ELC{sj%EF|%bw ze8ZEdI>Rlha$i-amw|Q~c!C(FP9KRh@F@AGon?>e0?=905D#4t^Rs zZ~Kp{p3@OaEN9ixmy(WXw%(qf2Qx-m0(hRa-}kcp+E}C|Yn*%LcYkz$r`d69YAobq z$QZuVHfB!quAkC{*Du1&alFPYub`5V zC*oDW2+0#-U~rDrI3s?_nHCvUbIEQ538y1SN^6n8fAlIR~k_81mdYl@km-zz3zD~o&=mS}*Yl1c6LtaGABsvhgo za>rhn#B*YCO%A-iEvbgReBTlLnv+&(D>G&;IV#)YvL*{vb?RJ{7pl|z(5m-o{=_lh zfxL!f3*K=F|D7p>Sb)wCiue3shvD#Q&31!AlDlGbR8kNB34eMdwmbvLdFHP@y9J!U zp$Lc?(v%NU6X(SVoQp?wa#^Yp4tZUmK)mUTU=8Mcsw2qwh5N^K?h+&PFGZe@MEhzr zLMwPh`O>iF=+PE>ko1;~oJ>GTmU<-e_f(+==j1FQ;Jw2J5jrm1rK3dx_ZF`pN^kFK zR12BY%Hjl*-XSO*18r@FI@+iN^%>hQx)N-JC5}qn_tu+|1m~5iy1LIYt1K6$`4&zz zaxQbf9#qozb@p}@4I~gug0kJ^pZ3XEEtSODO^;JpaI|!?$o`qS2e2??gg$JT3hH8W zFikPe98(HUNy0k#Bxy|HbOv`P7-c?TJQu9+0|EJKIo#q1{2WH*{e3)vVT^1L*DKsg z3_WFL4(X4TsKX6O@l{dkrs!J}Z2j|q8LMVLg+{C<0eo1%So~AFQ(w`N(s4m63yCtHJsoQI3eUrO}RMk~Y|~y3MeSCSZkTb_pHg=GXUnIi1C&1ZqSJF{Vt1yT zh>QE^9%N+QM9A z0KYb+gI3hW#?VH3mTmP6ENGeCFWx+jf_{_;owgFuyBP{z z=Z3kGOJ9872MDvfv;@xz1z~lvnO>joQ|-mn{x8y_MgZYW9g62+wxJDAalk#?2*?Ed zthXeIKuRMdUWJd%Pm=AqJU1v~T7+Ql@Jq^Oe4sbd<92Az9tQrSdMR+|D(=IOft#Fz z;lDvrBn1)3h{WSWEdijElR>@o&L#u5lezq5_ff|c33|5c?-TjD0fVSk+q)}$!&PBK zSJ;=q@z!_^Qx1=m&4FCD(i8pp3Mrp39~IX)M0u3h~3I9;BfN+OdD0y{T+}>RUv>@VxQBMxmR=ZaT@wx2IXqJ zQYbSKdb*q^En#2YP95SnATv3r+GLKgh^+PKpHk2FgtX4M7o_qQz{ie+4u2kA`AlFHh3^-CcTJTz zXe2*hXW;^j;euG9?9UVY-Qub*w)^Xmh_tXssJBNoZ@E3g>Qw>d zG@!GZZatOENjPbWB5fU@EZQ z*UbmILji|_?nuC8Mp&Mn^HYN+%j5|WY^mtc+4bda$tPtC^R+z zpp;CkIf0@jNl)EGnB^5Bnw_0}t(J(k;>6!OIC$<(ZznXN&~$KlxA^!diI8pz3Ab@GCL`iQY1-occ^GZwU!nqY}sZH@Sj zP)D?jOKaHA>^W*KtcNZEGmEx`G$O^wT2Cr~6ArJrdvcPR*;Q5+Gq_X5$(Rd3DAy zd!_F0_-JCD1o!Styzf~@DFc@Xyg{RmCnOL7$9dG0W%x;}mt0qg6K%bOfgWy>yLpME z%*DXMQvLKvB55j0*W@MS7%(h2J`cm=u96Soq_11}H_29dPxw9Zv6`KcK=#k5aM5Ue}bg24Pv8|iMldV zZm)S#R*vrqYwooSdReKfy)=x=W(81BbuJJ6~Zd^ zNv*afM*_S2Cjn`gV#yFcP^;{&SGYs6j5*;w`Cqu)=(gMD)B`~mdMeDLlp6hH8I!ZT zIu=xO_EI48nK4_LSy$aR%*fU_(1o&!!hec<(OF+IGX z>#nE-Aci8>1nbw!-j|t{k%Qb1B+15~$qm5-fzul($8@&4;AH*P9uBkU!^4GQOW`X`5SRtnBJG1&MVJ2S^n`t0+1x&js&UK1HRpy1BXe z6-H0AQ3!=T1<(x)hEC&#a`JwU9spBT8NSZnENXNvj;x*rMJcv?{9v5zfKHbNx9!+A z{@KmSr<9fVI~tq_#jv~p%Z7NRQ+pb;C#0bC+sm9QH}23?=CetdM$*>pdLW7!0y6f& zir`7(h%kHixO8!HLjp2zhy>ZyEEzy2bq7G#1u1MQP1_S&EcC~%FP?y` zALRMB^ycU`qH_}EurP23AJ`+Anu&5hbQtt~9tV>CZfA|7Heo;*-qSv8b=@SY0V^I&8P8 z0oI)O`8`haT3L6Oa~o{i1DZ9@^Ne3^wB#_=G`$p(9f!*7+cPO;bgnuX)#xC9dQnF^bqG z#HvL*{DBQLfKn?j3!z*yU?L%^Ac3Q&!r!2hv&957g>5cW&KRFkmumnZ3p# zpy#4++Ma=Do39i86$nbTFs-b=3@dE7nAZK!>ODR zglD)IFn(SV`W(4UB;ZIVyxrVAb`j+aPPRJ7Q)pmN@;L*45C+La7jsTcDjOS#(KDrj zl0i{9$gI?v^S_Re<79V2k*fvCQ4*z3%F1mwk%)4j?1MT{;vN=cTksYvkcxp*Yc3P+EE{OS}`s=FR?b_khu zm*wS}Uguk@40DSpHvW~dcC(#nx!M1-v&*%|u@gE|Rhd?%TldG(RKS-JA*HA1rctif zcQzt=WNpm{@Au7JC}AkMRhe~Et2$2w^r}EA;X7u-Z6>JLSVt*ayZ*ez+3;WSPI_Df zD{sax%|xR+=8U-%Q4c*R@9iUQdTQ;9pM-ZYgL2(Dw_UQsL#*4&CvKnLp0zgvZLQSC zIhBpY#l`4Ox${&+kKWBkYz5sD|64lv)v8sd!L6_!W}o>P7Kn8NWm8>|)B1b{pdY6A z$-n}I;A^M{E(Wkt|ea2dE6qCUcqKhN~TS?ZSGq_ZAqqs0* z&FFyr)Bx&4p1=pYX`Qc!CA;5gBp^MA@sU4!F4!*6Lv6?P|Cr&(Y2{Gz5M-NNyLWsY zwov~(EE+P_7hnbKxr`?itnLH*^1iLDtsvM(K}Xfx$3>mupat%zAyZRR&tJUYXjGy> zez+mDXZdKI=pz<2R&+#9?8T+@MrSB9^K`YA9y+{{n4=B%ev}z_bKIFj^=yqP8rYCy z%v+SDLE`T2Tby05N1e^tR>bflp5R7N1BfVVU~+svA6uadqIkx24v3`re7=KsK1%J( zE96QxU(Ro_rrwEhP69_5Iv}SEc8|34Nm3Hg86Lgs_nUei348~4OVNLz4^j_#np!P+9x=d=r+RSBx59bm%e)~ zRO0nr#OK;lcuE$qY=&kM7O^dAIr4jJ^-D|ckvogZol4UsUHYYylr^g^ukyO=OWGbq zr+LH^F&~T#FdMtHfNo$aOcmfZO!ekIvEGu#tfes!B%?t~qaF5{B?PZ#OxBaPztu2B zRGO`MC3GJihLtLPy0>({`w69J#8%yn@;#8IInoCUO9%iS@yqi*Z}k>%Ulow+xOmc) zwh<6thf)uQVn2@kPakpda30}JLPW|EqsJ|_#E}V zjl+@7j|un~V-A@%gyX)>hQmf%w_Jud=q;3_$xwU|?wPNj35hI?KB&A3f%qZC^NW>6 z#_x%5C3gnfvPbC{JbaX`S5HBF%VuQ_SN45#<&)nAY*JRM7gW}%h#k9g+`peR2T8(g z+)c)G1ACNS3YxNVv@m&ef+#5_y)xnWy07yQ&@>85(F~yrzCCO)2ptV)e+oVJ>Hib^ zGo?dC)_w$bec9)0Mo?w4xVO?Mdid9Q#o0$x$+l_F(wz1y?>TiBNuP6&KWojJVF@7qPPhmES7OWkK+w+F*i7y+ z9McGP=P#}dg|8uiwHm z(PAynKXN5i6%}y_iS`#P42=TpAwyi_Z)_rhIcaeL0N@?5x^;}^z6tIvfAPN(5whVx zO_fVZ0pdzr$R0C(7wqUzs5&3+;~jEm)&oc+Pke4--YT7e{Fq9t*LNEY2Fes7v`k+z zGDRxqEP?6w3fh87KK)`+boCoFQ*;a_6Xzln9Qx7n4{JKKgit}gc1T>|dr=8i(w(Fg z?tI9j)#E zL|F5Rt^H)U6+8EC{^x^z|5!JC+D4_6#goA)^Kvs%ejGN$%YCDdSF}s+q(L8#gHpK5 z+^ZMCDS?qZyc@HXLfAFA$WndoTD2HSO(#05z=!Nj)Y^NSq3t_8akFyHAzYZmsOWL>AEK0w=r; zBrj*BLcEniqcOT?`(_X}BmD*Y=%lmgJ}Zl%^?*Xw!$Uy(3{i$;PG<7OdhT$zc!!FL zT3=og4i`H_iZVF1~)yTHo?as*X&gTc8j?vtJY zj>^GvLM}C1y?L<&wkU^lK{i9WvItx1>wxKCuvSFyL0IsQ6cmu#dq_vC0y?(%V5!dW z-m)Ov0Z`ljbRbF!Pkxol!^r*SQff-!7LV*g83jZjy z?EeErlDgs&lxS-5K=12oA6Opu`Jvm*sntRDs8zy~&EISDczwQeuEVWb8u0;RPePIr z#xwr+6uvp19GAzt2)(THSC^N0f~NTqRlp}{TSvtiv%ZVF;#yx_vJWRHdFBaRZv`TY z`jIt72h#gc-Sa#Rug_KGM~fcMuYwR`?C{;pm$nc&CWoq`FrRHAdjCd5;JE3L%b)u0 z2E%p(RRn>zCVu&e=O@i>sB4rcKZ$c<6rYK+p4G%Jr?nnaExVN&zDdUr%G+|x=fLM; zuAuE{t@4j&p)3p!53buPq_aO=NgKw3O9|tRHkT3rg=^|RLV3#?+R#hOGd->L)^!0# z#4>4@ek;Md(bcZ!baO0dF}dQJm&nWd1>tvTu7gHSkaqk|)M!k8oT~+thl6+db^dL` z5l?#;4Wz^1sX=9Zu-4xI_=--^ypRf)i=2py%FPSWgJ!0D#yWQxi_?J>$wGK(j?uDg z)t(=b30o(%HbyHUxwV^|SGdRjiT|44?hw@k`Wt;j7Wkd0kh5N7T!-%y506UWmPgtS zH2g!XLEK(Me2>zCV*0Sm?sd=|IRd`D>V_)sC&K1cgO%vGJ-nYexU}kAIBRNYBqH@Xr;otgI_Dvx#tNiZPRV zDYoS6QnAFgFEA$KZnZTofR9B&04A$!p=37PrS=#9V> zGUTfaffKgiN_uKx9d%dR4%OGq>)-eAs|F;KsPlX+IJ&r!ySkbRZzTDu;FK6XY)HmMnx0{V5;Y3cTmf<8MEyChL6y1H6X|dspKn>BHSC@oK>q)a&3)gSYm6-04VuPLcNda<;$RA)xuBU<^pyJr$ujvqzY3)_BDVJT@Kg5`q{WX9FNF$iQox* z`Sg$S^5GeQ;r}!(=YjhOA@9$E_B1c4yTHUm5k?_MMn8kO ziJx$3%94uug=-mdHb@)qtFHCNy`-@&JRP(9C&3eZTtL^;0;Yd8_*OvOET^z>g*hTr zl17n__lEiOthCoD@G-UN3+|by844E4NM-O8J`AzFr*v_ppZjbVR>}gIUQrg&W5@PW z!j0u&B$Fw~pe^?KwDP6`s5c@4=fFnWz0j0cD~ep=q7%T@{iR!^Ph4G)<+Jr88YDW@ zSLnV@B`Dnj+k)c$IV`5COf)G1A{df z(ewT+Gg~&zjX-?5eue{IPEezw!2kYaw1AY3g#frsIJn(_|H-(vpkQtHWH8>y7v9a+ z*{yYQb%w&g17`+2&ZWu9Kdvv~WWdrhe#1<3S4&%vR|4Lx=7OcF(`chFCi~mfUjUHz z@2{Q5Q+~lmf<8(Fz-7ZO^qS}2N zXE?k)glW3*YMgTbN54QNzB(9`>OZA9$sNv!YSt6!-UjEgC}c;M54-0*eE}i0j?q22 z(u^5S1A;h$fGWI3PiV37@9_jZFJN`vV2yu=@H%;>_MH;X80A!iqDMH6>9k75wrtzZ0-u;KfFK6P2Z_niz zsR&FxxX+u7m2w^uDc`?q7a!bEK`v`Z&IMhL(4thec8tJx7&;Ir;Q%sX*15&zH~k!Hd`&_s)B=VfL7gRtYR!zM_BIV{!4f>8uy*M2kt;s?@T`51*z= zH7F8p04SSsgK*rIDtbuiXtCkkuK#ZdUFjS#Z+=gZ1xDpGN4kd>Bc#$Z{VU%-rskGV zdfV<$$A#>MQcWXWT0P#o34o1$j&5bm6vY)L%p!*(L(@*e*!&71Jp|bNao-wO_~a#U ze^Lk~`@PK{V<%&z$2tHbCpE8Kk^x|^+-KOb+~``m8kPH+1btXU*~g^%Mx}b|1Z%sC zDDCV7bUA^oKakPhFsR9J0o|PF^!6!Yd3#h~4^wfAZjA|=HiEXElO%eZ^~z0D@Se=3 z{6o>k{M)wgA}E%x7UFPrGWtkR7H$Qv8%Z4cES)yFf&k#Z78*Gv)=3CZh*QjTzVQrF z;KpgNJQc{@X?5oO$|rS5I_BcTcCaVoGWTv4_g8)4n;>h&M5FroT$!Yz~Fxx zAoXyt9`jmhYirAwq?@bQ+qNuEuC1-@GyuOgKLc06SH;V;eCB1VKA+2W+>S4%<`p$H zQwx@3IqpwI18Sn9iOP?n3B^)`L!Rrtg7hfKfK{}?WuUr48Q$9~`>sylYYd|AOdovP zhD&~#Cp#GPPDSlgALwiobxKMzwtE*wV7T%W0s)vt)Q8H;RybXR<->BVttkn=x+7wH ze1N-iIUVq&3MtILB;3Ee@jWZU5OB9vr}i8Z?#9QbiS4sGYVi?!dlQiO`1s@f-hw?KoSfJpt*x}ZLp6q^18!q>XyZvIehD1(nvIL99Da9KcE5(Ke5B;4iMiHy zL48dBg(ddV`TVvRVQLKfo<>3ynIy153oP{P?%7C^WR?0#>U&OjL1;0wIdNrW#UeTSrPAMfgl5X+ouRcSQH&hlV-J|8PZQ@$>Cx>14$T^P zaOWCM>Kj&jk-^B^+95Jf)p2fs6Fn%01kc{LDozy!_6~zrLP7C&#X_ zRa21dG%U>7NBvesh1bVEkjXmfS`z`+e5;(iYt-L{@lt)~pji!sAgPA_kuFobO3>JFdD-I!qRd`HL1SRKD*-in?Pf z1hg8Y?$_%3Xv|L`GM=%pge~YbwbtguDPf_)?~4R=WwJ8q)4kt8hHbp(gG z7-suK!k!Ba#vf`*|F$h(w6VNt=(or*i(r4{NhawI!HeJ>cRM-v4quMgQSrKtxgN-l z5DovvI069p^q`H6DPWLN%sA@LmJF_64Wd52{8~%hcRz;3S`JHFza+8Z7tH|Pyh1e^ zG?b1Ds`|+B&^Ts50-9p>>@ShQIxjI1)e%M;3XL z71Qgt=dRl39De1(7l~J~KYvPru@BTii)eWuONn36D{@%B%ucB2&e53&gHvvpWZY9 znQ679uUiB-1FHu=^WHk?3IBJ^fIq+=mZ8S|Lxew&oo# z>ib`_{CI?uooJt4xVdYtEAvGb8?^RYH}yHc`NsIhDpyVK1s0vak^+MTEg(a=hyK+c zkz(rT=>7F%VBL^F5M|r@EX1N}Hfd=$IgC3YL#Jr=;A_XllvnCdLEZepS9nXz?dza5 zU_IHvo>d)1+tVhSw`GFsHa&T4ec5vAIqUfsI?LfSlr)@^jczxH)pDz_6zwwtLv-9j zC4hO*9k+n)vLDtk>deugP%H-S)8jr}APcBrJ&NWV*T|Y|kt6Qu+ zZO2%NE2g4Iy^lw@9hhFK0_-+ay)~kPViz7ATH$m7Osy2z7#J9;y1D}=xmXRYx`bc^ zCMfgOljHtn$BdR0F8j$FA~&6RvNOTFx0?!9c;gbZmx{{UdzqXk8&P2!u;Z#2OtG%f zr0)E=h)@)U21_P%mmzs?15B zkTs~k(7~G!RhWjfx1>X5Vx8Ny>8{RmfA6`;db&9;xsp#}qWu1{#_JN{=<`I3wfWc0 zrLK<-NC}oi(cg;IjZREh^fH%~BA#+SWMJ9x%q2+6#=My)P5=6}vVUDP?UoOS02T${ zh0_a@>19nexr~_aA5yjG6ER2v%{X?Q*Z%{issBGvtuX5WzR_df7dXONk#U`l>2#eA z+womqhuqf=9I@Iop*YvpBfus(s$}hVGPWlOx z1uhh`%)6K6ePF&3UM)x|pUjIH2h|?rXO1HNi1CCosA~pNV*kZy-y@YhpCx*wZC=+q zAm1t$1tqCvR1*(=vkq2SCEkhamOcsY`1|jBD-}*as%QPnvjL1&ovXXI)5uL!!-(hW z=ZXK*L&XdBQSsi_vF#s#9gmQ~)`_$u!eNf<&0t-~Os#$Dl0$bF)8PeTuHuj?c*-VU zvd&j)|4#JbOb9=aYv$Sr&jx~dUG~z+cirwJ3GLM?usgo!_W*~#tUa5kko8`JH;5IQ z00QK_pb_GF;AZ*V2y*Ks1y_B7>D^Q1WvKYu%*ETArdq>D7G8#ju72@5x6xcQQdpgj zE3QKcu$+rVvj7dCr0^oo(qDV#Qv6lvaW#OIj}tKaXO$5W8+B*|4Csztt|snY%qQO5 zPFWiJpKzSt9t_yc*G9NF3gflaIs`1%QWJMPbSaW+KXI4o-nTD|Iz+)lU7@8MA=gf( z@F9196=$4xqwF1{{ug{MpZhvkV24bT`_|>R!E~Mo565!$7eNhG1(o*mykx%Bcz#bs zFdXJ1#Dfn9{p~SBJrlZs{sdO`MTi=Rdg0y z5V9?`eJofJbJxrGemmpY)&JAWmB&Nbe*K|Dizz*}FlbCkrABrpRL1foWCd1T-B z_4czwB#A^wC}d>GnlUD6A~DFmj(ub|GG>@Dzq|K&{(axy`_KFSbAPV;+~@wBbDitl z-|Jl0bEZ#@S7-utZv!$=oW)Zs$b^;-R-(b}Rh<3L0JzZw= zd1-lUuf*t zhGcmzIE39&@pHOWSoJdtiw1idvahU%+?5zY1j~Z^QGG6%V%ayzi0rq(m^aE`xBQxx zBPID~cpo@!p4l&mrmNat@zW*_KYb*HoLzU-dHj2X0zkb3|MiJt zt%n>cI6U&0QMC=3S;BP9C8jmS^FT5N2ue<2h1OLZGPi^~-%I64OF*Q3!d6|ArUv<9 zWE8!{YZUB|=yiM%a3|OchGH)Z@n!g)Zg~vMT#uH) zX9yN>YHN(xA)?^h|&KbqZGRmU3^8(kuYXzQQtF=i8QqKe93 zSYBbI7U2&Fg|o81-|Wt}}~ci8jq%o=ynHTE@;CT5qQ(tLzSC2>A_lhU|SQydq>JMCTFI4WJ)l)hgiZ~JKD{GzA zsJN9%-0UofrQ%0>452B3Orx~}xmEsG+M^HYKxl?G2~%4=O(>mpaRy+i<2#(OVr$#hAM=F`(hs`u&Sr zvt%GB7Ve8k`f<9hz2K_gyRI!L0IDFYf)mALs6^KFiasaiDn?Sqdc8wG6+?HDmggwD zcww`$=Do$iwk{}6v#s-*fJB}&F_{kw9heSQUYo-O`a3xc9LkW3nfZ+4tN&Y<@`UiL zU%3ImWnaU%*`C^O-Ew}$#5RgP;N$S6^kzUp-l4V~jI6_DcoNOIx~n>Q(it?s;>-=w zT4DwKiVA+|4e16=$K<05%gFQk523G3vBrJJj`k5r5XTb=>InKI%xJ13g1#Z|) z{7#+y*HWpb(dV%i_$0$xqNto}jFNq0a6|~IZr9|Z($YmQgMbEkuwLj;ee|CxKz-Ri z?@?#TyL3O8Br)EhSKOm6#4`MtVTD>uyqyy$`diY|FQthosQ5z}Atzli+8T-NUQ~a0 z}56Xqe(4u z`ofAGCokB%*Drym_?=$z{{Rl$Lt8@~n}cuKuK`Zx)<*@?pfAu!xX)=gTj?d!8MejE z$Iy>38y@V-(Cx4*CIt<$@Rq8N)SwaL{HlxVWr;`Mq#q z5;*CqKRr!}Rd{qC2eHzw$_sQkp$Vvcy>iK@1!c0jQJBEgJvN%3oO!-HAzd@1?`xly zM-r>%W(=LtC+G2{ZTB0kUY8;rL}dt zi*zW37BX4;H0K}dz}>l?3?)Cy*zKWFlGFV<^w{bO12x(%jiS^9KwU2cW-n(`yoV!3 z0-;F-F835JX&r%ii*nn3-{d~tYDgmhk3WFl3h0|v395CZu)Xfj9)usuSletGKBIOy2d_M9g4e;J8&|krKg{l%0EvR02vQkDp4A9b{t`ooP<8!!wA3|2&5BRYtC2zJv+#yZ)c zB9^H}k;db@+R}i6z>>Stcv7Q0&Hhz->-rG~!|!qro6ls((r4RePe{D76r3C>khloQrkYo<^uKsk;-VM{&$o0l;&1}R4J=1 z_+OKCi{a`bB=MRhNp;-KNJZlSE`+_QfYIHc)EbK$Z>zf35MIY)XhJe0hdd|HKQO$4 zhL^5EA4oyYjGex0VB!VTg_c86Q@iUc|8l4@@sq#^D9AoBX{m!MYUn zdDgH3M`TEM-&l2HYz}{=37H?mMVxkAxh`%5TQ6?eWLaPvlAK@FWriF?kf%v&R9+il zr~y*Mn3fwi?CE4+!zjg0Raq#Xw7XVcKVM1EL;hMBV%rUGF2C{>T};cxtd|1$i)Ndx zP#sLxOLu@wa$I&jK|r2-qr>@mUdACwFQ0zSJth_$;*zq$ojt;~p0S+-QjNVh7QtA| zKL6#J7XVZh>O`{YD&2vh-tvge(^oL}`p;`Ejc>tnYy$js)Boa`3_v+>rA%L)MioDs z`Tl3*z|TpFs&Gz}fBYYUQh*?_XPCC5YH7{!PB^9yOS0r})lXKl^513j0LZ1O9YWL9 zll%p7pG}EJ{CFtZ#Exqfpo7Hi1};Ldg=|#XJf)nT+q*F z^i@Q~&UTa3pTi3by)?B~pY1k`6O~>DE?2voIG6cp+0_)}Cc1I~AGzSOlpGWy;wE<~#ax6zEExUELBi zYWXSVkEuDA;^NRa%B43_w&M&J@$BOwP!fdmgml$d=5BHN zae0f*8IRs*EOSdsP~H`1LMRLYzG$v=nH5aqaWr7133xY#_kt7a9_o>Iq^~r1qdp{rPX!_(Y?Y7VkXz%vH1#pyeLdg^ z{@iF!+MRoXmSMy)o3Hd7BapxZwp%N8Jw(IoHq9B=U&5Z}nxwOSS^3ZE8e*v%FuNtg zpi}8rMY1kFnU>0X9#Y9_Ta5TbE>9Xb%OH!Gv;o;bLgFe$L22pf)VQ@$=?|KOR4cQ9 zUlL9Xi@n`kIj;hF;27oH@z>?Lp%QaSqI zyjJ+;X}GSvWo*NfwJi2w^=6mvQVW&p?;tO0P;qHH6G89~%d_Il$iHJXZUPyzyK`v} zH(UjQV7-bszf1%&00dk@doGRWky+XB^mTh?9m*bxgHwqCREKd2=1U2WkDMp^&3a@w zA5}FFT1uyvjec&!J0cE3kk~A*7CQV(FtlAhWM#$X{>bcE2!tc_clCI~kdyqS-x1Db z*L~^B2p_(a{2cdOQ&YxX=&3GRF5&A1gCbcT$cv)CE^i&6SfAQdyd*SuHn=ze>X1Csge0~7XCG-T!1 zzJG=CZ<$@Indo`zRN?3x|IKMlT=MgnM03H`lyJm-4CK?&PY|~2a$C(nn`$Ps8!Z(A zq7&1%?upC9=c+fNt=`$Y zdf2--Lm)mG-%^IvyLkx|W(M{24=8)`7aTPSci%s}|2Hou5kEUVYadc>JC05wc#6Zx z^w&MmR-#f;4?j+$xYkgre3whJi$W)#Y)06#R_;sd+o^jK6W@;Mt$W2G*3h?8pDJ1b zWx7s=U%NvLEPuW$n6$?4F#LG&H%o<~h5~{iH#~79@g~bXF2rFzRL(&xWqL!3HRX8- z*Dj}B*I@i>@^x3tF-%o-^^W^({%&(Dj$Pu}1YW>ZmS~^1!QK=F4X6CYt2xZ4?D&%m zvFD+;DjY49F4BpKZIP#KucqI(imf~D1OCJroK%|AcONn=`ky4f%P>geRy9m$NM@{H z;GL%1t)uQ1Q40U#j}#qNM`O8gL}%4V-rgldf`PbAO4^rANy=`>d)s*;MthELA*BTl}^%2PW2 zr$MJyt_q3#SJwE7EiqN`++64 zbme=qGcZv}y{s>4Ga6Jyy<7763q`>;0G#`23* zQs#9k_mtmwA)98?4hm#tw$f^wZ$r5^s1+`b_fc-AkoedqVAU+Hzgz0eYa27JAGvz& zlaM6Os%+^Z;{0tr?AXb1lDOgAimF$TkO06Sf$DV;5&T!i@Svl}WdHAb*Mr*=L(dd%nD%P;FYPVX*BT}vLrXjgLK@V(Dr9k=WAFb zFvWC~hqI38MgKkOm>@H*gPBA+NbHP{Yi^T0 zc!u9m<|?<{3OYI@s;tERMda-!F2}}NT3Rxa6n41Hf4LKAO8*3fnDP9o{9RtZH1Pnq z654;Vrq(Sc{oCXj`sc09V#15SyFmuI4@%8J5+xN36BLn3R?M{2pPz*jXW=ywL{$5P zTEBcUt#pw-U&fNrON9f`mzn2i`nGajX<29H5(N2J!jYs-!zEjE_@ja1&$aEU{k9V^ z&+|)u+vAl&HMAfjQ`4-~RtC9(mROojz-2NN#?FrA>FLS)Rn@V*f8Ao?V&%#lp$m8ULh_CEkU4wkBGdL-0fW);XS{&Mfo~OQ-SZCSLwA2cbi5N@DRhH z`T8|#dGpWlpf#u6rkb!|RG;psXA`wguJX07bR>k%${`yz-`}Vv%>)Eq^lrKC+7Vuo zmrQ^A@ckD|cXvv%_pyf9%!&BU31CqAhF23(w*n$Ipa+i?X|$sq`+i~nN({Hvy(-c~(|g~NxA z!7~=|Z9hBv?oX)21>4I5_!6}+U)Q!xPF2A+bTbWAtodFK2=FO|QE5#@#LS({#JM#z zP^$6TJswVUPGDiW;cIj!Nl=4!Uboe$_4U3$Lqana{f zXgUg_`l-IJ_@qqxBkv0F@(7&FP0uv?N^i@7y-NZ?zK~WXD7m&-Ou%tw*5owtN=?CM zJ^i%mRbrT52La#agFm3<(S>0OF&bvtlw8tQjE?vFMow4qKoG3s!b^_?`S2jsvgcC2 zz~ZT&L@t~(h*Ca-oj;Bd*Pl-Sd+>?tCr+fO=_y|-6Kse1PcfJ#4Hi`N+6f>9zsYzT zbb8Zjdi_TFKo^E$x08?rS3vZI&1VNlV9qReJa`?P{-N87n*?N0d{6$3{r~+l#OrHXo4~uugTn1g2my(0v{eU{u4=->t930;OV~8|U5E1xWUP}J<{M8@!UKoC zX1iqK63i++puiIu|S(1*KCizX7N3#p)@sP@AX% zrF%ARV%W_Be_520N{rk^L+C^u(*81 zxI8nMZ>E8^hd*l-XzovYc~^|8;|Hrh0LiTxCTBcooMAa=Vh1mUm0~8BjsvfJ6=R9K z{P|quwUhH=2g(%YXvi@#I5eTp^F+t2dT!p+nez_hsYHWAdV%02J@xx+by&R`dUaMA zw1B^zO*9G!I&xAPhw;H(Akx=Q*ygm`w|pW#3YHu=GYd1LY)5jFad@}>RRZd~K1z4u zU)cXRA+)BNlORc#+hjO-CzknZ9Vyu~i_#-wX3uFtd@^d8u4ZFPW{D?8@NA|dXcOmD z%*$HBFFbpv#jDwb@uW6eG*n_BOGFZ)Ng`eB=%KB~C!u6dvUcAeIK#llM~G-R5}T!z z(0nf@U&;dGd9LR{3#G3g_X4=CG0S1%e|SNUiV3Oy_R!B0+!KQJ@MrQ+S|MDjxVkjU z3mt7Pc_ytsgjTEuLq<>Mb)LH{66juiJ|(D{W3c=yB0Z`ZCHYHB`uek@aZTROs*^#v z6}EVY*WNU4e=Ln$z4PA{cFDquPHlf~#~|9W39F9+FS<-jVg^1qK!IS)0EO4zWPL(U z8jQ|^XZE8yvhtJzJmq71hq23%Z6!Z{FBOlg&Qk8ZERSV2*U(~_-p7I=NjOftvj1I% zvHuT_$>iLIrMI|t7KCX=GaZ}l+RG*VC-UBdYxjyo&jM^SHJypR;vgP4P5dD8-~HFv z_n-YNF{|c4dd&u0u16WkZVe0%^T(qP##K)Uflem6x65?5(wqo7PgX)u)8hhjM+