/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 = 40
active_power_usage = 10000
/obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (istype(O, /obj/item/stack/material) && O.get_material_name() == DEFAULT_WALL_MATERIAL)
var/obj/item/stack/M = O
if (src.metal_amount < 150000.0)
var/count = 0
add_overlay("fab-load-metal")
spawn(15)
if(M)
if(!M.get_amount())
return
while(metal_amount < 150000 && M.amount)
src.metal_amount += O.matter[DEFAULT_WALL_MATERIAL] /*O:height * O:width * O:length * 100000.0*/
M.use(1)
count++
to_chat(user, "You insert [count] metal sheet\s into the fabricator.")
cut_overlay("fab-load-metal")
updateDialog()
else
to_chat(user, "The robot part maker is full. Please remove metal from the robot part maker in order to insert more.")
/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 = null
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 = 25000
if (2)
build_type = /obj/item/robot_parts/r_arm
build_time = 200
build_cost = 25000
if (3)
build_type = /obj/item/robot_parts/l_leg
build_time = 200
build_cost = 25000
if (4)
build_type = /obj/item/robot_parts/r_leg
build_time = 200
build_cost = 25000
if (5)
build_type = /obj/item/robot_parts/chest
build_time = 350
build_cost = 50000
if (6)
build_type = /obj/item/robot_parts/head
build_time = 350
build_cost = 50000
if (7)
build_type = /obj/item/robot_parts/robot_suit
build_time = 600
build_cost = 75000
var/building = build_type
if (!isnull(building))
if (src.metal_amount >= build_cost)
src.operating = 1
src.update_use_power(2)
src.metal_amount = max(0, src.metal_amount - build_cost)
src.being_built = new building(src)
add_overlay("fab-active")
src.updateUsrDialog()
spawn (build_time)
if (!isnull(src.being_built))
src.being_built.forceMove(get_turf(src))
src.being_built = null
src.update_use_power(1)
src.operating = 0
cut_overlay("fab-active")
return
for (var/mob/M in viewers(1, src))
if (M.client && M.machine == src)
src.attack_hand(M)