diff --git a/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm b/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm
index 829e7afd353..db0c6128fe1 100644
--- a/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm
+++ b/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm
@@ -61,7 +61,10 @@
display_msg = pick("momentarily glows brightly!","distorts slightly for a moment!","flickers slightly!","vibrates!","shimmers slightly for a moment!")
else
display_msg = pick("grows dull!","fades in intensity!","suddenly becomes very still!","suddenly becomes very quiet!")
- holder.visible_message("\red \icon[holder] [holder] [display_msg]")
+ var/atom/toplevelholder = holder
+ while(!istype(toplevelholder.loc, /turf))
+ toplevelholder = holder.loc
+ toplevelholder.visible_message("\red \icon[holder] [holder] [display_msg]")
/datum/artifact_effect/proc/DoEffectTouch(var/mob/user)
/datum/artifact_effect/proc/DoEffectAura(var/atom/holder)
diff --git a/code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm b/code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm
index 1ef39c7cf74..7c446f76074 100644
--- a/code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm
+++ b/code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm
@@ -1,17 +1,19 @@
/obj/item/weapon/anobattery
name = "Anomaly power battery"
- icon = 'xenoarchaeology.dmi'
+ icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "anobattery0"
var/datum/artifact_effect/battery_effect
var/capacity = 200
var/stored_charge = 0
+ var/effect_id = ""
/obj/item/weapon/anobattery/New()
battery_effect = new()
/obj/item/weapon/anobattery/proc/UpdateSprite()
var/p = (stored_charge/capacity)*100
+ p = min(p, 100)
icon_state = "anobattery[round(p,25)]"
/obj/item/weapon/anodevice
@@ -20,48 +22,15 @@
icon_state = "anodev"
var/cooldown = 0
var/activated = 0
+ var/timing = 0
var/time = 50
+ var/archived_time = 50
var/obj/item/weapon/anobattery/inserted_battery
+ var/turf/archived_loc
/obj/item/weapon/anodevice/New()
- spawn(10)
- pulse()
-
-/obj/item/weapon/anodevice/proc/UpdateSprite()
- if(!inserted_battery)
- icon_state = "anodev"
- return
- var/p = (inserted_battery.stored_charge/inserted_battery.capacity)*100
- var/s = round(p,25)
- icon_state = "anodev[s]"
-
-/obj/item/weapon/anodevice/interact(var/mob/user)
- user.machine = src
- var/dat = "Anomalous Materials Energy Utiliser
"
- if(activated)
- dat += "Device active, stand by.
"
- else if(cooldown)
- dat += "Cooldown in progress, please wait.
"
- else
- if(!inserted_battery)
- dat += "Please insert battery
"
- else
- dat += "[inserted_battery] inserted, anomaly ID: [inserted_battery.battery_effect.artifact_id == "" ? "???" : "[inserted_battery.battery_effect.artifact_id]"]
"
- dat += "Total Power: [inserted_battery.stored_charge]/[inserted_battery.capacity]
"
- dat += "Timed activation: -- - [time >= 1000 ? "[time/10]" : time >= 100 ? " [time/10]" : " [time/10]" ] + ++
"
- if(cooldown && !activated)
- dat += "Cooldown in progress.
"
- else if(activated)
- dat += "Stop timer
"
- else
- dat += "Start timer
"
- dat += "Eject battery
"
- dat += "Refresh
"
- dat += "Close
"
-
- user << browse(dat, "window=anodevice;size=400x500")
- onclose(user, "anodevice")
- return
+ ..()
+ processing_objects.Add(src)
/obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob)
if(istype(I, /obj/item/weapon/anobattery))
@@ -77,27 +46,95 @@
/obj/item/weapon/anodevice/attack_self(var/mob/user as mob)
return src.interact(user)
-/obj/item/weapon/anodevice/proc/pulse()
- if(activated)
- if(time <= 0 || !inserted_battery)
- time = 0
- activated = 0
- var/turf/T = get_turf(src)
- T.visible_message("\icon[src]\blue The utiliser device buzzes.", "\icon[src]\blue You hear something buzz.")
+/obj/item/weapon/anodevice/interact(var/mob/user)
+ user.set_machine(src)
+ var/dat = "Anomalous Materials Energy Utiliser
"
+ if(inserted_battery)
+ if(cooldown)
+ dat += "Cooldown in progress, please wait.
"
+ else if(activated)
+ if(timing)
+ dat += "Device active.
"
+ else
+ dat += "Device active in timed mode.
"
+
+ dat += "[inserted_battery] inserted, anomaly ID: [inserted_battery.battery_effect.artifact_id ? inserted_battery.battery_effect.artifact_id : "NA"]
"
+ dat += "Total Power: [inserted_battery.stored_charge]/[inserted_battery.capacity]
"
+ dat += "Timed activation: -- - [time >= 1000 ? "[time/10]" : time >= 100 ? " [time/10]" : " [time/10]" ] + ++
"
+ if(cooldown)
+ dat += "Cooldown in progress.
"
+ dat += "
"
+ else if(!activated)
+ dat += "Start
"
+ dat += "Start in timed mode
"
else
- inserted_battery.battery_effect.DoEffectPulse(src)
- time -= 10
- inserted_battery.stored_charge -= 10 + rand(-1,1)
- cooldown += 10
- else if(cooldown > 0)
- cooldown -= 10
+ dat += "Shutdown emission
"
+ dat += "
"
+ dat += "Eject battery
"
+ else
+ dat += "Please insert battery
"
+
+ dat += "
"
+ dat += "
"
+ dat += "
"
+
+ dat += "
"
+ dat += "
"
+ dat += "
"
+
+ dat += "