diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/circuits.dm b/code/WorkInProgress/Cael_Aislinn/Rust/circuits.dm
index 3dbea40f11e..a316743f510 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/circuits.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/circuits.dm
@@ -72,8 +72,7 @@
"/obj/item/weapon/stock_parts/manipulator/nano/pico" = 2,
"/obj/item/weapon/stock_parts/scanning_module/adv/phasic" = 1,
"/obj/item/weapon/stock_parts/matter_bin/adv/super" = 1,
- "/obj/item/weapon/stock_parts/console_screen" = 1,
- "/obj/item/stack/cable_coil" = 5)
+ "/obj/item/weapon/stock_parts/console_screen" = 1)
//Gyrotron controller board.
/obj/item/weapon/circuitboard/rust_gyrotron_control
diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm b/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm
index d1650bae5c7..9d8d89cb78f 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/fuel_control.dm
@@ -134,23 +134,23 @@
active_stages.Remove(cur_stage)
for(var/obj/machinery/power/rust_fuel_injector/I in connected_injectors)
if(I.id_tag == cur_stage && check_injector_status(I))
- I.StopInjecting()
+ I.stop_injecting()
else
active_stages.Add(cur_stage)
for(var/obj/machinery/power/rust_fuel_injector/I in connected_injectors)
if(I.id_tag == cur_stage && check_injector_status(I))
- I.BeginInjecting()
+ I.begin_injecting()
if( href_list["cooldown"] )
for(var/obj/machinery/power/rust_fuel_injector/I in connected_injectors)
if(check_injector_status(I))
- I.StopInjecting()
+ I.stop_injecting()
active_stages = list()
if( href_list["warmup"] )
for(var/obj/machinery/power/rust_fuel_injector/I in connected_injectors)
if(check_injector_status(I))
- I.BeginInjecting()
+ I.begin_injecting()
if(!active_stages.Find(I.id_tag))
active_stages.Add(I.id_tag)
diff --git a/code/WorkInProgress/Cael_Aislinn/Rust/fuel_injector.dm b/code/WorkInProgress/Cael_Aislinn/Rust/fuel_injector.dm
index 40618697dde..552afeb232f 100644
--- a/code/WorkInProgress/Cael_Aislinn/Rust/fuel_injector.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Rust/fuel_injector.dm
@@ -1,35 +1,75 @@
/obj/machinery/power/rust_fuel_injector
- name = "Fuel Injector"
+ name = "\improper R-UST fuel injector"
+ desc = "A bulky machine featuring a slot for the insertion of a fuel rod coupled with a small screen on the back and a huge cannon-shaped structure on the front."
icon = 'code/WorkInProgress/Cael_Aislinn/Rust/rust.dmi'
icon_state = "injector0"
density = 1
anchored = 0
- var/locked = 0
+ var/locked = FALSE
req_access = list(access_engine)
var/obj/item/weapon/fuel_assembly/cur_assembly
var/fuel_usage = 0.0001 //percentage of available fuel to use per cycle
- var/id_tag = "One"
- var/injecting = 0
- var/trying_to_swap_fuel = 0
+ var/id_tag
+ var/injecting = FALSE
use_power = 1
idle_power_usage = 10
active_power_usage = 500
- var/remote_access_enabled = 1
+ var/remote_access_enabled = TRUE
var/cached_power_avail = 0
- var/emergency_insert_ready = 0
+ var/emergency_insert_ready = FALSE
- machine_flags = WRENCHMOVE | FIXED2WORK | WELD_FIXED | EMAGGABLE
+ machine_flags = EMAGGABLE | SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | FIXED2WORK | EJECTNOTDEL | WELD_FIXED
+
+/obj/machinery/power/rust_fuel_injector/initialize()
+ if(!id_tag)
+ assign_uid()
+ id_tag = uid
+
+ . = ..()
+
+/obj/machinery/power/rust_fuel_injector/New()
+ . = ..()
+
+ component_parts = newlist(
+ /obj/item/weapon/circuitboard/rust_injector,
+ /obj/item/weapon/stock_parts/manipulator/nano/pico,
+ /obj/item/weapon/stock_parts/manipulator/nano/pico,
+ /obj/item/weapon/stock_parts/scanning_module/adv/phasic,
+ /obj/item/weapon/stock_parts/matter_bin/adv/super,
+ /obj/item/weapon/stock_parts/console_screen,
+ )
+
+ if(ticker)
+ initialize()
+
+/obj/machinery/power/rust_fuel_injector/examine(var/mob/user)
+ ..()
+ var/out = list()
+ out += "Its interface "
+ if(emagged)
+ out += "has been shorted.
"
+ else
+ out += "is [locked ? "locked" : "unlocked"].
"
+ if(stat & NOPOWER || state != 2)
+ out += "It seems to be powered down.
"
+ else if(injecting)
+ out += "It's actively injecting fuel.
"
+ if(cur_assembly)
+ out += "A fuel rod assembly is inserted into it."
+ else if(emergency_insert_ready)
+ out += "The fuel rod slot cover is open."
+ to_chat(user, jointext(out, ""))
/obj/machinery/power/rust_fuel_injector/process()
if(injecting)
if(stat & (BROKEN|NOPOWER))
- StopInjecting()
+ stop_injecting()
else
- Inject()
+ inject()
cached_power_avail = avail()
@@ -39,7 +79,7 @@
return FALSE
. = ..()
-/obj/machinery/power/rust_fuel_injector/weldToFloor(var/obj/item/weapon/weldingtool/WT, mob/user)
+/obj/machinery/power/rust_fuel_injector/weldToFloor(var/obj/item/weapon/weldingtool/WT, var/mob/user)
if(..() == 1)
switch(state)
if(1)
@@ -49,24 +89,24 @@
return 1
return -1
-/obj/machinery/power/rust_fuel_injector/emag(mob/user)
+/obj/machinery/power/rust_fuel_injector/emag(var/mob/user)
if(!emagged)
- locked = 0
- emagged = 1
- user.visible_message("[user.name] emags the [src.name].","You short out the lock.")
- return 1
- return -1
-/obj/machinery/power/rust_fuel_injector/attackby(obj/item/W, mob/user)
+ locked = FALSE
+ emagged = TRUE
+ user.visible_message("\The [user] shorts out the lock on the interface on \the [src].","You short out the lock.")
+
+/obj/machinery/power/rust_fuel_injector/attackby(var/obj/item/W, var/mob/user)
if(..())
return 1
if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
if(emagged)
- to_chat(user, "The lock seems to be broken")
+ to_chat(user, "The lock seems to be broken.")
return
- if(src.allowed(user))
- src.locked = !src.locked
- to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
+ if(allowed(user))
+ locked = !locked
+ to_chat(user, "The controls are now [locked ? "locked." : "unlocked."]")
+ nanomanager.update_uis(src)
else
to_chat(user, "Access denied.")
return
@@ -75,89 +115,80 @@
if(emergency_insert_ready)
if(user.drop_item(W, src))
cur_assembly = W
- emergency_insert_ready = 0
- return
+ emergency_insert_ready = FALSE
+ nanomanager.update_uis(src)
- ..()
- return
-
-/obj/machinery/power/rust_fuel_injector/attack_ai(mob/user)
- attack_hand(user)
-
-/obj/machinery/power/rust_fuel_injector/attack_hand(mob/user)
- add_fingerprint(user)
- interact(user)
-
-/obj/machinery/power/rust_fuel_injector/interact(mob/user)
- if(stat & BROKEN)
- user.unset_machine()
- user << browse(null, "window=fuel_injector")
+/obj/machinery/power/rust_fuel_injector/attack_hand(var/mob/user)
+ . = ..()
+ if(.)
return
- if(get_dist(src, user) > 1 )
- if (!istype(user, /mob/living/silicon))
- user.unset_machine()
- user << browse(null, "window=fuel_injector")
- return
+ if(stat & NOPOWER || state != 2)
+ to_chat(user, "It's completely unresponsive.")
+ return
+ ui_interact(user)
- var/dat = ""
- if (stat & NOPOWER || locked || state != 2)
- dat += "The console is dark and nonresponsive."
- else
+/obj/machinery/power/rust_fuel_injector/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null)
+ var/data[0]
+ data["locked"] = locked && !issilicon(user) && !isAdminGhost(user)
+ data["id_tag"] = id_tag
+ data["injecting"] = injecting
+ data["fuel_usage"] = fuel_usage * 100 // Rounded client-side
+ data["has_assembly"] = !!cur_assembly
+ data["emergency_insert_ready"] = emergency_insert_ready
+ data["power_status_class"] = "good"
+ if(cached_power_avail < active_power_usage)
+ data["power_status_class"] = "bad"
+ else if(cached_power_avail < active_power_usage * 2)
+ data["power_status_class"] = "average"
+ data["active_power_usage"] = round(active_power_usage)
+ data["cached_power_avail"] = round(cached_power_avail)
+ data["remote_access_enabled"] = remote_access_enabled
- dat += {"Reactor Core Fuel Injector