diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 6424ab1f0d..ee60463d04 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -23,6 +23,7 @@
var/list/ore_buffer = list()
var/datum/material_container/materials
var/datum/research/files
+ var/obj/item/weapon/disk/design_disk/inserted_disk
/obj/machinery/mineral/ore_redemption/Initialize()
. = ..()
@@ -188,6 +189,11 @@
to_chat(user, "You change [src]'s I/O settings, setting the input to [dir2text(input_dir)] and the output to [dir2text(output_dir)].")
return
+ if(istype(W, /obj/item/weapon/disk/design_disk))
+ if(user.transferItemToLoc(W, src))
+ inserted_disk = W
+ return TRUE
+
return ..()
/obj/machinery/mineral/ore_redemption/on_deconstruction()
@@ -219,6 +225,8 @@
else
dat += "Release
"
+ dat += "
Alloys:
"
+
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
if(can_smelt_alloy(D))
@@ -228,6 +236,20 @@
dat += "
Mineral Value List:
[get_ore_values()]
"
+ if(inserted_disk)
+ dat += "Eject disk
"
+ dat += "Uploadable designs: "
+
+ for(var/i in 1 to inserted_disk.max_blueprints)
+ if(inserted_disk.blueprints[i])
+ var/datum/design/D = inserted_disk.blueprints[i]
+ if(D.build_type & SMELTER)
+ dat += "Name: [D.name]
Upload to smelter"
+
+ dat += "
"
+ else
+ dat += "Insert design disk
"
+
var/datum/browser/popup = new(user, "ore_redemption_machine", "Ore Redemption Machine", 400, 500)
popup.set_content(dat)
popup.open()
@@ -257,12 +279,26 @@
else if(href_list["insert_id"])
var/obj/item/weapon/card/id/I = usr.get_active_held_item()
if(istype(I))
- if(!usr.drop_item())
+ if(!usr.transferItemToLoc(I,src))
return
- I.forceMove(src)
inserted_id = I
else
to_chat(usr, "Not a valid ID!")
+ if(href_list["eject_disk"])
+ if(inserted_disk)
+ inserted_disk.forceMove(loc)
+ inserted_disk = null
+ if(href_list["insert_disk"])
+ var/obj/item/weapon/disk/design_disk/D = usr.get_active_held_item()
+ if(istype(D))
+ if(!usr.transferItemToLoc(D,src))
+ return
+ inserted_disk = D
+ if(href_list["upload"])
+ var/n = text2num(href_list["upload"])
+ if(inserted_disk && inserted_disk.blueprints && inserted_disk.blueprints[n])
+ files.AddDesign2Known(inserted_disk.blueprints[n])
+
if(href_list["release"])
if(check_access(inserted_id) || allowed(usr)) //Check the ID inside, otherwise check the user
var/mat_id = href_list["release"]
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 54984227ad..834b79d4dc 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -653,14 +653,3 @@ other types of metals and chemistry for reagents).
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
build_path = /obj/item/weapon/weldingtool/experimental
category = list("Equipment")
-
-
-/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")
diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm
index 2672e0e27a..9367b38da7 100644
--- a/code/modules/research/designs/smelting_designs.dm
+++ b/code/modules/research/designs/smelting_designs.dm
@@ -6,7 +6,7 @@
build_type = SMELTER
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT / 2, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT / 2)
build_path = /obj/item/stack/sheet/plasteel
- category = list("initial","Alloys")
+ category = list("initial")
/datum/design/plastitanium_alloy
@@ -15,4 +15,14 @@
build_type = SMELTER
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT / 2, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT / 2)
build_path = /obj/item/stack/sheet/mineral/plastitanium
- category = list("initial","Alloys")
\ No newline at end of file
+ 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")
\ No newline at end of file
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index d2db7e0fa9..31fa13f094 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -728,6 +728,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(D.build_type & AUTOLATHE) dat += "Autolathe
"
if(D.build_type & MECHFAB) dat += "Exosuit Fabricator
"
if(D.build_type & BIOGENERATOR) dat += "Biogenerator
"
+ if(D.build_type & LIMBGROWER) dat += "Limbgrower
"
+ if(D.build_type & SMELTER) dat += "Smelter
"
dat += "Required Materials:
"
var/all_mats = D.materials + D.reagents_list
for(var/M in all_mats)