mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 13:38:41 +01:00
PDA general maintenance (NTNet downloader rework) (#79741)
## About The Pull Request I deleted the documentation file of ModPCs because it was barebones and had no new information to give that autodoc couldn't. Just to make sure this isn't a net-negative, I improved on much of the autodoc and comments in general around ModPC code to help people understand easier what's going on around it. I also renamed vars that were too easily confused with other var names, and reworked the ntnet downloader a little; - it now has a search bar - it now has more sections to scroll through, hopefully making it more accurate and easy to find what you need. - also organized the apps that were previously shoved in 'other'. - i also upgraded it to a .tsx because why not video demonstration https://github.com/tgstation/tgstation/assets/53777086/cbba4c1c-b8a8-4ba4-8628-aea8389999fc ## Why It's Good For The Game Adds in a lot of comments that were previously missing, clears up some sources of confusion within ModPC code, and improves NTNet Downloader, something I've procrastinated on doing for a very long time now. ## Changelog 🆑 qol: NTNet Downloader now has a search bar, and programs are now better sorted. /🆑
This commit is contained in:
@@ -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,57 +0,0 @@
|
||||
# Modular computer programs
|
||||
|
||||
How module computer programs work
|
||||
|
||||
Ok. so a quick rundown on how to make a program. This is kind of a shitty documentation, but oh well I was asked to.
|
||||
|
||||
## Base setup
|
||||
|
||||
This is how the base program is setup. the rest is mostly tgui stuff. I'll use the ntnetmonitor as a base
|
||||
|
||||
```DM
|
||||
/datum/computer_file/program/ntnetmonitor
|
||||
/// This is obviously the name of the file itself. not much to be said
|
||||
filename = "ntmonitor"
|
||||
|
||||
/// This is sort of the official name. it's what shows up on the main menu
|
||||
filedesc = "NTNet Diagnostics and Monitoring"
|
||||
|
||||
/// This is what the screen will look like when the program is active
|
||||
program_icon_state = "comm_monitor"
|
||||
|
||||
/// This is a sort of a description, visible when looking on the ntnet
|
||||
extended_desc = "This program is a dummy."
|
||||
|
||||
/// size of the program. Big programs need more hard drive space. Don't
|
||||
/// make it too big though.
|
||||
size = 12
|
||||
|
||||
/// If this is set, the program will not run without an ntnet connection,
|
||||
/// and will close if the connection is lost. Mainly for primarily online
|
||||
/// programs.
|
||||
requires_ntnet = 1
|
||||
|
||||
/// This is access required to run the program itself.
|
||||
run_access = access_network
|
||||
|
||||
/// This is the access needed to download from ntnet or host on the ptp
|
||||
/// program. This is what you want to use most of the time.
|
||||
download_access = access_change_ids
|
||||
|
||||
/// If it's available to download on ntnet. pretty self explanatory.
|
||||
available_on_ntnet = 1
|
||||
|
||||
/// ditto but on emagged syndie net. Use this for antag programs
|
||||
available_on_syndinet = 0
|
||||
|
||||
/// Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_PDA combination)
|
||||
/// or PROGRAM_ALL. Use this to limit what kind of machines can run the
|
||||
/// program. For example, comms program should be limited to consoles and laptops.
|
||||
usage_flags = PROGRAM_ALL
|
||||
|
||||
/// This one is kinda cool. If you have the program minimized, this will
|
||||
/// show up in the header of the computer screen. You can even have the
|
||||
/// program change what the header is based on the situation! See `alarm.dm`
|
||||
/// for an example.
|
||||
var/ui_header = "downloader_finished.gif"
|
||||
```
|
||||
@@ -18,10 +18,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 +36,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 +57,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
|
||||
|
||||
+7
-8
@@ -2,8 +2,7 @@
|
||||
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
|
||||
|
||||
@@ -45,7 +44,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 +58,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 +67,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 +82,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 +128,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"
|
||||
|
||||
+2
-2
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user