This commit is contained in:
kevinz000
2017-08-29 09:59:57 -07:00
1535 changed files with 71790 additions and 86062 deletions
+6 -6
View File
@@ -11,12 +11,12 @@
var/last_tick = 1
var/addiction_tick = 1
var/list/datum/reagent/addiction_list = new/list()
var/flags
var/flags_1
/datum/reagents/New(maximum=100)
maximum_volume = maximum
if(!(flags & REAGENT_NOREACT))
if(!(flags_1 & REAGENT_NOREACT))
START_PROCESSING(SSobj, src)
//I dislike having these here but map-objects are initialised before world/New() is called. >_>
@@ -290,7 +290,7 @@
/datum/reagents/process()
var/list/cached_reagents = reagent_list
if(flags & REAGENT_NOREACT)
if(flags_1 & REAGENT_NOREACT)
STOP_PROCESSING(SSobj, src)
return
@@ -302,11 +302,11 @@
if(react)
// Order is important, process() can remove from processing if
// the flag is present
flags &= ~(REAGENT_NOREACT)
flags_1 &= ~(REAGENT_NOREACT)
START_PROCESSING(SSobj, src)
else
STOP_PROCESSING(SSobj, src)
flags |= REAGENT_NOREACT
flags_1 |= REAGENT_NOREACT
/datum/reagents/proc/conditional_update_move(atom/A, Running = 0)
var/list/cached_reagents = reagent_list
@@ -326,7 +326,7 @@
var/list/cached_reagents = reagent_list
var/list/cached_reactions = GLOB.chemical_reactions_list
var/datum/cached_my_atom = my_atom
if(flags & REAGENT_NOREACT)
if(flags_1 & REAGENT_NOREACT)
return //Yup, no reactions here. No siree.
var/reaction_occurred = 0
@@ -9,14 +9,14 @@
idle_power_usage = 40
interact_offline = 1
resistance_flags = FIRE_PROOF | ACID_PROOF
var/cell_type = /obj/item/weapon/stock_parts/cell/high
var/obj/item/weapon/stock_parts/cell/cell
var/cell_type = /obj/item/stock_parts/cell/high
var/obj/item/stock_parts/cell/cell
var/powerefficiency = 0.01
var/amount = 30
var/recharged = 0
var/recharge_delay = 5
var/mutable_appearance/beaker_overlay
var/obj/item/weapon/reagent_containers/beaker = null
var/obj/item/reagent_containers/beaker = null
var/list/dispensable_reagents = list(
"hydrogen",
"lithium",
@@ -178,8 +178,8 @@
if(default_unfasten_wrench(user, I))
return
if(istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER))
var/obj/item/weapon/reagent_containers/B = I
if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
var/obj/item/reagent_containers/B = I
. = 1 //no afterattack
if(beaker)
to_chat(user, "<span class='warning'>A container is already loaded into the machine!</span>")
@@ -195,7 +195,7 @@
beaker_overlay = beaker_overlay || mutable_appearance(icon, "disp_beaker")
beaker_overlay.pixel_x = rand(-10, 5)//randomize beaker overlay position.
add_overlay(beaker_overlay)
else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/weapon/card/emag))
else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/card/emag))
to_chat(user, "<span class='warning'>You can't load \the [I] into the machine!</span>")
return ..()
else
@@ -229,6 +229,7 @@
amount = 5
recharge_delay = 30
dispensable_reagents = list()
circuit = /obj/item/circuitboard/machine/chem_dispenser
var/list/dispensable_reagent_tiers = list(
list(
"hydrogen",
@@ -272,34 +273,17 @@
)
)
/obj/machinery/chem_dispenser/constructable/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_dispenser(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/chem_dispenser
name = "Portable Chem Dispenser (Machine Board)"
build_path = /obj/machinery/chem_dispenser/constructable
origin_tech = "materials=4;programming=4;plasmatech=4;biotech=3"
req_components = list(
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/cell = 1)
def_components = list(/obj/item/weapon/stock_parts/cell = /obj/item/weapon/stock_parts/cell/high)
/obj/machinery/chem_dispenser/constructable/RefreshParts()
var/time = 0
var/i
for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
for(var/obj/item/stock_parts/cell/P in component_parts)
cell = P
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
time += M.rating
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
for(var/obj/item/stock_parts/capacitor/C in component_parts)
time += C.rating
recharge_delay /= time/2 //delay between recharges, double the usual time on lowest 50% less than usual on highest
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
for(var/obj/item/stock_parts/manipulator/M in component_parts)
for(i=1, i<=M.rating, i++)
dispensable_reagents |= dispensable_reagent_tiers[i]
dispensable_reagents = sortList(dispensable_reagents)
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm (rejected hunks)
@@ -178,7 +178,7 @@
if(default_unfasten_wrench(user, I))
return
- if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER))
+ if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
var/obj/item/reagent_containers/B = I
. = 1 //no afterattack
if(beaker)
@@ -7,27 +7,15 @@
use_power = IDLE_POWER_USE
idle_power_usage = 40
resistance_flags = FIRE_PROOF | ACID_PROOF
var/obj/item/weapon/reagent_containers/beaker = null
circuit = /obj/item/circuitboard/machine/chem_heater
var/obj/item/reagent_containers/beaker = null
var/target_temperature = 300
var/heater_coefficient = 0.10
var/on = FALSE
/obj/machinery/chem_heater/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_heater(null)
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/chem_heater
name = "Chemical Heater (Machine Board)"
build_path = /obj/machinery/chem_heater
origin_tech = "programming=2;engineering=2;biotech=2"
req_components = list(
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/machinery/chem_heater/RefreshParts()
heater_coefficient = 0.10
for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts)
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
heater_coefficient *= M.rating
/obj/machinery/chem_heater/process()
@@ -54,7 +42,7 @@
if(default_deconstruction_crowbar(I))
return
if(istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER))
if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
. = 1 //no afterattack
if(beaker)
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm (rejected hunks)
@@ -42,7 +42,7 @@
if(default_deconstruction_crowbar(I))
return
- if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER))
+ if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
. = 1 //no afterattack
if(beaker)
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
@@ -3,54 +3,29 @@
desc = "Used to separate chemicals and distribute them in a variety of forms."
density = TRUE
anchored = TRUE
layer = BELOW_OBJ_LAYER
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
use_power = IDLE_POWER_USE
idle_power_usage = 20
resistance_flags = FIRE_PROOF | ACID_PROOF
var/obj/item/weapon/reagent_containers/beaker = null
var/obj/item/weapon/storage/pill_bottle/bottle = null
circuit = /obj/item/circuitboard/machine/chem_master
var/obj/item/reagent_containers/beaker = null
var/obj/item/storage/pill_bottle/bottle = null
var/mode = 1
var/condi = 0
var/screen = "home"
var/analyzeVars[0]
var/useramount = 30 // Last used amount
layer = BELOW_OBJ_LAYER
/obj/machinery/chem_master/Initialize()
create_reagents(100)
add_overlay("waitlight")
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/chem_master(null)
B.apply_default_parts(src)
. = ..()
/obj/item/weapon/circuitboard/machine/chem_master
name = "ChemMaster 3000 (Machine Board)"
build_path = /obj/machinery/chem_master
origin_tech = "materials=3;programming=2;biotech=3"
req_components = list(
/obj/item/weapon/reagent_containers/glass/beaker = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/machine/chem_master/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
var/new_name = "ChemMaster"
var/new_path = /obj/machinery/chem_master
if(build_path == /obj/machinery/chem_master)
new_name = "CondiMaster"
new_path = /obj/machinery/chem_master/condimaster
build_path = new_path
name = "[new_name] 3000 (Machine Board)"
to_chat(user, "<span class='notice'>You change the circuit board setting to \"[new_name]\".</span>")
else
return ..()
/obj/machinery/chem_master/RefreshParts()
reagents.maximum_volume = 0
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in component_parts)
for(var/obj/item/reagent_containers/glass/beaker/B in component_parts)
reagents.maximum_volume += B.reagents.maximum_volume
/obj/machinery/chem_master/ex_act(severity, target)
@@ -104,7 +79,7 @@
if(default_unfasten_wrench(user, I))
return
if(istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER))
if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
. = 1 // no afterattack
if(panel_open)
to_chat(user, "<span class='warning'>You can't use the [src.name] while its panel is opened!</span>")
@@ -121,7 +96,7 @@
src.updateUsrDialog()
icon_state = "mixer1"
else if(!condi && istype(I, /obj/item/weapon/storage/pill_bottle))
else if(!condi && istype(I, /obj/item/storage/pill_bottle))
if(bottle)
to_chat(user, "<span class='warning'>A pill bottle is already loaded into the machine!</span>")
return
@@ -236,13 +211,13 @@
var/name = stripped_input(usr,"Name:","Name your pill!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, be_close=TRUE))
return
var/obj/item/weapon/reagent_containers/pill/P
var/obj/item/reagent_containers/pill/P
for(var/i = 0; i < amount; i++)
if(bottle && bottle.contents.len < bottle.storage_slots)
P = new/obj/item/weapon/reagent_containers/pill(bottle)
P = new/obj/item/reagent_containers/pill(bottle)
else
P = new/obj/item/weapon/reagent_containers/pill(src.loc)
P = new/obj/item/reagent_containers/pill(src.loc)
P.name = trim("[name] pill")
P.pixel_x = rand(-7, 7) //random position
P.pixel_y = rand(-7, 7)
@@ -251,7 +226,7 @@
var/name = stripped_input(usr, "Name:", "Name your pack!", reagents.get_master_reagent_name(), MAX_NAME_LEN)
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, be_close=TRUE))
return
var/obj/item/weapon/reagent_containers/food/condiment/pack/P = new/obj/item/weapon/reagent_containers/food/condiment/pack(src.loc)
var/obj/item/reagent_containers/food/condiment/pack/P = new/obj/item/reagent_containers/food/condiment/pack(src.loc)
P.originalname = name
P.name = trim("[name] pack")
@@ -273,10 +248,10 @@
var/name = stripped_input(usr,"Name:","Name your patch!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, be_close=TRUE))
return
var/obj/item/weapon/reagent_containers/pill/P
var/obj/item/reagent_containers/pill/P
for(var/i = 0; i < amount; i++)
P = new/obj/item/weapon/reagent_containers/pill/patch(src.loc)
P = new/obj/item/reagent_containers/pill/patch(src.loc)
P.name = trim("[name] patch")
P.pixel_x = rand(-7, 7) //random position
P.pixel_y = rand(-7, 7)
@@ -292,7 +267,7 @@
var/name = stripped_input(usr, "Name:","Name your bottle!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, be_close=TRUE))
return
var/obj/item/weapon/reagent_containers/food/condiment/P = new(src.loc)
var/obj/item/reagent_containers/food/condiment/P = new(src.loc)
P.originalname = name
P.name = trim("[name] bottle")
reagents.trans_to(P, P.volume)
@@ -306,16 +281,16 @@
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, be_close=TRUE))
return
var/obj/item/weapon/reagent_containers/glass/bottle/P
var/obj/item/reagent_containers/glass/bottle/P
for(var/i = 0; i < amount_full; i++)
P = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
P = new/obj/item/reagent_containers/glass/bottle(src.loc)
P.pixel_x = rand(-7, 7) //random position
P.pixel_y = rand(-7, 7)
P.name = trim("[name] bottle")
reagents.trans_to(P, 30)
if(vol_part)
P = new/obj/item/weapon/reagent_containers/glass/bottle(src.loc)
P = new/obj/item/reagent_containers/glass/bottle(src.loc)
P.name = trim("[name] bottle")
reagents.trans_to(P, vol_part)
. = TRUE
@@ -360,7 +335,3 @@
name = "CondiMaster 3000"
desc = "Used to create condiments and other cooking supplies."
condi = 1
/obj/item/weapon/circuitboard/machine/chem_master/condi
name = "CondiMaster 3000 (Machine Board)"
build_path = /obj/machinery/chem_master/condimaster
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm (rejected hunks)
@@ -79,7 +79,7 @@
if(default_unfasten_wrench(user, I))
return
- if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER))
+ if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
. = 1 // no afterattack
if(panel_open)
to_chat(user, "<span class='warning'>You can't use the [src.name] while its panel is opened!</span>")
@@ -8,14 +8,14 @@
anchored = TRUE
icon = 'icons/obj/chemical.dmi'
icon_state = "mixer0"
circuit = /obj/item/weapon/circuitboard/computer/pandemic
circuit = /obj/item/circuitboard/computer/pandemic
use_power = TRUE
idle_power_usage = 20
resistance_flags = ACID_PROOF
var/wait
var/mode = MAIN_SCREEN
var/datum/symptom/selected_symptom
var/obj/item/weapon/reagent_containers/beaker
var/obj/item/reagent_containers/beaker
/obj/machinery/computer/pandemic/Initialize()
. = ..()
@@ -183,7 +183,7 @@
var/id = get_virus_id_by_index(text2num(params["index"]))
var/datum/disease/advance/A = new(FALSE, SSdisease.archive_diseases[id])
var/list/data = list("viruses" = list(A))
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(get_turf(src))
var/obj/item/reagent_containers/glass/bottle/B = new(get_turf(src))
B.name = "[A.name] culture bottle"
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
B.reagents.add_reagent("blood", 20, data)
@@ -194,7 +194,7 @@
if("create_vaccine_bottle")
var/index = text2num(params["index"])
var/datum/disease/D = SSdisease.archive_diseases[get_virus_id_by_index(index)]
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(get_turf(src))
var/obj/item/reagent_containers/glass/bottle/B = new(get_turf(src))
B.name = "[D.name] vaccine bottle"
B.reagents.add_reagent("vaccine", 15, list(index))
wait = TRUE
@@ -216,19 +216,18 @@
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER))
if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
. = TRUE //no afterattack
if(stat & (NOPOWER|BROKEN))
return
if(beaker)
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
to_chat(user, "<span class='warning'>A container is already loaded into [src]!</span>")
return
if(!user.drop_item())
if(!user.transferItemToLoc(I, src))
return
beaker = I
beaker.forceMove(src)
to_chat(user, "<span class='notice'>You add the beaker to the machine.</span>")
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
update_icon()
else
return ..()
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm (rejected hunks)
@@ -177,7 +177,7 @@
. = TRUE
/obj/machinery/computer/pandemic/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER))
+ if(istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1))
. = TRUE //no afterattack
if(stat & (NOPOWER|BROKEN))
return
@@ -11,7 +11,7 @@
pass_flags = PASSTABLE
resistance_flags = ACID_PROOF
var/operating = FALSE
var/obj/item/weapon/reagent_containers/beaker = null
var/obj/item/reagent_containers/beaker = null
var/limit = 10
var/static/list/blend_items = list(
@@ -27,64 +27,64 @@
/obj/item/stack/sheet/mineral/silver = list("silver" = 20),
/obj/item/stack/sheet/mineral/gold = list("gold" = 20),
/obj/item/stack/sheet/bluespace_crystal = list("bluespace" = 20),
/obj/item/weapon/ore/bluespace_crystal = list("bluespace" = 20),
/obj/item/weapon/grown/nettle/basic = list("sacid" = 0),
/obj/item/weapon/grown/nettle/death = list("facid" = 0, "sacid" = 0),
/obj/item/weapon/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0),
/obj/item/ore/bluespace_crystal = list("bluespace" = 20),
/obj/item/grown/nettle/basic = list("sacid" = 0),
/obj/item/grown/nettle/death = list("facid" = 0, "sacid" = 0),
/obj/item/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0),
//Blender Stuff
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
/obj/item/weapon/reagent_containers/food/snacks/grown/oat = list("flour" = -5),
/obj/item/weapon/reagent_containers/food/snacks/grown/rice = list("rice" = -5),
/obj/item/weapon/reagent_containers/food/snacks/donut = list("sprinkles" = -2, "sugar" = 1),
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries = list("bluecherryjelly" = 0),
/obj/item/weapon/reagent_containers/food/snacks/egg = list("eggyolk" = -5),
/obj/item/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
/obj/item/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
/obj/item/reagent_containers/food/snacks/grown/wheat = list("flour" = -5),
/obj/item/reagent_containers/food/snacks/grown/oat = list("flour" = -5),
/obj/item/reagent_containers/food/snacks/grown/rice = list("rice" = -5),
/obj/item/reagent_containers/food/snacks/donut = list("sprinkles" = -2, "sugar" = 1),
/obj/item/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
/obj/item/reagent_containers/food/snacks/grown/bluecherries = list("bluecherryjelly" = 0),
/obj/item/reagent_containers/food/snacks/egg = list("eggyolk" = -5),
//Grinder stuff, but only if dry
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0),
/obj/item/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
/obj/item/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
/obj/item/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
/obj/item/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0),
//All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.!
/obj/item/slime_extract = list(),
/obj/item/weapon/reagent_containers/pill = list(),
/obj/item/weapon/reagent_containers/food = list(),
/obj/item/weapon/reagent_containers/honeycomb = list(),
/obj/item/reagent_containers/pill = list(),
/obj/item/reagent_containers/food = list(),
/obj/item/reagent_containers/honeycomb = list(),
/obj/item/toy/crayon = list())
var/static/list/juice_items = list(
//Juicer Stuff
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/potato = list("potato" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = list("lemonjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = list("orangejuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime = list("limejuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon = list("watermelonjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison = list("poisonberryjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = list("pumpkinjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = list("blumpkinjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/apple = list("applejuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0))
/obj/item/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0),
/obj/item/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/carrot = list("carrotjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/berries = list("berryjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
/obj/item/reagent_containers/food/snacks/grown/potato = list("potato" = 0),
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon = list("lemonjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = list("orangejuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/citrus/lime = list("limejuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/watermelon = list("watermelonjuice" = 0),
/obj/item/reagent_containers/food/snacks/watermelonslice = list("watermelonjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/berries/poison = list("poisonberryjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/pumpkin = list("pumpkinjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/blumpkin = list("blumpkinjuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/apple = list("applejuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
/obj/item/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0))
var/static/list/dried_items = list(
//Grinder stuff, but only if dry,
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0))
/obj/item/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
/obj/item/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
/obj/item/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
/obj/item/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0))
var/list/holdingitems = list()
/obj/machinery/reagentgrinder/Initialize()
. = ..()
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
beaker = new /obj/item/reagent_containers/glass/beaker/large(src)
beaker.desc += " May contain blended dust. Don't breathe this in!"
/obj/machinery/reagentgrinder/Destroy()
@@ -116,7 +116,7 @@
if(default_unfasten_wrench(user, I))
return
if (istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER) )
if (istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1) )
if (!beaker)
if(!user.drop_item())
return 1
@@ -129,8 +129,8 @@
return 1 //no afterattack
if(is_type_in_list(I, dried_items))
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown))
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = I
if(istype(I, /obj/item/reagent_containers/food/snacks/grown))
var/obj/item/reagent_containers/food/snacks/grown/G = I
if(!G.dry)
to_chat(user, "<span class='warning'>You must dry that first!</span>")
return 1
@@ -140,9 +140,9 @@
return 1
//Fill machine with a bag!
if(istype(I, /obj/item/weapon/storage/bag))
var/obj/item/weapon/storage/bag/B = I
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in B.contents)
if(istype(I, /obj/item/storage/bag))
var/obj/item/storage/bag/B = I
for (var/obj/item/reagent_containers/food/snacks/grown/G in B.contents)
B.remove_from_storage(G, src)
holdingitems += G
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
@@ -272,7 +272,7 @@
holdingitems = list()
updateUsrDialog()
/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/weapon/reagent_containers/O)
/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/reagent_containers/O)
for (var/i in blend_items)
if(istype(O, i))
return 1
@@ -283,17 +283,17 @@
if (istype(O, i))
return blend_items[i]
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(obj/item/reagent_containers/food/snacks/O)
for(var/i in blend_items)
if(istype(O, i))
return blend_items[i]
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(obj/item/reagent_containers/food/snacks/O)
for(var/i in juice_items)
if(istype(O, i))
return juice_items[i]
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/weapon/grown/O)
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/grown/O)
if (!istype(O) || !O.seed)
return 5
else if (O.seed.potency == -1)
@@ -301,7 +301,7 @@
else
return round(O.seed.potency)
/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/weapon/reagent_containers/food/snacks/grown/O)
/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/reagent_containers/food/snacks/grown/O)
if (!istype(O) || !O.seed)
return 5
else if (O.seed.potency == -1)
@@ -330,7 +330,7 @@
updateUsrDialog()
//Snacks
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
for (var/obj/item/reagent_containers/food/snacks/O in holdingitems)
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
break
@@ -368,7 +368,7 @@
updateUsrDialog()
//Snacks and Plants
for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems)
for (var/obj/item/reagent_containers/food/snacks/O in holdingitems)
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
break
@@ -415,7 +415,7 @@
remove_object(O)
break
//Plants
for (var/obj/item/weapon/grown/O in holdingitems)
for (var/obj/item/grown/O in holdingitems)
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
break
var/allowed = get_allowed_by_id(O)
@@ -445,7 +445,7 @@
remove_object(O)
//Everything else - Transfers reagents from it into beaker
for (var/obj/item/weapon/reagent_containers/O in holdingitems)
for (var/obj/item/reagent_containers/O in holdingitems)
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
break
var/amount = O.reagents.total_volume
@@ -486,7 +486,7 @@
//Recipe to make Butter
while(beaker.reagents.get_reagent_amount("milk") >= 15)
beaker.reagents.remove_reagent("milk", 15)
new /obj/item/weapon/reagent_containers/food/snacks/butter(src.loc)
new /obj/item/reagent_containers/food/snacks/butter(src.loc)
//Recipe to make Mayonnaise
if (beaker.reagents.has_reagent("eggyolk"))
var/amount = beaker.reagents.get_reagent_amount("eggyolk")
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm (rejected hunks)
@@ -116,7 +116,7 @@
if(default_unfasten_wrench(user, I))
return
- if (istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER) )
+ if (istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER_1) )
if (!beaker)
if(!user.drop_item())
return 1
@@ -43,13 +43,13 @@ All effects don't start immediately, but rather get worse over time; the rate is
return ..() || .
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume)
if(istype(O, /obj/item/weapon/paper))
var/obj/item/weapon/paper/paperaffected = O
if(istype(O, /obj/item/paper))
var/obj/item/paper/paperaffected = O
paperaffected.clearpaper()
to_chat(usr, "<span class='notice'>[paperaffected]'s ink washes away.</span>")
if(istype(O, /obj/item/weapon/book))
if(istype(O, /obj/item/book))
if(reac_volume >= 5)
var/obj/item/weapon/book/affectedbook = O
var/obj/item/book/affectedbook = O
affectedbook.dat = null
to_chat(usr, "<span class='notice'>Through thorough application, you wash away [affectedbook]'s writing.</span>")
else
@@ -1054,7 +1054,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/M)
for(var/obj/item/weapon/ore/O in orange(3, M))
for(var/obj/item/ore/O in orange(3, M))
step_towards(O, get_turf(M))
return ..()
@@ -52,6 +52,7 @@
M.SetUnconscious(0, 0)
M.silent = 0
M.dizziness = 0
M.disgust = 0
M.drowsyness = 0
M.stuttering = 0
M.slurring = 0
@@ -155,8 +155,8 @@
O.extinguish()
O.acid_level = 0
// Monkey cube
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube))
var/obj/item/reagent_containers/food/snacks/monkeycube/cube = O
cube.Expand()
// Dehydrated carp
@@ -106,6 +106,11 @@
metabolization_rate = 0.05
taste_description = "salt"
/datum/reagent/blackpowder/on_mob_life(mob/living/M)
..()
if(isplasmaman(M))
M.hallucination += 10
/datum/reagent/blackpowder/on_ex_act()
var/location = get_turf(holder.my_atom)
var/datum/effect_system/reagents_explosion/e = new()
@@ -85,7 +85,7 @@
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/soap/homemade(location)
new /obj/item/soap/homemade(location)
/datum/chemical_reaction/candlefication
name = "Candlefication"
@@ -108,7 +108,7 @@
/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatproduct(location)
new /obj/item/reagent_containers/food/snacks/meat/slab/meatproduct(location)
return
/datum/chemical_reaction/carbondioxide
@@ -42,7 +42,7 @@
/datum/chemical_reaction/slime/slimemonkey/on_reaction(datum/reagents/holder)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(holder.my_atom))
new /obj/item/reagent_containers/food/snacks/monkeycube(get_turf(holder.my_atom))
..()
//Green
@@ -157,26 +157,26 @@
..()
/datum/chemical_reaction/slime/slimebork/proc/getborks()
var/list/blocked = list(/obj/item/weapon/reagent_containers/food/snacks,
/obj/item/weapon/reagent_containers/food/snacks/store/bread,
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
/obj/item/weapon/reagent_containers/food/snacks/store/cake,
/obj/item/weapon/reagent_containers/food/snacks/cakeslice,
/obj/item/weapon/reagent_containers/food/snacks/store,
/obj/item/weapon/reagent_containers/food/snacks/pie,
/obj/item/weapon/reagent_containers/food/snacks/kebab,
/obj/item/weapon/reagent_containers/food/snacks/pizza,
/obj/item/weapon/reagent_containers/food/snacks/pizzaslice,
/obj/item/weapon/reagent_containers/food/snacks/salad,
/obj/item/weapon/reagent_containers/food/snacks/meat,
/obj/item/weapon/reagent_containers/food/snacks/meat/slab,
/obj/item/weapon/reagent_containers/food/snacks/soup,
/obj/item/weapon/reagent_containers/food/snacks/grown,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom,
var/list/blocked = list(/obj/item/reagent_containers/food/snacks,
/obj/item/reagent_containers/food/snacks/store/bread,
/obj/item/reagent_containers/food/snacks/breadslice,
/obj/item/reagent_containers/food/snacks/store/cake,
/obj/item/reagent_containers/food/snacks/cakeslice,
/obj/item/reagent_containers/food/snacks/store,
/obj/item/reagent_containers/food/snacks/pie,
/obj/item/reagent_containers/food/snacks/kebab,
/obj/item/reagent_containers/food/snacks/pizza,
/obj/item/reagent_containers/food/snacks/pizzaslice,
/obj/item/reagent_containers/food/snacks/salad,
/obj/item/reagent_containers/food/snacks/meat,
/obj/item/reagent_containers/food/snacks/meat/slab,
/obj/item/reagent_containers/food/snacks/soup,
/obj/item/reagent_containers/food/snacks/grown,
/obj/item/reagent_containers/food/snacks/grown/mushroom,
)
blocked |= typesof(/obj/item/weapon/reagent_containers/food/snacks/customizable)
blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable)
return typesof(/obj/item/weapon/reagent_containers/food/snacks) - blocked
return typesof(/obj/item/reagent_containers/food/snacks) - blocked
/datum/chemical_reaction/slime/slimebork/drinks
name = "Slime Bork 2"
@@ -184,7 +184,7 @@
required_reagents = list("water" = 1)
/datum/chemical_reaction/slime/slimebork/drinks/getborks()
return subtypesof(/obj/item/weapon/reagent_containers/food/drinks)
return subtypesof(/obj/item/reagent_containers/food/drinks)
//Blue
/datum/chemical_reaction/slime/slimefrost
@@ -310,7 +310,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, created_volume)
new /obj/item/weapon/stock_parts/cell/high/slime(get_turf(holder.my_atom))
new /obj/item/stock_parts/cell/high/slime(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/slimeglow
@@ -510,7 +510,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimecrystal/on_reaction(datum/reagents/holder, created_volume)
var/obj/item/weapon/ore/bluespace_crystal/BC = new (get_turf(holder.my_atom))
var/obj/item/ore/bluespace_crystal/BC = new (get_turf(holder.my_atom))
BC.visible_message("<span class='notice'>The [BC.name] appears out of thin air!</span>")
..()
@@ -584,7 +584,7 @@
required_other = 1
/datum/chemical_reaction/slime/slimepaint/on_reaction(datum/reagents/holder)
var/chosen = pick(subtypesof(/obj/item/weapon/paint))
var/chosen = pick(subtypesof(/obj/item/paint))
new chosen(get_turf(holder.my_atom))
..()
@@ -632,6 +632,6 @@
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slime/flight_potion/on_reaction(datum/reagents/holder)
new /obj/item/weapon/reagent_containers/glass/bottle/potion/flight(get_turf(holder.my_atom))
new /obj/item/reagent_containers/glass/bottle/potion/flight(get_turf(holder.my_atom))
..()
+13 -13
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers
/obj/item/reagent_containers
name = "Container"
desc = "..."
icon = 'icons/obj/chemical.dmi'
@@ -12,7 +12,7 @@
var/disease_amount = 20
var/spillable = 0
/obj/item/weapon/reagent_containers/Initialize(mapload, vol)
/obj/item/reagent_containers/Initialize(mapload, vol)
. = ..()
if(isnum(vol) && vol > 0)
volume = vol
@@ -24,11 +24,11 @@
add_initial_reagents()
/obj/item/weapon/reagent_containers/proc/add_initial_reagents()
/obj/item/reagent_containers/proc/add_initial_reagents()
if(list_reagents)
reagents.add_reagent_list(list_reagents)
/obj/item/weapon/reagent_containers/attack_self(mob/user)
/obj/item/reagent_containers/attack_self(mob/user)
if(possible_transfer_amounts.len)
var/i=0
for(var/A in possible_transfer_amounts)
@@ -41,14 +41,14 @@
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
return
/obj/item/weapon/reagent_containers/attack(mob/M, mob/user, def_zone)
/obj/item/reagent_containers/attack(mob/M, mob/user, def_zone)
if(user.a_intent == INTENT_HARM)
return ..()
/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag)
/obj/item/reagent_containers/afterattack(obj/target, mob/user , flag)
return
/obj/item/weapon/reagent_containers/proc/reagentlist(obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
/obj/item/reagent_containers/proc/reagentlist(obj/item/reagent_containers/snack) //Attack logs for regents in pills
var/data
if(snack.reagents.reagent_list && snack.reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
for (var/datum/reagent/R in snack.reagents.reagent_list) //no reagents will be left behind
@@ -56,7 +56,7 @@
return data
else return "No reagents"
/obj/item/weapon/reagent_containers/proc/canconsume(mob/eater, mob/user)
/obj/item/reagent_containers/proc/canconsume(mob/eater, mob/user)
if(!iscarbon(eater))
return 0
var/mob/living/carbon/C = eater
@@ -71,23 +71,23 @@
return 0
return 1
/obj/item/weapon/reagent_containers/ex_act()
/obj/item/reagent_containers/ex_act()
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
R.on_ex_act()
if(!QDELETED(src))
..()
/obj/item/weapon/reagent_containers/fire_act(exposed_temperature, exposed_volume)
/obj/item/reagent_containers/fire_act(exposed_temperature, exposed_volume)
reagents.chem_temp += 30
reagents.handle_reactions()
..()
/obj/item/weapon/reagent_containers/throw_impact(atom/target)
/obj/item/reagent_containers/throw_impact(atom/target)
. = ..()
SplashReagents(target, TRUE)
/obj/item/weapon/reagent_containers/proc/SplashReagents(atom/target, thrown = FALSE)
/obj/item/reagent_containers/proc/SplashReagents(atom/target, thrown = FALSE)
if(!reagents || !reagents.total_volume || !spillable)
return
@@ -122,7 +122,7 @@
reagents.clear_reagents()
/obj/item/weapon/reagent_containers/microwave_act(obj/machinery/microwave/M)
/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/M)
if(is_open_container())
reagents.chem_temp = max(reagents.chem_temp, 1000)
reagents.handle_reactions()
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers/blood
/obj/item/reagent_containers/blood
name = "blood pack"
desc = "Contains blood used for transfusion. Must be attached to an IV drip."
icon = 'icons/obj/bloodpack.dmi'
@@ -7,13 +7,13 @@
var/blood_type = null
var/labelled = 0
/obj/item/weapon/reagent_containers/blood/Initialize()
/obj/item/reagent_containers/blood/Initialize()
. = ..()
if(blood_type != null)
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
update_icon()
/obj/item/weapon/reagent_containers/blood/on_reagent_change()
/obj/item/reagent_containers/blood/on_reagent_change()
if(reagents)
var/datum/reagent/blood/B = reagents.has_reagent("blood")
if(B && B.data && B.data["blood_type"])
@@ -23,14 +23,14 @@
update_pack_name()
update_icon()
/obj/item/weapon/reagent_containers/blood/proc/update_pack_name()
/obj/item/reagent_containers/blood/proc/update_pack_name()
if(!labelled)
if(blood_type)
name = "blood pack - [blood_type]"
else
name = "blood pack"
/obj/item/weapon/reagent_containers/blood/update_icon()
/obj/item/reagent_containers/blood/update_icon()
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
@@ -40,37 +40,37 @@
if(51 to INFINITY)
icon_state = "full"
/obj/item/weapon/reagent_containers/blood/random/Initialize()
/obj/item/reagent_containers/blood/random/Initialize()
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L")
. = ..()
/obj/item/weapon/reagent_containers/blood/APlus
/obj/item/reagent_containers/blood/APlus
blood_type = "A+"
/obj/item/weapon/reagent_containers/blood/AMinus
/obj/item/reagent_containers/blood/AMinus
blood_type = "A-"
/obj/item/weapon/reagent_containers/blood/BPlus
/obj/item/reagent_containers/blood/BPlus
blood_type = "B+"
/obj/item/weapon/reagent_containers/blood/BMinus
/obj/item/reagent_containers/blood/BMinus
blood_type = "B-"
/obj/item/weapon/reagent_containers/blood/OPlus
/obj/item/reagent_containers/blood/OPlus
blood_type = "O+"
/obj/item/weapon/reagent_containers/blood/OMinus
/obj/item/reagent_containers/blood/OMinus
blood_type = "O-"
/obj/item/weapon/reagent_containers/blood/lizard
/obj/item/reagent_containers/blood/lizard
blood_type = "L"
/obj/item/weapon/reagent_containers/blood/empty
/obj/item/reagent_containers/blood/empty
name = "blood pack"
icon_state = "empty"
/obj/item/weapon/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/weapon/pen) || istype(I, /obj/item/toy/crayon))
/obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon))
var/t = stripped_input(user, "What would you like to label the blood pack?", name, null, 53)
if(!user.canUseTopic(src))
@@ -8,7 +8,7 @@ Nothing to do with hydroponics in here. Sorry to dissapoint you.
/*
Borg Hypospray
*/
/obj/item/weapon/reagent_containers/borghypo
/obj/item/reagent_containers/borghypo
name = "cyborg hypospray"
desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
icon = 'icons/obj/syringe.dmi'
@@ -32,7 +32,7 @@ Borg Hypospray
//Used as list for input() in shakers.
/obj/item/weapon/reagent_containers/borghypo/Initialize()
/obj/item/reagent_containers/borghypo/Initialize()
. = ..()
for(var/R in reagent_ids)
@@ -41,12 +41,12 @@ Borg Hypospray
START_PROCESSING(SSobj, src)
/obj/item/weapon/reagent_containers/borghypo/Destroy()
/obj/item/reagent_containers/borghypo/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg
/obj/item/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg
charge_tick++
if(charge_tick >= recharge_time)
regenerate_reagents()
@@ -57,14 +57,14 @@ Borg Hypospray
// Purely for testing purposes I swear~ //don't lie to me
/*
/obj/item/weapon/reagent_containers/borghypo/verb/add_cyanide()
/obj/item/reagent_containers/borghypo/verb/add_cyanide()
set src in world
add_reagent("cyanide")
*/
// Use this to add more chemicals for the borghypo to produce.
/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(reagent)
/obj/item/reagent_containers/borghypo/proc/add_reagent(reagent)
reagent_ids |= reagent
var/datum/reagents/RG = new(30)
RG.my_atom = src
@@ -75,7 +75,7 @@ Borg Hypospray
modes[reagent] = modes.len + 1
/obj/item/weapon/reagent_containers/borghypo/proc/regenerate_reagents()
/obj/item/reagent_containers/borghypo/proc/regenerate_reagents()
if(iscyborg(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
@@ -85,7 +85,7 @@ Borg Hypospray
R.cell.use(charge_cost) //Take power from borg...
RG.add_reagent(reagent_ids[i], 5) //And fill hypo with reagent.
/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/carbon/M, mob/user)
/obj/item/reagent_containers/borghypo/attack(mob/living/carbon/M, mob/user)
var/datum/reagents/R = reagent_list[mode]
if(!R.total_volume)
to_chat(user, "<span class='notice'>The injector is empty.</span>")
@@ -106,7 +106,7 @@ Borg Hypospray
injected += RG.name
add_logs(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])")
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user)
/obj/item/reagent_containers/borghypo/attack_self(mob/user)
var/chosen_reagent = modes[input(user, "What reagent do you want to dispense?") as null|anything in reagent_ids]
if(!chosen_reagent)
return
@@ -116,12 +116,12 @@ Borg Hypospray
to_chat(user, "<span class='notice'>[src] is now dispensing '[R.name]'.</span>")
return
/obj/item/weapon/reagent_containers/borghypo/examine(mob/user)
/obj/item/reagent_containers/borghypo/examine(mob/user)
usr = user
..()
DescribeContents() //Because using the standardized reagents datum was just too cool for whatever fuckwit wrote this
/obj/item/weapon/reagent_containers/borghypo/proc/DescribeContents()
/obj/item/reagent_containers/borghypo/proc/DescribeContents()
var/empty = 1
for(var/datum/reagents/RS in reagent_list)
@@ -133,12 +133,12 @@ Borg Hypospray
if(empty)
to_chat(usr, "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>")
/obj/item/weapon/reagent_containers/borghypo/hacked
/obj/item/reagent_containers/borghypo/hacked
icon_state = "borghypo_s"
reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin")
accepts_reagent_upgrades = FALSE
/obj/item/weapon/reagent_containers/borghypo/syndicate
/obj/item/reagent_containers/borghypo/syndicate
name = "syndicate cyborg hypospray"
desc = "An experimental piece of Syndicate technology used to produce powerful restorative nanites used to very quickly restore injuries of all types. Also metabolizes potassium iodide, for radiation poisoning, and morphine, for offense."
icon_state = "borghypo_s"
@@ -151,7 +151,7 @@ Borg Hypospray
/*
Borg Shaker
*/
/obj/item/weapon/reagent_containers/borghypo/borgshaker
/obj/item/reagent_containers/borghypo/borgshaker
name = "cyborg shaker"
desc = "An advanced drink synthesizer and mixer."
icon = 'icons/obj/drinks.dmi'
@@ -163,10 +163,10 @@ Borg Shaker
reagent_ids = list("beer", "orangejuice", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale")
/obj/item/weapon/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user)
/obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user)
return //Can't inject stuff with a shaker, can we? //not with that attitude
/obj/item/weapon/reagent_containers/borghypo/borgshaker/regenerate_reagents()
/obj/item/reagent_containers/borghypo/borgshaker/regenerate_reagents()
if(iscyborg(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
@@ -177,7 +177,7 @@ Borg Shaker
R.cell.use(charge_cost)
RG.add_reagent(reagent_ids[valueofi], 5)
/obj/item/weapon/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
/obj/item/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
if(!proximity) return
else if(target.is_open_container() && target.reagents)
@@ -193,7 +193,7 @@ Borg Shaker
var/trans = R.trans_to(target, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution to [target].</span>")
/obj/item/weapon/reagent_containers/borghypo/borgshaker/DescribeContents()
/obj/item/reagent_containers/borghypo/borgshaker/DescribeContents()
var/empty = 1
var/datum/reagents/RS = reagent_list[mode]
@@ -205,7 +205,7 @@ Borg Shaker
if(empty)
to_chat(usr, "<span class='warning'>It is currently empty! Please allow some time for the synthesizer to produce more.</span>")
/obj/item/weapon/reagent_containers/borghypo/borgshaker/hacked
/obj/item/reagent_containers/borghypo/borgshaker/hacked
..()
name = "cyborg shaker"
desc = "Will mix drinks that knock them dead."
@@ -218,19 +218,19 @@ Borg Shaker
reagent_ids = list("beer2")
/obj/item/weapon/reagent_containers/borghypo/peace
/obj/item/reagent_containers/borghypo/peace
name = "Peace Hypospray"
reagent_ids = list("dizzysolution","tiresolution")
accepts_reagent_upgrades = FALSE
/obj/item/weapon/reagent_containers/borghypo/peace/hacked
/obj/item/reagent_containers/borghypo/peace/hacked
desc = "Everything's peaceful in death!"
icon_state = "borghypo_s"
reagent_ids = list("dizzysolution","tiresolution","tirizene","sulfonal","sodium_thiopental","cyanide","neurotoxin2")
accepts_reagent_upgrades = FALSE
/obj/item/weapon/reagent_containers/borghypo/epi
/obj/item/reagent_containers/borghypo/epi
name = "epinephrine injector"
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients.."
reagent_ids = list("epinephrine")
@@ -1,6 +1,6 @@
//Not to be confused with /obj/item/weapon/reagent_containers/food/drinks/bottle
//Not to be confused with /obj/item/reagent_containers/food/drinks/bottle
/obj/item/weapon/reagent_containers/glass/bottle
/obj/item/reagent_containers/glass/bottle
name = "bottle"
desc = "A small bottle."
icon_state = "bottle"
@@ -9,16 +9,16 @@
volume = 30
/obj/item/weapon/reagent_containers/glass/bottle/Initialize()
/obj/item/reagent_containers/glass/bottle/Initialize()
. = ..()
if(!icon_state)
icon_state = "bottle"
update_icon()
/obj/item/weapon/reagent_containers/glass/bottle/on_reagent_change()
/obj/item/reagent_containers/glass/bottle/on_reagent_change()
update_icon()
/obj/item/weapon/reagent_containers/glass/bottle/update_icon()
/obj/item/reagent_containers/glass/bottle/update_icon()
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "[icon_state]-10")
@@ -40,316 +40,322 @@
add_overlay(filling)
/obj/item/weapon/reagent_containers/glass/bottle/epinephrine
/obj/item/reagent_containers/glass/bottle/epinephrine
name = "epinephrine bottle"
desc = "A small bottle. Contains epinephrine - used to stabilize patients."
icon_state = "bottle16"
list_reagents = list("epinephrine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/toxin
/obj/item/reagent_containers/glass/bottle/toxin
name = "toxin bottle"
desc = "A small bottle of toxins. Do not drink, it is poisonous."
icon_state = "bottle12"
list_reagents = list("toxin" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/cyanide
/obj/item/reagent_containers/glass/bottle/cyanide
name = "cyanide bottle"
desc = "A small bottle of cyanide. Bitter almonds?"
icon_state = "bottle12"
list_reagents = list("cyanide" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/spewium
/obj/item/reagent_containers/glass/bottle/spewium
name = "spewium bottle"
desc = "A small bottle of spewium."
icon_state = "bottle12"
list_reagents = list("spewium" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/morphine
/obj/item/reagent_containers/glass/bottle/morphine
name = "morphine bottle"
desc = "A small bottle of morphine."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle20"
list_reagents = list("morphine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate
/obj/item/reagent_containers/glass/bottle/chloralhydrate
name = "Chloral Hydrate Bottle"
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
icon_state = "bottle20"
list_reagents = list("chloralhydrate" = 15)
/obj/item/weapon/reagent_containers/glass/bottle/charcoal
/obj/item/reagent_containers/glass/bottle/charcoal
name = "antitoxin bottle"
desc = "A small bottle of charcoal."
icon_state = "bottle17"
list_reagents = list("charcoal" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/mutagen
/obj/item/reagent_containers/glass/bottle/mutagen
name = "unstable mutagen bottle"
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
icon_state = "bottle20"
list_reagents = list("mutagen" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/plasma
/obj/item/reagent_containers/glass/bottle/plasma
name = "liquid plasma bottle"
desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood."
icon_state = "bottle8"
list_reagents = list("plasma" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/synaptizine
/obj/item/reagent_containers/glass/bottle/synaptizine
name = "synaptizine bottle"
desc = "A small bottle of synaptizine."
icon_state = "bottle20"
list_reagents = list("synaptizine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/formaldehyde
/obj/item/reagent_containers/glass/bottle/formaldehyde
name = "formaldehyde bottle"
desc = "A small bottle of formaldehyde."
icon_state = "bottle20"
list_reagents = list("formaldehyde" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
/obj/item/reagent_containers/glass/bottle/ammonia
name = "ammonia bottle"
desc = "A small bottle of ammonia."
icon_state = "bottle20"
list_reagents = list("ammonia" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine
/obj/item/reagent_containers/glass/bottle/diethylamine
name = "diethylamine bottle"
desc = "A small bottle of diethylamine."
icon_state = "bottle17"
list_reagents = list("diethylamine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/facid
/obj/item/reagent_containers/glass/bottle/facid
name = "Fluorosulfuric Acid Bottle"
desc = "A small bottle. Contains a small amount of Fluorosulfuric Acid"
icon_state = "bottle17"
list_reagents = list("facid" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
/obj/item/reagent_containers/glass/bottle/adminordrazine
name = "Adminordrazine Bottle"
desc = "A small bottle. Contains the liquid essence of the gods."
icon = 'icons/obj/drinks.dmi'
icon_state = "holyflask"
list_reagents = list("adminordrazine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
/obj/item/reagent_containers/glass/bottle/capsaicin
name = "Capsaicin Bottle"
desc = "A small bottle. Contains hot sauce."
icon_state = "bottle3"
list_reagents = list("capsaicin" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
/obj/item/reagent_containers/glass/bottle/frostoil
name = "Frost Oil Bottle"
desc = "A small bottle. Contains cold sauce."
icon_state = "bottle17"
list_reagents = list("frostoil" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/traitor
/obj/item/reagent_containers/glass/bottle/traitor
name = "syndicate bottle"
desc = "A small bottle. Contains a random nasty chemical."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle16"
var/extra_reagent = null
/obj/item/weapon/reagent_containers/glass/bottle/traitor/Initialize()
/obj/item/reagent_containers/glass/bottle/traitor/Initialize()
. = ..()
extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "neurotoxin2", "cyanide")
reagents.add_reagent("[extra_reagent]", 3)
/obj/item/weapon/reagent_containers/glass/bottle/polonium
/obj/item/reagent_containers/glass/bottle/polonium
name = "polonium bottle"
desc = "A small bottle. Contains Polonium."
icon_state = "bottle16"
list_reagents = list("polonium" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/venom
/obj/item/reagent_containers/glass/bottle/magillitis
name = "magillitis bottle"
desc = "A small bottle. Contains a serum known only as 'magillitis'."
icon_state = "bottle16"
list_reagents = list("magillitis" = 5)
/obj/item/reagent_containers/glass/bottle/venom
name = "venom bottle"
desc = "A small bottle. Contains Venom."
icon_state = "bottle16"
list_reagents = list("venom" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/neurotoxin2
/obj/item/reagent_containers/glass/bottle/neurotoxin2
name = "neurotoxin bottle"
desc = "A small bottle. Contains Neurotoxin."
icon_state = "bottle16"
list_reagents = list("neurotoxin2" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/formaldehyde
/obj/item/reagent_containers/glass/bottle/formaldehyde
name = "formaldehyde bottle"
desc = "A small bottle. Contains Formaldehyde."
icon_state = "bottle16"
list_reagents = list("formaldehyde" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/initropidril
/obj/item/reagent_containers/glass/bottle/initropidril
name = "initropidril bottle"
desc = "A small bottle. Contains initropidril."
icon_state = "bottle16"
list_reagents = list("initropidril" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/pancuronium
/obj/item/reagent_containers/glass/bottle/pancuronium
name = "pancuronium bottle"
desc = "A small bottle. Contains pancuronium."
icon_state = "bottle16"
list_reagents = list("pancuronium" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/sodium_thiopental
/obj/item/reagent_containers/glass/bottle/sodium_thiopental
name = "sodium thiopental bottle"
desc = "A small bottle. Contains sodium thiopental."
icon_state = "bottle16"
list_reagents = list("sodium_thiopental" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/coniine
/obj/item/reagent_containers/glass/bottle/coniine
name = "coniine bottle"
desc = "A small bottle. Contains coniine."
icon_state = "bottle16"
list_reagents = list("coniine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/curare
/obj/item/reagent_containers/glass/bottle/curare
name = "curare bottle"
desc = "A small bottle. Contains curare."
icon_state = "bottle16"
list_reagents = list("curare" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/amanitin
/obj/item/reagent_containers/glass/bottle/amanitin
name = "amanitin bottle"
desc = "A small bottle. Contains amanitin."
icon_state = "bottle16"
list_reagents = list("amanitin" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/histamine
/obj/item/reagent_containers/glass/bottle/histamine
name = "histamine bottle"
desc = "A small bottle. Contains Histamine."
icon_state = "bottle16"
list_reagents = list("histamine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/diphenhydramine
/obj/item/reagent_containers/glass/bottle/diphenhydramine
name = "antihistamine bottle"
desc = "A small bottle of diphenhydramine."
icon_state = "bottle20"
list_reagents = list("diphenhydramine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/potass_iodide
/obj/item/reagent_containers/glass/bottle/potass_iodide
name = "anti-radiation bottle"
desc = "A small bottle of potassium iodide."
icon_state = "bottle11"
list_reagents = list("potass_iodide" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/salglu_solution
/obj/item/reagent_containers/glass/bottle/salglu_solution
name = "saline-glucose solution bottle"
desc = "A small bottle of saline-glucose solution."
icon_state = "bottle1"
list_reagents = list("salglu_solution" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/atropine
/obj/item/reagent_containers/glass/bottle/atropine
name = "atropine bottle"
desc = "A small bottle of atropine."
icon_state = "bottle12"
list_reagents = list("atropine" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/romerol
/obj/item/reagent_containers/glass/bottle/romerol
name = "romerol bottle"
desc = "A small bottle of Romerol. The REAL zombie powder."
icon_state = "bottle12"
list_reagents = list("romerol" = 30)
/obj/item/weapon/reagent_containers/glass/bottle/flu_virion
/obj/item/reagent_containers/glass/bottle/flu_virion
name = "Flu virion culture bottle"
desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/flu
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion
/obj/item/reagent_containers/glass/bottle/epiglottis_virion
name = "Epiglottis virion culture bottle"
desc = "A small bottle. Contains Epiglottis virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/voice_change
/obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion
/obj/item/reagent_containers/glass/bottle/liver_enhance_virion
name = "Liver enhancement virion culture bottle"
desc = "A small bottle. Contains liver enhancement virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/heal
/obj/item/weapon/reagent_containers/glass/bottle/hallucigen_virion
/obj/item/reagent_containers/glass/bottle/hallucigen_virion
name = "Hallucigen virion culture bottle"
desc = "A small bottle. Contains hullucigen virion culture in synthblood medium."
desc = "A small bottle. Contains hallucigen virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/hallucigen
/obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat
/obj/item/reagent_containers/glass/bottle/pierrot_throat
name = "Pierrot's Throat culture bottle"
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/pierrot_throat
/obj/item/weapon/reagent_containers/glass/bottle/cold
/obj/item/reagent_containers/glass/bottle/cold
name = "Rhinovirus culture bottle"
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/advance/cold
/obj/item/weapon/reagent_containers/glass/bottle/retrovirus
/obj/item/reagent_containers/glass/bottle/retrovirus
name = "Retrovirus culture bottle"
desc = "A small bottle. Contains a retrovirus culture in a synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/dna_retrovirus
/obj/item/weapon/reagent_containers/glass/bottle/gbs
/obj/item/reagent_containers/glass/bottle/gbs
name = "GBS culture bottle"
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit
icon_state = "bottle3"
amount_per_transfer_from_this = 5
spawned_disease = /datum/disease/gbs
/obj/item/weapon/reagent_containers/glass/bottle/fake_gbs
/obj/item/reagent_containers/glass/bottle/fake_gbs
name = "GBS culture bottle"
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit
icon_state = "bottle3"
spawned_disease = /datum/disease/fake_gbs
/obj/item/weapon/reagent_containers/glass/bottle/brainrot
/obj/item/reagent_containers/glass/bottle/brainrot
name = "Brainrot culture bottle"
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/brainrot
/obj/item/weapon/reagent_containers/glass/bottle/magnitis
/obj/item/reagent_containers/glass/bottle/magnitis
name = "Magnitis culture bottle"
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
icon_state = "bottle3"
spawned_disease = /datum/disease/magnitis
/obj/item/weapon/reagent_containers/glass/bottle/wizarditis
/obj/item/reagent_containers/glass/bottle/wizarditis
name = "Wizarditis culture bottle"
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
icon_state = "bottle3"
spawned_disease = /datum/disease/wizarditis
/obj/item/weapon/reagent_containers/glass/bottle/anxiety
/obj/item/reagent_containers/glass/bottle/anxiety
name = "Severe Anxiety culture bottle"
desc = "A small bottle. Contains a sample of Lepidopticides."
icon_state = "bottle3"
spawned_disease = /datum/disease/anxiety
/obj/item/weapon/reagent_containers/glass/bottle/beesease
/obj/item/reagent_containers/glass/bottle/beesease
name = "Beesease culture bottle"
desc = "A small bottle. Contains a sample of invasive Apidae."
icon_state = "bottle3"
spawned_disease = /datum/disease/beesease
/obj/item/weapon/reagent_containers/glass/bottle/fluspanish
/obj/item/reagent_containers/glass/bottle/fluspanish
name = "Spanish flu culture bottle"
desc = "A small bottle. Contains a sample of Inquisitius."
icon_state = "bottle3"
spawned_disease = /datum/disease/fluspanish
/obj/item/weapon/reagent_containers/glass/bottle/tuberculosis
/obj/item/reagent_containers/glass/bottle/tuberculosis
name = "Fungal Tuberculosis culture bottle"
desc = "A small bottle. Contains a sample of Fungal Tubercle bacillus."
icon_state = "bottle3"
spawned_disease = /datum/disease/tuberculosis
/obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure
/obj/item/reagent_containers/glass/bottle/tuberculosiscure
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
icon_state = "bottle5"
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers/dropper
/obj/item/reagent_containers/dropper
name = "dropper"
desc = "A dropper. Holds up to 5 units."
icon = 'icons/obj/chemical.dmi'
@@ -6,9 +6,9 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(1, 2, 3, 4, 5)
volume = 5
container_type = TRANSPARENT
container_type = TRANSPARENT_1
/obj/item/weapon/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
if(!proximity) return
if(!target.reagents) return
@@ -88,7 +88,7 @@
update_icon()
/obj/item/weapon/reagent_containers/dropper/update_icon()
/obj/item/reagent_containers/dropper/update_icon()
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "dropper")
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm (rejected hunks)
@@ -6,7 +6,7 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(1, 2, 3, 4, 5)
volume = 5
- container_type = TRANSPARENT
+ container_type = TRANSPARENT_1
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
if(!proximity) return
@@ -1,14 +1,14 @@
/obj/item/weapon/reagent_containers/glass
/obj/item/reagent_containers/glass
name = "glass"
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50)
volume = 50
container_type = OPENCONTAINER
container_type = OPENCONTAINER_1
spillable = 1
resistance_flags = ACID_PROOF
/obj/item/weapon/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
/obj/item/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
if(!canconsume(M, user))
return
@@ -53,7 +53,7 @@
reagents.trans_to(M, 5)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/weapon/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
if((!proximity) || !check_allowed_items(target,target_self=1)) return
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
@@ -89,7 +89,7 @@
reagents.reaction(target, TOUCH)
reagents.clear_reagents()
/obj/item/weapon/reagent_containers/glass/attackby(obj/item/I, mob/user, params)
/obj/item/reagent_containers/glass/attackby(obj/item/I, mob/user, params)
var/hotness = I.is_hot()
if(hotness)
var/added_heat = (hotness / 100) //ishot returns a temperature
@@ -101,8 +101,8 @@
else
to_chat(user, "<span class='warning'>[src] is already hotter than [I]!</span>")
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = I
if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs
var/obj/item/reagent_containers/food/snacks/egg/E = I
if(reagents)
if(reagents.total_volume >= reagents.maximum_volume)
to_chat(user, "<span class='notice'>[src] is full.</span>")
@@ -114,7 +114,7 @@
..()
/obj/item/weapon/reagent_containers/glass/beaker
/obj/item/reagent_containers/glass/beaker
name = "beaker"
desc = "A beaker. It can hold up to 50 units."
icon = 'icons/obj/chemical.dmi'
@@ -122,14 +122,14 @@
item_state = "beaker"
materials = list(MAT_GLASS=500)
/obj/item/weapon/reagent_containers/glass/beaker/Initialize()
/obj/item/reagent_containers/glass/beaker/Initialize()
. = ..()
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/on_reagent_change()
/obj/item/reagent_containers/glass/beaker/on_reagent_change()
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/update_icon()
/obj/item/reagent_containers/glass/beaker/update_icon()
cut_overlays()
if(reagents.total_volume)
@@ -155,13 +155,13 @@
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
/obj/item/weapon/reagent_containers/glass/beaker/jar
/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."
icon = 'icons/obj/chemical.dmi'
icon_state = "vapour"
/obj/item/weapon/reagent_containers/glass/beaker/large
/obj/item/reagent_containers/glass/beaker/large
name = "large beaker"
desc = "A large beaker. Can hold up to 100 units."
icon_state = "beakerlarge"
@@ -169,9 +169,9 @@
volume = 100
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
flags = OPENCONTAINER
flags_1 = OPENCONTAINER_1
/obj/item/weapon/reagent_containers/glass/beaker/noreact
/obj/item/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."
@@ -180,13 +180,13 @@
volume = 50
amount_per_transfer_from_this = 10
origin_tech = "materials=2;engineering=3;plasmatech=3"
flags = OPENCONTAINER
flags_1 = OPENCONTAINER_1
/obj/item/weapon/reagent_containers/glass/beaker/noreact/Initialize()
/obj/item/reagent_containers/glass/beaker/noreact/Initialize()
. = ..()
reagents.set_reacting(FALSE)
/obj/item/weapon/reagent_containers/glass/beaker/bluespace
/obj/item/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 \
@@ -196,38 +196,38 @@
volume = 300
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300)
flags = OPENCONTAINER
flags_1 = OPENCONTAINER_1
origin_tech = "bluespace=5;materials=4;plasmatech=4"
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
/obj/item/reagent_containers/glass/beaker/cryoxadone
list_reagents = list("cryoxadone" = 30)
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
/obj/item/reagent_containers/glass/beaker/sulphuric
list_reagents = list("sacid" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/slime
/obj/item/reagent_containers/glass/beaker/slime
list_reagents = list("slimejelly" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/styptic
/obj/item/reagent_containers/glass/beaker/large/styptic
name = "styptic reserve tank"
list_reagents = list("styptic_powder" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/silver_sulfadiazine
/obj/item/reagent_containers/glass/beaker/large/silver_sulfadiazine
name = "silver sulfadiazine reserve tank"
list_reagents = list("silver_sulfadiazine" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/charcoal
/obj/item/reagent_containers/glass/beaker/large/charcoal
name = "antitoxin reserve tank"
list_reagents = list("charcoal" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/epinephrine
/obj/item/reagent_containers/glass/beaker/large/epinephrine
name = "epinephrine reserve tank"
list_reagents = list("epinephrine" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/synthflesh
/obj/item/reagent_containers/glass/beaker/synthflesh
list_reagents = list("synthflesh" = 50)
/obj/item/weapon/reagent_containers/glass/bucket
/obj/item/reagent_containers/glass/bucket
name = "bucket"
desc = "It's a bucket."
icon = 'icons/obj/janitor.dmi'
@@ -240,7 +240,7 @@
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,15,20,25,30,50,70)
volume = 70
flags = OPENCONTAINER
flags_1 = OPENCONTAINER_1
flags_inv = HIDEHAIR
slot_flags = SLOT_HEAD
resistance_flags = 0
@@ -256,8 +256,8 @@
slot_generic_dextrous_storage
)
/obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/O, mob/user, params)
if(istype(O, /obj/item/weapon/mop))
/obj/item/reagent_containers/glass/bucket/attackby(obj/O, mob/user, params)
if(istype(O, /obj/item/mop))
if(reagents.total_volume < 1)
to_chat(user, "<span class='warning'>[src] is out of water!</span>")
else
@@ -268,18 +268,18 @@
to_chat(user, "<span class='notice'>You add [O] to [src].</span>")
qdel(O)
qdel(src)
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
user.put_in_hands(new /obj/item/bucket_sensor)
else
..()
/obj/item/weapon/reagent_containers/glass/bucket/equipped(mob/user, slot)
/obj/item/reagent_containers/glass/bucket/equipped(mob/user, slot)
..()
if(slot == slot_head && reagents.total_volume)
to_chat(user, "<span class='userdanger'>[src]'s contents spill all over you!</span>")
reagents.reaction(user, TOUCH)
reagents.clear_reagents()
/obj/item/weapon/reagent_containers/glass/bucket/equip_to_best_slot(var/mob/M)
/obj/item/reagent_containers/glass/bucket/equip_to_best_slot(var/mob/M)
if(reagents.total_volume) //If there is water in a bucket, don't quick equip it to the head
var/index = slot_equipment_priority.Find(slot_head)
slot_equipment_priority.Remove(slot_head)
@@ -288,7 +288,7 @@
return
return ..()
/obj/item/weapon/reagent_containers/glass/beaker/waterbottle
/obj/item/reagent_containers/glass/beaker/waterbottle
name = "bottle of water"
desc = "A bottle of water filled at an old Earth bottling facility,"
icon = 'icons/obj/drinks.dmi'
@@ -300,10 +300,10 @@
amount_per_transfer_from_this = 10
origin_tech = null
/obj/item/weapon/reagent_containers/glass/beaker/waterbottle/empty
/obj/item/reagent_containers/glass/beaker/waterbottle/empty
list_reagents = list()
/obj/item/weapon/reagent_containers/glass/beaker/waterbottle/large
/obj/item/reagent_containers/glass/beaker/waterbottle/large
desc = "A fresh commercial-sized bottle of water."
icon_state = "largebottle"
materials = list(MAT_GLASS=0)
@@ -311,105 +311,105 @@
volume = 100
amount_per_transfer_from_this = 20
/obj/item/weapon/reagent_containers/glass/beaker/waterbottle/large/empty
/obj/item/reagent_containers/glass/beaker/waterbottle/large/empty
list_reagents = list()
/obj/item/weapon/reagent_containers/glass/beaker/large/hydrogen
/obj/item/reagent_containers/glass/beaker/large/hydrogen
name = "hydrogen"
list_reagents = list("hydrogen" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/lithium
/obj/item/reagent_containers/glass/beaker/large/lithium
name = "lithium"
list_reagents = list("lithium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/carbon
/obj/item/reagent_containers/glass/beaker/large/carbon
name = "carbon"
list_reagents = list("carbon" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/nitrogen
/obj/item/reagent_containers/glass/beaker/large/nitrogen
name = "nitrogen"
list_reagents = list("nitrogen" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/oxygen
/obj/item/reagent_containers/glass/beaker/large/oxygen
name = "oxygen"
list_reagents = list("oxygen" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/fluorine
/obj/item/reagent_containers/glass/beaker/large/fluorine
name = "fluorine"
list_reagents = list("fluorine" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/sodium
/obj/item/reagent_containers/glass/beaker/large/sodium
name = "sodium"
list_reagents = list("sodium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/aluminium
/obj/item/reagent_containers/glass/beaker/large/aluminium
name = "aluminium"
list_reagents = list("aluminium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/silicon
/obj/item/reagent_containers/glass/beaker/large/silicon
name = "silicon"
list_reagents = list("silicon" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/phosphorus
/obj/item/reagent_containers/glass/beaker/large/phosphorus
name = "phosphorus"
list_reagents = list("phosphorus" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/sulfur
/obj/item/reagent_containers/glass/beaker/large/sulfur
name = "sulfur"
list_reagents = list("sulfur" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/chlorine
/obj/item/reagent_containers/glass/beaker/large/chlorine
name = "chlorine"
list_reagents = list("chlorine" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/potassium
/obj/item/reagent_containers/glass/beaker/large/potassium
name = "potassium"
list_reagents = list("potassium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/iron
/obj/item/reagent_containers/glass/beaker/large/iron
name = "iron"
list_reagents = list("iron" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/copper
/obj/item/reagent_containers/glass/beaker/large/copper
name = "copper"
list_reagents = list("copper" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/mercury
/obj/item/reagent_containers/glass/beaker/large/mercury
name = "mercury"
list_reagents = list("mercury" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/radium
/obj/item/reagent_containers/glass/beaker/large/radium
name = "radium"
list_reagents = list("radium" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/water
/obj/item/reagent_containers/glass/beaker/large/water
name = "water"
list_reagents = list("water" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/ethanol
/obj/item/reagent_containers/glass/beaker/large/ethanol
name = "ethanol"
list_reagents = list("ethanol" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/sugar
/obj/item/reagent_containers/glass/beaker/large/sugar
name = "sugar"
list_reagents = list("sugar" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/sacid
/obj/item/reagent_containers/glass/beaker/large/sacid
name = "sacid"
list_reagents = list("sacid" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/welding_fuel
/obj/item/reagent_containers/glass/beaker/large/welding_fuel
name = "welding_fuel"
list_reagents = list("welding_fuel" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/silver
/obj/item/reagent_containers/glass/beaker/large/silver
name = "silver"
list_reagents = list("silver" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/iodine
/obj/item/reagent_containers/glass/beaker/large/iodine
name = "iodine"
list_reagents = list("iodine" = 50)
/obj/item/weapon/reagent_containers/glass/beaker/large/bromine
/obj/item/reagent_containers/glass/beaker/large/bromine
name = "bromine"
list_reagents = list("bromine" = 50)
@@ -0,0 +1,28 @@
diff a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm (rejected hunks)
@@ -169,7 +169,7 @@
volume = 100
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
- flags = OPENCONTAINER
+ flags_1 = OPENCONTAINER_1
/obj/item/reagent_containers/glass/beaker/noreact
name = "cryostasis beaker"
@@ -180,7 +180,7 @@
volume = 50
amount_per_transfer_from_this = 10
origin_tech = "materials=2;engineering=3;plasmatech=3"
- flags = OPENCONTAINER
+ flags_1 = OPENCONTAINER_1
/obj/item/reagent_containers/glass/beaker/noreact/Initialize()
. = ..()
@@ -196,7 +196,7 @@
volume = 300
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300)
- flags = OPENCONTAINER
+ flags_1 = OPENCONTAINER_1
origin_tech = "bluespace=5;materials=4;plasmatech=4"
/obj/item/reagent_containers/glass/beaker/cryoxadone
@@ -1,24 +1,24 @@
/obj/item/weapon/reagent_containers/hypospray
/obj/item/reagent_containers/hypospray
name = "hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
icon = 'icons/obj/syringe.dmi'
item_state = "hypo"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
icon_state = "hypo"
amount_per_transfer_from_this = 5
volume = 30
possible_transfer_amounts = list()
resistance_flags = ACID_PROOF
container_type = OPENCONTAINER
container_type = OPENCONTAINER_1
slot_flags = SLOT_BELT
var/ignore_flags = 0
var/infinite = FALSE
/obj/item/weapon/reagent_containers/hypospray/attack_paw(mob/user)
/obj/item/reagent_containers/hypospray/attack_paw(mob/user)
return attack_hand(user)
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M, mob/user)
/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user)
if(!reagents.total_volume)
to_chat(user, "<span class='warning'>[src] is empty!</span>")
return
@@ -47,11 +47,11 @@
add_logs(user, M, "injected", src, "([contained])")
/obj/item/weapon/reagent_containers/hypospray/CMO
/obj/item/reagent_containers/hypospray/CMO
list_reagents = list("omnizine" = 30)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/weapon/reagent_containers/hypospray/combat
/obj/item/reagent_containers/hypospray/combat
name = "combat stimulant injector"
desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat."
amount_per_transfer_from_this = 10
@@ -60,28 +60,28 @@
ignore_flags = 1 // So they can heal their comrades.
list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15)
/obj/item/weapon/reagent_containers/hypospray/combat/nanites
/obj/item/reagent_containers/hypospray/combat/nanites
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing."
volume = 100
list_reagents = list("nanites" = 80, "synaptizine" = 20)
//MediPens
/obj/item/weapon/reagent_containers/hypospray/medipen
/obj/item/reagent_containers/hypospray/medipen
name = "epinephrine medipen"
desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge."
icon_state = "medipen"
item_state = "medipen"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
amount_per_transfer_from_this = 10
volume = 10
ignore_flags = 1 //so you can medipen through hardsuits
container_type = DRAWABLE
flags = null
container_type = DRAWABLE_1
flags_1 = null
list_reagents = list("epinephrine" = 10)
/obj/item/weapon/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
/obj/item/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
if(!reagents.total_volume)
to_chat(user, "<span class='warning'>[src] is empty!</span>")
return
@@ -98,20 +98,20 @@
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/medipen/update_icon()
/obj/item/reagent_containers/hypospray/medipen/update_icon()
if(reagents.total_volume > 0)
icon_state = initial(icon_state)
else
icon_state = "[initial(icon_state)]0"
/obj/item/weapon/reagent_containers/hypospray/medipen/examine()
/obj/item/reagent_containers/hypospray/medipen/examine()
..()
if(reagents && reagents.reagent_list.len)
to_chat(usr, "<span class='notice'>It is currently loaded.</span>")
else
to_chat(usr, "<span class='notice'>It is spent.</span>")
/obj/item/weapon/reagent_containers/hypospray/medipen/stimpack //goliath kiting
/obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting
name = "stimpack medipen"
desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
icon_state = "stimpen"
@@ -119,16 +119,16 @@
amount_per_transfer_from_this = 20
list_reagents = list("ephedrine" = 10, "coffee" = 10)
/obj/item/weapon/reagent_containers/hypospray/medipen/stimpack/traitor
/obj/item/reagent_containers/hypospray/medipen/stimpack/traitor
desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect."
list_reagents = list("stimulants" = 10, "omnizine" = 10)
/obj/item/weapon/reagent_containers/hypospray/medipen/morphine
/obj/item/reagent_containers/hypospray/medipen/morphine
name = "morphine medipen"
desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though."
list_reagents = list("morphine" = 10)
/obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure
/obj/item/reagent_containers/hypospray/medipen/tuberculosiscure
name = "BVAK autoinjector"
desc = "Bio Virus Antidote Kit autoinjector. Has a two use system for yourself, and someone else. Inject when infected."
icon_state = "stimpen"
@@ -136,7 +136,7 @@
amount_per_transfer_from_this = 30
list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20)
/obj/item/weapon/reagent_containers/hypospray/medipen/survival
/obj/item/reagent_containers/hypospray/medipen/survival
name = "survival medipen"
desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. WARNING: Do not inject more than one pen in quick succession."
icon_state = "stimpen"
@@ -144,7 +144,7 @@
amount_per_transfer_from_this = 57
list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "miningnanites" = 2, "omnizine" = 5)
/obj/item/weapon/reagent_containers/hypospray/medipen/species_mutator
/obj/item/reagent_containers/hypospray/medipen/species_mutator
name = "species mutator medipen"
desc = "Embark on a whirlwind tour of racial insensitivity by \
literally appropriating other races."
@@ -0,0 +1,12 @@
diff a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm (rejected hunks)
@@ -77,8 +77,8 @@
amount_per_transfer_from_this = 10
volume = 10
ignore_flags = 1 //so you can medipen through hardsuits
- container_type = DRAWABLE
- flags = null
+ container_type = DRAWABLE_1
+ flags_1 = null
list_reagents = list("epinephrine" = 10)
/obj/item/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers/pill/patch
/obj/item/reagent_containers/pill/patch
name = "chemical patch"
desc = "A chemical patch for touch based applications."
icon = 'icons/obj/chemical.dmi'
@@ -10,21 +10,21 @@
apply_method = "apply"
self_delay = 30 // three seconds
/obj/item/weapon/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity)
/obj/item/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity)
return // thanks inheritance again
/obj/item/weapon/reagent_containers/pill/patch/canconsume(mob/eater, mob/user)
/obj/item/reagent_containers/pill/patch/canconsume(mob/eater, mob/user)
if(!iscarbon(eater))
return 0
return 1 // Masks were stopping people from "eating" patches. Thanks, inheritance.
/obj/item/weapon/reagent_containers/pill/patch/styptic
/obj/item/reagent_containers/pill/patch/styptic
name = "brute patch"
desc = "Helps with brute injuries."
list_reagents = list("styptic_powder" = 20)
icon_state = "bandaid_brute"
/obj/item/weapon/reagent_containers/pill/patch/silver_sulf
/obj/item/reagent_containers/pill/patch/silver_sulf
name = "burn patch"
desc = "Helps with burn injuries."
list_reagents = list("silver_sulfadiazine" = 20)
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers/pill
/obj/item/reagent_containers/pill
name = "pill"
desc = "A tablet or capsule."
icon = 'icons/obj/chemical.dmi'
@@ -13,7 +13,7 @@
var/roundstart = 0
var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills
/obj/item/weapon/reagent_containers/pill/Initialize()
/obj/item/reagent_containers/pill/Initialize()
. = ..()
if(!icon_state)
icon_state = "pill[rand(1,20)]"
@@ -21,11 +21,11 @@
name += " ([reagents.total_volume]u)"
/obj/item/weapon/reagent_containers/pill/attack_self(mob/user)
/obj/item/reagent_containers/pill/attack_self(mob/user)
return
/obj/item/weapon/reagent_containers/pill/attack(mob/M, mob/user, def_zone)
/obj/item/reagent_containers/pill/attack(mob/M, mob/user, def_zone)
if(!canconsume(M, user))
return 0
@@ -53,7 +53,7 @@
return 1
/obj/item/weapon/reagent_containers/pill/afterattack(obj/target, mob/user , proximity)
/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user , proximity)
if(!proximity) return
if(target.is_open_container() != 0 && target.reagents)
if(!target.reagents.total_volume)
@@ -65,87 +65,87 @@
reagents.trans_to(target, reagents.total_volume)
qdel(src)
/obj/item/weapon/reagent_containers/pill/tox
/obj/item/reagent_containers/pill/tox
name = "toxins pill"
desc = "Highly toxic."
icon_state = "pill5"
list_reagents = list("toxin" = 50)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/cyanide
/obj/item/reagent_containers/pill/cyanide
name = "cyanide pill"
desc = "Don't swallow this."
icon_state = "pill5"
list_reagents = list("cyanide" = 50)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/adminordrazine
/obj/item/reagent_containers/pill/adminordrazine
name = "adminordrazine pill"
desc = "It's magic. We don't have to explain it."
icon_state = "pill16"
list_reagents = list("adminordrazine" = 50)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/morphine
/obj/item/reagent_containers/pill/morphine
name = "morphine pill"
desc = "Commonly used to treat insomnia."
icon_state = "pill8"
list_reagents = list("morphine" = 30)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/stimulant
/obj/item/reagent_containers/pill/stimulant
name = "stimulant pill"
desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!"
icon_state = "pill19"
list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/salbutamol
/obj/item/reagent_containers/pill/salbutamol
name = "salbutamol pill"
desc = "Used to treat oxygen deprivation."
icon_state = "pill16"
list_reagents = list("salbutamol" = 30)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/charcoal
/obj/item/reagent_containers/pill/charcoal
name = "charcoal pill"
desc = "Neutralizes many common toxins."
icon_state = "pill17"
list_reagents = list("charcoal" = 10)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/epinephrine
/obj/item/reagent_containers/pill/epinephrine
name = "epinephrine pill"
desc = "Used to stabilize patients."
icon_state = "pill5"
list_reagents = list("epinephrine" = 15)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/mannitol
/obj/item/reagent_containers/pill/mannitol
name = "mannitol pill"
desc = "Used to treat brain damage."
icon_state = "pill17"
list_reagents = list("mannitol" = 50)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/mutadone
/obj/item/reagent_containers/pill/mutadone
name = "mutadone pill"
desc = "Used to treat genetic damage."
icon_state = "pill20"
list_reagents = list("mutadone" = 50)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/salicyclic
/obj/item/reagent_containers/pill/salicyclic
name = "salicylic acid pill"
desc = "Used to dull pain."
icon_state = "pill9"
list_reagents = list("sal_acid" = 24)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/oxandrolone
/obj/item/reagent_containers/pill/oxandrolone
name = "oxandrolone pill"
desc = "Used to stimulate burn healing."
icon_state = "pill11"
list_reagents = list("oxandrolone" = 24)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/insulin
/obj/item/reagent_containers/pill/insulin
name = "insulin pill"
desc = "Handles hyperglycaemic coma."
icon_state = "pill18"
list_reagents = list("insulin" = 50)
roundstart = 1
/obj/item/weapon/reagent_containers/pill/shadowtoxin
/obj/item/reagent_containers/pill/shadowtoxin
name = "black pill"
desc = "I wouldn't eat this if I were you."
icon_state = "pill9"
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers/spray
/obj/item/reagent_containers/spray
name = "spray bottle"
desc = "A spray bottle, with an unscrewable top."
icon = 'icons/obj/janitor.dmi'
@@ -6,8 +6,8 @@
item_state = "cleaner"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
flags = NOBLUDGEON
container_type = OPENCONTAINER
flags_1 = NOBLUDGEON_1
container_type = OPENCONTAINER_1
slot_flags = SLOT_BELT
throwforce = 0
w_class = WEIGHT_CLASS_SMALL
@@ -23,7 +23,7 @@
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user)
/obj/item/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user)
if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
return
@@ -63,7 +63,7 @@
return
/obj/item/weapon/reagent_containers/spray/proc/spray(atom/A)
/obj/item/reagent_containers/spray/proc/spray(atom/A)
var/range = max(min(current_range, get_dist(src, A)), 1)
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src))
D.create_reagents(amount_per_transfer_from_this)
@@ -77,7 +77,7 @@
var/wait_step = max(round(2+3/range), 2)
do_spray(A, wait_step, D, range, puff_reagent_left)
/obj/item/weapon/reagent_containers/spray/proc/do_spray(atom/A, wait_step, obj/effect/decal/chempuff/D, range, puff_reagent_left)
/obj/item/reagent_containers/spray/proc/do_spray(atom/A, wait_step, obj/effect/decal/chempuff/D, range, puff_reagent_left)
set waitfor = FALSE
var/range_left = range
for(var/i=0, i<range, i++)
@@ -113,7 +113,7 @@
return
qdel(D)
/obj/item/weapon/reagent_containers/spray/attack_self(mob/user)
/obj/item/reagent_containers/spray/attack_self(mob/user)
stream_mode = !stream_mode
if(stream_mode)
amount_per_transfer_from_this = stream_amount
@@ -123,7 +123,7 @@
current_range = spray_range
to_chat(user, "<span class='notice'>You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use.</span>")
/obj/item/weapon/reagent_containers/spray/verb/empty()
/obj/item/reagent_containers/spray/verb/empty()
set name = "Empty Spray Bottle"
set category = "Object"
set src in usr
@@ -137,37 +137,37 @@
src.reagents.clear_reagents()
//space cleaner
/obj/item/weapon/reagent_containers/spray/cleaner
/obj/item/reagent_containers/spray/cleaner
name = "space cleaner"
desc = "BLAM!-brand non-foaming space cleaner!"
list_reagents = list("cleaner" = 250)
//spray tan
/obj/item/weapon/reagent_containers/spray/spraytan
/obj/item/reagent_containers/spray/spraytan
name = "spray tan"
volume = 50
desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices."
list_reagents = list("spraytan" = 50)
/obj/item/weapon/reagent_containers/spray/medical
/obj/item/reagent_containers/spray/medical
name = "medical spray"
icon = 'icons/obj/chemical.dmi'
icon_state = "medspray"
volume = 100
/obj/item/weapon/reagent_containers/spray/medical/sterilizer
/obj/item/reagent_containers/spray/medical/sterilizer
name = "sterilizer spray"
desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery."
list_reagents = list("sterilizine" = 100)
//pepperspray
/obj/item/weapon/reagent_containers/spray/pepper
/obj/item/reagent_containers/spray/pepper
name = "pepperspray"
desc = "Manufactured by UhangInc, used to blind and down an opponent quickly."
icon = 'icons/obj/weapons.dmi'
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "pepperspray"
item_state = "pepperspray"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
@@ -178,13 +178,13 @@
list_reagents = list("condensedcapsaicin" = 40)
// Fix pepperspraying yourself
/obj/item/weapon/reagent_containers/spray/pepper/afterattack(atom/A as mob|obj, mob/user)
/obj/item/reagent_containers/spray/pepper/afterattack(atom/A as mob|obj, mob/user)
if (A.loc == user)
return
..()
//water flower
/obj/item/weapon/reagent_containers/spray/waterflower
/obj/item/reagent_containers/spray/waterflower
name = "water flower"
desc = "A seemingly innocent sunflower...with a twist."
icon = 'icons/obj/hydroponics/harvest.dmi'
@@ -194,11 +194,11 @@
volume = 10
list_reagents = list("water" = 10)
/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
/obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
return
//chemsprayer
/obj/item/weapon/reagent_containers/spray/chemsprayer
/obj/item/reagent_containers/spray/chemsprayer
name = "chem sprayer"
desc = "A utility used to spray large amounts of reagents in a given area."
icon = 'icons/obj/guns/projectile.dmi'
@@ -214,13 +214,13 @@
volume = 600
origin_tech = "combat=3;materials=3;engineering=3"
/obj/item/weapon/reagent_containers/spray/chemsprayer/afterattack(atom/A as mob|obj, mob/user)
/obj/item/reagent_containers/spray/chemsprayer/afterattack(atom/A as mob|obj, mob/user)
// Make it so the bioterror spray doesn't spray yourself when you click your inventory items
if (A.loc == user)
return
..()
/obj/item/weapon/reagent_containers/spray/chemsprayer/spray(atom/A)
/obj/item/reagent_containers/spray/chemsprayer/spray(atom/A)
var/direction = get_dir(src, A)
var/turf/T = get_turf(A)
var/turf/T1 = get_step(T,turn(direction, 90))
@@ -232,11 +232,11 @@
return
..(the_targets[i])
/obj/item/weapon/reagent_containers/spray/chemsprayer/bioterror
/obj/item/reagent_containers/spray/chemsprayer/bioterror
list_reagents = list("sodium_thiopental" = 100, "coniine" = 100, "venom" = 100, "condensedcapsaicin" = 100, "initropidril" = 100, "polonium" = 100)
// Plant-B-Gone
/obj/item/weapon/reagent_containers/spray/plantbgone // -- Skie
/obj/item/reagent_containers/spray/plantbgone // -- Skie
name = "Plant-B-Gone"
desc = "Kills those pesky weeds!"
icon = 'icons/obj/hydroponics/equipment.dmi'
@@ -1,7 +1,7 @@
#define SYRINGE_DRAW 0
#define SYRINGE_INJECT 1
/obj/item/weapon/reagent_containers/syringe
/obj/item/reagent_containers/syringe
name = "syringe"
desc = "A syringe that can hold up to 15 units."
icon = 'icons/obj/syringe.dmi'
@@ -16,40 +16,40 @@
var/busy = FALSE // needed for delayed drawing of blood
var/proj_piercing = 0 //does it pierce through thick clothes when shot with syringe gun
materials = list(MAT_METAL=10, MAT_GLASS=20)
container_type = TRANSPARENT
container_type = TRANSPARENT_1
/obj/item/weapon/reagent_containers/syringe/Initialize()
/obj/item/reagent_containers/syringe/Initialize()
. = ..()
if(list_reagents) //syringe starts in inject mode if its already got something inside
mode = SYRINGE_INJECT
update_icon()
/obj/item/weapon/reagent_containers/syringe/on_reagent_change()
/obj/item/reagent_containers/syringe/on_reagent_change()
update_icon()
/obj/item/weapon/reagent_containers/syringe/pickup(mob/user)
/obj/item/reagent_containers/syringe/pickup(mob/user)
..()
update_icon()
/obj/item/weapon/reagent_containers/syringe/dropped(mob/user)
/obj/item/reagent_containers/syringe/dropped(mob/user)
..()
update_icon()
/obj/item/weapon/reagent_containers/syringe/attack_self(mob/user)
/obj/item/reagent_containers/syringe/attack_self(mob/user)
mode = !mode
update_icon()
/obj/item/weapon/reagent_containers/syringe/attack_hand()
/obj/item/reagent_containers/syringe/attack_hand()
..()
update_icon()
/obj/item/weapon/reagent_containers/syringe/attack_paw(mob/user)
/obj/item/reagent_containers/syringe/attack_paw(mob/user)
return attack_hand(user)
/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
/obj/item/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
return
/obj/item/weapon/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
if(busy)
return
if(!proximity)
@@ -157,7 +157,7 @@
update_icon()
/obj/item/weapon/reagent_containers/syringe/update_icon()
/obj/item/reagent_containers/syringe/update_icon()
var/rounded_vol = Clamp(round((reagents.total_volume / volume * 15),5), 0, 15)
cut_overlays()
if(ismob(loc))
@@ -176,82 +176,82 @@
filling_overlay.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling_overlay)
/obj/item/weapon/reagent_containers/syringe/epinephrine
/obj/item/reagent_containers/syringe/epinephrine
name = "syringe (epinephrine)"
desc = "Contains epinephrine - used to stabilize patients."
list_reagents = list("epinephrine" = 15)
/obj/item/weapon/reagent_containers/syringe/charcoal
/obj/item/reagent_containers/syringe/charcoal
name = "syringe (charcoal)"
desc = "Contains charcoal."
list_reagents = list("charcoal" = 15)
/obj/item/weapon/reagent_containers/syringe/antiviral
/obj/item/reagent_containers/syringe/antiviral
name = "syringe (spaceacillin)"
desc = "Contains antiviral agents."
list_reagents = list("spaceacillin" = 15)
/obj/item/weapon/reagent_containers/syringe/bioterror
/obj/item/reagent_containers/syringe/bioterror
name = "bioterror syringe"
desc = "Contains several paralyzing reagents."
list_reagents = list("neurotoxin" = 5, "mutetoxin" = 5, "sodium_thiopental" = 5)
/obj/item/weapon/reagent_containers/syringe/stimulants
/obj/item/reagent_containers/syringe/stimulants
name = "Stimpack"
desc = "Contains stimulants."
amount_per_transfer_from_this = 50
volume = 50
list_reagents = list("stimulants" = 50)
/obj/item/weapon/reagent_containers/syringe/calomel
/obj/item/reagent_containers/syringe/calomel
name = "syringe (calomel)"
desc = "Contains calomel."
list_reagents = list("calomel" = 15)
/obj/item/weapon/reagent_containers/syringe/lethal
/obj/item/reagent_containers/syringe/lethal
name = "lethal injection syringe"
desc = "A syringe used for lethal injections. It can hold up to 50 units."
amount_per_transfer_from_this = 50
volume = 50
/obj/item/weapon/reagent_containers/syringe/lethal/choral
/obj/item/reagent_containers/syringe/lethal/choral
list_reagents = list("chloralhydrate" = 50)
/obj/item/weapon/reagent_containers/syringe/lethal/execution
/obj/item/reagent_containers/syringe/lethal/execution
list_reagents = list("plasma" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10)
/obj/item/weapon/reagent_containers/syringe/mulligan
/obj/item/reagent_containers/syringe/mulligan
name = "Mulligan"
desc = "A syringe used to completely change the users identity."
amount_per_transfer_from_this = 1
volume = 1
list_reagents = list("mulligan" = 1)
/obj/item/weapon/reagent_containers/syringe/gluttony
/obj/item/reagent_containers/syringe/gluttony
name = "Gluttony's Blessing"
desc = "A syringe recovered from a dread place. It probably isn't wise to use."
amount_per_transfer_from_this = 1
volume = 1
list_reagents = list("gluttonytoxin" = 1)
/obj/item/weapon/reagent_containers/syringe/bluespace
/obj/item/reagent_containers/syringe/bluespace
name = "bluespace syringe"
desc = "An advanced syringe that can hold 60 units of chemicals"
amount_per_transfer_from_this = 20
volume = 60
origin_tech = "bluespace=4;materials=4;biotech=4"
/obj/item/weapon/reagent_containers/syringe/noreact
/obj/item/reagent_containers/syringe/noreact
name = "cryo syringe"
desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units."
volume = 20
origin_tech = "materials=3;engineering=3"
/obj/item/weapon/reagent_containers/syringe/noreact/Initialize()
/obj/item/reagent_containers/syringe/noreact/Initialize()
. = ..()
reagents.set_reacting(FALSE)
/obj/item/weapon/reagent_containers/syringe/piercing
/obj/item/reagent_containers/syringe/piercing
name = "piercing syringe"
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
volume = 10
@@ -0,0 +1,10 @@
diff a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm (rejected hunks)
@@ -16,7 +16,7 @@
var/busy = FALSE // needed for delayed drawing of blood
var/proj_piercing = 0 //does it pierce through thick clothes when shot with syringe gun
materials = list(MAT_METAL=10, MAT_GLASS=20)
- container_type = TRANSPARENT
+ container_type = TRANSPARENT_1
/obj/item/reagent_containers/syringe/Initialize()
. = ..()
+7 -7
View File
@@ -5,7 +5,7 @@
icon_state = "water"
density = TRUE
anchored = FALSE
container_type = DRAWABLE
container_type = DRAWABLE_1
pressure_resistance = 2*ONE_ATMOSPHERE
max_integrity = 300
var/tank_volume = 1000 //In units, how much the dispenser can hold
@@ -17,8 +17,8 @@
if(tank_volume && (damage_flag == "bullet" || damage_flag == "laser"))
boom()
/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/reagent_containers))
/obj/structure/reagent_dispensers/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers))
return 0 //so we can refill them via their afterattack.
else
return ..()
@@ -42,7 +42,7 @@
qdel(src)
/obj/structure/reagent_dispensers/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
if(!(flags_1 & NODECONSTRUCT_1))
if(!disassembled)
boom()
else
@@ -95,11 +95,11 @@
boom()
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/weapon/weldingtool))
if(istype(I, /obj/item/weldingtool))
if(!reagents.has_reagent("welding_fuel"))
to_chat(user, "<span class='warning'>[src] is out of fuel!</span>")
return
var/obj/item/weapon/weldingtool/W = I
var/obj/item/weldingtool/W = I
if(!W.welding)
if(W.reagents.has_reagent("welding_fuel", W.max_fuel))
to_chat(user, "<span class='warning'>Your [W.name] is already full!</span>")
@@ -153,7 +153,7 @@
to_chat(user, "<span class='warning'>There aren't any cups left!</span>")
return
user.visible_message("<span class='notice'>[user] takes a cup from [src].</span>", "<span class='notice'>You take a paper cup from [src].</span>")
var/obj/item/weapon/reagent_containers/food/drinks/sillycup/S = new(get_turf(src))
var/obj/item/reagent_containers/food/drinks/sillycup/S = new(get_turf(src))
user.put_in_hands(S)
paper_cups--