diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 136f78203df..9462083757e 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1385,38 +1385,55 @@ var/global/list/common_tools = list(
return 1
return 0
-proc/is_hot(obj/item/W as obj)
- switch(W.type)
- if(/obj/item/weapon/weldingtool)
- var/obj/item/weapon/weldingtool/WT = W
- if(WT.isOn())
- return 3800
- else
- return 0
- if(/obj/item/weapon/lighter)
- if(W:lit)
- return 1500
- else
- return 0
- if(/obj/item/weapon/match)
- if(W:lit)
- return 1000
- else
- return 0
- if(/obj/item/clothing/mask/cigarette)
- if(W:lit)
- return 1000
- else
- return 0
- if(/obj/item/weapon/pickaxe/plasmacutter)
+/proc/is_hot(obj/item/W as obj)
+ if(istype(W, /obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/O = W
+ if(O.isOn())
return 3800
- if(/obj/item/weapon/melee/energy)
+ else
+ return 0
+ if(istype(W, /obj/item/weapon/lighter))
+ var/obj/item/weapon/lighter/O = W
+ if(O.lit)
+ return 1500
+ else
+ return 0
+ if(istype(W, /obj/item/weapon/match))
+ var/obj/item/weapon/match/O = W
+ if(O.lit == 1)
+ return 1000
+ else
+ return 0
+ if(istype(W, /obj/item/clothing/mask/cigarette))
+ var/obj/item/clothing/mask/cigarette/O = W
+ if(O.lit)
+ return 1000
+ else
+ return 0
+ if(istype(W, /obj/item/candle))
+ var/obj/item/candle/O = W
+ if(O.lit)
+ return 1000
+ else
+ return 0
+ if(istype(W, /obj/item/device/flashlight/flare))
+ var/obj/item/device/flashlight/flare/O = W
+ if(O.on)
+ return 1000
+ else
+ return 0
+ if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
+ return 3800
+ if(istype(W, /obj/item/weapon/melee/energy))
+ var/obj/item/weapon/melee/energy/O = W
+ if(O.active)
return 3500
else
return 0
-
- return 0
-
+ if(istype(W, /obj/item/device/assembly/igniter))
+ return 1000
+ else
+ return 0
//Whether or not the given item counts as sharp in terms of dealing damage
/proc/is_sharp(obj/O as obj)
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index 1f3539c18ba..3785259d5d7 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -130,6 +130,15 @@
return
+ attackby(var/obj/item/I, mob/user as mob, params)
+ if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird
+ return
+ if(is_hot(I))
+ if(src.reagents)
+ src.reagents.chem_temp += 15
+ user << "You heat [src] with [I]."
+ src.reagents.handle_reactions()
+
examine()
set src in view()
..()
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
deleted file mode 100644
index b9d5c648e59..00000000000
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ /dev/null
@@ -1,361 +0,0 @@
-
-
////////////////////////////////////////////////////////////////////////////////
-
/// (Mixing)Glass.
-
////////////////////////////////////////////////////////////////////////////////
-
/obj/item/weapon/reagent_containers/glass
-
name = " "
-
var/base_name = " "
-
desc = " "
-
icon = 'icons/obj/chemical.dmi'
-
icon_state = "null"
-
item_state = "null"
-
amount_per_transfer_from_this = 10
-
possible_transfer_amounts = list(5,10,15,25,30,50)
-
volume = 50
-
flags = OPENCONTAINER
-
-
var/label_text = ""
-
// the fucking asshole who designed this can go die in a fire - Iamgoofball
-
var/list/can_be_placed_into = list(
-
/obj/machinery/chem_master/,
-
/obj/machinery/chem_heater/,
-
/obj/machinery/chem_dispenser/,
-
/obj/machinery/reagentgrinder,
-
/obj/structure/table,
-
/obj/structure/closet,
-
/obj/structure/sink,
-
/obj/item/weapon/storage,
-
/obj/machinery/atmospherics/unary/cryo_cell,
-
/obj/machinery/dna_scannernew,
-
/obj/item/weapon/grenade/chem_grenade,
-
/obj/machinery/bot/medbot,
-
/obj/item/weapon/storage/secure/safe,
-
/obj/machinery/iv_drip,
-
/obj/machinery/disease2/incubator,
-
/obj/machinery/disposal,
-
/obj/machinery/apiary,
-
/mob/living/simple_animal/cow,
-
/mob/living/simple_animal/hostile/retaliate/goat,
-
/obj/machinery/computer/centrifuge,
-
/obj/machinery/sleeper,
-
/obj/machinery/smartfridge/,
-
// /obj/machinery/biogenerator,
-
/obj/machinery/portable_atmospherics/hydroponics,
-
/obj/machinery/constructable_frame)
-
-
New()
-
..()
-
base_name = name
-
-
examine()
-
set src in view()
-
..()
-
if (!(usr in view(2)) && usr!=src.loc) return
-
usr << "\blue It contains:"
-
if(reagents && reagents.reagent_list.len)
-
usr << "\blue [src.reagents.total_volume] units of liquid."
-
else
-
usr << "\blue Nothing."
-
if (!is_open_container())
-
usr << "\blue Airtight lid seals it completely."
-
-
attack_self()
-
..()
-
if (is_open_container())
-
usr << "You put the lid on \the [src]."
-
flags ^= OPENCONTAINER
-
else
-
usr << "You take the lid off \the [src]."
-
flags |= OPENCONTAINER
-
update_icon()
-
-
afterattack(obj/target, mob/user, proximity)
-
if(!proximity) return
-
if (!is_open_container())
-
return
-
-
for(var/type in src.can_be_placed_into)
-
if(istype(target, type))
-
return
-
-
if(ismob(target) && target.reagents && reagents.total_volume)
-
user << "\blue You splash the solution onto [target]."
-
-
var/mob/living/M = target
-
var/list/injected = list()
-
for(var/datum/reagent/R in src.reagents.reagent_list)
-
injected += R.name
-
var/contained = english_list(injected)
-
M.attack_log += text("\[[time_stamp()]\] Has been splashed with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]")
-
user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to splash [M.name] ([M.key]). Reagents: [contained]")
-
if(M.ckey)
-
msg_admin_attack("[user.name] ([user.ckey]) splashed [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)")
-
if(!iscarbon(user))
-
M.LAssailant = null
-
else
-
M.LAssailant = user
-
-
for(var/mob/O in viewers(world.view, user))
-
O.show_message(text("\red [] has been splashed with something by []!", target, user), 1)
-
src.reagents.reaction(target, TOUCH)
-
spawn(5) src.reagents.clear_reagents()
-
return
-
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
-
-
if(!target.reagents.total_volume && target.reagents)
-
user << "\red [target] is empty."
-
return
-
-
if(reagents.total_volume >= reagents.maximum_volume)
-
user << "\red [src] is full."
-
return
-
-
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
-
user << "\blue You fill [src] with [trans] units of the contents of [target]."
-
-
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
-
if(!reagents.total_volume)
-
user << "\red [src] is empty."
-
return
-
-
if(target.reagents.total_volume >= target.reagents.maximum_volume)
-
user << "\red [target] is full."
-
return
-
-
if(istype(target, /obj/item/weapon/reagent_containers))
-
var/obj/item/weapon/reagent_containers/RC = target
-
for(var/bad_reg in RC.banned_reagents)
-
if(reagents.has_reagent(bad_reg, 1)) //Message is a bit "Game-y" but I can't think up a better one.
-
user << "A chemical in [src] is far too dangerous to transfer to [RC]!"
-
return
-
-
// /vg/: Logging transfers of bad things
-
if(target.reagents_to_log.len)
-
var/list/badshit=list()
-
for(var/bad_reagent in target.reagents_to_log)
-
if(reagents.has_reagent(bad_reagent))
-
badshit += reagents_to_log[bad_reagent]
-
if(badshit.len)
-
var/hl="\red ([english_list(badshit)]) \black"
-
message_admins("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl] (JMP)")
-
log_game("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
-
-
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
-
user << "\blue You transfer [trans] units of the solution to [target]."
-
-
else if(istype(target, /obj/machinery/bunsen_burner))
-
return
-
-
else if(istype(target, /obj/machinery/radiocarbon_spectrometer))
-
return
-
-
else if(reagents.total_volume)
-
user << "\blue You splash the solution onto [target]."
-
src.reagents.reaction(target, TOUCH)
-
spawn(5) src.reagents.clear_reagents()
-
return
-
-
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
-
..()
-
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
-
var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
-
if(length(tmp_label) > 10)
-
user << "\red The label can be at most 10 characters long."
-
else
-
user << "\blue You set the label to \"[tmp_label]\"."
-
src.label_text = tmp_label
-
src.update_name_label()
-
-
proc/update_name_label()
-
if(src.label_text == "")
-
src.name = src.base_name
-
else
-
src.name = "[src.base_name] ([src.label_text])"
-
-
/obj/item/weapon/reagent_containers/glass/beaker
-
name = "beaker"
-
desc = "A beaker. Can hold up to 50 units."
-
icon = 'icons/obj/chemical.dmi'
-
icon_state = "beaker"
-
item_state = "beaker"
-
m_amt = 0
-
g_amt = 500
-
-
on_reagent_change()
-
update_icon()
-
-
pickup(mob/user)
-
..()
-
update_icon()
-
-
dropped(mob/user)
-
..()
-
update_icon()
-
-
attack_hand()
-
..()
-
update_icon()
-
-
update_icon()
-
overlays.Cut()
-
-
if(reagents.total_volume)
-
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
-
-
var/percent = round((reagents.total_volume / volume) * 100)
-
switch(percent)
-
if(0 to 9) filling.icon_state = "[icon_state]-10"
-
if(10 to 24) filling.icon_state = "[icon_state]10"
-
if(25 to 49) filling.icon_state = "[icon_state]25"
-
if(50 to 74) filling.icon_state = "[icon_state]50"
-
if(75 to 79) filling.icon_state = "[icon_state]75"
-
if(80 to 90) filling.icon_state = "[icon_state]80"
-
if(91 to INFINITY) filling.icon_state = "[icon_state]100"
-
-
filling.icon += mix_color_from_reagents(reagents.reagent_list)
-
overlays += filling
-
-
if (!is_open_container())
-
var/image/lid = image(icon, src, "lid_[initial(icon_state)]")
-
overlays += lid
-
-
/obj/item/weapon/reagent_containers/glass/beaker/large
-
name = "large beaker"
-
desc = "A large beaker. Can hold up to 100 units."
-
icon_state = "beakerlarge"
-
g_amt = 2500
-
volume = 100
-
amount_per_transfer_from_this = 10
-
possible_transfer_amounts = list(5,10,15,25,30,50,100)
-
flags = OPENCONTAINER
-
-
/obj/item/weapon/reagent_containers/glass/beaker/vial
-
name = "vial"
-
desc = "A small glass vial. Can hold up to 25 units."
-
icon_state = "vial"
-
g_amt = 250
-
volume = 25
-
amount_per_transfer_from_this = 10
-
possible_transfer_amounts = list(5,10,15,25)
-
flags = OPENCONTAINER
-
-
/obj/item/weapon/reagent_containers/glass/beaker/noreact
-
name = "cryostasis beaker"
-
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
-
icon_state = "beakernoreact"
-
g_amt = 500
-
volume = 50
-
amount_per_transfer_from_this = 10
-
flags = OPENCONTAINER | NOREACT
-
-
/obj/item/weapon/reagent_containers/glass/beaker/bluespace
-
name = "bluespace beaker"
-
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
-
icon_state = "beakerbluespace"
-
g_amt = 5000
-
volume = 300
-
amount_per_transfer_from_this = 10
-
possible_transfer_amounts = list(5,10,15,25,30,50,100,300)
-
flags = OPENCONTAINER
-
-
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
-
New()
-
..()
-
reagents.add_reagent("cryoxadone", 30)
-
update_icon()
-
-
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
-
New()
-
..()
-
reagents.add_reagent("sacid", 50)
-
update_icon()
-
-
/obj/item/weapon/reagent_containers/glass/beaker/slime
-
New()
-
..()
-
reagents.add_reagent("slimejelly", 50)
-
update_icon()
-
-
/obj/item/weapon/reagent_containers/glass/bucket
-
desc = "It's a bucket."
-
name = "bucket"
-
icon = 'icons/obj/janitor.dmi'
-
icon_state = "bucket"
-
item_state = "bucket"
-
m_amt = 200
-
g_amt = 0
-
w_class = 3.0
-
amount_per_transfer_from_this = 20
-
possible_transfer_amounts = list(5,10,15,25,30,50,80,100,120)
-
volume = 120
-
flags = OPENCONTAINER
-
-
attackby(var/obj/D, mob/user as mob, params)
-
if(isprox(D))
-
user << "You add [D] to [src]."
-
del(D)
-
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
-
user.unEquip(src)
-
qdel(src)
-
-
..()
-
-
/obj/item/weapon/reagent_containers/glass/beaker/vial
-
name = "vial"
-
desc = "Small glass vial. Looks fragile."
-
icon_state = "vial"
-
g_amt = 500
-
volume = 15
-
amount_per_transfer_from_this = 5
-
possible_transfer_amounts = list(1,5,15)
-
flags = OPENCONTAINER
-
-
/*
-
/obj/item/weapon/reagent_containers/glass/blender_jug
-
name = "Blender Jug"
-
desc = "A blender jug, part of a blender."
-
icon = 'icons/obj/kitchen.dmi'
-
icon_state = "blender_jug_e"
-
volume = 100
-
-
on_reagent_change()
-
switch(src.reagents.total_volume)
-
if(0)
-
icon_state = "blender_jug_e"
-
if(1 to 75)
-
icon_state = "blender_jug_h"
-
if(76 to 100)
-
icon_state = "blender_jug_f"
-
-
/obj/item/weapon/reagent_containers/glass/canister //not used apparantly
-
desc = "It's a canister. Mainly used for transporting fuel."
-
name = "canister"
-
icon = 'icons/obj/tank.dmi'
-
icon_state = "canister"
-
item_state = "canister"
-
m_amt = 300
-
g_amt = 0
-
w_class = 4.0
-
-
amount_per_transfer_from_this = 20
-
possible_transfer_amounts = list(10,20,30,60)
-
volume = 120
-
-
/obj/item/weapon/reagent_containers/glass/dispenser
-
name = "reagent glass"
-
desc = "A reagent glass."
-
icon = 'icons/obj/chemical.dmi'
-
icon_state = "beaker0"
-
amount_per_transfer_from_this = 10
-
flags = OPENCONTAINER
-
-
/obj/item/weapon/reagent_containers/glass/dispenser/surfactant
-
name = "reagent glass (surfactant)"
-
icon_state = "liquid"
-
-
New()
-
..()
-
reagents.add_reagent("fluorosurfactant", 20)
-
-
*/
-
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm
new file mode 100644
index 00000000000..e6fcbe43fe6
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/glass_containers.dm
@@ -0,0 +1,367 @@
+////////////////////////////////////////////////////////////////////////////////
+/// (Mixing)Glass.
+////////////////////////////////////////////////////////////////////////////////
+/obj/item/weapon/reagent_containers/glass
+ name = " "
+ var/base_name = " "
+ desc = " "
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "null"
+ item_state = "null"
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list(5,10,15,25,30,50)
+ volume = 50
+ flags = OPENCONTAINER
+
+ var/label_text = ""
+ // the fucking asshole who designed this can go die in a fire - Iamgoofball
+ var/list/can_be_placed_into = list(
+ /obj/machinery/chem_master/,
+ /obj/machinery/chem_heater/,
+ /obj/machinery/chem_dispenser/,
+ /obj/machinery/reagentgrinder,
+ /obj/structure/table,
+ /obj/structure/closet,
+ /obj/structure/sink,
+ /obj/item/weapon/storage,
+ /obj/machinery/atmospherics/unary/cryo_cell,
+ /obj/machinery/dna_scannernew,
+ /obj/item/weapon/grenade/chem_grenade,
+ /obj/machinery/bot/medbot,
+ /obj/item/weapon/storage/secure/safe,
+ /obj/machinery/iv_drip,
+ /obj/machinery/disease2/incubator,
+ /obj/machinery/disposal,
+ /obj/machinery/apiary,
+ /mob/living/simple_animal/cow,
+ /mob/living/simple_animal/hostile/retaliate/goat,
+ /obj/machinery/computer/centrifuge,
+ /obj/machinery/sleeper,
+ /obj/machinery/smartfridge/,
+// /obj/machinery/biogenerator,
+ /obj/machinery/portable_atmospherics/hydroponics,
+ /obj/machinery/constructable_frame)
+
+ New()
+ ..()
+ base_name = name
+
+ examine()
+ set src in view()
+ ..()
+ if (!(usr in view(2)) && usr!=src.loc) return
+ usr << "\blue It contains:"
+ if(reagents && reagents.reagent_list.len)
+ usr << "\blue [src.reagents.total_volume] units of liquid."
+ else
+ usr << "\blue Nothing."
+ if (!is_open_container())
+ usr << "\blue Airtight lid seals it completely."
+
+ attack_self()
+ ..()
+ if (is_open_container())
+ usr << "You put the lid on \the [src]."
+ flags ^= OPENCONTAINER
+ else
+ usr << "You take the lid off \the [src]."
+ flags |= OPENCONTAINER
+ update_icon()
+
+ afterattack(obj/target, mob/user, proximity)
+ if(!proximity) return
+ if (!is_open_container())
+ return
+
+ for(var/type in src.can_be_placed_into)
+ if(istype(target, type))
+ return
+
+ if(ismob(target) && target.reagents && reagents.total_volume)
+ user << "\blue You splash the solution onto [target]."
+
+ var/mob/living/M = target
+ var/list/injected = list()
+ for(var/datum/reagent/R in src.reagents.reagent_list)
+ injected += R.name
+ var/contained = english_list(injected)
+ M.attack_log += text("\[[time_stamp()]\] Has been splashed with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]")
+ user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to splash [M.name] ([M.key]). Reagents: [contained]")
+ if(M.ckey)
+ msg_admin_attack("[user.name] ([user.ckey]) splashed [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)")
+ if(!iscarbon(user))
+ M.LAssailant = null
+ else
+ M.LAssailant = user
+
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] has been splashed with something by []!", target, user), 1)
+ src.reagents.reaction(target, TOUCH)
+ spawn(5) src.reagents.clear_reagents()
+ return
+ else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
+
+ if(!target.reagents.total_volume && target.reagents)
+ user << "\red [target] is empty."
+ return
+
+ if(reagents.total_volume >= reagents.maximum_volume)
+ user << "\red [src] is full."
+ return
+
+ var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
+ user << "\blue You fill [src] with [trans] units of the contents of [target]."
+
+ else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
+ if(!reagents.total_volume)
+ user << "\red [src] is empty."
+ return
+
+ if(target.reagents.total_volume >= target.reagents.maximum_volume)
+ user << "\red [target] is full."
+ return
+
+ if(istype(target, /obj/item/weapon/reagent_containers))
+ var/obj/item/weapon/reagent_containers/RC = target
+ for(var/bad_reg in RC.banned_reagents)
+ if(reagents.has_reagent(bad_reg, 1)) //Message is a bit "Game-y" but I can't think up a better one.
+ user << "A chemical in [src] is far too dangerous to transfer to [RC]!"
+ return
+
+ // /vg/: Logging transfers of bad things
+ if(target.reagents_to_log.len)
+ var/list/badshit=list()
+ for(var/bad_reagent in target.reagents_to_log)
+ if(reagents.has_reagent(bad_reagent))
+ badshit += reagents_to_log[bad_reagent]
+ if(badshit.len)
+ var/hl="\red ([english_list(badshit)]) \black"
+ message_admins("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl] (JMP)")
+ log_game("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
+
+ var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
+ user << "\blue You transfer [trans] units of the solution to [target]."
+
+ else if(istype(target, /obj/machinery/bunsen_burner))
+ return
+
+ else if(istype(target, /obj/machinery/radiocarbon_spectrometer))
+ return
+
+ else if(reagents.total_volume)
+ user << "\blue You splash the solution onto [target]."
+ src.reagents.reaction(target, TOUCH)
+ spawn(5) src.reagents.clear_reagents()
+ return
+
+
+ attackby(var/obj/item/I, mob/user as mob, params)
+ if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird
+ return
+ if(is_hot(I))
+ if(src.reagents)
+ src.reagents.chem_temp += 15
+ user << "You heat [src] with [I]."
+ src.reagents.handle_reactions()
+ if(istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/device/flashlight/pen))
+ var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
+ if(length(tmp_label) > 10)
+ user << "\red The label can be at most 10 characters long."
+ else
+ user << "\blue You set the label to \"[tmp_label]\"."
+ src.label_text = tmp_label
+ src.update_name_label()
+
+
+ proc/update_name_label()
+ if(src.label_text == "")
+ src.name = src.base_name
+ else
+ src.name = "[src.base_name] ([src.label_text])"
+
+/obj/item/weapon/reagent_containers/glass/beaker
+ name = "beaker"
+ desc = "A beaker. Can hold up to 50 units."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "beaker"
+ item_state = "beaker"
+ m_amt = 0
+ g_amt = 500
+
+ on_reagent_change()
+ update_icon()
+
+ pickup(mob/user)
+ ..()
+ update_icon()
+
+ dropped(mob/user)
+ ..()
+ update_icon()
+
+ attack_hand()
+ ..()
+ update_icon()
+
+ update_icon()
+ overlays.Cut()
+
+ if(reagents.total_volume)
+ var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
+
+ var/percent = round((reagents.total_volume / volume) * 100)
+ switch(percent)
+ if(0 to 9) filling.icon_state = "[icon_state]-10"
+ if(10 to 24) filling.icon_state = "[icon_state]10"
+ if(25 to 49) filling.icon_state = "[icon_state]25"
+ if(50 to 74) filling.icon_state = "[icon_state]50"
+ if(75 to 79) filling.icon_state = "[icon_state]75"
+ if(80 to 90) filling.icon_state = "[icon_state]80"
+ if(91 to INFINITY) filling.icon_state = "[icon_state]100"
+
+ filling.icon += mix_color_from_reagents(reagents.reagent_list)
+ overlays += filling
+
+ if (!is_open_container())
+ var/image/lid = image(icon, src, "lid_[initial(icon_state)]")
+ overlays += lid
+
+/obj/item/weapon/reagent_containers/glass/beaker/large
+ name = "large beaker"
+ desc = "A large beaker. Can hold up to 100 units."
+ icon_state = "beakerlarge"
+ g_amt = 2500
+ volume = 100
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list(5,10,15,25,30,50,100)
+ flags = OPENCONTAINER
+
+/obj/item/weapon/reagent_containers/glass/beaker/vial
+ name = "vial"
+ desc = "A small glass vial. Can hold up to 25 units."
+ icon_state = "vial"
+ g_amt = 250
+ volume = 25
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list(5,10,15,25)
+ flags = OPENCONTAINER
+
+/obj/item/weapon/reagent_containers/glass/beaker/noreact
+ name = "cryostasis beaker"
+ desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
+ icon_state = "beakernoreact"
+ g_amt = 500
+ volume = 50
+ amount_per_transfer_from_this = 10
+ flags = OPENCONTAINER | NOREACT
+
+/obj/item/weapon/reagent_containers/glass/beaker/bluespace
+ name = "bluespace beaker"
+ desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
+ icon_state = "beakerbluespace"
+ g_amt = 5000
+ volume = 300
+ amount_per_transfer_from_this = 10
+ possible_transfer_amounts = list(5,10,15,25,30,50,100,300)
+ flags = OPENCONTAINER
+
+/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
+ New()
+ ..()
+ reagents.add_reagent("cryoxadone", 30)
+ update_icon()
+
+/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
+ New()
+ ..()
+ reagents.add_reagent("sacid", 50)
+ update_icon()
+
+/obj/item/weapon/reagent_containers/glass/beaker/slime
+ New()
+ ..()
+ reagents.add_reagent("slimejelly", 50)
+ update_icon()
+
+/obj/item/weapon/reagent_containers/glass/bucket
+ desc = "It's a bucket."
+ name = "bucket"
+ icon = 'icons/obj/janitor.dmi'
+ icon_state = "bucket"
+ item_state = "bucket"
+ m_amt = 200
+ g_amt = 0
+ w_class = 3.0
+ amount_per_transfer_from_this = 20
+ possible_transfer_amounts = list(5,10,15,25,30,50,80,100,120)
+ volume = 120
+ flags = OPENCONTAINER
+
+ attackby(var/obj/D, mob/user as mob, params)
+ if(isprox(D))
+ user << "You add [D] to [src]."
+ del(D)
+ user.put_in_hands(new /obj/item/weapon/bucket_sensor)
+ user.unEquip(src)
+ qdel(src)
+ else
+ ..()
+
+/obj/item/weapon/reagent_containers/glass/beaker/vial
+ name = "vial"
+ desc = "Small glass vial. Looks fragile."
+ icon_state = "vial"
+ g_amt = 500
+ volume = 15
+ amount_per_transfer_from_this = 5
+ possible_transfer_amounts = list(1,5,15)
+ flags = OPENCONTAINER
+
+/*
+/obj/item/weapon/reagent_containers/glass/blender_jug
+ name = "Blender Jug"
+ desc = "A blender jug, part of a blender."
+ icon = 'icons/obj/kitchen.dmi'
+ icon_state = "blender_jug_e"
+ volume = 100
+
+ on_reagent_change()
+ switch(src.reagents.total_volume)
+ if(0)
+ icon_state = "blender_jug_e"
+ if(1 to 75)
+ icon_state = "blender_jug_h"
+ if(76 to 100)
+ icon_state = "blender_jug_f"
+
+/obj/item/weapon/reagent_containers/glass/canister //not used apparantly
+ desc = "It's a canister. Mainly used for transporting fuel."
+ name = "canister"
+ icon = 'icons/obj/tank.dmi'
+ icon_state = "canister"
+ item_state = "canister"
+ m_amt = 300
+ g_amt = 0
+ w_class = 4.0
+
+ amount_per_transfer_from_this = 20
+ possible_transfer_amounts = list(10,20,30,60)
+ volume = 120
+
+/obj/item/weapon/reagent_containers/glass/dispenser
+ name = "reagent glass"
+ desc = "A reagent glass."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "beaker0"
+ amount_per_transfer_from_this = 10
+ flags = OPENCONTAINER
+
+/obj/item/weapon/reagent_containers/glass/dispenser/surfactant
+ name = "reagent glass (surfactant)"
+ icon_state = "liquid"
+
+ New()
+ ..()
+ reagents.add_reagent("fluorosurfactant", 20)
+
+*/
diff --git a/paradise.dme b/paradise.dme
index 56ca0c6a5d3..ffd5f6ee77b 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1487,7 +1487,7 @@
#include "code\modules\reagents\reagent_containers\dropper.dm"
#include "code\modules\reagents\reagent_containers\drugs.dm"
#include "code\modules\reagents\reagent_containers\food.dm"
-#include "code\modules\reagents\reagent_containers\glass.dm"
+#include "code\modules\reagents\reagent_containers\glass_containers.dm"
#include "code\modules\reagents\reagent_containers\hypospray.dm"
#include "code\modules\reagents\reagent_containers\pill.dm"
#include "code\modules\reagents\reagent_containers\robodropper.dm"