[MIRROR] PDA general maintenance (NTNet downloader rework) [MDB IGNORE] (#25133)

* PDA general maintenance (NTNet downloader rework)

* Update modular_computer.dm

* e

* weh

* Update archive_viewer.dm

* Update three_layer_hats.json

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-12-24 23:28:40 +01:00
committed by GitHub
parent a26f32aef5
commit d34aab9be3
52 changed files with 222 additions and 187 deletions
@@ -402,7 +402,7 @@
return
if(enabled)
. += active_program ? mutable_appearance(init_icon, active_program.program_icon_state) : mutable_appearance(init_icon, icon_state_menu)
. += active_program ? mutable_appearance(init_icon, active_program.program_open_overlay) : mutable_appearance(init_icon, icon_state_menu)
if(atom_integrity <= integrity_failure * max_integrity)
. += mutable_appearance(init_icon, "bsod")
. += mutable_appearance(init_icon, "broken")
@@ -82,7 +82,7 @@
return .
if(cpu.enabled)
. += cpu.active_program?.program_icon_state || screen_icon_state_menu
. += cpu.active_program?.program_open_overlay || screen_icon_state_menu
else if(!(machine_stat & NOPOWER))
. += screen_icon_screensaver
@@ -1,6 +1,3 @@
///The default amount a program should take in cell use.
#define PROGRAM_BASIC_CELL_USE 15
// /program/ files are executable programs that do things.
/datum/computer_file/program
filetype = "PRG"
@@ -18,10 +15,12 @@
var/filedesc = "Unknown Program"
/// Short description of this program's function.
var/extended_desc = "N/A"
/// Category in the NTDownloader.
var/category = PROGRAM_CATEGORY_MISC
/// Program-specific screen icon state
var/program_icon_state = null
///What category this program can be found in within NTNetDownloader.
var/downloader_category = PROGRAM_CATEGORY_DEVICE
///The overlay to add ontop of the ModPC running the app while it's open.
///This is taken from the same file as the ModPC, so you can use usage_flags to prevent
///the program from being used on devices that don't have sprites for it.
var/program_open_overlay = null
///Boolean on whether the program will appear at the top on PDA menus, or in the app list with everything else.
var/header_program = FALSE
/// Set to 1 for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes.
@@ -34,7 +33,7 @@
var/available_on_ntnet = TRUE
/// Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to TRUE to enable.
var/available_on_syndinet = FALSE
/// Name of the tgui interface
/// Name of the tgui interface. If this is not defined, this will not be available in NTNet.
var/tgui_id
/// Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images must also be inserted into /datum/asset/simple/headers.
var/ui_header = null
@@ -55,7 +54,7 @@
var/datum/computer_file/program/temp = ..()
temp.run_access = run_access
temp.filedesc = filedesc
temp.program_icon_state = program_icon_state
temp.program_open_overlay = program_open_overlay
temp.requires_ntnet = requires_ntnet
temp.usage_flags = usage_flags
if(unique_copy)
@@ -1,8 +1,8 @@
/datum/computer_file/program/ai_restorer
filename = "ai_restore"
filedesc = "AI Manager & Restorer"
category = PROGRAM_CATEGORY_SCI
program_icon_state = "generic"
downloader_category = PROGRAM_CATEGORY_SCIENCE
program_open_overlay = "generic"
extended_desc = "Firmware Restoration Kit, capable of reconstructing damaged AI systems. Requires direct AI connection via intellicard slot."
size = 12
requires_ntnet = FALSE
@@ -1,9 +1,9 @@
/datum/computer_file/program/alarm_monitor
filename = "alarmmonitor"
filedesc = "Canary"
category = PROGRAM_CATEGORY_ENGI
downloader_category = PROGRAM_CATEGORY_ENGINEERING
ui_header = "alarm_green.gif"
program_icon_state = "alert-green"
program_open_overlay = "alert-green"
extended_desc = "This program provides visual interface for a station's alarm system."
requires_ntnet = 1
size = 4
@@ -37,12 +37,12 @@
has_alert = (length(alert_control.listener.alarms) > 0)
if(!has_alert)
program_icon_state = "alert-green"
program_open_overlay = "alert-green"
ui_header = "alarm_green.gif"
else
// If we don't know the status, assume the worst.
// Technically we should never have anything other than a truthy or falsy value
// but this will allow for unknown values to fall through to be an actual alert.
program_icon_state = "alert-red"
program_open_overlay = "alert-red"
ui_header = "alarm_red.gif"
update_computer_icon() // Always update the icon after we check our conditional because we might've changed it
@@ -2,16 +2,10 @@
filename = "contractor uplink"
filedesc = "Syndicate Contractor Uplink"
extended_desc = "A standard, Syndicate issued system for handling important contracts while on the field."
category = PROGRAM_CATEGORY_MISC
program_icon_state = "contractor-assign"
program_open_overlay = "contractor-assign"
program_icon = "tasks"
size = 10
requires_ntnet = FALSE
available_on_ntnet = FALSE
available_on_syndinet = FALSE
usage_flags = PROGRAM_PDA //this is all we've got sprites for :sob:
unique_copy = TRUE
undeletable = TRUE
tgui_id = "SyndicateContractor"
@@ -45,7 +39,7 @@
var/contract_id = text2num(params["contract_id"])
traitor_data.uplink_handler.contractor_hub.assigned_contracts[contract_id].status = CONTRACT_STATUS_ACTIVE
traitor_data.uplink_handler.contractor_hub.current_contract = traitor_data.uplink_handler.contractor_hub.assigned_contracts[contract_id]
program_icon_state = "contractor-contract"
program_open_overlay = "contractor-contract"
return TRUE
if("PRG_login")
@@ -59,7 +53,7 @@
traitor_data.uplink_handler.contractor_hub = new
traitor_data.uplink_handler.contractor_hub.create_contracts(traitor_user.owner)
user.playsound_local(user, 'sound/effects/contractstartup.ogg', 100, FALSE)
program_icon_state = "contractor-contractlist"
program_open_overlay = "contractor-contractlist"
return TRUE
if("PRG_call_extraction")
@@ -68,7 +62,7 @@
user.playsound_local(user, 'sound/effects/confirmdropoff.ogg', 100, TRUE)
traitor_data.uplink_handler.contractor_hub.current_contract.status = CONTRACT_STATUS_EXTRACTING
program_icon_state = "contractor-extracted"
program_open_overlay = "contractor-extracted"
else
user.playsound_local(user, 'sound/machines/uplinkerror.ogg', 50)
error = "Either both you or your target aren't at the dropoff location, or the pod hasn't got a valid place to land. Clear space, or make sure you're both inside."
@@ -83,7 +77,7 @@
traitor_data.uplink_handler.contractor_hub.current_contract = null
traitor_data.uplink_handler.contractor_hub.assigned_contracts[contract_id].status = CONTRACT_STATUS_ABORTED
program_icon_state = "contractor-contractlist"
program_open_overlay = "contractor-contractlist"
return TRUE
if("PRG_redeem_TC")
@@ -129,10 +123,10 @@
data["ongoing_contract"] = !!traitor_data.uplink_handler.contractor_hub.current_contract
if(traitor_data.uplink_handler.contractor_hub.current_contract)
program_icon_state = "contractor-contract"
program_open_overlay = "contractor-contract"
if (traitor_data.uplink_handler.contractor_hub.current_contract.status == CONTRACT_STATUS_EXTRACTING)
data["extraction_enroute"] = TRUE
program_icon_state = "contractor-extracted"
program_open_overlay = "contractor-extracted"
else
data["extraction_enroute"] = FALSE
var/turf/curr = get_turf(user)
@@ -1,8 +1,8 @@
/datum/computer_file/program/ntnet_dos
filename = "ntn_dos"
filedesc = "DoS Traffic Generator"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "hostile"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "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 = TRUE
@@ -1,8 +1,8 @@
/datum/computer_file/program/revelation
filename = "revelation"
filedesc = "Revelation"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "hostile"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "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 = FALSE
@@ -1,9 +1,10 @@
/datum/computer_file/program/arcade
filename = "dsarcade"
filedesc = "Donksoft Micro Arcade"
program_icon_state = "arcade"
program_open_overlay = "arcade"
extended_desc = "This port of the classic game 'Outbomb Cuban Pete', redesigned to run on tablets, with thrilling graphics and chilling storytelling."
requires_ntnet = FALSE
downloader_category = PROGRAM_CATEGORY_GAMES
size = 6
tgui_id = "NtosArcade"
program_icon = "gamepad"
@@ -30,7 +31,7 @@
heads_up = "You have crushed [boss_name]! Rejoice!"
playsound(computer.loc, 'sound/arcade/win.ogg', 50)
game_active = FALSE
program_icon_state = "arcade_off"
program_open_overlay = "arcade_off"
if(istype(computer))
computer.update_appearance()
ticket_count += 1
@@ -41,7 +42,7 @@
heads_up = "You have been defeated... how will the station survive?"
playsound(computer.loc, 'sound/arcade/lose.ogg', 50)
game_active = FALSE
program_icon_state = "arcade_off"
program_open_overlay = "arcade_off"
if(istype(computer))
computer.update_appearance()
user?.mind?.adjust_experience(/datum/skill/gaming, 10)
@@ -163,7 +164,7 @@
player_hp = 30
player_mp = 10
heads_up = "You stand before [boss_name]! Prepare for battle!"
program_icon_state = "arcade"
program_open_overlay = "arcade"
boss_id = rand(1,6)
pause_state = FALSE
if(istype(computer))
@@ -6,8 +6,8 @@
/datum/computer_file/program/atmosscan
filename = "atmosscan"
filedesc = "AtmoZphere"
category = PROGRAM_CATEGORY_ENGI
program_icon_state = "air"
downloader_category = PROGRAM_CATEGORY_ENGINEERING
program_open_overlay = "air"
extended_desc = "A small built-in sensor reads out the atmospheric conditions around the device."
size = 4
tgui_id = "NtosGasAnalyzer"
@@ -1,9 +1,9 @@
/datum/computer_file/program/borg_monitor
filename = "siliconnect"
filedesc = "SiliConnect"
category = PROGRAM_CATEGORY_SCI
downloader_category = PROGRAM_CATEGORY_SCIENCE
ui_header = "borg_mon.gif"
program_icon_state = "generic"
program_open_overlay = "generic"
extended_desc = "This program allows for remote monitoring of station cyborgs."
requires_ntnet = TRUE
download_access = list(ACCESS_ROBOTICS)
@@ -148,9 +148,9 @@
/datum/computer_file/program/borg_monitor/syndicate
filename = "roboverlord"
filedesc = "Roboverlord"
category = PROGRAM_CATEGORY_SCI
downloader_category = PROGRAM_CATEGORY_SCIENCE
ui_header = "borg_mon.gif"
program_icon_state = "generic"
program_open_overlay = "generic"
extended_desc = "This program allows for remote monitoring of mission-assigned cyborgs."
requires_ntnet = FALSE
available_on_ntnet = FALSE
@@ -1,8 +1,8 @@
/datum/computer_file/program/bounty_board
filename = "bountyboard"
filedesc = "Bounty Board Request Network"
category = PROGRAM_CATEGORY_SUPL
program_icon_state = "bountyboard"
downloader_category = PROGRAM_CATEGORY_SUPPLY
program_open_overlay = "bountyboard"
extended_desc = "A multi-platform network for placing requests across the station, with payment across the network being possible.."
requires_ntnet = TRUE
size = 10
@@ -1,8 +1,8 @@
/datum/computer_file/program/budgetorders
filename = "orderapp"
filedesc = "NT IRN"
category = PROGRAM_CATEGORY_SUPL
program_icon_state = "request"
downloader_category = PROGRAM_CATEGORY_SUPPLY
program_open_overlay = "request"
extended_desc = "Nanotrasen Internal Requisition Network interface for supply purchasing using a department budget account."
requires_ntnet = TRUE
usage_flags = PROGRAM_LAPTOP | PROGRAM_PDA
@@ -1,8 +1,8 @@
/datum/computer_file/program/card_mod
filename = "plexagonidwriter"
filedesc = "Plexagon Access Management"
category = PROGRAM_CATEGORY_CREW
program_icon_state = "id"
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
program_open_overlay = "id"
extended_desc = "Program for programming employee ID cards to access parts of the station."
download_access = list(ACCESS_COMMAND)
requires_ntnet = 0
@@ -1,8 +1,8 @@
/datum/computer_file/program/shipping
filename = "shipping"
filedesc = "GrandArk Exporter"
category = PROGRAM_CATEGORY_SUPL
program_icon_state = "shipping"
downloader_category = PROGRAM_CATEGORY_SUPPLY
program_open_overlay = "shipping"
extended_desc = "A combination printer/scanner app that enables modular computers to print barcodes for easy scanning and shipping."
size = 6
tgui_id = "NtosShipping"
@@ -7,8 +7,8 @@
/datum/computer_file/program/chatclient
filename = "ntnrc_client"
filedesc = "Chat Client"
category = PROGRAM_CATEGORY_CREW
program_icon_state = "command"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "command"
extended_desc = "This program allows communication over NTNRC network"
size = 8
requires_ntnet = TRUE
@@ -1,8 +1,8 @@
/datum/computer_file/program/crew_manifest
filename = "plexagoncrew"
filedesc = "Plexagon Crew List"
category = PROGRAM_CATEGORY_CREW
program_icon_state = "id"
downloader_category = PROGRAM_CATEGORY_SECURITY
program_open_overlay = "id"
extended_desc = "Program for viewing and printing the current crew manifest"
download_access = list(ACCESS_SECURITY, ACCESS_COMMAND)
requires_ntnet = TRUE
@@ -2,8 +2,8 @@
/datum/computer_file/program/emojipedia
filename = "emojipedia"
filedesc = "EmojiPedia"
category = PROGRAM_CATEGORY_CREW // we want everyone to be able to access this application, since everyone can send emoji via PDA messages
program_icon_state = "generic"
downloader_category = PROGRAM_CATEGORY_DEVICE // we want everyone to be able to access this application, since everyone can send emoji via PDA messages
program_open_overlay = "generic"
extended_desc = "This program allows you to view all the emojis you can send via PDA messages."
size = 3
tgui_id = "NtosEmojipedia"
@@ -2,7 +2,7 @@
filename = "filemanager"
filedesc = "File Manager"
extended_desc = "This program allows management of files."
program_icon_state = "generic"
program_open_overlay = "generic"
size = 8
requires_ntnet = FALSE
available_on_ntnet = FALSE
@@ -1,11 +1,11 @@
/datum/computer_file/program/scipaper_program
filename = "ntfrontier"
filedesc = "NT Frontier"
category = PROGRAM_CATEGORY_SCI
downloader_category = PROGRAM_CATEGORY_SCIENCE
extended_desc = "Scientific paper publication and navigation software."
requires_ntnet = TRUE
size = 12
program_icon_state = "research"
program_open_overlay = "research"
tgui_id = "NtosScipaper"
program_icon = "paper-plane"
download_access = list(ACCESS_ORDNANCE)
@@ -4,8 +4,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
/datum/computer_file/program/job_management
filename = "plexagoncore"
filedesc = "Plexagon HR Core"
category = PROGRAM_CATEGORY_CREW
program_icon_state = "id"
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
program_open_overlay = "id"
extended_desc = "Program for viewing and changing job slot availability."
download_access = list(ACCESS_COMMAND)
requires_ntnet = TRUE
@@ -1,9 +1,10 @@
/datum/computer_file/program/mafia
filename = "mafia"
filedesc = "Mafia"
program_icon_state = "mafia"
program_open_overlay = "mafia"
extended_desc = "A program that allows you to play the infamous Mafia game, straight from your Modular PC."
requires_ntnet = FALSE
downloader_category = PROGRAM_CATEGORY_GAMES
size = 6
tgui_id = "NtosMafiaPanel"
program_icon = "user-secret"
@@ -1,8 +1,8 @@
/datum/computer_file/program/maintenance/camera
filename = "camera_app"
filedesc = "Camera"
program_icon_state = "camera"
category = PROGRAM_CATEGORY_MISC
program_open_overlay = "camera"
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
extended_desc = "This program allows the taking of pictures."
size = 4
usage_flags = PROGRAM_PDA
@@ -1,8 +1,8 @@
/datum/computer_file/program/maintenance/modsuit_control
filename = "modsuit_control"
filedesc = "MODsuit Control"
program_icon_state = "modsuit_control"
category = PROGRAM_CATEGORY_SCI
program_open_overlay = "modsuit_control"
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
extended_desc = "This program allows people to connect a MODsuit to it, allowing remote control."
size = 2
tgui_id = "NtosMODsuit"
@@ -1,7 +1,7 @@
/datum/computer_file/program/maintenance/phys_scanner
filename = "phys_scanner"
filedesc = "Physical Scanner"
category = PROGRAM_CATEGORY_MISC
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
extended_desc = "This program allows the tablet to scan physical objects and display a data output."
size = 2
usage_flags = PROGRAM_PDA
@@ -8,8 +8,8 @@
/datum/computer_file/program/messenger
filename = "nt_messenger"
filedesc = "Direct Messenger"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "command"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "command"
extended_desc = "This program allows old-school communication with other modular devices."
size = 0
undeletable = TRUE // It comes by default in tablets, can't be downloaded, takes no space and should obviously not be able to be deleted.
@@ -2,8 +2,8 @@
filename = "newscasterapp"
filedesc = "Newscaster"
download_access = list(ACCESS_LIBRARY)
category = PROGRAM_CATEGORY_CREW
program_icon_state = "bountyboard"
downloader_category = PROGRAM_CATEGORY_GAMES
program_open_overlay = "bountyboard"
extended_desc = "This program allows any user to access the Newscaster network from anywhere."
size = 2
requires_ntnet = TRUE
@@ -1,8 +1,8 @@
/datum/computer_file/program/notepad
filename = "notepad"
filedesc = "Notepad"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "generic"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "generic"
extended_desc = "Jot down your work-safe thoughts and what not."
size = 2
tgui_id = "NtosNotepad"
@@ -1,8 +1,8 @@
/datum/computer_file/program/nt_pay
filename = "ntpay"
filedesc = "Nanotrasen Pay System"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "generic"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "generic"
extended_desc = "An application that locally (in your sector) helps to transfer money or track your expenses and profits."
size = 2
tgui_id = "NtosPay"
@@ -1,7 +1,7 @@
/datum/computer_file/program/ntnetdownload
filename = "ntsoftwarehub"
filedesc = "NT Software Hub"
program_icon_state = "generic"
program_open_overlay = "generic"
extended_desc = "This program allows downloads of software from official NT repositories"
undeletable = TRUE
size = 4
@@ -10,23 +10,31 @@
tgui_id = "NtosNetDownloader"
program_icon = "download"
///The program currently being downloaded.
var/datum/computer_file/program/downloaded_file
///Boolean on whether the `downloaded_file` is being downloaded from the Syndicate store,
///in which case it will appear as 'ENCRYPTED' in logs, rather than display file name.
var/hacked_download = FALSE
var/download_completion = FALSE //GQ of downloaded data.
var/download_netspeed = 0
var/downloaderror = ""
///How much of the data has been downloaded.
var/download_completion
///The error message being displayed to the user, if necessary. Null if there isn't one.
var/downloaderror
///The list of categories to display in the UI, in order of which they appear.
var/static/list/show_categories = list(
PROGRAM_CATEGORY_CREW,
PROGRAM_CATEGORY_ENGI,
PROGRAM_CATEGORY_SCI,
PROGRAM_CATEGORY_SUPL,
PROGRAM_CATEGORY_MISC,
PROGRAM_CATEGORY_DEVICE,
PROGRAM_CATEGORY_EQUIPMENT,
PROGRAM_CATEGORY_GAMES,
PROGRAM_CATEGORY_SECURITY,
PROGRAM_CATEGORY_ENGINEERING,
PROGRAM_CATEGORY_SUPPLY,
PROGRAM_CATEGORY_SCIENCE,
)
/datum/computer_file/program/ntnetdownload/kill_program(mob/user)
. = ..()
abort_file_download()
ui_header = null
. = ..()
/datum/computer_file/program/ntnetdownload/proc/begin_file_download(filename)
if(downloaded_file)
@@ -83,7 +91,7 @@
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
var/download_netspeed
// Speed defines are found in misc.dm
switch(ntnet_status)
if(NTNET_LOW_SIGNAL)
@@ -92,7 +100,8 @@
download_netspeed = NTNETSPEED_HIGHSIGNAL
if(NTNET_ETHERNET_SIGNAL)
download_netspeed = NTNETSPEED_ETHERNET
download_completion += download_netspeed
if(download_netspeed)
download_completion += download_netspeed
/datum/computer_file/program/ntnetdownload/ui_act(action, params, datum/tgui/ui, datum/ui_state/state)
switch(action)
@@ -103,7 +112,6 @@
if("PRG_reseterror")
if(downloaderror)
download_completion = FALSE
download_netspeed = FALSE
downloaded_file = null
downloaderror = ""
return TRUE
@@ -121,7 +129,6 @@
data["downloadname"] = downloaded_file.filename
data["downloaddesc"] = downloaded_file.filedesc
data["downloadsize"] = downloaded_file.size
data["downloadspeed"] = download_netspeed
data["downloadcompletion"] = round(download_completion, 0.1)
data["disk_size"] = computer.max_capacity
@@ -132,14 +139,14 @@
var/list/program_categories = list()
for(var/datum/computer_file/program/programs as anything in repo)
if(!(programs.category in program_categories))
program_categories.Add(programs.category)
if(!(programs.downloader_category in program_categories))
program_categories.Add(programs.downloader_category)
data["programs"] += list(list(
"icon" = programs.program_icon,
"filename" = programs.filename,
"filedesc" = programs.filedesc,
"fileinfo" = programs.extended_desc,
"category" = programs.category,
"category" = programs.downloader_category,
"installed" = !!computer.find_file_by_name(programs.filename),
"compatible" = check_compatibility(programs),
"size" = programs.size,
@@ -151,13 +158,8 @@
return data
/datum/computer_file/program/ntnetdownload/proc/check_compatibility(datum/computer_file/program/P)
var/hardflag = computer.hardware_flag
if(P?.is_supported_by_hardware(hardware_flag = hardflag, loud = FALSE))
return TRUE
return FALSE
/datum/computer_file/program/ntnetdownload/kill_program(mob/user)
abort_file_download()
return ..()
///Checks if a provided `program_to_check` is compatible to be downloaded on our computer.
/datum/computer_file/program/ntnetdownload/proc/check_compatibility(datum/computer_file/program/program_to_check)
if(!program_to_check || !program_to_check.is_supported_by_hardware(hardware_flag = computer.hardware_flag, loud = FALSE))
return FALSE
return TRUE
@@ -12,8 +12,8 @@
/datum/computer_file/program/portrait_printer
filename = "PortraitPrinter"
filedesc = "Marlowe Treeby's Art Galaxy"
category = PROGRAM_CATEGORY_CREW
program_icon_state = "dummy"
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
program_open_overlay = "dummy"
extended_desc = "This program connects to a Spinward Sector community art site for viewing and printing art."
download_access = list(ACCESS_LIBRARY)
usage_flags = PROGRAM_CONSOLE
@@ -3,8 +3,8 @@
/datum/computer_file/program/power_monitor
filename = "ampcheck"
filedesc = "AmpCheck"
category = PROGRAM_CATEGORY_ENGI
program_icon_state = "power_monitor"
downloader_category = PROGRAM_CATEGORY_ENGINEERING
program_open_overlay = "power_monitor"
extended_desc = "This program connects to sensors around the station to provide information about electrical systems"
ui_header = "power_norm.gif"
download_access = list(ACCESS_ENGINEERING)
@@ -1,9 +1,9 @@
/datum/computer_file/program/radar //generic parent that handles most of the process
filename = "genericfinder"
filedesc = "debug_finder"
category = PROGRAM_CATEGORY_CREW
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
ui_header = "borg_mon.gif" //DEBUG -- new icon before PR
program_icon_state = "radarntos"
program_open_overlay = "radarntos"
requires_ntnet = TRUE
available_on_ntnet = FALSE
usage_flags = PROGRAM_LAPTOP | PROGRAM_PDA
@@ -15,7 +15,7 @@
var/selected
///Used to store when the next scan is available.
COOLDOWN_DECLARE(next_scan)
///Used to keep track of the last value program_icon_state was set to, to prevent constant unnecessary update_appearance() calls
///Used to keep track of the last value program_open_overlay was set to, to prevent constant unnecessary update_appearance() calls
var/last_icon_state = ""
///Used by the tgui interface, themed NT or Syndicate.
var/arrowstyle = "ntosradarpointer.png"
@@ -181,10 +181,10 @@
var/atom/movable/signal = find_atom()
if(!trackable(signal))
program_icon_state = "[initial(program_icon_state)]lost"
if(last_icon_state != program_icon_state)
program_open_overlay = "[initial(program_open_overlay)]lost"
if(last_icon_state != program_open_overlay)
computer.update_appearance()
last_icon_state = program_icon_state
last_icon_state = program_open_overlay
return
var/here_turf = get_turf(computer)
@@ -192,17 +192,17 @@
var/trackdistance = get_dist_euclidian(here_turf, target_turf)
switch(trackdistance)
if(0)
program_icon_state = "[initial(program_icon_state)]direct"
program_open_overlay = "[initial(program_open_overlay)]direct"
if(1 to 12)
program_icon_state = "[initial(program_icon_state)]close"
program_open_overlay = "[initial(program_open_overlay)]close"
if(13 to 24)
program_icon_state = "[initial(program_icon_state)]medium"
program_open_overlay = "[initial(program_open_overlay)]medium"
if(25 to INFINITY)
program_icon_state = "[initial(program_icon_state)]far"
program_open_overlay = "[initial(program_open_overlay)]far"
if(last_icon_state != program_icon_state)
if(last_icon_state != program_open_overlay)
computer.update_appearance()
last_icon_state = program_icon_state
last_icon_state = program_open_overlay
computer.setDir(get_dir(here_turf, target_turf))
//We can use process_tick to restart fast processing, since the computer will be running this constantly either way.
@@ -302,8 +302,7 @@
/datum/computer_file/program/radar/fission360
filename = "fission360"
filedesc = "Fission360"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "radarsyndicate"
program_open_overlay = "radarsyndicate"
extended_desc = "This program allows for tracking of nuclear authorization disks and warheads."
requires_ntnet = FALSE
available_on_ntnet = FALSE
@@ -2,9 +2,9 @@
filename = "ntrecords"
filedesc = "Records"
extended_desc = "Allows the user to view several basic records from the crew."
category = PROGRAM_CATEGORY_MISC
downloader_category = PROGRAM_CATEGORY_SECURITY
program_icon = "clipboard"
program_icon_state = "crew"
program_open_overlay = "crew"
tgui_id = "NtosRecords"
size = 4
usage_flags = PROGRAM_PDA | PROGRAM_LAPTOP
@@ -2,8 +2,8 @@
/datum/computer_file/program/robocontrol
filename = "botkeeper"
filedesc = "BotKeeper"
category = PROGRAM_CATEGORY_SCI
program_icon_state = "robot"
downloader_category = PROGRAM_CATEGORY_SCIENCE
program_open_overlay = "robot"
extended_desc = "A remote controller used for giving basic commands to non-sentient robots."
requires_ntnet = TRUE
size = 6
@@ -1,10 +1,10 @@
/datum/computer_file/program/robotact
filename = "robotact"
filedesc = "RoboTact"
category = PROGRAM_CATEGORY_SCI
downloader_category = PROGRAM_CATEGORY_SCIENCE
extended_desc = "A built-in app for cyborg self-management and diagnostics."
ui_header = "robotact.gif" //DEBUG -- new icon before PR
program_icon_state = "command"
program_open_overlay = "command"
requires_ntnet = FALSE
available_on_ntnet = FALSE
undeletable = TRUE
@@ -21,7 +21,7 @@
if(.)
var/obj/item/modular_computer/pda/silicon/tablet = computer
if(tablet.device_theme == PDA_THEME_SYNDICATE)
program_icon_state = "command-syndicate"
program_open_overlay = "command-syndicate"
return TRUE
return FALSE
@@ -3,9 +3,9 @@
/datum/computer_file/program/secureye
filename = "secureye"
filedesc = "SecurEye"
category = PROGRAM_CATEGORY_MISC
downloader_category = PROGRAM_CATEGORY_SECURITY
ui_header = "borg_mon.gif"
program_icon_state = "generic"
program_open_overlay = "generic"
extended_desc = "This program allows access to standard security camera networks."
requires_ntnet = TRUE
download_access = list(ACCESS_SECURITY)
@@ -1,8 +1,8 @@
/datum/computer_file/program/signal_commander
filename = "signaler"
filedesc = "SignalCommander"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "signal"
downloader_category = PROGRAM_CATEGORY_EQUIPMENT
program_open_overlay = "signal"
extended_desc = "A small built-in frequency app that sends out signaller signals with the appropriate hardware."
size = 2
tgui_id = "NtosSignaler"
@@ -1,8 +1,8 @@
/datum/computer_file/program/skill_tracker
filename = "skilltracker"
filedesc = "ExperTrak Skill Tracker"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "generic"
downloader_category = PROGRAM_CATEGORY_DEVICE
program_open_overlay = "generic"
extended_desc = "Scan and view your current marketable job skills."
size = 2
tgui_id = "NtosSkillTracker"
@@ -1,9 +1,9 @@
/datum/computer_file/program/supermatter_monitor
filename = "ntcims"
filedesc = "NT CIMS"
category = PROGRAM_CATEGORY_ENGI
downloader_category = PROGRAM_CATEGORY_ENGINEERING
ui_header = "smmon_0.gif"
program_icon_state = "smmon_0"
program_open_overlay = "smmon_0"
extended_desc = "Crystal Integrity Monitoring System, connects to specially calibrated supermatter sensors to provide information on the status of supermatter-based engines."
requires_ntnet = TRUE
download_access = list(ACCESS_CONSTRUCTION)
@@ -109,6 +109,6 @@
if(last_status != new_status)
last_status = new_status
ui_header = "smmon_[last_status].gif"
program_icon_state = "smmon_[last_status]"
program_open_overlay = "smmon_[last_status]"
if(istype(computer))
computer.update_appearance()
@@ -2,7 +2,7 @@
filename = "statusdisplay"
filedesc = "Status Display"
program_icon = "signal"
program_icon_state = "generic"
program_open_overlay = "generic"
requires_ntnet = TRUE
size = 1
@@ -1,8 +1,8 @@
/datum/computer_file/program/science
filename = "experi_track"
filedesc = "Nanotrasen Science Hub"
category = PROGRAM_CATEGORY_SCI
program_icon_state = "research"
downloader_category = PROGRAM_CATEGORY_SCIENCE
program_open_overlay = "research"
extended_desc = "Connect to the internal science server in order to assist in station research efforts."
requires_ntnet = TRUE
size = 10
@@ -2,7 +2,7 @@
filename = "themeify"
filedesc = "Themeify"
extended_desc = "This program allows configuration of your device's theme."
program_icon_state = "generic"
program_open_overlay = "generic"
undeletable = TRUE
size = 0
header_program = TRUE
@@ -1,8 +1,8 @@
/datum/computer_file/program/ntnetmonitor
filename = "wirecarp"
filedesc = "WireCarp"
category = PROGRAM_CATEGORY_MISC
program_icon_state = "comm_monitor"
downloader_category = PROGRAM_CATEGORY_SECURITY
program_open_overlay = "comm_monitor"
extended_desc = "This program monitors stationwide NTNet network, provides access to logging systems, and allows for configuration changes"
size = 12
requires_ntnet = TRUE
@@ -51,7 +51,7 @@
data["idsalarm"] = SSmodular_computers.intrusion_detection_alarm
data["ntnetlogs"] = list()
for(var/i in SSmodular_computers.logs)
for(var/i in SSmodular_computers.modpc_logs)
data["ntnetlogs"] += list(list("entry" = i))
data["tablets"] = list()