/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()