mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 12:29:46 +01:00
Modular PDAs: The End of an Era (#10319)
PDAs are dead, long live PDAs. All trace of old PDAs has been scoured from the codebase, and in its place are modular computer PDAs that are feature-equivalent. Essentially every PDA function except the Syndicate detonation feature and Notepad has been ported over, and battery life for handheld computers has been boosted alongside the addition of charging cables to make things easier.
This commit is contained in:
@@ -3,6 +3,7 @@ var/global/file_uid = 0
|
||||
/datum/computer_file
|
||||
var/filename = "NewFile" // Placehard_drive. No spacebars
|
||||
var/filetype = "XXX" // File full names are [filename].[filetype] so like NewFile.XXX in this case
|
||||
var/filedesc = null
|
||||
var/size = 1 // File size in GQ. Integers only!
|
||||
var/obj/item/computer_hardware/hard_drive/hard_drive // Harddrive that contains this file.
|
||||
var/unsendable = FALSE // Whether the file may be sent to someone via NTNet transfer or other means.
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
/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!
|
||||
filedesc = "Unknown Program" // User-friendly name of this program.
|
||||
var/program_type = PROGRAM_NORMAL // Program type, used to determine if program runs in background or not.
|
||||
var/required_access_run // List of required accesses to run the program.
|
||||
var/required_access_download // List of required accesses to download the program.
|
||||
@@ -11,7 +12,6 @@
|
||||
var/nanomodule_path // Path to nanomodule, make sure to set this if implementing new program.
|
||||
var/program_state = PROGRAM_STATE_KILLED // PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running.
|
||||
var/obj/item/modular_computer/computer // Device that runs this program.
|
||||
var/filedesc = "Unknown Program" // User-friendly name of this program.
|
||||
var/extended_desc = "N/A" // Short description of this program's function.
|
||||
var/program_icon_state // Program-specific screen icon state
|
||||
var/requires_ntnet = FALSE // Set to TRUE for program to require nonstop NTNet connection to run. If NTNet connection is lost program crashes.
|
||||
@@ -25,6 +25,7 @@
|
||||
var/ui_header // 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/color = "#FFFFFF" // The color of light the computer should emit when this program is open.
|
||||
var/service_state = PROGRAM_STATE_KILLED // PROGRAM_STATE_KILLED or PROGRAM_STATE_ACTIVE - specifies whether this program's service is running.
|
||||
var/silent = FALSE
|
||||
|
||||
/datum/computer_file/program/New(var/obj/item/modular_computer/comp)
|
||||
..()
|
||||
@@ -47,8 +48,8 @@
|
||||
/datum/computer_file/program/ui_host()
|
||||
return computer.ui_host()
|
||||
|
||||
/datum/computer_file/program/clone()
|
||||
var/datum/computer_file/program/temp = ..()
|
||||
/datum/computer_file/program/clone(var/rename = FALSE, var/computer)
|
||||
var/datum/computer_file/program/temp = ..(rename, computer)
|
||||
temp.required_access_run = required_access_run
|
||||
temp.required_access_download = required_access_download
|
||||
temp.nanomodule_path = nanomodule_path
|
||||
@@ -250,7 +251,7 @@
|
||||
// Is called when program service is being activated
|
||||
// Returns 1 if service startup was sucessfull
|
||||
/datum/computer_file/program/proc/service_activate()
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
// Is called when program service is being deactivated
|
||||
/datum/computer_file/program/proc/service_deactivate()
|
||||
|
||||
@@ -5,6 +5,13 @@
|
||||
/datum/computer_file/program/proc/event_idremoved(var/background)
|
||||
return
|
||||
|
||||
/datum/computer_file/program/proc/event_silentmode(var/background)
|
||||
return
|
||||
|
||||
// Called when an ID is unregistered from the device.
|
||||
/datum/computer_file/program/proc/event_unregistered(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(TRUE)
|
||||
@@ -13,6 +20,6 @@
|
||||
/datum/computer_file/program/proc/event_networkfailure(var/background)
|
||||
kill_program(TRUE)
|
||||
if(background)
|
||||
computer.visible_message(FONT_SMALL(SPAN_WARNING("\The [computer]'s screen displays, \"Process [filename].[filetype] (PID [rand(100,999)]) terminated - Network Error\" error")), range = 2)
|
||||
computer.output_error(FONT_SMALL(SPAN_WARNING("Process [filename].[filetype] (PID [rand(100,999)]) terminated - Network Error")))
|
||||
else
|
||||
computer.visible_message(FONT_SMALL(SPAN_WARNING("\The [computer]'s screen briefly freezes and then shows, \"NETWORK ERROR - NTNet connection lost. Please retry. If problem persists contact your system administrator.\" error.")), range = 2)
|
||||
computer.output_error(FONT_SMALL(SPAN_WARNING("NETWORK ERROR - NTNet connection lost. Please retry. If problem persists contact your system administrator.")))
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/engineering/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -43,6 +44,31 @@
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
/datum/modular_computer_app_presets/engineering/atmos
|
||||
name = "atmos"
|
||||
display_name = "Engineering - Atmospherics"
|
||||
description = "Contains the most common engineering programs and atmospheric monitoring software."
|
||||
available = TRUE
|
||||
|
||||
/datum/modular_computer_app_presets/engineering/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
new /datum/computer_file/program/chatclient(comp),
|
||||
new /datum/computer_file/program/civilian/cargoorder(comp),
|
||||
new /datum/computer_file/program/power_monitor(comp),
|
||||
new /datum/computer_file/program/alarm_monitor(comp),
|
||||
new /datum/computer_file/program/atmos_control(comp),
|
||||
new /datum/computer_file/program/rcon_console(comp),
|
||||
new /datum/computer_file/program/camera_monitor(comp),
|
||||
new /datum/computer_file/program/lighting_control(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp),
|
||||
new /datum/computer_file/program/scanner/gas(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
/datum/modular_computer_app_presets/engineering/ce
|
||||
name = "engineering_head"
|
||||
display_name = "Engineering - CE"
|
||||
@@ -51,6 +77,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/engineering/ce/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -65,7 +92,8 @@
|
||||
new /datum/computer_file/program/camera_monitor(comp),
|
||||
new /datum/computer_file/program/lighting_control(comp),
|
||||
new /datum/computer_file/program/records/employment(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp)
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp),
|
||||
new /datum/computer_file/program/scanner/gas(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
@@ -85,7 +113,8 @@
|
||||
new /datum/computer_file/program/suit_sensors(comp),
|
||||
new /datum/computer_file/program/records/medical(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp),
|
||||
new /datum/computer_file/program/chemistry_codex(comp)
|
||||
new /datum/computer_file/program/chemistry_codex(comp),
|
||||
new /datum/computer_file/program/scanner/medical(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
@@ -97,6 +126,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/medical/cmo/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -107,7 +137,9 @@
|
||||
new /datum/computer_file/program/records/employment(comp),
|
||||
new /datum/computer_file/program/records/medical(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp),
|
||||
new /datum/computer_file/program/chemistry_codex(comp)
|
||||
new /datum/computer_file/program/chemistry_codex(comp),
|
||||
new /datum/computer_file/program/scanner/medical(comp),
|
||||
new /datum/computer_file/program/scanner/science(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
@@ -128,7 +160,9 @@
|
||||
new /datum/computer_file/program/ntnetmonitor(comp),
|
||||
new /datum/computer_file/program/aidiag(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp),
|
||||
new /datum/computer_file/program/chemistry_codex(comp)
|
||||
new /datum/computer_file/program/chemistry_codex(comp),
|
||||
new /datum/computer_file/program/scanner/science(comp),
|
||||
new /datum/computer_file/program/scanner/gas(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
@@ -140,6 +174,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/research/rd/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -150,7 +185,9 @@
|
||||
new /datum/computer_file/program/aidiag(comp),
|
||||
new /datum/computer_file/program/records/employment(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp),
|
||||
new /datum/computer_file/program/chemistry_codex(comp)
|
||||
new /datum/computer_file/program/chemistry_codex(comp),
|
||||
new /datum/computer_file/program/scanner/science(comp),
|
||||
new /datum/computer_file/program/scanner/gas(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
@@ -162,6 +199,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/command/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -182,6 +220,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/command/hop/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -196,14 +235,15 @@
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
/datum/modular_computer_app_presets/captain
|
||||
/datum/modular_computer_app_presets/command/captain
|
||||
name = "captain"
|
||||
display_name = "Captain"
|
||||
description = "Contains the most important programs for the Captain."
|
||||
available = FALSE
|
||||
|
||||
/datum/modular_computer_app_presets/captain/return_install_programs(obj/item/modular_computer/comp)
|
||||
/datum/modular_computer_app_presets/command/captain/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -231,6 +271,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/security/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/nttransfer(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -280,6 +321,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/security/investigations/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/nttransfer(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -303,6 +345,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/security/hos/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/nttransfer(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -327,6 +370,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/civilian/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -338,6 +382,39 @@
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
/datum/modular_computer_app_presets/civilian/janitor
|
||||
name = "janitor"
|
||||
display_name = "Janitor"
|
||||
description = "Contains programs for janitorial service."
|
||||
available = TRUE
|
||||
|
||||
/datum/modular_computer_app_presets/civilian/janitor/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
new /datum/computer_file/program/chatclient(comp),
|
||||
new /datum/computer_file/program/civilian/cargoorder(comp),
|
||||
new /datum/computer_file/program/civilian/janitor(comp),
|
||||
new /datum/computer_file/program/game/arcade(comp),
|
||||
new /datum/computer_file/program/game/sudoku(comp),
|
||||
new /datum/computer_file/program/ntsl2_interpreter(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
/datum/modular_computer_app_presets/civilian/clown
|
||||
name = "clown"
|
||||
display_name = "Clown"
|
||||
description = "Contains programs for HONK!!!"
|
||||
available = TRUE
|
||||
|
||||
/datum/modular_computer_app_presets/civilian/mime
|
||||
name = "mime"
|
||||
display_name = "Mime"
|
||||
description = "Contains programs for janitorial service."
|
||||
available = TRUE
|
||||
|
||||
/datum/modular_computer_app_presets/supply
|
||||
name = "supply"
|
||||
display_name = "Supply"
|
||||
@@ -346,6 +423,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/supply/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -365,6 +443,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/cargo_delivery/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -382,6 +461,7 @@
|
||||
|
||||
/datum/modular_computer_app_presets/representative/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
@@ -420,11 +500,13 @@
|
||||
|
||||
/datum/modular_computer_app_presets/merc/return_install_programs(obj/item/modular_computer/comp)
|
||||
var/list/_prg_list = list(
|
||||
new /datum/computer_file/program/ntnetdownload(comp),
|
||||
new /datum/computer_file/program/filemanager(comp),
|
||||
new /datum/computer_file/program/newsbrowser(comp),
|
||||
new /datum/computer_file/program/manifest(comp),
|
||||
new /datum/computer_file/program/nttransfer(comp),
|
||||
new /datum/computer_file/program/camera_monitor/hacked(comp)
|
||||
new /datum/computer_file/program/camera_monitor/hacked(comp),
|
||||
new /datum/computer_file/program/signaler(comp)
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
/datum/computer_file/program/civilian/janitor
|
||||
filename = "janitor"
|
||||
filedesc = "Custodial Supplies Locator"
|
||||
program_icon_state = "generic"
|
||||
extended_desc = "This program is used by custodial staff to keep track of work-related supplies."
|
||||
usage_flags = PROGRAM_ALL_REGULAR
|
||||
size = 4
|
||||
required_access_run = access_janitor
|
||||
required_access_download = access_janitor
|
||||
requires_ntnet = TRUE
|
||||
available_on_ntnet = TRUE
|
||||
var/sel_type = "Mops"
|
||||
var/list/types = list("Mops", "Buckets", "Cleanbots", "Janicarts")
|
||||
|
||||
|
||||
/datum/computer_file/program/civilian/janitor/ui_interact(mob/user)
|
||||
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
|
||||
if (!ui)
|
||||
ui = new /datum/vueui/modularcomputer(user, src, "mcomputer-janitor", 500, 500, "Custodial Supplies Locator")
|
||||
ui.auto_update_content = TRUE
|
||||
ui.open()
|
||||
|
||||
/datum/computer_file/program/civilian/janitor/vueui_transfer(oldobj)
|
||||
for(var/o in SSvueui.transfer_uis(oldobj, src, "mcomputer-janitor", 500, 500, "Custodial Supplies Locator"))
|
||||
var/datum/vueui/ui = o
|
||||
ui.auto_update_content = TRUE
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/civilian/janitor/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
|
||||
. = ..()
|
||||
data = . || data
|
||||
if(!data)
|
||||
data = list()
|
||||
|
||||
var/headerdata = get_header_data(data["_PC"])
|
||||
if(headerdata)
|
||||
data["_PC"] = headerdata
|
||||
. = data
|
||||
|
||||
var/turf/p = get_turf(user)
|
||||
var/dir
|
||||
LAZYINITLIST(data["user_loc"])
|
||||
LAZYINITLIST(data["categories"])
|
||||
data["supplies"] = list()
|
||||
|
||||
VUEUI_SET_CHECK(data["user_loc"]["x"], p ? p.x : null, ., data)
|
||||
VUEUI_SET_CHECK(data["user_loc"]["y"], p ? p.y : null, ., data)
|
||||
|
||||
if(LAZYLEN(data["categories"]) != LAZYLEN(types))
|
||||
VUEUI_SET_CHECK_LIST(data["categories"], types, ., data)
|
||||
|
||||
if(!sel_type || !data["sel_category"])
|
||||
VUEUI_SET_CHECK(data["sel_category"], "Mops", ., data)
|
||||
sel_type = data["sel_category"]
|
||||
else if (sel_type != data["sel_category"])
|
||||
VUEUI_SET_CHECK(data["sel_category"], sel_type, ., data)
|
||||
|
||||
var/status = ""
|
||||
|
||||
for(var/atom/A in global.janitorial_supplies)
|
||||
if(istype(A, /obj/item/mop) && sel_type == "Mops")
|
||||
var/obj/item/mop/M = A
|
||||
status = M.reagents.total_volume ? "Wet" : "Dry"
|
||||
else if(istype(A, /obj/structure/mopbucket) && sel_type == "Buckets")
|
||||
var/obj/structure/mopbucket/B = A
|
||||
status = (B.reagents.total_volume / B.reagents.maximum_volume) * 100
|
||||
status = "[status]% filled"
|
||||
else if(istype(A, /mob/living/bot/cleanbot) && sel_type == "Cleanbots")
|
||||
var/mob/living/bot/cleanbot/C = A
|
||||
status = C.on ? "Online" : "Offline"
|
||||
else if(istype(A, /obj/structure/janitorialcart) && sel_type == "Janicarts")
|
||||
var/obj/structure/janitorialcart/J = A
|
||||
status = J.get_short_status()
|
||||
else
|
||||
continue
|
||||
|
||||
var/turf/AT = get_turf(A)
|
||||
if(AT && ARE_Z_CONNECTED(AT.z, p.z))
|
||||
dir = dir2text(get_dir(p, AT))
|
||||
if(!dir)
|
||||
dir = "ERR"
|
||||
|
||||
dir = uppertext(dir)
|
||||
|
||||
var/list/L = ++data["supplies"]
|
||||
var/idx = length(L)
|
||||
data["supplies"][idx] = list(
|
||||
"name" = A.name,
|
||||
"key" = idx,
|
||||
"x" = AT.x,
|
||||
"y" = AT.y,
|
||||
"dir" = dir,
|
||||
"status" = status
|
||||
)
|
||||
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/civilian/janitor/Topic(href, href_list)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
if(href_list["selected"])
|
||||
sel_type = href_list["selected"]
|
||||
|
||||
SSvueui.check_uis_for_change(src)
|
||||
return
|
||||
@@ -169,7 +169,7 @@
|
||||
break
|
||||
R.rank = id_card.assignment
|
||||
R.real_rank = real_title
|
||||
computer.proc_eject_id(user)
|
||||
computer.eject_id()
|
||||
if("suspend")
|
||||
if(computer && can_run(user, 1))
|
||||
id_card.assignment = "Suspended"
|
||||
|
||||
+9
-17
@@ -1,25 +1,25 @@
|
||||
/datum/computer_file/program/pai_atmos
|
||||
filename = "pai_atmos"
|
||||
/datum/computer_file/program/atmos
|
||||
filename = "atmos"
|
||||
filedesc = "Atmosphere Sensor"
|
||||
program_icon_state = "generic"
|
||||
extended_desc = "This program is for viewing local atmospheric data."
|
||||
size = 2
|
||||
|
||||
available_on_ntnet = TRUE
|
||||
usage_flags = PROGRAM_SILICON_PAI
|
||||
usage_flags = PROGRAM_ALL
|
||||
|
||||
/datum/computer_file/program/pai_atmos/ui_interact(mob/user)
|
||||
/datum/computer_file/program/atmos/ui_interact(mob/user)
|
||||
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
|
||||
if (!ui)
|
||||
ui = new /datum/vueui/modularcomputer(user, src, "mcomputer-pai-atmosphere", 400, 200, "pAI Atmosphere Sensor")
|
||||
ui = new /datum/vueui/modularcomputer(user, src, "mcomputer-atmosphere", 400, 200, "Atmosphere Sensor")
|
||||
ui.open()
|
||||
|
||||
/datum/computer_file/program/pai_atmos/vueui_transfer(oldobj)
|
||||
SSvueui.transfer_uis(oldobj, src, "mcomputer-pai-atmosphere", 400, 200, "pAI Atmosphere Sensor")
|
||||
/datum/computer_file/program/atmos/vueui_transfer(oldobj)
|
||||
SSvueui.transfer_uis(oldobj, src, "mcomputer-atmosphere", 400, 200, "Atmosphere Sensor")
|
||||
return TRUE
|
||||
|
||||
// Gaters data for ui
|
||||
/datum/computer_file/program/pai_atmos/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
|
||||
/datum/computer_file/program/atmos/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
|
||||
. = ..()
|
||||
data = . || data || list()
|
||||
// Gather data for computer header
|
||||
@@ -27,17 +27,9 @@
|
||||
if(headerdata)
|
||||
data["_PC"] = headerdata
|
||||
. = data
|
||||
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
|
||||
var/turf/T = get_turf_or_move(host.loc)
|
||||
var/turf/T = get_turf_or_move(computer)
|
||||
|
||||
|
||||
if(T)
|
||||
var/datum/gas_mixture/env = T.return_air()
|
||||
VUEUI_SET_CHECK(data["read"], TRUE, ., data)
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/computer_file/program/newsbrowser
|
||||
filename = "newsbrowser"
|
||||
filedesc = "NTNet/ExoNet News Browser"
|
||||
filedesc = "News Browser"
|
||||
extended_desc = "This program may be used to view and download news articles from the network."
|
||||
program_icon_state = "generic"
|
||||
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP | PROGRAM_TABLET | PROGRAM_STATIONBOUND | PROGRAM_WRISTBOUND
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
|
||||
/datum/nano_module/program/computer_newsbrowser
|
||||
name = "NTNet/ExoNet News Browser"
|
||||
name = "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)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/computer_file/program/chatclient
|
||||
filename = "ntnrc_client"
|
||||
filedesc = "NTNet Relay Chat Client"
|
||||
filedesc = "Chat Client"
|
||||
program_icon_state = "command"
|
||||
extended_desc = "This program allows communication over the NTNRC network."
|
||||
size = 2
|
||||
@@ -10,27 +10,54 @@
|
||||
ui_header = "ntnrc_idle.gif"
|
||||
available_on_ntnet = TRUE
|
||||
nanomodule_path = /datum/nano_module/program/computer_chatclient
|
||||
color = LIGHT_COLOR_GREEN
|
||||
silent = TRUE
|
||||
|
||||
var/last_message // Used to generate the toolbar icon
|
||||
var/username
|
||||
var/datum/ntnet_conversation/channel
|
||||
var/operator_mode = FALSE // Channel operator mode
|
||||
var/netadmin_mode = FALSE // Administrator mode (invisible to other users + bypasses passwords)
|
||||
var/set_offline = FALSE // appear "invisible"
|
||||
var/list/directmessagechannels = list()
|
||||
color = LIGHT_COLOR_GREEN
|
||||
|
||||
/datum/computer_file/program/chatclient/New()
|
||||
..()
|
||||
username = "DefaultUser[rand(100, 999)]"
|
||||
var/ringtone = "beep"
|
||||
var/syndi_auth = FALSE
|
||||
|
||||
/datum/computer_file/program/chatclient/New(var/obj/item/modular_computer/comp)
|
||||
..(comp)
|
||||
if(!comp)
|
||||
return
|
||||
|
||||
/datum/computer_file/program/chatclient/Topic(href, href_list)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
if(href_list["PRG_toggleringer"])
|
||||
. = TRUE
|
||||
silent = !silent
|
||||
|
||||
if(href_list["PRG_setringtone"])
|
||||
. = TRUE
|
||||
var/t = input(usr, "Please enter new ringtone", filedesc, ringtone) as text|null
|
||||
if(!usr.Adjacent(computer) || !t)
|
||||
return
|
||||
var/obj/item/device/uplink/hidden/H = computer.hidden_uplink
|
||||
if(istype(H) && H.check_trigger(usr, lowertext(t), lowertext(H.pda_code)))
|
||||
to_chat(usr, SPAN_NOTICE("\The [computer] softly beeps."))
|
||||
syndi_auth = TRUE
|
||||
SSnanoui.close_uis(NM)
|
||||
else
|
||||
t = sanitize(t, 20)
|
||||
ringtone = t
|
||||
|
||||
if(href_list["PRG_speak"])
|
||||
. = TRUE
|
||||
if(!channel)
|
||||
return TRUE
|
||||
var/mob/living/user = usr
|
||||
if(ishuman(user))
|
||||
user.visible_message("[SPAN_BOLD("\The [user]")] taps on [user.get_pronoun("his")] computer's screen.")
|
||||
var/message = sanitize(input(user, "Enter message or leave blank to cancel: "))
|
||||
if(!message || !channel)
|
||||
return
|
||||
@@ -43,6 +70,8 @@
|
||||
to_chat(usr, SPAN_WARNING("The target chat isn't active on your program anymore!"))
|
||||
return
|
||||
var/mob/living/user = usr
|
||||
if(ishuman(user))
|
||||
user.visible_message("[SPAN_BOLD("\The [user]")] taps on [user.get_pronoun("his")] computer's screen.")
|
||||
var/message = sanitize(input(user, "Enter message or leave blank to cancel: "))
|
||||
if(!message)
|
||||
return
|
||||
@@ -192,9 +221,10 @@
|
||||
var/names = list()
|
||||
for(var/cl in ntnet_global.chat_clients)
|
||||
var/datum/computer_file/program/chatclient/C = cl
|
||||
if(C.set_offline || C == src)
|
||||
continue
|
||||
clients[C.username] = C
|
||||
names += C.username
|
||||
names -= username // Remove ourselves
|
||||
names += "== Cancel =="
|
||||
var/picked = input(usr, "Select with whom you would like to start a conversation.") in names
|
||||
if(picked == "== Cancel ==")
|
||||
@@ -230,26 +260,67 @@
|
||||
ui_header = "ntnrc_idle.gif"
|
||||
|
||||
/datum/computer_file/program/chatclient/kill_program(var/forced = FALSE)
|
||||
if(!forced)
|
||||
var/confirm = alert("Are you sure you want to close the NTNRC Client? You will not be reachable via messaging if you do so.", "Close?", "Yes", "No")
|
||||
if((confirm != "Yes") || (CanUseTopic(usr) != STATUS_INTERACTIVE))
|
||||
return FALSE
|
||||
|
||||
channel = null
|
||||
ntnet_global.chat_clients -= src
|
||||
..(forced)
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/chatclient/run_program(var/mob/user)
|
||||
ntnet_global.chat_clients += src
|
||||
if(!computer)
|
||||
return
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
if((!computer.registered_id && !computer.register_account(src)))
|
||||
return
|
||||
if(!(src in ntnet_global.chat_clients))
|
||||
ntnet_global.chat_clients += src
|
||||
if(!username)
|
||||
username = username_from_id()
|
||||
return ..(user)
|
||||
|
||||
/datum/computer_file/program/chatclient/proc/username_from_id()
|
||||
if(istype(computer, /obj/item/modular_computer/silicon))
|
||||
var/obj/item/modular_computer/silicon/SC = computer
|
||||
return SC.computer_host.name
|
||||
if(!computer.registered_id)
|
||||
return "Unknown"
|
||||
|
||||
return "[computer.registered_id.registered_name] ([computer.registered_id.assignment])"
|
||||
|
||||
/datum/computer_file/program/chatclient/event_unregistered()
|
||||
..()
|
||||
computer.set_autorun(filename)
|
||||
ntnet_global.chat_clients -= src
|
||||
kill_program(TRUE)
|
||||
|
||||
/datum/computer_file/program/chatclient/event_silentmode()
|
||||
..()
|
||||
if(silent == computer.silent)
|
||||
silent = !silent
|
||||
|
||||
/datum/nano_module/program/computer_chatclient
|
||||
name = "NTNet Relay Chat Client"
|
||||
name = "Chat Client"
|
||||
|
||||
/datum/nano_module/program/computer_chatclient/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
|
||||
if(!ntnet_global || !ntnet_global.chat_channels)
|
||||
return
|
||||
|
||||
var/datum/computer_file/program/chatclient/C = program
|
||||
|
||||
if(C.computer.hidden_uplink && C.syndi_auth)
|
||||
if(alert(user, "Resume or close and secure?", name, "Resume", "Close") == "Resume")
|
||||
C.computer.hidden_uplink.trigger(user)
|
||||
return
|
||||
else
|
||||
C.syndi_auth = FALSE
|
||||
|
||||
var/list/data = list()
|
||||
if(program)
|
||||
data = list("_PC" = program.get_header_data())
|
||||
|
||||
var/datum/computer_file/program/chatclient/C = program
|
||||
if(!istype(C))
|
||||
return
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/datum/computer_file/program/scanner
|
||||
size = 2
|
||||
program_type = PROGRAM_SERVICE
|
||||
available_on_ntnet = FALSE
|
||||
usage_flags = PROGRAM_ALL_HANDHELD
|
||||
var/mode = null
|
||||
|
||||
/datum/computer_file/program/scanner/service_activate()
|
||||
. = ..()
|
||||
if(!computer.scan_mode)
|
||||
computer.scan_mode = mode
|
||||
return TRUE
|
||||
else
|
||||
computer.visible_message(SPAN_WARNING("Cannot activate [filedesc]: Another scanner is already active!"))
|
||||
return FALSE
|
||||
|
||||
/datum/computer_file/program/scanner/service_deactivate()
|
||||
. = ..()
|
||||
computer.scan_mode = null
|
||||
|
||||
/datum/computer_file/program/scanner/medical
|
||||
filename = "med_scanner"
|
||||
filedesc = "Medical Analyzer"
|
||||
extended_desc = "A scanning suite capable of detecting major medical problems in individuals."
|
||||
available_on_ntnet = TRUE
|
||||
required_access_run = access_medical
|
||||
required_access_download = access_medical
|
||||
mode = SCANNER_MEDICAL
|
||||
|
||||
/datum/computer_file/program/scanner/science
|
||||
filename = "sci_scanner"
|
||||
filedesc = "Reagent Analyzer"
|
||||
extended_desc = "A scanning suite capable of detecting active chemical reagents."
|
||||
available_on_ntnet = TRUE
|
||||
required_access_run = access_research
|
||||
required_access_download = access_research
|
||||
mode = SCANNER_REAGENT
|
||||
|
||||
/datum/computer_file/program/scanner/gas
|
||||
filename = "gas_scanner"
|
||||
filedesc = "Gas Analyzer"
|
||||
extended_desc = "A scanning suite capable of detecting and parsing gaseous conditions within a closed atmospheric system."
|
||||
available_on_ntnet = TRUE
|
||||
required_access_run = list(access_atmospherics, access_research)
|
||||
required_access_download = list(access_atmospherics, access_research)
|
||||
mode = SCANNER_GAS
|
||||
@@ -0,0 +1,107 @@
|
||||
/datum/computer_file/program/signaler
|
||||
filename = "signaler"
|
||||
filedesc = "Remote Signaller"
|
||||
program_icon_state = "generic"
|
||||
extended_desc = "This program can be used to send wide-range signals of various frequencies."
|
||||
size = 2
|
||||
available_on_ntnet = TRUE
|
||||
usage_flags = PROGRAM_ALL
|
||||
|
||||
var/obj/item/radio/integrated/signal/radio
|
||||
var/doorcode
|
||||
|
||||
/datum/computer_file/program/signaler/New(var/obj/item/modular_computer/comp)
|
||||
..(comp)
|
||||
if(computer && computer.computer_emagged && computer.doorcode)
|
||||
doorcode = computer.doorcode
|
||||
|
||||
/datum/computer_file/program/signaler/can_run(mob/user, loud, access_to_check, check_type)
|
||||
. = ..()
|
||||
if(!get_radio())
|
||||
computer.output_error("Cannot open [filedesc]: missing signaler hardware.", 0)
|
||||
return FALSE
|
||||
|
||||
/datum/computer_file/program/signaler/ui_interact(mob/user)
|
||||
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
|
||||
if (!ui)
|
||||
ui = new /datum/vueui/modularcomputer(user, src, "mcomputer-signaler", 400, 300, "Remote Signaller")
|
||||
ui.open()
|
||||
|
||||
/datum/computer_file/program/signaler/vueui_transfer(oldobj)
|
||||
SSvueui.transfer_uis(oldobj, src, "mcomputer-signaler", 400, 300, "Remote Signaller")
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/signaler/proc/get_radio()
|
||||
if(istype(computer, /obj/item/modular_computer/silicon))
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
return host.sradio
|
||||
else
|
||||
if(!computer || !computer.network_card?.sradio)
|
||||
return
|
||||
|
||||
return computer.network_card.sradio
|
||||
|
||||
// Gathers data for ui
|
||||
/datum/computer_file/program/signaler/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
|
||||
. = ..()
|
||||
data = . || data || list()
|
||||
// Gather data for computer header
|
||||
var/headerdata = get_header_data(data["_PC"])
|
||||
if(headerdata)
|
||||
data["_PC"] = headerdata
|
||||
. = data
|
||||
|
||||
radio = get_radio()
|
||||
if(!radio)
|
||||
return
|
||||
|
||||
VUEUI_SET_CHECK(data["code"], radio.code, ., data)
|
||||
VUEUI_SET_CHECK(data["frequency"], format_frequency(radio.frequency), ., data)
|
||||
VUEUI_SET_CHECK(data["emagged"], computer.computer_emagged, ., data)
|
||||
if(computer.computer_emagged)
|
||||
if(doorcode == "RESET")
|
||||
VUEUI_SET_CHECK(data["doorcode"], computer.doorcode, ., data)
|
||||
VUEUI_SET_CHECK(doorcode, data["doorcode"], ., data)
|
||||
|
||||
|
||||
/datum/computer_file/program/signaler/Topic(href, href_list)
|
||||
. = ..()
|
||||
|
||||
radio = get_radio()
|
||||
if(!radio)
|
||||
return
|
||||
|
||||
if(href_list["send"])
|
||||
radio.send_signal("ACTIVATE")
|
||||
computer.output_message("[icon2html(host, viewers(get_turf(src)))] *beep* *beep*", 1)
|
||||
return TRUE
|
||||
|
||||
else if(href_list["freq"])
|
||||
var/new_frequency = (radio.frequency + href_list["freq"])
|
||||
if(new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ)
|
||||
new_frequency = sanitize_frequency(new_frequency)
|
||||
radio.set_frequency(new_frequency)
|
||||
return TRUE
|
||||
|
||||
else if(href_list["code"])
|
||||
radio.code += href_list["code"]
|
||||
radio.code = Clamp(1, round(radio.code), 100)
|
||||
return TRUE
|
||||
|
||||
else if(href_list["toggledoor"])
|
||||
for(var/obj/machinery/door/blast/M in SSmachinery.all_machines)
|
||||
if(M.id == href_list["toggledoor"])
|
||||
if(M.density)
|
||||
M.open()
|
||||
else
|
||||
M.close()
|
||||
return TRUE
|
||||
|
||||
else if(href_list["resetcode"])
|
||||
if(computer?.doorcode)
|
||||
doorcode = "RESET"
|
||||
SSvueui.check_uis_for_change(src)
|
||||
return TRUE
|
||||
@@ -14,6 +14,7 @@
|
||||
if(computer.personal_ai)
|
||||
to_chat(computer.personal_ai.pai, SPAN_WARNING("pAI Access Lock systems engaged."))
|
||||
computer.pAI_lock = TRUE
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/pai_access_lock/service_deactivate()
|
||||
. = ..()
|
||||
|
||||
@@ -11,14 +11,15 @@
|
||||
. = ..()
|
||||
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
host.toggle_flashlight()
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/pai_flashlight/service_deactivate()
|
||||
. = ..()
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
/datum/computer_file/program/pai_sechud/service_activate()
|
||||
. = ..()
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
return FALSE
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
return FALSE
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
host.secHUD = TRUE
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/pai_sechud/service_deactivate()
|
||||
. = ..()
|
||||
@@ -39,12 +40,13 @@
|
||||
/datum/computer_file/program/pai_medhud/service_activate()
|
||||
. = ..()
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
return FALSE
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
return FALSE
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
host.medHUD = TRUE
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/pai_medhud/service_deactivate()
|
||||
. = ..()
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
/datum/computer_file/program/pai_signaler
|
||||
filename = "signaler"
|
||||
filedesc = "Remote Signaller"
|
||||
program_icon_state = "generic"
|
||||
extended_desc = "This program can be used to send wide-range signals of various frequencies."
|
||||
size = 3
|
||||
available_on_ntnet = 1
|
||||
usage_flags = PROGRAM_SILICON_PAI
|
||||
|
||||
/datum/computer_file/program/pai_signaler/ui_interact(mob/user)
|
||||
var/datum/vueui/ui = SSvueui.get_open_ui(user, src)
|
||||
if (!ui)
|
||||
ui = new /datum/vueui/modularcomputer(user, src, "mcomputer-pai-signaler", 400, 150, "pAI Signaller")
|
||||
ui.open()
|
||||
|
||||
/datum/computer_file/program/pai_signaler/vueui_transfer(oldobj)
|
||||
SSvueui.transfer_uis(oldobj, src, "mcomputer-pai-signaler", 400, 150, "pAI Signaller")
|
||||
return TRUE
|
||||
|
||||
// Gaters data for ui
|
||||
/datum/computer_file/program/pai_signaler/vueui_data_change(var/list/data, var/mob/user, var/datum/vueui/ui)
|
||||
. = ..()
|
||||
data = . || data || list()
|
||||
// Gather data for computer header
|
||||
var/headerdata = get_header_data(data["_PC"])
|
||||
if(headerdata)
|
||||
data["_PC"] = headerdata
|
||||
. = data
|
||||
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
|
||||
VUEUI_SET_CHECK(data["code"], host.sradio.code, ., data)
|
||||
VUEUI_SET_CHECK(data["frequency"], format_frequency(host.sradio.frequency), ., data)
|
||||
|
||||
|
||||
/datum/computer_file/program/pai_signaler/Topic(href, href_list)
|
||||
. = ..()
|
||||
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
|
||||
if(href_list["send"])
|
||||
host.sradio.send_signal("ACTIVATE")
|
||||
for(var/mob/O in hearers(1, host.loc))
|
||||
O.show_message(text("[icon2html(host, viewers(get_turf(src)))] *beep* *beep*"), 3, "*beep* *beep*", 2)
|
||||
return 1
|
||||
|
||||
else if(href_list["freq"])
|
||||
var/new_frequency = (host.sradio.frequency + href_list["freq"])
|
||||
if(new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ)
|
||||
new_frequency = sanitize_frequency(new_frequency)
|
||||
host.sradio.set_frequency(new_frequency)
|
||||
return 1
|
||||
|
||||
else if(href_list["code"])
|
||||
host.sradio.code += href_list["code"]
|
||||
host.sradio.code = round(host.sradio.code)
|
||||
host.sradio.code = min(100, host.sradio.code)
|
||||
host.sradio.code = max(1, host.sradio.code)
|
||||
return 1
|
||||
@@ -10,10 +10,10 @@
|
||||
/datum/computer_file/program/pai_translator/service_activate()
|
||||
. = ..()
|
||||
if(!istype(computer, /obj/item/modular_computer/silicon))
|
||||
return
|
||||
return FALSE
|
||||
var/obj/item/modular_computer/silicon/true_computer = computer
|
||||
if(!istype(true_computer.computer_host, /mob/living/silicon/pai))
|
||||
return
|
||||
return FALSE
|
||||
var/mob/living/silicon/pai/host = true_computer.computer_host
|
||||
|
||||
if(!host.translator_on)
|
||||
@@ -22,6 +22,7 @@
|
||||
host.add_language(LANGUAGE_SKRELLIAN)
|
||||
host.add_language(LANGUAGE_ROOTSONG)
|
||||
host.translator_on = TRUE
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/pai_translator/service_deactivate()
|
||||
. = ..()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
color = LIGHT_COLOR_GREEN
|
||||
unsendable = TRUE
|
||||
undeletable = TRUE
|
||||
size = 4
|
||||
size = 2
|
||||
available_on_ntnet = FALSE
|
||||
requires_ntnet = FALSE
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
color = LIGHT_COLOR_GREEN
|
||||
unsendable = TRUE
|
||||
undeletable = TRUE
|
||||
size = 4
|
||||
size = 2
|
||||
available_on_ntnet = FALSE
|
||||
requires_ntnet = FALSE
|
||||
|
||||
@@ -40,7 +40,10 @@
|
||||
var/list/hardware = computer.get_all_components()
|
||||
VUEUI_SET_CHECK(data["disk_size"], computer.hard_drive.max_capacity, ., data)
|
||||
VUEUI_SET_CHECK(data["disk_used"], computer.hard_drive.used_capacity, ., data)
|
||||
VUEUI_SET_CHECK(data["power_usage"], computer.last_power_usage, ., data)
|
||||
VUEUI_SET_CHECK(data["power_usage"], computer.last_power_usage * (CELLRATE / 2), ., data)
|
||||
VUEUI_SET_CHECK(data["card_slot"], computer.card_slot, ., data)
|
||||
if(computer.registered_id)
|
||||
VUEUI_SET_CHECK(data["registered"], computer.registered_id.registered_name, ., data)
|
||||
if(!computer.battery_module)
|
||||
VUEUI_SET_CHECK(data["battery"], 0, ., data)
|
||||
else
|
||||
@@ -52,4 +55,8 @@
|
||||
for(var/obj/item/computer_hardware/H in hardware)
|
||||
LAZYINITLIST(data["hardware"][H.name])
|
||||
for(var/v in list("name", "desc", "enabled", "critical", "power_usage"))
|
||||
VUEUI_SET_CHECK(data["hardware"][H.name][v], H.vars[v], ., data)
|
||||
if(v == "power_usage")
|
||||
var/watt_usage = H.vars[v] * (CELLRATE / 2)
|
||||
VUEUI_SET_CHECK(data["hardware"][H.name][v], watt_usage, ., data)
|
||||
else
|
||||
VUEUI_SET_CHECK(data["hardware"][H.name][v], H.vars[v], ., data)
|
||||
@@ -5,7 +5,7 @@
|
||||
extended_desc = "This program allows management of files."
|
||||
program_icon_state = "generic"
|
||||
color = LIGHT_COLOR_GREEN
|
||||
size = 4
|
||||
size = 2
|
||||
requires_ntnet = FALSE
|
||||
available_on_ntnet = FALSE
|
||||
undeletable = TRUE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
color = LIGHT_COLOR_GREEN
|
||||
unsendable = TRUE
|
||||
undeletable = TRUE
|
||||
size = 4
|
||||
size = 2
|
||||
requires_ntnet = TRUE
|
||||
requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD
|
||||
available_on_ntnet = 0
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
if(href_list["download"])
|
||||
var/datum/computer_file/program/PRG = ntnet_global.find_ntnet_file_by_name(href_list["download"])
|
||||
|
||||
|
||||
if(!istype(PRG))
|
||||
return 1
|
||||
return add_to_queue(PRG, ui.user)
|
||||
@@ -126,7 +126,7 @@
|
||||
generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from unspecified server.")
|
||||
|
||||
|
||||
download_files[PRG.filename] = PRG.clone()
|
||||
download_files[PRG.filename] = PRG.clone(FALSE, computer)
|
||||
queue_size += PRG.size
|
||||
download_queue[PRG.filename] = 0
|
||||
for(var/i in SSvueui.get_open_uis(src))
|
||||
@@ -224,9 +224,8 @@
|
||||
|
||||
if(download_queue[active_download] >= active_download_file.size)
|
||||
finish_from_queue(active_download)
|
||||
active_download = null
|
||||
playsound(get_turf(computer), 'sound/machines/ping.ogg', 40, 0)
|
||||
computer.output_message("[icon2html(computer, viewers(get_turf(computer)))] <b>[capitalize_first_letters(computer)]</b> pings, \"Software download completed successfully!\"", 1)
|
||||
computer.output_message("[icon2html(computer, viewers(get_turf(computer)), computer.icon_state)] <b>[capitalize_first_letters(computer.name)]</b> pings: \"[active_download_file.filedesc ? active_download_file.filedesc : active_download_file.filename] downloaded successfully!\"", 1)
|
||||
active_download = null
|
||||
|
||||
SSvueui.check_uis_for_change(src)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user