diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index fbd689df89e..e22d858109a 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -19,7 +19,7 @@
var/ore_pickup_rate = 15
var/sheet_per_ore = 1
var/point_upgrade = 1
- var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("uranium" = 30), ("diamond" = 50), ("bananium" = 60))
+ var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("uranium" = 30), ("diamond" = 50), ("bluespace crystal" = 50), ("bananium" = 60))
speed_process = 1
/obj/machinery/mineral/ore_redemption/New()
@@ -59,11 +59,6 @@
var/obj/item/stack/sheet/s = new processed_sheet(src,0)
s.amount = 0
stack_list[processed_sheet] = s
- if(s.name != "glass" && s.name != "metal") //we can get these from cargo anyway
- var/msg = "[capitalize(s.name)] sheets are now available in the Cargo Bay."
- for(var/obj/machinery/requests_console/D in allConsoles)
- if(D.department == "Science" || D.department == "Robotics" || D.department == "Research Director's Desk" || (D.department == "Chemistry" && (s.name == "uranium" || s.name == "solid plasma")))
- D.createmessage("Ore Redemption Machine", "New minerals available!", msg, 1, 0)
var/obj/item/stack/sheet/storage = stack_list[processed_sheet]
storage.amount += sheet_per_ore //Stack the sheets
O.loc = null //Let the old sheet...
@@ -93,6 +88,13 @@
else
process_sheet(O)
i++
+ var/msg = "Now available in the Cargo Bay: \n"
+ for(var/s in stack_list) // Making an announcement for cargo
+ var/obj/item/stack/sheet/mats = stack_list[s]
+ msg += "[capitalize(mats.name)]: [mats.amount] sheets \n"
+ for(var/obj/machinery/requests_console/D in allConsoles)
+ if(D.department == "Science" || D.department == "Robotics" || D.department == "Research Director's Desk" || D.department == "Chemistry" || D.department == "Bar" )
+ D.createmessage("Ore Redemption Machine", "New minerals available!", msg, 1, 0)
/obj/machinery/mineral/ore_redemption/attackby(obj/item/weapon/W, mob/user, params)
if(exchange_parts(user, W))
diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm
index ae377c651c6..9501710cdd5 100644
--- a/code/modules/telesci/bscrystal.dm
+++ b/code/modules/telesci/bscrystal.dm
@@ -9,6 +9,7 @@
origin_tech = "bluespace=6;materials=3"
points = 50
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
+ refined_type = /obj/item/stack/sheet/bluespace_crystal
/obj/item/weapon/ore/bluespace_crystal/New()
..()
@@ -44,3 +45,33 @@
origin_tech = "bluespace=3;plasmatech=4"
blink_range = 4 // Not as good as the organic stuff!
points = 0 // nice try
+ refined_type = null
+
+// Polycrystals, aka stacks
+
+/obj/item/stack/sheet/bluespace_crystal
+ name = "bluespace polycrystal"
+ icon = 'icons/obj/telescience.dmi'
+ icon_state = "polycrystal"
+ desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off."
+ origin_tech = "bluespace=6;minerals=3"
+ attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
+
+/obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user) // to prevent the construction menu from ever happening
+ user << "You cannot crush the polycrystal in-hand, try breaking one off."
+ return
+
+/obj/item/stack/sheet/bluespace_crystal/attack_hand(mob/user)
+ if (user.get_inactive_hand() == src)
+ if(zero_amount()) // in this case, a sanity check
+ return
+ var/obj/item/weapon/ore/bluespace_crystal/BC = new(src)
+ user.put_in_hands(BC)
+ amount--
+ if (amount == 0)
+ qdel(src)
+ user << "You break the final crystal off."
+ else user << "You break off a crystal."
+ else
+ ..()
+ return
\ No newline at end of file
diff --git a/icons/obj/telescience.dmi b/icons/obj/telescience.dmi
index 0ae04b8e42c..514975af914 100644
Binary files a/icons/obj/telescience.dmi and b/icons/obj/telescience.dmi differ