diff --git a/code/game/machinery/kilm.dm b/code/game/machinery/kilm.dm
deleted file mode 100644
index 7d724cf39a..0000000000
--- a/code/game/machinery/kilm.dm
+++ /dev/null
@@ -1,70 +0,0 @@
-/obj/machinery/kilm
- name = "kilm"
- desc = "A stone kilm, can be filled with logs for fuel."
- icon = 'icons/obj/fireplace.dmi'
- icon_state = "kilm"
-
- use_power = NO_POWER_USE
- density = TRUE
-
- var/on = FALSE
- var/filled = FALSE
- var/charges = 0
- var/making = null
-
-/obj/machinery/kilm/attackby(obj/item/T, mob/user)
- if(istype(T, /obj/item/grown/log))
- charges ++
- qdel(T)
-
-/obj/machinery/kilm/attackby(obj/item/stack/ore/S, mob/user)
- if(istype(S, /obj/item/stack/ore/glass))
- if(S.amount <= 5)
- user.show_message("You add the sand to the kilm.", 1)
- filled = TRUE
- S.amount = (S.amount - 5)
- if(S.amount < 5)
- qdel(S)
- else
- user.show_message("You need a at lest five sand piles to make anything of use.", 1)
-
-/obj/machinery/kilm/attack_hand(mob/living/carbon/user)
- . = ..()
- if(.)
- return
- if(charges == 0)
- to_chat(user, "The Kilm needs fuel to use.")
- making = null
- return
-
- if(charges == 1)
- to_chat(user, "The Kilm has some fuel and can be used to make a small flask.")
- making = /obj/item/reagent_containers/glass/beaker/flask_small
- return
-
- if(charges == 2)
- to_chat(user, "The Kilm has some fuel and can be used to make a honey jar.")
- making = /obj/item/reagent_containers/glass/beaker/jar
- return
-
- if(charges == 3)
- to_chat(user, "The Kilm has fuel and can be used to make a large flask.")
- making = /obj/item/reagent_containers/glass/beaker/flask_large
- return
-
- if(charges == 4)
- to_chat(user, "The Kilm has fuel and can be used to make a spouty flask.")
- making = /obj/item/reagent_containers/glass/beaker/flaskspouty
- return
-
- if(charges == 5)
- to_chat(user, "The Kilm has fuel and can be used to make a glass disk.")
- making = /obj/item/reagent_containers/glass/beaker/glass_dish
- return
-
- if(charges >= 6) //You may want glass slug!
- to_chat(user, "The Kilm has a lot of fuel and will make glass slug...")
- making = null
- return
-
- return
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 53209fac2f..b5fdf0c23e 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -10,7 +10,15 @@
*/
GLOBAL_LIST_INIT(glass_recipes, list ( \
new/datum/stack_recipe("directional window", /obj/structure/window/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
- new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
+ new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \
+ null, \
+ new/datum/stack_recipe_list("glass working bases", list( \
+ new/datum/stack_recipe("chem dish", /obj/item/glasswork/glass_base/dish, 10), \
+ new/datum/stack_recipe("lens", /obj/item/glasswork/glass_base/lens, 15), \
+ new/datum/stack_recipe("spout flask", /obj/item/glasswork/glass_base/spouty, 20), \
+ new/datum/stack_recipe("small bulb flask", /obj/item/glasswork/glass_base/flask_small, 5), \
+ new/datum/stack_recipe("large bottle flask", /obj/item/glasswork/glass_base/flask_large, 15), \
+ )), \
))
/obj/item/stack/sheet/glass
diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm
index e53db0bf7b..4ec66fa959 100644
--- a/code/modules/cargo/exports/parts.dm
+++ b/code/modules/cargo/exports/parts.dm
@@ -92,11 +92,38 @@
export_types = list(/obj/item/stock_parts/cell/bluespace)
/datum/export/cellyellow
- cost = 40
+ cost = 200
unit_name = "slime power cell"
export_types = list(/obj/item/stock_parts/cell/high/slime)
/datum/export/cellyellowhyper
- cost = 120 //Takes a lot to make and is really good
+ cost = 1200 //Takes a lot to make and is really good
unit_name = "hyper slime power cell"
- export_types = list(/obj/item/stock_parts/cell/high/slime/hypercharged)
\ No newline at end of file
+ export_types = list(/obj/item/stock_parts/cell/high/slime/hypercharged)
+
+//Glass working stuff
+
+/datum/export/glasswork_dish
+ cost = 300
+ unit_name = "small glass dish"
+ export_types = list(/obj/item/reagent_containers/glass/beaker/glass_dish)
+
+/datum/export/glasswork_lens
+ cost = 1800
+ unit_name = "small glass lens"
+ export_types = list(/obj/item/lens)
+
+/datum/export/glasswork_spouty
+ cost = 1200
+ unit_name = "flask with spout"
+ export_types = list(/obj/item/reagent_containers/glass/beaker/flaskspouty)
+
+/datum/export/glasswork_smallflask
+ cost = 600
+ unit_name = "small flask"
+ export_types = list(/obj/item/reagent_containers/glass/beaker/flask_small)
+
+/datum/export/glasswork_largeflask
+ cost = 1000
+ unit_name = "large flask"
+ export_types = list(/obj/item/reagent_containers/glass/beaker/flask_large)
\ No newline at end of file
diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm
index cadf68a7a8..766788c81e 100644
--- a/code/modules/cargo/packs/science.dm
+++ b/code/modules/cargo/packs/science.dm
@@ -81,6 +81,16 @@
/obj/item/integrated_electronics/wirer)
crate_name = "circuitry starter pack crate"
+/datum/supply_pack/science/glasswork
+ name = "GlassBlower Gear Crate"
+ desc = "Learn and make glassworks of usefull things for a profit! Contains glassworking tools and blowing rods. Glass not included."
+ cost = 1000
+ contains = list(/obj/item/glasswork/glasskit,
+ /obj/item/glasswork/glasskit,
+ /obj/item/glasswork/blowing_rod,
+ /obj/item/glasswork/blowing_rod)
+ crate_name = "glassblower gear crate"
+
/datum/supply_pack/science/adv_surgery_tools
name = "Med-Co Advanced surgery tools"
desc = "A full set of Med-Co advanced surgery tools, this crate also comes with a spay of synth flesh as well as a can of . Requires Surgery access to open."
diff --git a/code/modules/crafting/glassware.dm b/code/modules/crafting/glassware.dm
new file mode 100644
index 0000000000..db6cc4f1cc
--- /dev/null
+++ b/code/modules/crafting/glassware.dm
@@ -0,0 +1,298 @@
+//This file is for glass working types of things!
+
+/obj/item/glasswork
+ name = "This is a bug report it!"
+ desc = "Failer to code. Contact your local bug remover..."
+ icon = 'icons/obj/glassworks.dmi'
+ w_class = WEIGHT_CLASS_SMALL
+ force = 0
+ throw_speed = 1
+ throw_range = 3
+
+/obj/item/glasswork/glasskit
+ name = "Glass Working Tools"
+ desc = "A lovely belt of most the tools you will need to shape, mold, and refine glass into more advanced shapes."
+ icon_state = "glass_tools"
+
+/obj/item/glasswork/blowing_rod
+ name = "Glass Working Blow Rod"
+ desc = "A hollow metal stick made for glass blowing."
+ icon_state = "blowing_rods_unused"
+
+/obj/item/glasswork/glass_base
+ name = "Glass Fodder Sheet"
+ desc = "A sheet of glass set aside for glass working"
+ icon_state = "glass_base"
+ var/next_step = null
+ var/make = null
+ var/rod = /obj/item/glasswork/blowing_rod
+
+/obj/item/lens
+ name = "Optical Lens"
+ desc = "Good for selling or crafting, by itself its useless"
+
+//////////////////////Chem Disk/////////////////////
+//Two Steps //
+//Sells for 300 cr, takes 10 glass shets //
+//Usefull for chem spliting //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/dish
+ name = "Glass Fodder Sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass dish. Needs to be cut with some tools."
+ next_step = /obj/item/glasswork/glass_base/glass_dish
+ make = /obj/item/reagent_containers/glass/beaker/glass_dish
+
+/obj/item/glasswork/glass_base/dish/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/dish)
+
+/obj/item/glasswork/glass_base/glass_dish
+ name = "Half Chem Dish Sheet"
+ desc = "A sheet of glass cut in half, looks like it still needs some more sanding down"
+ icon_state = "glass_base_half"
+
+/obj/item/glasswork/glass_base/glass_dish/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new make(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_dish)
+
+//////////////////////Lens//////////////////////////
+//Six Steps //
+//Sells for 1800 cr, takes 15 glass shets //
+//Usefull for selling and later crafting //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/lens
+ name = "Glass Fodder Sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass lens. Needs to be cut with some tools."
+ next_step = /obj/item/glasswork/glass_base/glass_dish
+ make = /obj/item/lens
+
+/obj/item/glasswork/glass_base/lens/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/lens)
+
+/obj/item/glasswork/glass_base/glass_lens
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass ready to be heated. Needs to be heated with some tools."
+ icon_state = "glass_base_half"
+ next_step = /obj/item/glasswork/glass_base/glass_lens/part2
+
+/obj/item/glasswork/glass_base/glass_lens/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/weldingtool))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens)
+
+/obj/item/glasswork/glass_base/glass_lens/part2
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass that has been heated. Needs to be heated more with some tools."
+ icon_state = "glass_base_heat"
+ next_step = /obj/item/glasswork/glass_base/glass_lens/part3
+
+/obj/item/glasswork/glass_base/glass_lens/part2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/weldingtool))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens/part2)
+
+/obj/item/glasswork/glass_base/glass_lens/part3
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube."
+ icon_state = "glass_base_molding"
+ next_step = /obj/item/glasswork/glass_base/glass_lens/part4
+
+/obj/item/glasswork/glass_base/glass_lens/part3/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/blowing_rod))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens/part3)
+ qdel(I)
+
+/obj/item/glasswork/glass_base/glass_lens/part4
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube."
+ icon_state = "blowing_rods_inuse"
+ next_step = /obj/item/glasswork/glass_base/glass_lens/part5
+
+/obj/item/glasswork/glass_base/glass_lens/part4/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new next_step(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens/part4)
+
+/obj/item/glasswork/glass_base/glass_lens/part5
+ name = "Unpolished glass lens"
+ desc = "A small unpolished glass lens. Could be polished with some cloth."
+ icon_state = "glass_optics"
+ next_step = /obj/item/glasswork/glass_base/glass_lens/part6
+
+/obj/item/glasswork/glass_base/glass_lens/part5/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stack/sheet/cloth))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens/part5)
+
+/obj/item/glasswork/glass_base/glass_lens/part6
+ name = "Unrefined glass lens"
+ desc = "A small polished glass lens. Just needs to be refined with some sandstone."
+ icon_state = "glass_optics"
+
+/obj/item/glasswork/glass_base/glass_lens/part6/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/stack/sheet/mineral/sandstone))
+ new make(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens/part6)
+
+//////////////////////Spouty Flask//////////////////
+//Four Steps //
+//Sells for 1200 cr, takes 20 glass shets //
+//Usefull for selling and chemical things //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/spouty
+ name = "Glass Fodder Sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a spout beaker. Needs to be cut with some tools."
+ next_step = /obj/item/glasswork/glass_base/spouty/part2
+ make = /obj/item/reagent_containers/glass/beaker/flaskspouty
+
+/obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/spouty)
+
+/obj/item/glasswork/glass_base/spouty/part2
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass that has been heated. Needs to be heated more with some tools."
+ icon_state = "glass_base_heat"
+ next_step = /obj/item/glasswork/glass_base/spouty/part3
+
+/obj/item/glasswork/glass_base/spouty/part2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/weldingtool))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/spouty/part2)
+
+/obj/item/glasswork/glass_base/spouty/part3
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube."
+ icon_state = "glass_base_molding"
+ next_step = /obj/item/glasswork/glass_base/spouty/part4
+
+/obj/item/glasswork/glass_base/glass_lens/part3/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/blowing_rod))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/glass_lens/part3)
+ qdel(I)
+
+/obj/item/glasswork/glass_base/spouty/part4
+ name = "Glass Fodder Sheet"
+ desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube."
+ icon_state = "blowing_rods_inuse"
+
+/obj/item/glasswork/glass_base/spouty/part4/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new make(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/spouty/part4)
+
+//////////////////////Small Bulb Flask//////////////
+//Two Steps //
+//Sells for 600 cr, takes 5 glass shets //
+//Usefull for selling and chemical things //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/flask_small
+ name = "Glass Fodder Sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a small flask. Needs to be heated with some tools."
+ next_step = /obj/item/glasswork/glass_base/flask_small/part1
+ make = /obj/item/reagent_containers/glass/beaker/flask_small
+
+/obj/item/glasswork/glass_base/flask_small/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/weldingtool))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/flask_small)
+
+/obj/item/glasswork/glass_base/flask_small/part1
+ name = "Metled Glass"
+ desc = "A blob of metled glass, this one is ideal for a small flask. Needs to be blown with some tools."
+ icon_state = "glass_base_molding"
+ next_step = /obj/item/glasswork/glass_base/spouty/part2
+
+/obj/item/glasswork/glass_base/flask_small/part1/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/blowing_rod))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/flask_small/part1)
+ qdel(I)
+
+/obj/item/glasswork/glass_base/flask_small/part2
+ name = "Metled Glass"
+ desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
+ icon_state = "blowing_rods_inuse"
+
+/obj/item/glasswork/glass_base/flask_small/part2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new make(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/flask_small/part2)
+
+//////////////////////Large Bulb Flask//////////////
+//Two Steps //
+//Sells for 1000 cr, takes 15 glass shets //
+//Usefull for selling and chemical things //
+////////////////////////////////////////////////////
+
+/obj/item/glasswork/glass_base/flask_large
+ name = "Glass Fodder Sheet"
+ desc = "A set of glass sheets set aside for glass working, this one is ideal for a large flask. Needs to be heated with some tools."
+ next_step = /obj/item/glasswork/glass_base/flask_large/part1
+ make = /obj/item/reagent_containers/glass/beaker/flask_large
+
+/obj/item/glasswork/glass_base/flask_large/part1/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/weldingtool))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/flask_large/part1)
+
+/obj/item/glasswork/glass_base/flask_large/part1
+ name = "Metled Glass"
+ desc = "A blob of metled glass, this one is ideal for a large flask. Needs to be blown with some tools."
+ icon_state = "glass_base_molding"
+ next_step = /obj/item/glasswork/glass_base/flask_large/part2
+
+/obj/item/glasswork/glass_base/flask_large/part2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/blowing_rod))
+ new next_step(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/flask_large/part2)
+ qdel(I)
+
+/obj/item/glasswork/glass_base/flask_large/part2
+ name = "Metled Glass"
+ desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
+ icon_state = "blowing_rods_inuse"
+
+/obj/item/glasswork/glass_base/flask_large/part2/attackby(obj/item/I, mob/user, params)
+ ..()
+ if(istype(I, /obj/item/glasswork/glass_base))
+ new make(user.loc, 1)
+ new rod(user.loc, 1)
+ qdel(/obj/item/glasswork/glass_base/flask_large/part2)
+
+
+
+
+
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 9d4d17e455..ec2989588b 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -8,15 +8,6 @@
resistance_flags = ACID_PROOF
container_HP = 2
-/obj/item/reagent_containers/glass/slug
- name = "glass slug"
- desc = "A small slug of solid glass, produced from a kiln."
- icon_state = "glassslug"
- amount_per_transfer_from_this = 0
- possible_transfer_amounts = list(0)
- volume = 0
- resistance_flags = ACID_PROOF
-
/obj/item/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
if(!canconsume(M, user))
return
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index e418657065..b13e06e824 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/glassworks.dmi b/icons/obj/glassworks.dmi
new file mode 100644
index 0000000000..de033f08d5
Binary files /dev/null and b/icons/obj/glassworks.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index dccd7ff7e3..4068ff3c16 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -632,7 +632,6 @@
#include "code\game\machinery\hologram.dm"
#include "code\game\machinery\igniter.dm"
#include "code\game\machinery\iv_drip.dm"
-#include "code\game\machinery\kilm.dm"
#include "code\game\machinery\launch_pad.dm"
#include "code\game\machinery\lightswitch.dm"
#include "code\game\machinery\limbgrower.dm"
@@ -1675,6 +1674,7 @@
#include "code\modules\clothing\under\jobs\Plasmaman\medsci.dm"
#include "code\modules\clothing\under\jobs\Plasmaman\security.dm"
#include "code\modules\crafting\craft.dm"
+#include "code\modules\crafting\glassware.dm"
#include "code\modules\crafting\guncrafting.dm"
#include "code\modules\crafting\recipes.dm"
#include "code\modules\crafting\recipes\recipes_clothing.dm"