/obj/item/weapon/anobattery
name = "Anomaly power battery"
icon = 'anomaly.dmi'
icon_state = "anobattery0"
var/datum/artifact_effect/battery_effect
var/capacity = 200
var/stored_charge = 0
/obj/item/weapon/anobattery/New()
battery_effect = new()
/obj/item/weapon/anobattery/proc/UpdateSprite()
var/p = (stored_charge/capacity)*100
icon_state = "anobattery[round(p,25)]"
/obj/item/weapon/anodevice
name = "Anomaly power utilizer"
icon = 'anomaly.dmi'
icon_state = "anodev"
var/cooldown = 0
var/activated = 0
var/time = 50
var/obj/item/weapon/anobattery/inserted_battery
/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/proc/interact(var/mob/user)
user.machine = src
var/dat = "Anomalous Materials Energy Utiliser
"
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]
"
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
/obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob)
if(istype(I, /obj/item/weapon/anobattery))
if(!inserted_battery)
user << "\blue You insert the battery."
user.drop_item()
I.loc = src
inserted_battery = I
UpdateSprite()
else
return ..()
/obj/item/weapon/anodevice/attack_ai(var/mob/user as mob)
return src.interact(user)
/*/obj/item/weapon/anodevice/attack_paw(var/mob/user as mob)
return src.interact(user)*/
/obj/item/weapon/anodevice/attack_self(var/mob/user as mob)
return src.interact(user)
/*obj/item/weapon/anodevice/attack_hand(var/mob/user as mob)
return src.interact(user)*/
/obj/item/weapon/anodevice/proc/pulse()
if(activated)
time -= 10
cooldown += 10
if(time <= 0)
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.")
updateDialog()
else
inserted_battery.battery_effect.DoEffect(src)
else if(cooldown > 0)
cooldown -= 10
if(cooldown <= 0)
cooldown = 0
var/turf/T = get_turf(src)
T.visible_message("\icon[src]\blue The utiliser device chimes.", "\icon[src]\blue You hear something chime.")
updateDialog()
spawn(10)
pulse()
/obj/item/weapon/anodevice/Topic(href, href_list)
if(href_list["changetime"])
var/mod = href_list["changetime"]
time += num2text(mod)
if(href_list["stoptimer"])
activated = 0
if(href_list["starttimer"])
activated = 1
if(href_list["ejectbattery"])
inserted_battery.loc = get_turf(src)
inserted_battery = null
UpdateSprite()
if(href_list["close"])
usr << browse(null, "window=anodevice")
usr.machine = null
updateDialog()