diff --git a/code/game/machinery/kilm.dm b/code/game/machinery/kilm.dm
new file mode 100644
index 0000000000..7d724cf39a
--- /dev/null
+++ b/code/game/machinery/kilm.dm
@@ -0,0 +1,70 @@
+/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/modules/cargo/bounties/silly.dm b/code/modules/cargo/bounties/silly.dm
index b88ec9f192..706a8a3385 100644
--- a/code/modules/cargo/bounties/silly.dm
+++ b/code/modules/cargo/bounties/silly.dm
@@ -51,4 +51,11 @@
name = "Strange Object"
description = "Nanotrasen has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away."
reward = 1000
- wanted_types = list(/obj/item/relic)
\ No newline at end of file
+ wanted_types = list(/obj/item/relic)
+
+/datum/bounty/item/silly/toy_swords
+ name = "Toy Swords"
+ description = "Nanotrasen has partaken in a reenactment of a famous movie, but we only have lethal energy based swords. Send us some toys so we stop killing are actors."
+ reward = 1200
+ required_count = 3
+ wanted_types = list(/obj/item/toy/sword, /obj/item/toy/sword/cx)
\ No newline at end of file
diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm
index 40d21e4505..f41a43070d 100644
--- a/code/modules/cargo/packs/costumes_toys.dm
+++ b/code/modules/cargo/packs/costumes_toys.dm
@@ -9,6 +9,12 @@
/datum/supply_pack/costumes_toys
group = "Costumes & Toys"
+/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
+ var/list/L = contains.Copy()
+ for(var/i in 1 to num_contained)
+ var/item = pick_n_take(L)
+ new item(C)
+
/datum/supply_pack/costumes_toys/randomised
name = "Collectable Hats Crate"
desc = "Flaunt your status with three unique, highly-collectable hats!"
@@ -289,12 +295,6 @@
crate_name = "wizard costume crate"
crate_type = /obj/structure/closet/crate/wooden
-/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
- var/list/L = contains.Copy()
- for(var/i in 1 to num_contained)
- var/item = pick_n_take(L)
- new item(C)
-
/datum/supply_pack/costumes_toys/wardrobes/autodrobe
name = "Autodrobe Supply Crate"
desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm
index 656474cc1d..7f625816b0 100644
--- a/code/modules/cargo/packs/medical.dm
+++ b/code/modules/cargo/packs/medical.dm
@@ -46,18 +46,6 @@
crate_name = "blood freezer"
crate_type = /obj/structure/closet/crate/freezer
-/datum/supply_pack/medical/bloodpackssynth
- name = "Synthetics Blood Pack Crate"
- desc = "Contains five synthetics blood packs for reintroducing blood to patients."
- cost = 3000
- contains = list(/obj/item/reagent_containers/blood/synthetics,
- /obj/item/reagent_containers/blood/synthetics,
- /obj/item/reagent_containers/blood/synthetics,
- /obj/item/reagent_containers/blood/synthetics,
- /obj/item/reagent_containers/blood/synthetics)
- crate_name = "blood freezer"
- crate_type = /obj/structure/closet/crate/freezer
-
/datum/supply_pack/medical/defibs
name = "Defibrillator Crate"
desc = "Contains two defibrillators for bringing the recently deceased back to life."
@@ -83,17 +71,6 @@
contains = list(/obj/machinery/iv_drip)
crate_name = "iv drip 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."
- cost = 5500
- access = ACCESS_SURGERY
- contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
- /obj/item/reagent_containers/medspray/synthflesh,
- /obj/item/reagent_containers/medspray/sterilizine)
- crate_name = "medco newest surgery tools"
- crate_type = /obj/structure/closet/crate/medical
-
/datum/supply_pack/medical/medicalhardsuit
name = "Medical Hardsuit"
desc = "Got people being spaced left and right? Hole in the same room as the dead body of Hos or cap? Fear not, now you can buy one medical hardsuit with a mask and air tank to save your fellow crewmembers."
@@ -194,6 +171,18 @@
/obj/item/roller)
crate_name = "surgical supplies crate"
+/datum/supply_pack/medical/bloodpackssynth
+ name = "Synthetics Blood Pack Crate"
+ desc = "Contains five synthetics blood packs for reintroducing blood to patients."
+ cost = 3000
+ contains = list(/obj/item/reagent_containers/blood/synthetics,
+ /obj/item/reagent_containers/blood/synthetics,
+ /obj/item/reagent_containers/blood/synthetics,
+ /obj/item/reagent_containers/blood/synthetics,
+ /obj/item/reagent_containers/blood/synthetics)
+ crate_name = "blood freezer"
+ crate_type = /obj/structure/closet/crate/freezer
+
/datum/supply_pack/medical/firstaidtoxins
name = "Toxin Treatment Kit Crate"
desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins."
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index c380d5411e..c353c49892 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -29,15 +29,6 @@
crate_name = "art supply crate"
crate_type = /obj/structure/closet/crate/wooden
-/datum/supply_pack/misc/captain_pen
- name = "Captain Pen"
- desc = "A spare Captain fountain pen."
- access = ACCESS_CAPTAIN
- cost = 10000
- contains = list(/obj/item/pen/fountain/captain)
- crate_name = "captain pen"
- crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen
-
/datum/supply_pack/misc/bicycle
name = "Bicycle"
desc = "Nanotrasen reminds all employees to never toy with powers outside their control."
@@ -98,6 +89,15 @@
/obj/item/storage/briefcase)
crate_name = "bureaucracy crate"
+/datum/supply_pack/misc/captain_pen
+ name = "Captain Pen"
+ desc = "A spare Captain fountain pen."
+ access = ACCESS_CAPTAIN
+ cost = 5000
+ contains = list(/obj/item/pen/fountain/captain)
+ crate_name = "captain pen"
+ crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen
+
/datum/supply_pack/misc/fountainpens
name = "Calligraphy Crate"
desc = "Sign death warrants in style with these seven executive fountain pens."
diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm
index 78f10b0908..a232f3c59b 100644
--- a/code/modules/cargo/packs/organic.dm
+++ b/code/modules/cargo/packs/organic.dm
@@ -36,7 +36,7 @@
crate_name = "beekeeping starter crate"
crate_type = /obj/structure/closet/crate/hydroponics
-/datum/supply_pack/organic/candy/randomised
+/datum/supply_pack/organic/randomised/candy
name = "Candy Crate"
desc = "For people that have a insatiable sweet tooth! Has ten candies to be eaten up.."
cost = 2500
@@ -69,6 +69,12 @@
/obj/item/storage/fancy/donut_box)
crate_name = "candy crate"
+/datum/supply_pack/organic/randomised/candy/fill(obj/structure/closet/crate/C)
+ var/list/L = contains.Copy()
+ for(var/i in 1 to num_contained)
+ var/item = pick_n_take(L)
+ new item(C)
+
/datum/supply_pack/organic/exoticseeds
name = "Exotic Seeds Crate"
desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!"
diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm
index 25b8b2ddfb..44da4306da 100644
--- a/code/modules/cargo/packs/science.dm
+++ b/code/modules/cargo/packs/science.dm
@@ -24,7 +24,6 @@
name = "Advanced Alien Alloy Crate Crate"
desc = "Hello brothers from the stars!!! Our fellow brethren have made contact at long last and gave us gifts man! They really did build the prymi- Connection Error- Bro we’ll send you a sheet of advanced alien alloy."
cost = 15000
- contraband = TRUE
DropPodOnly = TRUE
contains = list(/obj/item/stack/sheet/mineral/abductor)
crate_name = "alien bro alloy crate"
@@ -82,6 +81,17 @@
/obj/item/integrated_electronics/wirer)
crate_name = "circuitry starter pack 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."
+ cost = 5500
+ access = ACCESS_SURGERY
+ contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
+ /obj/item/reagent_containers/medspray/synthflesh,
+ /obj/item/reagent_containers/medspray/sterilizine)
+ crate_name = "medco newest surgery tools"
+ crate_type = /obj/structure/closet/crate/medical
+
/datum/supply_pack/science/monkey
name = "Monkey Cube Crate"
desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!"
diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm
index 14bde519e1..a6dc989fd1 100644
--- a/code/modules/cargo/packs/service.dm
+++ b/code/modules/cargo/packs/service.dm
@@ -33,6 +33,16 @@
/obj/item/stack/packageWrap)
crate_name = "cargo supplies crate"
+/datum/supply_pack/service/janitor/janpimp
+ name = "Custodial Cruiser"
+ desc = "Clown steal your ride? Assistant lock it in the dorms? Order a new one and get back to cleaning in style!"
+ cost = 3000
+ access = ACCESS_JANITOR
+ contains = list(/obj/vehicle/ridden/janicart,
+ /obj/item/key/janitor)
+ crate_name = "janitor ride crate"
+ crate_type = /obj/structure/closet/crate/large
+
/datum/supply_pack/service/carpet_exotic
name = "Exotic Carpet Crate"
desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 10 different flooring patterns."
@@ -136,16 +146,6 @@
/obj/item/reagent_containers/spray/drying_agent)
crate_name = "janitor backpack crate"
-/datum/supply_pack/service/janitor/janpimp
- name = "Custodial Cruiser"
- desc = "Clown steal your ride? Assistant lock it in the dorms? Order a new one and get back to cleaning in style!"
- cost = 3000
- access = ACCESS_JANITOR
- contains = list(/obj/vehicle/ridden/janicart,
- /obj/item/key/janitor)
- crate_name = "janitor ride crate"
- crate_type = /obj/structure/closet/crate/large
-
/datum/supply_pack/service/mule
name = "MULEbot Crate"
desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!"
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 3ed505c360..3662d0b3cb 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -8,6 +8,14 @@
resistance_flags = ACID_PROOF
container_HP = 2
+/obj/item/reagent_containers/glass/slug
+ name = "glass slug"
+ desc = "Seemingly useless wasted sand and fuel mixed in one... Or maybe it can be refined into something more usefull?"
+ 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))
@@ -157,8 +165,37 @@
/obj/item/reagent_containers/glass/beaker/jar
name = "honey jar"
desc = "A jar for honey. It can hold up to 50 units of sweet delight. Unable to withstand reagents of an extreme pH."
- icon = 'icons/obj/chemical.dmi'
- icon_state = "vapour"
+ icon_state = "honey"
+
+/obj/item/reagent_containers/glass/beaker/glass_dish
+ name = "glass dish"
+ desc = "A tiny glass dish. It can hold up to 3 units. Unable to withstand reagents of an extreme pH."
+ materials = list(MAT_GLASS=500)
+ icon_state = "glass_disk"
+ possible_transfer_amounts = list(0.1,0.5,0.75,1,2,3)
+ volume = 3
+
+/obj/item/reagent_containers/glass/beaker/flask_large
+ name = "large flask"
+ desc = "A large flask. It can hold up to 80 units. Unable to withstand reagents of an extreme pH."
+ materials = list(MAT_GLASS=2500)
+ icon_state = "flasklarge"
+ volume = 80
+
+/obj/item/reagent_containers/glass/beaker/flask_small
+ name = "small flask"
+ desc = "A small flask. It can hold up to 40 units. Unable to withstand reagents of an extreme pH."
+ materials = list(MAT_GLASS=1000)
+ icon_state = "flasksmall"
+ volume = 40
+
+/obj/item/reagent_containers/glass/beaker/flaskspouty
+ name = "flask with spout"
+ desc = "A flask with a spout! It can hold up to 120 units. Unable to withstand reagents of an extreme pH."
+ materials = list(MAT_GLASS=2500)
+ icon_state = "flaskspouty"
+ possible_transfer_amounts = list(1,2,3,4,5,10,15,20,25,30,50,100,120)
+ volume = 120
/obj/item/reagent_containers/glass/beaker/large
name = "large beaker"
diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm
index 7b56beaf77..57c5f1ce2a 100644
--- a/code/modules/research/designs/autobotter_designs.dm
+++ b/code/modules/research/designs/autobotter_designs.dm
@@ -307,7 +307,7 @@
desc = "Allows for the blowing, and bottling of Blooddrop bottles."
id = "blooddrop"
category = list("Wines")
- reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grape_juice" = 30)
+ reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grapejuice" = 30)
build_path = /obj/item/export/bottle/blooddrop
/datum/design/bottle/export/slim_gold
@@ -323,7 +323,7 @@
desc = "Allows for the blowing, and bottling of White Bloodmoon bottles."
id = "white_bloodmoon"
category = list("Wines")
- reagents_list = list("synthflesh" = 50, "blood" = 50, "gib" = 10)
+ reagents_list = list("synthflesh" = 50, "blood" = 50, "liquidgibs" = 10)
build_path = /obj/item/export/bottle/white_bloodmoon
/datum/design/bottle/export/greenroad
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index 701c3a2467..2f938768ac 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/fireplace.dmi b/icons/obj/fireplace.dmi
index d1a157e009..df03958368 100644
Binary files a/icons/obj/fireplace.dmi and b/icons/obj/fireplace.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 2e0142c49f..3f65111bbe 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -616,6 +616,7 @@
#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"