mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-14 17:36:52 +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:
@@ -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