mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 11:34:19 +01:00
Merge pull request #8901 from Fox-McCloud/component-port
Ports TG Components and R&D Tweaks
This commit is contained in:
@@ -51,12 +51,18 @@
|
||||
for(var/A in L)
|
||||
var/turf/T = A
|
||||
if(T.Adjacent(user))
|
||||
. += T.contents
|
||||
for(var/B in T)
|
||||
var/atom/movable/AM = B
|
||||
if(AM.flags_2 & HOLOGRAM_2)
|
||||
continue
|
||||
. += AM
|
||||
|
||||
|
||||
/datum/personal_crafting/proc/get_surroundings(mob/user)
|
||||
. = list()
|
||||
for(var/obj/item/I in get_environment(user))
|
||||
if(I.flags_2 & HOLOGRAM_2)
|
||||
continue
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/S = I
|
||||
.[I.type] += S.amount
|
||||
|
||||
@@ -365,4 +365,29 @@
|
||||
name = "Goon from a Blue Toolbox special edition"
|
||||
desc = "Wine from the land down under, where the dingos roam and the roos do wander."
|
||||
icon_state = "goonbag"
|
||||
list_reagents = list("wine" = 70)
|
||||
list_reagents = list("wine" = 70)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/waterbottle
|
||||
name = "bottle of water"
|
||||
desc = "A bottle of water filled at an old Earth bottling facility."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "smallbottle"
|
||||
item_state = "bottle"
|
||||
list_reagents = list("water" = 49.5, "fluorine" = 0.5) //see desc, don't think about it too hard
|
||||
materials = list(MAT_GLASS = 0)
|
||||
volume = 50
|
||||
amount_per_transfer_from_this = 10
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/waterbottle/empty
|
||||
list_reagents = list()
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/waterbottle/large
|
||||
desc = "A fresh commercial-sized bottle of water."
|
||||
icon_state = "largebottle"
|
||||
materials = list(MAT_GLASS = 0)
|
||||
list_reagents = list("water" = 100)
|
||||
volume = 100
|
||||
amount_per_transfer_from_this = 20
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/waterbottle/large/empty
|
||||
list_reagents = list()
|
||||
@@ -64,13 +64,6 @@
|
||||
icon_state = "cola"
|
||||
list_reagents = list("cola" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/waterbottle
|
||||
name = "Bottled Water"
|
||||
desc = "Introduced to the vending machines by Skrellian request, this water comes straight from the Martian poles."
|
||||
icon_state = "waterbottle"
|
||||
is_plastic = 1
|
||||
list_reagents = list("water" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/beer
|
||||
name = "Space Beer"
|
||||
desc = "Contains only water, malt and hops."
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*****************************Coin********************************/
|
||||
|
||||
/obj/item/coin
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/economy.dmi'
|
||||
name = "coin"
|
||||
icon_state = "coin__heads"
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -393,7 +393,7 @@
|
||||
for(var/i in T)
|
||||
if(istype(i, /obj/item) && !is_type_in_typecache(i, banned_items_typecache))
|
||||
var/obj/item/W = i
|
||||
if(!W.admin_spawned)
|
||||
if(!W.admin_spawned && !(W.flags_2 & HOLOGRAM_2) && !(W.flags & ABSTRACT))
|
||||
L += W
|
||||
if(L.len)
|
||||
var/obj/item/CHOSEN = pick(L)
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
/**********************Input and output plates**************************/
|
||||
|
||||
/obj/machinery/mineral/input
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "x2"
|
||||
name = "Input area"
|
||||
density = 0
|
||||
anchored = 1.0
|
||||
New()
|
||||
icon_state = "blank"
|
||||
|
||||
/obj/machinery/mineral/output
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "x"
|
||||
name = "Output area"
|
||||
density = 0
|
||||
anchored = 1.0
|
||||
New()
|
||||
icon_state = "blank"
|
||||
|
||||
/obj/machinery/mineral
|
||||
var/input_dir = NORTH
|
||||
var/output_dir = SOUTH
|
||||
|
||||
/obj/machinery/mineral/proc/unload_mineral(var/atom/movable/S)
|
||||
S.loc = loc
|
||||
var/turf/T = get_step(src,output_dir)
|
||||
if(T)
|
||||
S.loc = T
|
||||
@@ -1,201 +1,69 @@
|
||||
#define SMELT_AMOUNT 10
|
||||
|
||||
/**********************Mineral processing unit console**************************/
|
||||
|
||||
/obj/machinery/mineral
|
||||
var/input_dir = NORTH
|
||||
var/output_dir = SOUTH
|
||||
|
||||
/obj/machinery/mineral/proc/unload_mineral(atom/movable/S)
|
||||
S.forceMove(loc)
|
||||
var/turf/T = get_step(src,output_dir)
|
||||
if(T)
|
||||
S.forceMove(T)
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console
|
||||
name = "production machine console"
|
||||
icon = 'icons/obj/machines/mining_machines.dmi'
|
||||
icon_state = "console"
|
||||
density = 1
|
||||
anchored = 1
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/obj/machinery/mineral/processing_unit/machine = null
|
||||
var/machinedir = EAST
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/New()
|
||||
..()
|
||||
spawn(7)
|
||||
src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir))
|
||||
if(machine)
|
||||
machine.CONSOLE = src
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/attack_hand(user as mob)
|
||||
|
||||
var/dat = "<b>Smelter control console</b><br><br>"
|
||||
//iron
|
||||
if(machine.ore_iron || machine.ore_glass || machine.ore_plasma || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown || machine.ore_mime || machine.ore_adamantine)
|
||||
if(machine.ore_iron)
|
||||
if(machine.selected_iron==1)
|
||||
dat += "<A href='?src=[UID()];sel_iron=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_iron=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Iron: [machine.ore_iron]<br>"
|
||||
else
|
||||
machine.selected_iron = 0
|
||||
|
||||
//sand - glass
|
||||
if(machine.ore_glass)
|
||||
if(machine.selected_glass==1)
|
||||
dat += "<A href='?src=[UID()];sel_glass=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_glass=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Sand: [machine.ore_glass]<br>"
|
||||
else
|
||||
machine.selected_glass = 0
|
||||
|
||||
//plasma
|
||||
if(machine.ore_plasma)
|
||||
if(machine.selected_plasma==1)
|
||||
dat += "<A href='?src=[UID()];sel_plasma=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_plasma=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Plasma: [machine.ore_plasma]<br>"
|
||||
else
|
||||
machine.selected_plasma = 0
|
||||
|
||||
//uranium
|
||||
if(machine.ore_uranium)
|
||||
if(machine.selected_uranium==1)
|
||||
dat += "<A href='?src=[UID()];sel_uranium=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_uranium=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Uranium: [machine.ore_uranium]<br>"
|
||||
else
|
||||
machine.selected_uranium = 0
|
||||
|
||||
//gold
|
||||
if(machine.ore_gold)
|
||||
if(machine.selected_gold==1)
|
||||
dat += "<A href='?src=[UID()];sel_gold=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_gold=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Gold: [machine.ore_gold]<br>"
|
||||
else
|
||||
machine.selected_gold = 0
|
||||
|
||||
//silver
|
||||
if(machine.ore_silver)
|
||||
if(machine.selected_silver==1)
|
||||
dat += "<A href='?src=[UID()];sel_silver=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_silver=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Silver: [machine.ore_silver]<br>"
|
||||
else
|
||||
machine.selected_silver = 0
|
||||
|
||||
//diamond
|
||||
if(machine.ore_diamond)
|
||||
if(machine.selected_diamond==1)
|
||||
dat += "<A href='?src=[UID()];sel_diamond=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_diamond=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Diamond: [machine.ore_diamond]<br>"
|
||||
else
|
||||
machine.selected_diamond = 0
|
||||
|
||||
//bananium
|
||||
if(machine.ore_clown)
|
||||
if(machine.selected_clown==1)
|
||||
dat += "<A href='?src=[UID()];sel_clown=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_clown=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Bananium: [machine.ore_clown]<br>"
|
||||
else
|
||||
machine.selected_clown = 0
|
||||
|
||||
//tranquillite
|
||||
if(machine.ore_mime)
|
||||
if(machine.selected_mime==1)
|
||||
dat += "<A href='?src=[UID()];sel_mime=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=[UID()];sel_mime=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Tranquillite: [machine.ore_mime]<br>"
|
||||
else
|
||||
machine.selected_mime = 0
|
||||
|
||||
//titanium
|
||||
if(machine.ore_titanium)
|
||||
if (machine.selected_titanium==1)
|
||||
dat += "<A href='?src=\ref[src];sel_titanium=no'><font color='green'>Smelting</font></A> "
|
||||
else
|
||||
dat += "<A href='?src=\ref[src];sel_titanium=yes'><font color='red'>Not smelting</font></A> "
|
||||
dat += "Titanium: [machine.ore_titanium]<br>"
|
||||
else
|
||||
machine.selected_titanium = 0
|
||||
|
||||
//On or off
|
||||
dat += text("Machine is currently ")
|
||||
if(machine.on==1)
|
||||
dat += text("<A href='?src=[UID()];set_on=off'>On</A> ")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];set_on=on'>Off</A> ")
|
||||
machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir))
|
||||
if(machine)
|
||||
machine.CONSOLE = src
|
||||
else
|
||||
dat+="---No Materials Loaded---"
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
if(!machine)
|
||||
return
|
||||
|
||||
user << browse("[dat]", "window=console_processing_unit")
|
||||
var/dat = machine.get_machine_data()
|
||||
|
||||
var/datum/browser/popup = new(user, "processing", "Smelting Console", 300, 500)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["sel_iron"])
|
||||
if(href_list["sel_iron"] == "yes")
|
||||
machine.selected_iron = 1
|
||||
else
|
||||
machine.selected_iron = 0
|
||||
if(href_list["sel_glass"])
|
||||
if(href_list["sel_glass"] == "yes")
|
||||
machine.selected_glass = 1
|
||||
else
|
||||
machine.selected_glass = 0
|
||||
if(href_list["sel_plasma"])
|
||||
if(href_list["sel_plasma"] == "yes")
|
||||
machine.selected_plasma = 1
|
||||
else
|
||||
machine.selected_plasma = 0
|
||||
if(href_list["sel_uranium"])
|
||||
if(href_list["sel_uranium"] == "yes")
|
||||
machine.selected_uranium = 1
|
||||
else
|
||||
machine.selected_uranium = 0
|
||||
if(href_list["sel_gold"])
|
||||
if(href_list["sel_gold"] == "yes")
|
||||
machine.selected_gold = 1
|
||||
else
|
||||
machine.selected_gold = 0
|
||||
if(href_list["sel_silver"])
|
||||
if(href_list["sel_silver"] == "yes")
|
||||
machine.selected_silver = 1
|
||||
else
|
||||
machine.selected_silver = 0
|
||||
if(href_list["sel_diamond"])
|
||||
if(href_list["sel_diamond"] == "yes")
|
||||
machine.selected_diamond = 1
|
||||
else
|
||||
machine.selected_diamond = 0
|
||||
if(href_list["sel_clown"])
|
||||
if(href_list["sel_clown"] == "yes")
|
||||
machine.selected_clown = 1
|
||||
else
|
||||
machine.selected_clown = 0
|
||||
if(href_list["sel_mime"])
|
||||
if(href_list["sel_mime"] == "yes")
|
||||
machine.selected_mime = 1
|
||||
else
|
||||
machine.selected_mime = 0
|
||||
if(href_list["sel_titanium"])
|
||||
if (href_list["sel_titanium"] == "yes")
|
||||
machine.selected_titanium = 1
|
||||
else
|
||||
machine.selected_titanium = 0
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(href_list["material"])
|
||||
machine.selected_material = href_list["material"]
|
||||
machine.selected_alloy = null
|
||||
|
||||
if(href_list["alloy"])
|
||||
machine.selected_material = null
|
||||
machine.selected_alloy = href_list["alloy"]
|
||||
|
||||
if(href_list["set_on"])
|
||||
if(href_list["set_on"] == "on")
|
||||
machine.on = 1
|
||||
else
|
||||
machine.on = 0
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
machine.on = (href_list["set_on"] == "on")
|
||||
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/Destroy()
|
||||
machine = null
|
||||
return ..()
|
||||
|
||||
|
||||
/**********************Mineral processing unit**************************/
|
||||
|
||||
@@ -204,244 +72,140 @@
|
||||
name = "furnace"
|
||||
icon = 'icons/obj/machines/mining_machines.dmi'
|
||||
icon_state = "furnace"
|
||||
density = 1
|
||||
anchored = 1
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/obj/machinery/mineral/CONSOLE = null
|
||||
var/ore_gold = 0
|
||||
var/ore_silver = 0
|
||||
var/ore_diamond = 0
|
||||
var/ore_glass = 0
|
||||
var/ore_plasma = 0
|
||||
var/ore_uranium = 0
|
||||
var/ore_iron = 0
|
||||
var/ore_clown = 0
|
||||
var/ore_mime = 0
|
||||
var/ore_adamantine = 0
|
||||
var/ore_titanium = 0
|
||||
var/selected_gold = 0
|
||||
var/selected_silver = 0
|
||||
var/selected_diamond = 0
|
||||
var/selected_glass = 0
|
||||
var/selected_plasma = 0
|
||||
var/selected_uranium = 0
|
||||
var/selected_iron = 0
|
||||
var/selected_clown = 0
|
||||
var/selected_mime = 0
|
||||
var/selected_titanium = 0
|
||||
var/on = 0 //0 = off, 1 =... oh you know!
|
||||
var/on = FALSE
|
||||
var/selected_material = MAT_METAL
|
||||
var/selected_alloy = null
|
||||
var/datum/research/files
|
||||
speed_process = TRUE
|
||||
|
||||
/obj/machinery/mineral/processing_unit/New()
|
||||
..()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), INFINITY)
|
||||
files = new /datum/research/smelter(src)
|
||||
|
||||
/obj/machinery/mineral/processing_unit/Destroy()
|
||||
CONSOLE = null
|
||||
QDEL_NULL(files)
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.retrieve_all()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mineral/processing_unit/process()
|
||||
for(var/i in 1 to 10)
|
||||
if(on)
|
||||
if(selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_glass > 0)
|
||||
ore_glass--
|
||||
generate_mineral(/obj/item/stack/sheet/glass)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_glass > 0 && ore_iron > 0)
|
||||
ore_glass--
|
||||
ore_iron--
|
||||
generate_mineral(/obj/item/stack/sheet/rglass)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_gold > 0)
|
||||
ore_gold--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/gold)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_silver > 0)
|
||||
ore_silver--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/silver)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_diamond > 0)
|
||||
ore_diamond--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/diamond)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_plasma > 0)
|
||||
ore_plasma--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/plasma)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && selected_uranium && !selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_uranium > 0)
|
||||
ore_uranium--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/uranium)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_iron > 0)
|
||||
ore_iron--
|
||||
generate_mineral(/obj/item/stack/sheet/metal)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && selected_iron && !selected_clown && !selected_mime)
|
||||
if(ore_iron > 0 && ore_plasma > 0)
|
||||
ore_iron--
|
||||
ore_plasma--
|
||||
generate_mineral(/obj/item/stack/sheet/plasteel)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && selected_clown && !selected_mime)
|
||||
if(ore_clown > 0)
|
||||
ore_clown--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/bananium)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if(!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && selected_mime)
|
||||
if(ore_mime > 0)
|
||||
ore_mime--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/tranquillite)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if (!selected_glass && !selected_gold && !selected_silver && !selected_diamond && !selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime && selected_titanium)
|
||||
if (ore_titanium > 0)
|
||||
ore_titanium--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/titanium)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
if (!selected_glass && !selected_gold && !selected_silver && !selected_diamond && selected_plasma && !selected_uranium && !selected_iron && !selected_clown && !selected_mime && selected_titanium)
|
||||
if (ore_titanium > 0)
|
||||
ore_titanium--
|
||||
ore_plasma--
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/plastitanium)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
|
||||
//if a non valid combination is selected
|
||||
|
||||
var/b = 1 //this part checks if all required ores are available
|
||||
|
||||
if(!(selected_gold || selected_silver ||selected_diamond || selected_uranium | selected_plasma || selected_iron || selected_iron))
|
||||
b = 0
|
||||
|
||||
if(selected_gold == 1)
|
||||
if(ore_gold <= 0)
|
||||
b = 0
|
||||
if(selected_silver == 1)
|
||||
if(ore_silver <= 0)
|
||||
b = 0
|
||||
if(selected_diamond == 1)
|
||||
if(ore_diamond <= 0)
|
||||
b = 0
|
||||
if(selected_uranium == 1)
|
||||
if(ore_uranium <= 0)
|
||||
b = 0
|
||||
if(selected_plasma == 1)
|
||||
if(ore_plasma <= 0)
|
||||
b = 0
|
||||
if(selected_iron == 1)
|
||||
if(ore_iron <= 0)
|
||||
b = 0
|
||||
if(selected_glass == 1)
|
||||
if(ore_glass <= 0)
|
||||
b = 0
|
||||
if(selected_clown == 1)
|
||||
if(ore_clown <= 0)
|
||||
b = 0
|
||||
if(selected_mime == 1)
|
||||
if(ore_mime <= 0)
|
||||
b = 0
|
||||
if(selected_titanium == 1)
|
||||
if(ore_titanium <= 0)
|
||||
b = 0
|
||||
|
||||
if(b) //if they are, deduct one from each, produce slag and shut the machine off
|
||||
if(selected_gold == 1)
|
||||
ore_gold--
|
||||
if(selected_silver == 1)
|
||||
ore_silver--
|
||||
if(selected_diamond == 1)
|
||||
ore_diamond--
|
||||
if(selected_uranium == 1)
|
||||
ore_uranium--
|
||||
if(selected_plasma == 1)
|
||||
ore_plasma--
|
||||
if(selected_iron == 1)
|
||||
ore_iron--
|
||||
if(selected_clown == 1)
|
||||
ore_clown--
|
||||
if(selected_mime == 1)
|
||||
ore_mime--
|
||||
if(selected_titanium == 1)
|
||||
ore_titanium--
|
||||
generate_mineral(/obj/item/ore/slag)
|
||||
on = 0
|
||||
else
|
||||
on = 0
|
||||
break
|
||||
break
|
||||
else
|
||||
break
|
||||
var/turf/T = get_step(src,input_dir)
|
||||
var/turf/T = get_step(src, input_dir)
|
||||
if(T)
|
||||
var/n = 0
|
||||
for(var/obj/item/O in T)
|
||||
n++
|
||||
if(n>10)
|
||||
break
|
||||
if(istype(O,/obj/item/ore/iron))
|
||||
ore_iron++;
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/glass))
|
||||
ore_glass++;
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/diamond))
|
||||
ore_diamond++;
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/plasma))
|
||||
ore_plasma++
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/gold))
|
||||
ore_gold++
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/silver))
|
||||
ore_silver++
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/uranium))
|
||||
ore_uranium++
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/bananium))
|
||||
ore_clown++
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/tranquillite))
|
||||
ore_mime++
|
||||
O.loc = null
|
||||
continue
|
||||
if(istype(O,/obj/item/ore/titanium))
|
||||
ore_titanium++
|
||||
O.loc = null
|
||||
continue
|
||||
unload_mineral(O)
|
||||
for(var/obj/item/ore/O in T)
|
||||
process_ore(O)
|
||||
CHECK_TICK
|
||||
if(on)
|
||||
if(selected_material)
|
||||
smelt_ore()
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/generate_mineral(var/P)
|
||||
else if(selected_alloy)
|
||||
smelt_alloy()
|
||||
|
||||
|
||||
if(CONSOLE)
|
||||
CONSOLE.updateUsrDialog()
|
||||
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/ore/O)
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
var/material_amount = materials.get_item_material_amount(O)
|
||||
if(!materials.has_space(material_amount))
|
||||
unload_mineral(O)
|
||||
else
|
||||
materials.insert_item(O)
|
||||
qdel(O)
|
||||
if(CONSOLE)
|
||||
CONSOLE.updateUsrDialog()
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/get_machine_data()
|
||||
var/dat = "<b>Smelter control console</b><br><br>"
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
for(var/mat_id in materials.materials)
|
||||
var/datum/material/M = materials.materials[mat_id]
|
||||
dat += "<span class=\"res_name\">[M.name]: </span>[M.amount] cm³"
|
||||
if(selected_material == mat_id)
|
||||
dat += " <i>Smelting</i>"
|
||||
else
|
||||
dat += " <A href='?src=[CONSOLE.UID()];material=[mat_id]'><b>Not Smelting</b></A> "
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<br><br>"
|
||||
dat += "<b>Smelt Alloys</b><br>"
|
||||
|
||||
for(var/v in files.known_designs)
|
||||
var/datum/design/D = files.known_designs[v]
|
||||
dat += "<span class=\"res_name\">[D.name] "
|
||||
if(selected_alloy == D.id)
|
||||
dat += " <i>Smelting</i>"
|
||||
else
|
||||
dat += " <A href='?src=[CONSOLE.UID()];alloy=[D.id]'><b>Not Smelting</b></A> "
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<br><br>"
|
||||
//On or off
|
||||
dat += "Machine is currently "
|
||||
if(on)
|
||||
dat += "<A href='?src=[CONSOLE.UID()];set_on=off'>On</A> "
|
||||
else
|
||||
dat += "<A href='?src=[CONSOLE.UID()];set_on=on'>Off</A> "
|
||||
|
||||
return dat
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/smelt_ore()
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
var/datum/material/mat = materials.materials[selected_material]
|
||||
if(mat)
|
||||
var/sheets_to_remove = (mat.amount >= (MINERAL_MATERIAL_AMOUNT * SMELT_AMOUNT) ) ? SMELT_AMOUNT : round(mat.amount / MINERAL_MATERIAL_AMOUNT)
|
||||
if(!sheets_to_remove)
|
||||
on = FALSE
|
||||
else
|
||||
var/out = get_step(src, output_dir)
|
||||
materials.retrieve_sheets(sheets_to_remove, selected_material, out)
|
||||
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/smelt_alloy()
|
||||
var/datum/design/alloy = files.FindDesignByID(selected_alloy) //check if it's a valid design
|
||||
if(!alloy)
|
||||
on = FALSE
|
||||
return
|
||||
|
||||
var/amount = can_smelt(alloy)
|
||||
|
||||
if(!amount)
|
||||
on = FALSE
|
||||
return
|
||||
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.use_amount(alloy.materials, amount)
|
||||
|
||||
generate_mineral(alloy.build_path)
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/can_smelt(datum/design/D)
|
||||
if(D.make_reagents.len)
|
||||
return FALSE
|
||||
|
||||
var/build_amount = SMELT_AMOUNT
|
||||
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
|
||||
for(var/mat_id in D.materials)
|
||||
var/M = D.materials[mat_id]
|
||||
var/datum/material/smelter_mat = materials.materials[mat_id]
|
||||
|
||||
if(!M || !smelter_mat)
|
||||
return FALSE
|
||||
|
||||
build_amount = min(build_amount, round(smelter_mat.amount / M))
|
||||
|
||||
return build_amount
|
||||
|
||||
/obj/machinery/mineral/processing_unit/proc/generate_mineral(P)
|
||||
var/O = new P(src)
|
||||
unload_mineral(O)
|
||||
|
||||
#undef SMELT_AMOUNT
|
||||
@@ -4,21 +4,21 @@
|
||||
name = "stacking machine console"
|
||||
icon = 'icons/obj/machines/mining_machines.dmi'
|
||||
icon_state = "console"
|
||||
density = 0
|
||||
anchored = 1
|
||||
desc = "Controls a stacking machine... in theory."
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
var/obj/machinery/mineral/stacking_machine/machine = null
|
||||
var/machinedir = SOUTHEAST
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console/New()
|
||||
..()
|
||||
spawn(7)
|
||||
src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir))
|
||||
if(machine)
|
||||
machine.CONSOLE = src
|
||||
else
|
||||
qdel(src)
|
||||
machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir))
|
||||
if(machine)
|
||||
machine.CONSOLE = src
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console/attack_hand(user as mob)
|
||||
/obj/machinery/mineral/stacking_unit_console/attack_hand(mob/user)
|
||||
|
||||
var/obj/item/stack/sheet/s
|
||||
var/dat
|
||||
@@ -34,24 +34,21 @@
|
||||
|
||||
user << browse("[dat]", "window=console_stacking_machine")
|
||||
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
add_fingerprint(usr)
|
||||
if(href_list["release"])
|
||||
if(!(text2path(href_list["release"]) in machine.stack_list)) return //someone tried to spawn materials by spoofing hrefs
|
||||
if(!(text2path(href_list["release"]) in machine.stack_list))
|
||||
return //someone tried to spawn materials by spoofing hrefs
|
||||
var/obj/item/stack/sheet/inp = machine.stack_list[text2path(href_list["release"])]
|
||||
var/obj/item/stack/sheet/out = new inp.type()
|
||||
out.amount = inp.amount
|
||||
inp.amount = 0
|
||||
machine.unload_mineral(out)
|
||||
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
updateUsrDialog()
|
||||
|
||||
/**********************Mineral stacking unit**************************/
|
||||
|
||||
@@ -60,8 +57,9 @@
|
||||
name = "stacking machine"
|
||||
icon = 'icons/obj/machines/mining_machines.dmi'
|
||||
icon_state = "stacker"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
desc = "A machine that automatically stacks acquired materials. Controlled by a nearby console."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/obj/machinery/mineral/stacking_unit_console/CONSOLE
|
||||
var/stk_types = list()
|
||||
var/stk_amt = list()
|
||||
@@ -69,7 +67,14 @@
|
||||
var/stack_amt = 50; //ammount to stack before releassing
|
||||
input_dir = EAST
|
||||
output_dir = WEST
|
||||
speed_process = 1
|
||||
speed_process = TRUE
|
||||
|
||||
/obj/machinery/mineral/stacking_machine/process()
|
||||
var/turf/T = get_step(src, input_dir)
|
||||
if(T)
|
||||
for(var/obj/item/stack/sheet/S in T)
|
||||
process_sheet(S)
|
||||
CHECK_TICK
|
||||
|
||||
/obj/machinery/mineral/stacking_machine/proc/process_sheet(obj/item/stack/sheet/inp)
|
||||
if(!(inp.type in stack_list)) //It's the first of this sheet added
|
||||
@@ -83,11 +88,4 @@
|
||||
var/obj/item/stack/sheet/out = new inp.type()
|
||||
out.amount = stack_amt
|
||||
unload_mineral(out)
|
||||
storage.amount -= stack_amt
|
||||
|
||||
/obj/machinery/mineral/stacking_machine/process()
|
||||
var/turf/T = get_step(src, input_dir)
|
||||
if(T)
|
||||
for(var/obj/item/stack/sheet/S in T)
|
||||
process_sheet(S)
|
||||
CHECK_TICK
|
||||
storage.amount -= stack_amt
|
||||
+69
-174
@@ -2,208 +2,103 @@
|
||||
|
||||
|
||||
/obj/machinery/mineral/mint
|
||||
name = "Coin press"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
name = "coin press"
|
||||
icon = 'icons/obj/economy.dmi'
|
||||
icon_state = "coinpress0"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
var/amt_silver = 0 //amount of silver
|
||||
var/amt_gold = 0 //amount of gold
|
||||
var/amt_diamond = 0
|
||||
var/amt_iron = 0
|
||||
var/amt_plasma = 0
|
||||
var/amt_uranium = 0
|
||||
var/amt_clown = 0
|
||||
var/amt_mime = 0
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/newCoins = 0 //how many coins the machine made in it's last load
|
||||
var/processing = 0
|
||||
var/chosen = "metal" //which material will be used to make coins
|
||||
var/processing = FALSE
|
||||
var/chosen = MAT_METAL //which material will be used to make coins
|
||||
var/coinsToProduce = 10
|
||||
speed_process = 1
|
||||
speed_process = TRUE
|
||||
|
||||
|
||||
/obj/machinery/mineral/mint/New()
|
||||
..()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM, MAT_TRANQUILLITE), MINERAL_MATERIAL_AMOUNT * 50)
|
||||
|
||||
/obj/machinery/mineral/mint/process()
|
||||
var/turf/T = get_step(src,input_dir)
|
||||
if(T)
|
||||
for(var/obj/item/stack/sheet/O in T)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/gold))
|
||||
amt_gold += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/silver))
|
||||
amt_silver += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/diamond))
|
||||
amt_diamond += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/plasma))
|
||||
amt_plasma += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/uranium))
|
||||
amt_uranium += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/metal))
|
||||
amt_iron += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/bananium))
|
||||
amt_clown += 100 * O.amount
|
||||
qdel(O)
|
||||
if(istype(O, /obj/item/stack/sheet/mineral/tranquillite))
|
||||
amt_mime += 100 * O.amount
|
||||
qdel(O)
|
||||
var/turf/T = get_step(src, input_dir)
|
||||
if(!T)
|
||||
return
|
||||
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
for(var/obj/item/stack/sheet/O in T)
|
||||
materials.insert_stack(O, O.amount)
|
||||
|
||||
/obj/machinery/mineral/mint/attack_hand(user as mob)
|
||||
|
||||
/obj/machinery/mineral/mint/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
var/dat = "<b>Coin Press</b><br>"
|
||||
|
||||
dat += text("<br><font color='#ffcc00'><b>Gold inserted: </b>[amt_gold]</font> ")
|
||||
if(chosen == "gold")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=gold'>Choose</A>")
|
||||
dat += text("<br><font color='#888888'><b>Silver inserted: </b>[amt_silver]</font> ")
|
||||
if(chosen == "silver")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=silver'>Choose</A>")
|
||||
dat += text("<br><font color='#555555'><b>Iron inserted: </b>[amt_iron]</font> ")
|
||||
if(chosen == "metal")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=metal'>Choose</A>")
|
||||
dat += text("<br><font color='#8888FF'><b>Diamond inserted: </b>[amt_diamond]</font> ")
|
||||
if(chosen == "diamond")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=diamond'>Choose</A>")
|
||||
dat += text("<br><font color='#FF8800'><b>Plasma inserted: </b>[amt_plasma]</font> ")
|
||||
if(chosen == "plasma")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=plasma'>Choose</A>")
|
||||
dat += text("<br><font color='#008800'><b>Uranium inserted: </b>[amt_uranium]</font> ")
|
||||
if(chosen == "uranium")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=uranium'>Choose</A>")
|
||||
if(amt_clown > 0)
|
||||
dat += text("<br><font color='#AAAA00'><b>Bananium inserted: </b>[amt_clown]</font> ")
|
||||
if(chosen == "clown")
|
||||
dat += text("chosen")
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
for(var/mat_id in materials.materials)
|
||||
var/datum/material/M = materials.materials[mat_id]
|
||||
if(!M.amount && chosen != mat_id)
|
||||
continue
|
||||
dat += "<br><b>[M.name] amount:</b> [M.amount] cm<sup>3</sup> "
|
||||
if(chosen == mat_id)
|
||||
dat += "<b>Chosen</b>"
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=clown'>Choose</A>")
|
||||
if(amt_mime > 0)
|
||||
dat += text("<br><font color='#666666'><b>Tranquillite inserted: </b>[amt_mime]</font> ")
|
||||
if(chosen == "mime")
|
||||
dat += text("chosen")
|
||||
else
|
||||
dat += text("<A href='?src=[UID()];choose=mime'>Choose</A>")
|
||||
dat += "<A href='?src=[UID()];choose=[mat_id]'>Choose</A>"
|
||||
|
||||
dat += text("<br><br>Will produce [coinsToProduce] [chosen] coins if enough materials are available.<br>")
|
||||
//dat += text("The dial which controls the number of conins to produce seems to be stuck. A technician has already been dispatched to fix this.")
|
||||
dat += text("<A href='?src=[UID()];chooseAmt=-10'>-10</A> ")
|
||||
dat += text("<A href='?src=[UID()];chooseAmt=-5'>-5</A> ")
|
||||
dat += text("<A href='?src=[UID()];chooseAmt=-1'>-1</A> ")
|
||||
dat += text("<A href='?src=[UID()];chooseAmt=1'>+1</A> ")
|
||||
dat += text("<A href='?src=[UID()];chooseAmt=5'>+5</A> ")
|
||||
dat += text("<A href='?src=[UID()];chooseAmt=10'>+10</A> ")
|
||||
var/datum/material/M = materials.materials[chosen]
|
||||
|
||||
dat += text("<br><br>In total this machine produced <font color='green'><b>[newCoins]</b></font> coins.")
|
||||
dat += text("<br><A href='?src=[UID()];makeCoins=[1]'>Make coins</A>")
|
||||
user << browse("[dat]", "window=mint")
|
||||
dat += "<br><br>Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.<br>"
|
||||
dat += "<A href='?src=[UID()];chooseAmt=-10'>-10</A> "
|
||||
dat += "<A href='?src=[UID()];chooseAmt=-5'>-5</A> "
|
||||
dat += "<A href='?src=[UID()];chooseAmt=-1'>-1</A> "
|
||||
dat += "<A href='?src=[UID()];chooseAmt=1'>+1</A> "
|
||||
dat += "<A href='?src=[UID()];chooseAmt=5'>+5</A> "
|
||||
dat += "<A href='?src=[UID()];chooseAmt=10'>+10</A> "
|
||||
|
||||
dat += "<br><br>In total this machine produced <font color='green'><b>[newCoins]</b></font> coins."
|
||||
dat += "<br><A href='?src=[UID()];makeCoins=[1]'>Make coins</A>"
|
||||
user << browse(dat, "window=mint")
|
||||
|
||||
/obj/machinery/mineral/mint/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(processing==1)
|
||||
add_fingerprint(usr)
|
||||
if(processing == 1)
|
||||
to_chat(usr, "<span class='notice'>The machine is processing.</span>")
|
||||
return
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
if(href_list["choose"])
|
||||
chosen = href_list["choose"]
|
||||
if(materials.materials[href_list["choose"]])
|
||||
chosen = href_list["choose"]
|
||||
if(href_list["chooseAmt"])
|
||||
coinsToProduce = Clamp(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000)
|
||||
if(href_list["makeCoins"])
|
||||
var/temp_coins = coinsToProduce
|
||||
processing = 1;
|
||||
processing = TRUE
|
||||
icon_state = "coinpress1"
|
||||
switch(chosen)
|
||||
if("metal")
|
||||
while(amt_iron > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/iron)
|
||||
amt_iron -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("gold")
|
||||
while(amt_gold > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/gold)
|
||||
amt_gold -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("silver")
|
||||
while(amt_silver > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/silver)
|
||||
amt_silver -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("diamond")
|
||||
while(amt_diamond > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/diamond)
|
||||
amt_diamond -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("plasma")
|
||||
while(amt_plasma > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/plasma)
|
||||
amt_plasma -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("uranium")
|
||||
while(amt_uranium > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/uranium)
|
||||
amt_uranium -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("clown")
|
||||
while(amt_clown > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/clown)
|
||||
amt_clown -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
if("mime")
|
||||
while(amt_mime > 0 && coinsToProduce > 0)
|
||||
create_coins(/obj/item/coin/mime)
|
||||
amt_mime -= 20
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
src.updateUsrDialog()
|
||||
sleep(5)
|
||||
icon_state = "coinpress0"
|
||||
processing = 0
|
||||
coinsToProduce = temp_coins
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
var/coin_mat = MINERAL_MATERIAL_AMOUNT * 0.2
|
||||
var/datum/material/M = materials.materials[chosen]
|
||||
if(!M || !M.coin_type)
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/mineral/mint/proc/create_coins(var/P)
|
||||
while(coinsToProduce > 0 && materials.use_amount_type(coin_mat, chosen))
|
||||
create_coins(M.coin_type)
|
||||
coinsToProduce--
|
||||
newCoins++
|
||||
updateUsrDialog()
|
||||
sleep(5)
|
||||
|
||||
icon_state = "coinpress0"
|
||||
processing = FALSE
|
||||
coinsToProduce = temp_coins
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/mineral/mint/proc/create_coins(P)
|
||||
var/turf/T = get_step(src,output_dir)
|
||||
if(T)
|
||||
var/obj/item/O = new P(src)
|
||||
var/obj/item/moneybag/M = locate(/obj/item/moneybag/, T)
|
||||
var/obj/item/storage/bag/money/M = locate(/obj/item/storage/bag/money, T)
|
||||
if(!M)
|
||||
M = new /obj/item/moneybag(src)
|
||||
M = new /obj/item/storage/bag/money(src)
|
||||
unload_mineral(M)
|
||||
O.loc = M
|
||||
O.forceMove(M)
|
||||
@@ -1,117 +1,20 @@
|
||||
/*****************************Money bag********************************/
|
||||
|
||||
/obj/item/moneybag
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
name = "Money bag"
|
||||
/obj/item/storage/bag/money
|
||||
name = "money bag"
|
||||
icon_state = "moneybag"
|
||||
flags = CONDUCT
|
||||
force = 10.0
|
||||
force = 10
|
||||
throwforce = 0
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 20
|
||||
max_integrity = 100
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
storage_slots = 40
|
||||
max_combined_w_class = 40
|
||||
can_hold = list(/obj/item/coin, /obj/item/stack/spacecash)
|
||||
|
||||
/obj/item/moneybag/attack_hand(user as mob)
|
||||
var/amt_gold = 0
|
||||
var/amt_silver = 0
|
||||
var/amt_diamond = 0
|
||||
var/amt_iron = 0
|
||||
var/amt_plasma = 0
|
||||
var/amt_uranium = 0
|
||||
var/amt_clown = 0
|
||||
var/amt_mime = 0
|
||||
var/amt_adamantine = 0
|
||||
|
||||
for(var/obj/item/coin/C in contents)
|
||||
if(istype(C,/obj/item/coin/diamond))
|
||||
amt_diamond++
|
||||
if(istype(C,/obj/item/coin/plasma))
|
||||
amt_plasma++
|
||||
if(istype(C,/obj/item/coin/iron))
|
||||
amt_iron++
|
||||
if(istype(C,/obj/item/coin/silver))
|
||||
amt_silver++
|
||||
if(istype(C,/obj/item/coin/gold))
|
||||
amt_gold++
|
||||
if(istype(C,/obj/item/coin/uranium))
|
||||
amt_uranium++
|
||||
if(istype(C,/obj/item/coin/clown))
|
||||
amt_clown++
|
||||
if(istype(C,/obj/item/coin/mime))
|
||||
amt_mime++
|
||||
if(istype(C,/obj/item/coin/adamantine))
|
||||
amt_adamantine++
|
||||
|
||||
var/dat = text("<b>The contents of the moneybag reveal...</b><br>")
|
||||
if(amt_gold)
|
||||
dat += text("Gold coins: [amt_gold] <A href='?src=[UID()];remove=gold'>Remove one</A><br>")
|
||||
if(amt_silver)
|
||||
dat += text("Silver coins: [amt_silver] <A href='?src=[UID()];remove=silver'>Remove one</A><br>")
|
||||
if(amt_iron)
|
||||
dat += text("Metal coins: [amt_iron] <A href='?src=[UID()];remove=iron'>Remove one</A><br>")
|
||||
if(amt_diamond)
|
||||
dat += text("Diamond coins: [amt_diamond] <A href='?src=[UID()];remove=diamond'>Remove one</A><br>")
|
||||
if(amt_plasma)
|
||||
dat += text("Plasma coins: [amt_plasma] <A href='?src=[UID()];remove=plasma'>Remove one</A><br>")
|
||||
if(amt_uranium)
|
||||
dat += text("Uranium coins: [amt_uranium] <A href='?src=[UID()];remove=uranium'>Remove one</A><br>")
|
||||
if(amt_clown)
|
||||
dat += text("Bananium coins: [amt_clown] <A href='?src=[UID()];remove=clown'>Remove one</A><br>")
|
||||
if(amt_mime)
|
||||
dat += text("Tranquillite coins: [amt_mime] <A href='?src=[UID()];remove=mime'>Remove one</A><br>")
|
||||
if(amt_adamantine)
|
||||
dat += text("Adamantine coins: [amt_adamantine] <A href='?src=[UID()];remove=adamantine'>Remove one</A><br>")
|
||||
user << browse("[dat]", "window=moneybag")
|
||||
|
||||
/obj/item/moneybag/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/coin))
|
||||
var/obj/item/coin/C = W
|
||||
if(!user.drop_item())
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You add the [C.name] into the bag.</span>")
|
||||
contents += C
|
||||
if(istype(W, /obj/item/moneybag))
|
||||
var/obj/item/moneybag/C = W
|
||||
for(var/obj/O in C.contents)
|
||||
contents += O;
|
||||
to_chat(user, "<span class='notice'>You empty the [C.name] into the bag.</span>")
|
||||
return
|
||||
|
||||
/obj/item/moneybag/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["remove"])
|
||||
var/obj/item/coin/COIN
|
||||
switch(href_list["remove"])
|
||||
if("gold")
|
||||
COIN = locate(/obj/item/coin/gold,src.contents)
|
||||
if("silver")
|
||||
COIN = locate(/obj/item/coin/silver,src.contents)
|
||||
if("iron")
|
||||
COIN = locate(/obj/item/coin/iron,src.contents)
|
||||
if("diamond")
|
||||
COIN = locate(/obj/item/coin/diamond,src.contents)
|
||||
if("plasma")
|
||||
COIN = locate(/obj/item/coin/plasma,src.contents)
|
||||
if("uranium")
|
||||
COIN = locate(/obj/item/coin/uranium,src.contents)
|
||||
if("clown")
|
||||
COIN = locate(/obj/item/coin/clown,src.contents)
|
||||
if("mime")
|
||||
COIN = locate(/obj/item/coin/mime,src.contents)
|
||||
if("adamantine")
|
||||
COIN = locate(/obj/item/coin/adamantine,src.contents)
|
||||
if(!COIN)
|
||||
return
|
||||
COIN.loc = src.loc
|
||||
return
|
||||
|
||||
/obj/item/moneybag/vault
|
||||
|
||||
/obj/item/moneybag/vault/New()
|
||||
/obj/item/storage/bag/money/vault/New()
|
||||
..()
|
||||
new /obj/item/coin/silver(src)
|
||||
new /obj/item/coin/silver(src)
|
||||
@@ -119,4 +22,4 @@
|
||||
new /obj/item/coin/silver(src)
|
||||
new /obj/item/coin/gold(src)
|
||||
new /obj/item/coin/gold(src)
|
||||
new /obj/item/coin/adamantine(src)
|
||||
new /obj/item/coin/adamantine(src)
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/gun/magic/staff
|
||||
slot_flags = SLOT_BACK
|
||||
ammo_type = /obj/item/ammo_casing/magic
|
||||
flags_2 = NO_MAT_REDEMPTION_2
|
||||
|
||||
/obj/item/gun/magic/staff/change
|
||||
name = "staff of change"
|
||||
|
||||
@@ -20,18 +20,6 @@
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
|
||||
/datum/reagent/plasticide
|
||||
name = "Plasticide"
|
||||
id = "plasticide"
|
||||
description = "Liquid plastic, do not eat."
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/plasticide/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/minttoxin
|
||||
name = "Mint Toxin"
|
||||
id = "minttoxin"
|
||||
|
||||
@@ -93,17 +93,18 @@
|
||||
result_amount = 2
|
||||
mix_message = "The mixture gives off a sharp acidic tang."
|
||||
|
||||
/datum/chemical_reaction/plastication
|
||||
name = "Plastic"
|
||||
id = "solidplastic"
|
||||
/datum/chemical_reaction/plastic_polymers
|
||||
name = "plastic polymers"
|
||||
id = "plastic_polymers"
|
||||
result = null
|
||||
required_reagents = list("facid" = 10, "plasticide" = 20)
|
||||
required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3)
|
||||
min_temp = 374
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/plastication/on_reaction(datum/reagents/holder)
|
||||
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/plastic
|
||||
M.amount = 10
|
||||
M.forceMove(get_turf(holder.my_atom))
|
||||
var/obj/item/stack/sheet/plastic/P = new /obj/item/stack/sheet/plastic
|
||||
P.amount = 10
|
||||
P.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
/datum/chemical_reaction/lube
|
||||
name = "Space Lube"
|
||||
|
||||
@@ -10,10 +10,6 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
icon_state = "circuit_imprinter"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/g_amount = 0
|
||||
var/gold_amount = 0
|
||||
var/diamond_amount = 0
|
||||
var/max_material_amount = 75000.0
|
||||
var/efficiency_coeff
|
||||
|
||||
var/list/categories = list(
|
||||
@@ -55,13 +51,16 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
reagents.my_atom = src
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
|
||||
var/T = 0
|
||||
reagents.maximum_volume = 0
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
reagents.maximum_volume += G.volume
|
||||
G.reagents.trans_to(src, G.reagents.total_volume)
|
||||
|
||||
materials.max_amount = 0
|
||||
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
|
||||
T += M.rating
|
||||
max_material_amount = T * 75000.0
|
||||
T = 0
|
||||
materials.max_amount += M.rating * 75000
|
||||
|
||||
var/T = 0
|
||||
for(var/obj/item/stock_parts/manipulator/M in component_parts)
|
||||
T += M.rating
|
||||
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
|
||||
@@ -72,23 +71,18 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, var/M)
|
||||
switch(M)
|
||||
if(MAT_GLASS)
|
||||
return (g_amount - (being_built.materials[M]/efficiency_coeff) >= 0)
|
||||
if(MAT_GOLD)
|
||||
return (gold_amount - (being_built.materials[M]/efficiency_coeff) >= 0)
|
||||
if(MAT_DIAMOND)
|
||||
return (diamond_amount - (being_built.materials[M]/efficiency_coeff) >= 0)
|
||||
else
|
||||
return (reagents.has_reagent(M, (being_built.materials[M]/efficiency_coeff)) != 0)
|
||||
var/list/all_materials = being_built.reagents_list + being_built.materials
|
||||
|
||||
var/A = materials.amount(M)
|
||||
if(!A)
|
||||
A = reagents.get_reagent_amount(M)
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/proc/TotalMaterials()
|
||||
return g_amount + gold_amount + diamond_amount
|
||||
return round(A / max(1, (all_materials[M]/efficiency_coeff)))
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(shocked)
|
||||
shock(user,50)
|
||||
if(shock(user,50))
|
||||
return TRUE
|
||||
if(default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter", O))
|
||||
if(linked_console)
|
||||
linked_console.linked_imprinter = null
|
||||
@@ -104,57 +98,13 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
if(istype(I, /obj/item/reagent_containers/glass/beaker))
|
||||
reagents.trans_to(I, reagents.total_volume)
|
||||
I.loc = src.loc
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
reagents.trans_to(G, G.reagents.maximum_volume)
|
||||
if(g_amount >= MINERAL_MATERIAL_AMOUNT)
|
||||
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
|
||||
G.amount = round(g_amount / MINERAL_MATERIAL_AMOUNT)
|
||||
if(gold_amount >= MINERAL_MATERIAL_AMOUNT)
|
||||
var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc)
|
||||
G.amount = round(gold_amount / MINERAL_MATERIAL_AMOUNT)
|
||||
if(diamond_amount >= MINERAL_MATERIAL_AMOUNT)
|
||||
var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc)
|
||||
G.amount = round(diamond_amount / MINERAL_MATERIAL_AMOUNT)
|
||||
materials.retrieve_all()
|
||||
default_deconstruction_crowbar(O)
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't load the [src.name] while it's opened.</span>")
|
||||
return
|
||||
if(disabled)
|
||||
return
|
||||
if(!linked_console)
|
||||
to_chat(user, "<span class='warning'>The [name] must be linked to an R&D console first!</span>")
|
||||
return 1
|
||||
if(O.is_open_container())
|
||||
return
|
||||
if(!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond))
|
||||
to_chat(user, "<span class='warning'>You cannot insert this item into the [name]!</span>")
|
||||
return
|
||||
if(stat)
|
||||
return
|
||||
if(busy)
|
||||
to_chat(user, "<span class='warning'>The [name] is busy. Please wait for completion of previous operation.</span>")
|
||||
return
|
||||
var/obj/item/stack/sheet/stack = O
|
||||
if((TotalMaterials() + stack.perunit) > max_material_amount)
|
||||
to_chat(user, "<span class='warning'>The [name] is full. Please remove glass from the protolathe in order to insert more.</span>")
|
||||
return
|
||||
|
||||
var/amount = round(input("How many sheets do you want to add?") as num)
|
||||
if(amount <= 0 || stack.amount <= 0)
|
||||
return
|
||||
if(amount > stack.amount)
|
||||
amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit))
|
||||
|
||||
busy = 1
|
||||
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10)))
|
||||
to_chat(user, "<span class='notice'>You add [amount] sheets to the [src.name].</span>")
|
||||
if(istype(stack, /obj/item/stack/sheet/glass))
|
||||
g_amount += amount * MINERAL_MATERIAL_AMOUNT
|
||||
else if(istype(stack, /obj/item/stack/sheet/mineral/gold))
|
||||
gold_amount += amount * MINERAL_MATERIAL_AMOUNT
|
||||
else if(istype(stack, /obj/item/stack/sheet/mineral/diamond))
|
||||
diamond_amount += amount * MINERAL_MATERIAL_AMOUNT
|
||||
stack.use(amount)
|
||||
busy = 0
|
||||
src.updateUsrDialog()
|
||||
return FALSE
|
||||
else
|
||||
return ..()
|
||||
@@ -42,6 +42,6 @@ other types of metals and chemistry for reagents).
|
||||
var/locked = 0 //If true it will spawn inside a lockbox with currently sec access
|
||||
var/access_requirement = list(access_armory) //What special access requirements will the lockbox have? Defaults to armory.
|
||||
var/category = null //Primarily used for Mech Fabricators, but can be used for anything
|
||||
var/list/reagents = list() //List of reagents. Format: "id" = amount.
|
||||
var/list/reagents_list = list() //List of reagents. Format: "id" = amount.
|
||||
var/maxstack = 1
|
||||
var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
id = "freeform_module"
|
||||
req_tech = list("programming" = 5, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/freeform
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
id = "onecrewmember_module"
|
||||
req_tech = list("programming" = 6, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/oneCrewMember
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
id = "oxygen_module"
|
||||
req_tech = list("programming" = 4, "biotech" = 2, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/oxygen
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
id = "protectstation_module"
|
||||
req_tech = list("programming" = 5, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/protectStation
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
id = "purge_module"
|
||||
req_tech = list("programming" = 5, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/purge
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "quarantine_module"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/quarantine
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
id = "reset_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/reset
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
id = "safeguard_module"
|
||||
req_tech = list("programming" = 3, "materials" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/safeguard
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
id = "antimov_module"
|
||||
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/antimov
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
id = "asimov_module"
|
||||
req_tech = list("programming" = 3, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/asimov
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
id = "corporate_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/corp
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
id = "crewsimov_module"
|
||||
req_tech = list("programming" = 3, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/crewsimov
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
id = "freeformcore_module"
|
||||
req_tech = list("programming" = 6, "materials" = 6)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/freeformcore
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
id = "paladin_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/paladin
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -148,6 +148,6 @@
|
||||
id = "tyrant_module"
|
||||
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_DIAMOND = 100)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/tyrant
|
||||
category = list("AI Modules")
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
/datum/design/rglass
|
||||
name = "Reinforced Glass"
|
||||
id = "rglass"
|
||||
build_type = AUTOLATHE
|
||||
build_type = AUTOLATHE | SMELTER
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/rglass
|
||||
category = list("initial","Construction")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
id = "bag_holding"
|
||||
req_tech = list("bluespace" = 7, "materials" = 5, "engineering" = 5, "plasmatech" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250)
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000)
|
||||
build_path = /obj/item/storage/backpack/holding
|
||||
category = list("Bluespace")
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
id = "aicore"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/aicore
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
id = "aifixer"
|
||||
req_tech = list("programming" = 4, "magnets" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/aifixer
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
id = "aiupload"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/aiupload
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
id = "atmosalerts"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/atmos_alert
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
id = "air_management"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/air_management
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "seccamera"
|
||||
req_tech = list("programming" = 2, "combat" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/camera
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
id = "clonecontrol"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/cloning
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
id = "comconsole"
|
||||
req_tech = list("programming" = 3, "magnets" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/communications
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
id = "crewconsole"
|
||||
req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/crew
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
id = "borgupload"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/borgupload
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
id = "scan_console"
|
||||
req_tech = list("programming" = 2, "biotech" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/scan_consolenew
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
id = "dronecontrol"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/drone_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
id = "mechacontrol"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
id = "idcardconsole"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/card
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
id = "mechapower"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mech_bay_power_console
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
id = "med_data"
|
||||
req_tech = list("programming" = 2, "biotech" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/med_data
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
id = "message_monitor"
|
||||
req_tech = list("programming" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/message_monitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
id = "operating"
|
||||
req_tech = list("programming" = 2, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/operating
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
id = "pandemic"
|
||||
req_tech = list("programming" = 3, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/pandemic
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
id = "powermonitor"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/powermonitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
id = "prisonmanage"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/prisoner
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
id = "rdconsole"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/rdconsole
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
id = "rdservercontrol"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/rdservercontrol
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
id = "robocontrol"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/robotics
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
id = "secdata"
|
||||
req_tech = list("programming" = 2, "combat" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/secure_data
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
id = "solarcontrol"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/solar_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
id = "spacepodc"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/pod_locater
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -278,7 +278,7 @@
|
||||
id = "ordercomp"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/ordercomp
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
id = "supplycomp"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/supplycomp
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
id = "comm_monitor"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/comm_monitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
id = "comm_server"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/comm_server
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
id = "comm_traffic"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/comm_traffic
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
id = "telesci_console"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telesci_console
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -338,7 +338,7 @@
|
||||
id = "teleconsole"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/teleporter
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
id = "GAC"
|
||||
req_tech = list("programming" = 3, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/air_management
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -358,7 +358,7 @@
|
||||
id = "tankcontrol"
|
||||
req_tech = list("programming" = 3, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/large_tank_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
id = "AAC"
|
||||
req_tech = list("programming" = 4, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/atmos_automation
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -378,6 +378,6 @@
|
||||
id = "xenobioconsole"
|
||||
req_tech = list("programming" = 3, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/xenobiology
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
id = "netcard_basic"
|
||||
req_tech = list("programming" = 2, "engineering" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 100, "sacid" = 20)
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 100)
|
||||
build_path = /obj/item/computer_hardware/network_card
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
id = "netcard_advanced"
|
||||
req_tech = list("programming" = 4, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 200, "sacid" = 20)
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/computer_hardware/network_card/advanced
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
id = "netcard_wired"
|
||||
req_tech = list("programming" = 5, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 400, "sacid" = 20)
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 400)
|
||||
build_path = /obj/item/computer_hardware/network_card/wired
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
id = "portadrive_basic"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 800)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
id = "portadrive_advanced"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1600)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable/advanced
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
id = "portadrive_super"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 3200)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable/super
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
id = "cpu_normal"
|
||||
req_tech = list("programming" = 3, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1600)
|
||||
build_path = /obj/item/computer_hardware/processor_unit
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
id = "cpu_small"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 800)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/small
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
id = "pcpu_normal"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000, "sacid" = 40)
|
||||
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/photonic
|
||||
category = list("Computer Parts")
|
||||
|
||||
@@ -246,6 +246,6 @@
|
||||
id = "pcpu_small"
|
||||
req_tech = list("programming" = 4, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/photonic/small
|
||||
category = list("Computer Parts")
|
||||
@@ -8,7 +8,7 @@
|
||||
id = "thermomachine"
|
||||
req_tech = list("programming" = 3, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/thermomachine
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
id = "smes"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/smes
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
id = "emitter"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/emitter
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
id = "power_turbine_console"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/turbine_computer
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
id = "power_compressor"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/power_compressor
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "power_turbine"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 4, "engineering" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/power_turbine
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
id = "quantumpad"
|
||||
req_tech = list("programming" = 4, "bluespace" = 4, "plasmatech" = 3, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/quantumpad
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
id = "telepad"
|
||||
req_tech = list("programming" = 4, "bluespace" = 5, "plasmatech" = 4, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telesci_pad
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
id = "tele_hub"
|
||||
req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/teleporter_hub
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
id = "tele_station"
|
||||
req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/teleporter_station
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
id = "tele_perma"
|
||||
req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/teleporter_perma
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
id = "bodyscanner"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/bodyscanner
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
id = "bodyscanner_console"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/bodyscanner_console
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
id = "clonepod"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/clonepod
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
id = "clonescanner"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/clonescanner
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
id = "cryotube"
|
||||
req_tech = list("programming" = 5, "biotech" = 3, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/cryo_tube
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
id = "chem_dispenser"
|
||||
req_tech = list("programming" = 5, "biotech" = 3, "materials" = 4, "plasmatech" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/chem_dispenser
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
id = "chem_master"
|
||||
req_tech = list("biotech" = 3, "materials" = 3, "programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/chem_master
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
id = "chem_heater"
|
||||
req_tech = list("engineering" = 2, "biotech" = 2, "programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/chem_heater
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
id = "sleeper"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/sleeper
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
id = "biogenerator"
|
||||
req_tech = list("programming" = 2, "biotech" = 3, "materials" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/biogenerator
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
id = "hydro_tray"
|
||||
req_tech = list("biotech" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/hydroponics
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
id = "autolathe"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/autolathe
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
id = "circuit_imprinter"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/circuit_imprinter
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
id = "cyborgrecharger"
|
||||
req_tech = list("powerstorage" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/cyborgrecharger
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
id = "destructive_analyzer"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/destructive_analyzer
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
id = "mechfab"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mechfab
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -278,7 +278,7 @@
|
||||
id = "mech_recharger"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mech_recharger
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
id = "experimentor"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/experimentor
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
id = "protolathe"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/protolathe
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
id = "rdserver"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/rdserver
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
id = "gibber"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/gibber
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
id = "smartfridge"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/smartfridge
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -338,7 +338,7 @@
|
||||
id = "monkey_recycler"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/monkey_recycler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
id = "seed_extractor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/seed_extractor
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
@@ -358,7 +358,7 @@
|
||||
id = "processor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/processor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
id = "recycler"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/recycler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -378,7 +378,7 @@
|
||||
id = "holopad"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/holopad
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
id = "arcademachinebattle"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/arcade/battle
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
id = "microwave"
|
||||
req_tech = list("programming" = 2, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/microwave
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
id = "oven"
|
||||
req_tech = list("programming" = 2, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/oven
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -418,7 +418,7 @@
|
||||
id = "grill"
|
||||
req_tech = list("programming" = 2, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/grill
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -428,7 +428,7 @@
|
||||
id = "candymaker"
|
||||
req_tech = list("programming" = 2, "magnets" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/candy_maker
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -438,7 +438,7 @@
|
||||
id = "deepfryer"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/deepfryer
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -448,7 +448,7 @@
|
||||
id = "arcademachineonion"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/arcade/orion_trail
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -458,7 +458,7 @@
|
||||
id = "selunload"
|
||||
req_tech = list("engineering" = 1, "programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/programmable
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
id = "pod"
|
||||
req_tech = list("programming" = 2,"engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/pod
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -478,7 +478,7 @@
|
||||
id = "ore_redemption"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/ore_redemption
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -488,7 +488,7 @@
|
||||
id = "mining_equipment_vendor"
|
||||
req_tech = list("engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/mining_equipment_vendor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -498,7 +498,7 @@
|
||||
id = "clawgame"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/clawgame
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -508,7 +508,7 @@
|
||||
id = "prize_counter"
|
||||
req_tech = list("programming" = 2, "materials" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/prize_counter
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -518,7 +518,7 @@
|
||||
id = "gameboard"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/gameboard
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -528,7 +528,7 @@
|
||||
id = "plantgenes"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/plantgenes
|
||||
category = list("Hydroponics Machinery")
|
||||
|
||||
@@ -538,6 +538,6 @@
|
||||
id = "ntnet_relay"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS=1000, "sacid"=20)
|
||||
materials = list(MAT_GLASS=1000)
|
||||
build_path = /obj/item/circuitboard/machine/ntnet_relay
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
id = "ripley_main"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/ripley/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
id = "ripley_peri"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/ripley/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
id = "odysseus_main"
|
||||
req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/odysseus/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
id = "odysseus_peri"
|
||||
req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/odysseus/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
id = "gygax_main"
|
||||
req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/gygax/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
id = "gygax_peri"
|
||||
req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/gygax/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
id = "gygax_targ"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/gygax/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
id = "durand_main"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/durand/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
id = "durand_peri"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/durand/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
id = "durand_targ"
|
||||
req_tech = list("programming" = 5, "combat" = 4, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/durand/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
id = "phazon_main"
|
||||
req_tech = list("programming" = 6, "materials" = 6, "plasmatech" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
id = "phazon_peri"
|
||||
req_tech = list("programming" = 6, "bluespace" = 5, "plasmatech" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
id = "phazon_targ"
|
||||
req_tech = list("programming" = 6, "magnets" = 5, "plasmatech" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
id = "honker_main"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/honker/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
id = "honker_peri"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/honker/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
id = "honker_targ"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/honker/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
id = "reticence_main"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/reticence/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
id = "reticence_peri"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/reticence/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -193,6 +193,6 @@
|
||||
id = "reticence_targ"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/mecha/reticence/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
id = "bluespacebeaker"
|
||||
req_tech = list("bluespace" = 6, "materials" = 5, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 500)
|
||||
materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 250, MAT_BLUESPACE = 250)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/bluespace
|
||||
category = list("Medical")
|
||||
|
||||
@@ -311,7 +311,7 @@
|
||||
req_tech = list("materials" = 7, "programming" = 5, "biotech" = 7, "magnets" = 5,"plasmatech" = 6)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/xray
|
||||
category = list("Misc", "Medical")
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
id = "bluespace_cell"
|
||||
req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_SILVER = 150, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300)
|
||||
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300, MAT_BLUESPACE = 100)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/bluespace
|
||||
category = list("Misc","Power")
|
||||
@@ -63,7 +63,7 @@
|
||||
id = "pacman"
|
||||
req_tech = list("programming" = 2, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/pacman
|
||||
category = list("Engineering Machinery")
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
id = "mrspacman"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5, "plasmatech" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/pacman/mrs
|
||||
category = list("Engineering Machinery")
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
id = "superpacman"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/pacman/super
|
||||
category = list("Engineering Machinery")
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
id = "tesla_coil"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/tesla_coil
|
||||
category = list("Engineering Machinery")
|
||||
|
||||
@@ -103,6 +103,6 @@
|
||||
id = "grounding_rod"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3, "plasmatech" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/grounding_rod
|
||||
category = list("Engineering Machinery")
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
///////SMELTABLE ALLOYS///////
|
||||
|
||||
/datum/design/plasteel_alloy
|
||||
name = "Plasma + Iron alloy"
|
||||
id = "plasteel"
|
||||
build_type = SMELTER
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plasteel
|
||||
category = list("initial")
|
||||
|
||||
|
||||
/datum/design/plastitanium_alloy
|
||||
name = "Plasma + Titanium alloy"
|
||||
id = "plastitanium"
|
||||
build_type = SMELTER
|
||||
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/mineral/plastitanium
|
||||
category = list("initial")
|
||||
|
||||
/datum/design/plaglass_alloy
|
||||
name = "Plasma + Glass alloy"
|
||||
id = "plasmaglass"
|
||||
build_type = SMELTER
|
||||
materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plasmaglass
|
||||
category = list("initial")
|
||||
|
||||
/datum/design/alienalloy
|
||||
name = "Alien Alloy"
|
||||
desc = "A sheet of reverse-engineered alien alloy."
|
||||
id = "alienalloy"
|
||||
req_tech = list("abductor" = 1, "materials" = 7, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE | SMELTER
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000)
|
||||
build_path = /obj/item/stack/sheet/mineral/abductor
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 5
|
||||
@@ -192,7 +192,7 @@
|
||||
id = "triphasic_scanning"
|
||||
req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 60)
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 30, MAT_BLUESPACE = 30)
|
||||
build_path = /obj/item/stock_parts/scanning_module/triphasic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -225,7 +225,7 @@
|
||||
id = "bluespace_matter_bin"
|
||||
req_tech = list("materials" = 7, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 250, MAT_DIAMOND = 200)
|
||||
materials = list(MAT_METAL = 250, MAT_DIAMOND = 100, MAT_BLUESPACE = 100)
|
||||
build_path = /obj/item/stock_parts/matter_bin/bluespace
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -248,17 +248,4 @@
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore
|
||||
build_path = /obj/item/storage/part_replacer/bluespace
|
||||
category = list("Stock Parts")
|
||||
|
||||
//Alien Parts
|
||||
|
||||
/datum/design/alienalloy
|
||||
name = "Alien Alloy"
|
||||
desc = "A sheet of reverse-engineered alien alloy."
|
||||
id = "alienalloy"
|
||||
req_tech = list("abductor" = 1, "materials" = 7, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000)
|
||||
build_path = /obj/item/stack/sheet/mineral/abductor
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 5
|
||||
category = list("Stock Parts")
|
||||
@@ -7,7 +7,7 @@
|
||||
id = "s-bus"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/bus
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
id = "s-hub"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/hub
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
id = "s-processor"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/processor
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
id = "s-relay"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/relay
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
id = "s-server"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/server
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "s-broadcaster"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/broadcaster
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
id = "s-receiver"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/telecomms/receiver
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
req_tech = list("combat" = 5, "materials" = 5, "biotech" = 6, "plasmatech" = 7)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
|
||||
reagents = list("mutagen" = 40)
|
||||
reagents_list = list("mutagen" = 40)
|
||||
build_path = /obj/item/gun/energy/decloner
|
||||
locked = 1
|
||||
category = list("Weapons")
|
||||
@@ -43,7 +43,7 @@
|
||||
req_tech = list("materials" = 2, "biotech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
|
||||
reagents = list("radium" = 20)
|
||||
reagents_list = list("radium" = 20)
|
||||
build_path = /obj/item/gun/energy/floragun
|
||||
category = list("Weapons")
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
id = "wormholeprojector"
|
||||
req_tech = list("combat" = 5, "engineering" = 5, "bluespace" = 7, "plasmatech" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 3000)
|
||||
materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 2000, MAT_BLUESPACE = 3000)
|
||||
build_path = /obj/item/gun/energy/wormhole_projector
|
||||
locked = 1
|
||||
access_requirement = list(access_rd) //screw you, HoS, this aint yours; this is only for a man of science---and trouble.
|
||||
@@ -242,7 +242,7 @@
|
||||
id = "xray"
|
||||
req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 8000, MAT_METAL = 5000, MAT_TITANIUM = 2000)
|
||||
materials = list(MAT_GOLD = 5000, MAT_URANIUM = 4000, MAT_METAL = 5000, MAT_TITANIUM = 2000, MAT_BLUESPACE = 2000)
|
||||
build_path = /obj/item/gun/energy/xray
|
||||
locked = 1
|
||||
category = list("Weapons")
|
||||
|
||||
@@ -9,7 +9,6 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
name = "Destructive Analyzer"
|
||||
desc = "Learn science by destroying things!"
|
||||
icon_state = "d_analyzer"
|
||||
var/obj/item/loaded_item = null
|
||||
var/decon_mod = 0
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/New()
|
||||
@@ -46,7 +45,8 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(shocked)
|
||||
shock(user,50)
|
||||
if(shock(user,50))
|
||||
return TRUE
|
||||
if(default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer", O))
|
||||
if(linked_console)
|
||||
linked_console.linked_destroy = null
|
||||
@@ -56,7 +56,8 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
if(exchange_parts(user, O))
|
||||
return
|
||||
|
||||
default_deconstruction_crowbar(O)
|
||||
if(default_deconstruction_crowbar(O))
|
||||
return
|
||||
|
||||
if(disabled)
|
||||
return
|
||||
@@ -84,5 +85,4 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
flick("d_analyzer_la", src)
|
||||
spawn(10)
|
||||
icon_state = "d_analyzer_l"
|
||||
busy = 0
|
||||
return
|
||||
busy = 0
|
||||
@@ -25,7 +25,6 @@
|
||||
var/recentlyExperimented = 0
|
||||
var/mob/trackedIan
|
||||
var/mob/trackedRuntime
|
||||
var/obj/item/loaded_item = null
|
||||
var/badThingCoeff = 0
|
||||
var/resetTime = 15
|
||||
var/cloneMode = FALSE
|
||||
@@ -450,8 +449,9 @@
|
||||
visible_message("<span class='warning'>[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!</span>")
|
||||
new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src))))
|
||||
if(linked_console.linked_lathe)
|
||||
GET_COMPONENT_FROM(linked_materials, /datum/component/material_container, linked_console.linked_lathe)
|
||||
for(var/material in exp_on.materials)
|
||||
linked_console.linked_lathe.materials.insert_amount( min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (exp_on.materials[material])), material)
|
||||
linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material)
|
||||
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src]'s crusher goes way too many levels too high, crushing right through space-time!</span>")
|
||||
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
|
||||
|
||||
@@ -13,7 +13,6 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
icon_state = "protolathe"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/datum/material_container/materials
|
||||
var/efficiency_coeff
|
||||
|
||||
var/list/categories = list(
|
||||
@@ -42,7 +41,6 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/reagent_containers/glass/beaker/large(null)
|
||||
component_parts += new /obj/item/reagent_containers/glass/beaker/large(null)
|
||||
materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1, MAT_TRANQUILLITE=1, MAT_TITANIUM=1))
|
||||
RefreshParts()
|
||||
|
||||
reagents.my_atom = src
|
||||
@@ -61,10 +59,6 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
|
||||
reagents.my_atom = src
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/Destroy()
|
||||
QDEL_NULL(materials)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/RefreshParts()
|
||||
var/T = 0
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
@@ -81,14 +75,15 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
var/A = materials.amount(M)
|
||||
if(!A)
|
||||
A = reagents.get_reagent_amount(M)
|
||||
A = A / max(1, (being_built.reagents[M]))
|
||||
A = A / max(1, (being_built.reagents_list[M]))
|
||||
else
|
||||
A = A / max(1, (being_built.materials[M]))
|
||||
return A
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(shocked)
|
||||
shock(user,50)
|
||||
if(shock(user,50))
|
||||
return TRUE
|
||||
if(default_deconstruction_screwdriver(user, "protolathe_t", "protolathe", O))
|
||||
if(linked_console)
|
||||
linked_console.linked_lathe = null
|
||||
@@ -112,39 +107,7 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't load the [src.name] while it's opened.</span>")
|
||||
return 1
|
||||
if(disabled)
|
||||
return
|
||||
if(!linked_console)
|
||||
to_chat(user, "<span class='warning'> The [src.name] must be linked to an R&D console first!</span>")
|
||||
return 1
|
||||
if(busy)
|
||||
to_chat(user, "<span class='warning'>The [src.name] is busy. Please wait for completion of previous operation.</span>")
|
||||
return 1
|
||||
if(O.is_open_container())
|
||||
return
|
||||
if(stat)
|
||||
return 1
|
||||
if(!istype(O,/obj/item/stack/sheet))
|
||||
return 1
|
||||
|
||||
if(!materials.has_space( materials.get_item_material_amount(O) ))
|
||||
to_chat(user, "<span class='warning'>The [src.name]'s material bin is full! Please remove material before adding more.</span>")
|
||||
return 1
|
||||
|
||||
var/obj/item/stack/sheet/stack = O
|
||||
var/amount = round(input("How many sheets do you want to add?") as num)//No decimals
|
||||
if(!in_range(src, stack) || !user.Adjacent(src))
|
||||
return
|
||||
var/amount_inserted = materials.insert_stack(O,amount)
|
||||
if(!amount_inserted)
|
||||
return 1
|
||||
return FALSE
|
||||
else
|
||||
busy = 1
|
||||
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10)))
|
||||
to_chat(user, "<span class='notice'>You add [amount_inserted] sheets to the [src.name].</span>")
|
||||
var/stackname = stack.name
|
||||
src.overlays += "protolathe_[stackname]"
|
||||
sleep(10)
|
||||
src.overlays -= "protolathe_[stackname]"
|
||||
busy = 0
|
||||
updateUsrDialog()
|
||||
return ..()
|
||||
@@ -100,6 +100,10 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
return_name = "Tranquillite"
|
||||
if("titanium")
|
||||
return_name = "Titanium"
|
||||
if("bluespace")
|
||||
return_name = "Bluespace Mesh"
|
||||
if("plastic")
|
||||
return_name = "Plastic"
|
||||
return return_name
|
||||
else
|
||||
for(var/R in subtypesof(/datum/reagent))
|
||||
@@ -443,16 +447,16 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
enough_materials = 0
|
||||
g2g = 0
|
||||
else
|
||||
for(var/R in being_built.reagents)
|
||||
if(!linked_lathe.reagents.has_reagent(R, being_built.reagents[R])*coeff)
|
||||
for(var/R in being_built.reagents_list)
|
||||
if(!linked_lathe.reagents.has_reagent(R, being_built.reagents_list[R])*coeff)
|
||||
src.visible_message("<span class='notice'>The [src.name] beeps, \"Not enough reagents to complete prototype.\"</span>")
|
||||
enough_materials = 0
|
||||
g2g = 0
|
||||
|
||||
if(enough_materials)
|
||||
linked_lathe.materials.use_amount(efficient_mats, amount)
|
||||
for(var/R in being_built.reagents)
|
||||
linked_lathe.reagents.remove_reagent(R, being_built.reagents[R]*coeff)
|
||||
for(var/R in being_built.reagents_list)
|
||||
linked_lathe.reagents.remove_reagent(R, being_built.reagents_list[R]*coeff)
|
||||
|
||||
var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes.
|
||||
var/O = being_built.locked
|
||||
@@ -484,6 +488,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something.
|
||||
var/coeff = linked_imprinter.efficiency_coeff
|
||||
var/g2g = 1
|
||||
var/enough_materials = 1
|
||||
if(linked_imprinter)
|
||||
if(linked_imprinter.busy)
|
||||
to_chat(usr, "<span class='danger'>Circuit Imprinter is busy at the moment.</span>")
|
||||
@@ -505,20 +510,25 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
flick("circuit_imprinter_ani",linked_imprinter)
|
||||
use_power(power)
|
||||
|
||||
for(var/M in being_built.materials)
|
||||
if(!linked_imprinter.check_mat(being_built, M))
|
||||
src.visible_message("<span class='notice'>The [src.name] beeps, \"Not enough materials to complete prototype.\"</span>")
|
||||
g2g = 0
|
||||
break
|
||||
switch(M)
|
||||
if(MAT_GLASS)
|
||||
linked_imprinter.g_amount = max(0, (linked_imprinter.g_amount-being_built.materials[M]/coeff))
|
||||
if(MAT_GOLD)
|
||||
linked_imprinter.gold_amount = max(0, (linked_imprinter.gold_amount-being_built.materials[M]/coeff))
|
||||
if(MAT_DIAMOND)
|
||||
linked_imprinter.diamond_amount = max(0, (linked_imprinter.diamond_amount-being_built.materials[M]/coeff))
|
||||
else
|
||||
linked_imprinter.reagents.remove_reagent(M, being_built.materials[M]/coeff)
|
||||
var/list/efficient_mats = list()
|
||||
for(var/MAT in being_built.materials)
|
||||
efficient_mats[MAT] = being_built.materials[MAT]/coeff
|
||||
|
||||
if(!linked_imprinter.materials.has_materials(efficient_mats))
|
||||
visible_message("<span class='notice'>The [src.name] beeps, \"Not enough materials to complete prototype.\"</span>")
|
||||
enough_materials = 0
|
||||
g2g = 0
|
||||
else
|
||||
for(var/R in being_built.reagents_list)
|
||||
if(!linked_imprinter.reagents.has_reagent(R, being_built.reagents_list[R]/coeff))
|
||||
visible_message("<span class='notice'>The [name] beeps, \"Not enough reagents to complete prototype.\"</span>")
|
||||
enough_materials = 0
|
||||
g2g = 0
|
||||
|
||||
if(enough_materials)
|
||||
linked_imprinter.materials.use_amount(efficient_mats)
|
||||
for(var/R in being_built.reagents_list)
|
||||
linked_imprinter.reagents.remove_reagent(R, being_built.reagents_list[R]/coeff)
|
||||
|
||||
var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes.
|
||||
spawn(IMPRINTER_DELAY)
|
||||
@@ -563,25 +573,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
desired_num_sheets = round(desired_num_sheets) // No partial-sheet goofery
|
||||
else
|
||||
desired_num_sheets = text2num(href_list["imprinter_ejectsheet_amt"])
|
||||
var/res_amount, type
|
||||
switch(href_list["imprinter_ejectsheet"])
|
||||
if(MAT_GLASS)
|
||||
type = /obj/item/stack/sheet/glass
|
||||
res_amount = "g_amount"
|
||||
if(MAT_GOLD)
|
||||
type = /obj/item/stack/sheet/mineral/gold
|
||||
res_amount = "gold_amount"
|
||||
if(MAT_DIAMOND)
|
||||
type = /obj/item/stack/sheet/mineral/diamond
|
||||
res_amount = "diamond_amount"
|
||||
if(ispath(type) && hasvar(linked_imprinter, res_amount))
|
||||
var/obj/item/stack/sheet/sheet = new type(linked_imprinter.loc)
|
||||
var/available_num_sheets = round(linked_imprinter.vars[res_amount]/sheet.perunit)
|
||||
if(available_num_sheets>0)
|
||||
sheet.amount = min(available_num_sheets, desired_num_sheets)
|
||||
linked_imprinter.vars[res_amount] = max(0, (linked_imprinter.vars[res_amount]-sheet.amount * sheet.perunit))
|
||||
else
|
||||
qdel(sheet)
|
||||
linked_imprinter.materials.retrieve_sheets(desired_num_sheets, href_list["imprinter_ejectsheet"])
|
||||
|
||||
else if(href_list["find_device"]) //The R&D console looks for devices nearby to link up with.
|
||||
add_wait_message("Updating Database...", SYNC_DEVICE_DELAY)
|
||||
@@ -718,6 +710,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
if(b_type & MECHFAB) lathe_types += "Mech Fabricator"
|
||||
if(b_type & PODFAB) lathe_types += "Spacepod Fabricator"
|
||||
if(b_type & BIOGENERATOR) lathe_types += "Biogenerator"
|
||||
if(b_type & SMELTER) lathe_types += "Smelter"
|
||||
var/list/materials = list()
|
||||
disk_data["materials"] = materials
|
||||
for(var/M in d_disk.blueprint.materials)
|
||||
@@ -785,11 +778,11 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
material_list["is_red"] = 0
|
||||
c = min(c, t)
|
||||
|
||||
for(var/R in D.reagents)
|
||||
for(var/R in D.reagents_list)
|
||||
var/list/material_list = list()
|
||||
materials_list[++materials_list.len] = material_list
|
||||
material_list["name"] = CallMaterialName(R)
|
||||
material_list["amount"] = D.reagents[R]*coeff
|
||||
material_list["amount"] = D.reagents_list[R]*coeff
|
||||
var/t = linked_lathe.check_mat(D, R)
|
||||
|
||||
if(t < 1)
|
||||
@@ -805,12 +798,14 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
materials_list[++materials_list.len] = list("name" = "Glass", "id" = MAT_GLASS, "amount" = linked_lathe.materials.amount(MAT_GLASS))
|
||||
materials_list[++materials_list.len] = list("name" = "Gold", "id" = MAT_GOLD, "amount" = linked_lathe.materials.amount(MAT_GOLD))
|
||||
materials_list[++materials_list.len] = list("name" = "Silver", "id" = MAT_SILVER, "amount" = linked_lathe.materials.amount(MAT_SILVER))
|
||||
materials_list[++materials_list.len] = list("name" = "Plasma", "id" = MAT_PLASMA, "amount" = linked_lathe.materials.amount(MAT_PLASMA))
|
||||
materials_list[++materials_list.len] = list("name" = "Solid Plasma", "id" = MAT_PLASMA, "amount" = linked_lathe.materials.amount(MAT_PLASMA))
|
||||
materials_list[++materials_list.len] = list("name" = "Uranium", "id" = MAT_URANIUM, "amount" = linked_lathe.materials.amount(MAT_URANIUM))
|
||||
materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = linked_lathe.materials.amount(MAT_DIAMOND))
|
||||
materials_list[++materials_list.len] = list("name" = "Bananium", "id" = MAT_BANANIUM, "amount" = linked_lathe.materials.amount(MAT_BANANIUM))
|
||||
materials_list[++materials_list.len] = list("name" = "Tranquillite", "id" = MAT_TRANQUILLITE, "amount" = linked_lathe.materials.amount(MAT_TRANQUILLITE))
|
||||
materials_list[++materials_list.len] = list("name" = "Titanium", "id" = MAT_TITANIUM, "amount" = linked_lathe.materials.amount(MAT_TITANIUM))
|
||||
materials_list[++materials_list.len] = list("name" = "Plastic", "id" = MAT_PLASTIC, "amount" = linked_lathe.materials.amount(MAT_PLASTIC))
|
||||
materials_list[++materials_list.len] = list("name" = "Bluespace Mesh", "id" = MAT_BLUESPACE, "amount" = linked_lathe.materials.amount(MAT_BLUESPACE))
|
||||
if(submenu == 3)
|
||||
var/list/loaded_chemicals = list()
|
||||
data["loaded_chemicals"] = loaded_chemicals
|
||||
@@ -822,8 +817,10 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
loaded_chemical["id"] = R.id
|
||||
|
||||
if(menu == 5 && linked_imprinter)
|
||||
data["total_materials"] = linked_imprinter.TotalMaterials()
|
||||
data["total_materials"] = linked_imprinter.materials.total_amount
|
||||
data["max_materials"] = linked_imprinter.materials.max_amount
|
||||
data["total_chemicals"] = linked_imprinter.reagents.total_volume
|
||||
data["max_chemicals"] = linked_imprinter.reagents.maximum_volume
|
||||
data["categories"] = linked_imprinter.categories
|
||||
if(submenu == 1)
|
||||
var/list/designs_list = list()
|
||||
@@ -847,13 +844,34 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
material_list["is_red"] = 1
|
||||
else
|
||||
material_list["is_red"] = 0
|
||||
|
||||
for(var/R in D.reagents_list)
|
||||
var/list/material_list = list()
|
||||
materials_list[++materials_list.len] = material_list
|
||||
material_list["name"] = CallMaterialName(R)
|
||||
material_list["amount"] = D.reagents_list[R]*coeff
|
||||
if(!linked_imprinter.check_mat(D, R))
|
||||
check_materials = 0
|
||||
material_list["is_red"] = 1
|
||||
else
|
||||
material_list["is_red"] = 0
|
||||
|
||||
design_list["can_build"] = check_materials
|
||||
if(submenu == 2)
|
||||
var/list/materials_list = list()
|
||||
data["loaded_materials"] = materials_list
|
||||
materials_list[++materials_list.len] = list("name" = "Glass", "id" = MAT_GLASS, "amount" = linked_imprinter.g_amount)
|
||||
materials_list[++materials_list.len] = list("name" = "Gold", "id" = MAT_GOLD, "amount" = linked_imprinter.gold_amount)
|
||||
materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = linked_imprinter.diamond_amount)
|
||||
materials_list[++materials_list.len] = list("name" = "Metal", "id" = MAT_METAL, "amount" = linked_imprinter.materials.amount(MAT_METAL))
|
||||
materials_list[++materials_list.len] = list("name" = "Glass", "id" = MAT_GLASS, "amount" = linked_imprinter.materials.amount(MAT_GLASS))
|
||||
materials_list[++materials_list.len] = list("name" = "Gold", "id" = MAT_GOLD, "amount" = linked_imprinter.materials.amount(MAT_GOLD))
|
||||
materials_list[++materials_list.len] = list("name" = "Silver", "id" = MAT_SILVER, "amount" = linked_imprinter.materials.amount(MAT_SILVER))
|
||||
materials_list[++materials_list.len] = list("name" = "Solid Plasma", "id" = MAT_PLASMA, "amount" = linked_imprinter.materials.amount(MAT_PLASMA))
|
||||
materials_list[++materials_list.len] = list("name" = "Uranium", "id" = MAT_URANIUM, "amount" = linked_imprinter.materials.amount(MAT_URANIUM))
|
||||
materials_list[++materials_list.len] = list("name" = "Diamond", "id" = MAT_DIAMOND, "amount" = linked_imprinter.materials.amount(MAT_DIAMOND))
|
||||
materials_list[++materials_list.len] = list("name" = "Bananium", "id" = MAT_BANANIUM, "amount" = linked_imprinter.materials.amount(MAT_BANANIUM))
|
||||
materials_list[++materials_list.len] = list("name" = "Tranquillite", "id" = MAT_TRANQUILLITE, "amount" = linked_imprinter.materials.amount(MAT_TRANQUILLITE))
|
||||
materials_list[++materials_list.len] = list("name" = "Titanium", "id" = MAT_TITANIUM, "amount" = linked_imprinter.materials.amount(MAT_TITANIUM))
|
||||
materials_list[++materials_list.len] = list("name" = "Plastic", "id" = MAT_PLASTIC, "amount" = linked_imprinter.materials.amount(MAT_PLASTIC))
|
||||
materials_list[++materials_list.len] = list("name" = "Bluespace Mesh", "id" = MAT_BLUESPACE, "amount" = linked_imprinter.materials.amount(MAT_BLUESPACE))
|
||||
if(submenu == 3)
|
||||
var/list/loaded_chemicals = list()
|
||||
data["loaded_chemicals"] = loaded_chemicals
|
||||
|
||||
@@ -16,8 +16,14 @@
|
||||
var/disable_wire
|
||||
var/shock_wire
|
||||
var/obj/machinery/computer/rdconsole/linked_console
|
||||
var/obj/item/loaded_item = null
|
||||
var/datum/component/material_container/materials //Store for hyper speed!
|
||||
|
||||
/obj/machinery/r_n_d/New()
|
||||
materials = AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0,
|
||||
FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
materials.precise_insertion = TRUE
|
||||
..()
|
||||
wires["Red"] = 0
|
||||
wires["Blue"] = 0
|
||||
@@ -88,3 +94,40 @@
|
||||
src.shocked = !src.shocked
|
||||
src.shock(usr,50)
|
||||
src.updateUsrDialog()
|
||||
|
||||
//whether the machine can have an item inserted in its current state.
|
||||
/obj/machinery/r_n_d/proc/is_insertion_ready(mob/user)
|
||||
if(panel_open)
|
||||
to_chat(user, "<span class='warning'>You can't load [src] while it's opened!</span>")
|
||||
return FALSE
|
||||
if(disabled)
|
||||
return FALSE
|
||||
if(!linked_console)
|
||||
to_chat(user, "<span class='warning'>[src] must be linked to an R&D console first!</span>")
|
||||
return FALSE
|
||||
if(busy)
|
||||
to_chat(user, "<span class='warning'>[src] is busy right now.</span>")
|
||||
return FALSE
|
||||
if(stat & BROKEN)
|
||||
to_chat(user, "<span class='warning'>[src] is broken.</span>")
|
||||
return FALSE
|
||||
if(stat & NOPOWER)
|
||||
to_chat(user, "<span class='warning'>[src] has no power.</span>")
|
||||
return FALSE
|
||||
if(loaded_item)
|
||||
to_chat(user, "<span class='warning'>[src] is already loaded.</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/r_n_d/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted)
|
||||
var/stack_name
|
||||
if(ispath(type_inserted, /obj/item/ore/bluespace_crystal))
|
||||
stack_name = "bluespace polycrystal"
|
||||
use_power(MINERAL_MATERIAL_AMOUNT / 10)
|
||||
else
|
||||
var/obj/item/stack/S = type_inserted
|
||||
stack_name = initial(S.name)
|
||||
use_power(min(1000, (amount_inserted / 100)))
|
||||
overlays += "[initial(name)]_[stack_name]"
|
||||
sleep(10)
|
||||
overlays -= "[initial(name)]_[stack_name]"
|
||||
@@ -183,6 +183,21 @@ research holder datum.
|
||||
return
|
||||
..()
|
||||
|
||||
//Smelter files
|
||||
/datum/research/smelter/New()
|
||||
for(var/T in (subtypesof(/datum/tech)))
|
||||
possible_tech += new T(src)
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/D = new path(src)
|
||||
possible_designs += D
|
||||
if((D.build_type & SMELTER) && ("initial" in D.category))
|
||||
AddDesign2Known(D)
|
||||
|
||||
/datum/research/smelter/AddDesign2Known(datum/design/D)
|
||||
if(!(D.build_type & SMELTER))
|
||||
return
|
||||
..()
|
||||
|
||||
/***************************************************************
|
||||
** Technology Datums **
|
||||
** Includes all the various technoliges and what they make. **
|
||||
|
||||
@@ -218,6 +218,8 @@
|
||||
SM.sentience_act()
|
||||
to_chat(SM, "<span class='warning'>All at once it makes sense: you know what you are and who you are! Self awareness is yours!</span>")
|
||||
to_chat(SM, "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost.</span>")
|
||||
if(SM.flags_2 & HOLOGRAM_2) //Check to see if it's a holodeck creature
|
||||
to_chat(SM, "<span class='userdanger'>You also become depressingly aware that you are not a real creature, but instead a holoform. Your existence is limited to the parameters of the holodeck.</span>")
|
||||
to_chat(user, "<span class='notice'>[M] accepts the potion and suddenly becomes attentive and aware. It worked!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
|
||||
@@ -1,541 +0,0 @@
|
||||
/obj/machinery/spod_part_fabricator
|
||||
icon = 'icons/obj/robotics.dmi'
|
||||
icon_state = "fab-idle"
|
||||
name = "spacepod fabricator"
|
||||
desc = "Nothing is being built."
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 20
|
||||
active_power_usage = 5000
|
||||
var/time_coeff = 1
|
||||
var/resource_coeff = 1
|
||||
var/time_coeff_tech = 1
|
||||
var/resource_coeff_tech = 1
|
||||
var/list/resources = list(
|
||||
MAT_METAL=0,
|
||||
MAT_GLASS=0,
|
||||
MAT_BANANIUM=0,
|
||||
MAT_DIAMOND=0,
|
||||
MAT_GOLD=0,
|
||||
MAT_PLASMA=0,
|
||||
MAT_SILVER=0,
|
||||
MAT_URANIUM=0
|
||||
)
|
||||
var/res_max_amount = 200000
|
||||
var/datum/research/files
|
||||
var/id
|
||||
var/sync = 0
|
||||
var/part_set
|
||||
var/datum/design/being_built
|
||||
var/list/queue = list()
|
||||
var/processing_queue = 0
|
||||
var/screen = "main"
|
||||
var/temp
|
||||
var/list/part_sets = list(
|
||||
"Pod_Weaponry",
|
||||
"Pod_Armor",
|
||||
"Pod_Cargo",
|
||||
"Pod_Parts",
|
||||
"Pod_Frame",
|
||||
"Misc",
|
||||
)
|
||||
var/turf/exit
|
||||
|
||||
/obj/machinery/spod_part_fabricator/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/podfab(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
files = new /datum/research(src) //Setup the research data holder.
|
||||
for(var/direction in cardinal)
|
||||
exit = get_step(src,direction)
|
||||
if(!exit.density)
|
||||
break
|
||||
exit = loc
|
||||
|
||||
/obj/machinery/spod_part_fabricator/upgraded/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/podfab(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/super(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator/pico(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator/pico(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser/ultra(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser/ultra(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/spod_part_fabricator/RefreshParts()
|
||||
var/T = 0
|
||||
|
||||
//maximum stocking amount (max 412000)
|
||||
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
|
||||
T += M.rating
|
||||
res_max_amount = (187000+(T * 37500))
|
||||
|
||||
//ressources adjustment coefficient (1 -> 0.88 -> 0.75)
|
||||
T = -1
|
||||
for(var/obj/item/stock_parts/micro_laser/Ma in component_parts)
|
||||
T += Ma.rating
|
||||
resource_coeff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/8,0.01)
|
||||
|
||||
//building time adjustment coefficient (1 -> 0.8 -> 0.6)
|
||||
T = -1
|
||||
for(var/obj/item/stock_parts/manipulator/Ml in component_parts)
|
||||
T += Ml.rating
|
||||
time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01)
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/output_parts_list(set_name)
|
||||
var/output = ""
|
||||
for(var/v in files.known_designs)
|
||||
var/datum/design/D = files.known_designs[v]
|
||||
if(D.build_type & PODFAB)
|
||||
if(!(set_name in D.category))
|
||||
continue
|
||||
var/resources_available = check_resources(D)
|
||||
output += "<div class='part'>[output_part_info(D)]<br>\[[resources_available?"<a href='?src=[UID()];part=[D.id]'>Build</a> | ":null]<a href='?src=[UID()];add_to_queue=[D.id]'>Add to queue</a>\]\[<a href='?src=[UID()];part_desc=[D.id]'>?</a>\]</div>"
|
||||
return output
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/output_part_info(datum/design/D)
|
||||
var/output = "[initial(D.name)] (Cost: [output_part_cost(D)]) [get_construction_time_w_coeff(D)/10] seconds"
|
||||
return output
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/output_part_cost(datum/design/D)
|
||||
var/i = 0
|
||||
var/output
|
||||
for(var/c in D.materials)
|
||||
if(c in resources)
|
||||
output += "[i?" | ":null][get_resource_cost_w_coeff(D,c)] [material2name(c)]"
|
||||
i++
|
||||
return output
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/output_available_resources()
|
||||
var/output
|
||||
for(var/resource in resources)
|
||||
var/amount = min(res_max_amount, resources[resource])
|
||||
output += "<span class=\"res_name\">[material2name(resource)]: </span>[amount] cm³, [round(resources[resource] / MINERAL_MATERIAL_AMOUNT,0.1)] sheets"
|
||||
if(amount>0)
|
||||
output += "<span style='font-size:80%;'> - Remove \[<a href='?src=[UID()];remove_mat=1;material=[resource]'>1</a>\] | \[<a href='?src=[UID()];remove_mat=10;material=[resource]'>10</a>\] | \[<a href='?src=[UID()];remove_mat=1;material=[resource];custom_eject=1'>Custom</a>\] | \[<a href='?src=[UID()];remove_mat=[resources[resource] / MINERAL_MATERIAL_AMOUNT];material=[resource]'>All</a>\]</span>"
|
||||
output += "<br/>"
|
||||
return output
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/remove_resources(datum/design/D)
|
||||
for(var/resource in D.materials)
|
||||
if(resource in resources)
|
||||
resources[resource] -= get_resource_cost_w_coeff(D,resource)
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/check_resources(datum/design/D)
|
||||
for(var/R in D.materials)
|
||||
if(R in resources)
|
||||
if(resources[R] < get_resource_cost_w_coeff(D, R))
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/build_part(datum/design/D)
|
||||
being_built = D
|
||||
desc = "It's building \a [initial(D.name)]."
|
||||
remove_resources(D)
|
||||
overlays += "fab-active"
|
||||
use_power = 2
|
||||
updateUsrDialog()
|
||||
sleep(get_construction_time_w_coeff(D))
|
||||
use_power = 1
|
||||
overlays -= "fab-active"
|
||||
desc = initial(desc)
|
||||
|
||||
var/obj/item/I = new D.build_path
|
||||
var/O = D.locked
|
||||
if(O)
|
||||
var/obj/item/storage/lockbox/L = new/obj/item/storage/lockbox(exit)
|
||||
I.loc = L
|
||||
L.name += " ([I.name])"
|
||||
else
|
||||
I.loc = exit
|
||||
I.materials[MAT_METAL] = get_resource_cost_w_coeff(D,MAT_METAL)
|
||||
I.materials[MAT_GLASS] = get_resource_cost_w_coeff(D,MAT_GLASS)
|
||||
visible_message("[bicon(src)] <b>\The [src]</b> beeps, \"\The [I] is complete.\"")
|
||||
being_built = null
|
||||
|
||||
updateUsrDialog()
|
||||
return 1
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/update_queue_on_page()
|
||||
send_byjax(usr,"mecha_fabricator.browser","queue",list_queue())
|
||||
return
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/add_part_set_to_queue(set_name)
|
||||
if(set_name in part_sets)
|
||||
for(var/v in files.known_designs)
|
||||
var/datum/design/D = files.known_designs[v]
|
||||
if(D.build_type & PODFAB)
|
||||
if(set_name in D.category)
|
||||
add_to_queue(D)
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/add_to_queue(D)
|
||||
if(!istype(queue))
|
||||
queue = list()
|
||||
if(D)
|
||||
queue[++queue.len] = D
|
||||
return queue.len
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/remove_from_queue(index)
|
||||
if(!isnum(index) || !istype(queue) || (index<1 || index>queue.len))
|
||||
return 0
|
||||
queue.Cut(index,++index)
|
||||
return 1
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/process_queue()
|
||||
var/datum/design/D = queue[1]
|
||||
if(!D)
|
||||
remove_from_queue(1)
|
||||
if(queue.len)
|
||||
return process_queue()
|
||||
else
|
||||
return
|
||||
temp = null
|
||||
while(D)
|
||||
if(stat&(NOPOWER|BROKEN))
|
||||
return 0
|
||||
if(!check_resources(D))
|
||||
visible_message("[bicon(src)] <b>\The [src]</b> beeps, \"Not enough resources. Queue processing stopped.\"")
|
||||
temp = {"<span class='alert'>Not enough resources to build next part.</span><br>
|
||||
<a href='?src=[UID()];process_queue=1'>Try again</a> | <a href='?src=[UID()];clear_temp=1'>Return</a><a>"}
|
||||
return 0
|
||||
remove_from_queue(1)
|
||||
build_part(D)
|
||||
D = listgetindex(queue, 1)
|
||||
visible_message("[bicon(src)] <b>\The [src]</b> beeps, \"Queue processing finished successfully.\"")
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/list_queue()
|
||||
var/output = "<b>Queue contains:</b>"
|
||||
if(!istype(queue) || !queue.len)
|
||||
output += "<br>Nothing"
|
||||
else
|
||||
output += "<ol>"
|
||||
var/i = 0
|
||||
for(var/datum/design/D in queue)
|
||||
i++
|
||||
var/obj/part = D.build_path
|
||||
output += "<li[!check_resources(D)?" style='color: #f00;'":null]>[initial(part.name)] - [i>1?"<a href='?src=[UID()];queue_move=-1;index=[i]' class='arrow'>↑</a>":null] [i<queue.len?"<a href='?src=[UID()];queue_move=+1;index=[i]' class='arrow'>↓</a>":null] <a href='?src=[UID()];remove_from_queue=[i]'>Remove</a></li>"
|
||||
|
||||
output += "</ol>"
|
||||
output += "\[<a href='?src=[UID()];process_queue=1'>Process queue</a> | <a href='?src=[UID()];clear_queue=1'>Clear queue</a>\]"
|
||||
return output
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/update_tech()
|
||||
if(!files)
|
||||
return
|
||||
var/output
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
if(T && T.level > 1)
|
||||
var/diff
|
||||
switch(T.id)
|
||||
if("materials")
|
||||
//one materials level is 1/32, so that max level is 0.75 coefficient
|
||||
diff = round(initial(resource_coeff_tech) - (initial(resource_coeff_tech)*(T.level-1))/32,0.01)
|
||||
if(resource_coeff_tech>diff)
|
||||
resource_coeff_tech = diff
|
||||
output+="Production efficiency increased.<br>"
|
||||
if("programming")
|
||||
//one materials level is 1/40, so that max level is 0.8 coefficient
|
||||
diff = round(initial(time_coeff_tech) - (initial(time_coeff_tech)*(T.level-1))/40,0.1)
|
||||
if(time_coeff_tech>diff)
|
||||
time_coeff_tech = diff
|
||||
output+="Production routines updated.<br>"
|
||||
return output
|
||||
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/sync()
|
||||
temp = "Updating local R&D database..."
|
||||
updateUsrDialog()
|
||||
sleep(30) //only sleep if called by user
|
||||
var/area/localarea = get_area(src)
|
||||
|
||||
for(var/obj/machinery/computer/rdconsole/RDC in localarea.contents)
|
||||
if(!RDC.sync)
|
||||
continue
|
||||
RDC.files.push_data(files)
|
||||
temp = "Processed equipment designs.<br>"
|
||||
//check if the tech coefficients have changed
|
||||
temp += update_tech()
|
||||
temp += "<a href='?src=[UID()];clear_temp=1'>Return</a>"
|
||||
|
||||
updateUsrDialog()
|
||||
visible_message("[bicon(src)] <b>\The [src]</b> beeps, \"Successfully synchronized with R&D server.\"")
|
||||
return
|
||||
|
||||
temp = "Unable to connect to local R&D Database.<br>Please check your connections and try again.<br><a href='?src=[UID()];clear_temp=1'>Return</a>"
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/get_resource_cost_w_coeff(datum/design/D, resource, roundto = 1)
|
||||
return round(D.materials[resource]*resource_coeff*resource_coeff_tech, roundto)
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/get_construction_time_w_coeff(datum/design/D, roundto = 1) //aran
|
||||
return round(initial(D.construction_time)*time_coeff*time_coeff_tech, roundto)
|
||||
|
||||
/obj/machinery/spod_part_fabricator/attack_hand(mob/user)
|
||||
if(..())
|
||||
return 1
|
||||
return interact(user)
|
||||
|
||||
/obj/machinery/spod_part_fabricator/interact(mob/user as mob)
|
||||
var/dat, left_part
|
||||
if(..())
|
||||
return
|
||||
user.set_machine(src)
|
||||
if(exit.density)
|
||||
visible_message("[bicon(src)] <b>\The [src]</b> beeps, \"Error! Part outlet is obstructed.\"")
|
||||
return
|
||||
if(temp)
|
||||
left_part = temp
|
||||
else if(being_built)
|
||||
var/obj/I = being_built.build_path
|
||||
left_part = {"<TT>Building [initial(I.name)].<BR>
|
||||
Please wait until completion...</TT>"}
|
||||
else
|
||||
switch(screen)
|
||||
if("main")
|
||||
left_part = output_available_resources()+"<hr>"
|
||||
left_part += "<a href='?src=[UID()];sync=1'>Sync with R&D servers</a><hr>"
|
||||
for(var/part_set in part_sets)
|
||||
left_part += "<a href='?src=[UID()];part_set=[part_set]'>[part_set]</a> - \[<a href='?src=[UID()];partset_to_queue=[part_set]'>Add all parts to queue</a>\]<br>"
|
||||
if("parts")
|
||||
left_part += output_parts_list(part_set)
|
||||
left_part += "<hr><a href='?src=[UID()];screen=main'>Return</a>"
|
||||
dat = {"
|
||||
<title>[name]</title>
|
||||
<style>
|
||||
.res_name {font-weight: bold; text-transform: capitalize;}
|
||||
.red {color: #f00;}
|
||||
.part {margin-bottom: 10px;}
|
||||
.arrow {text-decoration: none; font-size: 10px;}
|
||||
body, table {height: 100%;}
|
||||
td {vertical-align: top; padding: 5px;}
|
||||
html, body {padding: 0px; margin: 0px;}
|
||||
h1 {font-size: 18px; margin: 5px 0px;}
|
||||
</style>
|
||||
<script language='javascript' type='text/javascript'>
|
||||
[js_byjax]
|
||||
</script>
|
||||
<table style='width: 100%;'>
|
||||
<tr>
|
||||
<td style='width: 65%; padding-right: 10px;'>
|
||||
[left_part]
|
||||
</td>
|
||||
<td style='width: 35%; background: #000;' id='queue'>
|
||||
[list_queue()]
|
||||
</td>
|
||||
<tr>
|
||||
</table>"}
|
||||
var/datum/browser/popup = new(user, "mecha_fabricator", name, 1000, 430)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "mecha_fabricator")
|
||||
return
|
||||
|
||||
/obj/machinery/spod_part_fabricator/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
var/datum/topic_input/afilter = new /datum/topic_input(href,href_list)
|
||||
if(href_list["part_set"])
|
||||
var/tpart_set = afilter.getStr("part_set")
|
||||
if(tpart_set)
|
||||
if(tpart_set=="clear")
|
||||
part_set = null
|
||||
else
|
||||
part_set = tpart_set
|
||||
screen = "parts"
|
||||
if(href_list["part"])
|
||||
var/T = afilter.getStr("part")
|
||||
var/datum/design/D = files.known_designs[T]
|
||||
if(D && D.build_type & PODFAB)
|
||||
if(!processing_queue)
|
||||
build_part(D)
|
||||
else
|
||||
add_to_queue(D)
|
||||
if(href_list["add_to_queue"])
|
||||
var/T = afilter.getStr("add_to_queue")
|
||||
var/datum/design/D = files.known_designs[T]
|
||||
if(D && D.build_type & PODFAB)
|
||||
add_to_queue(D)
|
||||
return update_queue_on_page()
|
||||
if(href_list["remove_from_queue"])
|
||||
remove_from_queue(afilter.getNum("remove_from_queue"))
|
||||
return update_queue_on_page()
|
||||
if(href_list["partset_to_queue"])
|
||||
add_part_set_to_queue(afilter.get("partset_to_queue"))
|
||||
return update_queue_on_page()
|
||||
if(href_list["process_queue"])
|
||||
spawn(-1)
|
||||
if(processing_queue || being_built)
|
||||
return 0
|
||||
processing_queue = 1
|
||||
process_queue()
|
||||
processing_queue = 0
|
||||
if(href_list["clear_temp"])
|
||||
temp = null
|
||||
if(href_list["screen"])
|
||||
screen = href_list["screen"]
|
||||
if(href_list["queue_move"] && href_list["index"])
|
||||
var/index = afilter.getNum("index")
|
||||
var/new_index = index + afilter.getNum("queue_move")
|
||||
if(isnum(index) && isnum(new_index))
|
||||
if(IsInRange(new_index,1,queue.len))
|
||||
queue.Swap(index,new_index)
|
||||
return update_queue_on_page()
|
||||
if(href_list["clear_queue"])
|
||||
queue = list()
|
||||
return update_queue_on_page()
|
||||
if(href_list["sync"])
|
||||
sync()
|
||||
if(href_list["part_desc"])
|
||||
var/T = afilter.getStr("part_desc")
|
||||
var/datum/design/D = files.known_designs[T]
|
||||
if(D && D.build_type & PODFAB)
|
||||
var/obj/part = D.build_path
|
||||
temp = {"<h1>[initial(part.name)] description:</h1>
|
||||
[initial(part.desc)]<br>
|
||||
<a href='?src=[UID()];clear_temp=1'>Return</a>
|
||||
"}
|
||||
|
||||
if(href_list["remove_mat"] && href_list["material"])
|
||||
var/amount = text2num(href_list["remove_mat"])
|
||||
var/material = href_list["material"]
|
||||
if(href_list["custom_eject"])
|
||||
amount = input("How many sheets would you like to eject from the machine?", "How much?", 1) as null|num
|
||||
amount = max(0,min(round(resources[material]/MINERAL_MATERIAL_AMOUNT),amount)) // Rounding errors aren't scary, as the mineral eject proc is smart
|
||||
if(!amount)
|
||||
return
|
||||
amount = round(amount)
|
||||
if(amount < 0 || amount > resources[material]) //href protection
|
||||
return
|
||||
|
||||
var/removed = remove_material(material,amount)
|
||||
if(removed == -1)
|
||||
temp = "Not enough [material2name(material)] to produce a sheet."
|
||||
else
|
||||
temp = "Ejected [removed] of [material2name(material)]"
|
||||
temp += "<br><a href='?src=[UID()];clear_temp=1'>Return</a>"
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/remove_material(var/mat_string, var/amount)
|
||||
if(resources[mat_string] < MINERAL_MATERIAL_AMOUNT) //not enough mineral for a sheet
|
||||
return -1
|
||||
var/type
|
||||
switch(mat_string)
|
||||
if(MAT_METAL)
|
||||
type = /obj/item/stack/sheet/metal
|
||||
if(MAT_GLASS)
|
||||
type = /obj/item/stack/sheet/glass
|
||||
if(MAT_GOLD)
|
||||
type = /obj/item/stack/sheet/mineral/gold
|
||||
if(MAT_SILVER)
|
||||
type = /obj/item/stack/sheet/mineral/silver
|
||||
if(MAT_DIAMOND)
|
||||
type = /obj/item/stack/sheet/mineral/diamond
|
||||
if(MAT_PLASMA)
|
||||
type = /obj/item/stack/sheet/mineral/plasma
|
||||
if(MAT_URANIUM)
|
||||
type = /obj/item/stack/sheet/mineral/uranium
|
||||
if(MAT_BANANIUM)
|
||||
type = /obj/item/stack/sheet/mineral/bananium
|
||||
else
|
||||
return 0
|
||||
var/result = 0
|
||||
|
||||
while(amount > 50)
|
||||
new type(get_turf(src),50)
|
||||
amount -= 50
|
||||
result += 50
|
||||
resources[mat_string] -= 50 * MINERAL_MATERIAL_AMOUNT
|
||||
|
||||
var/total_amount = round(resources[mat_string]/MINERAL_MATERIAL_AMOUNT)
|
||||
if(total_amount)//if there's still enough material for sheets
|
||||
var/obj/item/stack/sheet/res = new type(get_turf(src),min(amount,total_amount))
|
||||
resources[mat_string] -= res.amount*MINERAL_MATERIAL_AMOUNT
|
||||
result += res.amount
|
||||
|
||||
return result
|
||||
|
||||
|
||||
/obj/machinery/spod_part_fabricator/attackby(obj/W as obj, mob/user as mob, params)
|
||||
if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W))
|
||||
return
|
||||
|
||||
if(exchange_parts(user, W))
|
||||
return
|
||||
|
||||
if(panel_open)
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
for(var/material in resources)
|
||||
remove_material(material, resources[material]/MINERAL_MATERIAL_AMOUNT)
|
||||
default_deconstruction_crowbar(W)
|
||||
return 1
|
||||
else
|
||||
to_chat(user, "<span class='danger'>You can't load \the [name] while it's opened.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/stack))
|
||||
var/material
|
||||
switch(W.type)
|
||||
if(/obj/item/stack/sheet/mineral/gold)
|
||||
material = MAT_GOLD
|
||||
if(/obj/item/stack/sheet/mineral/silver)
|
||||
material = MAT_SILVER
|
||||
if(/obj/item/stack/sheet/mineral/diamond)
|
||||
material = MAT_DIAMOND
|
||||
if(/obj/item/stack/sheet/mineral/plasma)
|
||||
material = MAT_PLASMA
|
||||
if(/obj/item/stack/sheet/metal)
|
||||
material = MAT_METAL
|
||||
if(/obj/item/stack/sheet/glass)
|
||||
material = MAT_GLASS
|
||||
if(/obj/item/stack/sheet/mineral/bananium)
|
||||
material = MAT_BANANIUM
|
||||
if(/obj/item/stack/sheet/mineral/uranium)
|
||||
material = MAT_URANIUM
|
||||
else
|
||||
return ..()
|
||||
|
||||
if(being_built)
|
||||
to_chat(user, "\The [src] is currently processing. Please wait until completion.")
|
||||
return
|
||||
if(res_max_amount - resources[material] < MINERAL_MATERIAL_AMOUNT) //overstuffing the fabricator
|
||||
to_chat(user, "\The [src] [material2name(material)] storage is full.")
|
||||
return
|
||||
var/obj/item/stack/sheet/stack = W
|
||||
var/sname = "[stack.name]"
|
||||
if(resources[material] < res_max_amount)
|
||||
overlays += "fab-load-[material2name(material)]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey
|
||||
|
||||
var/transfer_amount = min(stack.amount, round((res_max_amount - resources[material])/MINERAL_MATERIAL_AMOUNT,1))
|
||||
resources[material] += transfer_amount * MINERAL_MATERIAL_AMOUNT
|
||||
stack.use(transfer_amount)
|
||||
to_chat(user, "You insert [transfer_amount] [sname] sheet\s into \the [src].")
|
||||
sleep(10)
|
||||
updateUsrDialog()
|
||||
overlays -= "fab-load-[material2name(material)]" //No matter what the overlay shall still be deleted
|
||||
else
|
||||
to_chat(user, "\The [src] cannot hold any more [sname] sheet\s.")
|
||||
return
|
||||
|
||||
/obj/machinery/spod_part_fabricator/proc/material2name(var/ID)
|
||||
return copytext(ID,2)
|
||||
@@ -5,6 +5,7 @@
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "bluespace_crystal"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
materials = list(MAT_BLUESPACE = MINERAL_MATERIAL_AMOUNT)
|
||||
origin_tech = "bluespace=6;materials=3"
|
||||
points = 50
|
||||
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
|
||||
@@ -45,6 +46,7 @@
|
||||
name = "artificial bluespace crystal"
|
||||
desc = "An artificially made bluespace crystal, it looks delicate."
|
||||
origin_tech = "bluespace=3;plasmatech=4"
|
||||
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT * 0.5)
|
||||
blink_range = 4 // Not as good as the organic stuff!
|
||||
points = 0 // nice try
|
||||
refined_type = null
|
||||
@@ -59,6 +61,7 @@ var/global/list/datum/stack_recipe/bluespace_crystal_recipes = list(new/datum/st
|
||||
icon_state = "polycrystal"
|
||||
desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off."
|
||||
origin_tech = "bluespace=6;materials=3"
|
||||
materials = list(MAT_BLUESPACE = MINERAL_MATERIAL_AMOUNT)
|
||||
attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/Deconstruct.ogg'
|
||||
|
||||
Reference in New Issue
Block a user