/obj/machinery/artifact_harvester name = "Anomaly Power Collector" icon = 'virology.dmi' icon_state = "incubator" //incubator_on anchored = 1 density = 1 var/harvesting = 0 var/obj/item/weapon/anobattery/inserted_battery var/obj/machinery/artifact/cur_artifact var/obj/machinery/analyser_pad/owned_pad = null /obj/machinery/artifact_harvester/New() ..() spawn(10) owned_pad = locate() in orange(1, src) /obj/machinery/artifact_harvester/attackby(var/obj/I as obj, var/mob/user as mob) if(istype(I,/obj/item/weapon/anobattery)) if(!inserted_battery) user << "You insert the battery." user.drop_item() I.loc = src src.inserted_battery = I return else return..() /obj/machinery/artifact_harvester/attack_ai(var/mob/user as mob) return src.attack_hand(user) /obj/machinery/artifact_harvester/attack_paw(var/mob/user as mob) return src.attack_hand(user) /obj/machinery/artifact_harvester/attack_hand(var/mob/user as mob) interact(user) /obj/machinery/artifact_harvester/process() if(harvesting) inserted_battery.stored_charge += 10 if(inserted_battery.stored_charge >= inserted_battery.capacity) inserted_battery.stored_charge = inserted_battery.capacity harvesting = 0 cur_artifact.anchored = 0 cur_artifact.being_used = 0 src.visible_message("[name] states, \"Battery is full.\"") icon_state = "incubator" return /obj/machinery/artifact_harvester/proc/interact(var/mob/user as mob) user.machine = src var/dat = "Artifact Power Harvester
" dat += "

" // if(owned_pad) if(harvesting) dat += "Please wait. Harvesting in progress ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%).
" dat += "Halt early
" else if(inserted_battery) dat += "[inserted_battery.name] inserted, charge level: [inserted_battery.stored_charge]/[inserted_battery.capacity] ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%)
" dat += "Energy signature ID:[inserted_battery.battery_effect.artifact_id]
" dat += "Eject battery
" dat += "Drain battery of all charge
" dat += "Begin harvesting
" else dat += "No battery inserted.
" else dat += "Unable to locate analysis pad.
" // dat += "
" dat += "Refresh Close
" user << browse(dat, "window=artharvester;size=450x500") onclose(user, "artharvester") /obj/machinery/artifact_harvester/Topic(href, href_list) if (href_list["harvest"]) //locate artifact on analysis pad cur_artifact = null var/articount = 0 var/obj/machinery/artifact/analysed for(var/obj/machinery/artifact/A in get_turf(owned_pad)) analysed = A articount++ var/mundane = 0 for(var/obj/O in get_turf(owned_pad)) mundane++ break for(var/mob/O in get_turf(owned_pad)) mundane++ break if(articount > 1) var/message = "[src] states, \"Cannot harvest. Too many artifacts on pad.\"" src.visible_message(message, message) else if(mundane) var/message = "[src] states, \"No noteworthy energy signatures detected.\"" src.visible_message(message, message) else if(!articount) var/message = "[src] states, \"Cannot harvest. No artifact found.\"" src.visible_message(message, message) else if (cur_artifact.being_used) var/message = "[src] states, \"Cannot harvest. Too much interferance from energy scan.\"" src.visible_message(message, message) else cur_artifact = analysed //check to see if the battery is compatible if(inserted_battery) if(inserted_battery.battery_effect.artifact_id == cur_artifact.my_effect.artifact_id || inserted_battery.stored_charge == 0) harvesting = 1 cur_artifact.anchored = 1 cur_artifact.being_used = 1 icon_state = "incubator_on" var/message = "[src] states, \"Beginning artifact energy harvesting.\"" src.visible_message(message, message) // inserted_battery.battery_effect = cur_artifact.my_effect else var/message = "[src] states, \"Cannot harvest. Incompatible energy signatures detected.\"" src.visible_message(message, message) else if(cur_artifact) var/message = "[src] states, \"Cannot harvest. No battery inserted.\"" src.visible_message(message, message) if (href_list["stopharvest"]) if(harvesting) harvesting = 0 cur_artifact.anchored = 0 cur_artifact.being_used = 0 src.visible_message("[name] states, \"Harvesting interrupted.\"") icon_state = "incubator" if (href_list["ejectbattery"]) src.inserted_battery.loc = src.loc src.inserted_battery = null if (href_list["drainbattery"]) src.inserted_battery.battery_effect.artifact_id = "" src.inserted_battery.stored_charge = 0 var/message = "[src] states, \"Battery drained of all charge.\"" src.visible_message(message, message) if(href_list["close"]) usr << browse(null, "window=artharvester") usr.machine = null src.updateDialog() return