diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index 753df9896f2..4d23903abfa 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -35139,6 +35139,7 @@
},
/area/crew_quarters/hor)
"bzN" = (
+/obj/machinery/modular_computer/console/preset/research,
/turf/open/floor/plasteel/warnwhite{
dir = 6
},
@@ -47471,6 +47472,7 @@
/obj/machinery/power/terminal{
dir = 4
},
+/obj/machinery/ntnet_relay,
/turf/open/floor/bluegrid{
name = "Mainframe Base";
initial_gas_mix = "n2=100;TEMP=80"
@@ -49066,13 +49068,11 @@
/turf/open/floor/plating,
/area/maintenance/aft)
"cdk" = (
-/obj/machinery/computer/monitor{
- name = "primary power monitoring console"
- },
/obj/structure/cable{
icon_state = "0-2";
d2 = 2
},
+/obj/machinery/modular_computer/console/preset/engineering,
/turf/open/floor/plasteel,
/area/engine/engineering)
"cdl" = (
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 2a4b37d4fd4..0e267848fe6 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -36,7 +36,7 @@
playsound(loc, 'sound/items/Ratchet.ogg', 75, 1)
return
- if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G, /obj/item/ammo_box/magazine/recharge))
+ if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G, /obj/item/ammo_box/magazine/recharge) || istype(G, /obj/item/weapon/computer_hardware/battery_module))
if(anchored)
if(charging || panel_open)
return 1
@@ -127,6 +127,14 @@
use_power(200 * recharge_coeff)
using_power = 1
+ if(istype(charging, /obj/item/weapon/gun/energy))
+ var/obj/item/weapon/computer_hardware/battery_module/B = charging
+ if(B.battery)
+ if(B.battery.charge < B.battery.maxcharge)
+ B.battery.give(B.battery.chargerate * recharge_coeff)
+ use_power(200 * recharge_coeff)
+ using_power = 1
+
update_icon(using_power)
/obj/machinery/recharger/power_change()
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 95a6e9909f7..980f9b8c882 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -30,6 +30,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 40, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 25, one_per_turf = 1, on_floor = 1), \
+/* new/datum/stack_recipe("modular console", /obj/machinery/modular_computer/console/buildable/, 10, time = 25, one_per_turf = 1, on_floor = 1), \*/
new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 50, one_per_turf = 1, on_floor = 1), \
diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm
index ca83278c923..5ee5114ce07 100644
--- a/code/modules/client/asset_cache.dm
+++ b/code/modules/client/asset_cache.dm
@@ -179,6 +179,36 @@ You can set verify to TRUE if you want send() to sleep until the client has the
"tgui.js" = 'tgui/assets/tgui.js'
)
+/datum/asset/simple/headers
+ assets = list(
+ "alarm_green.gif" = 'icons/program_icons/alarm_green.gif',
+ "alarm_red.gif" = 'icons/program_icons/alarm_red.gif',
+ "batt_5.gif" = 'icons/program_icons/batt_5.gif',
+ "batt_20.gif" = 'icons/program_icons/batt_20.gif',
+ "batt_40.gif" = 'icons/program_icons/batt_40.gif',
+ "batt_60.gif" = 'icons/program_icons/batt_60.gif',
+ "batt_80.gif" = 'icons/program_icons/batt_80.gif',
+ "batt_100.gif" = 'icons/program_icons/batt_100.gif',
+ "charging.gif" = 'icons/program_icons/charging.gif',
+ "downloader_finished.gif" = 'icons/program_icons/downloader_finished.gif',
+ "downloader_running.gif" = 'icons/program_icons/downloader_running.gif',
+ "ntnrc_idle.gif" = 'icons/program_icons/ntnrc_idle.gif',
+ "ntnrc_new.gif" = 'icons/program_icons/ntnrc_new.gif',
+ "power_norm.gif" = 'icons/program_icons/power_norm.gif',
+ "power_warn.gif" = 'icons/program_icons/power_warn.gif',
+ "sig_high.gif" = 'icons/program_icons/sig_high.gif',
+ "sig_low.gif" = 'icons/program_icons/sig_low.gif',
+ "sig_lan.gif" = 'icons/program_icons/sig_lan.gif',
+ "sig_none.gif" = 'icons/program_icons/sig_none.gif',
+ )
+
+
+
+
+
+
+
+
/datum/asset/simple/pda
assets = list(
"pda_atmos.png" = 'icons/pda_icons/pda_atmos.png',
diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm
index 9a1822fad7e..13686960cdc 100644
--- a/code/modules/jobs/job_types/assistant.dm
+++ b/code/modules/jobs/job_types/assistant.dm
@@ -14,6 +14,7 @@ Assistant
minimal_access = list() //See /datum/job/assistant/get_access()
outfit = /datum/outfit/job/assistant
+
/datum/job/assistant/get_access()
if((config.jobs_have_maint_access & ASSISTANTS_HAVE_MAINT_ACCESS) || !config.jobs_have_minimal_access) //Config has assistant maint access set
. = ..()
@@ -31,6 +32,7 @@ Assistant
/datum/outfit/job/assistant
name = "Assistant"
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H)
..()
diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm
index b605a977be8..e1987dbdd30 100644
--- a/code/modules/jobs/job_types/captain.dm
+++ b/code/modules/jobs/job_types/captain.dm
@@ -35,7 +35,7 @@ Captain
suit = /obj/item/clothing/suit/armor/vest/capcarapace
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/caphat
- backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1, /obj/item/station_charter=1)
+ backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1, /obj/item/station_charter=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
backpack = /obj/item/weapon/storage/backpack/captain
satchel = /obj/item/weapon/storage/backpack/satchel/cap
@@ -99,7 +99,7 @@ Head of Personnel
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hopcap
backpack_contents = list(/obj/item/weapon/storage/box/ids=1,\
- /obj/item/weapon/melee/classic_baton/telescopic=1)
+ /obj/item/weapon/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
/datum/outfit/job/hop/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm
index 6cc148adfbd..1ab91a61d11 100644
--- a/code/modules/jobs/job_types/cargo_service.dm
+++ b/code/modules/jobs/job_types/cargo_service.dm
@@ -26,6 +26,7 @@ Quartermaster
shoes = /obj/item/clothing/shoes/sneakers/brown
glasses = /obj/item/clothing/glasses/sunglasses
l_hand = /obj/item/weapon/clipboard
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
/*
Cargo Technician
@@ -52,6 +53,7 @@ Cargo Technician
belt = /obj/item/device/pda/cargo
ears = /obj/item/device/radio/headset/headset_cargo
uniform = /obj/item/clothing/under/rank/cargotech
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
/*
@@ -92,6 +94,7 @@ Shaft Miner
satchel = /obj/item/weapon/storage/backpack/satchel/explorer
dufflebag = /obj/item/weapon/storage/backpack/dufflebag
box = /obj/item/weapon/storage/box/survival_mining
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
/*
Bartender
@@ -121,7 +124,7 @@ Bartender
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/bartender
suit = /obj/item/clothing/suit/armor/vest
- backpack_contents = list(/obj/item/weapon/storage/box/beanbag=1)
+ backpack_contents = list(/obj/item/weapon/storage/box/beanbag=1,/obj/item/modular_computer/tablet/preset/cheap=1)
shoes = /obj/item/clothing/shoes/laceup
/*
@@ -152,6 +155,7 @@ Cook
uniform = /obj/item/clothing/under/rank/chef
suit = /obj/item/clothing/suit/toggle/chef
head = /obj/item/clothing/head/chefhat
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H)
..()
@@ -200,6 +204,7 @@ Botanist
backpack = /obj/item/weapon/storage/backpack/botany
satchel = /obj/item/weapon/storage/backpack/satchel/hyd
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
/*
@@ -228,3 +233,4 @@ Janitor
belt = /obj/item/device/pda/janitor
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/janitor
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm
index faa6818ec73..5a2071b1404 100644
--- a/code/modules/jobs/job_types/civilian.dm
+++ b/code/modules/jobs/job_types/civilian.dm
@@ -31,7 +31,8 @@ Clown
/obj/item/weapon/reagent_containers/spray/waterflower = 1,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1,
/obj/item/device/megaphone/clown = 1,
- /obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_laughter = 1
+ /obj/item/weapon/reagent_containers/food/drinks/soda_cans/canned_laughter = 1,
+ /obj/item/modular_computer/tablet/preset/advanced = 1
)
backpack = /obj/item/weapon/storage/backpack/clown
@@ -88,7 +89,7 @@ Mime
head = /obj/item/clothing/head/beret
suit = /obj/item/clothing/suit/suspenders
backpack_contents = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing=1,\
- /obj/item/toy/crayon/mime=1)
+ /obj/item/toy/crayon/mime=1,/obj/item/modular_computer/tablet/preset/cheap = 1)
backpack = /obj/item/weapon/storage/backpack/mime
satchel = /obj/item/weapon/storage/backpack/mime
@@ -165,6 +166,7 @@ Lawyer
shoes = /obj/item/clothing/shoes/laceup
l_hand = /obj/item/weapon/storage/briefcase/lawyer
l_pocket = /obj/item/device/laser_pointer
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/civilian_chaplain.dm
index 9eaedeb2552..2bb570bcdcc 100644
--- a/code/modules/jobs/job_types/civilian_chaplain.dm
+++ b/code/modules/jobs/job_types/civilian_chaplain.dm
@@ -26,6 +26,7 @@ Chaplain
backpack_contents = list(/obj/item/device/camera/spooky = 1)
backpack = /obj/item/weapon/storage/backpack/cultpack
satchel = /obj/item/weapon/storage/backpack/cultpack
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm
index 77bac526440..033288a82e2 100644
--- a/code/modules/jobs/job_types/engineering.dm
+++ b/code/modules/jobs/job_types/engineering.dm
@@ -36,7 +36,7 @@ Chief Engineer
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/hardhat/white
gloves = /obj/item/clothing/gloves/color/black/ce
- backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
+ backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1,/obj/item/modular_computer/tablet/preset/advanced = 1)
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel/eng
@@ -85,6 +85,7 @@ Station Engineer
r_pocket = /obj/item/device/t_scanner
backpack = /obj/item/weapon/storage/backpack/industrial
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap=1)
satchel = /obj/item/weapon/storage/backpack/satchel/eng
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
box = /obj/item/weapon/storage/box/engineer
@@ -122,5 +123,6 @@ Atmospheric Technician
backpack = /obj/item/weapon/storage/backpack/industrial
satchel = /obj/item/weapon/storage/backpack/satchel/eng
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/engineering
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
box = /obj/item/weapon/storage/box/engineer
pda_slot = slot_l_store
\ No newline at end of file
diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm
index 1e1b2d71311..0c3f477f232 100644
--- a/code/modules/jobs/job_types/medical.dm
+++ b/code/modules/jobs/job_types/medical.dm
@@ -34,7 +34,7 @@ Chief Medical Officer
suit = /obj/item/clothing/suit/toggle/labcoat/cmo
l_hand = /obj/item/weapon/storage/firstaid/regular
suit_store = /obj/item/device/flashlight/pen
- backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
+ backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1,/obj/item/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel/med
@@ -81,6 +81,7 @@ Medical Doctor
backpack = /obj/item/weapon/storage/backpack/medic
satchel = /obj/item/weapon/storage/backpack/satchel/med
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/*
Chemist
@@ -114,6 +115,7 @@ Chemist
backpack = /obj/item/weapon/storage/backpack/chemistry
satchel = /obj/item/weapon/storage/backpack/satchel/chem
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/*
Geneticist
@@ -147,6 +149,7 @@ Geneticist
backpack = /obj/item/weapon/storage/backpack/genetics
satchel = /obj/item/weapon/storage/backpack/satchel/gen
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/*
Virologist
@@ -181,3 +184,4 @@ Virologist
backpack = /obj/item/weapon/storage/backpack/virology
satchel = /obj/item/weapon/storage/backpack/satchel/vir
dufflebag = /obj/item/weapon/storage/backpack/dufflebag/med
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm
index fa163abbf8c..1ecf799a4ab 100644
--- a/code/modules/jobs/job_types/science.dm
+++ b/code/modules/jobs/job_types/science.dm
@@ -38,7 +38,7 @@ Research Director
suit = /obj/item/clothing/suit/toggle/labcoat
l_hand = /obj/item/weapon/clipboard
l_pocket = /obj/item/device/laser_pointer
- backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1)
+ backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1,/obj/item/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel/tox
@@ -81,6 +81,7 @@ Scientist
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel/tox
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
/*
Roboticist
@@ -112,5 +113,6 @@ Roboticist
backpack = /obj/item/weapon/storage/backpack/science
satchel = /obj/item/weapon/storage/backpack/satchel/tox
+ backpack_contents = list(/obj/item/modular_computer/tablet/preset/cheap = 1)
pda_slot = slot_l_store
diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm
index ec5b4a2db64..c683c233741 100644
--- a/code/modules/jobs/job_types/security.dm
+++ b/code/modules/jobs/job_types/security.dm
@@ -46,7 +46,7 @@ Head of Security
suit_store = /obj/item/weapon/gun/energy/gun
r_pocket = /obj/item/device/assembly/flash/handheld
l_pocket = /obj/item/weapon/restraints/handcuffs
- backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1)
+ backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel/sec
@@ -104,7 +104,7 @@ Warden
r_pocket = /obj/item/device/assembly/flash/handheld
l_pocket = /obj/item/weapon/restraints/handcuffs
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
- backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1)
+ backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1,/obj/item/modular_computer/tablet/preset/advanced=1)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel/sec
@@ -158,7 +158,7 @@ Detective
backpack_contents = list(/obj/item/weapon/storage/box/evidence=1,\
/obj/item/device/detective_scanner=1,\
/obj/item/weapon/melee/classic_baton=1,\
- /obj/item/weapon/reagent_containers/food/drinks/flask/det)
+ /obj/item/weapon/reagent_containers/food/drinks/flask/det=1,/obj/item/modular_computer/tablet/preset/cheap=1)
mask = /obj/item/clothing/mask/cigarette
/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -214,7 +214,7 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science")
l_pocket = /obj/item/weapon/restraints/handcuffs
r_pocket = /obj/item/device/assembly/flash/handheld
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
- backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1)
+ backpack_contents = list(/obj/item/weapon/melee/baton/loaded=1,/obj/item/modular_computer/tablet/preset/advanced = 1)
backpack = /obj/item/weapon/storage/backpack/security
satchel = /obj/item/weapon/storage/backpack/satchel/sec
diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm
index a3310dec696..fad69527bb3 100644
--- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm
+++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm
@@ -1,4 +1,4 @@
-var/global/ntnrc_uid = 0
+var/global/static/ntnrc_uid = 0
/datum/ntnet_conversation/
var/id = null
@@ -27,10 +27,7 @@ var/global/ntnrc_uid = 0
/datum/ntnet_conversation/proc/trim_message_list()
if(messages.len <= 50)
return
- for(var/message in messages)
- messages -= message
- if(messages <= 50)
- return
+ messages = messages.Copy(messages.len-50 ,0)
/datum/ntnet_conversation/proc/add_client(var/datum/computer_file/program/chatclient/C)
if(!istype(C))
diff --git a/code/modules/modular_computers/NTNet/NTNet.dm b/code/modules/modular_computers/NTNet/NTNet.dm
index d1d67403d9e..498bd206b7f 100644
--- a/code/modules/modular_computers/NTNet/NTNet.dm
+++ b/code/modules/modular_computers/NTNet/NTNet.dm
@@ -35,7 +35,7 @@ var/global/datum/ntnet/ntnet_global = new()
add_log("NTNet logging system activated.")
// Simplified logging: Adds a log. log_string is mandatory parameter, source is optional.
-/datum/ntnet/proc/add_log(var/log_string, var/obj/item/weapon/computer_hardware/network_card/source = null)
+/datum/ntnet/proc/add_log(log_string, obj/item/weapon/computer_hardware/network_card/source = null)
var/log_text = "[worldtime2text()] - "
if(source)
log_text += "[source.get_network_tag()] - "
@@ -44,23 +44,22 @@ var/global/datum/ntnet/ntnet_global = new()
log_text += log_string
logs.Add(log_text)
+
+ // We have too many logs, remove the oldest entries until we get into the limit
if(logs.len > setting_maxlogcount)
- // We have too many logs, remove the oldest entries until we get into the limit
- for(var/L in logs)
- if(logs.len > setting_maxlogcount)
- logs.Remove(L)
- else
- break
+ logs = logs.Copy(logs.len-setting_maxlogcount,0)
+
// Checks whether NTNet operates. If parameter is passed checks whether specific function is enabled.
-/datum/ntnet/proc/check_function(var/specific_action = 0)
+/datum/ntnet/proc/check_function(specific_action = 0)
if(!relays || !relays.len) // No relays found. NTNet is down
return 0
var/operating = 0
// Check all relays. If we have at least one working relay, network is up.
- for(var/obj/machinery/ntnet_relay/R in relays)
+ for(var/M in relays)
+ var/obj/machinery/ntnet_relay/R = M
if(R.is_operational())
operating = 1
break
@@ -68,14 +67,15 @@ var/global/datum/ntnet/ntnet_global = new()
if(setting_disabled)
return 0
- if(specific_action == NTNET_SOFTWAREDOWNLOAD)
- return (operating && setting_softwaredownload)
- if(specific_action == NTNET_PEERTOPEER)
- return (operating && setting_peertopeer)
- if(specific_action == NTNET_COMMUNICATION)
- return (operating && setting_communication)
- if(specific_action == NTNET_SYSTEMCONTROL)
- return (operating && setting_systemcontrol)
+ switch(specific_action)
+ if(NTNET_SOFTWAREDOWNLOAD)
+ return (operating && setting_softwaredownload)
+ if(NTNET_PEERTOPEER)
+ return (operating && setting_peertopeer)
+ if(NTNET_COMMUNICATION)
+ return (operating && setting_communication)
+ if(NTNET_SYSTEMCONTROL)
+ return (operating && setting_systemcontrol)
return operating
// Builds lists that contain downloadable software.
@@ -94,11 +94,13 @@ var/global/datum/ntnet/ntnet_global = new()
available_antag_software.Add(prog)
// Attempts to find a downloadable file according to filename var
-/datum/ntnet/proc/find_ntnet_file_by_name(var/filename)
- for(var/datum/computer_file/program/P in available_station_software)
+/datum/ntnet/proc/find_ntnet_file_by_name(filename)
+ for(var/N in available_station_software)
+ var/datum/computer_file/program/P = N
if(filename == P.filename)
return P
- for(var/datum/computer_file/program/P in available_antag_software)
+ for(var/N in available_antag_software)
+ var/datum/computer_file/program/P = N
if(filename == P.filename)
return P
@@ -116,7 +118,7 @@ var/global/datum/ntnet/ntnet_global = new()
add_log("-!- LOGS DELETED BY SYSTEM OPERATOR -!-")
// Updates maximal amount of stored logs. Use this instead of setting the number, it performs required checks.
-/datum/ntnet/proc/update_max_log_count(var/lognumber)
+/datum/ntnet/proc/update_max_log_count(lognumber)
if(!lognumber)
return 0
// Trim the value if necessary
@@ -124,7 +126,7 @@ var/global/datum/ntnet/ntnet_global = new()
setting_maxlogcount = lognumber
add_log("Configuration Updated. Now keeping [setting_maxlogcount] logs in system memory.")
-/datum/ntnet/proc/toggle_function(var/function)
+/datum/ntnet/proc/toggle_function(function)
if(!function)
return
function = text2num(function)
diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm
index 00c6447f7e6..013a4b6a29d 100644
--- a/code/modules/modular_computers/NTNet/NTNet_relay.dm
+++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm
@@ -91,34 +91,9 @@
-/*
-
- ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
- if (!ui)
- ui = new(user, src, ui_key, "ntnet_relay.tmpl", "NTNet Quantum Relay", 500, 300, state = state)
- ui.set_initial_data(data)
- ui.open()
- ui.set_auto_update(1)
-
-*/
-
-/obj/machinery/ntnet_relay/attack_hand(var/mob/living/user)
+/obj/machinery/ntnet_relay/attack_hand(mob/living/user)
ui_interact(user)
-/*
-/obj/machinery/ntnet_relay/Topic(href, href_list)
- if(..())
- return 1
- if(href_list["restart"])
- dos_overload = 0
- dos_failure = 0
- update_icon()
- ntnet_global.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.")
- else if(href_list["toggle"])
- enabled = !enabled
- ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].")
- update_icon()
-*/
/obj/machinery/ntnet_relay/New()
uid = gl_uid
gl_uid++
diff --git a/code/modules/modular_computers/computers/item/modular_computer.dm b/code/modules/modular_computers/computers/item/modular_computer.dm
index 780484b44a8..a9df960cb5d 100644
--- a/code/modules/modular_computers/computers/item/modular_computer.dm
+++ b/code/modules/modular_computers/computers/item/modular_computer.dm
@@ -45,7 +45,6 @@
var/obj/item/weapon/computer_hardware/hard_drive/portable/portable_drive // Portable data storage
var/list/idle_threads = list() // Idle programs on background. They still receive process calls but can't be interacted with.
- var/activetemplate = "computer_main"
var/obj/physical = null
@@ -97,7 +96,8 @@
if(active_program)
active_program.event_idremoved(0)
- for(var/datum/computer_file/program/P in idle_threads)
+ for(var/I in idle_threads)
+ var/datum/computer_file/program/P = I
P.event_idremoved(1)
card_slot.stored_card.forceMove(get_turf(src))
@@ -152,7 +152,8 @@
kill_program(1)
machines.Remove(src)
STOP_PROCESSING(SSmachine, src)
- for(var/obj/item/weapon/computer_hardware/CH in src.get_all_components())
+ for(var/H in src.get_all_components())
+ var/obj/item/weapon/computer_hardware/CH = H
uninstall_component(null, CH)
qdel(CH)
return ..()
@@ -162,9 +163,7 @@
overlays.Cut()
if(!enabled)
- //set_light(0)
return
- //set_light(light_strength)
if(active_program)
overlays.Add(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu)
else
@@ -182,10 +181,10 @@
if(ui)
ui.close()
return 0
-// if((!battery_module || !battery_module.battery.charge) && !check_power_override())
-// if(ui)
-// ui.close()
-// return 0
+ if((!battery_module || !battery_module.battery.charge) && !check_power_override())
+ if(ui)
+ ui.close()
+ return 0
// If we have an active program switch to it now.
if(active_program)
@@ -202,9 +201,11 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
-// ui = new(user, src, ui_key, "laptop_mainscreen", "NTOS Main Menu", 400, 500)
- ui = new(user, src, ui_key, activetemplate, "Main menu", 400, 500, master_ui, state)
-// ui.set_initial_data(data)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+ ui = new(user, src, ui_key, "computer_main", "NTOS Main menu", 400, 500, master_ui, state)
ui.open()
ui.set_autoupdate(state = 1)
@@ -246,7 +247,8 @@
physical.visible_message("\The [src] breaks apart!")
var/turf/newloc = get_turf(src)
new /obj/item/stack/sheet/metal(newloc, round(steel_sheet_cost/2))
- for(var/obj/item/weapon/computer_hardware/H in get_all_components())
+ for(var/C in get_all_components())
+ var/obj/item/weapon/computer_hardware/H = C
uninstall_component(null, H)
H.forceMove(newloc)
if(prob(25))
@@ -289,7 +291,8 @@
if(active_program && active_program.requires_ntnet && !get_ntnet_status(active_program.requires_ntnet_feature)) // Active program requires NTNet to run but we've just lost connection. Crash.
active_program.event_networkfailure(0)
- for(var/datum/computer_file/program/P in idle_threads)
+ for(var/I in idle_threads)
+ var/datum/computer_file/program/P = I
if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature))
P.event_networkfailure(1)
@@ -301,7 +304,8 @@
else
active_program = null
- for(var/datum/computer_file/program/P in idle_threads)
+ for(var/I in idle_threads)
+ var/datum/computer_file/program/P = I
if(P.program_state != PROGRAM_STATE_KILLED)
P.process_tick()
P.ntnet_status = get_ntnet_status()
@@ -349,7 +353,8 @@
if(idle_threads.len)
var/list/program_headers = list()
- for(var/datum/computer_file/program/P in idle_threads)
+ for(var/I in idle_threads)
+ var/datum/computer_file/program/P = I
if(!P.ui_header)
continue
program_headers.Add(list(list(
@@ -364,7 +369,7 @@
return data
// Relays kill program request to currently active program. Use this to quit current program.
-/obj/item/modular_computer/proc/kill_program(var/forced = 0)
+/obj/item/modular_computer/proc/kill_program(forced = 0)
if(active_program)
active_program.kill_program(forced)
active_program = null
@@ -374,18 +379,18 @@
update_icon()
// Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on)
-/obj/item/modular_computer/proc/get_ntnet_status(var/specific_action = 0)
+/obj/item/modular_computer/proc/get_ntnet_status(specific_action = 0)
if(network_card)
return network_card.get_signal(specific_action)
else
return 0
-/obj/item/modular_computer/proc/add_log(var/text)
+/obj/item/modular_computer/proc/add_log(text)
if(!get_ntnet_status())
return 0
return ntnet_global.add_log(text, network_card)
-/obj/item/modular_computer/proc/shutdown_computer(var/loud = 1)
+/obj/item/modular_computer/proc/shutdown_computer(loud = 1)
kill_program(1)
for(var/datum/computer_file/program/P in idle_threads)
P.kill_program(1)
@@ -473,12 +478,13 @@
return
// Used in following function to reduce copypaste
-/obj/item/modular_computer/proc/power_failure(var/malfunction = 0)
+/obj/item/modular_computer/proc/power_failure(malfunction = 0)
if(enabled) // Shut down the computer
physical.visible_message("\The [src]'s screen flickers \"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\" warning as it shuts down unexpectedly.")
if(active_program)
active_program.event_powerfailure(0)
- for(var/datum/computer_file/program/PRG in idle_threads)
+ for(var/I in idle_threads)
+ var/datum/computer_file/program/PRG = I
PRG.event_powerfailure(1)
shutdown_computer(0)
@@ -502,7 +508,7 @@
last_power_usage = power_usage
-/obj/item/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
+/obj/item/modular_computer/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/card/id)) // ID Card, try to insert it.
var/obj/item/weapon/card/id/I = W
if(!card_slot)
@@ -588,7 +594,7 @@
return
// Attempts to install the hardware into apropriate slot.
-/obj/item/modular_computer/proc/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0)
+/obj/item/modular_computer/proc/try_install_component(mob/living/user, obj/item/weapon/computer_hardware/H, found = 0)
// "USB" flash drive.
if(istype(H, /obj/item/weapon/computer_hardware/hard_drive/portable))
if(portable_drive)
@@ -640,7 +646,7 @@
H.forceMove(src)
// Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware.
-/obj/item/modular_computer/proc/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0)
+/obj/item/modular_computer/proc/uninstall_component(mob/living/user, obj/item/weapon/computer_hardware/H, found = 0, critical = 0)
if(portable_drive == H)
portable_drive = null
found = 1
@@ -677,7 +683,7 @@
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
-/obj/item/modular_computer/proc/find_hardware_by_name(var/name)
+/obj/item/modular_computer/proc/find_hardware_by_name(name)
if(portable_drive && (portable_drive.name == name))
return portable_drive
if(hard_drive && (hard_drive.name == name))
@@ -760,17 +766,19 @@
*/
-/obj/item/modular_computer/proc/take_damage(var/amount, var/component_probability, var/damage_casing = 1, var/randomize = 1)
+/obj/item/modular_computer/proc/take_damage(amount, component_probability, damage_casing = 1, randomize = 1)
if(randomize)
// 75%-125%, rand() works with integers, apparently.
amount *= (rand(75, 125) / 100.0)
amount = round(amount)
if(damage_casing)
damage += amount
+ damage = max(0,min(max_damage,damage))
// damage = between(0, damage, max_damage)
if(component_probability)
- for(var/obj/item/weapon/computer_hardware/H in get_all_components())
+ for(var/I in get_all_components())
+ var/obj/item/weapon/computer_hardware/H = I
if(prob(component_probability))
H.take_damage(round(amount / 2))
@@ -779,17 +787,17 @@
// Stronger explosions cause serious damage to internal components
// Minor explosions are mostly mitigitated by casing.
-/obj/item/modular_computer/ex_act(var/severity)
+/obj/item/modular_computer/ex_act(severity)
take_damage(rand(100,200) / severity, 30 / severity)
// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components
-/obj/item/modular_computer/emp_act(var/severity)
+/obj/item/modular_computer/emp_act(severity)
take_damage(rand(100,200) / severity, 50 / severity, 0)
// "Stun" weapons can cause minor damage to components (short-circuits?)
// "Burn" damage is equally strong against internal components and exterior casing
// "Brute" damage mostly damages the casing.
-/obj/item/modular_computer/bullet_act(var/obj/item/projectile/Proj)
+/obj/item/modular_computer/bullet_act(obj/item/projectile/Proj)
switch(Proj.damage_type)
if(BRUTE)
take_damage(Proj.damage, Proj.damage / 2)
diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm
index b88aa9a7a9a..aff20f4feb3 100644
--- a/code/modules/modular_computers/computers/item/processor.dm
+++ b/code/modules/modular_computers/computers/item/processor.dm
@@ -16,13 +16,10 @@
machinery_computer.cpu = null
machinery_computer = null
-//obj/item/modular_computer/processor/nano_host()
-// return machinery_computer.nano_host()
-
// Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type.
// Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore
// non-relayed process calls.
-/obj/item/modular_computer/processor/process(var/relayed = 0)
+/obj/item/modular_computer/processor/process(relayed = 0)
if(relayed)
..()
else
@@ -39,7 +36,7 @@
if(machinery_computer)
machinery_computer.handle_power()
-/obj/item/modular_computer/processor/New(var/comp)
+/obj/item/modular_computer/processor/New(comp)
if(!comp || !istype(comp, /obj/machinery/modular_computer))
CRASH("Inapropriate type passed to obj/item/modular_computer/processor/New()! Aborting.")
return
@@ -55,7 +52,7 @@
/obj/item/modular_computer/processor/relay_qdel()
qdel(machinery_computer)
-/obj/item/modular_computer/processor/find_hardware_by_name(var/N)
+/obj/item/modular_computer/processor/find_hardware_by_name(N)
var/obj/item/weapon/computer_hardware/H = machinery_computer.find_hardware_by_name(N)
if(H)
return H
@@ -96,7 +93,7 @@
return
// Tesla links only work on machinery types, so we'll override the default try_install_component() proc
-/obj/item/modular_computer/processor/try_install_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0)
+/obj/item/modular_computer/processor/try_install_component(mob/living/user, obj/item/weapon/computer_hardware/H, found = 0)
if(istype(H, /obj/item/weapon/computer_hardware/tesla_link))
if(machinery_computer.tesla_link)
user << "This computer's tesla link slot is already occupied by \the [machinery_computer.tesla_link]."
@@ -107,7 +104,7 @@
found = 1
..(user, H, found)
-/obj/item/modular_computer/processor/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0)
+/obj/item/modular_computer/processor/uninstall_component(mob/living/user, obj/item/weapon/computer_hardware/H, found = 0, critical = 0)
if(machinery_computer.tesla_link == H)
machinery_computer.tesla_link = null
var/obj/item/weapon/computer_hardware/tesla_link/L = H
@@ -122,12 +119,12 @@
return all_components
// Perform adjacency checks on our machinery counterpart, rather than on ourselves.
-/obj/item/modular_computer/processor/Adjacent(var/atom/neighbor)
+/obj/item/modular_computer/processor/Adjacent(atom/neighbor)
if(!machinery_computer)
return 0
return machinery_computer.Adjacent(neighbor)
-/obj/item/modular_computer/processor/turn_on(var/mob/user)
+/obj/item/modular_computer/processor/turn_on(mob/user)
// If we have a tesla link on our machinery counterpart, enable it automatically. Lets computer without a battery work.
if(machinery_computer && machinery_computer.tesla_link)
machinery_computer.tesla_link.enabled = 1
diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm
index 4f40e31d869..0f78d917ff2 100644
--- a/code/modules/modular_computers/computers/item/tablet_presets.dm
+++ b/code/modules/modular_computers/computers/item/tablet_presets.dm
@@ -1,6 +1,6 @@
// Available as custom loadout item, this is literally the worst possible cheap tablet
-/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/New()
+/obj/item/modular_computer/tablet/preset/cheap/New()
. = ..()
desc = "A low-end tablet often seen among low ranked station personnel."
processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src)
@@ -10,7 +10,7 @@
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
// Alternative version, an average one, for higher ranked positions mostly
-/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New()
+/obj/item/modular_computer/tablet/preset/advanced/New()
. = ..()
processor_unit = new/obj/item/weapon/computer_hardware/processor_unit/small(src)
battery_module = new/obj/item/weapon/computer_hardware/battery_module(src)
diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm
index e7ce0500c14..e05f1debb49 100644
--- a/code/modules/modular_computers/computers/machinery/modular_computer.dm
+++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm
@@ -91,7 +91,7 @@ var/list/global_modular_computers = list()
if(cpu)
cpu.attack_self(user) // CPU is an item, that's why we route attack_hand to attack_self
-/obj/machinery/modular_computer/examine(var/mob/user)
+/obj/machinery/modular_computer/examine(mob/user)
. = ..()
if(cpu)
cpu.examine(user)
@@ -104,13 +104,13 @@ var/list/global_modular_computers = list()
cpu.process(1)
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
-/obj/machinery/modular_computer/proc/find_hardware_by_name(var/N)
+/obj/machinery/modular_computer/proc/find_hardware_by_name(N)
if(tesla_link && (tesla_link.name == N))
return tesla_link
return null
// Used in following function to reduce copypaste
-/obj/machinery/modular_computer/proc/power_failure(var/malfunction = 0)
+/obj/machinery/modular_computer/proc/power_failure(malfunction = 0)
if(cpu && cpu.enabled) // Shut down the computer
visible_message("\The [src]'s screen flickers [cpu.battery_module ? "\"BATTERY [malfunction ? "MALFUNCTION" : "CRITICAL"]\"" : "\"EXTERNAL POWER LOSS\""] warning as it shuts down unexpectedly.")
if(cpu)
@@ -136,7 +136,8 @@ var/list/global_modular_computers = list()
battery_powered = 0
var/power_usage = cpu.screen_on ? base_active_power_usage : base_idle_power_usage
- for(var/obj/item/weapon/computer_hardware/CH in src.cpu.get_all_components())
+ for(var/C in src.cpu.get_all_components())
+ var/obj/item/weapon/computer_hardware/CH = C
if(CH.enabled)
power_usage += CH.power_usage
@@ -169,7 +170,7 @@ var/list/global_modular_computers = list()
return
..()
-/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
+/obj/machinery/modular_computer/attackby(var/obj/item/weapon/W as obj, mob/user)
if(cpu)
return cpu.attackby(W, user)
return ..()
@@ -177,19 +178,19 @@ var/list/global_modular_computers = list()
// Stronger explosions cause serious damage to internal components
// Minor explosions are mostly mitigitated by casing.
-/obj/machinery/modular_computer/ex_act(var/severity)
+/obj/machinery/modular_computer/ex_act(severity)
if(cpu)
cpu.ex_act(severity)
// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components
-/obj/machinery/modular_computer/emp_act(var/severity)
+/obj/machinery/modular_computer/emp_act(severity)
if(cpu)
cpu.emp_act(severity)
// "Stun" weapons can cause minor damage to components (short-circuits?)
// "Burn" damage is equally strong against internal components and exterior casing
// "Brute" damage mostly damages the casing.
-/obj/machinery/modular_computer/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/modular_computer/bullet_act(obj/item/projectile/Proj)
if(cpu)
cpu.bullet_act(Proj)
diff --git a/code/modules/modular_computers/file_system/computer_file.dm b/code/modules/modular_computers/file_system/computer_file.dm
index c5c1d9e86e5..c853e7ce0fd 100644
--- a/code/modules/modular_computers/file_system/computer_file.dm
+++ b/code/modules/modular_computers/file_system/computer_file.dm
@@ -26,7 +26,7 @@ var/global/file_uid = 0
..()
// Returns independent copy of this file.
-/datum/computer_file/proc/clone(var/rename = 0)
+/datum/computer_file/proc/clone(rename = 0)
var/datum/computer_file/temp = new type
temp.unsendable = unsendable
temp.undeletable = undeletable
diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm
index e4f1a50da6b..f907c447e91 100644
--- a/code/modules/modular_computers/file_system/program.dm
+++ b/code/modules/modular_computers/file_system/program.dm
@@ -20,7 +20,7 @@
var/computer_emagged = 0 // Set to 1 if computer that's running us was emagged. Computer updates this every Process() tick
var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /nano/images/status_icons. Be careful not to use too large images!
-/datum/computer_file/program/New(var/obj/item/modular_computer/comp = null)
+/datum/computer_file/program/New(obj/item/modular_computer/comp = null)
..()
if(comp && istype(comp))
computer = comp
@@ -46,19 +46,19 @@
computer.update_icon()
// Attempts to create a log in global ntnet datum. Returns 1 on success, 0 on fail.
-/datum/computer_file/program/proc/generate_network_log(var/text)
+/datum/computer_file/program/proc/generate_network_log(text)
if(computer)
return computer.add_log(text)
return 0
-/datum/computer_file/program/proc/is_supported_by_hardware(var/hardware_flag = 0, var/loud = 0, var/mob/user = null)
+/datum/computer_file/program/proc/is_supported_by_hardware(hardware_flag = 0, loud = 0, mob/user = null)
if(!(hardware_flag & usage_flags))
if(loud && computer && user)
user << "\The [computer] flashes an \"Hardware Error - Incompatible software\" warning."
return 0
return 1
-/datum/computer_file/program/proc/get_signal(var/specific_action = 0)
+/datum/computer_file/program/proc/get_signal(specific_action = 0)
if(computer)
return computer.get_ntnet_status(specific_action)
return 0
@@ -112,7 +112,7 @@
return 0
// Use this proc to kill the program. Designed to be implemented by each program if it requires on-quit logic, such as the NTNRC client.
-/datum/computer_file/program/proc/kill_program(var/forced = 0)
+/datum/computer_file/program/proc/kill_program(forced = 0)
program_state = PROGRAM_STATE_KILLED
if(network_destination)
generate_network_log("Connection to [network_destination] closed.")
diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm
index 306b1495cc3..a3eb9a27354 100644
--- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm
+++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm
@@ -51,7 +51,6 @@
/datum/computer_file/program/ntnet_dos/ui_act(action, params)
if(..())
return 1
- world << params
switch(action)
if("PRG_target_relay")
for(var/obj/machinery/ntnet_relay/R in ntnet_global.relays)
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index 6e955174531..eefe6b671ef 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -10,13 +10,7 @@
var/is_centcom = 0
var/show_assignments = 0
-/datum/nano_module/program/card_mod
- name = "ID card modification program"
- var/mod_mode = 1
- var/is_centcom = 0
- var/show_assignments = 0
-
-/datum/nano_module/program/card_mod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
+/datum/computer_file/program/card_mod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
var/list/data = get_header_data()
data["src"] = "\ref[src]"
@@ -228,3 +222,72 @@
/datum/computer_file/program/card_mod/proc/apply_access(var/obj/item/weapon/card/id/id_card, var/list/accesses)
id_card.access |= accesses
+
+/datum/computer_file/program/card_mod/ui_data(mob/user)
+
+ var/list/data = get_header_data()
+
+ data["src"] = "\ref[src]"
+ data["station_name"] = station_name()
+ data["manifest"] = data_core ? data_core.get_manifest(0) : null
+ data["assignments"] = show_assignments
+ if(program && program.computer)
+ data["have_id_slot"] = !!program.computer.card_slot
+ data["have_printer"] = !!program.computer.nano_printer
+ data["authenticated"] = program.can_run(user)
+ if(!program.computer.card_slot)
+ mod_mode = 0 //We can't modify IDs when there is no card reader
+ else
+ data["have_id_slot"] = 0
+ data["have_printer"] = 0
+ data["authenticated"] = 0
+ data["mmode"] = mod_mode
+ data["centcom_access"] = is_centcom
+
+ if(program && program.computer && program.computer.card_slot)
+ var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card
+ data["has_id"] = !!id_card
+ data["id_account_number"] = id_card ? id_card.associated_account_number : null
+ data["id_rank"] = id_card && id_card.assignment ? id_card.assignment : "Unassigned"
+ data["id_owner"] = id_card && id_card.registered_name ? id_card.registered_name : "-----"
+ data["id_name"] = id_card ? id_card.name : "-----"
+
+
+ data["engineering_jobs"] = format_jobs(engineering_positions)
+ data["medical_jobs"] = format_jobs(medical_positions)
+ data["science_jobs"] = format_jobs(science_positions)
+ data["security_jobs"] = format_jobs(security_positions)
+ data["cargo_jobs"] = format_jobs(cargo_positions)
+ data["civilian_jobs"] = format_jobs(civilian_positions)
+ data["centcom_jobs"] = format_jobs(get_all_centcom_jobs())
+
+ data["all_centcom_access"] = is_centcom ? get_accesses(1) : null
+ data["regions"] = get_accesses()
+
+ if(program.computer.card_slot.stored_card)
+ var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card
+ if(is_centcom)
+ var/list/all_centcom_access = list()
+ for(var/access in get_all_centcom_access())
+ all_centcom_access.Add(list(list(
+ "desc" = replacetext(get_centcom_access_desc(access), " ", " "),
+ "ref" = access,
+ "allowed" = (access in id_card.access) ? 1 : 0)))
+ data["all_centcom_access"] = all_centcom_access
+ else
+ var/list/regions = list()
+ for(var/i = 1; i <= 7; i++)
+ var/list/accesses = list()
+ for(var/access in get_region_accesses(i))
+ if (get_access_desc(access))
+ accesses.Add(list(list(
+ "desc" = replacetext(get_access_desc(access), " ", " "),
+ "ref" = access,
+ "allowed" = (access in id_card.access) ? 1 : 0)))
+
+ regions.Add(list(list(
+ "name" = get_region_accesses_name(i),
+ "accesses" = accesses)))
+ data["regions"] = regions
+
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm
index 7a148346986..e0fd5e2f3cf 100644
--- a/code/modules/modular_computers/file_system/programs/configurator.dm
+++ b/code/modules/modular_computers/file_system/programs/configurator.dm
@@ -15,12 +15,14 @@
var/obj/item/modular_computer/movable = null
-//obj/machinery/vr_sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
-
/datum/computer_file/program/computerconfig/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
ui = new(user, src, ui_key, "laptop_configuration", "NTOS Configuration Utility", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
@@ -54,7 +56,8 @@
data["battery"] = list("max" = movable.battery_module.battery.maxcharge, "charge" = round(movable.battery_module.battery.charge))
var/list/all_entries[0]
- for(var/obj/item/weapon/computer_hardware/H in hardware)
+ for(var/I in hardware)
+ var/obj/item/weapon/computer_hardware/H = I
all_entries.Add(list(list(
"name" = H.name,
"desc" = H.desc,
@@ -68,11 +71,8 @@
/datum/computer_file/program/computerconfig/ui_act(action,params)
- world << "test"
if(..())
return
- world << action
- world <")
t = replacetext(t, "\[/center\]", "")
t = replacetext(t, "\[br\]", "
")
@@ -182,6 +182,10 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
ui = new(user, src, ui_key, "file_manager", "NTOS File Manage", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm
index cdb4a553935..6ba68126808 100644
--- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm
+++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm
@@ -17,7 +17,7 @@
var/downloaderror = ""
var/obj/item/modular_computer/my_computer = null
-/datum/computer_file/program/ntnetdownload/proc/begin_file_download(var/filename)
+/datum/computer_file/program/ntnetdownload/proc/begin_file_download(filename)
if(downloaded_file)
return 0
@@ -100,19 +100,18 @@
return 1
return 0
-//datum/nano_module/program/computer_ntnetdownload
-// name = "Network Downloader"
-
/datum/computer_file/program/ntnetdownload/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
ui = new(user, src, ui_key, "ntnet_downloader", "NTNet Download Program", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
-
-
/datum/computer_file/program/ntnetdownload/ui_data(mob/user)
my_computer = computer
@@ -120,10 +119,7 @@
if(!istype(my_computer))
return
- var/list/data = list()
-
-
- data = get_header_data()
+ var/list/data = get_header_data()
// This IF cuts on data transferred to client, so i guess it's worth it.
if(downloaderror) // Download errored. Wait until user resets the program.
@@ -138,7 +134,8 @@
data["disk_size"] = my_computer.hard_drive.max_capacity
data["disk_used"] = my_computer.hard_drive.used_capacity
var/list/all_entries[0]
- for(var/datum/computer_file/program/P in ntnet_global.available_station_software)
+ for(var/A in ntnet_global.available_station_software)
+ var/datum/computer_file/program/P = A
// Only those programs our user can run will show in the list
if(!P.can_run(user))
continue
@@ -151,7 +148,8 @@
data["hackedavailable"] = 0
if(computer_emagged) // If we are running on emagged computer we have access to some "bonus" software
var/list/hacked_programs[0]
- for(var/datum/computer_file/program/P in ntnet_global.available_antag_software)
+ for(var/S in ntnet_global.available_antag_software)
+ var/datum/computer_file/program/P = S
data["hackedavailable"] = 1
hacked_programs.Add(list(list(
"filename" = P.filename,
diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm
index 8df93e98fc4..60cc80a3b86 100644
--- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm
+++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm
@@ -12,6 +12,11 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
ui = new(user, src, ui_key, "ntnet_monitor", "NTNet Diagnostics and Monitoring Tool", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
index 4d3fcc17b2e..62a3e303533 100644
--- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
+++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
@@ -182,6 +182,12 @@
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
+
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
ui = new(user, src, ui_key, "ntnet_chat", "NTNet Relay Chat Client", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
@@ -206,7 +212,8 @@
)))
data["messages"] = messages
var/list/clients[0]
- for(var/datum/computer_file/program/chatclient/cl in channel.clients)
+ for(var/C in channel.clients)
+ var/datum/computer_file/program/chatclient/cl = C
clients.Add(list(list(
"name" = cl.username
)))
@@ -216,7 +223,8 @@
else // Channel selection screen
var/list/all_channels[0]
- for(var/datum/ntnet_conversation/conv in ntnet_global.chat_channels)
+ for(var/C in ntnet_global.chat_channels)
+ var/datum/ntnet_conversation/conv = C
if(conv && conv.title)
all_channels.Add(list(list(
"chan" = conv.title,
diff --git a/code/modules/modular_computers/file_system/programs/nttransfer.dm b/code/modules/modular_computers/file_system/programs/nttransfer.dm
index 2e863d744c0..a914878c426 100644
--- a/code/modules/modular_computers/file_system/programs/nttransfer.dm
+++ b/code/modules/modular_computers/file_system/programs/nttransfer.dm
@@ -44,7 +44,7 @@ var/global/nttransfer_uid = 0
if(!remote)
crash_download("Connection to remote server lost")
-/datum/computer_file/program/nttransfer/kill_program(var/forced = 0)
+/datum/computer_file/program/nttransfer/kill_program(forced = 0)
if(downloaded_file) // Client mode, clean up variables for next use
finalize_download()
@@ -88,6 +88,11 @@ var/global/nttransfer_uid = 0
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
ui = new(user, src, ui_key, "ntnet_transfer", "NTNet P2P Transfer Client", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm
index 7ec0cbd3b4a..bfa946d4154 100644
--- a/code/modules/modular_computers/file_system/programs/powermonitor.dm
+++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm
@@ -56,6 +56,11 @@
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
ui = new(user, src, ui_key, "power_monitor_prog", "Power Monitoring", 1200, 1000, master_ui, state)
ui.open()
diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm
index a4d1b25f1b9..31a46260d47 100644
--- a/code/modules/modular_computers/hardware/network_card.dm
+++ b/code/modules/modular_computers/hardware/network_card.dm
@@ -78,7 +78,7 @@ var/global/ntnet_card_uid = 1
if(holder2)
var/turf/T = get_turf(holder2)
- if((T && istype(T)) && T.z == ZLEVEL_STATION)
+ if((T && istype(T)) && (T.z == ZLEVEL_STATION || T.z == ZLEVEL_MINING))
// Computer is on station. Low/High signal depending on what type of network card you have
if(long_range)
return 2
diff --git a/icons/program_icons/alarm_green.gif b/icons/program_icons/alarm_green.gif
new file mode 100644
index 00000000000..7c2570c8ce3
Binary files /dev/null and b/icons/program_icons/alarm_green.gif differ
diff --git a/icons/program_icons/alarm_red.gif b/icons/program_icons/alarm_red.gif
new file mode 100644
index 00000000000..327d58e4db8
Binary files /dev/null and b/icons/program_icons/alarm_red.gif differ
diff --git a/icons/program_icons/batt_100.gif b/icons/program_icons/batt_100.gif
new file mode 100644
index 00000000000..ccdbd4333e9
Binary files /dev/null and b/icons/program_icons/batt_100.gif differ
diff --git a/icons/program_icons/batt_20.gif b/icons/program_icons/batt_20.gif
new file mode 100644
index 00000000000..1d5e38fc888
Binary files /dev/null and b/icons/program_icons/batt_20.gif differ
diff --git a/icons/program_icons/batt_40.gif b/icons/program_icons/batt_40.gif
new file mode 100644
index 00000000000..d5cedb99675
Binary files /dev/null and b/icons/program_icons/batt_40.gif differ
diff --git a/icons/program_icons/batt_5.gif b/icons/program_icons/batt_5.gif
new file mode 100644
index 00000000000..ceac8f3a945
Binary files /dev/null and b/icons/program_icons/batt_5.gif differ
diff --git a/icons/program_icons/batt_60.gif b/icons/program_icons/batt_60.gif
new file mode 100644
index 00000000000..d39534c8cb0
Binary files /dev/null and b/icons/program_icons/batt_60.gif differ
diff --git a/icons/program_icons/batt_80.gif b/icons/program_icons/batt_80.gif
new file mode 100644
index 00000000000..9c299773f01
Binary files /dev/null and b/icons/program_icons/batt_80.gif differ
diff --git a/icons/program_icons/charging.gif b/icons/program_icons/charging.gif
new file mode 100644
index 00000000000..cf19ca72876
Binary files /dev/null and b/icons/program_icons/charging.gif differ
diff --git a/icons/program_icons/downloader_finished.gif b/icons/program_icons/downloader_finished.gif
new file mode 100644
index 00000000000..f01b7c42af8
Binary files /dev/null and b/icons/program_icons/downloader_finished.gif differ
diff --git a/icons/program_icons/downloader_running.gif b/icons/program_icons/downloader_running.gif
new file mode 100644
index 00000000000..68fb977c86d
Binary files /dev/null and b/icons/program_icons/downloader_running.gif differ
diff --git a/icons/program_icons/ntnrc_idle.gif b/icons/program_icons/ntnrc_idle.gif
new file mode 100644
index 00000000000..d47c01d5800
Binary files /dev/null and b/icons/program_icons/ntnrc_idle.gif differ
diff --git a/icons/program_icons/ntnrc_new.gif b/icons/program_icons/ntnrc_new.gif
new file mode 100644
index 00000000000..af72a8b332f
Binary files /dev/null and b/icons/program_icons/ntnrc_new.gif differ
diff --git a/icons/program_icons/power_norm.gif b/icons/program_icons/power_norm.gif
new file mode 100644
index 00000000000..2b8d60edfa5
Binary files /dev/null and b/icons/program_icons/power_norm.gif differ
diff --git a/icons/program_icons/power_warn.gif b/icons/program_icons/power_warn.gif
new file mode 100644
index 00000000000..0c85b3a85a1
Binary files /dev/null and b/icons/program_icons/power_warn.gif differ
diff --git a/icons/program_icons/sig_high.gif b/icons/program_icons/sig_high.gif
new file mode 100644
index 00000000000..efb20f67306
Binary files /dev/null and b/icons/program_icons/sig_high.gif differ
diff --git a/icons/program_icons/sig_lan.gif b/icons/program_icons/sig_lan.gif
new file mode 100644
index 00000000000..07ba929f7f3
Binary files /dev/null and b/icons/program_icons/sig_lan.gif differ
diff --git a/icons/program_icons/sig_low.gif b/icons/program_icons/sig_low.gif
new file mode 100644
index 00000000000..08f98baea8e
Binary files /dev/null and b/icons/program_icons/sig_low.gif differ
diff --git a/icons/program_icons/sig_none.gif b/icons/program_icons/sig_none.gif
new file mode 100644
index 00000000000..79840d8a2bd
Binary files /dev/null and b/icons/program_icons/sig_none.gif differ