/obj/machinery/robotic_fabricator
name = "robotic fabricator"
icon = 'icons/obj/robotics.dmi'
icon_state = "fab-idle"
density = 1
anchored = 1
var/metal_amount = 0
var/operating = 0
var/obj/item/robot_parts/being_built = null
use_power = 1
idle_power_usage = 20
active_power_usage = 5000
/obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if (istype(O, /obj/item/stack/sheet/metal))
if (src.metal_amount < 150000.0)
var/count = 0
src.overlays += "fab-load-metal"
spawn(15)
if(O)
if(!O:amount)
return
while(metal_amount < 150000 && O:amount)
src.metal_amount += O:m_amt /*O:height * O:width * O:length * 100000.0*/
O:amount--
count++
if (O:amount < 1)
qdel(O)
user << "You insert [count] metal sheet\s into \the [src]."
src.overlays -= "fab-load-metal"
updateDialog()
else
user << "\The [src] is full."
/obj/machinery/robotic_fabricator/power_change()
if (powered())
stat &= ~NOPOWER
else
stat |= NOPOWER
/obj/machinery/robotic_fabricator/attack_paw(user as mob)
return src.attack_hand(user)
/obj/machinery/robotic_fabricator/attack_hand(user as mob)
var/dat
if (..())
return
if (src.operating)
dat = {"
Building [src.being_built.name].
Please wait until completion...
"}
else
dat = {"
Metal Amount: [min(150000, src.metal_amount)] cm3 (MAX: 150,000)
Left Arm (25,000 cc metal.)
Right Arm (25,000 cc metal.)
Left Leg (25,000 cc metal.)
Right Leg (25,000 cc metal).
Chest (50,000 cc metal).
Head (50,000 cc metal).
Robot Frame (75,000 cc metal).
"}
user << browse("Robotic Fabricator Control Panel[dat]", "window=robot_fabricator")
onclose(user, "robot_fabricator")
return
/obj/machinery/robotic_fabricator/Topic(href, href_list)
if (..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
if (href_list["make"])
if (!src.operating)
var/part_type = text2num(href_list["make"])
var/build_type = ""
var/build_time = 200
var/build_cost = 25000
switch (part_type)
if (1)
build_type = "/obj/item/robot_parts/l_arm"
build_time = 200
build_cost = 10000
if (2)
build_type = "/obj/item/robot_parts/r_arm"
build_time = 200
build_cost = 10000
if (3)
build_type = "/obj/item/robot_parts/l_leg"
build_time = 200
build_cost = 10000
if (4)
build_type = "/obj/item/robot_parts/r_leg"
build_time = 200
build_cost = 10000
if (5)
build_type = "/obj/item/robot_parts/chest"
build_time = 350
build_cost = 40000
if (6)
build_type = "/obj/item/robot_parts/head"
build_time = 350
build_cost = 5000
if (7)
build_type = "/obj/item/robot_parts/robot_suit"
build_time = 600
build_cost = 15000
var/building = text2path(build_type)
if (!isnull(building))
if (src.metal_amount >= build_cost)
src.operating = 1
src.use_power = 2
src.metal_amount = max(0, src.metal_amount - build_cost)
src.being_built = new building(src)
src.overlays += "fab-active"
src.updateUsrDialog()
spawn (build_time)
if (!isnull(src.being_built))
src.being_built.loc = get_turf(src)
src.being_built = null
src.use_power = 1
src.operating = 0
src.overlays -= "fab-active"
return
for (var/mob/M in viewers(1, src))
if (M.client && M.machine == src)
src.attack_hand(M)