Files
Leland KembleandGitHub 5511bda793 Carnivorous Blood : A new DNA-targeting traitor chemical that eats away at your bloodstream (#95915)
## About The Pull Request

Adds a new chemical: Carnivorous Blood. This chemical is acquirable via
traitor uplinks, at the cost of 3 telecrystals for a 30 unit bottle.

This chemical's purpose is to eat blood. When it enters its victim's
bloodstream, it begins consuming their blood at a base rate of 2 units
per second, consuming itself at a rate of 0.3 units per second. This
means that a dose of 15 units of it will consume roughly 14% of its
victim's bloodstream over the course of roughly a minute. That isn't
anything to call home over, obviously. This is because you are supposed
to pair it first.
To pair it, you acquire a blood sample from your chosen victim, in any
form that retains their intact DNA. You mix this with the carnivorous
blood, and the blood is now three times as effective inside that
specific person(or anyone sharing their DNA). The paired version,
assuming a dose of a full 15 units that is allowed to fully metabolize,
will take the paired victim's blood down to roughly 55% over the course
of roughly a minute(assuming nothing is impairing or improving the
person's natural blood regeneration). This is just slightly less than is
required to knock out a victim from just blood loss, but is certainly
enough to significantly impair them.

(Up to three sets of DNA can be paired with a single set of carnivorous
blood. It cannot be de-paired in any useful way.)

Additionally, the chemical is twice as effective in the dead, allowing
one fifteen unit dose to fully drain a paired person of their blood.

The chemical can be duplicated using protein.

As a necessity in order to let the thing be used how I want it to be
used, this also makes it so that blood taken off the ground out of
bloodstains has DNA(unique enzymes) in with it. As it'd be absurd to
track how much of each specific DNA was in each specific bloodstain for
just this purpose, and because blood(the reagent) can only have one set
of DNA within it, it's been made such that the DNA you get from blood
taken from bloodstains is a random pick of the DNA present within the
bloodstain. If you don't get pure blood, you might not get what you
want.

## Why It's Good For The Game

A reasonably powerful traitor item that requires not just preparation on
your part, but INVOLVED preparation. The chemical itself is fairly
cheap(and could probably be cheaper but I'm being safe), but to get your
benefit you have to actually involve yourself with your target. Hurt
them a little bit, telegraphing yourself, or lurk around them until a
carp bites them and they leave their blood on the floor. Get them in a
rage cage, run a blood drive, whatever. There's a lot of ways to get
someone's blood, but all of them require active involvement, and I think
that that, on its own, will lead to interesting situations.


Also, side benefit that isn't really material but is worth mentioning
anyway, finding a body with no blood is currently absolute 100% no holds
barred completely airtight proof of bloodworms unless some psychopath
manually took a million years to slowly drain their blood manually. As
one dose completely drains a dead person, this provides an alternate
theory and reasonable means of faking.


Balance-wise, I say this every feature PR I make, but I don't think this
will be a problem. The chemical basically necessitates putting yourself
at risk in order to set it up, and is not a one-hit-kill. That is more
than can be said for several other crew-obtainable chemicals, BUT the
benefit of this chemical is that it takes a very long time to recover
from naturally. If someone succeeds the lexorin knowledge check and
survives, the oxygen damage goes away in a flash. Losing half your blood
takes an extremely long time to recover from naturally(and specific
items to recover from quickly), and leaves you quite vulnerable in the
meantime.

## Changelog
🆑

add: Added a new traitor item, Carnivorous Blood. It is purchasable in
uplinks. Carnivorous Blood is a reagent that eats away at a victim's
blood once in their bloodstream, doing so significantly faster if it has
been mixed with the victim's blood beforehand.

/🆑
2026-05-12 14:29:17 -04:00

611 lines
23 KiB
Plaintext

//Not to be confused with /obj/item/reagent_containers/cup/glass/bottle
/obj/item/reagent_containers/cup/bottle
name = "bottle"
desc = "A small bottle."
icon_state = "bottle"
fill_icon_state = "bottle"
inhand_icon_state = "atoxinbottle"
worn_icon_state = "bottle"
obj_flags = UNIQUE_RENAME | RENAME_NO_DESC
possible_transfer_amounts = list(5, 10, 15, 25, 50)
volume = 50
fill_icon_thresholds = list(0, 1, 20, 40, 60, 80, 100)
can_lid = TRUE
assembly_pixel_y = 4
/obj/item/reagent_containers/cup/bottle/Initialize(mapload)
. = ..()
if(!icon_state)
icon_state = "bottle"
update_appearance()
/obj/item/reagent_containers/cup/bottle/epinephrine
name = "epinephrine bottle"
desc = "A small bottle. Contains epinephrine - used to stabilize patients."
list_reagents = list(/datum/reagent/medicine/epinephrine = 30)
/obj/item/reagent_containers/cup/bottle/toxin
name = "toxin bottle"
desc = "A small bottle of toxins. Do not drink, it is poisonous."
list_reagents = list(/datum/reagent/toxin = 30)
/obj/item/reagent_containers/cup/bottle/cyanide
name = "cyanide bottle"
desc = "A small bottle of cyanide. Bitter almonds?"
list_reagents = list(/datum/reagent/toxin/cyanide = 30)
/obj/item/reagent_containers/cup/bottle/anacea
name = "anacea bottle"
desc = "A small bottle of anacea."
list_reagents = list(/datum/reagent/toxin/anacea = 30)
/obj/item/reagent_containers/cup/bottle/spewium
name = "spewium bottle"
desc = "A small bottle of spewium."
list_reagents = list(/datum/reagent/toxin/spewium = 30)
/obj/item/reagent_containers/cup/bottle/syndol
name = "syndol bottle"
desc = "A small bottle of syndol."
list_reagents = list(/datum/reagent/drug/syndol = 30)
/obj/item/reagent_containers/cup/bottle/morphine
name = "morphine bottle"
desc = "A small bottle of morphine."
icon = 'icons/obj/medical/chemical.dmi'
list_reagents = list(/datum/reagent/medicine/morphine = 30)
/obj/item/reagent_containers/cup/bottle/chloralhydrate
name = "chloral hydrate bottle"
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
icon_state = "bottle20"
list_reagents = list(/datum/reagent/toxin/chloralhydrate = 15)
/obj/item/reagent_containers/cup/bottle/mannitol
name = "mannitol bottle"
desc = "A small bottle of Mannitol. Useful for healing brain damage."
list_reagents = list(/datum/reagent/medicine/mannitol = 30)
/obj/item/reagent_containers/cup/bottle/multiver
name = "multiver bottle"
desc = "A small bottle of multiver, which removes toxins and other chemicals from the bloodstream but causes shortness of breath. All effects scale with the amount of reagents in the patient."
list_reagents = list(/datum/reagent/medicine/c2/multiver = 30)
/obj/item/reagent_containers/cup/bottle/calomel
name = "calomel bottle"
desc = "A small bottle of calomel, a toxic drug which quickly removes chemicals from the bloodstream. Does not cause additional harm in heavily-injured people."
list_reagents = list(/datum/reagent/medicine/calomel = 30)
/obj/item/reagent_containers/cup/bottle/phlogiston
name = "Phlogiston bottle"
desc = "A small bottle of Phlogiston, that will set you on fire if used."
list_reagents = list(/datum/reagent/phlogiston = 30)
/obj/item/reagent_containers/cup/bottle/ammoniated_mercury
name = "ammoniated mercury bottle"
desc = "Quickly purges the body of toxic chemicals. Heals toxin damage when in a good condition someone has \
no brute and fire damage. When hurt with brute or fire damage, it can deal a great amount of toxin damage. \
When there are no toxins present, it starts slowly purging itself."
list_reagents = list(/datum/reagent/medicine/ammoniated_mercury = 30)
/obj/item/reagent_containers/cup/bottle/syriniver
name = "syriniver bottle"
desc = "A small bottle of syriniver."
list_reagents = list(/datum/reagent/medicine/c2/syriniver = 30)
/obj/item/reagent_containers/cup/bottle/mutagen
name = "unstable mutagen bottle"
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
list_reagents = list(/datum/reagent/toxin/mutagen = 30)
/obj/item/reagent_containers/cup/bottle/plasma
name = "liquid plasma bottle"
desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood."
list_reagents = list(/datum/reagent/toxin/plasma = 30)
/obj/item/reagent_containers/cup/bottle/synaptizine
name = "synaptizine bottle"
desc = "A small bottle of synaptizine."
list_reagents = list(/datum/reagent/medicine/synaptizine = 30)
/obj/item/reagent_containers/cup/bottle/ammonia
name = "ammonia bottle"
desc = "A small bottle of ammonia."
list_reagents = list(/datum/reagent/ammonia = 30)
/obj/item/reagent_containers/cup/bottle/diethylamine
name = "diethylamine bottle"
desc = "A small bottle of diethylamine."
list_reagents = list(/datum/reagent/diethylamine = 30)
/obj/item/reagent_containers/cup/bottle/facid
name = "Fluorosulfuric Acid Bottle"
desc = "A small bottle. Contains a small amount of fluorosulfuric acid."
list_reagents = list(/datum/reagent/toxin/acid/fluacid = 30)
/obj/item/reagent_containers/cup/bottle/adminordrazine
name = "Adminordrazine Bottle"
desc = "A small bottle. Contains the liquid essence of the gods."
icon = 'icons/obj/drinks/bottles.dmi'
icon_state = "holyflask"
inhand_icon_state = "holyflask"
list_reagents = list(/datum/reagent/medicine/adminordrazine = 30)
/obj/item/reagent_containers/cup/bottle/capsaicin
name = "Capsaicin Bottle"
desc = "A small bottle. Contains hot sauce."
list_reagents = list(/datum/reagent/consumable/capsaicin = 30)
/obj/item/reagent_containers/cup/bottle/frostoil
name = "Frost Oil Bottle"
desc = "A small bottle. Contains cold sauce."
list_reagents = list(/datum/reagent/consumable/frostoil = 30)
/obj/item/reagent_containers/cup/bottle/strange_reagent
name = "Strange Reagent Bottle"
desc = "A small bottle. May be used to revive people."
list_reagents = list(/datum/reagent/medicine/strange_reagent = 30)
/obj/item/reagent_containers/cup/bottle/fishy_reagent
name = "Fishy Reagent Bottle"
desc = "A small bottle. May be used to revive fish."
list_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 30)
/obj/item/reagent_containers/cup/bottle/traitor
name = "syndicate bottle"
desc = "A small bottle. Contains a random nasty chemical."
icon = 'icons/obj/medical/chemical.dmi'
var/extra_reagent = null
/obj/item/reagent_containers/cup/bottle/traitor/Initialize(mapload)
. = ..()
extra_reagent = pick(/datum/reagent/toxin/polonium, /datum/reagent/toxin/histamine, /datum/reagent/toxin/formaldehyde, /datum/reagent/toxin/venom, /datum/reagent/toxin/fentanyl, /datum/reagent/toxin/cyanide)
reagents.add_reagent(extra_reagent, 3)
/obj/item/reagent_containers/cup/bottle/polonium
name = "polonium bottle"
desc = "A small bottle. Contains Polonium."
list_reagents = list(/datum/reagent/toxin/polonium = 30)
/obj/item/reagent_containers/cup/bottle/magillitis
name = "magillitis bottle"
desc = "A small bottle. Contains a serum known only as 'magillitis'."
list_reagents = list(/datum/reagent/magillitis = 5)
/obj/item/reagent_containers/cup/bottle/venom
name = "venom bottle"
desc = "A small bottle. Contains Venom."
list_reagents = list(/datum/reagent/toxin/venom = 30)
/obj/item/reagent_containers/cup/bottle/fentanyl
name = "fentanyl bottle"
desc = "A small bottle. Contains Fentanyl."
list_reagents = list(/datum/reagent/toxin/fentanyl = 30)
/obj/item/reagent_containers/cup/bottle/formaldehyde
name = "formaldehyde bottle"
desc = "A small bottle. Contains formaldehyde, a chemical that prevents organs from decaying."
list_reagents = list(/datum/reagent/toxin/formaldehyde = 30)
/obj/item/reagent_containers/cup/bottle/initropidril
name = "initropidril bottle"
desc = "A small bottle. Contains initropidril."
list_reagents = list(/datum/reagent/toxin/initropidril = 30)
/obj/item/reagent_containers/cup/bottle/pancuronium
name = "pancuronium bottle"
desc = "A small bottle. Contains pancuronium."
list_reagents = list(/datum/reagent/toxin/pancuronium = 30)
/obj/item/reagent_containers/cup/bottle/sodium_thiopental
name = "sodium thiopental bottle"
desc = "A small bottle. Contains sodium thiopental."
list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 30)
/obj/item/reagent_containers/cup/bottle/coniine
name = "coniine bottle"
desc = "A small bottle. Contains coniine."
list_reagents = list(/datum/reagent/toxin/coniine = 30)
/obj/item/reagent_containers/cup/bottle/curare
name = "curare bottle"
desc = "A small bottle. Contains curare."
list_reagents = list(/datum/reagent/toxin/curare = 30)
/obj/item/reagent_containers/cup/bottle/amanitin
name = "amanitin bottle"
desc = "A small bottle. Contains amanitin."
list_reagents = list(/datum/reagent/toxin/amanitin = 30)
/obj/item/reagent_containers/cup/bottle/histamine
name = "histamine bottle"
desc = "A small bottle. Contains Histamine."
list_reagents = list(/datum/reagent/toxin/histamine = 30)
/obj/item/reagent_containers/cup/bottle/carnivorous_blood
name = "carnivorous blood bottle"
desc = "A small bottle. Contains carnivorous blood."
list_reagents = list(/datum/reagent/toxin/carnivorousblood = 30)
/obj/item/reagent_containers/cup/bottle/diphenhydramine
name = "antihistamine bottle"
desc = "A small bottle of diphenhydramine."
list_reagents = list(/datum/reagent/medicine/diphenhydramine = 30)
/obj/item/reagent_containers/cup/bottle/potass_iodide
name = "anti-radiation bottle"
desc = "A small bottle of potassium iodide."
list_reagents = list(/datum/reagent/medicine/potass_iodide = 30)
/obj/item/reagent_containers/cup/bottle/salglu_solution
name = "saline-glucose solution bottle"
desc = "A small bottle of saline-glucose solution."
list_reagents = list(/datum/reagent/medicine/salglu_solution = 30)
/obj/item/reagent_containers/cup/bottle/atropine
name = "atropine bottle"
desc = "A small bottle of atropine."
list_reagents = list(/datum/reagent/medicine/atropine = 30)
/obj/item/reagent_containers/cup/bottle/random_buffer
name = "Buffer bottle"
desc = "A small bottle of chemical buffer."
/obj/item/reagent_containers/cup/bottle/random_buffer/Initialize(mapload)
. = ..()
if(prob(50))
name = "Acidic buffer bottle"
desc = "A small bottle of acidic buffer."
reagents.add_reagent(/datum/reagent/reaction_agent/acidic_buffer, 30)
else
name = "Basic buffer bottle"
desc = "A small bottle of basic buffer."
reagents.add_reagent(/datum/reagent/reaction_agent/basic_buffer, 30)
/obj/item/reagent_containers/cup/bottle/acidic_buffer
name = "Acidic buffer bottle"
desc = "A small bottle of acidic buffer."
list_reagents = list(/datum/reagent/reaction_agent/acidic_buffer = 30)
/obj/item/reagent_containers/cup/bottle/basic_buffer
name = "Basic buffer bottle"
desc = "A small bottle of basic buffer."
list_reagents = list(/datum/reagent/reaction_agent/basic_buffer = 30)
/obj/item/reagent_containers/cup/bottle/inversing_buffer
name = "Chiral inversing buffer bottle"
desc = "A small bottle of chiral inversing buffer."
list_reagents = list(/datum/reagent/reaction_agent/inversing_buffer = 30)
/obj/item/reagent_containers/cup/bottle/romerol
name = "romerol bottle"
desc = "A small bottle of Romerol. The REAL zombie powder."
list_reagents = list(/datum/reagent/romerol = 30)
/obj/item/reagent_containers/cup/bottle/moltobeso
name = "Molt'Obeso bottle"
desc = "The revolutionary new sauce from Syndicate's culinary experts, designed to instantly reshape your figure! \
The key to the effectiveness of this product lies in its unique formulation, which combines carefully selected ingredients to stimulate appetite and enhance the absorption of calories."
list_reagents = list(/datum/reagent/consumable/moltobeso = 50)
/obj/item/reagent_containers/cup/bottle/random_virus
name = "Experimental disease culture bottle"
desc = "A small bottle. Contains an untested viral culture in synthblood medium."
spawned_disease = /datum/disease/advance/random
/obj/item/reagent_containers/cup/bottle/pierrot_throat
name = "Pierrot's Throat culture bottle"
desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium."
spawned_disease = /datum/disease/pierrot_throat
/obj/item/reagent_containers/cup/bottle/cold
name = "Rhinovirus culture bottle"
desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium."
spawned_disease = /datum/disease/advance/cold
/obj/item/reagent_containers/cup/bottle/flu_virion
name = "Flu virion culture bottle"
desc = "A small bottle. Contains H13N1 flu virion culture in synthblood medium."
spawned_disease = /datum/disease/advance/flu
/obj/item/reagent_containers/cup/bottle/retrovirus
name = "Retrovirus culture bottle"
desc = "A small bottle. Contains a retrovirus culture in a synthblood medium."
spawned_disease = /datum/disease/dna_retrovirus
/obj/item/reagent_containers/cup/bottle/gbs
name = "GBS culture bottle"
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS+ culture in synthblood medium."//Or simply - General BullShit
amount_per_transfer_from_this = 5
spawned_disease = /datum/disease/gbs
/obj/item/reagent_containers/cup/bottle/fake_gbs
name = "GBS culture bottle"
desc = "A small bottle. Contains Gravitokinetic Bipotential SADS- culture in synthblood medium."//Or simply - General BullShit
spawned_disease = /datum/disease/fake_gbs
/obj/item/reagent_containers/cup/bottle/brainrot
name = "Brainrot culture bottle"
desc = "A small bottle. Contains Cryptococcus Cosmosis culture in synthblood medium."
icon_state = "bottle3"
spawned_disease = /datum/disease/brainrot
/obj/item/reagent_containers/cup/bottle/magnitis
name = "Magnitis culture bottle"
desc = "A small bottle. Contains a small dosage of Fukkos Miracos."
spawned_disease = /datum/disease/magnitis
/obj/item/reagent_containers/cup/bottle/wizarditis
name = "Wizarditis culture bottle"
desc = "A small bottle. Contains a sample of Rincewindus Vulgaris."
spawned_disease = /datum/disease/wizarditis
/obj/item/reagent_containers/cup/bottle/anxiety
name = "Severe Anxiety culture bottle"
desc = "A small bottle. Contains a sample of Lepidopticides."
spawned_disease = /datum/disease/anxiety
/obj/item/reagent_containers/cup/bottle/beesease
name = "Beesease culture bottle"
desc = "A small bottle. Contains a sample of invasive Apidae."
spawned_disease = /datum/disease/beesease
/obj/item/reagent_containers/cup/bottle/fluspanish
name = "Spanish flu culture bottle"
desc = "A small bottle. Contains a sample of Inquisitius."
spawned_disease = /datum/disease/fluspanish
/obj/item/reagent_containers/cup/bottle/tuberculosis
name = "Fungal Tuberculosis culture bottle"
desc = "A small bottle. Contains a sample of Fungal Tubercle bacillus."
spawned_disease = /datum/disease/tuberculosis
/obj/item/reagent_containers/cup/bottle/tuberculosiscure
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
list_reagents = list(/datum/reagent/vaccine/fungal_tb = 30)
//Oldstation.dmm chemical storage bottles
/obj/item/reagent_containers/cup/bottle/hydrogen
name = "hydrogen bottle"
list_reagents = list(/datum/reagent/hydrogen = 30)
/obj/item/reagent_containers/cup/bottle/lithium
name = "lithium bottle"
list_reagents = list(/datum/reagent/lithium = 30)
/obj/item/reagent_containers/cup/bottle/carbon
name = "carbon bottle"
list_reagents = list(/datum/reagent/carbon = 30)
/obj/item/reagent_containers/cup/bottle/nitrogen
name = "nitrogen bottle"
list_reagents = list(/datum/reagent/nitrogen = 30)
/obj/item/reagent_containers/cup/bottle/oxygen
name = "oxygen bottle"
list_reagents = list(/datum/reagent/oxygen = 30)
/obj/item/reagent_containers/cup/bottle/fluorine
name = "fluorine bottle"
list_reagents = list(/datum/reagent/fluorine = 30)
/obj/item/reagent_containers/cup/bottle/sodium
name = "sodium bottle"
list_reagents = list(/datum/reagent/sodium = 30)
/obj/item/reagent_containers/cup/bottle/aluminium
name = "aluminium bottle"
list_reagents = list(/datum/reagent/aluminium = 30)
/obj/item/reagent_containers/cup/bottle/silicon
name = "silicon bottle"
list_reagents = list(/datum/reagent/silicon = 30)
/obj/item/reagent_containers/cup/bottle/phosphorus
name = "phosphorus bottle"
list_reagents = list(/datum/reagent/phosphorus = 30)
/obj/item/reagent_containers/cup/bottle/sulfur
name = "sulfur bottle"
list_reagents = list(/datum/reagent/sulfur = 30)
/obj/item/reagent_containers/cup/bottle/chlorine
name = "chlorine bottle"
list_reagents = list(/datum/reagent/chlorine = 30)
/obj/item/reagent_containers/cup/bottle/potassium
name = "potassium bottle"
list_reagents = list(/datum/reagent/potassium = 30)
/obj/item/reagent_containers/cup/bottle/iron
name = "iron bottle"
list_reagents = list(/datum/reagent/iron = 30)
/obj/item/reagent_containers/cup/bottle/copper
name = "copper bottle"
list_reagents = list(/datum/reagent/copper = 30)
/obj/item/reagent_containers/cup/bottle/mercury
name = "mercury bottle"
list_reagents = list(/datum/reagent/mercury = 30)
/obj/item/reagent_containers/cup/bottle/radium
name = "radium bottle"
list_reagents = list(/datum/reagent/uranium/radium = 30)
/obj/item/reagent_containers/cup/bottle/water
name = "water bottle"
list_reagents = list(/datum/reagent/water = 30)
/obj/item/reagent_containers/cup/bottle/ethanol
name = "ethanol bottle"
list_reagents = list(/datum/reagent/consumable/ethanol = 30)
/obj/item/reagent_containers/cup/bottle/sugar
name = "sugar bottle"
list_reagents = list(/datum/reagent/consumable/sugar = 30)
/obj/item/reagent_containers/cup/bottle/sacid
name = "sulfuric acid bottle"
list_reagents = list(/datum/reagent/toxin/acid = 30)
/obj/item/reagent_containers/cup/bottle/welding_fuel
name = "welding fuel bottle"
list_reagents = list(/datum/reagent/fuel = 30)
/obj/item/reagent_containers/cup/bottle/silver
name = "silver bottle"
list_reagents = list(/datum/reagent/silver = 30)
/obj/item/reagent_containers/cup/bottle/iodine
name = "iodine bottle"
list_reagents = list(/datum/reagent/iodine = 30)
/obj/item/reagent_containers/cup/bottle/bromine
name = "bromine bottle"
list_reagents = list(/datum/reagent/bromine = 30)
/obj/item/reagent_containers/cup/bottle/thermite
name = "thermite bottle"
list_reagents = list(/datum/reagent/thermite = 50)
// Bottles for mail goodies.
/obj/item/reagent_containers/cup/bottle/clownstears
name = "bottle of distilled clown misery"
desc = "A small bottle. Contains a mythical liquid used by sublime bartenders; made from the unhappiness of clowns."
list_reagents = list(/datum/reagent/consumable/nutriment/soup/clown_tears = 30)
/obj/item/reagent_containers/cup/bottle/saltpetre
name = "saltpetre bottle"
desc = "A small bottle. Contains saltpetre."
list_reagents = list(/datum/reagent/saltpetre = 30)
/obj/item/reagent_containers/cup/bottle/flash_powder
name = "flash powder bottle"
desc = "A small bottle. Contains flash powder."
list_reagents = list(/datum/reagent/flash_powder = 30)
/obj/item/reagent_containers/cup/bottle/exotic_stabilizer
name = "exotic stabilizer bottle"
desc = "A small bottle. Contains exotic stabilizer."
list_reagents = list(/datum/reagent/exotic_stabilizer = 30)
/obj/item/reagent_containers/cup/bottle/leadacetate
name = "lead acetate bottle"
desc = "A small bottle. Contains lead acetate."
list_reagents = list(/datum/reagent/toxin/leadacetate = 30)
/obj/item/reagent_containers/cup/bottle/caramel
name = "bottle of caramel"
desc = "A bottle containing caramelized sugar, also known as caramel. Do not lick."
list_reagents = list(/datum/reagent/consumable/caramel = 30)
/*
* Syrup bottles, basically a unspillable cup that transfers reagents upon clicking on it with a cup
*/
/obj/item/reagent_containers/cup/bottle/syrup_bottle
name = "syrup bottle"
desc = "A bottle with a syrup pump to dispense the delicious substance directly into your coffee cup."
icon = 'icons/obj/food/containers.dmi'
icon_state = "syrup"
fill_icon_state = "syrup"
fill_icon_thresholds = list(0, 20, 40, 60, 80, 100)
possible_transfer_amounts = list(5, 10)
amount_per_transfer_from_this = 5
can_lid = FALSE
/obj/item/reagent_containers/cup/bottle/syrup_bottle/Initialize(mapload)
. = ..()
register_context()
// this is not done via initial_reagent_flags because it represents state
update_container_flags(SEALED_CONTAINER | TRANSPARENT)
/obj/item/reagent_containers/cup/bottle/syrup_bottle/examine(mob/user)
. = ..()
. += span_notice("Alt-click to toggle the pump cap.")
. += span_notice("Use a pen on it to rename it.")
/obj/item/reagent_containers/cup/bottle/syrup_bottle/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
. = ..()
context[SCREENTIP_CONTEXT_ALT_LMB] = (is_open_container() ? "Add Pump Cap" : "Remove Pump Cap")
if(IS_WRITING_UTENSIL(held_item))
context[SCREENTIP_CONTEXT_LMB] = "Write Label"
else if(is_open_container() && held_item?.is_refillable())
context[SCREENTIP_CONTEXT_LMB] = "Use Pump"
return CONTEXTUAL_SCREENTIP_SET
//when you attack the syrup bottle with a container it refills it
/obj/item/reagent_containers/cup/bottle/syrup_bottle/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
if(is_open_container() && tool.is_refillable())
return refillable_act(user, tool)
return ..()
/obj/item/reagent_containers/cup/bottle/syrup_bottle/nameformat(input, user)
playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE)
return "[input? "[input] " : null]bottle"
/obj/item/reagent_containers/cup/bottle/syrup_bottle/proc/refillable_act(mob/user, obj/item/tool)
if(!reagents.total_volume)
balloon_alert(user, "bottle empty!")
return ITEM_INTERACT_BLOCKING
if(tool.reagents.holder_full())
balloon_alert(user, "container full!")
return ITEM_INTERACT_BLOCKING
var/transfer_amount = round(reagents.trans_to(tool, amount_per_transfer_from_this, transferred_by = user), CHEMICAL_VOLUME_ROUNDING)
if(transfer_amount)
balloon_alert(user, "transferred [transfer_amount] unit\s")
flick("syrup_anim",src)
tool.update_appearance()
update_appearance()
return ITEM_INTERACT_SUCCESS
/obj/item/reagent_containers/cup/bottle/syrup_bottle/update_icon_state()
. = ..()
if(is_open_container())
icon_state = "syrup_open"
else
icon_state = "syrup"
/obj/item/reagent_containers/cup/bottle/syrup_bottle/click_alt(mob/user)
if(is_open_container())
balloon_alert(user, "put pump cap on")
update_container_flags(SEALED_CONTAINER | TRANSPARENT)
else
balloon_alert(user, "removed pump cap")
reset_container_flags()
update_appearance()
return CLICK_ACTION_SUCCESS
//types of syrups
/obj/item/reagent_containers/cup/bottle/syrup_bottle/caramel
name = "bottle of caramel syrup"
desc = "A pump bottle containing caramelized sugar, also known as caramel. Do not lick."
list_reagents = list(/datum/reagent/consumable/caramel = 50)
/obj/item/reagent_containers/cup/bottle/syrup_bottle/liqueur
name = "bottle of coffee liqueur syrup"
desc = "A pump bottle containing mexican coffee-flavoured liqueur syrup. In production since 1936, HONK."
list_reagents = list(/datum/reagent/consumable/ethanol/kahlua = 50)
/obj/item/reagent_containers/cup/bottle/syrup_bottle/korta_nectar
name = "bottle of korta syrup"
desc = "A pump bottle containing korta syrup. A sweet, sugary substance made from crushed sweet korta nuts."
list_reagents = list(/datum/reagent/consumable/korta_nectar = 50)
//secret syrup
/obj/item/reagent_containers/cup/bottle/syrup_bottle/laughsyrup
name = "bottle of laugh syrup"
desc = "A pump bottle containing laugh syrup. The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!"
list_reagents = list(/datum/reagent/consumable/laughsyrup = 50)