Singletons + refactor of /datum/observ (#15487)

This commit is contained in:
Fluffy
2023-01-05 18:41:40 +01:00
committed by GitHub
parent 95f8207f08
commit 0ddcf0817a
507 changed files with 7603 additions and 7214 deletions
+4 -4
View File
@@ -2,13 +2,13 @@
if(!LAZYLEN(reagent_volumes))
return "#ffffffff"
if(reagent_volumes.len == 1) // It's pretty common and saves a lot of work
var/decl/reagent/R = decls_repository.get_decl(reagent_volumes[1])
var/singleton/reagent/R = GET_SINGLETON(reagent_volumes[1])
return R.get_color(src)
var/list/colors = list(0, 0, 0, 0)
var/tot_w = 0
for(var/rtype in reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(rtype)
var/singleton/reagent/R = GET_SINGLETON(rtype)
if(R.color_weight <= 0)
continue
var/hex = uppertext(R.color)
@@ -23,10 +23,10 @@
return rgb(colors[1] / tot_w, colors[2] / tot_w, colors[3] / tot_w, colors[4] / tot_w)
/decl/reagent/proc/get_color(var/datum/reagents/holder)
/singleton/reagent/proc/get_color(var/datum/reagents/holder)
return color
/decl/reagent/blood/get_color(var/datum/reagents/holder)
/singleton/reagent/blood/get_color(var/datum/reagents/holder)
if(!holder || isemptylist(REAGENT_DATA(holder, type)))
return color
+15 -15
View File
@@ -29,16 +29,16 @@
/datum/reagents/proc/apply_force(var/force) // applies force to the reagents inside it
for (var/_A in reagent_volumes)
var/decl/reagent/A = decls_repository.get_decl(_A)
var/singleton/reagent/A = GET_SINGLETON(_A)
A.apply_force(force, src)
/datum/reagents/proc/get_primary_reagent_name() // Returns the name of the reagent with the biggest volume.
var/decl/reagent/reagent = get_primary_reagent_decl()
var/singleton/reagent/reagent = get_primary_reagent_decl()
if(reagent)
. = reagent.name
/datum/reagents/proc/get_primary_reagent_decl()
return primary_reagent && decls_repository.get_decl(primary_reagent)
return primary_reagent && GET_SINGLETON(primary_reagent)
/datum/reagents/proc/update_total() // Updates volume and temperature.
total_volume = 0
@@ -120,7 +120,7 @@
new_thermal_energy /= amount // Re-multiplied later
amount = min(amount, REAGENTS_FREE_SPACE(src))
new_thermal_energy *= amount
var/decl/reagent/newreagent = decls_repository.get_decl(rtype)
var/singleton/reagent/newreagent = GET_SINGLETON(rtype)
LAZYINITLIST(reagent_volumes)
if(!reagent_volumes[rtype]) // New reagent
reagent_volumes[rtype] = amount
@@ -158,14 +158,14 @@
if(!isnum(amount) || old_volume <= 0)
return FALSE
amount = min(amount, old_volume)
var/decl/reagent/current = decls_repository.get_decl(rtype)
var/singleton/reagent/current = GET_SINGLETON(rtype)
thermal_energy -= current.get_thermal_energy(src) * (amount/old_volume)
reagent_volumes[rtype] -= amount
update_holder(!safety)
return TRUE
/datum/reagents/proc/del_reagent(var/rtype, update = TRUE)
var/decl/reagent/current = decls_repository.get_decl(rtype)
var/singleton/reagent/current = GET_SINGLETON(rtype)
if(REAGENT_VOLUME(src, rtype) > 0)
thermal_energy -= current.get_thermal_energy(src)
if(ismob(my_atom))
@@ -196,7 +196,7 @@
/datum/reagents/proc/clear_reagents()
if(ismob(my_atom))
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
current.final_effect(my_atom, src)
LAZYCLEARLIST(reagent_volumes)
LAZYCLEARLIST(reagent_data)
@@ -205,14 +205,14 @@
/datum/reagents/proc/get_reagents()
. = list()
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
. += "[current.name] ([reagent_volumes[_current]])"
return english_list(., "EMPTY", "", ", ", ", ")
/datum/reagents/proc/get_ids_by_phase(var/phase) // this proc will probably need to be changed if you can have one reagent in multiple states at the same time
. = list()
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
if(phase == current.reagent_state)
. += _current
@@ -227,7 +227,7 @@
var/part = amount / total_volume
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
var/amount_to_remove = reagent_volumes[_current] * part
remove_reagent(current.type, amount_to_remove, 1)
@@ -250,7 +250,7 @@
var/part = amount / total_volume
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
var/amount_to_transfer = reagent_volumes[_current] * part
var/energy_to_transfer = current.get_thermal_energy(src) * part
target.add_reagent(_current, amount_to_transfer * multiplier, REAGENT_DATA(src, _current), TRUE, new_thermal_energy = energy_to_transfer * multiplier) // We don't react until everything is in place
@@ -296,7 +296,7 @@
if (!target)
return
var/decl/reagent/transfering_reagent = decls_repository.get_decl(rtype)
var/singleton/reagent/transfering_reagent = GET_SINGLETON(rtype)
if (istype(target, /atom))
var/atom/A = target
@@ -358,7 +358,7 @@
target.visible_message(SPAN_DANGER("The freezing liquid burns [target]!"))
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
current.touch_mob(target, reagent_volumes[_current], src)
update_holder()
@@ -368,7 +368,7 @@
return
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
current.touch_turf(target, reagent_volumes[_current], src)
update_holder()
@@ -378,7 +378,7 @@
return
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
current.touch_obj(target, reagent_volumes[_current], src)
update_holder()
+18 -18
View File
@@ -14,7 +14,7 @@
use_power = POWER_USE_IDLE
idle_power_usage = 20
layer = 2.9
clicksound = /decl/sound_category/button_sound
clicksound = /singleton/sound_category/button_sound
var/beaker = null
var/obj/item/storage/pill_bottle/loaded_pill_bottle = null
@@ -98,8 +98,8 @@
var/dat = ""
if(!condi)
if(href_list["name"] == "Blood")
var/decl/reagent/blood/G = decls_repository.get_decl(/decl/reagent/blood)
var/Gdata = REAGENT_DATA(R, /decl/reagent/blood)
var/singleton/reagent/blood/G = GET_SINGLETON(/singleton/reagent/blood)
var/Gdata = REAGENT_DATA(R, /singleton/reagent/blood)
var/A = G.name
var/B = Gdata["blood_type"]
var/C = Gdata["blood_DNA"]
@@ -264,7 +264,7 @@
else
dat += "Add to buffer:<BR>"
for(var/_G in R.reagent_volumes)
var/decl/reagent/G = decls_repository.get_decl(_G)
var/singleton/reagent/G = GET_SINGLETON(_G)
dat += "[G.name] , [REAGENT_VOLUME(R, _G)] Units - "
dat += "<A href='?src=\ref[src];analyze=1;desc=[G.description];name=[G.name]'>(Analyze)</A> "
dat += "<A href='?src=\ref[src];add=[_G];amount=1'>(1)</A> "
@@ -278,7 +278,7 @@
dat += "<HR>Transfer to <A href='?src=\ref[src];toggle=1'>[(!mode ? "disposal" : "beaker")]:</A><BR>"
if(reagents.total_volume)
for(var/_N in reagents.reagent_volumes)
var/decl/reagent/N = decls_repository.get_decl(_N)
var/singleton/reagent/N = GET_SINGLETON(_N)
dat += "[N.name] , [REAGENT_VOLUME(reagents, _N)] Units - "
dat += "<A href='?src=\ref[src];analyze=1;desc=[N.description];name=[N.name]'>(Analyze)</A> "
dat += "<A href='?src=\ref[src];remove=[_N];amount=1'>(1)</A> "
@@ -325,18 +325,18 @@
var/limit = 10
var/list/holdingitems = list()
var/list/sheet_reagents = list( //have a number of reagents which is a factor of REAGENTS_PER_SHEET (default 20) unless you like decimals
/obj/item/stack/material/iron = list(/decl/reagent/iron),
/obj/item/stack/material/uranium = list(/decl/reagent/uranium),
/obj/item/stack/material/phoron = list(/decl/reagent/toxin/phoron),
/obj/item/stack/material/gold = list(/decl/reagent/gold),
/obj/item/stack/material/silver = list(/decl/reagent/silver),
/obj/item/stack/material/platinum = list(/decl/reagent/platinum),
/obj/item/stack/material/mhydrogen = list(/decl/reagent/hydrazine), // i guess
/obj/item/stack/material/steel = list(/decl/reagent/iron, /decl/reagent/carbon),
/obj/item/stack/material/plasteel = list(/decl/reagent/iron, /decl/reagent/iron, /decl/reagent/carbon, /decl/reagent/carbon, /decl/reagent/platinum), //8 iron, 8 carbon, 4 platinum,
/obj/item/stack/material/sandstone = list(/decl/reagent/silicon, /decl/reagent/acetone),
/obj/item/stack/material/glass = list(/decl/reagent/silicate),
/obj/item/stack/material/glass/phoronglass = list(/decl/reagent/platinum, /decl/reagent/silicate, /decl/reagent/silicate, /decl/reagent/silicate), //5 platinum, 15 silicate,
/obj/item/stack/material/iron = list(/singleton/reagent/iron),
/obj/item/stack/material/uranium = list(/singleton/reagent/uranium),
/obj/item/stack/material/phoron = list(/singleton/reagent/toxin/phoron),
/obj/item/stack/material/gold = list(/singleton/reagent/gold),
/obj/item/stack/material/silver = list(/singleton/reagent/silver),
/obj/item/stack/material/platinum = list(/singleton/reagent/platinum),
/obj/item/stack/material/mhydrogen = list(/singleton/reagent/hydrazine), // i guess
/obj/item/stack/material/steel = list(/singleton/reagent/iron, /singleton/reagent/carbon),
/obj/item/stack/material/plasteel = list(/singleton/reagent/iron, /singleton/reagent/iron, /singleton/reagent/carbon, /singleton/reagent/carbon, /singleton/reagent/platinum), //8 iron, 8 carbon, 4 platinum,
/obj/item/stack/material/sandstone = list(/singleton/reagent/silicon, /singleton/reagent/acetone),
/obj/item/stack/material/glass = list(/singleton/reagent/silicate),
/obj/item/stack/material/glass/phoronglass = list(/singleton/reagent/platinum, /singleton/reagent/silicate, /singleton/reagent/silicate, /singleton/reagent/silicate), //5 platinum, 15 silicate,
)
var/list/beaker_types = list( // also can't be ground
/obj/item/reagent_containers/glass,
@@ -439,7 +439,7 @@
beaker_contents += "Nothing<br>"
else
for(var/_R in beaker.reagents.reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
beaker_contents += "[beaker.reagents.reagent_volumes[_R]] - [R.name]<br>"
dat = {"
@@ -18,10 +18,10 @@
metabolism_type = H.species.reagent_tag
// run this first to get all the chem effects sorted
for(var/_R in reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
R.affect_chem_effect(parent, metabolism_type, metabolism_class, src)
// then run this to actually do what the chems do
for(var/_current in reagent_volumes)
var/decl/reagent/current = decls_repository.get_decl(_current)
var/singleton/reagent/current = GET_SINGLETON(_current)
current.on_mob_life(parent, metabolism_type, metabolism_class, src)
update_total()
+28 -28
View File
@@ -1,4 +1,4 @@
/decl/reagent
/singleton/reagent
var/name = "Reagent"
var/description = "A non-descript chemical."
var/taste_description = "old rotten bandaids"
@@ -33,47 +33,47 @@
var/default_temperature = T0C + 20 //This is its default spawning temperature, if none is provided.
var/specific_heat = -1 //The higher, the more difficult it is to change its temperature. 0 or lower values indicate that the specific heat has yet to be assigned.
var/fallback_specific_heat = -1 //Setting this value above 0 will set the specific heat to this value only if the system could not find an appropriate specific heat to assign using the recipe system.
//Never ever ever ever change this value for decl/reagent. This should only be used for massive, yet specific things like drinks or food where it is infeasible to assign a specific heat value.
//Never ever ever ever change this value for singleton/reagent. This should only be used for massive, yet specific things like drinks or food where it is infeasible to assign a specific heat value.
var/germ_adjust = 0 // for makeshift bandages/disinfectant
var/carbonated = FALSE // if it's carbonated or not
/decl/reagent/proc/initialize_data(var/newdata, var/datum/reagents/holder) // Called when the reagent is created.
/singleton/reagent/proc/initialize_data(var/newdata, var/datum/reagents/holder) // Called when the reagent is created.
if(!isnull(newdata))
return newdata
/decl/reagent/proc/remove_self(var/amount, var/datum/reagents/holder) // Shortcut
/singleton/reagent/proc/remove_self(var/amount, var/datum/reagents/holder) // Shortcut
holder.remove_reagent(type, amount) // Don't typecheck this, fix anywhere this is called with a null holder.
if(ishuman(holder.my_atom))
var/mob/living/carbon/human/H = holder.my_atom
if(H.vessel && (/decl/reagent/blood in H.vessel.reagent_data))
if(H.vessel.reagent_data[/decl/reagent/blood]["trace_chem"][type])
H.vessel.reagent_data[/decl/reagent/blood]["trace_chem"][type] += amount
if(H.vessel && (/singleton/reagent/blood in H.vessel.reagent_data))
if(H.vessel.reagent_data[/singleton/reagent/blood]["trace_chem"][type])
H.vessel.reagent_data[/singleton/reagent/blood]["trace_chem"][type] += amount
else
H.vessel.reagent_data[/decl/reagent/blood]["trace_chem"][type] = amount
H.vessel.reagent_data[/singleton/reagent/blood]["trace_chem"][type] = amount
// This doesn't apply to skin contact - this is for, e.g. extinguishers and sprays. The difference is that reagent is not directly on the mob's skin - it might just be on their clothing.
/decl/reagent/proc/touch_mob(var/mob/living/M, var/amount, var/datum/reagents/holder)
/singleton/reagent/proc/touch_mob(var/mob/living/M, var/amount, var/datum/reagents/holder)
return
/decl/reagent/proc/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) // Acid melting, cleaner cleaning, etc
/singleton/reagent/proc/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) // Acid melting, cleaner cleaning, etc
return
/decl/reagent/proc/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) // Cleaner cleaning, lube lubbing, etc, all go here
/singleton/reagent/proc/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) // Cleaner cleaning, lube lubbing, etc, all go here
return
/decl/reagent/proc/get_overdose(mob/living/carbon/M, location, datum/reagents/holder)
/singleton/reagent/proc/get_overdose(mob/living/carbon/M, location, datum/reagents/holder)
return overdose
/decl/reagent/proc/get_od_min_dose(mob/living/carbon/M, location, datum/reagents/holder)
/singleton/reagent/proc/get_od_min_dose(mob/living/carbon/M, location, datum/reagents/holder)
return od_minimum_dose
/decl/reagent/proc/is_overdosing(mob/living/carbon/M, location, datum/reagents/holder)
/singleton/reagent/proc/is_overdosing(mob/living/carbon/M, location, datum/reagents/holder)
var/OD = get_overdose(M, location, holder)
var/OD_min = get_od_min_dose(M, location, holder)
return OD && (REAGENT_VOLUME(holder, type) > OD) && (LAZYACCESS(M.chem_doses, type) > OD_min) && (!location || (location != CHEM_TOUCH)) //OD based on volume in blood, but waits for a small amount of the drug to metabolise before kicking in.
/decl/reagent/proc/on_mob_life(var/mob/living/carbon/M, var/alien, var/location, var/datum/reagents/holder) // Currently, on_mob_life is called on carbons. Any interaction with non-carbon mobs (lube) will need to be done in touch_mob.
/singleton/reagent/proc/on_mob_life(var/mob/living/carbon/M, var/alien, var/location, var/datum/reagents/holder) // Currently, on_mob_life is called on carbons. Any interaction with non-carbon mobs (lube) will need to be done in touch_mob.
if(!istype(M))
return
if(!affects_dead && M.stat == DEAD)
@@ -105,7 +105,7 @@
holder.set_temperature(holder.get_temperature() - round(bodytempchange,REAGENTS_BODYTEMP_MIN))
for(var/_R in M.bloodstr.reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
if(istype(R, conflicting_reagent))
affect_conflicting(M,alien,removed,R, holder)
@@ -123,22 +123,22 @@
remove_self(removed, holder)
// Called when a beaker is thrown or something is hit with it, AND the beaker doesn't break.
/decl/reagent/proc/apply_force(var/force, var/datum/reagents/holder)
/singleton/reagent/proc/apply_force(var/force, var/datum/reagents/holder)
return force
//Initial effect is called once when the reagent first starts affecting a mob.
/decl/reagent/proc/initial_effect(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
/singleton/reagent/proc/initial_effect(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
return
//Final effect is called once when the reagent finishes affecting a mob.
/decl/reagent/proc/final_effect(var/mob/living/carbon/M, var/datum/reagents/holder)
/singleton/reagent/proc/final_effect(var/mob/living/carbon/M, var/datum/reagents/holder)
return
/decl/reagent/proc/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/proc/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
return
// if your chem directly affects other chems, use this to make sure all the chem_effects are applied before the standard chem affect_thing is run
/decl/reagent/proc/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/proc/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(M))
return FALSE
if(!affects_dead && M.stat == DEAD)
@@ -147,27 +147,27 @@
return FALSE
return TRUE
/decl/reagent/proc/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/decl/reagent/conflicting_reagent, var/datum/reagents/holder)
/singleton/reagent/proc/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/singleton/reagent/conflicting_reagent, var/datum/reagents/holder)
M.adjustToxLoss(removed)
/decl/reagent/proc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/proc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(ingest_mul)
affect_blood(M, alien, removed * ingest_mul, holder)
/decl/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(touch_mul)
affect_blood(M, alien, removed * touch_mul, holder)
/decl/reagent/proc/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/proc/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(breathe_mul)
affect_blood(M, alien, removed * breathe_mul, holder)
/decl/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) // Overdose effect. Doesn't happen instantly.
/singleton/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) // Overdose effect. Doesn't happen instantly.
M.adjustToxLoss(REM)
/decl/reagent/proc/mix_data(var/newdata, var/newamount, var/datum/reagents/holder) // You have a reagent with data, and new reagent with its own data get added, how do you deal with that?
/singleton/reagent/proc/mix_data(var/newdata, var/newamount, var/datum/reagents/holder) // You have a reagent with data, and new reagent with its own data get added, how do you deal with that?
return REAGENT_DATA(holder, type)
//Check to use when seeing if the person has the minimum dose of the reagent. Useful for stopping minimum transfer rate IV drips from applying chem effects
/decl/reagent/proc/check_min_dose(var/mob/living/carbon/M, var/min_dose = 1)
/singleton/reagent/proc/check_min_dose(var/mob/living/carbon/M, var/min_dose = 1)
return (REAGENT_VOLUME(M.reagents, type) >= min_dose)
@@ -1,4 +1,4 @@
/decl/reagent/blood
/singleton/reagent/blood
name = "Blood"
reagent_state = LIQUID
metabolism = REM * 5
@@ -12,21 +12,21 @@
fallback_specific_heat = 3.617
/decl/reagent/blood/initialize_data(newdata, datum/reagents/holder)
/singleton/reagent/blood/initialize_data(newdata, datum/reagents/holder)
. = ..()
if(.)
LAZYINITLIST(.["trace_chem"])
/decl/reagent/blood/proc/handle_trace_chems(var/datum/reagents/holder)
/singleton/reagent/blood/proc/handle_trace_chems(var/datum/reagents/holder)
var/list/trace_chems = holder.reagent_data[type]["trace_chem"]
for(var/chem in trace_chems)
var/decl/reagent/R = decls_repository.get_decl(chem)
var/singleton/reagent/R = GET_SINGLETON(chem)
trace_chems[chem] = trace_chems[chem] - (R.metabolism / 10) // work your way out of the body but at 10th the speed
if(trace_chems[chem] < 0)
trace_chems -= chem
holder.reagent_data[type]["trace_chem"] = trace_chems
/decl/reagent/blood/mix_data(var/list/newdata, var/newamount, var/datum/reagents/holder)
/singleton/reagent/blood/mix_data(var/list/newdata, var/newamount, var/datum/reagents/holder)
var/list/data = ..()
if(LAZYACCESS(newdata, "trace_chem"))
var/list/other_chems = LAZYACCESS(newdata, "trace_chem")
@@ -44,13 +44,13 @@
remove_self(newamount * 0.5, holder) // So the blood isn't *entirely* useless
var/mob/living/carbon/human/recipient = holder.my_atom
if(istype(recipient) && holder == recipient.vessel)
recipient.reagents.add_reagent(/decl/reagent/toxin/coagulated_blood, newamount * 0.5)
recipient.reagents.add_reagent(/singleton/reagent/toxin/coagulated_blood, newamount * 0.5)
// it has no effect if added to the vessel
else
holder.add_reagent(/decl/reagent/toxin/coagulated_blood, newamount * 0.5)
holder.add_reagent(/singleton/reagent/toxin/coagulated_blood, newamount * 0.5)
. = data
/decl/reagent/blood/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/blood/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
if(!istype(T) || amount < 3)
return
@@ -68,7 +68,7 @@
if(B)
B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
/decl/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(ishuman(M))
if (M.mind && (MODE_VAMPIRE in M.mind.antag_datums))
if(LAZYLEN(REAGENT_DATA(holder, type) && M.dna.unique_enzymes == LAZYACCESS(holder.reagent_data[type], "blood_DNA"))) //so vampires can't drink their own blood
@@ -83,16 +83,16 @@
else if(dose > 5)
M.adjustToxLoss(removed)
/decl/reagent/blood/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/blood/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_MACHINE)
return
/decl/reagent/blood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/blood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.inject_blood(REAGENT_VOLUME(holder, type), holder)
remove_self(REAGENT_VOLUME(holder, type), holder)
#define WATER_LATENT_HEAT 19000 // How much heat is removed when applied to a hot turf, in J/unit (19000 makes 120 u of water roughly equivalent to 4L)
/decl/reagent/water
/singleton/reagent/water
name = "Water"
description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen."
reagent_state = LIQUID
@@ -112,12 +112,12 @@
germ_adjust = 0.05 // i mean, i guess you could try...
/decl/reagent/water/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/water/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(M))
return
M.adjustHydrationLoss(-6*removed)
/decl/reagent/water/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/water/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
if(!istype(T))
return
@@ -141,13 +141,13 @@
else if(amount >= 10)
T.wet_floor(WET_TYPE_WATER,amount)
/decl/reagent/water/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/water/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube))
var/obj/item/reagent_containers/food/snacks/monkeycube/cube = O
if(!cube.wrapped)
cube.Expand()
/decl/reagent/water/touch_mob(var/mob/M, var/amount, var/datum/reagents/holder)
/singleton/reagent/water/touch_mob(var/mob/M, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(M) && isliving(M))
var/mob/living/L = M
@@ -158,7 +158,7 @@
if(istype(M) && !istype(M, /mob/abstract))
M.color = initial(M.color)
/decl/reagent/water/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/water/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed, var/datum/reagents/holder)
if(istype(S))
S.adjustToxLoss( REAGENT_VOLUME(holder, type) * (removed/REM) * 0.23 )
if(!S.client)
@@ -169,7 +169,7 @@
S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the water touches it!"), SPAN_DANGER("Your flesh burns in the water!"))
/decl/reagent/water/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/water/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(istype(M, /mob/living/carbon/slime))
var/mob/living/carbon/slime/S = M
S.adjustToxLoss(12 * removed) // A slime having water forced down its throat would cause much more damage then being splashed on it
@@ -178,7 +178,7 @@
++S.discipline
/decl/reagent/fuel
/singleton/reagent/fuel
name = "Welding Fuel"
description = "Required for welders. Flammable."
reagent_state = LIQUID
@@ -192,19 +192,19 @@
fallback_specific_heat = 0.605
/decl/reagent/fuel/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/fuel/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
new /obj/effect/decal/cleanable/liquid_fuel(T, amount)
remove_self(amount, holder)
return
/decl/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/obj/item/organ/internal/augment/fuel_cell/aug = M.internal_organs_by_name[BP_AUG_FUEL_CELL]
if(aug && !aug.is_broken())
M.adjustNutritionLoss(-8 * removed)
else
M.adjustToxLoss(2 * removed)
/decl/reagent/fuel/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/fuel/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(L))
L.adjust_fire_stacks(amount / 10) // Splashing people with welding fuel to make them easy to ignite!
@@ -1,4 +1,4 @@
/decl/reagent/acetone
/singleton/reagent/acetone
name = "Acetone"
description = "A colorless liquid solvent used in chemical synthesis."
reagent_state = LIQUID
@@ -7,10 +7,10 @@
taste_description = "acid"
fallback_specific_heat = 0.567
/decl/reagent/acetone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/acetone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustToxLoss(removed * 3)
/decl/reagent/acetone/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) //I copied this wholesale from ethanol and could likely be converted into a shared proc. ~Techhead
/singleton/reagent/acetone/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) //I copied this wholesale from ethanol and could likely be converted into a shared proc. ~Techhead
if(istype(O, /obj/item/paper))
var/obj/item/paper/paperaffected = O
paperaffected.clearpaper()
@@ -27,7 +27,7 @@
to_chat(usr, "<span class='notice'>The solution dissolves the ink on the book.</span>")
return
/decl/reagent/aluminum
/singleton/reagent/aluminum
name = "Aluminum"
description = "A silvery white and ductile member of the boron group of chemical elements."
reagent_state = SOLID
@@ -36,7 +36,7 @@
taste_mult = 1.1
fallback_specific_heat = 0.811
/decl/reagent/ammonia
/singleton/reagent/ammonia
name = "Ammonia"
description = "A caustic substance commonly used in fertilizer or household cleaners. Poisonous to most lifeforms, lingers for a while if inhaled."
reagent_state = LIQUID
@@ -48,14 +48,14 @@
breathe_met = REM * 0.25
fallback_specific_heat = 1.048
/decl/reagent/ammonia/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/ammonia/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_DIONA)
M.adjustNutritionLoss(-removed*3)
else
if(prob(15))
M.add_chemical_effect(CE_NEPHROTOXIC, 1)
/decl/reagent/ammonia/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/ammonia/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_DIONA)
M.adjustNutritionLoss(-removed*3)
else if(REAGENT_VOLUME(holder, type) > 15)
@@ -68,13 +68,13 @@
if(prob(5))
to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something really digusting.", "Your chest doesn't feel so great.")))
/decl/reagent/ammonia/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/ammonia/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(!(alien == IS_DIONA))
M.adjustFireLoss(20)
to_chat(M, SPAN_WARNING(pick("Your skin burns!", "The chemical is melting your skin!", "Wash it off, wash it off!")))
remove_self(REAGENT_VOLUME(holder, type), holder)
/decl/reagent/carbon
/singleton/reagent/carbon
name = "Carbon"
description = "A chemical element, the building block of life."
reagent_state = SOLID
@@ -85,7 +85,7 @@
fallback_specific_heat = 0.018
scannable = TRUE
/decl/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/datum/reagents/ingested = M.get_ingested_reagents()
if(ingested && LAZYLEN(ingested.reagent_volumes) > 1) // Need to have at least 2 reagents - cabon and something to remove
var/effect = 1 / (ingested.reagent_volumes.len - 1)
@@ -94,7 +94,7 @@
continue
ingested.remove_reagent(_R, removed * effect)
/decl/reagent/carbon/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/carbon/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(!istype(T, /turf/space))
var/obj/effect/decal/cleanable/dirt/dirtoverlay = locate(/obj/effect/decal/cleanable/dirt, T)
if (!dirtoverlay)
@@ -103,7 +103,7 @@
else
dirtoverlay.alpha = min(dirtoverlay.alpha + amount * 30, 255)
/decl/reagent/copper
/singleton/reagent/copper
name = "Copper"
description = "A highly ductile metal."
color = "#6E3B08"
@@ -111,11 +111,11 @@
fallback_specific_heat = 1.148
scannable = TRUE
/decl/reagent/copper/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/copper/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if (alien & IS_SKRELL)
M.add_chemical_effect(CE_BLOODRESTORE, 3 * removed)
/decl/reagent/alcohol //Parent class for all alcoholic reagents, though this one shouldn't be used anywhere.
/singleton/reagent/alcohol //Parent class for all alcoholic reagents, though this one shouldn't be used anywhere.
name = null // This null name should prevent alcohol from being added to global lists.
description = "An abstract type you shouldn't be able to see."
reagent_state = LIQUID
@@ -147,19 +147,19 @@
var/blood_to_ingest_scale = 2
/decl/reagent/alcohol/touch_mob(mob/living/L, amount, var/datum/reagents/holder)
/singleton/reagent/alcohol/touch_mob(mob/living/L, amount, var/datum/reagents/holder)
. = ..()
if (istype(L) && strength > 40)
L.adjust_fire_stacks((amount / (flammability_divisor || 1)) * (strength / 100))
/decl/reagent/alcohol/affect_blood(mob/living/carbon/M, alien, removed, var/datum/reagents/holder)
/singleton/reagent/alcohol/affect_blood(mob/living/carbon/M, alien, removed, var/datum/reagents/holder)
if(prob(10*(strength/100)))
to_chat(M, SPAN_DANGER("Your insides are burning!")) // it would be quite painful to inject alcohol or otherwise get it in your bloodstream directly, without metabolising any
M.adjustToxLoss(removed * blood_to_ingest_scale * (strength/100) )
affect_ingest(M,alien,removed * blood_to_ingest_scale, holder)
return
/decl/reagent/alcohol/affect_ingest(mob/living/carbon/M, alien, removed, var/datum/reagents/holder)
/singleton/reagent/alcohol/affect_ingest(mob/living/carbon/M, alien, removed, var/datum/reagents/holder)
if(alien != IS_DIONA)
M.intoxication += (strength / 100) * removed * 3.5
@@ -179,7 +179,7 @@
if (adj_temp < 0 && M.bodytemperature > targ_temp)
M.bodytemperature = min(targ_temp, M.bodytemperature - (adj_temp * TEMPERATURE_DAMAGE_COEFFICIENT))
/decl/reagent/alcohol
/singleton/reagent/alcohol
name = "Ethanol"
description = "A well-known alcohol with a variety of applications."
flammability_divisor = 10
@@ -194,7 +194,7 @@
distillation_point = T0C + 78.37
/decl/reagent/alcohol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/alcohol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(M))
return
var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"]
@@ -209,7 +209,7 @@
..()
/decl/reagent/alcohol/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/alcohol/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if(istype(O, /obj/item/paper))
var/obj/item/paper/paperaffected = O
paperaffected.clearpaper()
@@ -229,7 +229,7 @@
// Butanol is a common alcohol that is fairly ineffective for humans and most other species, but highly intoxicating to unathi.
// Most behavior is inherited from alcohol.
/decl/reagent/alcohol/butanol
/singleton/reagent/alcohol/butanol
name = "Butanol"
description = "A fairly harmless alcohol that has intoxicating effects on certain species."
reagent_state = LIQUID
@@ -247,7 +247,7 @@
distillation_point = T0C + 117.7
/decl/reagent/alcohol/butanol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/alcohol/butanol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(M))
return
var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"]
@@ -262,7 +262,7 @@
..()
/decl/reagent/hydrazine
/singleton/reagent/hydrazine
name = "Hydrazine"
description = "A toxic, colorless, flammable liquid with a strong ammonia-like odor, in hydrate form."
reagent_state = LIQUID
@@ -273,27 +273,27 @@
fallback_specific_heat = 0.549 //Unknown
/decl/reagent/hydrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/hydrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/obj/item/organ/internal/augment/fuel_cell/aug = M.internal_organs_by_name[BP_AUG_FUEL_CELL]
if(aug && !aug.is_broken())
M.adjustNutritionLoss(-12 * removed)
else
M.adjustToxLoss(4 * removed)
/decl/reagent/hydrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // Hydrazine is both toxic and flammable.
/singleton/reagent/hydrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // Hydrazine is both toxic and flammable.
M.adjust_fire_stacks(removed / 12)
M.adjustToxLoss(0.2 * removed)
/decl/reagent/hydrazine/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/hydrazine/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
new /obj/effect/decal/cleanable/liquid_fuel(T, amount)
remove_self(amount, holder)
return
/decl/reagent/hydrazine/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/hydrazine/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
H.add_chemical_effect(CE_PNEUMOTOXIC, removed * 0.5)
/decl/reagent/iron
/singleton/reagent/iron
name = "Iron"
description = "Pure iron is a metal."
reagent_state = SOLID
@@ -303,11 +303,11 @@
fallback_specific_heat = 1.181
/decl/reagent/iron/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/iron/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if (!(alien & (IS_SKRELL | IS_VAURCA)))
M.add_chemical_effect(CE_BLOODRESTORE, 3 * removed)
/decl/reagent/lithium
/singleton/reagent/lithium
name = "Lithium"
description = "A chemical element, used as an antidepressant."
reagent_state = SOLID
@@ -316,13 +316,13 @@
fallback_specific_heat = 0.633
/decl/reagent/lithium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/lithium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(M.canmove && !M.restrained() && !(istype(M.loc, /turf/space)))
step(M, pick(cardinal))
if(prob(5) && ishuman(M))
M.emote(pick("twitch", "drool", "moan"))
/decl/reagent/mercury
/singleton/reagent/mercury
name = "Mercury"
description = "A poisonous chemical element, one of two that is a liquid at human room temperature and pressure."
reagent_state = LIQUID
@@ -337,7 +337,7 @@
fallback_specific_heat = 0.631
/decl/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_NEUROTOXIC, 1*removed)
var/dose = M.chem_doses[type]
if(dose > 1)
@@ -356,7 +356,7 @@
M.add_chemical_effect(CE_UNDEXTROUS, 1) //A budget dextrotoxin that's a tad more dangerous and slower to take effect.
M.Weaken(10)
/decl/reagent/phosphorus
/singleton/reagent/phosphorus
name = "Phosphorus"
description = "A chemical element, the backbone of biological energy carriers."
reagent_state = SOLID
@@ -365,7 +365,7 @@
fallback_specific_heat = 0.569
/decl/reagent/potassium
/singleton/reagent/potassium
name = "Potassium"
description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water."
reagent_state = SOLID
@@ -374,13 +374,13 @@
fallback_specific_heat = 0.214
/decl/reagent/potassium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/potassium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 3)
M.add_chemical_effect(CE_PULSE, 1)
if(REAGENT_VOLUME(holder, type) > 10)
M.add_chemical_effect(CE_PULSE, 1)
/decl/reagent/radium
/singleton/reagent/radium
name = "Radium"
description = "Radium is an alkaline earth metal. It is extremely radioactive."
reagent_state = SOLID
@@ -391,10 +391,10 @@
fallback_specific_heat = 0.220
var/message_shown = FALSE
/decl/reagent/radium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/radium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.apply_effect(10 * removed, IRRADIATE, blocked = 0) // Radium may increase your chances to cure a disease
/decl/reagent/radium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/radium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(amount >= 3)
if(!istype(T, /turf/space))
var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T)
@@ -402,7 +402,7 @@
new /obj/effect/decal/cleanable/greenglow(T)
return
/decl/reagent/acid
/singleton/reagent/acid
name = "Sulphuric Acid"
description = "A very corrosive mineral acid with the molecular formula H2SO4."
reagent_state = LIQUID
@@ -415,14 +415,14 @@
fallback_specific_heat = 0.815
/decl/reagent/acid/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/acid/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.take_organ_damage(0, removed * power)
/decl/reagent/acid/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/acid/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
H.add_chemical_effect(CE_PNEUMOTOXIC, removed * power * 0.5)
/decl/reagent/acid/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // This is the most interesting
/singleton/reagent/acid/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // This is the most interesting
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.head)
@@ -481,7 +481,7 @@
else
M.take_organ_damage(0, removed * power * 0.1) // Balance. The damage is instant, so it's weaker. 10 units -> 5 damage, double for pacid. 120 units beaker could deal 60, but a) it's burn, which is not as dangerous, b) it's a one-use weapon, c) missing with it will splash it over the ground and d) clothes give some protection, so not everything will hit
/decl/reagent/acid/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/acid/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if(O.unacidable)
return
if((istype(O, /obj/item) || istype(O, /obj/effect/plant)) && (amount > meltdose))
@@ -492,7 +492,7 @@
qdel(O)
remove_self(meltdose, holder) // 10 units of acid will not melt EVERYTHING on the tile
/decl/reagent/acid/hydrochloric //Like sulfuric, but less toxic and more acidic.
/singleton/reagent/acid/hydrochloric //Like sulfuric, but less toxic and more acidic.
name = "Hydrochloric Acid"
description = "A very corrosive mineral acid with the molecular formula HCl."
reagent_state = LIQUID
@@ -502,7 +502,7 @@
taste_description = "stomach acid"
fallback_specific_heat = 1.710
/decl/reagent/acid/polyacid //Not in dispensers, but it should be here
/singleton/reagent/acid/polyacid //Not in dispensers, but it should be here
name = "Polytrinic Acid"
description = "Polytrinic acid is a an extremely corrosive chemical substance."
reagent_state = LIQUID
@@ -511,13 +511,13 @@
meltdose = 4
taste_description = "acid"
/decl/reagent/acid/stomach
/singleton/reagent/acid/stomach
name = "Stomach Acid"
taste_description = "coppery foulness"
power = 2
color = "#d8ff00"
/decl/reagent/silicon
/singleton/reagent/silicon
name = "Silicon"
description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon."
reagent_state = SOLID
@@ -525,7 +525,7 @@
taste_description = "metal"
fallback_specific_heat = 2.650
/decl/reagent/sodium
/singleton/reagent/sodium
name = "Sodium"
description = "A chemical element, readily reacts with water."
reagent_state = SOLID
@@ -533,7 +533,7 @@
taste_description = "salty metal"
fallback_specific_heat = 0.483
/decl/reagent/sugar
/singleton/reagent/sugar
name = "Sugar"
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
reagent_state = SOLID
@@ -550,10 +550,10 @@
condiment_desc = "Tasty space sugar!"
condiment_icon_state = "sugar"
/decl/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustNutritionLoss(-removed*3)
/decl/reagent/sulfur
/singleton/reagent/sulfur
name = "Sulfur"
description = "A chemical element with a pungent smell."
reagent_state = SOLID
@@ -563,11 +563,11 @@
fallback_specific_heat = 0.503
/decl/reagent/sulfur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/sulfur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if (alien & IS_VAURCA)
M.add_chemical_effect(CE_BLOODRESTORE, 3 * removed)
/decl/reagent/tungsten
/singleton/reagent/tungsten
name = "Tungsten"
description = "A chemical element, and a strong oxidising agent."
reagent_state = SOLID
@@ -1,4 +1,4 @@
/decl/reagent/space_drugs
/singleton/reagent/space_drugs
name = "Mercury Monolithium Sucrose"
description = "Mercury Monolithium Sucrose, or MMS, is a synthetic relaxant. It's both abused and used as a chemical precursor. Lasts twice as long when inhaled."
reagent_state = LIQUID
@@ -9,10 +9,10 @@
taste_mult = 0.4
breathe_met = REM * 0.5 * 0.5
/decl/reagent/space_drugs/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/space_drugs/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made.")))
/decl/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
@@ -41,11 +41,11 @@
if(prob(3))
M.emote(pick("smile","giggle","moan","yawn","laugh","drool","twitch"))
/decl/reagent/space_drugs/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder)
/singleton/reagent/space_drugs/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder)
. = ..()
M.hallucination = max(M.hallucination, 30 * scale)
/decl/reagent/serotrotium
/singleton/reagent/serotrotium
name = "Serotrotium"
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans."
reagent_state = LIQUID
@@ -55,7 +55,7 @@
taste_description = "bitterness"
fallback_specific_heat = 1.2
/decl/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(!istype(H) || (istype(H) && (H.species.flags & NO_BLOOD))) //If we're not human OR if we're human but don't have blood.
return
@@ -63,7 +63,7 @@
M.emote(pick("twitch", "drool", "moan", "gasp"))
return
/decl/reagent/cryptobiolin
/singleton/reagent/cryptobiolin
name = "Cryptobiolin"
description = "Cryptobiolin causes confusion and dizzyness."
reagent_state = LIQUID
@@ -72,7 +72,7 @@
overdose = REAGENTS_OVERDOSE
taste_description = "sourness"
/decl/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
@@ -81,7 +81,7 @@
M.add_chemical_effect(CE_HALLUCINATE, 1)
M.confused = max(M.confused, 20)
/decl/reagent/impedrezene
/singleton/reagent/impedrezene
name = "Impedrezene"
description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions."
reagent_state = LIQUID
@@ -89,7 +89,7 @@
overdose = REAGENTS_OVERDOSE
taste_description = "numbness"
/decl/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.jitteriness = max(M.jitteriness - 5, 0)
M.confused = max(M.confused, 10)
M.add_chemical_effect(CE_NEUROTOXIC, 2*removed)
@@ -98,7 +98,7 @@
if(prob(10) && ishuman(M))
M.emote("drool")
/decl/reagent/mindbreaker
/singleton/reagent/mindbreaker
name = "Mindbreaker Toxin"
description = "An incredibly potent hallucinogen designed to wreak havoc on the brain, resulting in disturbing hallucinations with long-term impacts on those given the drug - this drug is not pleasant, thus the name, and only hardcore addicts use the drug recreationally."
reagent_state = LIQUID
@@ -107,18 +107,18 @@
overdose = REAGENTS_OVERDOSE
taste_description = "sourness"
/decl/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.hallucination = max(M.hallucination, 100)
M.add_chemical_effect(CE_HALLUCINATE, 2)
M.add_chemical_effect(CE_NEUROTOXIC, 2*removed)
/decl/reagent/mindbreaker/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/mindbreaker/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_NEUROTOXIC, 4*removed)
if(prob(5))
to_chat(M, SPAN_DANGER(pick("You feel the strongest of pains deeply rooted beneath your skull.", "Your head feels like it's going to burst!", "Your head stings!")))
M.adjustHalLoss(20)
/decl/reagent/psilocybin
/singleton/reagent/psilocybin
name = "Psilocybin"
description = "A strong psychotropic derived from certain species of mushroom."
color = "#E700E7"
@@ -131,10 +131,10 @@
condiment_icon_state = "psilocybin"
condiment_center_of_mass = list("x"=16, "y"=8)
/decl/reagent/psilocybin/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/psilocybin/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "Your eyes open wide and you look upon this new world you now see.", "You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made.")))
/decl/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
@@ -165,14 +165,14 @@
if(ishuman(M) && prob(min(15, dose*5)))
M.emote(pick("twitch", "giggle"))
/decl/reagent/psilocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
/singleton/reagent/psilocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type])
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "You are dying... but that's okay, right?", "You are at peace with the universe.", "The stars are beckoning you to them.")))
if(prob(5))
M.custom_pain("You feel a sharp pain in your stomach!", 10)
/decl/reagent/raskara_dust
/singleton/reagent/raskara_dust
name = "Raskara Dust"
description = "A powdery narcotic found in the gang-ridden slums of Biesel and Sol. Known for it's relaxing poperties that cause trance-like states when inhaled. Casual users tend to snort or inhale, while hardcore users inject."
reagent_state = SOLID
@@ -183,16 +183,16 @@
breathe_met = REM * 0.2
ingest_met = REM * 0.3
/decl/reagent/raskara_dust/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/raskara_dust/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You gradually begin to slow down, and so does everything around you.", "You lean back and begin to fall... and fall... and fall.", "This is already the best decision you've ever made.")))
/decl/reagent/raskara_dust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/raskara_dust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_PAINKILLER, 10)
M.drowsiness += 1 * removed
if(prob(3))
to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today.")))
/decl/reagent/raskara_dust/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/raskara_dust/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_PAINKILLER, 10)
M.drowsiness += 2 * removed
if(prob(5) && ishuman(M))
@@ -200,7 +200,7 @@
if(prob(3))
to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today.")))
/decl/reagent/raskara_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/raskara_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_PAINKILLER, 30)
M.drowsiness += 3 * removed
if(prob(5))
@@ -208,7 +208,7 @@
if(prob(5))
to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today.")))
/decl/reagent/raskara_dust/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/raskara_dust/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "Are you ascending to another plane of existence... that's so cool?", "You are dying... but that's okay, right?", "You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual.")))
if(prob(M.chem_doses[type] / 3))
@@ -217,7 +217,7 @@
else
M.seizure()
/decl/reagent/night_juice
/singleton/reagent/night_juice
name = "Nightlife"
description = "A liquid narcotic commonly used by the more wealthy drug-abusing citizens of the Eridani Federation. Works as a potent stimulant that causes extreme awakefulness. Lethal in high doses."
reagent_state = LIQUID
@@ -229,14 +229,14 @@
breathe_mul = 0.5
ingest_mul = 0.125
/decl/reagent/night_juice/initialize_data(newdata, datum/reagents/holder)
/singleton/reagent/night_juice/initialize_data(newdata, datum/reagents/holder)
. = ..()
LAZYSET(., "special", 0)
/decl/reagent/night_juice/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/night_juice/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You feel a wave of pleasure smash into you and liven you up!", "You're startled by the sheer strength and speed of this drug!", "You already feel so damn good!", "This is the best decision you've ever made!")))
/decl/reagent/night_juice/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/night_juice/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(M))
return
@@ -256,7 +256,7 @@
var/obj/item/organ/H = M.internal_organs_by_name[BP_HEART]
H.take_damage(holder.reagent_data[type]["special"] * removed * 0.025)
/decl/reagent/night_juice/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/night_juice/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0)
if(prob(2))
M.emote("shiver")
@@ -265,7 +265,7 @@
if(prob(25))
M.add_chemical_effect(CE_NEPHROTOXIC, 1)
/decl/reagent/guwan_painkillers
/singleton/reagent/guwan_painkillers
name = "Tremble"
description = "An ancient tribal Unathi narcotic based on the outer gel layer of the seeds of a poisonous flower. The chemical itself acts as a very potent omni-healer when consumed, however as the chemical metabolizes, it causes immense and crippling pain."
reagent_state = LIQUID
@@ -275,10 +275,10 @@
overdose = 10
fallback_specific_heat = 1
/decl/reagent/guwan_painkillers/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/guwan_painkillers/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
affect_ingest(M, alien, removed*0.5, holder)
/decl/reagent/guwan_painkillers/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/guwan_painkillers/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/dose = M.chem_doses[type]
if(dose > 5 && REAGENT_VOLUME(holder, type) <= 3)
M.adjustHalLoss(removed*300) //So oxycomorphine can't be used with it.
@@ -290,7 +290,7 @@
M.add_chemical_effect(CE_PAINKILLER, 5)
M.heal_organ_damage(2 * removed,2 * removed)
/decl/reagent/toxin/stimm //Homemade Hyperzine, ported from Polaris
/singleton/reagent/toxin/stimm //Homemade Hyperzine, ported from Polaris
name = "Stimm"
description = "A homemade stimulant with some serious side-effects."
taste_description = "sweetness"
@@ -300,7 +300,7 @@
overdose = 10
strength = 3
/decl/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_TAJARA)
removed *= 1.25
..()
@@ -313,14 +313,14 @@
M.take_organ_damage(6 * removed, 0)
M.add_up_to_chemical_effect(CE_SPEEDBOOST, 1)
/decl/reagent/toxin/krok
/singleton/reagent/toxin/krok
name = "Krok Juice"
description = "An advanced Eridanian variant of ancient krokodil, known for causing prosthetic malfunctions."
strength = 3
metabolism = REM
overdose = 15
/decl/reagent/toxin/krok/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/krok/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(!istype(H))
return
@@ -349,7 +349,7 @@
if(eyes.status & ORGAN_ROBOT)
M.hallucination = max(M.hallucination, 40)
/decl/reagent/wulumunusha
/singleton/reagent/wulumunusha
name = "Wulumunusha Extract"
description = "The extract of the wulumunusha fruit, it can cause hallucinations and muteness."
color = "#61E2EC"
@@ -361,10 +361,10 @@
condiment_icon_state = "wuluextract"
/decl/reagent/wulumunusha/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/wulumunusha/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("Your eyes open wide and you look upon this new world you now see.", "You close your eyes, and when they open, everything appears so much more vibrant.")))
/decl/reagent/wulumunusha/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/wulumunusha/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.druggy = max(M.druggy, 100)
M.silent = max(M.silent, 5)
if(prob(3) && !isskrell(M))
@@ -372,11 +372,11 @@
if(prob(3) && isskrell(M))
to_chat(M, SPAN_ALIEN(pick("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?", "You feel safe and comfortable.")))
/decl/reagent/wulumunusha/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder)
/singleton/reagent/wulumunusha/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder)
if(isskrell(M))
M.hallucination = max(M.hallucination, 10 * scale) //light hallucinations that afflict skrell
/decl/reagent/ambrosia_extract
/singleton/reagent/ambrosia_extract
name = "Ambrosia Extract"
description = "Ambrosia Extract is a fairly strong relaxant commonly found in Ambrosia plants. It's one of the most widely available drugs in human space."
reagent_state = LIQUID
@@ -392,7 +392,7 @@
condiment_center_of_mass = list("x"=16, "y"=8)
/decl/reagent/ambrosia_extract/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/ambrosia_extract/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
@@ -416,11 +416,11 @@
if(prob(3))
to_chat(M, SPAN_WARNING(pick("It's a little bit difficult to focus.","You feel a bit lethargic."," It's kinda hard to pay attention to what you're doing.", "Am I forgetting something?", "What was I doing again?")))
/decl/reagent/ambrosia_extract/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder)
/singleton/reagent/ambrosia_extract/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder)
. = ..()
M.hallucination = max(M.hallucination, 30 * scale)
/decl/reagent/joy
/singleton/reagent/joy
name = "Joy"
description = "An expensive and illegal drug often abused by those who find no other means to numb their physical and mental pains. A Joy addict is a truly sad sight."
reagent_state = LIQUID
@@ -430,10 +430,10 @@
od_minimum_dose = 2
taste_description = "tranquility"
/decl/reagent/joy/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/joy/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD(pick("You feel a numbing sensation spread from within you.", "A numbing sensation builds within you.", "Everything will be okay... just relax.")))
/decl/reagent/joy/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/joy/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_PAINKILLER, 100)
M.add_chemical_effect(CE_NEUROTOXIC, 4*removed)
M.add_chemical_effect(CE_PACIFIED, 1)
@@ -447,7 +447,7 @@
if(prob(3))
to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You lose all sense of connection to the real world.", "Everything is so tranquil.", "You feel totaly detached from reality.", "Your feel disconnected from your body.", "You are aware of nothing but your conscious thoughts.", "You keep falling... and falling... and falling - never stopping.", "Is this what it feels like to be dead?", "Your memories are hazy... all you have ever known is this feeling.", "You're watching yourself from afar - detached from your physical body.")))
/decl/reagent/joy/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/datum/reagents/holder)
/singleton/reagent/joy/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/datum/reagents/holder)
M.ear_deaf = 20
M.add_chemical_effect(CE_EMETIC, M.chem_doses[type])
M.adjustOxyLoss(2 * removed)
@@ -456,10 +456,10 @@
if(prob(3))
to_chat(M, SPAN_GOOD(pick("You're dying... but you don't care.", "The numbing sensation continues to build and build.", "One more hit... and maybe even death will cease to exist.")))
/decl/reagent/joy/final_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
/singleton/reagent/joy/final_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
to_chat(M, SPAN_GOOD("You feel grounded in the real world again... for better or worse."))
/decl/reagent/xuxigas
/singleton/reagent/xuxigas
name = "Xu'Xi Gas"
description = "A recreational drug hailing from Qerr'Malic that must be inhaled. It produces a mild high similar to Wulumunusha and is known to make users susceptible to persuasion. Most forms of Xu'Xi Gas found outside of the Nralakk Federation are cheap, synthetic substitutes. Only works when inhaled."
color = "#58D373"
@@ -468,7 +468,7 @@
overdose = REAGENTS_OVERDOSE
breathe_met = REM*0.2
/decl/reagent/xuxigas/affect_breathe(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/xuxigas/affect_breathe(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
M.druggy = max(M.druggy, M.chem_doses[type]/2)
M.add_chemical_effect(CE_PULSE, -1)
if(prob(3))
@@ -478,11 +478,11 @@
if(prob(2) && isskrell(M))
to_chat(M, SPAN_ALIEN(pick("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?")))
/decl/reagent/xuxigas/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/xuxigas/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(3))
to_chat(M, SPAN_WARNING(pick("You feel particularly vulnerable to being swayed by those around you...", "You have an urge to please those around you.", "This high cannot end... where can you get more?", "You don't want this feeling to end.")))
/decl/reagent/skrell_nootropic
/singleton/reagent/skrell_nootropic
name = "Co'qnixq Wuxi"
description = "Co'qnixq Wuxi, or Co'qnixq Nootropic, has existed since before Glorsh, and was developed as a cognitive enhancer for Skrell with on-set dementia. When taken, one's consciousness is heightened greatly alongside receiving mild energy boost. Frequently used as a 'smart drug' by students and scientists."
color = "#E3B0E5"
@@ -494,7 +494,7 @@
var/psi_boosted = FALSE
var/initial_stamina
/decl/reagent/skrell_nootropic/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/skrell_nootropic/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(M.psi && !psi_boosted)
initial_stamina = M.psi.max_stamina
M.psi.max_stamina = M.psi.max_stamina*1.25
@@ -502,12 +502,12 @@
if(prob(2))
to_chat(M, SPAN_GOOD(pick("You have a renewed sense of focus.", "You feel more determined to get things done.", "You feel more confident in your own abilities.", "Your head-space feels tidy and organised - now's the time to get to work.", "You could climb a mountain right now!")))
/decl/reagent/skrell_nootropic/final_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/skrell_nootropic/final_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(M.psi && psi_boosted)
M.psi.max_stamina = initial_stamina
psi_boosted = FALSE
/decl/reagent/skrell_nootropic/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/skrell_nootropic/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_SPEEDBOOST, 0.5)
if(prob(25))
M.add_chemical_effect(CE_NEPHROTOXIC, 0.5)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,6 +1,6 @@
/* Paint and crayons */
/decl/reagent/crayon_dust
/singleton/reagent/crayon_dust
name = "Crayon Dust"
description = "Intensely coloured powder obtained by grinding crayons."
reagent_state = LIQUID
@@ -9,47 +9,47 @@
taste_description = "the back of class"
fallback_specific_heat = 0.4
/decl/reagent/crayon_dust/red
/singleton/reagent/crayon_dust/red
name = "Red Crayon Dust"
color = "#FE191A"
taste_description = "chalky strawberry wax"
/decl/reagent/crayon_dust/orange
/singleton/reagent/crayon_dust/orange
name = "Orange Crayon Dust"
color = "#FFBE4F"
taste_description = "chalky orange peels"
/decl/reagent/crayon_dust/yellow
/singleton/reagent/crayon_dust/yellow
name = "Yellow Crayon Dust"
color = "#FDFE7D"
taste_description = "chalky lemon rinds"
/decl/reagent/crayon_dust/green
/singleton/reagent/crayon_dust/green
name = "Green Crayon Dust"
color = "#18A31A"
taste_description = "chalky lime rinds"
/decl/reagent/crayon_dust/blue
/singleton/reagent/crayon_dust/blue
name = "Blue Crayon Dust"
color = "#247CFF"
taste_description = "chalky blueberry skins"
/decl/reagent/crayon_dust/purple
/singleton/reagent/crayon_dust/purple
name = "Purple Crayon Dust"
color = "#CC0099"
taste_description = "chalky grape skins"
/decl/reagent/crayon_dust/grey //Mime
/singleton/reagent/crayon_dust/grey //Mime
name = "Grey Crayon Dust"
color = "#808080"
taste_description = "chalky crushed dreams"
/decl/reagent/crayon_dust/brown //Rainbow
/singleton/reagent/crayon_dust/brown //Rainbow
name = "Brown Crayon Dust"
color = "#846F35"
taste_description = "raw, powerful creativity"
/decl/reagent/paint
/singleton/reagent/paint
name = "Paint"
description = "This paint will stick to almost any object."
reagent_state = LIQUID
@@ -60,15 +60,15 @@
fallback_specific_heat = 0.2
var/unpaintable_types = list(/obj/item/reagent_containers, /obj/machinery/chem_master, /obj/machinery/chemical_dispenser, /obj/machinery/chem_heater)
/decl/reagent/paint/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/paint/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(istype(T) && !istype(T, /turf/space))
T.color = holder.get_color()
/decl/reagent/paint/touch_mob(var/mob/living/M, var/amount, var/datum/reagents/holder)
/singleton/reagent/paint/touch_mob(var/mob/living/M, var/amount, var/datum/reagents/holder)
if(istype(M))
M.color = holder.get_color()
/decl/reagent/paint/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/paint/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
//special checks for special items
var/setcolor = holder.get_color()
if(is_type_in_list(O, unpaintable_types))
@@ -86,7 +86,7 @@
/* Things that didn't fit anywhere else */
/decl/reagent/adminordrazine //An OP chemical for admins
/singleton/reagent/adminordrazine //An OP chemical for admins
name = "Adminordrazine"
description = "It's magic, I ain't gotta explain shit."
reagent_state = LIQUID
@@ -101,10 +101,10 @@
fallback_specific_heat = 10 //Magical.
/decl/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
affect_blood(M, alien, removed, holder)
/decl/reagent/adminordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/adminordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.setCloneLoss(0)
M.setOxyLoss(0)
M.total_radiation = 0
@@ -128,7 +128,7 @@
M.jitteriness = 0
M.intoxication = 0
/decl/reagent/gold
/singleton/reagent/gold
name = "Gold"
description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known."
reagent_state = SOLID
@@ -136,7 +136,7 @@
taste_description = "expensive metal"
fallback_specific_heat = 2.511
/decl/reagent/silver
/singleton/reagent/silver
name = "Silver"
description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal."
reagent_state = SOLID
@@ -144,7 +144,7 @@
taste_description = "expensive yet reasonable metal"
fallback_specific_heat = 0.241
/decl/reagent/uranium
/singleton/reagent/uranium
name = "Uranium"
description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive."
reagent_state = SOLID
@@ -152,13 +152,13 @@
taste_description = "the inside of a reactor"
fallback_specific_heat = 2.286
/decl/reagent/uranium/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/uranium/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
affect_ingest(M, alien, removed, holder)
/decl/reagent/uranium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/uranium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.apply_effect(5 * removed, IRRADIATE, blocked = 0)
/decl/reagent/uranium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/uranium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(amount >= 3)
if(!istype(T, /turf/space))
var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T)
@@ -166,7 +166,7 @@
new /obj/effect/decal/cleanable/greenglow(T)
return
/decl/reagent/platinum
/singleton/reagent/platinum
name ="Platinum"
description = "Platinum is a naturally occuring silvery metalic element."
reagent_state = SOLID
@@ -174,7 +174,7 @@
taste_description = "salty metalic miner tears"
fallback_specific_heat = 0.2971
/decl/reagent/water/holywater
/singleton/reagent/water/holywater
name = "Holy Water"
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
color = "#E0E8EF"
@@ -183,7 +183,7 @@
glass_name = "glass of holy water"
glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
/decl/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
..()
if(ishuman(M))
if(M.mind)
@@ -196,38 +196,38 @@
M.adjust_fire_stacks(10)
M.IgniteMob()
/decl/reagent/water/holywater/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/water/holywater/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(amount >= 5)
T.holy = 1
return
/decl/reagent/water/holywater/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/water/holywater/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien && alien == IS_UNDEAD)
M.adjust_fire_stacks(5)
M.IgniteMob()
/decl/reagent/diethylamine
/singleton/reagent/diethylamine
name = "Diethylamine"
description = "A secondary amine, mildly corrosive."
reagent_state = LIQUID
color = "#604030"
taste_description = "iron"
/decl/reagent/surfactant // Foam precursor
/singleton/reagent/surfactant // Foam precursor
name = "Azosurfactant"
description = "A isocyanate liquid that forms a foam when mixed with water."
reagent_state = LIQUID
color = "#9E6B38"
taste_description = "metal"
/decl/reagent/foaming_agent // Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually.
/singleton/reagent/foaming_agent // Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually.
name = "Foaming Agent"
description = "A agent that yields metallic foam when mixed with light metal and a strong acid."
reagent_state = SOLID
color = "#664B63"
taste_description = "metal"
/decl/reagent/thermite
/singleton/reagent/thermite
name = "Thermite"
description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls."
reagent_state = SOLID
@@ -235,7 +235,7 @@
touch_met = 50
taste_description = "sweet tasting metal"
/decl/reagent/thermite/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/thermite/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
. = ..()
if(amount >= 5)
if(istype(T, /turf/simulated/wall))
@@ -245,15 +245,15 @@
remove_self(5, holder)
return
/decl/reagent/thermite/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/thermite/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(L))
L.adjust_fire_stacks(amount / 5)
/decl/reagent/thermite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/thermite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustFireLoss(3 * removed)
/decl/reagent/spacecleaner
/singleton/reagent/spacecleaner
name = "Space Cleaner"
description = "A compound used to clean things. Now with 50% more sodium hypochlorite!"
reagent_state = LIQUID
@@ -262,17 +262,17 @@
taste_description = "sourness"
germ_adjust = 10
/decl/reagent/spacecleaner/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/spacecleaner/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
O.clean_blood()
/decl/reagent/spacecleaner/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/spacecleaner/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(amount >= 1)
if(istype(T, /turf/simulated))
var/turf/simulated/S = T
S.dirt = 0
T.clean_blood()
/decl/reagent/spacecleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/spacecleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(M.r_hand)
M.r_hand.clean_blood()
if(M.l_hand)
@@ -309,7 +309,7 @@
if(M.chem_doses[type] == removed)
S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the space cleaner touches it!"), SPAN_DANGER("Your flesh burns in the space cleaner!"))
/decl/reagent/spacecleaner/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/spacecleaner/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 15)
M.add_chemical_effect(CE_EMETIC, 5)
if(M.losebreath < 15)
@@ -320,7 +320,7 @@
if(prob(5))
to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something sour.")))
/decl/reagent/spacecleaner/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/spacecleaner/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 15)
M.add_chemical_effect(CE_EMETIC, 5)
if(M.losebreath < 15)
@@ -331,22 +331,22 @@
if(prob(5))
to_chat(M, SPAN_NOTICE(pick("You get a strong whiff of space cleaner fumes - careful.")))
/decl/reagent/spacecleaner/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/spacecleaner/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 15)
M.add_chemical_effect(CE_EMETIC, 5)
if(prob(25))
M.add_chemical_effect(CE_NEPHROTOXIC, 1)
/decl/reagent/antifuel
/singleton/reagent/antifuel
name = "Antifuel"
description = "This compound is very specifically designed to react with and break up common combustible fuels."
taste_description = "varnish"
/decl/reagent/antifuel/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/antifuel/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if (istype(O, /obj/effect/decal/cleanable/liquid_fuel))
O.clean_blood()
/decl/reagent/antifuel/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/antifuel/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 15)
M.add_chemical_effect(CE_EMETIC, 5)
if(M.losebreath < 15)
@@ -357,7 +357,7 @@
if(prob(5))
to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something sour.")))
/decl/reagent/antifuel/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/antifuel/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 15)
M.add_chemical_effect(CE_EMETIC, 5)
if(M.losebreath < 15)
@@ -368,26 +368,26 @@
if(prob(5))
to_chat(M, SPAN_NOTICE(pick("You get a strong whiff of industrial fumes - careful.")))
/decl/reagent/antifuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/antifuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(REAGENT_VOLUME(holder, type) > 15)
M.add_chemical_effect(CE_EMETIC, 5)
if(prob(25))
M.add_chemical_effect(CE_NEPHROTOXIC, 1)
/decl/reagent/lube
/singleton/reagent/lube
name = "Space Lube"
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them."
reagent_state = LIQUID
color = "#009CA8"
taste_description = "cherry"
/decl/reagent/lube/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/lube/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
if(!istype(T))
return
if(amount >= 1)
T.wet_floor(WET_TYPE_LUBE,amount)
/decl/reagent/silicate
/singleton/reagent/silicate
name = "Silicate"
description = "A compound that can be used to reinforce glass."
reagent_state = LIQUID
@@ -395,18 +395,18 @@
taste_description = "plastic"
ingest_mul = 0
/decl/reagent/silicate/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/silicate/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if(istype(O, /obj/structure/window))
var/obj/structure/window/W = O
W.apply_silicate(amount)
remove_self(amount, holder)
return
/decl/reagent/silicate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/silicate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustToxLoss(2 * removed)
M.add_chemical_effect(CE_ITCH, M.chem_doses[type])
/decl/reagent/silicate/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/silicate/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
if(check_min_dose(H, 5))
if(prob(50))
H.visible_message("<b>[H]</b> splutters.", "You cough up a bunch of silicate.")
@@ -415,21 +415,21 @@
H.adjustOxyLoss(2)
H.add_chemical_effect(CE_PNEUMOTOXIC, 0.2)
/decl/reagent/glycerol
/singleton/reagent/glycerol
name = "Glycerol"
description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity."
reagent_state = LIQUID
color = "#808080"
taste_description = "sweetness"
/decl/reagent/nitroglycerin
/singleton/reagent/nitroglycerin
name = "Nitroglycerin"
description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol."
reagent_state = LIQUID
color = "#808080"
taste_description = "oil"
/decl/reagent/nitroglycerin/proc/explode(var/datum/reagents/holder)
/singleton/reagent/nitroglycerin/proc/explode(var/datum/reagents/holder)
var/datum/effect/effect/system/reagents_explosion/e = new()
e.set_up(round (REAGENT_VOLUME(holder, type)/2, 1), holder.my_atom, 0, 0)
if(isliving(holder.my_atom))
@@ -440,30 +440,30 @@
e.start()
holder.clear_reagents()
/decl/reagent/nitroglycerin/on_heat_change(var/added_energy, var/datum/reagents/holder)
/singleton/reagent/nitroglycerin/on_heat_change(var/added_energy, var/datum/reagents/holder)
. = ..()
if(added_energy > (specific_heat * 5 * REAGENT_VOLUME(holder, type))) // heat shock
explode(holder)
/decl/reagent/nitroglycerin/apply_force(var/force, var/datum/reagents/holder)
/singleton/reagent/nitroglycerin/apply_force(var/force, var/datum/reagents/holder)
..()
if(prob(force * 6))
explode(holder)
/decl/reagent/nitroglycerin/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/nitroglycerin/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
. = ..()
explode(holder)
/decl/reagent/nitroglycerin/touch_mob(var/mob/M, var/amount, var/datum/reagents/holder)
/singleton/reagent/nitroglycerin/touch_mob(var/mob/M, var/amount, var/datum/reagents/holder)
. = ..()
explode(holder)
/decl/reagent/nitroglycerin/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/nitroglycerin/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(H) || alien == IS_DIONA)
return
H.add_chemical_effect(CE_PULSE, 2)
/decl/reagent/coolant
/singleton/reagent/coolant
name = "Coolant"
description = "Industrial cooling substance."
reagent_state = LIQUID
@@ -471,14 +471,14 @@
taste_description = "sourness"
taste_mult = 1.1
/decl/reagent/ultraglue
/singleton/reagent/ultraglue
name = "Ultra Glue"
description = "An extremely powerful bonding agent."
color = "#FFFFCC"
taste_description = "a special education class"
fallback_specific_heat = 1.5
/decl/reagent/woodpulp
/singleton/reagent/woodpulp
name = "Wood Pulp"
description = "A mass of wood fibers."
reagent_state = LIQUID
@@ -486,21 +486,21 @@
taste_description = "wood"
fallback_specific_heat = 1.9
/decl/reagent/luminol
/singleton/reagent/luminol
name = "Luminol"
description = "A compound that interacts with blood on the molecular level."
reagent_state = LIQUID
color = "#F2F3F4"
taste_description = "metal"
/decl/reagent/luminol/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/luminol/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
O.reveal_blood()
/decl/reagent/luminol/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/luminol/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
L.reveal_blood()
/decl/reagent/pyrosilicate
/singleton/reagent/pyrosilicate
name = "Pyrosilicate"
description = "A bright orange powder consisting of strange self-heating properties that reacts when exposed to sodium chloride."
reagent_state = SOLID
@@ -508,7 +508,7 @@
taste_description = "chalk"
default_temperature = 600 //Kelvin
/decl/reagent/cryosurfactant
/singleton/reagent/cryosurfactant
name = "Cryosurfactant"
description = "A bright cyan liquid consisting of strange self-cooling properties that reacts when exposed to water."
reagent_state = LIQUID
@@ -516,7 +516,7 @@
taste_description = "needles"
default_temperature = 100 //Kelvin
/decl/reagent/venenum
/singleton/reagent/venenum
name = "Venenum"
description = "A thick tar like liquid that seems to move around on it's own every now and then. Limited data shows it only works when injected into the bloodstream."
reagent_state = LIQUID
@@ -531,12 +531,12 @@
var/stored_value = 0
var/datum/dna/stored_dna
/decl/reagent/venenum/initial_effect(var/mob/living/carbon/M, var/alien)
/singleton/reagent/venenum/initial_effect(var/mob/living/carbon/M, var/alien)
stored_value = metabolism
stored_dna = M.dna.Clone()
to_chat(M, SPAN_WARNING("Your skin starts crawling..."))
/decl/reagent/venenum/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/venenum/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
stored_value += removed
if(stored_value >= 1)
M.visible_message(\
@@ -551,7 +551,7 @@
M.real_name = M.dna.real_name
stored_value -= 1
/decl/reagent/venenum/final_effect(var/mob/living/carbon/M)
/singleton/reagent/venenum/final_effect(var/mob/living/carbon/M)
if(stored_dna)
M.dna = stored_dna.Clone()
M.real_name = M.dna.real_name
@@ -559,7 +559,7 @@
to_chat(M, SPAN_WARNING("You seem back to your normal self."))
/decl/reagent/fuel/zoragel
/singleton/reagent/fuel/zoragel
name = "Inert Gel"
description = "A particularly adhesive but otherwise inert and harmless gel."
reagent_state = LIQUID
@@ -567,7 +567,7 @@
touch_met = 50
taste_description = "plhegm"
/decl/reagent/fuel/napalm
/singleton/reagent/fuel/napalm
name = "Zo'rane Fire"
description = "A highly flammable and cohesive gel once used commonly in the tunnels of Sedantis. Napalm sticks to kids."
reagent_state = LIQUID
@@ -575,14 +575,14 @@
touch_met = 50
taste_description = "fiery death"
/decl/reagent/fuel/napalm/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/fuel/napalm/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
new /obj/effect/decal/cleanable/liquid_fuel/napalm(T, amount/3)
for(var/mob/living/L in T)
L.adjust_fire_stacks(amount / 10)
remove_self(amount, holder)
return
/decl/reagent/fuel/napalm/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/fuel/napalm/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(L))
L.adjust_fire_stacks(amount / 10) // Splashing people with welding fuel to make them easy to ignite!
@@ -592,7 +592,7 @@
//Secret chems.
//Shhh don't tell no one.
/decl/reagent/estus
/singleton/reagent/estus
name = "Liquid Light"
description = "This impossible substance slowly converts from a liquid into actual light."
reagent_state = LIQUID
@@ -603,27 +603,27 @@
fallback_specific_heat = 2.75
unaffected_species = IS_MACHINE
/decl/reagent/estus/initial_effect(mob/living/carbon/M, alien, datum/reagents/holder)
/singleton/reagent/estus/initial_effect(mob/living/carbon/M, alien, datum/reagents/holder)
. = ..()
M.set_light(REAGENT_VOLUME(holder, type), 4, LIGHT_COLOR_FIRE)
/decl/reagent/estus/final_effect(mob/living/carbon/M, datum/reagents/holder)
/singleton/reagent/estus/final_effect(mob/living/carbon/M, datum/reagents/holder)
. = ..()
M.set_light(FALSE)
/decl/reagent/estus/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
/singleton/reagent/estus/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
if(isundead(M))
M.heal_organ_damage(10 * removed, 15 * removed)
/decl/reagent/estus/affect_ingest(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
/singleton/reagent/estus/affect_ingest(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
if(isundead(M))
M.heal_organ_damage(10 * removed, 15 * removed)
/decl/reagent/estus/affect_touch(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
/singleton/reagent/estus/affect_touch(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
if(isundead(M))
M.heal_organ_damage(10 * removed, 15 * removed)
/decl/reagent/liquid_fire
/singleton/reagent/liquid_fire
name = "Liquid Fire"
description = "A dangerous flammable chemical, capable of causing fires when in contact with organic matter."
reagent_state = LIQUID
@@ -633,19 +633,19 @@
fallback_specific_heat = 20 //This holds a ton of heat.
unaffected_species = IS_MACHINE
/decl/reagent/liquid_fire/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/liquid_fire/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
if(istype(M))
M.adjust_fire_stacks(10)
M.IgniteMob()
/decl/reagent/liquid_fire/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/liquid_fire/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(L))
L.adjust_fire_stacks(10)
L.IgniteMob()
/decl/reagent/black_matter
/singleton/reagent/black_matter
name = "Unstable Black Matter"
description = "A pitch black blend of cosmic origins, handle with care."
color = "#000000"
@@ -653,7 +653,7 @@
fallback_specific_heat = 100 //Yeah...
unaffected_species = IS_MACHINE
/decl/reagent/black_matter/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/black_matter/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
var/obj/effect/portal/P = new /obj/effect/portal(T)
P.creator = null
P.icon = 'icons/obj/objects.dmi'
@@ -669,7 +669,7 @@
remove_self(amount, holder)
return
/decl/reagent/bluespace_dust
/singleton/reagent/bluespace_dust
name = "Bluespace Dust"
description = "A dust composed of microscopic bluespace crystals."
color = "#1f8999"
@@ -677,7 +677,7 @@
fallback_specific_heat = 0.1
unaffected_species = IS_MACHINE
/decl/reagent/bluespace_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/bluespace_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(25))
M.make_jittery(5)
to_chat(M, SPAN_WARNING("You feel unstable..."))
@@ -685,18 +685,18 @@
if(prob(10))
do_teleport(M, get_turf(M), 5, asoundin = 'sound/effects/phasein.ogg')
/decl/reagent/bluespace_dust/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/bluespace_dust/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
do_teleport(L, get_turf(L), amount, asoundin = 'sound/effects/phasein.ogg')
/decl/reagent/philosopher_stone
/singleton/reagent/philosopher_stone
name = "Philosopher's Stone"
description = "A mythical compound, rumored to be the catalyst of fantastic reactions."
color = "#f4c430"
taste_description = "heavenly knowledge"
fallback_specific_heat = 1.25
/decl/reagent/sglue
/singleton/reagent/sglue
name = "Sovereign Glue"
description = "A very potent adhesive which can be applied to inanimate surfaces."
reagent_state = LIQUID
@@ -704,7 +704,7 @@
taste_description = "horses"
fallback_specific_heat = 1.25
/decl/reagent/sglue/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/sglue/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (amount >= 10*O.w_class))
var/obj/item/I = O
I.canremove = 0
@@ -712,7 +712,7 @@
remove_self(10*I.w_class, holder)
I.visible_message(SPAN_NOTICE("[I] begins to glisten with some gluey substance."))
/decl/reagent/usolve
/singleton/reagent/usolve
name = "Universal Solvent"
description = "A very potent solvent which can be applied to inanimate surfaces."
reagent_state = LIQUID
@@ -720,7 +720,7 @@
taste_description = "alcohol"
fallback_specific_heat = 1.75
/decl/reagent/usolve/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/usolve/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (amount >= 10*O.w_class))
var/obj/item/I = O
I.canremove = initial(I.canremove)
@@ -728,7 +728,7 @@
I.visible_message(SPAN_NOTICE("A thin shell of glue cracks off of [I]."))
remove_self(10*I.w_class, holder)
/decl/reagent/shapesand
/singleton/reagent/shapesand
name = "Shapesand"
description = "A strangely animate clump of sand which can shift its color and consistency."
reagent_state = SOLID
@@ -736,7 +736,7 @@
taste_description = "sand"
fallback_specific_heat = 0.75
/decl/reagent/shapesand/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
/singleton/reagent/shapesand/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder)
if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (amount >= 10*O.w_class))
var/obj/item/shapesand/mimic = new /obj/item/shapesand(O.loc)
mimic.name = O.name
@@ -764,7 +764,7 @@
qdel(src)
return
/decl/reagent/love_potion
/singleton/reagent/love_potion
name = "Philter of Love"
description = "A sickly sweet compound that induces chemical dependency on the first person the subject sees."
reagent_state = LIQUID
@@ -772,13 +772,13 @@
taste_description = "sickly sweet candy"
fallback_specific_heat = 2 //Thicc
/decl/reagent/love_potion/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/love_potion/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(H))
return
/decl/reagent/bottle_lightning
/singleton/reagent/bottle_lightning
name = "Bottled Lightning"
description = "A mysterious compound capable of producing electrical discharges."
reagent_state = LIQUID
@@ -787,11 +787,11 @@
fallback_specific_heat = 10
unaffected_species = IS_MACHINE
/decl/reagent/bottle_lightning/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/bottle_lightning/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(25))
tesla_zap(M, 6, 1500)
/decl/reagent/stone_dust
/singleton/reagent/stone_dust
name = "Stone Dust"
description = "Crystalline silica dust, harmful when inhaled."
reagent_state = SOLID
@@ -799,7 +799,7 @@
taste_description = "dust"
specific_heat = 1
/decl/reagent/stone_dust/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/stone_dust/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder)
. = ..()
if(istype(H))
if(prob(15))
@@ -807,7 +807,7 @@
if(istype(L) && !L.robotic)
L.take_damage(0.5*removed)
/decl/reagent/gunpowder
/singleton/reagent/gunpowder
name = "Gunpowder"
description = "A primitive explosive chemical."
reagent_state = SOLID
@@ -1,6 +1,6 @@
/* Toxins, poisons, venoms */
/decl/reagent/toxin
/singleton/reagent/toxin
name = "Toxin"
description = "A toxic chemical."
reagent_state = LIQUID
@@ -14,7 +14,7 @@
var/target_organ // needs to be null by default
var/strength = 2 // How much damage it deals per unit
/decl/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(strength && alien != IS_DIONA)
var/dam = (strength * removed)
if(ishuman(M))
@@ -39,7 +39,7 @@
M.adjustToxLoss(target_organ ? (dam * 0.5) : dam)
M.add_chemical_effect(CE_TOXIN, removed * strength)
/decl/reagent/toxin/plasticide
/singleton/reagent/toxin/plasticide
name = "Plasticide"
description = "Liquid plastic, do not eat."
reagent_state = LIQUID
@@ -47,7 +47,7 @@
strength = 5
taste_description = "plastic"
/decl/reagent/toxin/amatoxin
/singleton/reagent/toxin/amatoxin
name = "Amatoxin"
description = "A powerful poison derived from certain species of mushroom."
reagent_state = LIQUID
@@ -55,7 +55,7 @@
strength = 10
taste_description = "mushroom"
/decl/reagent/toxin/carpotoxin
/singleton/reagent/toxin/carpotoxin
name = "Carpotoxin"
description = "A deadly neurotoxin produced by the dreaded space carp."
reagent_state = LIQUID
@@ -64,12 +64,12 @@
taste_description = "fish"
target_organ = BP_BRAIN
/decl/reagent/toxin/carpotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/carpotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien && alien == IS_UNATHI)
return
..()
/decl/reagent/toxin/panotoxin
/singleton/reagent/toxin/panotoxin
name = "Panotoxin"
description = "A strange poison from the strange panocelium mushroom that causes intense pain when injected."
reagent_state = LIQUID
@@ -77,10 +77,10 @@
strength = 0
taste_description = "stinging needles"
/decl/reagent/toxin/panotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/panotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustHalLoss(removed*15)
/decl/reagent/toxin/phoron
/singleton/reagent/toxin/phoron
name = "Phoron"
description = "Phoron in its liquid form. Twice as potent when breathed in."
reagent_state = LIQUID
@@ -91,7 +91,7 @@
breathe_mul = 2
fallback_specific_heat = 12 //Phoron is very dense and can hold a lot of energy.
/decl/reagent/toxin/phoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/phoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -123,12 +123,12 @@
else
..()
/decl/reagent/toxin/phoron/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/toxin/phoron/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(L))
L.adjust_fire_stacks(amount / 5)
/decl/reagent/toxin/phoron/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/phoron/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/parasite/P = H.internal_organs_by_name["blackkois"]
@@ -139,7 +139,7 @@
if(prob(50))
M.pl_effects()
/decl/reagent/toxin/phoron/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/phoron/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/parasite/P = H.internal_organs_by_name["blackkois"]
@@ -150,13 +150,13 @@
if(prob(50))
M.pl_effects()
/decl/reagent/toxin/phoron/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/toxin/phoron/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
if(!istype(T))
return
T.assume_gas(GAS_PHORON, amount, T20C)
remove_self(amount, holder)
/decl/reagent/toxin/cardox
/singleton/reagent/toxin/cardox
name = "Cardox"
description = "Cardox is a mildly toxic, expensive, NanoTrasen designed cleaner intended to eliminate liquid phoron stains from suits."
reagent_state = LIQUID
@@ -164,11 +164,11 @@
color = "#EEEEEE"
metabolism = 0.3 // 100 seconds for 30 units to metabolise.
taste_description = "cherry"
conflicting_reagent = /decl/reagent/toxin/phoron
conflicting_reagent = /singleton/reagent/toxin/phoron
strength = 1
touch_mul = 0.75
/decl/reagent/toxin/cardox/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/cardox/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder)
if(!istype(M))
return
@@ -178,11 +178,11 @@
else
M.add_chemical_effect(CE_TOXIN, removed * strength)
/decl/reagent/toxin/cardox/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/decl/reagent/conflicting, var/datum/reagents/holder)
/singleton/reagent/toxin/cardox/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/singleton/reagent/conflicting, var/datum/reagents/holder)
var/amount = min(removed, REAGENT_VOLUME(holder, conflicting.type))
holder.remove_reagent(conflicting.type, amount)
/decl/reagent/toxin/cardox/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/toxin/cardox/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(amount >= 1)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(amount*10)
@@ -203,7 +203,7 @@
if(environment)
environment.adjust_gas(GAS_PHORON,-amount*10)
/decl/reagent/toxin/cyanide //Fast and Lethal
/singleton/reagent/toxin/cyanide //Fast and Lethal
name = "Cyanide"
description = "A highly toxic chemical."
reagent_state = LIQUID
@@ -214,14 +214,14 @@
taste_mult = 1.5
target_organ = BP_HEART
/decl/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
..()
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
M.adjustOxyLoss(20 * removed)
/decl/reagent/toxin/potassium_chloride
/singleton/reagent/toxin/potassium_chloride
name = "Potassium Chloride"
description = "A delicious salt that stops the heart when injected into cardiac muscle."
reagent_state = SOLID
@@ -231,7 +231,7 @@
od_minimum_dose = 20
taste_description = "salt"
/decl/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
/singleton/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder)
..()
var/mob/living/carbon/human/H = M
if(!istype(H) || (H.species.flags & NO_BLOOD))
@@ -243,7 +243,7 @@
H.adjustOxyLoss(2)
H.Weaken(10)
/decl/reagent/toxin/potassium_chlorophoride
/singleton/reagent/toxin/potassium_chlorophoride
name = "Potassium Chlorophoride"
description = "Potassium Chlorophoride is an expensive, vastly improved variant of Potassium Chloride. Potassium Chlorophoride, unlike the original drug, acts immediately to block neuromuscular junctions, causing general paralysis."
reagent_state = SOLID
@@ -253,7 +253,7 @@
od_minimum_dose = 20
taste_description = "salt"
/decl/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
..()
var/mob/living/carbon/human/H = M
if(!istype(H) || (H.species.flags & NO_BLOOD))
@@ -265,7 +265,7 @@
H.adjustOxyLoss(2)
H.Weaken(10)
/decl/reagent/toxin/zombiepowder
/singleton/reagent/toxin/zombiepowder
name = "Zombie Powder"
description = "A strong neurotoxin that puts the subject into a death-like state."
reagent_state = SOLID
@@ -276,7 +276,7 @@
taste_description = "death"
target_organ = BP_BRAIN
/decl/reagent/toxin/zombiepowder/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/zombiepowder/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
..()
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_SCAN))
@@ -288,12 +288,12 @@
M.silent = max(M.silent, 10)
M.tod = worldtime2text()
/decl/reagent/toxin/zombiepowder/final_effect(mob/living/carbon/M, datum/reagents/holder)
/singleton/reagent/toxin/zombiepowder/final_effect(mob/living/carbon/M, datum/reagents/holder)
if(istype(M))
M.status_flags &= ~FAKEDEATH
return ..()
/decl/reagent/toxin/fertilizer //Reagents used for plant fertilizers.
/singleton/reagent/toxin/fertilizer //Reagents used for plant fertilizers.
name = "fertilizer"
description = "A chemical mix good for growing plants with."
reagent_state = LIQUID
@@ -304,7 +304,7 @@
touch_mul = 0
unaffected_species = IS_MACHINE
/decl/reagent/toxin/fertilizer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/fertilizer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_DIONA)
M.adjustNutritionLoss(-removed*3)
//Fertilizer is good for plants
@@ -312,7 +312,7 @@
if(prob(15))
M.add_chemical_effect(CE_NEPHROTOXIC, 1)
/decl/reagent/toxin/fertilizer/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/fertilizer/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien == IS_DIONA)
M.adjustNutritionLoss(-removed*3)
else if(REAGENT_VOLUME(holder, type) > 15)
@@ -325,25 +325,25 @@
if(prob(5))
to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something really digusting.", "Your chest doesn't feel so great.")))
/decl/reagent/toxin/fertilizer/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/fertilizer/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(!(alien == IS_DIONA))
M.adjustFireLoss(10)
to_chat(M, SPAN_WARNING(pick("Your skin burns!", "The chemical is melting your skin!", "Wash it off, wash it off!")))
remove_self(REAGENT_VOLUME(holder, type), holder)
/decl/reagent/toxin/fertilizer/eznutrient
/singleton/reagent/toxin/fertilizer/eznutrient
name = "EZ Nutrient"
color = "#168042"
/decl/reagent/toxin/fertilizer/left4zed
/singleton/reagent/toxin/fertilizer/left4zed
name = "Left-4-Zed"
color = "#2A1680"
/decl/reagent/toxin/fertilizer/robustharvest
/singleton/reagent/toxin/fertilizer/robustharvest
name = "Robust Harvest"
color = "#801616"
/decl/reagent/toxin/fertilizer/monoammoniumphosphate
/singleton/reagent/toxin/fertilizer/monoammoniumphosphate
name = "Monoammonium Phosphate"
strength = 0.25
description = "Commonly found in fire extinguishers, also works as a fertilizer."
@@ -353,7 +353,7 @@
touch_met = REM * 10
breathe_mul = 0
/decl/reagent/toxin/fertilizer/monoammoniumphosphate/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/toxin/fertilizer/monoammoniumphosphate/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder)
if(!istype(T))
return
@@ -370,14 +370,14 @@
remove_self(amount_to_remove, holder)
return
/decl/reagent/toxin/fertilizer/monoammoniumphosphate/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
/singleton/reagent/toxin/fertilizer/monoammoniumphosphate/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder)
. = ..()
if(istype(L))
var/needed = min(L.fire_stacks, amount)
L.ExtinguishMob(3* needed) // Foam is 3 times more efficient at extinguishing
remove_self(needed, holder)
/decl/reagent/toxin/fertilizer/monoammoniumphosphate/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/fertilizer/monoammoniumphosphate/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed, var/datum/reagents/holder)
if(istype(S))
S.adjustToxLoss( REAGENT_VOLUME(holder, type) * (removed/REM) * 0.23 )
if(!S.client)
@@ -387,7 +387,7 @@
if(S.chem_doses[type] == removed)
S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the foam touches it!"), SPAN_DANGER("Your flesh burns in the foam!"))
/decl/reagent/toxin/plantbgone
/singleton/reagent/toxin/plantbgone
name = "Plant-B-Gone"
description = "A harmful toxic mixture to kill plantlife. Do not ingest!"
reagent_state = LIQUID
@@ -397,7 +397,7 @@
taste_mult = 1
unaffected_species = IS_MACHINE
/decl/reagent/toxin/plantbgone/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
/singleton/reagent/toxin/plantbgone/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder)
if(istype(T, /turf/simulated/wall))
var/turf/simulated/wall/W = T
if(locate(/obj/effect/overlay/wallrot) in W)
@@ -410,21 +410,21 @@
F.make_plating()
playsound(F, 'sound/species/diona/gestalt_grow.ogg', 30, TRUE)
/decl/reagent/toxin/plantbgone/touch_obj(var/obj/O, var/volume, var/datum/reagents/holder)
/singleton/reagent/toxin/plantbgone/touch_obj(var/obj/O, var/volume, var/datum/reagents/holder)
if(istype(O, /obj/effect/plant))
qdel(O)
/decl/reagent/toxin/plantbgone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/plantbgone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
..()
if(alien == IS_DIONA)
M.adjustToxLoss(30 * removed)
//Affect touch automatically transfers to affect_blood, so we'll apply the damage there, after accounting for permeability
/decl/reagent/toxin/plantbgone/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/plantbgone/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
removed *= M.reagent_permeability()
affect_blood(M, alien, removed*0.5, holder)
/decl/reagent/lexorin
/singleton/reagent/lexorin
name = "Lexorin"
description = "Lexorin is a complex toxin that attempts to induce general hypoxia by weakening the diaphragm to prevent respiration and also by binding to haemoglobins to prevent oxygen molecules from doing the same."
reagent_state = LIQUID
@@ -432,7 +432,7 @@
overdose = REAGENTS_OVERDOSE
taste_description = "acid"
/decl/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
@@ -440,7 +440,7 @@
if(M.losebreath < 15)
M.losebreath++
/decl/reagent/mutagen
/singleton/reagent/mutagen
name = "Unstable Mutagen"
description = "Might cause unpredictable mutations. Keep away from children."
reagent_state = LIQUID
@@ -448,15 +448,15 @@
taste_description = "slime"
taste_mult = 0.9
/decl/reagent/mutagen/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/mutagen/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(33))
affect_blood(M, alien, removed, holder)
/decl/reagent/mutagen/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/mutagen/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(prob(67))
affect_blood(M, alien, removed, holder)
/decl/reagent/mutagen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/mutagen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(isslime(M)) // destabilize slime mutation by adding unstable mutagen
var/mob/living/carbon/slime/slime = M
slime.mutation_chance = min(slime.mutation_chance + removed, 100)
@@ -477,7 +477,7 @@
M.UpdateAppearance()
M.apply_effect(10 * removed, IRRADIATE, blocked = 0)
/decl/reagent/slimejelly
/singleton/reagent/slimejelly
name = "Slime Jelly"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
reagent_state = LIQUID
@@ -485,7 +485,7 @@
taste_description = "slime"
taste_mult = 1.3
/decl/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(isslime(M)) // stabilize slime mutation by reintroducing slime jelly into the slime
var/mob/living/carbon/slime/slime = M
slime.mutation_chance = max(slime.mutation_chance - removed, 0)
@@ -500,7 +500,7 @@
M.add_chemical_effect(CE_OXYGENATED, 2) //strength of dexalin plus
M.heal_organ_damage(8 * removed, 8 * removed) //strength of butazoline/dermaline
/decl/reagent/soporific
/singleton/reagent/soporific
name = "Soporific"
description = "Soporific is highly diluted polysomnine which results in slower and more gradual sedation. This makes the drug ideal at treating insomnia and anxiety disorders, however is generally not reliable for sedation in preparation for surgery except in high doses."
reagent_state = LIQUID
@@ -512,7 +512,7 @@
breathe_met = REM * 0.5 * 0.33
var/total_strength = 0
/decl/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if((istype(H) && (H.species.flags & NO_BLOOD)) || alien == IS_DIONA)
return
@@ -531,7 +531,7 @@
M.sleeping = max(M.sleeping, 20)
M.drowsiness = max(M.drowsiness, 60)
/decl/reagent/polysomnine
/singleton/reagent/polysomnine
name = "Polysomnine"
description = "Polysomnine is a complex drug which rapidly induces sedation in preparation for surgery. Polysomnine's sedative effect is fast acting, and sedated individuals wake up with zero amnesia regarding the events leading up to their sedation, however the only downside is how hard the drug is on the liver."
reagent_state = SOLID
@@ -542,7 +542,7 @@
taste_description = "bitterness"
breathe_met = REM * 0.5 * 0.5
/decl/reagent/polysomnine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/polysomnine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
@@ -560,7 +560,7 @@
if(dose > 1)
M.add_chemical_effect(CE_TOXIN, removed)
/decl/reagent/polysomnine/beer2 //disguised as normal beer for use by emagged brobots
/singleton/reagent/polysomnine/beer2 //disguised as normal beer for use by emagged brobots
name = "Beer"
description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong.
reagent_state = LIQUID
@@ -576,14 +576,14 @@
/* Transformations */
/decl/reagent/aslimetoxin
/singleton/reagent/aslimetoxin
name = "Advanced Mutation Toxin"
description = "A transformative toxin isolated from jelly extract from black slimes. The chemical is fundamentally the same as regular Mutation Toxin, however its effect is magnitudes faster, degenerating a body into a grey slime immediately."
reagent_state = LIQUID
color = "#13BC5E"
taste_description = "sludge"
/decl/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // TODO: check if there's similar code anywhere else
/singleton/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // TODO: check if there's similar code anywhere else
if(M.transforming)
return
to_chat(M, SPAN_DANGER("Your flesh rapidly mutates!"))
@@ -608,7 +608,7 @@
new_mob.key = M.key
qdel(M)
/decl/reagent/toxin/nanites
/singleton/reagent/toxin/nanites
name = "Nanomachines"
description = "Microscopic construction robots."
reagent_state = LIQUID
@@ -616,20 +616,20 @@
taste_description = "slimey metal"
fallback_specific_heat = 3
/decl/reagent/toxin/undead
/singleton/reagent/toxin/undead
name = "Undead Ichor"
description = "A wicked liquid with unknown origins and uses."
color = "#b2beb5"
strength = 25
taste_description = "ashes"
/decl/reagent/toxin/undead/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/undead/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(alien && alien == IS_UNDEAD)
M.heal_organ_damage(10 * removed, 15 * removed)
return
..()
/decl/reagent/toxin/tobacco
/singleton/reagent/toxin/tobacco
name = "Space Tobacco"
description = "Low-grade space tobacco."
reagent_state = SOLID
@@ -639,22 +639,22 @@
taste_mult = 10
var/nicotine = 0.2
/decl/reagent/toxin/tobacco/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
holder.add_reagent(/decl/reagent/mental/nicotine, removed * nicotine)
/singleton/reagent/toxin/tobacco/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
holder.add_reagent(/singleton/reagent/mental/nicotine, removed * nicotine)
/decl/reagent/toxin/tobacco/rich
/singleton/reagent/toxin/tobacco/rich
name = "Earth Tobacco"
description = "Nicknamed 'Earth Tobacco', this plant is much higher quality than its spacefaring counterpart."
taste_description = "luxury tobacco"
nicotine = 0.5
/decl/reagent/toxin/tobacco/fake
/singleton/reagent/toxin/tobacco/fake
name = "Cheap Tobacco"
description = "This actually appears to be mostly ground up leaves masquerading as tobacco. There's maybe some nicotine in there somewhere..."
taste_description = "acrid smoke"
nicotine = 0.1
/decl/reagent/toxin/tobacco/liquid
/singleton/reagent/toxin/tobacco/liquid
name = "Nicotine Solution"
description = "A diluted nicotine solution."
reagent_state = LIQUID
@@ -683,7 +683,7 @@
to_chat(src, SPAN_DANGER("Your rage fades away and the boiling sensation subsides, your thoughts are clear once more."))
remove_client_color(/datum/client_color/berserk)
/decl/reagent/toxin/berserk
/singleton/reagent/toxin/berserk
name = "Red Nightshade"
description = "An illegal combat performance enhancer originating from the criminal syndicates of Mars. The drug stimulates regions of the brain responsible for violence and rage, inducing a feral, berserk state in users. It is incredibly hard on the liver."
reagent_state = LIQUID
@@ -694,17 +694,17 @@
metabolism = REM*0.3 //10u = ~5 minutes of being berserk.
unaffected_species = IS_DIONA | IS_MACHINE
/decl/reagent/toxin/berserk/initial_effect(var/mob/living/carbon/human/H, var/alien, var/holder)
/singleton/reagent/toxin/berserk/initial_effect(var/mob/living/carbon/human/H, var/alien, var/holder)
. = ..()
if(istype(H))
H.berserk_start()
/decl/reagent/toxin/berserk/final_effect(var/mob/living/carbon/human/H, var/alien, var/holder)
/singleton/reagent/toxin/berserk/final_effect(var/mob/living/carbon/human/H, var/alien, var/holder)
. = ..()
if(istype(H))
H.berserk_stop()
/decl/reagent/toxin/berserk/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/berserk/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
..()
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -718,11 +718,11 @@
if(prob(5))
M.emote(pick("twitch_v", "grunt"))
/decl/reagent/toxin/berserk/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
/singleton/reagent/toxin/berserk/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
if(prob(25))
M.add_chemical_effect(CE_CARDIOTOXIC, 1)
/decl/reagent/toxin/spectrocybin
/singleton/reagent/toxin/spectrocybin
name = "Spectrocybin"
description = "Spectrocybin is a hallucinogenic chemical found in a unique strain of fungi. Little research has been conducted into the hallucinogenic properties of spectrocybin, though many spiritual creeds utilise the drug in rituals and claim it allows people to act as mediums between the living and dead."
reagent_state = LIQUID
@@ -735,10 +735,10 @@
unaffected_species = IS_DIONA | IS_MACHINE
var/berserked = FALSE
/decl/reagent/toxin/spectrocybin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/spectrocybin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
M.add_chemical_effect(CE_HAUNTED, M.chem_doses[type])
/decl/reagent/toxin/spectrocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
/singleton/reagent/toxin/spectrocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder)
var/mob/living/carbon/human/H = M
if(ishuman(M) && !berserked)
H.berserk_start()
@@ -749,13 +749,13 @@
if(M.a_intent != I_HURT)
M.a_intent_change(I_HURT)
/decl/reagent/toxin/spectrocybin/final_effect(mob/living/carbon/human/H, datum/reagents/holder)
/singleton/reagent/toxin/spectrocybin/final_effect(mob/living/carbon/human/H, datum/reagents/holder)
. = ..()
if(istype(H) && H.chem_doses[type] >= get_overdose(H, holder = holder))
H.berserk_stop()
berserked = FALSE
/decl/reagent/toxin/trioxin
/singleton/reagent/toxin/trioxin
name = "Trioxin"
description = "A synthetic compound of unknown origins, designated originally as a performance enhancing substance."
reagent_state = LIQUID
@@ -766,12 +766,12 @@
unaffected_species = IS_DIONA | IS_MACHINE | IS_UNDEAD
affects_dead = TRUE
/decl/reagent/toxin/trioxin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/trioxin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder)
..()
if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.reagents.has_reagent(/decl/reagent/thetamycin, 15))
if(H.reagents.has_reagent(/singleton/reagent/thetamycin, 15))
return
if(!H.internal_organs_by_name[BP_ZOMBIE_PARASITE] && prob(15))
@@ -799,7 +799,7 @@
playsound(H.loc, 'sound/hallucinations/far_noise.ogg', 50, 1)
to_chat(H,"<font size='3'><span class='cult'>You return back to life as the undead, all that is left is the hunger to consume the living and the will to spread the infection.</font></span>")
/decl/reagent/toxin/dextrotoxin
/singleton/reagent/toxin/dextrotoxin
name = "Dextrotoxin"
description = "A complicated to make and highly illegal drug that cause paralysis mostly focused on the limbs."
reagent_state = LIQUID
@@ -809,10 +809,10 @@
strength = 0
taste_description = "danger"
/decl/reagent/toxin/dextrotoxin/initial_effect(mob/living/carbon/M)
/singleton/reagent/toxin/dextrotoxin/initial_effect(mob/living/carbon/M)
to_chat(M, SPAN_WARNING("Your limbs start to feel <b>numb</b> and <b>weak</b>, and your legs wobble as it becomes hard to stand!"))
/decl/reagent/toxin/dextrotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/dextrotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
..()
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_SCAN))
@@ -821,10 +821,10 @@
if(M.chem_doses[type] > 0.2)
M.Weaken(10)
/decl/reagent/toxin/dextrotoxin/final_effect(mob/living/carbon/M)
/singleton/reagent/toxin/dextrotoxin/final_effect(mob/living/carbon/M)
to_chat(M, SPAN_GOOD("You can feel sensation creeping back into your limbs!"))
/decl/reagent/toxin/coagulated_blood
/singleton/reagent/toxin/coagulated_blood
name = "Hemoglobin"
description = "A protein that works to carry oxygen. If freely floating in the bloodstream, however, it is toxic to the kidneys."
reagent_state = SOLID
@@ -835,9 +835,9 @@
fallback_specific_heat = 3.617
target_organ = BP_KIDNEYS
/decl/reagent/toxin/coagulated_blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
/singleton/reagent/toxin/coagulated_blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
return // denatured blood isn't absorbed when eaten
/decl/reagent/toxin/coagulated_blood/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder)
/singleton/reagent/toxin/coagulated_blood/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder)
M.add_chemical_effect(CE_NEPHROTOXIC, 0) // deal no damage, but prevent regeneration
..()
File diff suppressed because it is too large Load Diff
+10 -10
View File
@@ -5,32 +5,32 @@
// http://www2.ucdsb.on.ca/tiss/stretton/database/specific_heat_capacity_table.html
// https://www.nuclear-power.net/radium-specific-heat-latent-heat-vaporization-fusion/
/decl/reagent/proc/get_thermal_fraction(var/datum/reagents/holder)
/singleton/reagent/proc/get_thermal_fraction(var/datum/reagents/holder)
return get_heat_capacity(holder)/holder.get_heat_capacity()
/decl/reagent/proc/get_thermal_energy(var/datum/reagents/holder)
/singleton/reagent/proc/get_thermal_energy(var/datum/reagents/holder)
return (holder.thermal_energy * get_thermal_fraction(holder))
/decl/reagent/proc/set_thermal_energy(amount, var/datum/reagents/holder, safety = FALSE)
/singleton/reagent/proc/set_thermal_energy(amount, var/datum/reagents/holder, safety = FALSE)
var/delta = amount / get_thermal_fraction(holder) - holder.thermal_energy
if(!round(delta, 1))
return
holder.add_thermal_energy(delta, safety) // this handles on_heat_change for us
/decl/reagent/proc/add_thermal_energy(amount, var/datum/reagents/holder, safety = FALSE)
/singleton/reagent/proc/add_thermal_energy(amount, var/datum/reagents/holder, safety = FALSE)
holder.add_thermal_energy(amount, safety)
/decl/reagent/proc/set_temperature(temperature, var/datum/reagents/holder, safety = FALSE)
/singleton/reagent/proc/set_temperature(temperature, var/datum/reagents/holder, safety = FALSE)
set_thermal_energy(temperature * get_heat_capacity(holder), holder, safety = safety)
/datum/reagents/proc/get_heat_capacity()
. = 0
for(var/_R in reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
. += R.get_heat_capacity(src)
/decl/reagent/proc/get_heat_capacity(var/datum/reagents/holder)
return specific_heat * REAGENT_VOLUME(holder, type)
/singleton/reagent/proc/get_heat_capacity(var/datum/reagents/holder)
return src.specific_heat * REAGENT_VOLUME(holder, src.type)
/datum/reagents/proc/get_temperature()
var/HC = get_heat_capacity()
@@ -54,11 +54,11 @@
var/total_heat_capacity = get_heat_capacity()
for(var/_R in reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
var/energy_per_reagent = thermal_energy_to_add * (R.get_heat_capacity(src)/total_heat_capacity)
if(!safety)
R.on_heat_change(energy_per_reagent, src)
thermal_energy += thermal_energy_to_add
/decl/reagent/proc/on_heat_change(energy_change, var/datum/reagents/holder)
/singleton/reagent/proc/on_heat_change(energy_change, var/datum/reagents/holder)
return // stub for heat effects
+1 -1
View File
@@ -23,7 +23,7 @@
src.temperature_override = temperature_override
if(spawn_reagent)
reagents.add_reagent(spawn_reagent, volume, temperature = src.temperature_override)
var/decl/reagent/R = decls_repository.get_decl(spawn_reagent)
var/singleton/reagent/R = GET_SINGLETON(spawn_reagent)
if(label)
setLabel(label)
else
@@ -6,119 +6,119 @@
volume = CARTRIDGE_VOLUME_MEDIUM
// Multiple
sugar spawn_reagent = /decl/reagent/sugar
water spawn_reagent = /decl/reagent/water
sugar spawn_reagent = /singleton/reagent/sugar
water spawn_reagent = /singleton/reagent/water
// Chemistry
acetone spawn_reagent = /decl/reagent/acetone
aluminum spawn_reagent = /decl/reagent/aluminum
ammonia spawn_reagent = /decl/reagent/ammonia
butanol spawn_reagent = /decl/reagent/alcohol/butanol
carbon spawn_reagent = /decl/reagent/carbon
copper spawn_reagent = /decl/reagent/copper
ethanol spawn_reagent = /decl/reagent/alcohol
hclacid spawn_reagent = /decl/reagent/acid/hydrochloric
hydrazine spawn_reagent = /decl/reagent/hydrazine
iron spawn_reagent = /decl/reagent/iron
lithium spawn_reagent = /decl/reagent/lithium
mercury spawn_reagent = /decl/reagent/mercury
phosphorus spawn_reagent = /decl/reagent/phosphorus
potassium spawn_reagent = /decl/reagent/potassium
radium spawn_reagent = /decl/reagent/radium
acetone spawn_reagent = /singleton/reagent/acetone
aluminum spawn_reagent = /singleton/reagent/aluminum
ammonia spawn_reagent = /singleton/reagent/ammonia
butanol spawn_reagent = /singleton/reagent/alcohol/butanol
carbon spawn_reagent = /singleton/reagent/carbon
copper spawn_reagent = /singleton/reagent/copper
ethanol spawn_reagent = /singleton/reagent/alcohol
hclacid spawn_reagent = /singleton/reagent/acid/hydrochloric
hydrazine spawn_reagent = /singleton/reagent/hydrazine
iron spawn_reagent = /singleton/reagent/iron
lithium spawn_reagent = /singleton/reagent/lithium
mercury spawn_reagent = /singleton/reagent/mercury
phosphorus spawn_reagent = /singleton/reagent/phosphorus
potassium spawn_reagent = /singleton/reagent/potassium
radium spawn_reagent = /singleton/reagent/radium
radium/small volume = CARTRIDGE_VOLUME_SMALL //For bar drinks
sacid spawn_reagent = /decl/reagent/acid
silicon spawn_reagent = /decl/reagent/silicon
sodium spawn_reagent = /decl/reagent/sodium
sulfur spawn_reagent = /decl/reagent/sulfur
tungsten spawn_reagent = /decl/reagent/tungsten
sacid spawn_reagent = /singleton/reagent/acid
silicon spawn_reagent = /singleton/reagent/silicon
sodium spawn_reagent = /singleton/reagent/sodium
sulfur spawn_reagent = /singleton/reagent/sulfur
tungsten spawn_reagent = /singleton/reagent/tungsten
// Bar, alcoholic
ale spawn_reagent = /decl/reagent/alcohol/ale
beer spawn_reagent = /decl/reagent/alcohol/beer
champagne spawn_reagent = /decl/reagent/alcohol/champagne
cognac spawn_reagent = /decl/reagent/alcohol/cognac
gin spawn_reagent = /decl/reagent/alcohol/gin
kahlua spawn_reagent = /decl/reagent/alcohol/coffee/kahlua
mead spawn_reagent = /decl/reagent/alcohol/mead
rum spawn_reagent = /decl/reagent/alcohol/rum
tequila spawn_reagent = /decl/reagent/alcohol/tequila
vermouth spawn_reagent = /decl/reagent/alcohol/vermouth
vodka spawn_reagent = /decl/reagent/alcohol/vodka
whiskey spawn_reagent = /decl/reagent/alcohol/whiskey
wine spawn_reagent = /decl/reagent/alcohol/wine
ale spawn_reagent = /singleton/reagent/alcohol/ale
beer spawn_reagent = /singleton/reagent/alcohol/beer
champagne spawn_reagent = /singleton/reagent/alcohol/champagne
cognac spawn_reagent = /singleton/reagent/alcohol/cognac
gin spawn_reagent = /singleton/reagent/alcohol/gin
kahlua spawn_reagent = /singleton/reagent/alcohol/coffee/kahlua
mead spawn_reagent = /singleton/reagent/alcohol/mead
rum spawn_reagent = /singleton/reagent/alcohol/rum
tequila spawn_reagent = /singleton/reagent/alcohol/tequila
vermouth spawn_reagent = /singleton/reagent/alcohol/vermouth
vodka spawn_reagent = /singleton/reagent/alcohol/vodka
whiskey spawn_reagent = /singleton/reagent/alcohol/whiskey
wine spawn_reagent = /singleton/reagent/alcohol/wine
// Bar, soft
apple spawn_reagent = /decl/reagent/drink/applejuice
banana spawn_reagent = /decl/reagent/drink/banana
berryjuice spawn_reagent = /decl/reagent/drink/berryjuice
brownstar spawn_reagent = /decl/reagent/drink/brownstar
clean_kois spawn_reagent = /decl/reagent/kois/clean
cola spawn_reagent = /decl/reagent/drink/space_cola
dr_gibb spawn_reagent = /decl/reagent/drink/dr_gibb
grenadine spawn_reagent = /decl/reagent/drink/grenadine
ice spawn_reagent = /decl/reagent/drink/ice
icetea spawn_reagent = /decl/reagent/drink/icetea
lemon_lime spawn_reagent = /decl/reagent/drink/lemon_lime
lime spawn_reagent = /decl/reagent/drink/limejuice
orange spawn_reagent = /decl/reagent/drink/orangejuice
root_beer spawn_reagent = /decl/reagent/drink/root_beer
smw spawn_reagent = /decl/reagent/drink/spacemountainwind
sodawater spawn_reagent = /decl/reagent/drink/sodawater
spaceup spawn_reagent = /decl/reagent/drink/spaceup
tea spawn_reagent = /decl/reagent/drink/tea
tonic spawn_reagent = /decl/reagent/drink/tonic
watermelon spawn_reagent = /decl/reagent/drink/watermelonjuice
apple spawn_reagent = /singleton/reagent/drink/applejuice
banana spawn_reagent = /singleton/reagent/drink/banana
berryjuice spawn_reagent = /singleton/reagent/drink/berryjuice
brownstar spawn_reagent = /singleton/reagent/drink/brownstar
clean_kois spawn_reagent = /singleton/reagent/kois/clean
cola spawn_reagent = /singleton/reagent/drink/space_cola
dr_gibb spawn_reagent = /singleton/reagent/drink/dr_gibb
grenadine spawn_reagent = /singleton/reagent/drink/grenadine
ice spawn_reagent = /singleton/reagent/drink/ice
icetea spawn_reagent = /singleton/reagent/drink/icetea
lemon_lime spawn_reagent = /singleton/reagent/drink/lemon_lime
lime spawn_reagent = /singleton/reagent/drink/limejuice
orange spawn_reagent = /singleton/reagent/drink/orangejuice
root_beer spawn_reagent = /singleton/reagent/drink/root_beer
smw spawn_reagent = /singleton/reagent/drink/spacemountainwind
sodawater spawn_reagent = /singleton/reagent/drink/sodawater
spaceup spawn_reagent = /singleton/reagent/drink/spaceup
tea spawn_reagent = /singleton/reagent/drink/tea
tonic spawn_reagent = /singleton/reagent/drink/tonic
watermelon spawn_reagent = /singleton/reagent/drink/watermelonjuice
// Bar, coffee and tea
chaitea spawn_reagent = /decl/reagent/drink/tea/chaitea
ciderhot spawn_reagent = /decl/reagent/drink/ciderhot
coffee spawn_reagent = /decl/reagent/drink/coffee
cream spawn_reagent = /decl/reagent/drink/milk/cream
espresso spawn_reagent = /decl/reagent/drink/coffee/espresso
fatshouter_milk spawn_reagent = /decl/reagent/drink/milk/adhomai
greentea spawn_reagent = /decl/reagent/drink/tea/greentea
hot_coco spawn_reagent = /decl/reagent/drink/hot_coco
milk spawn_reagent = /decl/reagent/drink/milk
soymilk spawn_reagent = /decl/reagent/drink/milk/soymilk
chaitea spawn_reagent = /singleton/reagent/drink/tea/chaitea
ciderhot spawn_reagent = /singleton/reagent/drink/ciderhot
coffee spawn_reagent = /singleton/reagent/drink/coffee
cream spawn_reagent = /singleton/reagent/drink/milk/cream
espresso spawn_reagent = /singleton/reagent/drink/coffee/espresso
fatshouter_milk spawn_reagent = /singleton/reagent/drink/milk/adhomai
greentea spawn_reagent = /singleton/reagent/drink/tea/greentea
hot_coco spawn_reagent = /singleton/reagent/drink/hot_coco
milk spawn_reagent = /singleton/reagent/drink/milk
soymilk spawn_reagent = /singleton/reagent/drink/milk/soymilk
// Bar, misc. mixed drink ingredients
uranium spawn_reagent = /decl/reagent/uranium
uranium spawn_reagent = /singleton/reagent/uranium
uranium/small volume = CARTRIDGE_VOLUME_SMALL
toothpaste spawn_reagent = /decl/reagent/drink/toothpaste
toothpaste spawn_reagent = /singleton/reagent/drink/toothpaste
// ERT
alkysine spawn_reagent = /decl/reagent/alkysine
arithrazine spawn_reagent = /decl/reagent/arithrazine
cetahydramine spawn_reagent = /decl/reagent/cetahydramine
bicaridine spawn_reagent = /decl/reagent/bicaridine
chloral spawn_reagent = /decl/reagent/polysomnine
clonexadone spawn_reagent = /decl/reagent/clonexadone
coughsyrup spawn_reagent = /decl/reagent/coughsyrup
cryoxadone spawn_reagent = /decl/reagent/cryoxadone
dermaline spawn_reagent = /decl/reagent/dermaline
dexalin spawn_reagent = /decl/reagent/dexalin
alkysine spawn_reagent = /singleton/reagent/alkysine
arithrazine spawn_reagent = /singleton/reagent/arithrazine
cetahydramine spawn_reagent = /singleton/reagent/cetahydramine
bicaridine spawn_reagent = /singleton/reagent/bicaridine
chloral spawn_reagent = /singleton/reagent/polysomnine
clonexadone spawn_reagent = /singleton/reagent/clonexadone
coughsyrup spawn_reagent = /singleton/reagent/coughsyrup
cryoxadone spawn_reagent = /singleton/reagent/cryoxadone
dermaline spawn_reagent = /singleton/reagent/dermaline
dexalin spawn_reagent = /singleton/reagent/dexalin
dexalin/small volume = CARTRIDGE_VOLUME_SMALL // For the medicine cartridge crate, so it's not too easy to get large amounts of dexalin
dexalin_p spawn_reagent = /decl/reagent/dexalin/plus
dylovene spawn_reagent = /decl/reagent/dylovene
ethylredox spawn_reagent = /decl/reagent/ethylredoxrazine
hyperzine spawn_reagent = /decl/reagent/hyperzine
hyronalin spawn_reagent = /decl/reagent/hyronalin
oculine spawn_reagent = /decl/reagent/oculine
kelotane spawn_reagent = /decl/reagent/kelotane
butazoline spawn_reagent = /decl/reagent/butazoline
saline spawn_reagent = /decl/reagent/saline
leporazine spawn_reagent = /decl/reagent/leporazine
inaprov spawn_reagent = /decl/reagent/inaprovaline
oxycomorphine spawn_reagent = /decl/reagent/oxycomorphine
perconol spawn_reagent = /decl/reagent/perconol
peridaxon spawn_reagent = /decl/reagent/peridaxon
pneumalin spawn_reagent = /decl/reagent/pneumalin
rezadone spawn_reagent = /decl/reagent/rezadone
ryetalyn spawn_reagent = /decl/reagent/ryetalyn
sleeptox spawn_reagent = /decl/reagent/soporific
sterilizine spawn_reagent = /decl/reagent/sterilizine
synaptizine spawn_reagent = /decl/reagent/synaptizine
thetamycin spawn_reagent = /decl/reagent/thetamycin
mortaphenyl spawn_reagent = /decl/reagent/mortaphenyl
tricord spawn_reagent = /decl/reagent/tricordrazine
sanasomnum spawn_reagent = /decl/reagent/sanasomnum
dexalin_p spawn_reagent = /singleton/reagent/dexalin/plus
dylovene spawn_reagent = /singleton/reagent/dylovene
ethylredox spawn_reagent = /singleton/reagent/ethylredoxrazine
hyperzine spawn_reagent = /singleton/reagent/hyperzine
hyronalin spawn_reagent = /singleton/reagent/hyronalin
oculine spawn_reagent = /singleton/reagent/oculine
kelotane spawn_reagent = /singleton/reagent/kelotane
butazoline spawn_reagent = /singleton/reagent/butazoline
saline spawn_reagent = /singleton/reagent/saline
leporazine spawn_reagent = /singleton/reagent/leporazine
inaprov spawn_reagent = /singleton/reagent/inaprovaline
oxycomorphine spawn_reagent = /singleton/reagent/oxycomorphine
perconol spawn_reagent = /singleton/reagent/perconol
peridaxon spawn_reagent = /singleton/reagent/peridaxon
pneumalin spawn_reagent = /singleton/reagent/pneumalin
rezadone spawn_reagent = /singleton/reagent/rezadone
ryetalyn spawn_reagent = /singleton/reagent/ryetalyn
sleeptox spawn_reagent = /singleton/reagent/soporific
sterilizine spawn_reagent = /singleton/reagent/sterilizine
synaptizine spawn_reagent = /singleton/reagent/synaptizine
thetamycin spawn_reagent = /singleton/reagent/thetamycin
mortaphenyl spawn_reagent = /singleton/reagent/mortaphenyl
tricord spawn_reagent = /singleton/reagent/tricordrazine
sanasomnum spawn_reagent = /singleton/reagent/sanasomnum
@@ -7,7 +7,7 @@
return
var/list/matches
for(var/path in decls_repository.get_decls_of_subtype(/decl/reagent/))
for(var/path in GET_SINGLETON_SUBTYPE_MAP(/singleton/reagent/))
if(findtext("[path]", rtype))
LAZYADD(matches, path)
@@ -28,6 +28,6 @@
if("medium") C = new /obj/item/reagent_containers/chem_disp_cartridge/medium(usr.loc)
if("large") C = new /obj/item/reagent_containers/chem_disp_cartridge(usr.loc)
C.reagents.add_reagent(reagent, C.volume)
var/decl/reagent/R = decls_repository.get_decl(reagent)
var/singleton/reagent/R = GET_SINGLETON(reagent)
C.setLabel(R.name)
log_admin("[key_name(usr)] spawned a [size] reagent container containing [reagent] at ([usr.x],[usr.y],[usr.z])",admin_key=key_name(usr))
@@ -12,4 +12,4 @@
possible_transfer_amounts = list(20, 40)
unacidable = 1
spawn_reagent = /decl/reagent/drink/coffee/espresso
spawn_reagent = /singleton/reagent/drink/coffee/espresso
@@ -3,7 +3,7 @@
icon = 'icons/obj/chemical.dmi'
icon_state = "dispenser"
var/icon_state_active = "dispenser_active"
clicksound = /decl/sound_category/button_sound
clicksound = /singleton/sound_category/button_sound
obj_flags = OBJ_FLAG_ROTATABLE
@@ -131,7 +131,7 @@
data["beakerCurrentVolume"] = container?.reagents?.total_volume
var beakerD[0]
for(var/_R in container?.reagents?.reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
beakerD[++beakerD.len] = list("name" = R.name, "volume" = REAGENT_VOLUME(container.reagents, _R))
data["beakerContents"] = beakerD
var chemicals[0]
+2 -2
View File
@@ -11,7 +11,7 @@
var/filling_states // List of percentages full that have icons
var/accuracy = 1
var/fragile = 0 // If nonzero, above what force do we shatter?
var/shatter_sound = /decl/sound_category/glass_break_sound
var/shatter_sound = /singleton/sound_category/glass_break_sound
var/material/shatter_material = MATERIAL_GLASS //slight typecasting abuse here, gets converted to a material in initializee
var/can_be_placed_into = list(
/obj/machinery/chem_master,
@@ -311,4 +311,4 @@
return 1
/obj/item/reagent_containers/proc/on_pour()
playsound(src, /decl/sound_category/generic_pour_sound, 25, 1)
playsound(src, /singleton/sound_category/generic_pour_sound, 25, 1)
@@ -38,7 +38,7 @@
. = ..()
if(blood_type != null)
name = "blood pack [blood_type]"
reagents.add_reagent(/decl/reagent/blood, volume, list("donor"=null,"blood_DNA"=null,"blood_type"=blood_type,"trace_chem"=null,"dose_chem"=null))
reagents.add_reagent(/singleton/reagent/blood, volume, list("donor"=null,"blood_DNA"=null,"blood_type"=blood_type,"trace_chem"=null,"dose_chem"=null))
w_class = ITEMSIZE_NORMAL
update_icon()
@@ -72,7 +72,7 @@
if (being_feed)
to_chat(user, SPAN_NOTICE("You are already feeding on \the [src]."))
return
if (REAGENT_VOLUME(reagents, /decl/reagent/blood))
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood))
user.visible_message(SPAN_WARNING("[user] raises \the [src] up to their mouth and bites into it."), SPAN_NOTICE("You raise \the [src] up to your mouth and bite into it, starting to drain its contents.<br>You need to stand still."))
being_feed = TRUE
vampire_marks = TRUE
@@ -82,15 +82,15 @@
while (do_after(user, 25, 5, 1))
var/blood_taken = 0
blood_taken = min(5, REAGENT_VOLUME(reagents, /decl/reagent/blood)/4)
blood_taken = min(5, REAGENT_VOLUME(reagents, /singleton/reagent/blood)/4)
reagents.remove_reagent(/decl/reagent/blood, blood_taken*4)
reagents.remove_reagent(/singleton/reagent/blood, blood_taken*4)
vampire.blood_usable += blood_taken
if (blood_taken)
to_chat(user, SPAN_NOTICE("You have accumulated [vampire.blood_usable] unit\s of usable blood. It tastes quite stale."))
if (REAGENT_VOLUME(reagents, /decl/reagent/blood) < 1)
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood) < 1)
break
user.visible_message(SPAN_WARNING("[user] licks [user.get_pronoun("his")] fangs dry, lowering \the [src]."), SPAN_NOTICE("You lick your fangs clean of the tasteless blood."))
being_feed = FALSE
@@ -163,7 +163,7 @@
/obj/item/reagent_containers/blood/attackby(obj/item/P as obj, mob/user as mob)
..()
if (P.ispen())
if (REAGENT_VOLUME(reagents, /decl/reagent/blood) && name != "empty blood pack") //Stops people mucking with bloodpacks that are filled
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood) && name != "empty blood pack") //Stops people mucking with bloodpacks that are filled
to_chat(user, SPAN_NOTICE("You can't relabel [name] until it is empty!"))
return
var/blood_name = input(user, "What blood type would you like to label it as?", "Blood Types") in list("A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-", "Saline Plus", "Clear", "Cancel")
@@ -191,11 +191,11 @@
if(LAZYLEN(P.attack_verb))
user.visible_message(SPAN_DANGER("[src] has been [pick(P.attack_verb)] with \the [P] by [user]!"))
var/atkmsg_filled = null
if (REAGENT_VOLUME(reagents, /decl/reagent/blood))
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood))
atkmsg_filled = " and the contents spray everywhere"
if (src.loc != usr)
var/strength
var/percent = round((REAGENT_VOLUME(reagents, /decl/reagent/blood) / volume) * 100) //the amount of blood changes the strength of spray
var/percent = round((REAGENT_VOLUME(reagents, /singleton/reagent/blood) / volume) * 100) //the amount of blood changes the strength of spray
switch(percent)
if(1 to 9) strength = 2
if(10 to 50) strength = 3
@@ -242,7 +242,7 @@
H.bloody_body()
// Line below will do a check where the target bloodbag is located and create a new one accordingly
var/obj/item/reagent_containers/I = src.loc != usr ? new/obj/item/reagent_containers/blood/ripped(src.loc) : new/obj/item/reagent_containers/blood/ripped(usr.loc)
if (REAGENT_VOLUME(reagents, /decl/reagent/blood))
if (REAGENT_VOLUME(reagents, /singleton/reagent/blood))
I.add_blood()
var/atkmsg = SPAN_WARNING("\The [src] rips apart[atkmsg_filled]!")
user.visible_message(atkmsg)
@@ -17,24 +17,24 @@
var/charge_tick = 0
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
var/list/reagent_ids = list(/decl/reagent/tricordrazine, /decl/reagent/inaprovaline)
var/list/reagent_ids = list(/singleton/reagent/tricordrazine, /singleton/reagent/inaprovaline)
var/list/reagent_volumes = list()
var/list/reagent_names = list()
center_of_mass = null
/obj/item/reagent_containers/hypospray/borghypo/medical
reagent_ids = list(/decl/reagent/bicaridine, /decl/reagent/kelotane, /decl/reagent/dexalin, /decl/reagent/inaprovaline, /decl/reagent/dylovene, /decl/reagent/perconol, /decl/reagent/mortaphenyl, /decl/reagent/thetamycin)
reagent_ids = list(/singleton/reagent/bicaridine, /singleton/reagent/kelotane, /singleton/reagent/dexalin, /singleton/reagent/inaprovaline, /singleton/reagent/dylovene, /singleton/reagent/perconol, /singleton/reagent/mortaphenyl, /singleton/reagent/thetamycin)
/obj/item/reagent_containers/hypospray/borghypo/rescue
reagent_ids = list(/decl/reagent/tricordrazine, /decl/reagent/dexalin, /decl/reagent/inaprovaline, /decl/reagent/dylovene, /decl/reagent/perconol, /decl/reagent/mortaphenyl, /decl/reagent/adrenaline, /decl/reagent/coagzolug)
reagent_ids = list(/singleton/reagent/tricordrazine, /singleton/reagent/dexalin, /singleton/reagent/inaprovaline, /singleton/reagent/dylovene, /singleton/reagent/perconol, /singleton/reagent/mortaphenyl, /singleton/reagent/adrenaline, /singleton/reagent/coagzolug)
/obj/item/reagent_containers/hypospray/borghypo/Initialize()
. = ..()
for(var/T in reagent_ids)
reagent_volumes[T] = volume
var/decl/reagent/R = decls_repository.get_decl(T)
var/singleton/reagent/R = GET_SINGLETON(T)
reagent_names += R.name
update_icon()
@@ -44,7 +44,7 @@
cut_overlays()
var/rid = reagent_ids[mode]
var/decl/reagent/R = decls_repository.get_decl(rid)
var/singleton/reagent/R = GET_SINGLETON(rid)
if(reagent_volumes[rid])
filling = image(icon, src, "[initial(icon_state)][reagent_volumes[rid]]")
filling.color = R.get_color()
@@ -122,7 +122,7 @@
if(t)
playsound(loc, 'sound/effects/pop.ogg', 50, 0)
mode = t
var/decl/reagent/R = decls_repository.get_decl(reagent_ids[mode])
var/singleton/reagent/R = GET_SINGLETON(reagent_ids[mode])
to_chat(usr, SPAN_NOTICE("Synthesizer is now producing '[R.name]'."))
update_icon()
@@ -130,7 +130,7 @@
if(!..(user, 2))
return
var/decl/reagent/R = decls_repository.get_decl(reagent_ids[mode])
var/singleton/reagent/R = GET_SINGLETON(reagent_ids[mode])
to_chat(user, SPAN_NOTICE("It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left."))
/obj/item/reagent_containers/hypospray/borghypo/service
@@ -142,14 +142,14 @@
recharge_time = 3
volume = 60
possible_transfer_amounts = list(5, 10, 20, 30)
reagent_ids = list(/decl/reagent/alcohol/beer, /decl/reagent/alcohol/coffee/kahlua, /decl/reagent/alcohol/whiskey, /decl/reagent/alcohol/wine, /decl/reagent/alcohol/vodka, /decl/reagent/alcohol/gin, /decl/reagent/alcohol/rum, /decl/reagent/alcohol/tequila, /decl/reagent/alcohol/vermouth, /decl/reagent/alcohol/cognac, /decl/reagent/alcohol/ale, /decl/reagent/alcohol/mead, /decl/reagent/water, /decl/reagent/sugar, /decl/reagent/drink/ice, /decl/reagent/drink/tea, /decl/reagent/drink/icetea, /decl/reagent/drink/space_cola, /decl/reagent/drink/spacemountainwind, /decl/reagent/drink/dr_gibb, /decl/reagent/drink/spaceup, /decl/reagent/drink/tonic, /decl/reagent/drink/sodawater, /decl/reagent/drink/lemon_lime, /decl/reagent/drink/orangejuice, /decl/reagent/drink/limejuice, /decl/reagent/drink/watermelonjuice, /decl/reagent/drink/coffee, /decl/reagent/drink/coffee/espresso)
reagent_ids = list(/singleton/reagent/alcohol/beer, /singleton/reagent/alcohol/coffee/kahlua, /singleton/reagent/alcohol/whiskey, /singleton/reagent/alcohol/wine, /singleton/reagent/alcohol/vodka, /singleton/reagent/alcohol/gin, /singleton/reagent/alcohol/rum, /singleton/reagent/alcohol/tequila, /singleton/reagent/alcohol/vermouth, /singleton/reagent/alcohol/cognac, /singleton/reagent/alcohol/ale, /singleton/reagent/alcohol/mead, /singleton/reagent/water, /singleton/reagent/sugar, /singleton/reagent/drink/ice, /singleton/reagent/drink/tea, /singleton/reagent/drink/icetea, /singleton/reagent/drink/space_cola, /singleton/reagent/drink/spacemountainwind, /singleton/reagent/drink/dr_gibb, /singleton/reagent/drink/spaceup, /singleton/reagent/drink/tonic, /singleton/reagent/drink/sodawater, /singleton/reagent/drink/lemon_lime, /singleton/reagent/drink/orangejuice, /singleton/reagent/drink/limejuice, /singleton/reagent/drink/watermelonjuice, /singleton/reagent/drink/coffee, /singleton/reagent/drink/coffee/espresso)
/obj/item/reagent_containers/hypospray/borghypo/service/update_icon()
underlays.Cut()
cut_overlays()
var/rid = reagent_ids[mode]
var/decl/reagent/R = decls_repository.get_decl(rid)
var/singleton/reagent/R = GET_SINGLETON(rid)
if(reagent_volumes[rid])
var/mutable_appearance/filling = mutable_appearance('icons/obj/shaker.dmi', "[icon_state]-0")
var/percent = round((reagent_volumes[rid] / volume) * 100)
@@ -183,18 +183,18 @@
return
var/rid = reagent_ids[mode]
var/decl/reagent/R = decls_repository.get_decl(rid)
var/singleton/reagent/R = GET_SINGLETON(rid)
var/temp = R.default_temperature
var/amt = min(amount_per_transfer_from_this, reagent_volumes[rid])
target.reagents.add_reagent(rid, amt, temperature = temp)
reagent_volumes[rid] -= amt
to_chat(user, SPAN_NOTICE("You transfer [amt] units of [R.name] to [target]."))
playsound(src.loc, /decl/sound_category/generic_pour_sound, 50, 1)
playsound(src.loc, /singleton/sound_category/generic_pour_sound, 50, 1)
dispense()
return
/obj/item/reagent_containers/hypospray/borghypo/service/proc/dispense()
var/decl/reagent/R = decls_repository.get_decl(reagent_ids[mode])
var/singleton/reagent/R = GET_SINGLETON(reagent_ids[mode])
var/mutable_appearance/reagent_overlay = mutable_appearance('icons/obj/shaker.dmi', "disp")
reagent_overlay.color = R.get_color()
underlays += reagent_overlay
@@ -141,7 +141,7 @@
fuselit = TRUE
update_icon()
set_light(2, 2, LIGHT_COLOR_LAVA)
if(REAGENT_VOLUME(reagents, /decl/reagent/fuel) >= LETHAL_FUEL_CAPACITY && user)
if(REAGENT_VOLUME(reagents, /singleton/reagent/fuel) >= LETHAL_FUEL_CAPACITY && user)
msg_admin_attack("[user] ([user.ckey]) lit the fuse on an improvised [name] grenade. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",ckey=key_name(user))
if(fuselength >= FUSELENGTH_MIN && fuselength <= FUSELENGTH_SHORT)
user.visible_message(SPAN_DANGER("<b>[user]</b> accidentally takes \the [W] too close to \the [name]'s opening!"))
@@ -158,7 +158,7 @@
detonate(FALSE)
/obj/item/reagent_containers/food/drinks/cans/proc/detonate(var/instant)
var/fuel = REAGENT_VOLUME(reagents, /decl/reagent/fuel)
var/fuel = REAGENT_VOLUME(reagents, /singleton/reagent/fuel)
if(instant)
fuselength = 0
else if(prob(fuselength * 6)) // the longer the fuse, the higher chance it will fizzle out (18% chance minimum)
@@ -215,7 +215,7 @@
desc = initial(desc)
/obj/item/reagent_containers/food/drinks/cans/bullet_act(obj/item/projectile/P)
if(P.firer && REAGENT_VOLUME(reagents, /decl/reagent/fuel) >= LETHAL_FUEL_CAPACITY)
if(P.firer && REAGENT_VOLUME(reagents, /singleton/reagent/fuel) >= LETHAL_FUEL_CAPACITY)
visible_message(SPAN_DANGER("\The [name] is hit by the [P]!"))
log_and_message_admins("shot an improvised [name] explosive", P.firer)
log_game("[key_name(P.firer)] shot improvised grenade at [loc.loc.name] ([loc.x],[loc.y],[loc.z]).",ckey=key_name(P.firer))
@@ -249,7 +249,7 @@
desc = "Cola. in space."
icon_state = "cola"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/space_cola = 30)
reagents_to_add = list(/singleton/reagent/drink/space_cola = 30)
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind
name = "\improper Space Mountain Wind"
@@ -257,7 +257,7 @@
icon_state = "space_mountain_wind"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/spacemountainwind = 30)
reagents_to_add = list(/singleton/reagent/drink/spacemountainwind = 30)
/obj/item/reagent_containers/food/drinks/cans/thirteenloko
name = "thirteen loko"
@@ -265,7 +265,7 @@
icon_state = "thirteen_loko"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/alcohol/thirteenloko = 30)
reagents_to_add = list(/singleton/reagent/alcohol/thirteenloko = 30)
/obj/item/reagent_containers/food/drinks/cans/dr_gibb
name = "\improper Dr. Gibb"
@@ -273,7 +273,7 @@
icon_state = "dr_gibb"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/dr_gibb = 30)
reagents_to_add = list(/singleton/reagent/drink/dr_gibb = 30)
/obj/item/reagent_containers/food/drinks/cans/starkist
name = "\improper Star-kist"
@@ -281,7 +281,7 @@
icon_state = "starkist"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/brownstar = 30)
reagents_to_add = list(/singleton/reagent/drink/brownstar = 30)
/obj/item/reagent_containers/food/drinks/cans/space_up
name = "\improper Space-Up"
@@ -289,7 +289,7 @@
icon_state = "space-up"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/spaceup = 30)
reagents_to_add = list(/singleton/reagent/drink/spaceup = 30)
/obj/item/reagent_containers/food/drinks/cans/lemon_lime
name = "\improper Lemon-Lime"
@@ -297,7 +297,7 @@
icon_state = "lemon-lime"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/lemon_lime = 30)
reagents_to_add = list(/singleton/reagent/drink/lemon_lime = 30)
/obj/item/reagent_containers/food/drinks/cans/iced_tea
name = "\improper Silversun Wave iced tea"
@@ -305,7 +305,7 @@
icon_state = "ice_tea_can"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/icetea = 30)
reagents_to_add = list(/singleton/reagent/drink/icetea = 30)
/obj/item/reagent_containers/food/drinks/cans/grape_juice
name = "\improper Grapel juice"
@@ -313,7 +313,7 @@
icon_state = "grapesoda"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/grapejuice = 30)
reagents_to_add = list(/singleton/reagent/drink/grapejuice = 30)
/obj/item/reagent_containers/food/drinks/cans/tonic
name = "\improper T-Borg's tonic water"
@@ -321,7 +321,7 @@
icon_state = "tonic"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/tonic = 50)
reagents_to_add = list(/singleton/reagent/drink/tonic = 50)
/obj/item/reagent_containers/food/drinks/cans/sodawater
name = "soda water"
@@ -329,7 +329,7 @@
icon_state = "sodawater"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/sodawater = 50)
reagents_to_add = list(/singleton/reagent/drink/sodawater = 50)
/obj/item/reagent_containers/food/drinks/cans/koispunch
name = "\improper Phoron Punch!"
@@ -337,7 +337,7 @@
icon_state = "phoron_punch"
center_of_mass = list("x"=16, "y"=8)
can_size_overrides = list("x" = 1)
reagents_to_add = list(/decl/reagent/kois/clean = 10, /decl/reagent/toxin/phoron = 5)
reagents_to_add = list(/singleton/reagent/kois/clean = 10, /singleton/reagent/toxin/phoron = 5)
/obj/item/reagent_containers/food/drinks/cans/root_beer
name = "\improper RnD Root Beer"
@@ -345,7 +345,7 @@
icon_state = "root_beer"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/root_beer = 30)
reagents_to_add = list(/singleton/reagent/drink/root_beer = 30)
// Zo'ra Sodas
/obj/item/reagent_containers/food/drinks/cans/zorasoda
@@ -353,61 +353,61 @@
desc = "A can of Zo'ra Soda energy drink, with V'krexi additives. You aren't supposed to see this."
center_of_mass = list("x" = 16, "y" = 8)
can_size_overrides = list("x" = 1)
reagents_to_add = list(/decl/reagent/drink/zorasoda = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/cherry
name = "\improper Zo'ra Soda Cherry"
desc = "A can of cherry flavoured Zo'ra Soda energy drink, with V'krexi additives. All good energy drinks come in cherry."
icon_state = "zoracherry"
reagents_to_add = list(/decl/reagent/drink/zorasoda/cherry = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/cherry = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/phoron
name = "\improper Zo'ra Soda Phoron Passion"
desc = "A can of grape flavoured Zo'ra Soda energy drink, with V'krexi additives. Tastes nothing like phoron according to Unbound vaurca taste testers."
icon_state = "phoronpassion"
reagents_to_add = list(/decl/reagent/drink/zorasoda/phoron = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/phoron = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/klax
name = "\improper K'laxan Energy Crush"
desc = "A can of nitrogen-infused creamy orange zest flavoured Zo'ra Soda energy drink, with V'krexi additives. The smooth taste is engineered to near perfection."
icon_state = "klaxancrush"
reagents_to_add = list(/decl/reagent/drink/zorasoda/klax = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/klax = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/cthur
name = "\improper C'thur Rockin' Raspberry"
desc = "A can of \"blue raspberry\" flavoured Zo'ra Soda energy drink, with V'krexi additives. Tastes like a more flowery and aromatic raspberry."
icon_state = "cthurberry"
reagents_to_add = list(/decl/reagent/drink/zorasoda/cthur = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/cthur = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/venomgrass
name = "\improper Zo'ra Sour Venom Grass"
desc = "A can of sour \"venom grass\" flavoured Zo'ra Soda energy drink, with V'krexi additives. Tastes like a cloud of angry stinging acidic bees."
icon_state = "sourvenomgrass"
reagents_to_add = list(/decl/reagent/drink/zorasoda/venomgrass = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/venomgrass = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/hozm // "Contraband"
name = "\improper High Octane Zorane Might"
desc = "A can of mint flavoured Zo'ra Soda energy drink, with a lot of V'krexi additives. Tastes like impaling the roof of your mouth with a freezing cold spear laced with angry bees and road salt.<br/>" + SPAN_DANGER(" WARNING: Not for the faint hearted!")
icon_state = "hozm"
reagents_to_add = list(/decl/reagent/drink/zorasoda/hozm = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/hozm = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/kois
name = "\improper Zo'ra Soda K'ois Twist"
desc = "A can of K'ois-imitation flavoured Zo'ra Soda energy drink, with V'krexi additives. Contains no K'ois, contrary to what the name may imply."
icon_state = "koistwist"
reagents_to_add = list(/decl/reagent/drink/zorasoda/kois = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/kois = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/drone
name = "\improper Vaurca Drone Fuel"
desc = "A can of industrial fluid flavoured Zo'ra Soda energy drink, with V'krexi additives, meant for Vaurca.<br/>" + SPAN_DANGER(" WARNING: Known to induce vomiting in all species except vaurcae and dionae!")
icon_state = "dronefuel"
reagents_to_add = list(/decl/reagent/drink/zorasoda/drone = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/drone = 30)
/obj/item/reagent_containers/food/drinks/cans/zorasoda/jelly
name = "\improper Royal Vaurca Jelly"
desc = "A can of..." + SPAN_ITALIC(" sludge?") + " It smells kind of pleasant either way. Royal jelly is a nutritious concentrated substance commonly created by Caretaker Vaurca in order to feed larvae. It is known to have a stimulating effect in most, if not all, species."
icon_state = "royaljelly"
reagents_to_add = list(/decl/reagent/drink/zorasoda/jelly = 30)
reagents_to_add = list(/singleton/reagent/drink/zorasoda/jelly = 30)
/obj/item/reagent_containers/food/drinks/cans/adhomai_milk
name = "fermented fatshouters milk"
@@ -416,14 +416,14 @@
center_of_mass = list("x"=16, "y"=10)
desc_extended = "Fermend fatshouters milk is a drink that originated among the nomadic populations of Rhazar'Hrujmagh, and it has spread to the rest of Adhomai."
reagents_to_add = list(/decl/reagent/drink/milk/adhomai/fermented = 30)
reagents_to_add = list(/singleton/reagent/drink/milk/adhomai/fermented = 30)
/obj/item/reagent_containers/food/drinks/cans/beetle_milk
name = "\improper Hakhma Milk"
desc = "A can of Hakhma beetle milk, sourced from Scarab and Drifter communities."
icon_state = "beetlemilk"
center_of_mass = list("x"=17, "y"=10)
reagents_to_add = list(/decl/reagent/drink/milk/beetle = 30)
reagents_to_add = list(/singleton/reagent/drink/milk/beetle = 30)
can_size_overrides = list("x" = 1, "y" = -2)
/obj/item/reagent_containers/food/drinks/cans/dyn
@@ -431,14 +431,14 @@
desc = "The most refreshing thing you can find on the market, based on a Skrell medicinal plant. No salt or sugar."
icon_state = "dyncan"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/dynjuice/cold = 30)
reagents_to_add = list(/singleton/reagent/drink/dynjuice/cold = 30)
/obj/item/reagent_containers/food/drinks/cans/threetowns
name = "\improper Three Towns Cider"
desc = "A cider made on the west coast of the Moghresian Sea, this is simply one of many brands made in a region known for its craft local butanol, shipped throughout the Wasteland."
icon_state = "three_towns_cider"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/alcohol/butanol/threetownscider = 30)
reagents_to_add = list(/singleton/reagent/alcohol/butanol/threetownscider = 30)
/obj/item/reagent_containers/food/drinks/cans/hrozamal_soda
name = "Hro'zamal Soda"
@@ -449,14 +449,14 @@
icon_state = "hrozamal_soda_can"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/hrozamal_soda = 30)
reagents_to_add = list(/singleton/reagent/drink/hrozamal_soda = 30)
/obj/item/reagent_containers/food/drinks/cans/diet_cola
name = "Diet Cola"
desc = "Space Cola! Now in diet!"
icon_state = "diet_cola"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/diet_cola = 30)
reagents_to_add = list(/singleton/reagent/drink/diet_cola = 30)
/obj/item/reagent_containers/food/drinks/cans/peach_soda
name = "Xanu Rush!"
@@ -464,4 +464,4 @@
desc_extended = "The rehabilitating environment of Xanu has allowed for small-scale agriculture to bloom. Xanu Rush! Is the number one Coalition soda, despite its dull taste."
icon_state = "xanu_rush"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/decl/reagent/drink/peach_soda = 30)
reagents_to_add = list(/singleton/reagent/drink/peach_soda = 30)
@@ -46,7 +46,7 @@
center_of_mass = list("x"=16, "y"=6)
return
var/decl/reagent/master = reagents.get_primary_reagent_decl()
var/singleton/reagent/master = reagents.get_primary_reagent_decl()
name = master.condiment_name || (reagents.reagent_volumes.len == 1 ? "[lowertext(master.name)] bottle" : "condiment bottle")
desc = master.condiment_desc || (reagents.reagent_volumes.len == 1 ? master.description : "A mixture of various condiments. [master.name] is one of them.")
icon_state = master.condiment_icon_state || "mixedcondiments"
@@ -55,12 +55,12 @@
/obj/item/reagent_containers/food/condiment/enzyme
icon_state = "enzyme" // for map preview
fixed_state = TRUE
reagents_to_add = list(/decl/reagent/enzyme = 50)
reagents_to_add = list(/singleton/reagent/enzyme = 50)
/obj/item/reagent_containers/food/condiment/sugar
icon_state = "sugar"
fixed_state = TRUE
reagents_to_add = list(/decl/reagent/sugar = 50)
reagents_to_add = list(/singleton/reagent/sugar = 50)
/obj/item/reagent_containers/food/condiment/shaker
name = "shaker"
@@ -80,20 +80,20 @@
/obj/item/reagent_containers/food/condiment/shaker/salt
icon_state = "saltshakersmall"
reagents_to_add = list(/decl/reagent/sodiumchloride = 20)
reagents_to_add = list(/singleton/reagent/sodiumchloride = 20)
/obj/item/reagent_containers/food/condiment/shaker/peppermill
icon_state = "peppermillsmall"
reagents_to_add = list(/decl/reagent/blackpepper = 20)
reagents_to_add = list(/singleton/reagent/blackpepper = 20)
/obj/item/reagent_containers/food/condiment/shaker/diona
icon_state = "dionaepowder"
reagents_to_add = list(/decl/reagent/diona_powder = 20)
reagents_to_add = list(/singleton/reagent/diona_powder = 20)
/obj/item/reagent_containers/food/condiment/shaker/spacespice
icon_state = "spacespicebottle"
volume = 40
reagents_to_add = list(/decl/reagent/spacespice = 40)
reagents_to_add = list(/singleton/reagent/spacespice = 40)
/obj/item/reagent_containers/food/condiment/flour
name = "flour sack"
@@ -102,19 +102,19 @@
center_of_mass = list("x"=16, "y"=8)
volume = 220
fixed_state = TRUE
reagents_to_add = list(/decl/reagent/nutriment/flour = 200)
reagents_to_add = list(/singleton/reagent/nutriment/flour = 200)
/obj/item/reagent_containers/food/condiment/barbecue
fixed_state = TRUE
reagents_to_add = list(/decl/reagent/nutriment/barbecue = 20)
reagents_to_add = list(/singleton/reagent/nutriment/barbecue = 20)
/obj/item/reagent_containers/food/condiment/garlicsauce
fixed_state = TRUE
reagents_to_add = list(/decl/reagent/nutriment/garlicsauce = 50)
reagents_to_add = list(/singleton/reagent/nutriment/garlicsauce = 50)
/obj/item/reagent_containers/food/condiment/pacid
name = "culinary acid"
reagents_to_add = list(/decl/reagent/acid/polyacid = 50)
reagents_to_add = list(/singleton/reagent/acid/polyacid = 50)
//MRE condiments and drinks.
@@ -133,125 +133,125 @@
name = "salt packet"
desc = "Contains 5u of table salt."
icon_state = "packet_small_white"
reagents_to_add = list(/decl/reagent/sodiumchloride = 5)
reagents_to_add = list(/singleton/reagent/sodiumchloride = 5)
/obj/item/reagent_containers/food/condiment/small/packet/pepper
name = "pepper packet"
desc = "Contains 5u of black pepper."
icon_state = "packet_small_black"
reagents_to_add = list(/decl/reagent/blackpepper = 5)
reagents_to_add = list(/singleton/reagent/blackpepper = 5)
/obj/item/reagent_containers/food/condiment/small/packet/sugar
name = "sugar packet"
desc = "Contains 5u of refined sugar."
icon_state = "packet_small_white"
reagents_to_add = list(/decl/reagent/sugar = 5)
reagents_to_add = list(/singleton/reagent/sugar = 5)
/obj/item/reagent_containers/food/condiment/small/packet/jelly
name = "jelly packet"
desc = "Contains 10u of cherry jelly. Best used for spreading on crackers."
reagents_to_add = list(/decl/reagent/nutriment/cherryjelly = 10)
reagents_to_add = list(/singleton/reagent/nutriment/cherryjelly = 10)
icon_state = "packet_medium"
/obj/item/reagent_containers/food/condiment/small/packet/honey
name = "honey packet"
desc = "Contains 10u of honey."
reagents_to_add = list(/decl/reagent/sugar = 10)
reagents_to_add = list(/singleton/reagent/sugar = 10)
icon_state = "packet_medium"
/obj/item/reagent_containers/food/condiment/small/packet/capsaicin
name = "hot sauce packet"
desc = "Contains 5u of hot sauce. Enjoy in moderation."
icon_state = "packet_small_red"
reagents_to_add = list(/decl/reagent/capsaicin = 5)
reagents_to_add = list(/singleton/reagent/capsaicin = 5)
/obj/item/reagent_containers/food/condiment/small/packet/ketchup
name = "ketchup packet"
desc = "Contains 5u of ketchup."
icon_state = "packet_small_red"
reagents_to_add = list(/decl/reagent/nutriment/ketchup = 5)
reagents_to_add = list(/singleton/reagent/nutriment/ketchup = 5)
/obj/item/reagent_containers/food/condiment/small/packet/mayo
name = "mayonnaise packet"
desc = "Contains 5u of mayonnaise."
icon_state = "packet_small_white"
reagents_to_add = list(/decl/reagent/nutriment/mayonnaise = 5)
reagents_to_add = list(/singleton/reagent/nutriment/mayonnaise = 5)
/obj/item/reagent_containers/food/condiment/small/packet/soy
name = "soy sauce packet"
desc = "Contains 5u of soy sauce."
icon_state = "packet_small_black"
reagents_to_add = list(/decl/reagent/nutriment/soysauce = 5)
reagents_to_add = list(/singleton/reagent/nutriment/soysauce = 5)
/obj/item/reagent_containers/food/condiment/small/packet/coffee
name = "instant coffee powder packet"
desc = "Contains 5u of instant coffee powder. Mix with 25u of water."
reagents_to_add = list(/decl/reagent/nutriment/coffeegrounds = 3)
reagents_to_add = list(/singleton/reagent/nutriment/coffeegrounds = 3)
/obj/item/reagent_containers/food/condiment/small/packet/tea
name = "instant tea powder packet"
desc = "Contains 5u of instant black tea powder. Mix with 25u of water."
reagents_to_add = list(/decl/reagent/nutriment/teagrounds = 5)
reagents_to_add = list(/singleton/reagent/nutriment/teagrounds = 5)
/obj/item/reagent_containers/food/condiment/small/packet/cocoa
name = "cocoa powder packet"
desc = "Contains 5u of cocoa powder. Mix with 25u of water and heat."
reagents_to_add = list(/decl/reagent/nutriment/coco = 5)
reagents_to_add = list(/singleton/reagent/nutriment/coco = 5)
/obj/item/reagent_containers/food/condiment/small/packet/grape
name = "grape juice powder packet"
desc = "Contains 5u of powdered grape juice. Mix with 15u of water."
reagents_to_add = list(/decl/reagent/nutriment/instantjuice/grape = 5)
reagents_to_add = list(/singleton/reagent/nutriment/instantjuice/grape = 5)
/obj/item/reagent_containers/food/condiment/small/packet/orange
name = "orange juice powder packet"
desc = "Contains 5u of powdered orange juice. Mix with 15u of water."
reagents_to_add = list(/decl/reagent/nutriment/instantjuice/orange = 5)
reagents_to_add = list(/singleton/reagent/nutriment/instantjuice/orange = 5)
/obj/item/reagent_containers/food/condiment/small/packet/watermelon
name = "watermelon juice powder packet"
desc = "Contains 5u of powdered watermelon juice. Mix with 15u of water."
reagents_to_add = list(/decl/reagent/nutriment/instantjuice/watermelon = 5)
reagents_to_add = list(/singleton/reagent/nutriment/instantjuice/watermelon = 5)
/obj/item/reagent_containers/food/condiment/small/packet/apple
name = "apple juice powder packet"
desc = "Contains 5u of powdered apple juice. Mix with 15u of water."
reagents_to_add = list(/decl/reagent/nutriment/instantjuice/apple = 5)
reagents_to_add = list(/singleton/reagent/nutriment/instantjuice/apple = 5)
/obj/item/reagent_containers/food/condiment/small/packet/protein
name = "protein powder packet"
desc = "Contains 10u of powdered protein. Mix with 20u of water."
icon_state = "packet_medium"
reagents_to_add = list(/decl/reagent/nutriment/protein = 10)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon
name = "crayon powder packet"
desc = "Contains 10u of powdered crayon. Mix with 30u of water."
reagents_to_add = list(/decl/reagent/crayon_dust = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/red
reagents_to_add = list(/decl/reagent/crayon_dust/red = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/red = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/orange
reagents_to_add = list(/decl/reagent/crayon_dust/orange = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/orange = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/yellow
reagents_to_add = list(/decl/reagent/crayon_dust/yellow = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/yellow = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/green
reagents_to_add = list(/decl/reagent/crayon_dust/green = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/green = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/blue
reagents_to_add = list(/decl/reagent/crayon_dust/blue = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/blue = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/purple
reagents_to_add = list(/decl/reagent/crayon_dust/purple = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/purple = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/grey
reagents_to_add = list(/decl/reagent/crayon_dust/grey = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/grey = 10)
/obj/item/reagent_containers/food/condiment/small/packet/crayon/brown
reagents_to_add = list(/decl/reagent/crayon_dust/brown = 10)
reagents_to_add = list(/singleton/reagent/crayon_dust/brown = 10)
//End of MRE stuff.
@@ -57,7 +57,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
return
if(shaken)
for(var/_R in reagents.reagent_volumes)
var/decl/reagent/R = decls_repository.get_decl(_R)
var/singleton/reagent/R = GET_SINGLETON(_R)
if(R.carbonated)
boom(user)
return
@@ -143,7 +143,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/cardboardbox.ogg'
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
center_of_mass = list("x"=16, "y"=9)
reagents_to_add = list(/decl/reagent/drink/milk = 50)
reagents_to_add = list(/singleton/reagent/drink/milk = 50)
/obj/item/reagent_containers/food/drinks/soymilk
name = "soymilk"
@@ -153,7 +153,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/cardboardbox.ogg'
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
center_of_mass = list("x"=16, "y"=9)
reagents_to_add = list(/decl/reagent/drink/milk/soymilk = 50)
reagents_to_add = list(/singleton/reagent/drink/milk/soymilk = 50)
/obj/item/reagent_containers/food/drinks/coffee
name = "\improper Martian Dark Roast"
@@ -165,7 +165,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=11)
reagents_to_add = list(/decl/reagent/drink/coffee = 30)
reagents_to_add = list(/singleton/reagent/drink/coffee = 30)
/obj/item/reagent_containers/food/drinks/pslatte
name = "seasonal pumpkin spice latte"
@@ -178,7 +178,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=11)
reagents_to_add = list(/decl/reagent/drink/coffee/sadpslatte = 30)
reagents_to_add = list(/singleton/reagent/drink/coffee/sadpslatte = 30)
/obj/item/reagent_containers/food/drinks/tea
name = "\improper Sol-III tea"
@@ -190,7 +190,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/tea = 30)
reagents_to_add = list(/singleton/reagent/drink/tea = 30)
/obj/item/reagent_containers/food/drinks/greentea
name = "green tea"
@@ -203,7 +203,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/tea/greentea = 30)
reagents_to_add = list(/singleton/reagent/drink/tea/greentea = 30)
/obj/item/reagent_containers/food/drinks/hotcider
name = "hot cider"
@@ -216,7 +216,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/ciderhot = 30)
reagents_to_add = list(/singleton/reagent/drink/ciderhot = 30)
/obj/item/reagent_containers/food/drinks/chaitea
name = "chai tea"
@@ -229,7 +229,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/tea/chaitea = 30)
reagents_to_add = list(/singleton/reagent/drink/tea/chaitea = 30)
/obj/item/reagent_containers/food/drinks/ice
name = "\improper Admiral's ice cup"
@@ -241,7 +241,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=15, "y"=10)
reagents_to_add = list(/decl/reagent/drink/ice = 30)
reagents_to_add = list(/singleton/reagent/drink/ice = 30)
/obj/item/reagent_containers/food/drinks/h_chocolate
name = "\improper Red Gaia hot coco"
@@ -253,7 +253,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=15, "y"=13)
reagents_to_add = list(/decl/reagent/drink/hot_coco = 30)
reagents_to_add = list(/singleton/reagent/drink/hot_coco = 30)
/obj/item/reagent_containers/food/drinks/dry_ramen
name = "cup ramen"
@@ -265,7 +265,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=11)
reagents_to_add = list(/decl/reagent/drink/dry_ramen = 30)
reagents_to_add = list(/singleton/reagent/drink/dry_ramen = 30)
is_liquid = FALSE
/obj/item/reagent_containers/food/drinks/dry_ramen/on_reagent_change()
@@ -286,7 +286,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/disk.ogg'
pickup_sound = 'sound/items/pickup/disk.ogg'
reagents_to_add = list(/decl/reagent/water = 30)
reagents_to_add = list(/singleton/reagent/water = 30)
//heehoo bottle flipping
/obj/item/reagent_containers/food/drinks/waterbottle/throw_impact()
@@ -337,55 +337,55 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
desc = "Full of vitamins and deliciousness!"
icon_state = "orangejuice"
reagents_to_add = list(/decl/reagent/drink/orangejuice = 100)
reagents_to_add = list(/singleton/reagent/drink/orangejuice = 100)
/obj/item/reagent_containers/food/drinks/carton/cream
name = "milk cream"
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
icon_state = "cream"
reagents_to_add = list(/decl/reagent/drink/milk/cream = 100)
reagents_to_add = list(/singleton/reagent/drink/milk/cream = 100)
/obj/item/reagent_containers/food/drinks/carton/tomatojuice
name = "tomato juice"
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
icon_state = "tomatojuice"
reagents_to_add = list(/decl/reagent/drink/tomatojuice = 100)
reagents_to_add = list(/singleton/reagent/drink/tomatojuice = 100)
/obj/item/reagent_containers/food/drinks/carton/limejuice
name = "lime juice"
desc = "Sweet-sour goodness."
icon_state = "limejuice"
reagents_to_add = list(/decl/reagent/drink/limejuice = 100)
reagents_to_add = list(/singleton/reagent/drink/limejuice = 100)
/obj/item/reagent_containers/food/drinks/carton/lemonjuice
name = "lemon juice"
desc = "This juice is VERY sour."
icon_state = "lemoncarton"
reagents_to_add = list(/decl/reagent/drink/lemonjuice = 100)
reagents_to_add = list(/singleton/reagent/drink/lemonjuice = 100)
/obj/item/reagent_containers/food/drinks/carton/dynjuice
name = "dyn juice"
desc = "Juice from a Skrell medicinal herb. It's supposed to be diluted."
icon_state = "dyncarton"
reagents_to_add = list(/decl/reagent/drink/dynjuice = 100)
reagents_to_add = list(/singleton/reagent/drink/dynjuice = 100)
/obj/item/reagent_containers/food/drinks/carton/applejuice
name = "apple juice"
desc = "Juice from an apple. Yes."
icon_state = "applejuice"
reagents_to_add = list(/decl/reagent/drink/applejuice = 100)
reagents_to_add = list(/singleton/reagent/drink/applejuice = 100)
/obj/item/reagent_containers/food/drinks/carton/fatshouters
name = "fatshouters milk carton"
desc = "Fatty fatshouters milk in a carton."
reagents_to_add = list(/decl/reagent/drink/milk/adhomai = 100)
reagents_to_add = list(/singleton/reagent/drink/milk/adhomai = 100)
/obj/item/reagent_containers/food/drinks/carton/mutthir
name = "mutthir carton"
@@ -395,7 +395,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
The drink can also be smoked for flavor. Mutthir is believed to have originated from the worldwide appreciated Fatshouters' fermented milk. Rock Nomads living in the Nomadic Host \
were quick to adopt the drink to their diet."
reagents_to_add = list(/decl/reagent/drink/milk/adhomai/mutthir = 100)
reagents_to_add = list(/singleton/reagent/drink/milk/adhomai/mutthir = 100)
/obj/item/reagent_containers/food/drinks/carton/eggnog
name = "eggnog carton"
@@ -404,7 +404,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
desc_extended = "Eggnog, also called Egg flip, is an alcoholic beverage, made out of egg, milk or cream, sugar and alcohol. Eggnog is by principle a longdrink and they can be served \
hot or cold. Originally it was served in winter and hot. Every serving uses one egg. It is a classic Christmas beverage, loved by every species, universe-wide. Or so you heard."
reagents_to_add = list(/decl/reagent/alcohol/eggnog = 100)
reagents_to_add = list(/singleton/reagent/alcohol/eggnog = 100)
//////////////////////////drinkingglass and shaker//
//Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink
@@ -473,7 +473,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
user.put_in_hands(cap)
flags |= OPENCONTAINER
cap = null
playsound(src.loc, /decl/sound_category/shaker_lid_off, 50, 1)
playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1)
update_icon()
return
if(top)
@@ -483,7 +483,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
return
if(last_shake <= world.time - 10) //Spam limiter.
last_shake = world.time
playsound(src.loc, /decl/sound_category/shaker_shaking, 50, 1)
playsound(src.loc, /singleton/sound_category/shaker_shaking, 50, 1)
src.add_fingerprint(user)
return
@@ -503,7 +503,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
user.drop_from_inventory(W, src)
flags ^= OPENCONTAINER
cap = W
playsound(src.loc, /decl/sound_category/shaker_lid_off, 50, 1)
playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1)
update_icon()
return TRUE
if(istype(W, /obj/item/shaker_top))
@@ -514,7 +514,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
amount_per_transfer_from_this = 10
user.drop_from_inventory(W, src)
top = W
playsound(src.loc, /decl/sound_category/shaker_lid_off, 50, 1)
playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1)
update_icon()
return TRUE
return ..()
@@ -552,7 +552,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
amount_per_transfer_from_this = 120
usr.put_in_hands(top)
top = null
playsound(src.loc, /decl/sound_category/shaker_lid_off, 50, 1)
playsound(src.loc, /singleton/sound_category/shaker_lid_off, 50, 1)
update_icon()
/obj/item/shaker_top
@@ -710,7 +710,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/milk = 20)
reagents_to_add = list(/singleton/reagent/drink/milk = 20)
/obj/item/reagent_containers/food/drinks/small_milk_choco
name = "small chocolate milk carton"
@@ -720,7 +720,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/milk/chocolate = 20)
reagents_to_add = list(/singleton/reagent/drink/milk/chocolate = 20)
/obj/item/reagent_containers/food/drinks/small_milk_strawberry
name = "small strawberry milk carton"
@@ -730,4 +730,4 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
drop_sound = 'sound/items/drop/papercup.ogg'
pickup_sound = 'sound/items/pickup/papercup.ogg'
center_of_mass = list("x"=16, "y"=14)
reagents_to_add = list(/decl/reagent/drink/milk/strawberry = 20)
reagents_to_add = list(/singleton/reagent/drink/milk/strawberry = 20)
@@ -11,7 +11,7 @@
volume = 100
item_state = "broken_beer" //Generic held-item sprite until unique ones are made.
force = 5
hitsound = /decl/sound_category/bottle_hit_intact_sound
hitsound = /singleton/sound_category/bottle_hit_intact_sound
var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets)
matter = list(MATERIAL_GLASS = 800)
@@ -69,7 +69,7 @@
var/mob/living/L = against
L.IgniteMob()
playsound(src, /decl/sound_category/glass_break_sound, 70, 1)
playsound(src, /singleton/sound_category/glass_break_sound, 70, 1)
src.transfer_fingerprints_to(B)
qdel(src)
@@ -187,7 +187,7 @@
attack_verb = list("stabbed", "slashed", "attacked")
sharp = TRUE
edge = FALSE
hitsound = /decl/sound_category/bottle_hit_broken
hitsound = /singleton/sound_category/bottle_hit_broken
var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
w_class = ITEMSIZE_SMALL
@@ -209,7 +209,7 @@
the Solarian collapse, only remaining in stock thanks to Idris ownership of the Visegradi facilities that produce it."
icon_state = "ginbottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/gin = 100)
reagents_to_add = list(/singleton/reagent/alcohol/gin = 100)
/obj/item/reagent_containers/food/drinks/bottle/victorygin
name = "Victory gin"
@@ -219,7 +219,7 @@
desc_extended = "Considered the official drink of the People's Republic of Adhomai, Victory Gin was created to celebrate the end of the revolution. It is commonly found in NanoTrasen's \
facilities, due to a contract that allows the government to supply the corporation, and in the Tajaran communities of Tau Ceti. The destruction of Victory Gin's bottles and reserves \
was widespread when Republican positions and cities were taken by the opposition as the drink is deemed by many as a symbol of the Hadiist regime."
reagents_to_add = list(/decl/reagent/alcohol/victorygin = 100)
reagents_to_add = list(/singleton/reagent/alcohol/victorygin = 100)
/obj/item/reagent_containers/food/drinks/bottle/whiskey
name = "Mu Cephei Special Reserve"
@@ -228,7 +228,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "whiskeybottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/whiskey = 100)
reagents_to_add = list(/singleton/reagent/alcohol/whiskey = 100)
/obj/item/reagent_containers/food/drinks/bottle/fireball
name = "Delta Cephei Cinnamon Fireball"
@@ -237,7 +237,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "whiskeybottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/fireball = 100)
reagents_to_add = list(/singleton/reagent/alcohol/fireball = 100)
/obj/item/reagent_containers/food/drinks/bottle/vodka
name = "Martian 50% Premium"
@@ -245,7 +245,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "vodkabottle"
center_of_mass = list("x"=17, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/vodka = 100)
reagents_to_add = list(/singleton/reagent/alcohol/vodka = 100)
/obj/item/reagent_containers/food/drinks/bottle/vodka/mushroom
name = "Inverkeithing Import mushroom vodka"
@@ -254,7 +254,7 @@
from the Schwarzer Drache Breweries Syndicate in Inverkeithing, arguably the most famous brewery on Himeo due to its historical reputation. It is also the most famous brand \
of mushroom vodka among non-Himeans because of Inverkeithing's developing tourism industry. Drinkers of the world (and beyond), unite!"
icon_state = "mushroomvodkabottle"
reagents_to_add = list(/decl/reagent/alcohol/vodka/mushroom = 100)
reagents_to_add = list(/singleton/reagent/alcohol/vodka/mushroom = 100)
/obj/item/reagent_containers/food/drinks/bottle/tequila
name = "Nathan's Guaranteed Quality tequila"
@@ -263,14 +263,14 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "tequilabottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/tequila = 100)
reagents_to_add = list(/singleton/reagent/alcohol/tequila = 100)
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing
name = "bottle of nothing"
desc = "A bottle filled with nothing."
icon_state = "bottleofnothing"
center_of_mass = list("x"=16, "y"=5)
reagents_to_add = list(/decl/reagent/drink/nothing = 100)
reagents_to_add = list(/singleton/reagent/drink/nothing = 100)
/obj/item/reagent_containers/food/drinks/bottle/bitters
name = "Nojosuru Aromatic Bitters"
@@ -279,7 +279,7 @@
They are known for their surprisingly affordable and incredible quality foods, as well as growing many crops used in pharmaceuticals and luxury items."
icon_state = "bitters"
center_of_mass = list("x"=16, "y"=9)
reagents_to_add = list(/decl/reagent/alcohol/bitters = 40)
reagents_to_add = list(/singleton/reagent/alcohol/bitters = 40)
/obj/item/reagent_containers/food/drinks/bottle/champagne
name = "Silverport's Bubbliest champagne"
@@ -288,7 +288,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "champagnebottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/champagne = 100)
reagents_to_add = list(/singleton/reagent/alcohol/champagne = 100)
/obj/item/reagent_containers/food/drinks/bottle/mintsyrup
name = "Getmore's Bold Peppermint"
@@ -296,7 +296,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "mint_syrup"
center_of_mass = list("x"=16, "y"=6)
reagents_to_add = list(/decl/reagent/drink/mintsyrup = 100)
reagents_to_add = list(/singleton/reagent/drink/mintsyrup = 100)
/obj/item/reagent_containers/food/drinks/bottle/patron
name = "Cytherea Artiste patron"
@@ -305,7 +305,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "patronbottle"
center_of_mass = list("x"=16, "y"=7)
reagents_to_add = list(/decl/reagent/alcohol/patron = 100)
reagents_to_add = list(/singleton/reagent/alcohol/patron = 100)
/obj/item/reagent_containers/food/drinks/bottle/rum
name = "Undirstader Broeckhouser rum"
@@ -315,7 +315,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "rumbottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/rum = 100)
reagents_to_add = list(/singleton/reagent/alcohol/rum = 100)
/obj/item/reagent_containers/food/drinks/bottle/holywater
name = "flask of holy water"
@@ -323,7 +323,7 @@
icon_state = "holyflask"
center_of_mass = list("x"=17, "y"=10)
drink_flags = NO_EMPTY_ICON
reagents_to_add = list(/decl/reagent/water/holywater = 100)
reagents_to_add = list(/singleton/reagent/water/holywater = 100)
/obj/item/reagent_containers/food/drinks/bottle/vermouth
name = "Xinghua vermouth"
@@ -332,7 +332,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "vermouthbottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/vermouth = 100)
reagents_to_add = list(/singleton/reagent/alcohol/vermouth = 100)
/obj/item/reagent_containers/food/drinks/bottle/kahlua
name = "Nixiqi's Happy Accident coffee liqueur"
@@ -340,7 +340,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "kahluabottle"
center_of_mass = list("x"=16, "y"=5)
reagents_to_add = list(/decl/reagent/alcohol/coffee/kahlua = 100)
reagents_to_add = list(/singleton/reagent/alcohol/coffee/kahlua = 100)
/obj/item/reagent_containers/food/drinks/bottle/goldschlager
name = "Uptown Cytherean goldschlager"
@@ -348,7 +348,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "goldschlagerbottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/goldschlager = 100)
reagents_to_add = list(/singleton/reagent/alcohol/goldschlager = 100)
/obj/item/reagent_containers/food/drinks/bottle/cognac
name = "Cytherea Golden Sweetness cognac"
@@ -356,7 +356,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "cognacbottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/cognac = 100)
reagents_to_add = list(/singleton/reagent/alcohol/cognac = 100)
/obj/item/reagent_containers/food/drinks/bottle/wine
name = "Silverport Quality Brand red wine"
@@ -364,7 +364,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "winebottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/wine = 100)
reagents_to_add = list(/singleton/reagent/alcohol/wine = 100)
/obj/item/reagent_containers/food/drinks/bottle/absinthe
name = "Jailbreaker Verte"
@@ -372,7 +372,7 @@
desc_extended = DRINK_FLUFF_SILVERPORT
icon_state = "absinthebottle"
center_of_mass = list("x"=16, "y"=7)
reagents_to_add = list(/decl/reagent/alcohol/absinthe = 100)
reagents_to_add = list(/singleton/reagent/alcohol/absinthe = 100)
/obj/item/reagent_containers/food/drinks/bottle/melonliquor
name = "Emeraldine melon liquor"
@@ -382,7 +382,7 @@
center_of_mass = list("x"=16, "y"=6)
drink_flags = IS_GLASS | UNIQUE_EMPTY_ICON
empty_icon_state = "alco-blue_empty"
reagents_to_add = list(/decl/reagent/alcohol/melonliquor = 100)
reagents_to_add = list(/singleton/reagent/alcohol/melonliquor = 100)
/obj/item/reagent_containers/food/drinks/bottle/bluecuracao
name = "Xuaousha curacao"
@@ -391,7 +391,7 @@
icon_state = "alco-blue"
empty_icon_state = "alco-clear"
center_of_mass = list("x"=16, "y"=6)
reagents_to_add = list(/decl/reagent/alcohol/bluecuracao = 100)
reagents_to_add = list(/singleton/reagent/alcohol/bluecuracao = 100)
/obj/item/reagent_containers/food/drinks/bottle/grenadine
name = "Getmore's Tangy grenadine syrup"
@@ -400,7 +400,7 @@
icon_state = "grenadinebottle"
drink_flags = IS_GLASS | NO_EMPTY_ICON
center_of_mass = list("x"=16, "y"=6)
reagents_to_add = list(/decl/reagent/drink/grenadine = 100)
reagents_to_add = list(/singleton/reagent/drink/grenadine = 100)
/obj/item/reagent_containers/food/drinks/bottle/cola
name = "comet cola"
@@ -410,7 +410,7 @@
drink_flags = NO_EMPTY_ICON
drop_sound = 'sound/items/drop/shoes.ogg'
pickup_sound = 'sound/items/pickup/shoes.ogg'
reagents_to_add = list(/decl/reagent/drink/space_cola = 100)
reagents_to_add = list(/singleton/reagent/drink/space_cola = 100)
shatter_material = MATERIAL_PLASTIC
fragile = 0
@@ -423,7 +423,7 @@
drink_flags = NO_EMPTY_ICON
drop_sound = 'sound/items/drop/shoes.ogg'
pickup_sound = 'sound/items/pickup/shoes.ogg'
reagents_to_add = list(/decl/reagent/drink/spaceup = 100)
reagents_to_add = list(/singleton/reagent/drink/spaceup = 100)
shatter_material = MATERIAL_PLASTIC
fragile = 0
@@ -436,7 +436,7 @@
drink_flags = NO_EMPTY_ICON
drop_sound = 'sound/items/drop/shoes.ogg'
pickup_sound = 'sound/items/pickup/shoes.ogg'
reagents_to_add = list(/decl/reagent/drink/spacemountainwind = 100)
reagents_to_add = list(/singleton/reagent/drink/spacemountainwind = 100)
shatter_material = MATERIAL_PLASTIC
fragile = 0
@@ -448,7 +448,7 @@
students because of its stimulant effect."
icon_state = "hrozamal_soda_bottle"
center_of_mass = list("x"=16, "y"=5)
reagents_to_add = list(/decl/reagent/drink/hrozamal_soda = 100)
reagents_to_add = list(/singleton/reagent/drink/hrozamal_soda = 100)
fragile = FALSE
/obj/item/reagent_containers/food/drinks/bottle/pwine
@@ -457,7 +457,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "pwinebottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/pwine = 100)
reagents_to_add = list(/singleton/reagent/alcohol/pwine = 100)
//Small bottles
/obj/item/reagent_containers/food/drinks/bottle/small
@@ -477,7 +477,7 @@
icon_state = "beer"
center_of_mass = list("x"=16, "y"=8)
reagents_to_add = list(/decl/reagent/alcohol/beer = 30)
reagents_to_add = list(/singleton/reagent/alcohol/beer = 30)
/obj/item/reagent_containers/food/drinks/bottle/small/ale
name = "\improper Burszi-ale"
@@ -487,7 +487,7 @@
item_state = "beer"
center_of_mass = list("x"=16, "y"=8)
reagents_to_add = list(/decl/reagent/alcohol/ale = 30)
reagents_to_add = list(/singleton/reagent/alcohol/ale = 30)
//aurora's drinks
@@ -498,7 +498,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "chartreusegreenbottle"
center_of_mass = list("x" = 15,"y" = 5)
reagents_to_add = list(/decl/reagent/alcohol/chartreusegreen = 100)
reagents_to_add = list(/singleton/reagent/alcohol/chartreusegreen = 100)
/obj/item/reagent_containers/food/drinks/bottle/chartreuseyellow
name = "Nralakk Touch yellow chartreuse"
@@ -507,7 +507,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "chartreuseyellowbottle"
center_of_mass = list("x" = 15,"y" = 5)
reagents_to_add = list(/decl/reagent/alcohol/chartreuseyellow = 100)
reagents_to_add = list(/singleton/reagent/alcohol/chartreuseyellow = 100)
/obj/item/reagent_containers/food/drinks/bottle/cremewhite
name = "Xinghua White Mint"
@@ -515,7 +515,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "whitecremebottle"
center_of_mass = list("x" = 16,"y" = 5)
reagents_to_add = list(/decl/reagent/alcohol/cremewhite = 100)
reagents_to_add = list(/singleton/reagent/alcohol/cremewhite = 100)
/obj/item/reagent_containers/food/drinks/bottle/cremeyvette
name = "Xinghua Delicate Violet"
@@ -523,7 +523,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "cremedeyvettebottle"
center_of_mass = list("x" = 16,"y" = 6)
reagents_to_add = list(/decl/reagent/alcohol/cremeyvette = 100)
reagents_to_add = list(/singleton/reagent/alcohol/cremeyvette = 100)
/obj/item/reagent_containers/food/drinks/bottle/brandy
name = "Admiral Cindy's brandy"
@@ -531,7 +531,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "brandybottle"
center_of_mass = list("x" = 15,"y" = 8)
reagents_to_add = list(/decl/reagent/alcohol/brandy = 100)
reagents_to_add = list(/singleton/reagent/alcohol/brandy = 100)
/obj/item/reagent_containers/food/drinks/bottle/guinness
name = "Guinness"
@@ -539,7 +539,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "guinness_bottle"
center_of_mass = list("x" = 15,"y" = 4)
reagents_to_add = list(/decl/reagent/alcohol/guinness = 100)
reagents_to_add = list(/singleton/reagent/alcohol/guinness = 100)
/obj/item/reagent_containers/food/drinks/bottle/drambuie
name = "Xinghua Honeyed Satisfaction"
@@ -547,7 +547,7 @@
desc_extended = DRINK_FLUFF_ZENGHU
icon_state = "drambuie_bottle"
center_of_mass = list("x" = 16,"y" = 6)
reagents_to_add = list(/decl/reagent/alcohol/drambuie = 100)
reagents_to_add = list(/singleton/reagent/alcohol/drambuie = 100)
/obj/item/reagent_containers/food/drinks/bottle/sbiten
name = "Getmore's Traditional Sbiten"
@@ -555,7 +555,7 @@
desc_extended = DRINK_FLUFF_GETMORE
icon_state = "sbitenbottle"
center_of_mass = list("x" = 16,"y" = 7)
reagents_to_add = list(/decl/reagent/alcohol/sbiten = 100)
reagents_to_add = list(/singleton/reagent/alcohol/sbiten = 100)
/obj/item/reagent_containers/food/drinks/bottle/messa_mead
name = "messa's mead"
@@ -565,7 +565,7 @@
desc_extended = "A fermented alcoholic drink made from earthen-root juice and Messa's tears leaves. It has a relatively low alcohol content and characteristic honey flavor. \
Messa's Mead is one of the most popular alcoholic drinks in Adhomai; it is consumed both during celebrations and daily meals. Any proper Adhomian bar will have at least a keg or \
some bottles of the mead."
reagents_to_add = list(/decl/reagent/alcohol/messa_mead = 100)
reagents_to_add = list(/singleton/reagent/alcohol/messa_mead = 100)
/obj/item/reagent_containers/food/drinks/bottle/sake
name = "Shokyodo Sake"
@@ -575,7 +575,7 @@
competitors."
icon_state = "sakebottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/sake = 100)
reagents_to_add = list(/singleton/reagent/alcohol/sake = 100)
/obj/item/reagent_containers/food/drinks/bottle/soju
name = "Boryeong '45 soju"
@@ -585,7 +585,7 @@
name refers to its alcohol by volume content, and not a calendar year."
icon_state = "sojubottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/soju = 100)
reagents_to_add = list(/singleton/reagent/alcohol/soju = 100)
/obj/item/reagent_containers/food/drinks/bottle/makgeolli
name = "Doctor Kyung's makgeolli"
@@ -597,7 +597,7 @@
really is just that good."
icon_state = "makgeollibottle"
center_of_mass = list("x"=16, "y"=5)
reagents_to_add = list(/decl/reagent/alcohol/makgeolli = 100)
reagents_to_add = list(/singleton/reagent/alcohol/makgeolli = 100)
/obj/item/reagent_containers/food/drinks/bottle/small/khlibnyz
name = "khlibnyz"
@@ -607,7 +607,7 @@
desc_extended = "A fermented beverage produced from Adhomian bread. Herbs, fruits, and tree sap can be added for flavoring. It is considered a non-alcoholic drink by Adhomian standards \
because of its very low alcohol content. Khlibnyz was mainly consumed by peasants during pre-contact times and is still very popular with the Hadiist rural population. Communal farms \
will brew their own Khlibnyz and sell it to the government for distribution."
reagents_to_add = list(/decl/reagent/alcohol/khlibnyz = 30)
reagents_to_add = list(/singleton/reagent/alcohol/khlibnyz = 30)
/obj/item/reagent_containers/food/drinks/bottle/shyyrkirrtyr_wine
name = "shyyr kirr'tyr wine"
@@ -617,7 +617,7 @@
desc_extended = "An alcoholic made by infusing a whole Shyyr Kirr'tyr in Dirt Berries or Earthen-Root spirit. The Water Snake Devil's poison is neutralized by ethanol, making the \
beverage safe to consume. The wine can be deadly if improperly prepared. The drink is native to the Southeast Harr'masir wetlands, where it is as common as Messa's Mead. Other \
Tajara consider the wine to be exotic or outright disgusting. The Shyyr Kirr'tyr is usually eaten after the beverage is imbibed."
reagents_to_add = list(/decl/reagent/alcohol/shyyrkirrtyr_wine = 100)
reagents_to_add = list(/singleton/reagent/alcohol/shyyrkirrtyr_wine = 100)
/obj/item/reagent_containers/food/drinks/bottle/nmshaan_liquor
name = "nm'shaan liquor"
@@ -626,7 +626,7 @@
center_of_mass = list("x" = 16,"y" = 5)
desc_extended = "An alcoholic drink manufactured from the fruit of the Nm'shaan plant. It usually has a high level of alcohol by volume. Nm'shaan liquor was once reserved for the \
consumption of the nobility; even today it is considered a decadent drink reserved for fancy occasions."
reagents_to_add = list(/decl/reagent/alcohol/nmshaan_liquor = 100)
reagents_to_add = list(/singleton/reagent/alcohol/nmshaan_liquor = 100)
/obj/item/reagent_containers/food/drinks/bottle/small/midynhr_water
name = "midynhr water"
@@ -635,7 +635,7 @@
center_of_mass = list("x" = 16,"y" = 5)
desc_extended = "A soft drink based on Yve'kha's honey and tree syrups. The drink has a creamy consistency and is served cold from the tap of traditional soda fountains. Native to \
Das'nrra, the beverage is now widespread in the Al'mariist territories. Bottled versions exist, but they are considered to be inferior to what is served in bars and restaurants."
reagents_to_add = list(/decl/reagent/drink/midynhr_water = 30)
reagents_to_add = list(/singleton/reagent/drink/midynhr_water = 30)
/obj/item/reagent_containers/food/drinks/bottle/veterans_choice
name = "veteran's choice"
@@ -644,7 +644,7 @@
center_of_mass = list("x" = 16,"y" = 5)
desc_extended = "A cocktail consisting of Messa's Mead and gunpowder. Supposedly originated among the ranks of the Liberation Army as an attempt to spice up the mead, the cocktail \
became a hit - not because of its taste - with the young Tajara. Drinking the Veteran's Choice is seen as a way to display one's bravado. ALA soldiers are known to consume the cocktail before going into battle believing that it brings luck."
reagents_to_add = list(/decl/reagent/alcohol/veterans_choice = 100)
reagents_to_add = list(/singleton/reagent/alcohol/veterans_choice = 100)
/obj/item/reagent_containers/food/drinks/bottle/treebark_firewater
name = "tree-bark firewater"
@@ -654,7 +654,7 @@
desc_extended = "High-content alcohol distilled from Earthen-Root or Blizzard Ears. Tree bark is commonly added to the drink to give it a distinct flavor. The firewater's origins can \
be traced back to the pre-contact times where impoverished peasants would make alcohol out of anything they could find. Homebrewing remains a tradition in the New Kingdom's rural \
parts. These traditional spirits are also manufactured by large breweries and sold to the urban population as handcrafted."
reagents_to_add = list(/decl/reagent/alcohol/treebark_firewater = 100)
reagents_to_add = list(/singleton/reagent/alcohol/treebark_firewater = 100)
drink_flags = NO_EMPTY_ICON
/obj/item/reagent_containers/food/drinks/bottle/darmadhir_brew
@@ -665,7 +665,7 @@
desc_extended = "A famous variation of the Nm'shaan Liquor; it is described as one of Adhomai's finest spirits. It is produced solely by a small family-owned brewery in Miran'mir. Its \
recipe is a secret passed down through the generations of the Darmadhir household since immemorial times. The only living member of the family, Hazyr Darmadhir, is a 68 years old \
Tajara. His sole heir and son died in the Second Revolution after being drafted to fight for the royal army. Alcohol collectors stipulate that the brew's price will skyrocket after Hazyr's death."
reagents_to_add = list(/decl/reagent/alcohol/nmshaan_liquor/darmadhirbrew = 100)
reagents_to_add = list(/singleton/reagent/alcohol/nmshaan_liquor/darmadhirbrew = 100)
drink_flags = NO_EMPTY_ICON
/obj/item/reagent_containers/food/drinks/bottle/pulque
@@ -675,7 +675,7 @@
megacorporation. Nowadays, it is bottled and sold all around the galaxy."
icon_state = "pulquebottle"
center_of_mass = list("x" = 16, "y" = 5)
reagents_to_add = list(/decl/reagent/alcohol/pulque = 100)
reagents_to_add = list(/singleton/reagent/alcohol/pulque = 100)
/obj/item/reagent_containers/food/drinks/bottle/vintage_wine //can't make it a child of wine, or else reagents double-fill
name = "Vintage Wine"
@@ -685,7 +685,7 @@
due to how relatively few exist compared to more mass-produced wines. The attention to detail can be seen in the bottle, and felt in the taste. While megacorporations and their \
subsidiaries don't produce bad products, wine afficianados across the spur agree that nothing comes close to these locally-produced treasures. They can easily be worth thousands of credits."
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/wine/vintage = 100)
reagents_to_add = list(/singleton/reagent/alcohol/wine/vintage = 100)
/obj/item/reagent_containers/food/drinks/bottle/vintage_wine/Initialize()
. = ..()
@@ -701,14 +701,14 @@
desc = "Blended flower buds from the Xuizi cactus. It smells faintly of vanilla. Bottled by the Arizi Guild for over 200 years."
icon_state = "xuizibottle"
center_of_mass = list("x"=16, "y"=8)
reagents_to_add = list(/decl/reagent/alcohol/butanol/xuizijuice = 30)
reagents_to_add = list(/singleton/reagent/alcohol/butanol/xuizijuice = 30)
/obj/item/reagent_containers/food/drinks/bottle/sarezhiwine
name = "Sarezhi Wine"
desc = "A premium Moghean wine made from Sareszhi berries. Bottled by the Arizi Guild for over 200 years."
icon_state = "sarezhibottle"
center_of_mass = list("x" = 16,"y" = 6)
reagents_to_add = list(/decl/reagent/alcohol/butanol/sarezhiwine = 100)
reagents_to_add = list(/singleton/reagent/alcohol/butanol/sarezhiwine = 100)
// Synnono Meme (Bottled) Drinks
//======================================
@@ -719,11 +719,11 @@
desc = "A distillation of figs, imported from the Serene Republic of Elyra. Makes an excellent apertif or digestif."
icon_state = "boukhabottle"
center_of_mass = list("x"=16, "y"=6)
reagents_to_add = list(/decl/reagent/alcohol/boukha = 100)
reagents_to_add = list(/singleton/reagent/alcohol/boukha = 100)
/obj/item/reagent_containers/food/drinks/bottle/whitewine
name = "Pineneedle Brand white wine"
desc = "A mediocre quality white wine, intended more for making spritzers than for drinking by itself. Produced on Visegrad by Idris."
icon_state = "whitewinebottle"
center_of_mass = list("x"=16, "y"=4)
reagents_to_add = list(/decl/reagent/alcohol/whitewine = 100)
reagents_to_add = list(/singleton/reagent/alcohol/whitewine = 100)
@@ -20,7 +20,7 @@
fragile = 2
/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change()
var/decl/reagent/R = reagents.get_primary_reagent_decl()
var/singleton/reagent/R = reagents.get_primary_reagent_decl()
if (LAZYLEN(reagents.reagent_volumes) && R)
icon_state = R.glass_icon_state || "nothing"
name = R.glass_name || "glass of something"
@@ -61,7 +61,7 @@
// for /obj/machinery/vending/sovietsoda
/obj/item/reagent_containers/food/drinks/drinkingglass/soda
reagents_to_add = list(/decl/reagent/drink/sodawater = 50)
reagents_to_add = list(/singleton/reagent/drink/sodawater = 50)
/obj/item/reagent_containers/food/drinks/drinkingglass/cola
reagents_to_add = list(/decl/reagent/drink/space_cola = 50)
reagents_to_add = list(/singleton/reagent/drink/space_cola = 50)
@@ -102,30 +102,30 @@ var/list/lunchables_utensil_ = list(
// This default list is a bit different, it contains items we don't want
var/list/lunchables_drink_reagents_ = list(
/decl/reagent/drink/nothing,
/decl/reagent/drink/doctorsdelight,
/decl/reagent/drink/dry_ramen,
/decl/reagent/drink/hell_ramen,
/decl/reagent/drink/hot_ramen,
/decl/reagent/drink/nuka_cola
/singleton/reagent/drink/nothing,
/singleton/reagent/drink/doctorsdelight,
/singleton/reagent/drink/dry_ramen,
/singleton/reagent/drink/hell_ramen,
/singleton/reagent/drink/hot_ramen,
/singleton/reagent/drink/nuka_cola
)
// This default list is a bit different, it contains items we don't want
var/list/lunchables_alcohol_reagents_ = list(
/decl/reagent/alcohol,
/decl/reagent/alcohol/acid_spit,
/decl/reagent/alcohol/atomicbomb,
/decl/reagent/alcohol/beepsky_smash,
/decl/reagent/alcohol/coffee,
/decl/reagent/alcohol/hippiesdelight,
/decl/reagent/alcohol/hooch,
/decl/reagent/alcohol/thirteenloko,
/decl/reagent/alcohol/manhattan_proj,
/decl/reagent/alcohol/neurotoxin,
/decl/reagent/alcohol/pwine,
/decl/reagent/alcohol/threemileisland,
/decl/reagent/alcohol/toxins_special,
/decl/reagent/alcohol/nmshaan_liquor/darmadhirbrew
/singleton/reagent/alcohol,
/singleton/reagent/alcohol/acid_spit,
/singleton/reagent/alcohol/atomicbomb,
/singleton/reagent/alcohol/beepsky_smash,
/singleton/reagent/alcohol/coffee,
/singleton/reagent/alcohol/hippiesdelight,
/singleton/reagent/alcohol/hooch,
/singleton/reagent/alcohol/thirteenloko,
/singleton/reagent/alcohol/manhattan_proj,
/singleton/reagent/alcohol/neurotoxin,
/singleton/reagent/alcohol/pwine,
/singleton/reagent/alcohol/threemileisland,
/singleton/reagent/alcohol/toxins_special,
/singleton/reagent/alcohol/nmshaan_liquor/darmadhirbrew
)
/proc/lunchables_lunches()
@@ -160,12 +160,12 @@ var/list/lunchables_alcohol_reagents_ = list(
/proc/lunchables_drink_reagents()
if(!(lunchables_drink_reagents_[lunchables_drink_reagents_[1]]))
lunchables_drink_reagents_ = init_lunchable_reagent_list(lunchables_drink_reagents_, /decl/reagent/drink)
lunchables_drink_reagents_ = init_lunchable_reagent_list(lunchables_drink_reagents_, /singleton/reagent/drink)
return lunchables_drink_reagents_
/proc/lunchables_alcohol_reagents()
if(!(lunchables_alcohol_reagents_[lunchables_alcohol_reagents_[1]]))
lunchables_alcohol_reagents_ = init_lunchable_reagent_list(lunchables_alcohol_reagents_, /decl/reagent/alcohol)
lunchables_alcohol_reagents_ = init_lunchable_reagent_list(lunchables_alcohol_reagents_, /singleton/reagent/alcohol)
return lunchables_alcohol_reagents_
/proc/lunchables_all_drink_reagents()
@@ -184,7 +184,7 @@ var/list/lunchables_alcohol_reagents_ = list(
for(var/reagent_type in subtypesof(reagent_types))
if(reagent_type in banned_reagents)
continue
var/decl/reagent/reagent = reagent_type
var/singleton/reagent/reagent = reagent_type
.[initial(reagent.name)] = reagent_type
sortTim(., /proc/cmp_text_asc)
File diff suppressed because it is too large Load Diff
@@ -1,7 +1,7 @@
/obj/item/reagent_containers/food/snacks/fish
icon_state = "fishfillet"
filling_color = "#FFDEFE"
reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3)
reagents_to_add = list(/singleton/reagent/nutriment/protein/seafood = 3)
bitesize = 6
var/fish_type = "fish"
@@ -16,7 +16,7 @@
/obj/item/reagent_containers/food/snacks/fish/carpmeat
name = "carp fillet"
desc = "A fillet of space carp meat."
reagents_to_add = list(/decl/reagent/toxin/carpotoxin = 3, /decl/reagent/nutriment/protein/seafood = 3)
reagents_to_add = list(/singleton/reagent/toxin/carpotoxin = 3, /singleton/reagent/nutriment/protein/seafood = 3)
fish_type = "space carp"
/obj/item/reagent_containers/food/snacks/fish/fishfillet
@@ -28,13 +28,13 @@
desc = "A fleshy organ filled with fish eggs."
icon_state = "roesack"
fish_type = "fish"
reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3)
reagents_to_add = list(/singleton/reagent/nutriment/protein/seafood = 3)
/obj/item/reagent_containers/food/snacks/fish/mollusc
name = "slimy meat"
desc = "Some slimy meat from clams or molluscs."
fish_type = "mollusc"
reagents_to_add = list(/decl/reagent/nutriment/protein/seafood/mollusc = 3)
reagents_to_add = list(/singleton/reagent/nutriment/protein/seafood/mollusc = 3)
/obj/item/reagent_containers/food/snacks/fish/mollusc/clam
fish_type = "clam"
@@ -47,7 +47,7 @@
desc = "A piece of slimy meat that could only come from a space jellyfish, a cosmozoan."
icon_state = "cozmofillet"
fish_type = "cosmozoan"
reagents_to_add = list(/decl/reagent/nutriment/protein/seafood/cosmozoan = 3)
reagents_to_add = list(/singleton/reagent/nutriment/protein/seafood/cosmozoan = 3)
// Molluscs!
/obj/item/trash/mollusc_shell
@@ -89,7 +89,7 @@
shell_type = /obj/item/trash/mollusc_shell/clam
/obj/item/mollusc/proc/crack_shell(var/mob/user)
playsound(loc, /decl/sound_category/pickaxe_sound, 40, TRUE)
playsound(loc, /singleton/sound_category/pickaxe_sound, 40, TRUE)
if(user && loc == user)
user.drop_from_inventory(src)
if(meat_type)
@@ -8,7 +8,7 @@
cooked_icon = "meatstake"
slice_path = /obj/item/reagent_containers/food/snacks/rawcutlet
slices_num = 3
reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/nutriment/triglyceride = 2)
bitesize = 1.5
/obj/item/reagent_containers/food/snacks/meat/cook()
@@ -30,7 +30,7 @@
/obj/item/reagent_containers/food/snacks/meat/bug
filling_color = "#E6E600"
reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2, /decl/reagent/toxin/phoron = 27)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/nutriment/triglyceride = 2, /singleton/reagent/toxin/phoron = 27)
bitesize = 1.5
/obj/item/reagent_containers/food/snacks/meat/monkey
@@ -39,7 +39,7 @@
/obj/item/reagent_containers/food/snacks/meat/neaera
name = "neaera meat"
icon_state = "neaera_meat"
reagents_to_add = list(/decl/reagent/nutriment/protein = 3, /decl/reagent/nutriment/protein/seafood = 3, /decl/reagent/nutriment/triglyceride = 2)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 3, /singleton/reagent/nutriment/protein/seafood = 3, /singleton/reagent/nutriment/triglyceride = 2)
/obj/item/reagent_containers/food/snacks/meat/corgi
name = "corgi meat"
@@ -50,24 +50,24 @@
icon_state = "chickenbreast"
cooked_icon = "chickenbreast_cooked"
filling_color = "#BBBBAA"
reagents_to_add = list(/decl/reagent/nutriment/protein = 6) //Chicken is low fat. Less total calories than other meats
reagents_to_add = list(/singleton/reagent/nutriment/protein = 6) //Chicken is low fat. Less total calories than other meats
/obj/item/reagent_containers/food/snacks/meat/pig
name = "pig meat"
reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 4)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/nutriment/triglyceride = 4)
/obj/item/reagent_containers/food/snacks/meat/biogenerated
name = "meat substitute"
desc = "A slab of extruded plant bits that pretends to be meat."
icon_state = "plantmeat"
filling_color = "#A8AA00"
reagents_to_add = list(/decl/reagent/nutriment = 6)
reagents_to_add = list(/singleton/reagent/nutriment = 6)
/obj/item/reagent_containers/food/snacks/meat/undead
name = "rotten meat"
desc = "A slab of rotten meat."
icon_state = "shadowmeat"
reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/toxin/undead = 5)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/toxin/undead = 5)
/obj/item/reagent_containers/food/snacks/meat/adhomai
name = "adhomian meat"
@@ -83,14 +83,14 @@
name = "rat meat"
icon_state = "chickenbreast"
desc = "You have reached the epitome of poorness: eating the station's vermin."
reagents_to_add = list(/decl/reagent/nutriment/protein = 5, /decl/reagent/nutriment/triglyceride = 2)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 5, /singleton/reagent/nutriment/triglyceride = 2)
bitesize = 1.5
/obj/item/reagent_containers/food/snacks/meat/dionanymph
name = "diona nymph meat"
desc = "A slab of weird green meat."
icon_state = "plantmeat"
reagents_to_add = list(/decl/reagent/diona_powder = 10)
reagents_to_add = list(/singleton/reagent/diona_powder = 10)
/obj/item/reagent_containers/food/snacks/meat/vannatusk
desc = "A slab of weird blue meat."
@@ -98,10 +98,10 @@
icon_state = "vannameat"
item_state = "vannameat"
contained_sprite = TRUE
reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/mindbreaker = 6)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/mindbreaker = 6)
/obj/item/reagent_containers/food/snacks/meat/bat
name = "bat wings"
desc = "Like chicken wings, but with even less meat!"
icon_state = "batmeat"
reagents_to_add = list(/decl/reagent/nutriment/protein = 1)
reagents_to_add = list(/singleton/reagent/nutriment/protein = 1)
@@ -5,13 +5,13 @@
icon_state = "sushi_rice"
bitesize = 1
var/fish_type = "fish"
reagent_data = list(/decl/reagent/nutriment = list())
reagent_data = list(/singleton/reagent/nutriment = list())
/obj/item/reagent_containers/food/snacks/sushi/Initialize(var/ml, var/obj/item/reagent_containers/food/snacks/rice, var/obj/item/reagent_containers/food/snacks/topping)
. = ..(ml)
if(istype(topping))
var/list/flavor = LAZYLEN(topping.reagent_data) ? topping.reagent_data[/decl/reagent/nutriment] : null
var/list/ourflavor = LAZYLEN(reagent_data) ? reagent_data[/decl/reagent/nutriment] : null
var/list/flavor = LAZYLEN(topping.reagent_data) ? topping.reagent_data[/singleton/reagent/nutriment] : null
var/list/ourflavor = LAZYLEN(reagent_data) ? reagent_data[/singleton/reagent/nutriment] : null
for(var/taste_thing in flavor)
if(!ourflavor[taste_thing]) ourflavor[taste_thing] = 0
ourflavor[taste_thing] += flavor[taste_thing]
@@ -58,7 +58,7 @@
filling_color = "#FFDEFE"
gender = PLURAL
bitesize = 3
reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3)
reagents_to_add = list(/singleton/reagent/nutriment/protein/seafood = 3)
var/fish_type = "fish"
var/slices = 1
@@ -30,7 +30,7 @@
if(LAZYLEN(reagents.reagent_volumes))
to_chat(user, SPAN_NOTICE("It contains [round(reagents.total_volume, accuracy)] units of a reagent."))
for(var/_T in reagents.reagent_volumes)
var/decl/reagent/T = decls_repository.get_decl(_T)
var/singleton/reagent/T = GET_SINGLETON(_T)
if(T.reagent_state == LIQUID)
to_chat(user, SPAN_NOTICE("You see something liquid in the beaker."))
break // to stop multiple messages of this
@@ -47,7 +47,7 @@
/obj/item/reagent_containers/glass/get_additional_forensics_swab_info()
var/list/additional_evidence = ..()
var/list/Bdata = REAGENT_DATA(reagents, /decl/reagent/blood/)
var/list/Bdata = REAGENT_DATA(reagents, /singleton/reagent/blood/)
var/list/blood_Data = list(
Bdata["blood_DNA"] = Bdata["blood_type"]
)
@@ -211,9 +211,9 @@
/obj/item/reagent_containers/glass/beaker/medcup/attack_self() // No lid for the medcup
return
/obj/item/reagent_containers/glass/beaker/cryoxadone/reagents_to_add = list(/decl/reagent/cryoxadone = 30)
/obj/item/reagent_containers/glass/beaker/cryoxadone/reagents_to_add = list(/singleton/reagent/cryoxadone = 30)
/obj/item/reagent_containers/glass/beaker/sulphuric/reagents_to_add = list(/decl/reagent/acid = 60)
/obj/item/reagent_containers/glass/beaker/sulphuric/reagents_to_add = list(/singleton/reagent/acid = 60)
/obj/item/reagent_containers/glass/bucket
desc = "A blue plastic bucket."
@@ -61,173 +61,173 @@
name = "inaprovaline bottle"
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/inaprovaline = 60)
reagents_to_add = list(/singleton/reagent/inaprovaline = 60)
/obj/item/reagent_containers/glass/bottle/toxin
name = "toxin bottle"
desc = "A small bottle of toxins. Do not drink, it is poisonous."
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/toxin = 60)
reagents_to_add = list(/singleton/reagent/toxin = 60)
/obj/item/reagent_containers/glass/bottle/cyanide
name = "cyanide bottle"
desc = "A small bottle of cyanide. Bitter almonds?"
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/toxin/cyanide = 30)
reagents_to_add = list(/singleton/reagent/toxin/cyanide = 30)
/obj/item/reagent_containers/glass/bottle/stoxin
name = "soporific bottle"
desc = "A small bottle of soporific. Just the fumes make you sleepy."
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/soporific = 60)
reagents_to_add = list(/singleton/reagent/soporific = 60)
/obj/item/reagent_containers/glass/bottle/polysomnine
name = "chloral hydrate bottle"
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/polysomnine = 30)
reagents_to_add = list(/singleton/reagent/polysomnine = 30)
/obj/item/reagent_containers/glass/bottle/antitoxin
name = "dylovene bottle"
desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/dylovene = 60)
reagents_to_add = list(/singleton/reagent/dylovene = 60)
/obj/item/reagent_containers/glass/bottle/saline
name = "saline bottle"
desc = "A small bottle of saline for attaching to drips. Re-hydrates a patient and helps with increasing blood volume."
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/saline = 60)
reagents_to_add = list(/singleton/reagent/saline = 60)
/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 = "bottle-1"
reagents_to_add = list(/decl/reagent/mutagen = 60)
reagents_to_add = list(/singleton/reagent/mutagen = 60)
/obj/item/reagent_containers/glass/bottle/ammonia
name = "ammonia bottle"
desc = "A small bottle."
icon_state = "bottle-1"
reagents_to_add = list(/decl/reagent/ammonia = 60)
reagents_to_add = list(/singleton/reagent/ammonia = 60)
/obj/item/reagent_containers/glass/bottle/diethylamine
name = "diethylamine bottle"
desc = "A small bottle."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/diethylamine = 60)
reagents_to_add = list(/singleton/reagent/diethylamine = 60)
/obj/item/reagent_containers/glass/bottle/pacid
name = "polytrinic acid bottle"
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/acid/polyacid = 60)
reagents_to_add = list(/singleton/reagent/acid/polyacid = 60)
/obj/item/reagent_containers/glass/bottle/nitroglycerin
name = "nitroglycerin bottle"
desc = "A small bottle. Contains a small amount of Nitroglycerin."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/nitroglycerin = 60)
reagents_to_add = list(/singleton/reagent/nitroglycerin = 60)
/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"
reagents_to_add = list(/decl/reagent/adminordrazine = 60)
reagents_to_add = list(/singleton/reagent/adminordrazine = 60)
/obj/item/reagent_containers/glass/bottle/capsaicin
name = "capsaicin bottle"
desc = "A small bottle. Contains hot sauce."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/capsaicin = 60)
reagents_to_add = list(/singleton/reagent/capsaicin = 60)
/obj/item/reagent_containers/glass/bottle/frostoil
name = "frost oil bottle"
desc = "A small bottle. Contains cold sauce."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/frostoil = 60)
reagents_to_add = list(/singleton/reagent/frostoil = 60)
/obj/item/reagent_containers/glass/bottle/pyrosilicate
name = "pyrosilicate bottle"
desc = "A small bottle. Contains pyrosilicate - used to heat up reagents."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/pyrosilicate = 60)
reagents_to_add = list(/singleton/reagent/pyrosilicate = 60)
/obj/item/reagent_containers/glass/bottle/cryosurfactant
name = "cryosurfactant bottle"
desc = "A small bottle. Contains cryosurfactant - used to cool down reagents."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/cryosurfactant = 60)
reagents_to_add = list(/singleton/reagent/cryosurfactant = 60)
/obj/item/reagent_containers/glass/bottle/epinephrine
name = "epinephrine bottle"
desc = "A small bottle. Contains epinephrine. Epinephrine, also known as adrenaline, is a super strength stimulant and painkiller intended to keep a patient alive while in critical condition. Overdose causes heart damage and an energy boost equivelent to hyperzine."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/adrenaline = 60)
reagents_to_add = list(/singleton/reagent/adrenaline = 60)
/obj/item/reagent_containers/glass/bottle/dexalin_plus
name = "dexalin plus bottle"
desc = "A small bottle. Contains Dexalin Plus that is used in the treatment of oxygen deprivation. It is highly effective, and is twice as powerful and lasts twice as long when inhaled."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/dexalin/plus = 60)
reagents_to_add = list(/singleton/reagent/dexalin/plus = 60)
/obj/item/reagent_containers/glass/bottle/coughsyrup
name = "cough syrup bottle"
desc = "A small bottle of cough syrup. Don't take too much!"
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/coughsyrup = 60)
reagents_to_add = list(/singleton/reagent/coughsyrup = 60)
/obj/item/reagent_containers/glass/bottle/coagzolug
name = "coagzolug bottle"
desc = "A small bottle of coagzolug. A medication that encourages the coagulation of blood, slowing down any bleeding. Overdose causes damage to the heart."
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/coagzolug = 60)
reagents_to_add = list(/singleton/reagent/coagzolug = 60)
/obj/item/reagent_containers/glass/bottle/thetamycin
name = "thetamycin bottle"
desc = "A small bottle of thetamycin. Used for disinfecting whatever wounds security caused."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/thetamycin = 60)
reagents_to_add = list(/singleton/reagent/thetamycin = 60)
/obj/item/reagent_containers/glass/bottle/bicaridine
name = "bicaridine bottle"
desc = "A small bottle. Contains bicaridine - treats damaged tissues."
icon_state = "bottle-1"
reagents_to_add = list(/decl/reagent/bicaridine = 60)
reagents_to_add = list(/singleton/reagent/bicaridine = 60)
/obj/item/reagent_containers/glass/bottle/butazoline
name = "butazoline bottle"
desc = "A small bottle. Contains butazoline - treats damaged tissues."
icon_state = "bottle-1"
reagents_to_add = list(/decl/reagent/butazoline = 60)
reagents_to_add = list(/singleton/reagent/butazoline = 60)
/obj/item/reagent_containers/glass/bottle/dermaline
name = "dermaline bottle"
desc = "A small bottle. Contains dermaline - treats burnt tissues."
icon_state = "bottle-2"
reagents_to_add = list(/decl/reagent/dermaline = 60)
reagents_to_add = list(/singleton/reagent/dermaline = 60)
/obj/item/reagent_containers/glass/bottle/peridaxon
name = "peridaxon bottle"
desc = "A small bottle. Contains peridaxon - treats damaged organs."
icon_state = "bottle-2"
reagents_to_add = list(/decl/reagent/peridaxon = 60)
reagents_to_add = list(/singleton/reagent/peridaxon = 60)
/obj/item/reagent_containers/glass/bottle/mortaphenyl
name = "mortaphenyl bottle"
desc = "A small bottle. Contains mortaphenyl - treats mild-severe pain as a result of severe, physical injury."
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/mortaphenyl = 60)
reagents_to_add = list(/singleton/reagent/mortaphenyl = 60)
/obj/item/reagent_containers/glass/bottle/perconol
name = "perconol bottle"
desc = "A small bottle. Contains perconol - treats minor-moderate pain as a result of physical injury."
icon_state = "bottle-3"
reagents_to_add = list(/decl/reagent/perconol = 60)
reagents_to_add = list(/singleton/reagent/perconol = 60)
/obj/item/reagent_containers/glass/bottle/hyronalin
name = "hyronalin bottle"
desc = "A small bottle. Contains hyronalin - treats mild moderate radiation poisoning."
icon_state = "bottle-4"
reagents_to_add = list(/decl/reagent/hyronalin = 60)
reagents_to_add = list(/singleton/reagent/hyronalin = 60)
@@ -5,7 +5,7 @@
flags = OPENCONTAINER
volume = 60
fragile = 0 // do NOT shatter
var/reagent = /decl/reagent/
var/reagent = /singleton/reagent/
/obj/item/reagent_containers/glass/bottle/robot/inaprovaline
@@ -13,13 +13,13 @@
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle-4"
reagent = /decl/reagent/inaprovaline
reagents_to_add = list(/decl/reagent/inaprovaline = 60)
reagent = /singleton/reagent/inaprovaline
reagents_to_add = list(/singleton/reagent/inaprovaline = 60)
/obj/item/reagent_containers/glass/bottle/robot/antitoxin
name = "internal anti-toxin bottle"
desc = "A small bottle of Anti-toxins. Counters poisons, and repairs damage, a wonder drug."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle-4"
reagent = /decl/reagent/dylovene
reagents_to_add = list(/decl/reagent/dylovene = 60)
reagent = /singleton/reagent/dylovene
reagents_to_add = list(/singleton/reagent/dylovene = 60)
@@ -193,15 +193,15 @@
/obj/item/reagent_containers/hypospray/autoinjector/inaprovaline
name_label = "inaprovaline"
reagents_to_add = list(/decl/reagent/inaprovaline = 5)
reagents_to_add = list(/singleton/reagent/inaprovaline = 5)
/obj/item/reagent_containers/hypospray/autoinjector/dylovene
name_label = "dylovene"
reagents_to_add = list(/decl/reagent/dylovene = 5)
reagents_to_add = list(/singleton/reagent/dylovene = 5)
/obj/item/reagent_containers/hypospray/autoinjector/emergency
name_label = "emergency"
reagents_to_add = list(/decl/reagent/inaprovaline = 2.5, /decl/reagent/dexalin = 2.5)
reagents_to_add = list(/singleton/reagent/inaprovaline = 2.5, /singleton/reagent/dexalin = 2.5)
/obj/item/reagent_containers/hypospray/autoinjector/emergency/Initialize()
. = ..()
@@ -212,12 +212,12 @@
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel. This one contains coagzolug, a quick-acting blood coagulant that will slow bleeding for as long as it's within the bloodstream."
volume = 5
flags = 0
reagents_to_add = list(/decl/reagent/coagzolug = 5)
reagents_to_add = list(/singleton/reagent/coagzolug = 5)
/obj/item/reagent_containers/hypospray/autoinjector/hyronalin
name_label = "hyronalin"
flags = 0
reagents_to_add = list(/decl/reagent/hyronalin = 5)
reagents_to_add = list(/singleton/reagent/hyronalin = 5)
/obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone
name_label = "sideeffects-be-gone!"
@@ -225,7 +225,7 @@
volume = 30
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/synaptizine = 5, /decl/reagent/cetahydramine = 10, /decl/reagent/oculine = 5, /decl/reagent/ethylredoxrazine = 10)
reagents_to_add = list(/singleton/reagent/synaptizine = 5, /singleton/reagent/cetahydramine = 10, /singleton/reagent/oculine = 5, /singleton/reagent/ethylredoxrazine = 10)
/obj/item/reagent_containers/hypospray/autoinjector/stimpack
name = "stimpack"
@@ -233,7 +233,7 @@
volume = 20
amount_per_transfer_from_this = 20
reagents_to_add = list(/decl/reagent/hyperzine = 12, /decl/reagent/mortaphenyl = 6, /decl/reagent/synaptizine = 2)
reagents_to_add = list(/singleton/reagent/hyperzine = 12, /singleton/reagent/mortaphenyl = 6, /singleton/reagent/synaptizine = 2)
/obj/item/reagent_containers/hypospray/autoinjector/survival
name = "survival autoinjector"
@@ -241,7 +241,7 @@
volume = 35
amount_per_transfer_from_this = 35
reagents_to_add = list(/decl/reagent/tricordrazine = 15, /decl/reagent/inaprovaline = 5, /decl/reagent/dexalin/plus = 5, /decl/reagent/oxycomorphine = 3, /decl/reagent/synaptizine = 2, /decl/reagent/mental/corophenidate = 5)
reagents_to_add = list(/singleton/reagent/tricordrazine = 15, /singleton/reagent/inaprovaline = 5, /singleton/reagent/dexalin/plus = 5, /singleton/reagent/oxycomorphine = 3, /singleton/reagent/synaptizine = 2, /singleton/reagent/mental/corophenidate = 5)
/obj/item/reagent_containers/hypospray/autoinjector/berserk
name_label = "berserk injector"
@@ -249,7 +249,7 @@
volume = 5
amount_per_transfer_from_this = 5
reagents_to_add = list(/decl/reagent/toxin/berserk = 5)
reagents_to_add = list(/singleton/reagent/toxin/berserk = 5)
/obj/item/reagent_containers/hypospray/autoinjector/trauma
name = "trauma hypo-injector"
@@ -257,7 +257,7 @@
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/butazoline = 15)
reagents_to_add = list(/singleton/reagent/butazoline = 15)
/obj/item/reagent_containers/hypospray/autoinjector/burn
name = "burn hypo-injector"
@@ -265,7 +265,7 @@
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/dermaline = 15)
reagents_to_add = list(/singleton/reagent/dermaline = 15)
/obj/item/reagent_containers/hypospray/autoinjector/oxygen
name = "oxygenation hypo-injector"
@@ -273,7 +273,7 @@
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/dexalin/plus = 15)
reagents_to_add = list(/singleton/reagent/dexalin/plus = 15)
/obj/item/reagent_containers/hypospray/autoinjector/purity
name = "purity hypo-injector"
@@ -281,7 +281,7 @@
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/thetamycin = 10, /decl/reagent/ryetalyn = 5)
reagents_to_add = list(/singleton/reagent/thetamycin = 10, /singleton/reagent/ryetalyn = 5)
/obj/item/reagent_containers/hypospray/autoinjector/organ
name = "organ hypo-injector"
@@ -289,7 +289,7 @@
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/peridaxon = 10, /decl/reagent/oculine = 5)
reagents_to_add = list(/singleton/reagent/peridaxon = 10, /singleton/reagent/oculine = 5)
/obj/item/reagent_containers/hypospray/autoinjector/pain
name = "numbing hypo-injector"
@@ -297,7 +297,7 @@
volume = 15
amount_per_transfer_from_this = 5
reagents_to_add = list(/decl/reagent/oxycomorphine = 15)
reagents_to_add = list(/singleton/reagent/oxycomorphine = 15)
/obj/item/reagent_containers/hypospray/combat
name = "combat hypospray"
@@ -308,7 +308,7 @@
armorcheck = FALSE
time = 0
reagents_to_add = list(/decl/reagent/kilosemine = 10)
reagents_to_add = list(/singleton/reagent/kilosemine = 10)
/obj/item/reagent_containers/hypospray/combat/empty
name = "combat hypospray"
@@ -321,25 +321,25 @@
volume = 20
amount_per_transfer_from_this = 20
reagents_to_add = list(/decl/reagent/sanasomnum = 20)
reagents_to_add = list(/singleton/reagent/sanasomnum = 20)
/obj/item/reagent_containers/hypospray/autoinjector/bicaridine
name = "bicaridine autoinjector"
desc = "An autoinjector loaded with bicaridine, a chemical used to treat physical trauma."
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/bicaridine = 15)
reagents_to_add = list(/singleton/reagent/bicaridine = 15)
/obj/item/reagent_containers/hypospray/autoinjector/kelotane
name = "kelotane autoinjector"
desc = "An autoinjector loaded with kelotane, a chemical used to treat burnt tissue."
volume = 15
amount_per_transfer_from_this = 15
reagents_to_add = list(/decl/reagent/kelotane = 15)
reagents_to_add = list(/singleton/reagent/kelotane = 15)
/obj/item/reagent_containers/hypospray/autoinjector/peridaxon
name = "peridaxon autoinjector"
desc = "An autoinjector loaded with peridaxon, a chemical used to treat minor organ damage."
volume = 10
amount_per_transfer_from_this = 10
reagents_to_add = list(/decl/reagent/peridaxon = 10)
reagents_to_add = list(/singleton/reagent/peridaxon = 10)
@@ -163,7 +163,7 @@
/obj/item/reagent_containers/inhaler/dexalin/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/dexalin, volume)
reagents.add_reagent(/singleton/reagent/dexalin, volume)
update_icon()
return
@@ -174,7 +174,7 @@
/obj/item/reagent_containers/inhaler/peridaxon/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/peridaxon, volume)
reagents.add_reagent(/singleton/reagent/peridaxon, volume)
update_icon()
return
@@ -185,7 +185,7 @@
/obj/item/reagent_containers/inhaler/hyperzine/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/hyperzine, volume)
reagents.add_reagent(/singleton/reagent/hyperzine, volume)
update_icon()
return
@@ -196,7 +196,7 @@
/obj/item/reagent_containers/inhaler/xuxigas/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/xuxigas, volume)
reagents.add_reagent(/singleton/reagent/xuxigas, volume)
update_icon()
return
@@ -207,7 +207,7 @@
/obj/item/reagent_containers/inhaler/phoron/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/toxin/phoron, volume)
reagents.add_reagent(/singleton/reagent/toxin/phoron, volume)
update_icon()
return
@@ -221,7 +221,7 @@
/obj/item/reagent_containers/inhaler/phoron_special/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/toxin/phoron, volume)
reagents.add_reagent(/singleton/reagent/toxin/phoron, volume)
update_icon()
return
@@ -233,7 +233,7 @@
/obj/item/reagent_containers/inhaler/soporific/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/soporific, volume)
reagents.add_reagent(/singleton/reagent/soporific, volume)
update_icon()
return
@@ -244,7 +244,7 @@
/obj/item/reagent_containers/inhaler/space_drugs/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/space_drugs, volume)
reagents.add_reagent(/singleton/reagent/space_drugs, volume)
update_icon()
return
@@ -255,7 +255,7 @@
/obj/item/reagent_containers/inhaler/ammonia/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/ammonia, volume)
reagents.add_reagent(/singleton/reagent/ammonia, volume)
update_icon()
return
@@ -266,7 +266,7 @@
/obj/item/reagent_containers/inhaler/pulmodeiectionem/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/pulmodeiectionem, volume)
reagents.add_reagent(/singleton/reagent/pulmodeiectionem, volume)
update_icon()
return
@@ -278,6 +278,6 @@
/obj/item/reagent_containers/inhaler/pneumalin/Initialize()
. =..()
reagents.add_reagent(/decl/reagent/pneumalin, volume)
reagents.add_reagent(/singleton/reagent/pneumalin, volume)
update_icon()
return
@@ -212,7 +212,7 @@
name = "large inhaler cartridge (hyperzine)"
Initialize()
. =..()
reagents.add_reagent(/decl/reagent/hyperzine, 30)
reagents.add_reagent(/singleton/reagent/hyperzine, 30)
flags ^= OPENCONTAINER
update_icon()
return
@@ -221,7 +221,7 @@
name = "large inhaler cartridge (inaprovaline)"
Initialize()
. =..()
reagents.add_reagent(/decl/reagent/inaprovaline, 30)
reagents.add_reagent(/singleton/reagent/inaprovaline, 30)
flags ^= OPENCONTAINER
update_icon()
return
@@ -90,188 +90,188 @@
name = "10u Dylovene Pill"
desc = "Neutralizes many common toxins."
icon_state = "pill17"
reagents_to_add = list(/decl/reagent/dylovene = 10)
reagents_to_add = list(/singleton/reagent/dylovene = 10)
/obj/item/reagent_containers/pill/tox
name = "Toxins Pill"
desc = "Highly toxic."
icon_state = "pill5"
reagents_to_add = list(/decl/reagent/toxin = 50)
reagents_to_add = list(/singleton/reagent/toxin = 50)
/obj/item/reagent_containers/pill/cyanide
icon_state = "pill5"
reagents_to_add = list(/decl/reagent/toxin/cyanide = 50)
reagents_to_add = list(/singleton/reagent/toxin/cyanide = 50)
desc_antag = "A cyanide pill. Deadly if swallowed."
/obj/item/reagent_containers/pill/adminordrazine
name = "Adminordrazine Pill"
desc = "It's magic. We don't have to explain it."
icon_state = "pill16"
reagents_to_add = list(/decl/reagent/adminordrazine = 50)
reagents_to_add = list(/singleton/reagent/adminordrazine = 50)
/obj/item/reagent_containers/pill/stox
name = "15u Soporific Pill"
desc = "Commonly used to treat insomnia."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/soporific = 15)
reagents_to_add = list(/singleton/reagent/soporific = 15)
/obj/item/reagent_containers/pill/kelotane
name = "10u Kelotane Pill"
desc = "Used to treat minor burns."
icon_state = "pill11"
reagents_to_add = list(/decl/reagent/kelotane = 10)
reagents_to_add = list(/singleton/reagent/kelotane = 10)
/obj/item/reagent_containers/pill/perconol
name = "10u Perconol Pill"
desc = "A light painkiller available over-the-counter."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/perconol = 10)
reagents_to_add = list(/singleton/reagent/perconol = 10)
/obj/item/reagent_containers/pill/mortaphenyl
name = "10u Mortaphenyl Pill"
desc = "A mortaphenyl pill, it's a potent painkiller."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/mortaphenyl = 10)
reagents_to_add = list(/singleton/reagent/mortaphenyl = 10)
/obj/item/reagent_containers/pill/corophenidate
name = "2u Corophenidate Pill"
desc = "Improves the ability to concentrate."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/corophenidate = 2)
reagents_to_add = list(/singleton/reagent/mental/corophenidate = 2)
/obj/item/reagent_containers/pill/emoxanyl
name = "2u Emoxanyl Pill"
desc = "Used to treat anxiety disorders, depression and epilepsy."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/emoxanyl = 2)
reagents_to_add = list(/singleton/reagent/mental/emoxanyl = 2)
/obj/item/reagent_containers/pill/minaphobin
name = "2u Minaphobin Pill"
desc = "Used to treat anxiety disorders and depression."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/minaphobin = 2)
reagents_to_add = list(/singleton/reagent/mental/minaphobin = 2)
/obj/item/reagent_containers/pill/nerospectan
name = "2u Nerospectan Pill"
desc = "Used to treat a large variety of disorders including tourettes, depression, anxiety and psychosis."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/nerospectan = 2)
reagents_to_add = list(/singleton/reagent/mental/nerospectan = 2)
/obj/item/reagent_containers/pill/neurapan
name = "2u Neurapan Pill"
desc = "Used to treat a large variety of disorders including tourettes, depression, anxiety and psychosis."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/neurapan = 2)
reagents_to_add = list(/singleton/reagent/mental/neurapan = 2)
/obj/item/reagent_containers/pill/neurostabin
name = "2u Neurostabin Pill"
desc = "Used to treat psychosis and muscle weakness."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/mental/neurostabin = 2)
reagents_to_add = list(/singleton/reagent/mental/neurostabin = 2)
/obj/item/reagent_containers/pill/orastabin
name = "2u Orastabin Pill"
desc = "Used to treat anxiety disorders and speech impediments."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/orastabin = 2)
reagents_to_add = list(/singleton/reagent/mental/orastabin = 2)
/obj/item/reagent_containers/pill/parvosil
name = "2u Parvosil Pill"
desc = "Used to treat anxiety disorders such as phobias and social anxiety."
icon_state = "pill22"
reagents_to_add = list(/decl/reagent/mental/parvosil = 2)
reagents_to_add = list(/singleton/reagent/mental/parvosil = 2)
/obj/item/reagent_containers/pill/inaprovaline
name = "10u Inaprovaline Pill"
desc = "Used to stabilize heart activity."
icon_state = "pill20"
reagents_to_add = list(/decl/reagent/inaprovaline = 10)
reagents_to_add = list(/singleton/reagent/inaprovaline = 10)
/obj/item/reagent_containers/pill/dexalin
name = "15u Dexalin Pill"
desc = "Used to treat oxygen deprivation."
icon_state = "pill16"
reagents_to_add = list(/decl/reagent/dexalin = 15)
reagents_to_add = list(/singleton/reagent/dexalin = 15)
/obj/item/reagent_containers/pill/dexalin_plus
name = "15u Dexalin Plus Pill"
desc = "Used to treat extreme oxygen deprivation."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/dexalin/plus = 15)
reagents_to_add = list(/singleton/reagent/dexalin/plus = 15)
/obj/item/reagent_containers/pill/dermaline
name = "10u Dermaline Pill"
desc = "Used to treat severe burn wounds."
icon_state = "pill12"
reagents_to_add = list(/decl/reagent/dermaline = 10)
reagents_to_add = list(/singleton/reagent/dermaline = 10)
/obj/item/reagent_containers/pill/dylovene
name = "15u Dylovene Pill"
desc = "A broad-spectrum anti-toxin."
icon_state = "pill13"
reagents_to_add = list(/decl/reagent/dylovene = 15)
reagents_to_add = list(/singleton/reagent/dylovene = 15)
/obj/item/reagent_containers/pill/butazoline
name = "10u Butazoline Pill"
desc = "Used to treat major injuries and bleeding."
icon_state = "pill18"
reagents_to_add = list(/decl/reagent/butazoline = 10)
reagents_to_add = list(/singleton/reagent/butazoline = 10)
/obj/item/reagent_containers/pill/bicaridine
name = "10u Bicaridine Pill"
desc = "Used to treat minor injuries and bleeding."
icon_state = "pill18"
reagents_to_add = list(/decl/reagent/bicaridine = 10)
reagents_to_add = list(/singleton/reagent/bicaridine = 10)
/obj/item/reagent_containers/pill/happy
name = "Happy Pill"
desc = "Happy happy joy joy!"
icon_state = "pill_happy"
reagents_to_add = list(/decl/reagent/space_drugs = 15, /decl/reagent/sugar = 15)
reagents_to_add = list(/singleton/reagent/space_drugs = 15, /singleton/reagent/sugar = 15)
/obj/item/reagent_containers/pill/zoom
name = "Zoom Pill"
desc = "Zoooom!"
icon_state = "pill18"
reagents_to_add = list(/decl/reagent/impedrezene = 5, /decl/reagent/synaptizine = 5, /decl/reagent/hyperzine = 5)
reagents_to_add = list(/singleton/reagent/impedrezene = 5, /singleton/reagent/synaptizine = 5, /singleton/reagent/hyperzine = 5)
obj/item/reagent_containers/pill/joy
name = "Joy Pill"
desc = "Peace, at last."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/joy = 5)
reagents_to_add = list(/singleton/reagent/joy = 5)
/obj/item/reagent_containers/pill/thetamycin
name = "15u Thetamycin Pill"
desc = "Used to treat infections and septicaemia."
icon_state = "pill19"
reagents_to_add = list(/decl/reagent/thetamycin = 15)
reagents_to_add = list(/singleton/reagent/thetamycin = 15)
/obj/item/reagent_containers/pill/bio_vitamin
name = "Vitamin Pill"
desc = "Contains a meal's worth of nutrients."
icon_state = "pill11"
reagents_to_add = list(/decl/reagent/nutriment = 20)
reagents_to_add = list(/singleton/reagent/nutriment = 20)
/obj/item/reagent_containers/pill/bio_vitamin/Initialize()
. = ..()
var/juice = pick(/decl/reagent/drink/banana, /decl/reagent/drink/berryjuice, /decl/reagent/drink/grapejuice, /decl/reagent/drink/lemonjuice, /decl/reagent/drink/limejuice, /decl/reagent/drink/orangejuice, /decl/reagent/drink/watermelonjuice)
var/juice = pick(/singleton/reagent/drink/banana, /singleton/reagent/drink/berryjuice, /singleton/reagent/drink/grapejuice, /singleton/reagent/drink/lemonjuice, /singleton/reagent/drink/limejuice, /singleton/reagent/drink/orangejuice, /singleton/reagent/drink/watermelonjuice)
reagents.add_reagent(juice, 1)
/obj/item/reagent_containers/pill/rmt
name = "15u Regenerative-Muscular Tissue Supplement Pill"
desc = "Commonly abbreviated to RMT, it contains chemicals rampantly used by those seeking to remedy the effects of prolonged zero-gravity adaptations."
icon_state = "pill19"
reagents_to_add = list(/decl/reagent/rmt = 15)
reagents_to_add = list(/singleton/reagent/rmt = 15)
/obj/item/reagent_containers/pill/cetahydramine
name = "5u Cetahydramine Pill"
desc = "Used to treat coughing, sneezing and itching."
icon_state = "pill19"
reagents_to_add = list(/decl/reagent/cetahydramine = 5)
reagents_to_add = list(/singleton/reagent/cetahydramine = 5)
/obj/item/reagent_containers/pill/skrell_nootropic
name = "5u Co'qnixq Wuxi Pill"
desc = "Used to treat dementia."
icon_state = "pill8"
reagents_to_add = list(/decl/reagent/skrell_nootropic = 5)
reagents_to_add = list(/singleton/reagent/skrell_nootropic = 5)
@@ -69,13 +69,13 @@
playsound(src.loc, spray_sound, 50, 1, -6)
if(reagents.has_reagent(/decl/reagent/acid))
if(reagents.has_reagent(/singleton/reagent/acid))
message_admins("[key_name_admin(user)] fired sulphuric acid from \a [src].")
log_game("[key_name(user)] fired sulphuric acid from \a [src].",ckey=key_name(user))
if(reagents.has_reagent(/decl/reagent/acid/polyacid))
if(reagents.has_reagent(/singleton/reagent/acid/polyacid))
message_admins("[key_name_admin(user)] fired Polyacid from \a [src].")
log_game("[key_name(user)] fired Polyacid from \a [src].",ckey=key_name(user))
if(reagents.has_reagent(/decl/reagent/lube))
if(reagents.has_reagent(/singleton/reagent/lube))
message_admins("[key_name_admin(user)] fired Space lube from \a [src].")
log_game("[key_name(user)] fired Space lube from \a [src].",ckey=key_name(user))
return
@@ -139,7 +139,7 @@
/obj/item/reagent_containers/spray/cleaner/Initialize()
. = ..()
reagents.add_reagent(/decl/reagent/spacecleaner, volume)
reagents.add_reagent(/singleton/reagent/spacecleaner, volume)
/obj/item/reagent_containers/spray/sterilizine
name = "sterilizine"
@@ -154,7 +154,7 @@
/obj/item/reagent_containers/spray/sterilizine/Initialize()
. = ..()
reagents.add_reagent(/decl/reagent/sterilizine, volume)
reagents.add_reagent(/singleton/reagent/sterilizine, volume)
/obj/item/reagent_containers/spray/pepper
name = "pepperspray"
@@ -166,7 +166,7 @@
possible_transfer_amounts = null
volume = 40
safety = 1
reagents_to_add = list(/decl/reagent/capsaicin/condensed = 40)
reagents_to_add = list(/singleton/reagent/capsaicin/condensed = 40)
/obj/item/reagent_containers/spray/pepper/examine(mob/user)
if(..(user, 1))
@@ -196,7 +196,7 @@
possible_transfer_amounts = null
volume = 10
reagents_to_add = list(/decl/reagent/water = 10)
reagents_to_add = list(/singleton/reagent/water = 10)
/obj/item/reagent_containers/spray/chemsprayer
name = "chem sprayer"
@@ -273,7 +273,7 @@
item_state = "plantbgone"
volume = 100
reagents_to_add = list(/decl/reagent/toxin/plantbgone = 100)
reagents_to_add = list(/singleton/reagent/toxin/plantbgone = 100)
/obj/item/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
if(!proximity) return
@@ -173,7 +173,7 @@
return
if(ismob(target))//Blood!
if(reagents.has_reagent(/decl/reagent/blood))
if(reagents.has_reagent(/singleton/reagent/blood))
to_chat(user, SPAN_NOTICE("There is already a blood sample in this syringe."))
return
if(istype(target, /mob/living/carbon))
@@ -387,7 +387,7 @@
/obj/item/reagent_containers/syringe/inaprovaline
name = "Syringe (inaprovaline)"
desc = "Contains inaprovaline - used to stabilize patients."
reagents_to_add = list(/decl/reagent/inaprovaline = 15)
reagents_to_add = list(/singleton/reagent/inaprovaline = 15)
/obj/item/reagent_containers/syringe/inaprovaline/Initialize()
. = ..()
@@ -397,7 +397,7 @@
/obj/item/reagent_containers/syringe/dylovene
name = "Syringe (dylovene)"
desc = "Contains anti-toxins."
reagents_to_add = list(/decl/reagent/dylovene = 15)
reagents_to_add = list(/singleton/reagent/dylovene = 15)
/obj/item/reagent_containers/syringe/dylovene/Initialize()
. = ..()
@@ -407,7 +407,7 @@
/obj/item/reagent_containers/syringe/antibiotic
name = "Syringe (thetamycin)"
desc = "Contains antibiotics."
reagents_to_add = list(/decl/reagent/thetamycin = 15)
reagents_to_add = list(/singleton/reagent/thetamycin = 15)
/obj/item/reagent_containers/syringe/antibiotic/Initialize()
. = ..()
@@ -417,7 +417,7 @@
/obj/item/reagent_containers/syringe/drugs
name = "Syringe (drugs)"
desc = "Contains aggressive drugs meant for torture."
reagents_to_add = list(/decl/reagent/toxin/panotoxin = 5, /decl/reagent/mindbreaker = 10)
reagents_to_add = list(/singleton/reagent/toxin/panotoxin = 5, /singleton/reagent/mindbreaker = 10)
/obj/item/reagent_containers/syringe/drugs/Initialize()
. = ..()
@@ -427,7 +427,7 @@
/obj/item/reagent_containers/syringe/fluvectionem
name = "Syringe (fluvectionem)"
desc = "Contains purging medicine."
reagents_to_add = list(/decl/reagent/fluvectionem = 15)
reagents_to_add = list(/singleton/reagent/fluvectionem = 15)
/obj/item/reagent_containers/syringe/fluvectionem/Initialize()
. = ..()
@@ -435,7 +435,7 @@
update_icon()
/obj/item/reagent_containers/syringe/large/ld50_syringe/chloral
reagents_to_add = list(/decl/reagent/polysomnine = 60)
reagents_to_add = list(/singleton/reagent/polysomnine = 60)
/obj/item/reagent_containers/syringe/large/ld50_syringe/chloral/Initialize()
. = ..()
@@ -7,7 +7,7 @@
possible_transfer_amounts = null
amount_per_transfer_from_this = 5
volume = 20
reagents_to_add = list(/decl/reagent/drink/toothpaste = 20)
reagents_to_add = list(/singleton/reagent/drink/toothpaste = 20)
/obj/item/reagent_containers/toothpaste/on_reagent_change()
update_icon()
@@ -38,7 +38,7 @@
/obj/item/reagent_containers/toothbrush/update_icon()
cut_overlays()
if(reagents.has_reagent(/decl/reagent/drink/toothpaste))
if(reagents.has_reagent(/singleton/reagent/drink/toothpaste))
add_overlay("toothpaste_overlay")
/obj/item/reagent_containers/toothbrush/attack_self(mob/user as mob)
@@ -8,7 +8,7 @@
contained_sprite = TRUE
w_class = ITEMSIZE_LARGE
volume = 350
reagents_to_add = list(/decl/reagent/fuel = 350)
reagents_to_add = list(/singleton/reagent/fuel = 350)
amount_per_transfer_from_this = 30
possible_transfer_amounts = list(30, 60, 120, 350)
recyclable = FALSE
@@ -20,7 +20,7 @@
if(ishuman(loc) && user != loc) // what if we want to sneak some reagents out of somewhere?
return
if(reagents.total_volume)
var/fuel_volume = REAGENT_VOLUME(reagents, /decl/reagent/fuel)
var/fuel_volume = REAGENT_VOLUME(reagents, /singleton/reagent/fuel)
if(!fuel_volume)
fuel_volume = 0
to_chat(user, SPAN_NOTICE("\The [src] has [reagents.total_volume]u of reagents in it, <b>[fuel_volume]u</b> of which is fuel."))
@@ -38,11 +38,11 @@
return
else if(W.iswelder())
var/obj/item/weldingtool/T = W
var/fuel_volume = REAGENT_VOLUME(reagents, /decl/reagent/fuel)
var/fuel_volume = REAGENT_VOLUME(reagents, /singleton/reagent/fuel)
if(!fuel_volume)
to_chat(user, SPAN_WARNING("\The [src] doesn't have any fuel in it!"))
return
var/tool_fuel_volume = REAGENT_VOLUME(T.reagents, /decl/reagent/fuel)
var/tool_fuel_volume = REAGENT_VOLUME(T.reagents, /singleton/reagent/fuel)
if(!tool_fuel_volume)
tool_fuel_volume = 0
else if(tool_fuel_volume >= T.reagents.maximum_volume)
@@ -57,7 +57,7 @@
else
if(T.welding)
to_chat(user, SPAN_DANGER("That was close!"))
reagents.trans_type_to(W, /decl/reagent/fuel, min(fuel_volume, T.reagents.maximum_volume - tool_fuel_volume))
reagents.trans_type_to(W, /singleton/reagent/fuel, min(fuel_volume, T.reagents.maximum_volume - tool_fuel_volume))
to_chat(user, SPAN_NOTICE("Welder refilled!"))
playsound(loc, 'sound/effects/refill.ogg', 50, 1, -6)
return
+15 -15
View File
@@ -99,7 +99,7 @@
desc = "A tank filled with extinguisher fluid."
icon_state = "extinguisher_tank"
amount_per_transfer_from_this = 30
reagents_to_add = list(/decl/reagent/toxin/fertilizer/monoammoniumphosphate = 1000)
reagents_to_add = list(/singleton/reagent/toxin/fertilizer/monoammoniumphosphate = 1000)
// Tanks
/obj/structure/reagent_dispensers/watertank
@@ -107,14 +107,14 @@
desc = "A tank filled with water."
icon_state = "watertank"
amount_per_transfer_from_this = 300
reagents_to_add = list(/decl/reagent/water = 1000)
reagents_to_add = list(/singleton/reagent/water = 1000)
/obj/structure/reagent_dispensers/lube
name = "lube tank"
desc = "A tank filled with a silly amount of lube."
icon_state = "lubetank"
amount_per_transfer_from_this = 30
reagents_to_add = list(/decl/reagent/lube = 1000)
reagents_to_add = list(/singleton/reagent/lube = 1000)
/obj/structure/reagent_dispensers/fueltank
name = "fuel tank"
@@ -125,7 +125,7 @@
var/defuse = 0
var/armed = 0
var/obj/item/device/assembly_holder/rig = null
reagents_to_add = list(/decl/reagent/fuel = 1000)
reagents_to_add = list(/singleton/reagent/fuel = 1000)
/obj/structure/reagent_dispensers/fueltank/examine(mob/user)
if(!..(user, 2))
@@ -233,7 +233,7 @@
density = 0
amount_per_transfer_from_this = 45
can_tamper = FALSE
reagents_to_add = list(/decl/reagent/capsaicin/condensed = 1000)
reagents_to_add = list(/singleton/reagent/capsaicin/condensed = 1000)
/obj/structure/reagent_dispensers/virusfood
name = "virus food dispenser"
@@ -243,7 +243,7 @@
anchored = 1
density = 0
can_tamper = FALSE
reagents_to_add = list(/decl/reagent/nutriment/virusfood = 1000)
reagents_to_add = list(/singleton/reagent/nutriment/virusfood = 1000)
/obj/structure/reagent_dispensers/acid
name = "sulphuric acid dispenser"
@@ -253,21 +253,21 @@
anchored = 1
density = 0
can_tamper = FALSE
reagents_to_add = list(/decl/reagent/acid = 1000)
reagents_to_add = list(/singleton/reagent/acid = 1000)
/obj/structure/reagent_dispensers/peppertank/luminol
name = "luminol dispenser"
desc = "A dispenser to refill luminol bottles."
icon_state = "luminoltank"
amount_per_transfer_from_this = 50
reagents_to_add = list(/decl/reagent/luminol = 1000)
reagents_to_add = list(/singleton/reagent/luminol = 1000)
/obj/structure/reagent_dispensers/peppertank/spacecleaner
name = "cleaner dispenser"
desc = "A wall-mounted dispenser filled with cleaner. Used to refill cleaner bottles and cleaner tanks."
icon_state = "cleanertank"
amount_per_transfer_from_this = 250
reagents_to_add = list(/decl/reagent/spacecleaner = 1000)
reagents_to_add = list(/singleton/reagent/spacecleaner = 1000)
//Water Cooler
@@ -281,7 +281,7 @@
anchored = 1
capacity = 500
can_tamper = FALSE
reagents_to_add = list(/decl/reagent/water = 500)
reagents_to_add = list(/singleton/reagent/water = 500)
var/cups = 12
var/cup_type = /obj/item/reagent_containers/food/drinks/sillycup
@@ -349,19 +349,19 @@
/obj/structure/reagent_dispensers/keg/beerkeg
name = "beer keg"
desc = "A beer keg"
reagents_to_add = list(/decl/reagent/alcohol/beer = 1000)
reagents_to_add = list(/singleton/reagent/alcohol/beer = 1000)
/obj/structure/reagent_dispensers/keg/xuizikeg
name = "xuizi juice keg"
desc = "A keg full of Xuizi juice, blended flower buds from the Moghean Xuizi cactus. The export stamp of the Arizi Guild is imprinted on the side."
icon_state = "keg_xuizi"
reagents_to_add = list(/decl/reagent/alcohol/butanol/xuizijuice = 1000)
reagents_to_add = list(/singleton/reagent/alcohol/butanol/xuizijuice = 1000)
/obj/structure/reagent_dispensers/keg/mead
name = "mead barrel"
desc = "A wooden mead barrel."
icon_state = "woodkeg"
reagents_to_add = list(/decl/reagent/alcohol/messa_mead = 1000)
reagents_to_add = list(/singleton/reagent/alcohol/messa_mead = 1000)
//Cooking oil tank
/obj/structure/reagent_dispensers/cookingoil
@@ -370,7 +370,7 @@
icon_state = "oiltank"
amount_per_transfer_from_this = 120
capacity = 5000
reagents_to_add = list(/decl/reagent/nutriment/triglyceride/oil/corn = 5000)
reagents_to_add = list(/singleton/reagent/nutriment/triglyceride/oil/corn = 5000)
/obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/item/projectile/Proj)
if(Proj.get_structure_damage())
@@ -383,7 +383,7 @@
desc = "A tank of industrial coolant"
icon_state = "coolanttank"
amount_per_transfer_from_this = 10
reagents_to_add = list(/decl/reagent/coolant = 1000)
reagents_to_add = list(/singleton/reagent/coolant = 1000)
/obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj)
if(Proj.get_structure_damage())