From f9ad21cbf1083dcd511c1e0e8d018277b2a9d4ee Mon Sep 17 00:00:00 2001 From: yogstation13-bot Date: Mon, 10 Jun 2019 14:26:31 +0200 Subject: [PATCH] [MIRROR] Remove reagent ids and use typepaths where applicable (#5612) * Remove reagent ids and use typepaths where applicable * Remove reagent ids and use typepaths where applicable * Resolves some easier conflicts * Resolves medical_tools.dm * Resolves robots.dm * Handles cinnamon Wow, I cannot do this manually. Fuckin' regex time. * Removes 27 merge conflicts (!!!!!) * Makes it actually half-attempt to compile * I just -- I give up, it's over * mk * mk * mk * hm * ok * what a bloody chain reaction jesus * ok * and done * went threw and changed the ones I missed * ok * dangit altoids hurry the fek up * Fixes whatever I found find thru this regex: reagents[\s\w]*=[\s\w]*list\([^\/]+\) --- .../LavaRuins/lavaland_surface_pizzaparty.dmm | 2 +- _maps/RandomRuins/SpaceRuins/TheDerelict.dmm | 2 +- .../RandomRuins/SpaceRuins/spacebar.dmm | 4 +- code/__DEFINES/antagonists.dm | 2 +- code/__DEFINES/contracts.dm | 2 +- code/__DEFINES/is_helpers.dm | 1 + code/controllers/subsystem/economy.dm | 2 +- code/datums/components/rot.dm | 2 +- code/datums/components/thermite.dm | 2 +- code/datums/datumvars.dm | 1 - code/datums/diseases/_disease.dm | 2 +- code/datums/diseases/advance/advance.dm | 8 +- .../diseases/advance/symptoms/choking.dm | 2 +- code/datums/diseases/advance/symptoms/fire.dm | 4 +- .../diseases/advance/symptoms/flesh_eating.dm | 4 +- code/datums/diseases/advance/symptoms/heal.dm | 12 +- .../diseases/advance/symptoms/sensory.dm | 8 +- code/datums/diseases/anxiety.dm | 2 +- code/datums/diseases/beesease.dm | 2 +- code/datums/diseases/brainrot.dm | 2 +- code/datums/diseases/cold.dm | 2 +- code/datums/diseases/cold9.dm | 2 +- code/datums/diseases/decloning.dm | 2 +- code/datums/diseases/dna_spread.dm | 2 +- code/datums/diseases/fake_gbs.dm | 2 +- code/datums/diseases/flu.dm | 2 +- code/datums/diseases/fluspanish.dm | 2 +- code/datums/diseases/gastrolisis.dm | 2 +- code/datums/diseases/gbs.dm | 2 +- code/datums/diseases/heart_failure.dm | 2 +- code/datums/diseases/magnitis.dm | 2 +- code/datums/diseases/parrotpossession.dm | 2 +- code/datums/diseases/pierrot_throat.dm | 2 +- code/datums/diseases/retrovirus.dm | 2 +- code/datums/diseases/transformation.dm | 22 +- code/datums/diseases/tuberculosis.dm | 2 +- code/datums/diseases/wizarditis.dm | 2 +- code/datums/recipe.dm | 4 +- code/datums/status_effects/buffs.dm | 2 +- code/datums/status_effects/debuffs.dm | 2 +- code/datums/traits/negative.dm | 4 +- code/game/atoms.dm | 4 +- .../game/gamemodes/clown_ops/clown_weapons.dm | 4 +- code/game/machinery/Sleeper.dm | 16 +- code/game/machinery/limbgrower.dm | 18 +- .../mecha/equipment/tools/medical_tools.dm | 17 +- code/game/mecha/equipment/tools/work_tools.dm | 2 +- code/game/mecha/mecha_defense.dm | 8 +- .../effects/decals/cleanable/humans.dm | 2 +- .../objects/effects/decals/cleanable/misc.dm | 8 +- .../effects/decals/cleanable/robots.dm | 2 +- .../effects/effect_system/effects_foam.dm | 2 +- code/game/objects/effects/mines.dm | 2 +- code/game/objects/effects/misc.dm | 2 +- code/game/objects/effects/spiders.dm | 2 +- code/game/objects/items/RSF.dm | 2 +- code/game/objects/items/airlock_painter.dm | 4 +- code/game/objects/items/apc_frame.dm | 2 +- code/game/objects/items/cigs_lighters.dm | 50 +- .../items/circuitboards/circuitboard.dm | 2 +- code/game/objects/items/clown_items.dm | 418 +++++----- code/game/objects/items/crayons.dm | 30 +- code/game/objects/items/devices/flashlight.dm | 4 +- code/game/objects/items/devices/scanners.dm | 4 +- code/game/objects/items/extinguisher.dm | 4 +- .../objects/items/grenades/chem_grenade.dm | 114 +-- .../objects/items/grenades/clusterbuster.dm | 6 +- code/game/objects/items/hot_potato.dm | 2 +- .../objects/items/implants/implant_misc.dm | 6 +- code/game/objects/items/kitchen.dm | 6 +- code/game/objects/items/mop.dm | 4 +- code/game/objects/items/religion.dm | 2 +- code/game/objects/items/robot/robot_items.dm | 2 +- .../objects/items/robot/robot_upgrades.dm | 6 +- code/game/objects/items/stacks/bscrystal.dm | 6 +- code/game/objects/items/stacks/medical.dm | 4 +- .../game/objects/items/stacks/sheets/glass.dm | 8 +- .../game/objects/items/stacks/sheets/light.dm | 2 +- .../objects/items/stacks/sheets/mineral.dm | 14 +- .../items/stacks/sheets/sheet_types.dm | 14 +- code/game/objects/items/storage/book.dm | 16 +- code/game/objects/items/tanks/watertank.dm | 18 +- code/game/objects/items/tools/weldingtool.dm | 14 +- code/game/objects/items/trash.dm | 4 +- code/game/objects/structures/divine.dm | 2 +- code/game/objects/structures/shower.dm | 2 +- code/game/objects/structures/watercloset.dm | 6 +- code/game/turfs/turf.dm | 2 +- .../abductor/equipment/abduction_gear.dm | 2 +- .../antagonists/abductor/equipment/gland.dm | 11 +- code/modules/antagonists/blob/blob_mobs.dm | 4 +- .../antagonists/blob/blobstrains/_reagent.dm | 2 +- .../blob/blobstrains/blazing_oil.dm | 1 - .../blob/blobstrains/cryogenic_poison.dm | 1 - .../blob/blobstrains/electromagnetic_web.dm | 1 - .../blob/blobstrains/energized_jelly.dm | 1 - .../blob/blobstrains/explosive_lattice.dm | 1 - .../blob/blobstrains/networked_fibers.dm | 1 - .../blob/blobstrains/pressurized_slime.dm | 1 - .../blob/blobstrains/reactive_spines.dm | 1 - .../blob/blobstrains/regenerative_materia.dm | 1 - .../blob/blobstrains/replicating_foam.dm | 1 - .../blob/blobstrains/shifting_fragments.dm | 1 - .../blob/blobstrains/synchronous_mesh.dm | 1 - .../blob/blobstrains/zombifying_pods.dm | 1 - .../changeling/powers/adrenaline.dm | 4 +- .../antagonists/changeling/powers/linglink.dm | 2 +- .../changeling/powers/mutations.dm | 2 +- .../antagonists/changeling/powers/panacea.dm | 8 +- .../changeling/powers/tiny_prick.dm | 2 +- .../clockcult/clock_helpers/slab_abilities.dm | 6 +- code/modules/antagonists/cult/blood_magic.dm | 9 +- code/modules/antagonists/cult/cult_items.dm | 6 +- code/modules/antagonists/cult/ritual.dm | 8 +- code/modules/antagonists/devil/devil.dm | 2 +- .../nukeop/equipment/nuclearbomb.dm | 2 +- .../revenant/revenant_abilities.dm | 2 +- .../antagonists/revenant/revenant_blight.dm | 2 +- code/modules/cargo/bounties/reagent.dm | 8 +- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/outfits/standard.dm | 2 +- code/modules/events/holiday/vday.dm | 2 +- code/modules/events/vent_clog.dm | 8 +- code/modules/events/wizard/invincible.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 58 +- .../food_and_drinks/drinks/drinks/bottle.dm | 85 +- .../drinks/drinks/drinkingglass.dm | 10 +- .../modules/food_and_drinks/food/condiment.dm | 73 +- .../food_and_drinks/food/customizables.dm | 4 +- code/modules/food_and_drinks/food/snacks.dm | 10 +- .../food_and_drinks/food/snacks/dough.dm | 16 +- .../food_and_drinks/food/snacks/meat.dm | 44 +- .../food_and_drinks/food/snacks_bread.dm | 75 +- .../food_and_drinks/food/snacks_burgers.dm | 82 +- .../food_and_drinks/food/snacks_cake.dm | 40 +- .../food_and_drinks/food/snacks_egg.dm | 24 +- .../food_and_drinks/food/snacks_meat.dm | 82 +- .../food_and_drinks/food/snacks_other.dm | 172 ++-- .../food_and_drinks/food/snacks_pastry.dm | 127 +-- .../food_and_drinks/food/snacks_pie.dm | 58 +- .../food_and_drinks/food/snacks_pizza.dm | 34 +- .../food_and_drinks/food/snacks_salad.dm | 40 +- .../food/snacks_sandwichtoast.dm | 40 +- .../food_and_drinks/food/snacks_soup.dm | 80 +- .../food_and_drinks/food/snacks_spaghetti.dm | 30 +- .../food_and_drinks/food/snacks_vend.dm | 20 +- .../kitchen_machinery/deep_fryer.dm | 6 +- .../kitchen_machinery/food_cart.dm | 10 +- .../kitchen_machinery/gibber.dm | 2 +- .../kitchen_machinery/icecream_vat.dm | 52 +- .../kitchen_machinery/microwave.dm | 4 +- .../food_and_drinks/recipes/drinks_recipes.dm | 766 ++++++++++-------- .../food_and_drinks/recipes/food_mixtures.dm | 68 +- .../recipes/tablecraft/recipes_bread.dm | 10 + code/modules/holiday/easter.dm | 14 +- code/modules/holiday/halloween.dm | 4 +- code/modules/hydroponics/beekeeping/beebox.dm | 4 +- .../hydroponics/beekeeping/honeycomb.dm | 6 +- code/modules/hydroponics/biogenerator.dm | 4 +- code/modules/hydroponics/fermenting_barrel.dm | 2 +- code/modules/hydroponics/grown.dm | 12 +- code/modules/hydroponics/grown/ambrosia.dm | 6 +- code/modules/hydroponics/grown/apple.dm | 8 +- code/modules/hydroponics/grown/banana.dm | 14 +- code/modules/hydroponics/grown/beans.dm | 6 +- code/modules/hydroponics/grown/berries.dm | 32 +- code/modules/hydroponics/grown/cannabis.dm | 38 +- code/modules/hydroponics/grown/cereals.dm | 18 +- code/modules/hydroponics/grown/chili.dm | 6 +- code/modules/hydroponics/grown/citrus.dm | 26 +- .../hydroponics/grown/cocoa_vanilla.dm | 8 +- code/modules/hydroponics/grown/corn.dm | 6 +- code/modules/hydroponics/grown/eggplant.dm | 6 +- code/modules/hydroponics/grown/flowers.dm | 18 +- code/modules/hydroponics/grown/garlic.dm | 22 + .../modules/hydroponics/grown/grass_carpet.dm | 4 +- code/modules/hydroponics/grown/kudzu.dm | 16 +- code/modules/hydroponics/grown/melon.dm | 6 +- code/modules/hydroponics/grown/misc.dm | 8 +- code/modules/hydroponics/grown/mushrooms.dm | 24 +- code/modules/hydroponics/grown/nettle.dm | 4 +- code/modules/hydroponics/grown/onion.dm | 8 +- code/modules/hydroponics/grown/pineapple.dm | 2 +- code/modules/hydroponics/grown/potato.dm | 10 +- code/modules/hydroponics/grown/pumpkin.dm | 8 +- .../hydroponics/grown/rainbow_bunch.dm | 18 +- code/modules/hydroponics/grown/replicapod.dm | 4 +- code/modules/hydroponics/grown/root.dm | 11 +- code/modules/hydroponics/grown/tea_coffee.dm | 16 +- code/modules/hydroponics/grown/tobacco.dm | 6 +- code/modules/hydroponics/grown/tomato.dm | 22 +- code/modules/hydroponics/hydroitemdefines.dm | 14 +- code/modules/hydroponics/hydroponics.dm | 194 ++--- code/modules/hydroponics/plant_genes.dm | 12 +- code/modules/hydroponics/seeds.dm | 4 +- code/modules/library/lib_machines.dm | 11 +- code/modules/mining/lavaland/ash_flora.dm | 12 +- .../mining/lavaland/necropolis_chests.dm | 9 +- code/modules/mining/ores_coins.dm | 18 +- code/modules/mob/living/blood.dm | 16 +- code/modules/mob/living/bloodcrawl.dm | 4 +- code/modules/mob/living/brain/brain_item.dm | 4 +- .../modules/mob/living/carbon/alien/organs.dm | 4 +- .../carbon/alien/special/alien_embryo.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 2 +- .../mob/living/carbon/human/examine.dm | 4 +- .../mob/living/carbon/human/species.dm | 4 +- .../carbon/human/species_types/ethereal.dm | 2 +- .../carbon/human/species_types/flypeople.dm | 4 +- .../carbon/human/species_types/golems.dm | 12 +- .../carbon/human/species_types/jellypeople.dm | 2 +- .../carbon/human/species_types/mothmen.dm | 4 +- .../carbon/human/species_types/mushpeople.dm | 4 +- .../carbon/human/species_types/podpeople.dm | 4 +- .../carbon/human/species_types/snail.dm | 6 +- .../carbon/human/species_types/synths.dm | 15 +- .../carbon/human/species_types/vampire.dm | 4 + code/modules/mob/living/carbon/life.dm | 4 +- .../mob/living/carbon/monkey/monkey.dm | 4 +- code/modules/mob/living/living_defense.dm | 2 +- .../mob/living/silicon/ai/vox_sounds.dm | 4 +- .../mob/living/silicon/robot/robot_modules.dm | 10 +- .../mob/living/simple_animal/bot/firebot.dm | 2 +- .../mob/living/simple_animal/bot/medbot.dm | 34 +- .../mob/living/simple_animal/bot/secbot.dm | 2 +- .../mob/living/simple_animal/friendly/cat.dm | 4 +- .../simple_animal/friendly/farm_animals.dm | 4 +- .../living/simple_animal/friendly/mouse.dm | 4 +- .../living/simple_animal/friendly/snake.dm | 2 +- .../mob/living/simple_animal/hostile/bees.dm | 20 +- .../simple_animal/hostile/giant_spider.dm | 10 +- .../simple_animal/hostile/jungle/leaper.dm | 1 - .../hostile/mining_mobs/gutlunch.dm | 5 +- .../living/simple_animal/hostile/mushroom.dm | 6 +- .../simple_animal/hostile/retaliate/clown.dm | 8 +- .../mob/living/simple_animal/slime/slime.dm | 4 +- .../living/simple_animal/slime/subtypes.dm | 2 +- .../suit/n_suit_verbs/ninja_adrenaline.dm | 4 +- code/modules/ninja/suit/suit_attackby.dm | 8 +- code/modules/paperwork/pen.dm | 8 +- code/modules/paperwork/photocopier.dm | 2 +- code/modules/photography/photos/photo.dm | 2 +- code/modules/power/cable.dm | 2 +- code/modules/power/cell.dm | 4 +- code/modules/power/lighting.dm | 6 +- .../ammunition/ballistic/shotgun.dm | 10 +- code/modules/projectiles/projectile.dm | 6 +- .../projectile/bullets/dart_syringe.dm | 6 +- code/modules/reagents/chemistry/holder.dm | 63 +- .../chemistry/machinery/chem_dispenser.dm | 221 ++--- .../chemistry/machinery/chem_master.dm | 20 +- .../chemistry/machinery/chem_synthesizer.dm | 6 +- .../reagents/chemistry/machinery/pandemic.dm | 10 +- .../chemistry/machinery/reagentgrinder.dm | 12 +- code/modules/reagents/chemistry/reagents.dm | 25 +- .../chemistry/reagents/alcohol_reagents.dm | 321 +++++--- .../chemistry/reagents/drink_reagents.dm | 115 +-- .../chemistry/reagents/drug_reagents.dm | 29 +- .../chemistry/reagents/food_reagents.dm | 99 +-- .../chemistry/reagents/medicine_reagents.dm | 132 +-- .../chemistry/reagents/other_reagents.dm | 174 +--- .../reagents/pyrotechnic_reagents.dm | 25 +- .../chemistry/reagents/toxin_reagents.dm | 117 +-- .../reagents/chemistry/recipes/drugs.dm | 50 +- .../reagents/chemistry/recipes/medicine.dm | 264 +++--- .../reagents/chemistry/recipes/others.dm | 362 ++++----- .../chemistry/recipes/pyrotechnics.dm | 185 +++-- .../chemistry/recipes/slime_extracts.dm | 128 +-- .../reagents/chemistry/recipes/toxins.dm | 120 +-- code/modules/reagents/reagent_containers.dm | 5 +- .../reagents/reagent_containers/blood_pack.dm | 6 +- .../reagents/reagent_containers/borghydro.dm | 29 +- .../reagents/reagent_containers/bottle.dm | 124 +-- .../reagents/reagent_containers/dropper.dm | 3 +- .../reagents/reagent_containers/glass.dm | 87 +- .../reagents/reagent_containers/hypospray.dm | 32 +- .../reagents/reagent_containers/medspray.dm | 8 +- .../reagents/reagent_containers/patch.dm | 6 +- .../reagents/reagent_containers/pill.dm | 44 +- .../reagents/reagent_containers/spray.dm | 24 +- .../reagents/reagent_containers/syringes.dm | 22 +- code/modules/reagents/reagent_dispenser.dm | 18 +- .../research/designs/biogenerator_designs.dm | 14 +- .../research/designs/limbgrower_designs.dm | 10 +- .../research/designs/weapon_designs.dm | 4 +- code/modules/research/experimentor.dm | 12 +- .../modules/research/machinery/_production.dm | 2 +- .../nanites/nanite_programs/buffing.dm | 2 +- .../nanites/nanite_programs/healing.dm | 4 +- code/modules/research/rdconsole.dm | 4 +- .../xenobiology/crossbreeding/__corecross.dm | 14 +- .../xenobiology/crossbreeding/_misc.dm | 2 +- .../crossbreeding/_status_effects.dm | 4 +- .../xenobiology/crossbreeding/burning.dm | 14 +- .../xenobiology/crossbreeding/charged.dm | 4 +- .../xenobiology/crossbreeding/chilling.dm | 6 +- .../xenobiology/crossbreeding/consuming.dm | 10 +- .../xenobiology/crossbreeding/industrial.dm | 8 +- .../xenobiology/crossbreeding/regenerative.dm | 8 +- .../crossbreeding/selfsustaining.dm | 2 +- .../research/xenobiology/xenobiology.dm | 70 +- .../ruins/spaceruin_code/hilbertshotel.dm | 28 +- .../surgery/advanced/necrotic_revival.dm | 2 +- .../modules/surgery/advanced/viral_bonding.dm | 2 +- code/modules/surgery/lipoplasty.dm | 2 +- code/modules/surgery/organs/appendix.dm | 2 +- code/modules/surgery/organs/augments_chest.dm | 2 +- code/modules/surgery/organs/heart.dm | 6 +- code/modules/surgery/organs/liver.dm | 8 +- code/modules/surgery/organs/lungs.dm | 14 +- code/modules/surgery/organs/organ_internal.dm | 2 +- code/modules/vehicles/cars/clowncar.dm | 2 +- code/modules/vending/megaseed.dm | 1 + icons/obj/food/burgerbread.dmi | Bin 26722 -> 27107 bytes icons/obj/hydroponics/growing_vegetables.dmi | Bin 19389 -> 20388 bytes icons/obj/hydroponics/harvest.dmi | Bin 51611 -> 75788 bytes icons/obj/hydroponics/seeds.dmi | Bin 22318 -> 22685 bytes tgstation.dme | 1 + yogstation.dme | 1 + .../code/datums/diseases/cluwnification.dm | 2 +- .../code/game/objects/items/clown_items.dm | 2 +- .../modules/food_and_drinks/food/condiment.dm | 2 +- .../food_and_drinks/food/snacks_bread.dm | 2 +- .../food_and_drinks/food/snacks_burger.dm | 4 +- .../food_and_drinks/food/snacks_egg.dm | 2 +- .../food_and_drinks/food/snacks_meat.dm | 4 +- .../food_and_drinks/food/snacks_other.dm | 12 +- .../food_and_drinks/food/snacks_pastry.dm | 12 +- .../food_and_drinks/food/snacks_pie.dm | 4 +- .../food_and_drinks/food/snacks_soup.dm | 4 +- .../code/modules/hydroponics/grown/misc.dm | 2 +- .../carbon/human/species_types/plantpeople.dm | 34 +- .../species_types/preternis/preternis.dm | 4 +- .../living/simple_animal/friendly/eggdog.dm | 6 +- .../chemistry/reagents/food_reagents.dm | 1 - .../chemistry/reagents/other_reagents.dm | 2 - .../chemistry/recipes/slime_extracts.dm | 2 +- .../reagents/reagent_containers/bottle.dm | 2 +- .../reagents/reagent_containers/hypospray.dm | 8 +- .../code/modules/research/experimentor.dm | 6 +- yogstation/code/modules/vending/megaseed.dm | 1 + 341 files changed, 3797 insertions(+), 3696 deletions(-) create mode 100644 code/modules/hydroponics/grown/garlic.dm diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index 21f2d3809055..b66fbdf3d5aa 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -28,7 +28,7 @@ "g" = ( /obj/structure/reagent_dispensers/water_cooler{ name = "punch cooler"; - reagent_id = "bacchus_blessing" + reagent_id = /datum/reagent/consumable/ethanol/bacchus_blessing }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 44aaadbf469c..5cf626a7af10 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -3366,7 +3366,7 @@ "lq" = ( /obj/structure/table, /obj/item/reagent_containers/glass/beaker{ - list_reagents = list("sacid" = 50) + list_reagents = list(/datum/reagent/toxin/acid = 50) }, /obj/item/paper/crumpled/bloody/ruins/thederelict/unfinished, /obj/item/pen, diff --git a/_maps/yogstation/RandomRuins/SpaceRuins/spacebar.dmm b/_maps/yogstation/RandomRuins/SpaceRuins/spacebar.dmm index c569a7c8b4ed..4cb244c149c6 100644 --- a/_maps/yogstation/RandomRuins/SpaceRuins/spacebar.dmm +++ b/_maps/yogstation/RandomRuins/SpaceRuins/spacebar.dmm @@ -47,7 +47,7 @@ "ap" = ( /obj/structure/table, /obj/machinery/chem_dispenser/drinks/beer{ - dispensable_reagents = list("beer","kahlua","whiskey","wine","vodka","gin","rum","tequila","vermouth","cognac","ale","absinthe","hcider","creme_de_menthe","creme_de_cacao","triple_sec","sake","ethanol","iron","minttoxin","atomicbomb","fernet"); + dispensable_reagents = list(/datum/reagent/consumable/ethanol/beer,/datum/reagent/consumable/ethanol/kahlua,/datum/reagent/consumable/ethanol/whiskey,/datum/reagent/consumable/ethanol/wine,/datum/reagent/consumable/ethanol/vodka,/datum/reagent/consumable/ethanol/gin,/datum/reagent/consumable/ethanol/rum,/datum/reagent/consumable/ethanol/tequila,/datum/reagent/consumable/ethanol/vermouth,/datum/reagent/consumable/ethanol/cognac,/datum/reagent/consumable/ethanol/ale,/datum/reagent/consumable/ethanol/absinthe,/datum/reagent/consumable/ethanol/hcider,/datum/reagent/consumable/ethanol/creme_de_menthe,/datum/reagent/consumable/ethanol/creme_de_cacao,/datum/reagent/consumable/ethanol/triple_sec,/datum/reagent/consumable/ethanol/sake,/datum/reagent/consumable/ethanol,/datum/reagent/iron,/datum/reagent/toxin/minttoxin,/datum/reagent/consumable/ethanol/atomicbomb,/datum/reagent/consumable/ethanol/fernet); emagged_reagents = null; name = "Exotic booze dispenser" }, @@ -56,7 +56,7 @@ "aq" = ( /obj/structure/table, /obj/machinery/chem_dispenser/drinks{ - dispensable_reagents = list("water","ice","coffee","cream","tea","icetea","cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime","pwr_game","shamblers","sugar","orangejuice","grenadine","limejuice","tomatojuice","lemonjuice","menthol","thirteenloko","whiskeycola","mindbreaker","tirizene"); + dispensable_reagents = list(/datum/reagent/water,/datum/reagent/consumable/ice,/datum/reagent/consumable/coffee,/datum/reagent/consumable/cream,/datum/reagent/consumable/tea,/datum/reagent/consumable/icetea,/datum/reagent/consumable/cola,/datum/reagent/consumable/spacemountainwind,/datum/reagent/consumable/dr_gibb,/datum/reagent/consumable/space_up,/datum/reagent/consumable/tonic,/datum/reagent/consumable/sodawater,/datum/reagent/consumable/lemon_lime,/datum/reagent/consumable/pwr_game,/datum/reagent/consumable/shamblers,/datum/reagent/consumable/sugar,/datum/reagent/consumable/orangejuice,/datum/reagent/consumable/grenadine,/datum/reagent/consumable/limejuice,/datum/reagent/consumable/tomatojuice,/datum/reagent/consumable/lemonjuice,/datum/reagent/consumable/menthol,/datum/reagent/consumable/thirteenloko,/datum/reagent/consumable/whiskeycola,/datum/reagent/toxin/mindbreaker,/datum/reagent/toxin/staminatoxin); emagged_reagents = null; name = "Exotic soda dispenser" }, diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 1a29ed0170d9..848c9d0d30dc 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -59,4 +59,4 @@ #define TRACKER_MINDSHIELD_TIME 1200 #define TRACKER_AWAKENED_TIME 3000 #define TRACKER_BONUS_LARGE 300 -#define TRACKER_BONUS_SMALL 100 \ No newline at end of file +#define TRACKER_BONUS_SMALL 100 diff --git a/code/__DEFINES/contracts.dm b/code/__DEFINES/contracts.dm index b600a5fdc015..c6e23394ba2d 100644 --- a/code/__DEFINES/contracts.dm +++ b/code/__DEFINES/contracts.dm @@ -41,4 +41,4 @@ #define BANISH_FUNERAL_GARB "funeral" #define LORE 1 -#define LAW 2 \ No newline at end of file +#define LAW 2 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 104205e4cc0f..433fa12155e5 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -70,6 +70,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define ishumanbasic(A) (is_species(A, /datum/species/human)) #define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) ) #define isethereal(A) (is_species(A, /datum/species/ethereal)) +#define isvampire(A) (is_species(A,/datum/species/vampire)) //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm index 45b49d6823fe..c08eee6a70a7 100644 --- a/code/controllers/subsystem/economy.dm +++ b/code/controllers/subsystem/economy.dm @@ -56,7 +56,7 @@ SUBSYSTEM_DEF(economy) return ..() /datum/controller/subsystem/economy/fire(resumed = 0) - boring_eng_payout() // Payout based on integrity. + boring_eng_payout() // Payout based on nothing. What will replace it? Surplus power, powered APC's, air alarms? Who knows. boring_sci_payout() // Payout based on slimes. boring_secmedsrv_payout() // Payout based on crew safety, health, and mood. boring_civ_payout() // Payout based on ??? Profit diff --git a/code/datums/components/rot.dm b/code/datums/components/rot.dm index 488ccf295803..1a34763046ae 100644 --- a/code/datums/components/rot.dm +++ b/code/datums/components/rot.dm @@ -46,7 +46,7 @@ return // No decay if formaldehyde in corpse or when the corpse is charred - if(C.reagents.has_reagent("formaldehyde", 15) || HAS_TRAIT(C, TRAIT_HUSK)) + if(C.reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(C, TRAIT_HUSK)) return // Also no decay if corpse chilled or not organic/undead diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index 45243014dda6..8257a9e34f59 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -78,4 +78,4 @@ /datum/component/thermite/proc/attackby_react(datum/source, obj/item/thing, mob/user, params) if(thing.is_hot()) - thermite_melt(user) \ No newline at end of file + thermite_melt(user) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 63328fa86f72..6373fff2a040 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1415,4 +1415,3 @@ H.remove_quirk(T) else H.add_quirk(T,TRUE) - diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 5e3f061ef1d0..3f969244a096 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -103,7 +103,7 @@ if(!(spread_flags & DISEASE_SPREAD_AIRBORNE) && !force_spread) return - if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) + if(affected_mob.reagents.has_reagent(/datum/reagent/medicine/spaceacillin) || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) return var/spread_range = 2 diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 469495ffee0f..3330951df488 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -34,10 +34,10 @@ // The order goes from easy to cure to hard to cure. var/static/list/advance_cures = list( - "sodiumchloride", "sugar", "orangejuice", - "spaceacillin", "salglu_solution", "ethanol", - "leporazine", "synaptizine", "lipolicide", - "silver", "gold" + /datum/reagent/consumable/sodiumchloride, /datum/reagent/consumable/sugar, /datum/reagent/consumable/orangejuice, + /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, /datum/reagent/consumable/ethanol, + /datum/reagent/medicine/leporazine, /datum/reagent/medicine/synaptizine, /datum/reagent/toxin/lipolicide, + /datum/reagent/silver, /datum/reagent/gold ) /* diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index 81cdad8042b8..7583a621b176 100644 --- a/code/datums/diseases/advance/symptoms/choking.dm +++ b/code/datums/diseases/advance/symptoms/choking.dm @@ -138,7 +138,7 @@ Bonus var/get_damage = rand(15,21) * power M.adjustOxyLoss(get_damage) if(paralysis) - M.reagents.add_reagent_list(list("pancuronium" = 3, "sodium_thiopental" = 3)) + M.reagents.add_reagent_list(list(/datum/reagent/toxin/pancuronium = 3, /datum/reagent/toxin/sodium_thiopental = 3)) return 1 /datum/symptom/asphyxiation/proc/Asphyxiate_death(mob/living/M, datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index f1c179658cd5..b7a482a0f702 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -156,7 +156,7 @@ Bonus M.adjust_fire_stacks(get_stacks) M.take_overall_damage(burn = get_stacks / 2, required_status = BODYPART_ORGANIC) if(chems) - M.reagents.add_reagent("clf3", 2 * power) + M.reagents.add_reagent(/datum/reagent/clf3, 2 * power) return 1 /datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A) @@ -164,5 +164,5 @@ Bonus M.adjust_fire_stacks(get_stacks) M.take_overall_damage(burn = get_stacks, required_status = BODYPART_ORGANIC) if(chems) - M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power)) + M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power)) return 1 diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index e81f45d5eaa3..ecbf24dc8a7f 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -124,7 +124,7 @@ Bonus var/get_damage = rand(6,10) M.take_overall_damage(brute = get_damage, required_status = BODYPART_ORGANIC) if(chems) - M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2)) + M.reagents.add_reagent_list(list(/datum/reagent/toxin/heparin = 2, /datum/reagent/toxin/lipolicide = 2)) if(zombie) - M.reagents.add_reagent("romerol", 1) + M.reagents.add_reagent(/datum/reagent/romerol, 1) return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 39306b4b9446..21b7c037cfa5 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -118,7 +118,7 @@ /datum/symptom/heal/chem/Heal(mob/living/M, datum/disease/advance/A, actual_power) for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins! - M.reagents.remove_reagent(R.id, actual_power) + M.reagents.remove_reagent(R.type, actual_power) if(food_conversion) M.adjust_nutrition(0.3) if(prob(2)) @@ -311,11 +311,11 @@ if(M.fire_stacks < 0) M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0) . += power - if(M.reagents.has_reagent("holywater")) - M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff) + if(M.reagents.has_reagent(/datum/reagent/water/holywater)) + M.reagents.remove_reagent(/datum/reagent/water/holywater, 0.5 * absorption_coeff) . += power * 0.75 - else if(M.reagents.has_reagent("water")) - M.reagents.remove_reagent("water", 0.5 * absorption_coeff) + else if(M.reagents.has_reagent(/datum/reagent/water)) + M.reagents.remove_reagent(/datum/reagent/water, 0.5 * absorption_coeff) . += power * 0.5 /datum/symptom/heal/water/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) @@ -374,7 +374,7 @@ gases = environment.gases if(gases["plasma"] && gases["plasma"][MOLES] > gases["plasma"][GAS_META][META_GAS_MOLES_VISIBLE]) //if there's enough plasma in the air to see . += power * 0.5 - if(M.reagents.has_reagent("plasma")) + if(M.reagents.has_reagent(/datum/reagent/toxin/plasma)) . += power * 0.75 /datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 8d7cc5ed7081..0c17fa177053 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -44,10 +44,10 @@ if(A.stage >= 4) M.drowsyness = max(0, M.drowsyness - 2) - if(M.reagents.has_reagent("mindbreaker")) - M.reagents.remove_reagent("mindbreaker", 5) - if(M.reagents.has_reagent("histamine")) - M.reagents.remove_reagent("histamine", 5) + if(M.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) + M.reagents.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) + if(M.reagents.has_reagent(/datum/reagent/toxin/histamine)) + M.reagents.remove_reagent(/datum/reagent/toxin/histamine, 5) M.hallucination = max(0, M.hallucination - 10) if(A.stage >= 5) diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm index 2d96157bb08d..20ecceb224c2 100644 --- a/code/datums/diseases/anxiety.dm +++ b/code/datums/diseases/anxiety.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Ethanol" - cures = list("ethanol") + cures = list(/datum/reagent/consumable/ethanol) agent = "Excess Lepidopticides" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate butterflies." diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index ab64fd515c63..edd6f151c9ee 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Sugar" - cures = list("sugar") + cures = list(/datum/reagent/consumable/sugar) agent = "Apidae Infection" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 0a3450176339..fc4c057ce5c6 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mannitol" - cures = list("mannitol") + cures = list(/datum/reagent/medicine/mannitol) agent = "Cryptococcus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 15//higher chance to cure, since two reagents are required diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 7bea6ce264f3..a923ebfa3131 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "On contact" //Yogs cure_text = "Rest & Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) agent = "XY-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) permeability_mod = 0.5 diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm index da5e67a4fb8a..eea3147107fa 100644 --- a/code/datums/diseases/cold9.dm +++ b/code/datums/diseases/cold9.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Common Cold Anti-bodies & Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) agent = "ICE9-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will slow, as if partly frozen." diff --git a/code/datums/diseases/decloning.dm b/code/datums/diseases/decloning.dm index 2f7c48e86eb7..fde2f0b0b1ab 100644 --- a/code/datums/diseases/decloning.dm +++ b/code/datums/diseases/decloning.dm @@ -8,7 +8,7 @@ viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will 'REDACTED'!" // yogsfixed this description cause it was causing issues severity = "Dangerous!" - cures = list("rezadone") + cures = list(/datum/reagent/medicine/rezadone) disease_flags = CAN_CARRY|CAN_RESIST spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS process_dead = TRUE diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 267dd711a315..972a7f4e1871 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mutadone" - cures = list("mutadone") + cures = list(/datum/reagent/medicine/mutadone) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE agent = "S4E1 retrovirus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm index add60c73f197..70bcc67d2102 100644 --- a/code/datums/diseases/fake_gbs.dm +++ b/code/datums/diseases/fake_gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list("synaptizine","sulfur") + cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) agent = "Gravitokinetic Bipotential SADS-" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated death will occur." diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index 96a36be1538b..916e56373fad 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) cure_chance = 10 agent = "H13N1 flu virion" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) diff --git a/code/datums/diseases/fluspanish.dm b/code/datums/diseases/fluspanish.dm index 9577ca43d095..1557ddfbd8d4 100644 --- a/code/datums/diseases/fluspanish.dm +++ b/code/datums/diseases/fluspanish.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin & Anti-bodies to the common flu" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) cure_chance = 10 agent = "1nqu1s1t10n flu virion" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm index 6ae1eb01a266..a1a87ba1a546 100644 --- a/code/datums/diseases/gastrolisis.dm +++ b/code/datums/diseases/gastrolisis.dm @@ -8,7 +8,7 @@ viable_mobtypes = list(/mob/living/carbon/human) stage_prob = 1 disease_flags = CURABLE - cures = list("sodiumchloride", "mutadone") + cures = list(/datum/reagent/consumable/sodiumchloride, /datum/reagent/medicine/mutadone) /datum/disease/gastrolosis/stage_act() ..() diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 0487b1c815f9..8a6eab6048ff 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list("synaptizine","sulfur") + cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) cure_chance = 15//higher chance to cure, since two reagents are required agent = "Gravitokinetic Bipotential SADS+" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index a35ce283b4f9..68cadb44cbef 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -59,7 +59,7 @@ H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!") H.adjustStaminaLoss(60) H.set_heartattack(TRUE) - H.reagents.add_reagent("corazone", 3) // To give the victim a final chance to shock their heart before losing consciousness + H.reagents.add_reagent(/datum/reagent/medicine/corazone, 3) // To give the victim a final chance to shock their heart before losing consciousness cure() else cure() diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 7c5f05c440e0..cb00f571aae3 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Iron" - cures = list("iron") + cures = list(/datum/reagent/iron) agent = "Fukkos Miracos" viable_mobtypes = list(/mob/living/carbon/human) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index d9c4b324f630..68e962055aa4 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -5,7 +5,7 @@ spread_flags = DISEASE_SPREAD_SPECIAL disease_flags = CURABLE cure_text = "Holy Water." - cures = list("holywater") + cures = list(/datum/reagent/water/holywater) cure_chance = 20 agent = "Avian Vengence" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 64f453cd48a0..a43b2f582bf7 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Banana products, especially banana bread." - cures = list("banana") + cures = list(/datum/reagent/consumable/banana) cure_chance = 75 agent = "H0NI<42 Virus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm index 47365b3a7526..b1cf149600aa 100644 --- a/code/datums/diseases/retrovirus.dm +++ b/code/datums/diseases/retrovirus.dm @@ -17,7 +17,7 @@ ..() agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]" if(prob(40)) - cures = list("mutadone") + cures = list(/datum/reagent/medicine/mutadone) else restcure = 1 diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 5662225ef270..035a506d24d8 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -93,7 +93,7 @@ /datum/disease/transformation/jungle_fever name = "Jungle Fever" cure_text = "Death." - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) spread_text = "Monkey Bites" spread_flags = DISEASE_SPREAD_SPECIAL viable_mobtypes = list(/mob/living/carbon/monkey, /mob/living/carbon/human) @@ -156,7 +156,7 @@ name = "Robotic Transformation" cure_text = "An injection of copper." - cures = list("copper") + cures = list(/datum/reagent/copper) cure_chance = 5 agent = "R2D2 Nanomachines" desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." @@ -189,7 +189,7 @@ name = "Xenomorph Transformation" cure_text = "Spaceacillin & Glycerol" - cures = list("spaceacillin", "glycerol") + cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/glycerol) cure_chance = 5 agent = "Rip-LEY Alien Microbes" desc = "This disease changes the victim into a xenomorph." @@ -218,7 +218,7 @@ /datum/disease/transformation/slime name = "Advanced Mutation Transformation" cure_text = "frost oil" - cures = list("frostoil") + cures = list(/datum/reagent/consumable/frostoil) cure_chance = 80 agent = "Advanced Mutation Toxin" desc = "This highly concentrated extract converts anything into more of itself." @@ -247,7 +247,7 @@ /datum/disease/transformation/corgi name = "The Barkening" cure_text = "Death" - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) agent = "Fell Doge Majicks" desc = "This disease transforms the victim into a corgi." severity = DISEASE_SEVERITY_BIOHAZARD @@ -271,8 +271,8 @@ /datum/disease/transformation/morph name = "Gluttony's Blessing" - cure_text = "Unknown" //Yogs - changed "nothing" to "unknown" - cures = list("adminordrazine") + cure_text = /datum/reagent/consumable/nothing + cures = list(/datum/reagent/medicine/adminordrazine) agent = "Gluttony's Blessing" desc = "A 'gift' from somewhere terrible." stage_prob = 20 @@ -289,7 +289,7 @@ /datum/disease/transformation/gondola name = "Gondola Transformation" cure_text = "Condensed Capsaicin, ingested or injected." //getting pepper sprayed doesn't help - cures = list("condensedcapsaicin") //beats the hippie crap right out of your system + cures = list(/datum/reagent/consumable/condensedcapsaicin) //beats the hippie crap right out of your system cure_chance = 80 stage_prob = 5 agent = "Tranquility" @@ -310,17 +310,17 @@ if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5)) if(3) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5)) if(4) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5)) if (prob(2)) to_chat(affected_mob, "You let go of what you were holding.") var/obj/item/I = affected_mob.get_active_held_item() diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 1df04d0e4131..f59a19c7a381 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -4,7 +4,7 @@ max_stages = 5 spread_text = "Airborne" cure_text = "Spaceacillin & salbutamol" - cures = list("spaceacillin", "salbutamol") + cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salbutamol) agent = "Fungal Tubercle bacillus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index b2880463800b..244cc819d8a4 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "The Manly Dorf" - cures = list("manlydorf") + cures = list(/datum/reagent/consumable/ethanol/manly_dorf) cure_chance = 100 agent = "Rincewindus Vulgaris" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index ae7d846e9387..0cd636bfeb8f 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -34,7 +34,7 @@ * */ /datum/recipe - var/list/reagents_list // example: = list("berryjuice" = 5) // do not list same reagent twice + var/list/reagents_list // example: = list(/datum/reagent/consumable/berryjuice = 5) // do not list same reagent twice var/list/items // example: =list(/obj/item/crowbar, /obj/item/welder) // place /foo/bar before /foo var/result //example: = /obj/item/reagent_containers/food/snacks/donut var/time = 100 // 1/10 part of second @@ -88,7 +88,7 @@ var/obj/result_obj = new result(container) for (var/obj/O in (container.contents-result_obj)) if (O.reagents) - O.reagents.del_reagent("nutriment") + O.reagents.del_reagent(/datum/reagent/consumable/nutriment) O.reagents.update_total() O.reagents.trans_to(result_obj, O.reagents.total_volume) qdel(O) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 4e4f85d64432..2ec3f6e731f7 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -485,7 +485,7 @@ else owner.visible_message("[owner]'s soul is absorbed into the rod, relieving the previous snake of its duty.") var/mob/living/simple_animal/hostile/retaliate/poison/snake/healSnake = new(owner.loc) - var/list/chems = list("bicaridine", "salbutamol", "kelotane", "antitoxin") + var/list/chems = list(/datum/reagent/medicine/bicaridine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/antitoxin) healSnake.poison_type = pick(chems) healSnake.name = "Asclepius's Snake" healSnake.real_name = "Asclepius's Snake" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index e2369f532335..6c039d44730a 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -355,7 +355,7 @@ /datum/status_effect/cultghost/tick() if(owner.reagents) - owner.reagents.del_reagent("holywater") //can't be deconverted + owner.reagents.del_reagent(/datum/reagent/water/holywater) //can't be deconverted /datum/status_effect/crusher_mark id = "crusher_mark" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index af5af709489e..844252f505c2 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -375,7 +375,7 @@ medical_record_text = "Patient suffers from acute Reality Dissociation Syndrome and experiences vivid hallucinations." /datum/quirk/insanity/on_process() - if(quirk_holder.reagents.has_reagent("mindbreaker")) + if(quirk_holder.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) quirk_holder.hallucination = 0 return if(prob(2)) //we'll all be mad soon enough @@ -424,7 +424,7 @@ gain_text = "You suddenly feel the craving for drugs." lose_text = "You feel like you should kick your drug habit." medical_record_text = "Patient has a history of hard drugs." - var/drug_list = list("crank", "krokodil", "morphine", "happiness", "methamphetamine") //List of possible IDs + var/drug_list = list(/datum/reagent/drug/crank, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine) //List of possible IDs var/reagent_id //ID picked from list var/datum/reagent/reagent_type //If this is defined, reagent_id will be unused and the defined reagent type will be instead. var/datum/reagent/reagent_instance diff --git a/code/game/atoms.dm b/code/game/atoms.dm index ac58043db922..0afb9a5bcbab 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -333,12 +333,12 @@ //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() - if(get_blood_id() != "blood") + if(get_blood_id() != /datum/reagent/blood) return return list("ANIMAL DNA" = "Y-") /mob/living/carbon/get_blood_dna_list() - if(get_blood_id() != "blood") + if(get_blood_id() != /datum/reagent/blood) return var/list/blood_dna = list() if(dna) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 2a37142a7a07..b1a8b364d97f 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -8,7 +8,7 @@ spray_range = 1 stream_range = 1 volume = 30 - list_reagents = list("lube" = 30) + list_reagents = list(/datum/reagent/lube = 30) //COMBAT CLOWN SHOES //Clown shoes with combat stats and noslip. Of course they still squeak. @@ -166,7 +166,7 @@ customfoodfilling = FALSE seed = null tastes = list("explosives" = 10) - list_reagents = list("vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) /obj/item/grown/bananapeel/bombanana desc = "A peel from a banana. Why is it beeping?" diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index f180dadf5429..c868ed5f1137 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -17,10 +17,10 @@ var/list/available_chems var/controls_inside = FALSE var/list/possible_chems = list( - list("epinephrine", "morphine", "salbutamol", "bicaridine", "kelotane"), - list("oculine","inacusiate"), - list("antitoxin", "mutadone", "mannitol", "pen_acid"), - list("omnizine") + list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane), + list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/inacusiate), + list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/mutadone, /datum/reagent/medicine/mannitol, /datum/reagent/medicine/pen_acid), + list(/datum/reagent/medicine/omnizine) ) var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning @@ -162,7 +162,7 @@ data["chems"] = list() for(var/chem in available_chems) var/datum/reagent/R = GLOB.chemical_reagents_list[chem] - data["chems"] += list(list("name" = R.name, "id" = R.id, "allowed" = chem_allowed(chem))) + data["chems"] += list(list("name" = R.name, "id" = ckey(R.name), "allowed" = chem_allowed(chem))) data["occupant"] = list() var/mob/living/mob_occupant = occupant @@ -212,7 +212,7 @@ var/chem = params["chem"] if(!is_operational() || !mob_occupant) return - if(mob_occupant.health < min_health && chem != "epinephrine") + if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine) return if(inject_chem(chem, usr)) . = TRUE @@ -235,7 +235,7 @@ if(!mob_occupant || !mob_occupant.reagents) return var/amount = mob_occupant.reagents.get_reagent_amount(chem) + 10 <= 20 * efficiency - var/occ_health = mob_occupant.health > min_health || chem == "epinephrine" + var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine return amount && occ_health /obj/machinery/sleeper/proc/reset_chem_buttons() @@ -271,7 +271,7 @@ desc = "A large cryogenics unit built from brass. Its surface is pleasantly cool the touch." icon_state = "sleeper_clockwork" enter_message = "You hear the gentle hum and click of machinery, and are lulled into a sense of peace." - possible_chems = list(list("epinephrine", "salbutamol", "bicaridine", "kelotane", "oculine", "inacusiate", "mannitol")) + possible_chems = list(list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/mannitol)) /obj/machinery/sleeper/clockwork/process() if(occupant && isliving(occupant)) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 57694bd0b6f5..7371918cabc3 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -88,7 +88,7 @@ selected_category = href_list["category"] if(href_list["disposeI"]) //Get rid of a reagent incase you add the wrong one by mistake - reagents.del_reagent(href_list["disposeI"]) + reagents.del_reagent(text2path(href_list["disposeI"])) if(href_list["make"]) @@ -99,10 +99,10 @@ return - var/synth_cost = being_built.reagents_list["synthflesh"]*prod_coeff + var/synth_cost = being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff var/power = max(2000, synth_cost/5) - if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) + if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) busy = TRUE use_power(power) flick("limbgrower_fill",src) @@ -116,8 +116,8 @@ return /obj/machinery/limbgrower/proc/build_item() - if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) //sanity check, if this happens we are in big trouble - reagents.remove_reagent("synthflesh",being_built.reagents_list["synthflesh"]*prod_coeff) + if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //sanity check, if this happens we are in big trouble + reagents.remove_reagent(/datum/reagent/medicine/synthflesh,being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff) var/buildpath = being_built.build_path if(ispath(buildpath, /obj/item/bodypart)) //This feels like spatgheti code, but i need to initilise a limb somehow build_limb(buildpath) @@ -202,7 +202,7 @@ for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
" + dat += "Purge
" dat += "" return dat @@ -212,12 +212,12 @@ return dat /obj/machinery/limbgrower/proc/can_build(datum/design/D) - return (reagents.has_reagent("synthflesh", D.reagents_list["synthflesh"]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design + return (reagents.has_reagent(/datum/reagent/medicine/synthflesh, D.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design /obj/machinery/limbgrower/proc/get_design_cost(datum/design/D) var/dat - if(D.reagents_list["synthflesh"]) - dat += "[D.reagents_list["synthflesh"] * prod_coeff] Synthetic flesh " + if(D.reagents_list[/datum/reagent/medicine/synthflesh]) + dat += "[D.reagents_list[/datum/reagent/medicine/synthflesh] * prod_coeff] Synthetic flesh " return dat /obj/machinery/limbgrower/emag_act(mob/user) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index b38f06d4a919..7945b4249906 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -193,11 +193,11 @@ if(!R || !patient || !SG || !(SG in chassis.equipment)) return 0 var/to_inject = min(R.volume, inject_amount) - if(to_inject && patient.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2) + if(to_inject && patient.reagents.get_reagent_amount(R.type) + to_inject <= inject_amount*2) occupant_message("Injecting [patient] with [to_inject] units of [R.name].") log_message("Injecting [patient] with [to_inject] units of [R.name].", LOG_MECHA) log_combat(chassis.occupant, patient, "injected", "[name] ([R] - [to_inject] units)") - SG.reagents.trans_id_to(patient,R.id,to_inject) + SG.reagents.trans_id_to(patient,R.type,to_inject) update_equip_info() return @@ -232,8 +232,8 @@ M.AdjustParalyzed(-80) M.AdjustImmobilized(-80) M.AdjustUnconscious(-80) - if(M.reagents.get_reagent_amount("epinephrine") < 5) - M.reagents.add_reagent("epinephrine", 5) + if(M.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5) + M.reagents.add_reagent(/datum/reagent/medicine/epinephrine, 5) chassis.use_power(energy_drain) update_equip_info() @@ -263,7 +263,7 @@ . = ..() create_reagents(max_volume, NO_REACT) syringes = new - known_reagents = list("epinephrine"="Epinephrine","charcoal"="Charcoal") + known_reagents = list(/datum/reagent/medicine/epinephrine="Epinephrine",/datum/reagent/medicine/charcoal="Charcoal") processed_reagents = new /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach() @@ -329,8 +329,7 @@ if(M.can_inject(null, 1)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + R += "[A.name] ([num2text(A.volume)]" mechsyringe.icon_state = initial(mechsyringe.icon_state) mechsyringe.icon = initial(mechsyringe.icon) mechsyringe.reagents.reaction(M, INJECT) @@ -443,7 +442,7 @@ var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) - output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" + output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" if(output) output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" @@ -479,7 +478,7 @@ return 0 occupant_message("Analyzing reagents...") for(var/datum/reagent/R in A.reagents.reagent_list) - if(R.can_synth && add_known_reagent(R.id,R.name)) + if(R.can_synth && add_known_reagent(R.type,R.name)) occupant_message("Reagent analyzed, identified as [R.name] and added to database.") send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form()) occupant_message("Analyzis complete.") diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index dc74659289e1..15b55f672300 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -177,7 +177,7 @@ /obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize() . = ..() create_reagents(1000) - reagents.add_reagent("water", 1000) + reagents.add_reagent(/datum/reagent/water, 1000) /obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 477e03b028b7..2bb531e9795e 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -266,10 +266,10 @@ /obj/mecha/proc/mech_toxin_damage(mob/living/target) playsound(src, 'sound/effects/spray2.ogg', 50, 1) if(target.reagents) - if(target.reagents.get_reagent_amount("cryptobiolin") + force < force*2) - target.reagents.add_reagent("cryptobiolin", force/2) - if(target.reagents.get_reagent_amount("toxin") + force < force*2) - target.reagents.add_reagent("toxin", force/2.5) + if(target.reagents.get_reagent_amount(/datum/reagent/cryptobiolin) + force < force*2) + target.reagents.add_reagent(/datum/reagent/cryptobiolin, force/2) + if(target.reagents.get_reagent_amount(/datum/reagent/toxin) + force < force*2) + target.reagents.add_reagent(/datum/reagent/toxin, force/2.5) /obj/mecha/mech_melee_attack(obj/mecha/M) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index aa7d0a2f137f..304a849385a2 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -57,7 +57,7 @@ /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidgibs", 5) + reagents.add_reagent(/datum/reagent/liquidgibs, 5) if(already_rotting) start_rotting(rename=FALSE) else diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index d5ad51570073..7e7909be5c93 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/ash/Initialize() . = ..() - reagents.add_reagent("ash", 30) + reagents.add_reagent(/datum/reagent/ash, 30) pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) @@ -27,7 +27,7 @@ /obj/effect/decal/cleanable/ash/large/Initialize() . = ..() - reagents.add_reagent("ash", 30) //double the amount of ash. + reagents.add_reagent(/datum/reagent/ash, 30) //double the amount of ash. /obj/effect/decal/cleanable/glass name = "tiny shards" @@ -84,7 +84,7 @@ /obj/effect/decal/cleanable/greenglow/filled/Initialize() . = ..() - reagents.add_reagent(pick("uranium", "radium"), 5) + reagents.add_reagent(pick(/datum/reagent/uranium, /datum/reagent/uranium/radium), 5) /obj/effect/decal/cleanable/cobweb name = "cobweb" @@ -132,7 +132,7 @@ var/datum/reagent/consumable/nutri_check = R if(nutri_check.nutriment_factor >0) H.adjust_nutrition(nutri_check.nutriment_factor * nutri_check.volume) - reagents.remove_reagent(nutri_check.id,nutri_check.volume) + reagents.remove_reagent(nutri_check.type,nutri_check.volume) reagents.trans_to(H, reagents.total_volume, transfered_by = user) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 5d27db137a5b..6cec7b9d95ba 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -52,7 +52,7 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() - reagents.add_reagent("oil", 30) + reagents.add_reagent(/datum/reagent/oil, 30) /obj/effect/decal/cleanable/oil/attackby(obj/item/I, mob/living/user) var/attacked_by_hot_thing = I.is_hot() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index cea0558c25ec..effca9f5f878 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -54,7 +54,7 @@ var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) if(!P) P = new(loc) - P.reagents.add_reagent("stable_plasma", absorbed_plasma) + P.reagents.add_reagent(/datum/reagent/stable_plasma, absorbed_plasma) flick("[icon_state]-disolve", src) QDEL_IN(src, 5) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index a8ae29b2aa95..27ad25eea1b0 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -137,7 +137,7 @@ victim.put_in_hands(chainsaw, forced = TRUE) chainsaw.attack_self(victim) chainsaw.wield(victim) - victim.reagents.add_reagent("adminordrazine",25) + victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25) to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!") victim.client.color = pure_red diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index a02de979e7c5..fdf580fb6c75 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -41,7 +41,7 @@ layer = FLY_LAYER /obj/effect/supplypod_selector - icon_state = "supplypod_selector" + icon_state = "supplypod_selector" layer = FLY_LAYER //Makes a tile fully lit no matter what diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index d38334876232..f96c96e9d56f 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -55,7 +55,7 @@ var/amount_grown = 0 var/player_spiders = 0 var/directive = "" //Message from the mother - var/poison_type = "toxin" + var/poison_type = /datum/reagent/toxin var/poison_per_bite = 5 var/list/faction = list("spiders") diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index 6df370ef780e..233b11944ccc 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -173,7 +173,7 @@ RSF to_chat(user, "Fabricating Cookie..") var/obj/item/reagent_containers/food/snacks/cookie/S = new /obj/item/reagent_containers/food/snacks/cookie(T) if(toxin) - S.reagents.add_reagent("chloralhydratedelayed", 10) + S.reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 10) if (iscyborg(user)) var/mob/living/silicon/robot/R = user R.cell.charge -= 100 diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index afb2b2207653..7b6664e03fc7 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -68,7 +68,7 @@ // make some colorful reagent, and apply it to the lungs L.create_reagents(10) - L.reagents.add_reagent("colorful_reagent", 10) + L.reagents.add_reagent(/datum/reagent/colorful_reagent, 10) L.reagents.reaction(L, TOUCH, 1) // TODO maybe add some colorful vomit? @@ -81,7 +81,7 @@ return (TOXLOSS|OXYLOSS) else if(can_use(user) && !L) user.visible_message("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.") - user.reagents.add_reagent("colorful_reagent", 1) + user.reagents.add_reagent(/datum/reagent/colorful_reagent, 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index a0863d612466..6bf90b421919 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -120,4 +120,4 @@ flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) - grind_results = list("iron" = 10, "silicon" = 10) + grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 606ddb7df7ce..8b667caeb609 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -25,7 +25,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 5 // 10 seconds w_class = WEIGHT_CLASS_TINY heat = 1000 - grind_results = list("phosphorus" = 2) + grind_results = list(/datum/reagent/phosphorus = 2) /obj/item/match/process() smoketime-- @@ -119,7 +119,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lastHolder = null var/smoketime = 180 // 1 is 2 seconds, so a single cigarette will last 6 minutes. var/chem_volume = 30 - var/list/list_reagents = list("nicotine" = 15) + var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15) /obj/item/clothing/mask/cigarette/suicide_act(mob/user) user.visible_message("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.") @@ -174,15 +174,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM hitsound = 'sound/items/welder.ogg' damtype = "fire" force = 4 - if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire + if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return - if(reagents.get_reagent_amount("welding_fuel")) // the fuel explodes, too, but much less violently + if(reagents.get_reagent_amount(/datum/reagent/fuel)) // the fuel explodes, too, but much less violently var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("welding_fuel") / 5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount(/datum/reagent/fuel) / 5, 1), get_turf(src), 0, 0) e.start() qdel(src) return @@ -291,29 +291,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/uplift desc = "An Uplift Smooth brand cigarette." - list_reagents = list("nicotine" = 13, "menthol" = 5) + list_reagents = list(/datum/reagent/drug/nicotine = 13, /datum/reagent/consumable/menthol = 5) /obj/item/clothing/mask/cigarette/robust desc = "A Robust brand cigarette." /obj/item/clothing/mask/cigarette/robustgold desc = "A Robust Gold brand cigarette." - list_reagents = list("nicotine" = 15, "gold" = 3) // Just enough to taste a hint of expensive metal. + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/gold = 3) // Just enough to taste a hint of expensive metal. /obj/item/clothing/mask/cigarette/carp desc = "A Carp Classic brand cigarette." /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." - list_reagents = list("nicotine" = 15, "omnizine" = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/medicine/omnizine = 15) /obj/item/clothing/mask/cigarette/shadyjims desc = "A Shady Jim's Super Slims cigarette." - list_reagents = list("nicotine" = 15, "lipolicide" = 4, "ammonia" = 2, "plantbgone" = 1, "toxin" = 1.5) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/lipolicide = 4, /datum/reagent/ammonia = 2, /datum/reagent/toxin/plantbgone = 1, /datum/reagent/toxin = 1.5) /obj/item/clothing/mask/cigarette/xeno desc = "A Xeno Filtered brand cigarette." - list_reagents = list ("nicotine" = 20, "regen_jelly" = 15, "krokodil" = 4) + list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4) // Rollies. @@ -336,17 +336,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM pixel_y = rand(-5, 5) /obj/item/clothing/mask/cigarette/rollie/nicotine - list_reagents = list("nicotine" = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 15) /obj/item/clothing/mask/cigarette/rollie/trippy - list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/drug/mushroomhallucinogen = 35) starts_lit = TRUE /obj/item/clothing/mask/cigarette/rollie/cannabis - list_reagents = list("space_drugs" = 15, "lipolicide" = 35) + list_reagents = list(/datum/reagent/drug/space_drugs = 15, /datum/reagent/toxin/lipolicide = 35) /obj/item/clothing/mask/cigarette/rollie/mindbreaker - list_reagents = list("mindbreaker" = 35, "lipolicide" = 15) + list_reagents = list(/datum/reagent/toxin/mindbreaker = 35, /datum/reagent/toxin/lipolicide = 15) /obj/item/cigbutt/roach name = "roach" @@ -373,7 +373,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = "cigaroff" smoketime = 300 // 11 minutes chem_volume = 40 - list_reagents = list("nicotine" = 25) + list_reagents = list(/datum/reagent/drug/nicotine = 25) /obj/item/clothing/mask/cigarette/cigar/cohiba name = "\improper Cohiba Robusto cigar" @@ -383,7 +383,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "cigar2off" smoketime = 600 // 20 minutes chem_volume = 80 - list_reagents =list("nicotine" = 40) + list_reagents =list(/datum/reagent/drug/nicotine = 40) /obj/item/clothing/mask/cigarette/cigar/havana name = "premium Havanian cigar" @@ -393,7 +393,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "cigar2off" smoketime = 900 // 30 minutes chem_volume = 50 - list_reagents =list("nicotine" = 15) + list_reagents =list(/datum/reagent/drug/nicotine = 15) /obj/item/cigbutt name = "cigarette butt" @@ -402,7 +402,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigbutt" w_class = WEIGHT_CLASS_TINY throwforce = 0 - grind_results = list("carbon" = 2) + grind_results = list(/datum/reagent/carbon = 2) /obj/item/cigbutt/cigarbutt name = "cigar butt" @@ -531,7 +531,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 1500 resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE - grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5) + grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/oil = 5) /obj/item/lighter/Initialize() . = ..() @@ -698,7 +698,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 3000 //Blue flame! light_color = LIGHT_COLOR_CYAN overlay_state = "slime" - grind_results = list("iron" = 1, "welding_fuel" = 5, "pyroxadone" = 5) + grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/medicine/pyroxadone = 5) /////////// @@ -752,7 +752,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/Initialize(mapload, param_color) . = ..() create_reagents(chem_volume, NO_REACT) - reagents.add_reagent("nicotine", 50) + reagents.add_reagent(/datum/reagent/drug/nicotine, 50) if(!icon_state) if(!param_color) param_color = pick("red","blue","black","white","green","purple","yellow","orange") @@ -841,14 +841,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.reaction(C, INGEST, fraction) if(!reagents.trans_to(C, REAGENTS_METABOLISM)) reagents.remove_any(REAGENTS_METABOLISM) - if(reagents.get_reagent_amount("welding_fuel")) + if(reagents.get_reagent_amount(/datum/reagent/fuel)) //HOT STUFF C.fire_stacks = 2 C.IgniteMob() - if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire + if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 26c13263d2b3..53f9a2a92bd1 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -12,7 +12,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' materials = list(MAT_GLASS=1000) w_class = WEIGHT_CLASS_SMALL - grind_results = list("silicon" = 20) + grind_results = list(/datum/reagent/silicon = 20) var/build_path = null /obj/item/circuitboard/proc/apply_default_parts(obj/machinery/M) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 87363f600cfb..480379063c88 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -1,209 +1,209 @@ -/* Clown Items - * Contains: - * Soap - * Bike Horns - * Air Horns - * Canned Laughter - */ - -/* - * Soap - */ - -/obj/item/soap - name = "soap" - desc = "A cheap bar of soap. Doesn't smell." - gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "soap" - lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' - w_class = WEIGHT_CLASS_TINY - item_flags = NOBLUDGEON - throwforce = 0 - throw_speed = 3 - throw_range = 7 - grind_results = list("lye" = 10) - var/cleanspeed = 35 //slower than mop - force_string = "robust... against germs" - var/uses = 100 - -/obj/item/soap/ComponentInitialize() - . = ..() - AddComponent(/datum/component/slippery, 80) - -/obj/item/soap/examine(mob/user) - . = ..() - var/max_uses = initial(uses) - var/msg = "It looks like it just came out of the package." - if(uses != max_uses) - var/percentage_left = uses / max_uses - switch(percentage_left) - if(0 to 0.15) - msg = "There's just a tiny bit left of what it used to be, you're not sure it'll last much longer." - if(0.15 to 0.30) - msg = "It's dissolved quite a bit, but there's still some life to it." - if(0.30 to 0.50) - msg = "It's past its prime, but it's definitely still good." - if(0.50 to 0.75) - msg = "It's started to get a little smaller than it used to be, but it'll definitely still last for a while." - else - msg = "It's seen some light use, but it's still pretty fresh." - to_chat(user, "[msg]") - -/obj/item/soap/nanotrasen - desc = "A heavy duty bar of Nanotrasen brand soap. Smells of plasma." - grind_results = list("plasma" = 10, "lye" = 10) - icon_state = "soapnt" - cleanspeed = 28 //janitor gets this - uses = 300 - -/obj/item/soap/homemade - desc = "A homemade bar of soap. Smells of... well...." - icon_state = "soapgibs" - cleanspeed = 30 // faster to reward chemists for going to the effort - -/obj/item/soap/deluxe - desc = "A deluxe Waffle Co. brand bar of soap. Smells of high-class luxury." - icon_state = "soapdeluxe" - cleanspeed = 20 //captain gets one of these - -/obj/item/soap/syndie - desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster." - icon_state = "soapsyndie" - cleanspeed = 5 //faster than mop so it is useful for traitors who want to clean crime scenes - -/obj/item/soap/suicide_act(mob/user) - user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!", forced="soap suicide") - user.visible_message("[user] lifts [src] to [user.p_their()] mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!") - new /obj/effect/particle_effect/foam(loc) - return (TOXLOSS) - -/obj/item/soap/proc/decreaseUses(mob/user) - uses-- - if(uses <= 0) - to_chat(user, "[src] crumbles into tiny bits!") - qdel(src) - -/obj/item/soap/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity || !check_allowed_items(target)) - return - //I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing. - //So this is a workaround. This also makes more sense from an IC standpoint. ~Carn - if(user.client && ((target in user.client.screen) && !user.is_holding(target))) - to_chat(user, "You need to take that [target.name] off before cleaning it!") - else if(istype(target, /obj/effect/decal/cleanable)) - user.visible_message("[user] begins to scrub \the [target.name] out with [src].", "You begin to scrub \the [target.name] out with [src]...") - if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You scrub \the [target.name] out.") - qdel(target) - decreaseUses(user) - - else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) - var/mob/living/carbon/human/H = user - if(user.zone_selected == "mouth") - user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!", "You wash \the [target]'s mouth out with [src.name]!") //washes mouth out with soap sounds better than 'the soap' here - H.lip_style = null //removes lipstick - H.adjust_hygiene(5) //it kinda works i guess - else - user.visible_message("\the [user] washes \the [target] with [src.name]!", "You wash \the [target] with [src.name]!") - H.adjust_hygiene(20) - H.update_body() - decreaseUses(user) - return - else if(istype(target, /obj/structure/window)) - user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") - if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You clean \the [target.name].") - target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - target.set_opacity(initial(target.opacity)) - decreaseUses(user) - else - user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") - if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You clean \the [target.name].") - for(var/obj/effect/decal/cleanable/C in target) - qdel(C) - target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) - SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) - target.wash_cream() - decreaseUses(user) - return - - -/* - * Bike Horns - */ - -/obj/item/bikehorn - name = "bike horn" - desc = "A horn off of a bicycle." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bike_horn" - item_state = "bike_horn" - lefthand_file = 'icons/mob/inhands/equipment/horns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/horns_righthand.dmi' - throwforce = 0 - hitsound = null //To prevent tap.ogg playing, as the item lacks of force - w_class = WEIGHT_CLASS_TINY - slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT - throw_speed = 3 - throw_range = 7 - attack_verb = list("HONKED") - var/component = /datum/component/squeak/bikehorn - -/obj/item/bikehorn/Initialize() - . = ..() - AddComponent(component, 50) - -/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk) - return ..() - -/obj/item/bikehorn/suicide_act(mob/user) - user.visible_message("[user] solemnly points [src] at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE) - return (BRUTELOSS) - -//air horn -/obj/item/bikehorn/airhorn - name = "air horn" - desc = "Damn son, where'd you find this?" - icon_state = "air_horn" - component = /datum/component/squeak/airhorn - -//golden bikehorn -/obj/item/bikehorn/golden - name = "golden bike horn" - desc = "Golden? Clearly, it's made with bananium! Honk!" - icon_state = "gold_horn" - item_state = "gold_horn" - var/flip_cooldown = 0 - -/obj/item/bikehorn/golden/attack() - if(flip_cooldown < world.time) - flip_mobs() - return ..() - -/obj/item/bikehorn/golden/attack_self(mob/user) - if(flip_cooldown < world.time) - flip_mobs() - ..() - -/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) - var/turf/T = get_turf(src) - for(M in ohearers(7, T)) - if(ishuman(M) && M.can_hear()) - var/mob/living/carbon/human/H = M - if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) - continue - M.emote("flip") - flip_cooldown = world.time + 7 - -//canned laughter -/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter - name = "Canned Laughter" - desc = "Just looking at this makes you want to giggle." - icon_state = "laughter" - list_reagents = list("laughter" = 50) \ No newline at end of file +/* Clown Items + * Contains: + * Soap + * Bike Horns + * Air Horns + * Canned Laughter + */ + +/* + * Soap + */ + +/obj/item/soap + name = "soap" + desc = "A cheap bar of soap. Doesn't smell." + gender = PLURAL + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "soap" + lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + item_flags = NOBLUDGEON + throwforce = 0 + throw_speed = 3 + throw_range = 7 + grind_results = list(/datum/reagent/lye = 10) + var/cleanspeed = 35 //slower than mop + force_string = "robust... against germs" + var/uses = 100 + +/obj/item/soap/ComponentInitialize() + . = ..() + AddComponent(/datum/component/slippery, 80) + +/obj/item/soap/examine(mob/user) + . = ..() + var/max_uses = initial(uses) + var/msg = "It looks like it just came out of the package." + if(uses != max_uses) + var/percentage_left = uses / max_uses + switch(percentage_left) + if(0 to 0.15) + msg = "There's just a tiny bit left of what it used to be, you're not sure it'll last much longer." + if(0.15 to 0.30) + msg = "It's dissolved quite a bit, but there's still some life to it." + if(0.30 to 0.50) + msg = "It's past its prime, but it's definitely still good." + if(0.50 to 0.75) + msg = "It's started to get a little smaller than it used to be, but it'll definitely still last for a while." + else + msg = "It's seen some light use, but it's still pretty fresh." + to_chat(user, "[msg]") + +/obj/item/soap/nanotrasen + desc = "A heavy duty bar of Nanotrasen brand soap. Smells of plasma." + grind_results = list(/datum/reagent/toxin/plasma = 10, /datum/reagent/lye = 10) + icon_state = "soapnt" + cleanspeed = 28 //janitor gets this + uses = 300 + +/obj/item/soap/homemade + desc = "A homemade bar of soap. Smells of... well...." + icon_state = "soapgibs" + cleanspeed = 30 // faster to reward chemists for going to the effort + +/obj/item/soap/deluxe + desc = "A deluxe Waffle Co. brand bar of soap. Smells of high-class luxury." + icon_state = "soapdeluxe" + cleanspeed = 20 //captain gets one of these + +/obj/item/soap/syndie + desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster." + icon_state = "soapsyndie" + cleanspeed = 5 //faster than mop so it is useful for traitors who want to clean crime scenes + +/obj/item/soap/suicide_act(mob/user) + user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!", forced="soap suicide") + user.visible_message("[user] lifts [src] to [user.p_their()] mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!") + new /obj/effect/particle_effect/foam(loc) + return (TOXLOSS) + +/obj/item/soap/proc/decreaseUses(mob/user) + uses-- + if(uses <= 0) + to_chat(user, "[src] crumbles into tiny bits!") + qdel(src) + +/obj/item/soap/afterattack(atom/target, mob/user, proximity) + . = ..() + if(!proximity || !check_allowed_items(target)) + return + //I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing. + //So this is a workaround. This also makes more sense from an IC standpoint. ~Carn + if(user.client && ((target in user.client.screen) && !user.is_holding(target))) + to_chat(user, "You need to take that [target.name] off before cleaning it!") + else if(istype(target, /obj/effect/decal/cleanable)) + user.visible_message("[user] begins to scrub \the [target.name] out with [src].", "You begin to scrub \the [target.name] out with [src]...") + if(do_after(user, src.cleanspeed, target = target)) + to_chat(user, "You scrub \the [target.name] out.") + qdel(target) + decreaseUses(user) + + else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) + var/mob/living/carbon/human/H = user + if(user.zone_selected == "mouth") + user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!", "You wash \the [target]'s mouth out with [src.name]!") //washes mouth out with soap sounds better than 'the soap' here + H.lip_style = null //removes lipstick + H.adjust_hygiene(5) //it kinda works i guess + else + user.visible_message("\the [user] washes \the [target] with [src.name]!", "You wash \the [target] with [src.name]!") + H.adjust_hygiene(20) + H.update_body() + decreaseUses(user) + return + else if(istype(target, /obj/structure/window)) + user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") + if(do_after(user, src.cleanspeed, target = target)) + to_chat(user, "You clean \the [target.name].") + target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) + target.set_opacity(initial(target.opacity)) + decreaseUses(user) + else + user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") + if(do_after(user, src.cleanspeed, target = target)) + to_chat(user, "You clean \the [target.name].") + for(var/obj/effect/decal/cleanable/C in target) + qdel(C) + target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) + SEND_SIGNAL(target, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) + target.wash_cream() + decreaseUses(user) + return + + +/* + * Bike Horns + */ + +/obj/item/bikehorn + name = "bike horn" + desc = "A horn off of a bicycle." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "bike_horn" + item_state = "bike_horn" + lefthand_file = 'icons/mob/inhands/equipment/horns_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/horns_righthand.dmi' + throwforce = 0 + hitsound = null //To prevent tap.ogg playing, as the item lacks of force + w_class = WEIGHT_CLASS_TINY + slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT + throw_speed = 3 + throw_range = 7 + attack_verb = list("HONKED") + var/component = /datum/component/squeak/bikehorn + +/obj/item/bikehorn/Initialize() + . = ..() + AddComponent(component, 50) + +/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk) + return ..() + +/obj/item/bikehorn/suicide_act(mob/user) + user.visible_message("[user] solemnly points [src] at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") + playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE) + return (BRUTELOSS) + +//air horn +/obj/item/bikehorn/airhorn + name = "air horn" + desc = "Damn son, where'd you find this?" + icon_state = "air_horn" + component = /datum/component/squeak/airhorn + +//golden bikehorn +/obj/item/bikehorn/golden + name = "golden bike horn" + desc = "Golden? Clearly, it's made with bananium! Honk!" + icon_state = "gold_horn" + item_state = "gold_horn" + var/flip_cooldown = 0 + +/obj/item/bikehorn/golden/attack() + if(flip_cooldown < world.time) + flip_mobs() + return ..() + +/obj/item/bikehorn/golden/attack_self(mob/user) + if(flip_cooldown < world.time) + flip_mobs() + ..() + +/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) + var/turf/T = get_turf(src) + for(M in ohearers(7, T)) + if(ishuman(M) && M.can_hear()) + var/mob/living/carbon/human/H = M + if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) + continue + M.emote("flip") + flip_cooldown = world.time + 7 + +//canned laughter +/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter + name = "Canned Laughter" + desc = "Just looking at this makes you want to giggle." + icon_state = "laughter" + list_reagents = list(/datum/reagent/consumable/laughter = 50) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 79bb99f634bf..a0736f0a23f6 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -62,7 +62,7 @@ var/edible = TRUE // That doesn't mean eating it is a good idea - var/list/reagent_contents = list("nutriment" = 1) + var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 1) // If the user can toggle the colour, a la vanilla spraycan var/can_change_colour = FALSE @@ -445,63 +445,63 @@ icon_state = "crayonred" paint_color = "#DA0000" item_color = "red" - reagent_contents = list("nutriment" = 1, "redcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1) /obj/item/toy/crayon/orange icon_state = "crayonorange" paint_color = "#FF9300" item_color = "orange" - reagent_contents = list("nutriment" = 1, "orangecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1) /obj/item/toy/crayon/yellow icon_state = "crayonyellow" paint_color = "#FFF200" item_color = "yellow" - reagent_contents = list("nutriment" = 1, "yellowcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1) /obj/item/toy/crayon/green icon_state = "crayongreen" paint_color = "#A8E61D" item_color = "green" - reagent_contents = list("nutriment" = 1, "greencrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1) /obj/item/toy/crayon/blue icon_state = "crayonblue" paint_color = "#00B7EF" item_color = "blue" - reagent_contents = list("nutriment" = 1, "bluecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1) /obj/item/toy/crayon/purple icon_state = "crayonpurple" paint_color = "#DA00FF" item_color = "purple" - reagent_contents = list("nutriment" = 1, "purplecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1) /obj/item/toy/crayon/black icon_state = "crayonblack" paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black. item_color = "black" - reagent_contents = list("nutriment" = 1, "blackcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1) /obj/item/toy/crayon/white icon_state = "crayonwhite" paint_color = "#FFFFFF" item_color = "white" - reagent_contents = list("nutriment" = 1, "whitecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1) /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." paint_color = "#FFFFFF" item_color = "mime" - reagent_contents = list("nutriment" = 1, "invisiblecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1) charges = -1 /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" paint_color = "#FFF000" item_color = "rainbow" - reagent_contents = list("nutriment" = 1, "colorful_reagent" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1) drawtype = RANDOM_ANY // just the default starter. charges = -1 @@ -580,7 +580,7 @@ self_contained = FALSE // Don't disappear when they're empty can_change_colour = TRUE - reagent_contents = list("welding_fuel" = 1, "ethanol" = 1) + reagent_contents = list(/datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1) pre_noise = TRUE post_noise = FALSE @@ -731,7 +731,7 @@ volume_multiplier = 25 charges = 100 - reagent_contents = list("clf3" = 1) + reagent_contents = list(/datum/reagent/clf3 = 1) actually_paints = FALSE paint_color = "#000000" @@ -743,7 +743,7 @@ icon_uncapped = "clowncan2" use_overlays = FALSE - reagent_contents = list("lube" = 1, "banana" = 1) + reagent_contents = list(/datum/reagent/lube = 1, /datum/reagent/consumable/banana = 1) volume_multiplier = 5 /obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) @@ -762,7 +762,7 @@ pre_noise = FALSE post_noise = FALSE - reagent_contents = list("nothing" = 1, "mutetoxin" = 1) + reagent_contents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/toxin/mutetoxin = 1) #undef RANDOM_GRAFFITI #undef RANDOM_LETTER diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 770d9bb0e993..d31e349f0cde 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -260,7 +260,7 @@ var/produce_heat = 1500 heat = 1000 light_color = LIGHT_COLOR_FLARE - grind_results = list("sulfur" = 15) + grind_results = list(/datum/reagent/sulfur = 15) /obj/item/flashlight/flare/Initialize() . = ..() @@ -429,7 +429,7 @@ color = LIGHT_COLOR_GREEN icon_state = "glowstick" item_state = "glowstick" - grind_results = list("phenol" = 15, "hydrogen" = 10, "oxygen" = 5) //Meth-in-a-stick + grind_results = list(/datum/reagent/phenol = 15, /datum/reagent/hydrogen = 10, /datum/reagent/oxygen = 5) //Meth-in-a-stick var/fuel = 0 /obj/item/flashlight/glowstick/Initialize() diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 5c727ed634bd..dfdf8d892368 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -330,7 +330,7 @@ GENE SCANNER to_chat(user, "Subject is bleeding!") var/blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL)*100) var/blood_type = C.dna.blood_type - if(blood_id != "blood")//special blood substance + if(blood_id != /datum/reagent/blood)//special blood substance var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id] if(R) blood_type = R.name @@ -406,7 +406,7 @@ GENE SCANNER throw_range = 7 tool_behaviour = TOOL_ANALYZER materials = list(MAT_METAL=30, MAT_GLASS=20) - grind_results = list("mercury" = 5, "iron" = 5, "silicon" = 5) + grind_results = list(/datum/reagent/mercury = 5, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) var/cooldown = FALSE var/cooldown_time = 250 var/accuracy // 0 is the best accuracy. diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 315bcea55051..1c0e012be988 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -17,7 +17,7 @@ resistance_flags = FIRE_PROOF var/max_water = 50 var/last_use = 1 - var/chem = "water" + var/chem = /datum/reagent/water var/safety = TRUE var/refilling = FALSE var/tanktype = /obj/structure/reagent_dispensers/watertank @@ -55,7 +55,7 @@ icon_state = "foam_extinguisher0" //item_state = "foam_extinguisher" needs sprite dog_fashion = null - chem = "firefighting_foam" + chem = /datum/reagent/firefighting_foam tanktype = /obj/structure/reagent_dispensers/foamtank sprite_name = "foam_extinguisher" precision = TRUE diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index eec1624048f4..0603db6274f9 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -343,9 +343,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminium", 30) - B2.reagents.add_reagent("foaming_agent", 10) - B2.reagents.add_reagent("facid", 10) + B1.reagents.add_reagent(/datum/reagent/aluminium, 30) + B2.reagents.add_reagent(/datum/reagent/foaming_agent, 10) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 10) beakers += B1 beakers += B2 @@ -361,9 +361,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminium", 75) - B2.reagents.add_reagent("smart_foaming_agent", 25) - B2.reagents.add_reagent("facid", 25) + B1.reagents.add_reagent(/datum/reagent/aluminium, 75) + B2.reagents.add_reagent(/datum/reagent/smart_foaming_agent, 25) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 25) beakers += B1 beakers += B2 @@ -379,9 +379,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("stable_plasma", 25) - B2.reagents.add_reagent("sacid", 25) + B1.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/stable_plasma, 25) + B2.reagents.add_reagent(/datum/reagent/toxin/acid, 25) beakers += B1 beakers += B2 @@ -397,10 +397,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("plantbgone", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/toxin/plantbgone, 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -416,9 +416,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("water", 40) - B2.reagents.add_reagent("cleaner", 10) + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) + B2.reagents.add_reagent(/datum/reagent/water, 40) + B2.reagents.add_reagent(/datum/reagent/space_cleaner, 10) beakers += B1 beakers += B2 @@ -434,9 +434,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("water", 40) - B2.reagents.add_reagent("ez_clean", 60) //ensures a t h i c c distribution + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) + B2.reagents.add_reagent(/datum/reagent/water, 40) + B2.reagents.add_reagent(/datum/reagent/space_cleaner/ez_clean, 60) //ensures a t h i c c distribution beakers += B1 beakers += B2 @@ -453,10 +453,10 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("condensedcapsaicin", 60) - B1.reagents.add_reagent("potassium", 40) - B2.reagents.add_reagent("phosphorus", 40) - B2.reagents.add_reagent("sugar", 40) + B1.reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 60) + B1.reagents.add_reagent(/datum/reagent/potassium, 40) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 40) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 40) beakers += B1 beakers += B2 @@ -472,11 +472,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("facid", 290) - B1.reagents.add_reagent("potassium", 10) - B2.reagents.add_reagent("phosphorus", 10) - B2.reagents.add_reagent("sugar", 10) - B2.reagents.add_reagent("facid", 280) + B1.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 290) + B1.reagents.add_reagent(/datum/reagent/potassium, 10) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 10) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 10) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 280) beakers += B1 beakers += B2 @@ -492,10 +492,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("colorful_reagent", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/colorful_reagent, 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -504,7 +504,7 @@ name = "generic glitter grenade" desc = "You shouldn't see this description." stage = READY - var/glitter_type = "glitter" + var/glitter_type = /datum/reagent/glitter /obj/item/grenade/chem_grenade/glitter/Initialize() . = ..() @@ -512,9 +512,9 @@ var/obj/item/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent(glitter_type, 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -522,17 +522,17 @@ /obj/item/grenade/chem_grenade/glitter/pink name = "pink glitter bomb" desc = "For that HOT glittery look." - glitter_type = "pink_glitter" + glitter_type = /datum/reagent/glitter/pink /obj/item/grenade/chem_grenade/glitter/blue name = "blue glitter bomb" desc = "For that COOL glittery look." - glitter_type = "blue_glitter" + glitter_type = /datum/reagent/glitter/blue /obj/item/grenade/chem_grenade/glitter/white name = "white glitter bomb" desc = "For that somnolent glittery look." - glitter_type = "white_glitter" + glitter_type = /datum/reagent/glitter/white /obj/item/grenade/chem_grenade/clf3 name = "clf3 grenade" @@ -544,10 +544,10 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 250) - B1.reagents.add_reagent("clf3", 50) - B2.reagents.add_reagent("water", 250) - B2.reagents.add_reagent("clf3", 50) + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 250) + B1.reagents.add_reagent(/datum/reagent/clf3, 50) + B2.reagents.add_reagent(/datum/reagent/water, 250) + B2.reagents.add_reagent(/datum/reagent/clf3, 50) beakers += B1 beakers += B2 @@ -562,13 +562,13 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("cryptobiolin", 75) - B1.reagents.add_reagent("water", 50) - B1.reagents.add_reagent("mutetoxin", 50) - B1.reagents.add_reagent("spore", 75) - B1.reagents.add_reagent("itching_powder", 50) - B2.reagents.add_reagent("fluorosurfactant", 150) - B2.reagents.add_reagent("mutagen", 150) + B1.reagents.add_reagent(/datum/reagent/cryptobiolin, 75) + B1.reagents.add_reagent(/datum/reagent/water, 50) + B1.reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 50) + B1.reagents.add_reagent(/datum/reagent/toxin/spore, 75) + B1.reagents.add_reagent(/datum/reagent/toxin/itching_powder, 50) + B2.reagents.add_reagent(/datum/reagent/fluorosurfactant, 150) + B2.reagents.add_reagent(/datum/reagent/toxin/mutagen, 150) beakers += B1 beakers += B2 @@ -582,11 +582,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("potassium", 50) - B1.reagents.add_reagent("phosphorus", 50) - B1.reagents.add_reagent("fungalspores", 200) - B2.reagents.add_reagent("blood", 250) - B2.reagents.add_reagent("sugar", 50) + B1.reagents.add_reagent(/datum/reagent/potassium, 50) + B1.reagents.add_reagent(/datum/reagent/phosphorus, 50) + B1.reagents.add_reagent(/datum/reagent/fungalspores, 200) + B2.reagents.add_reagent(/datum/reagent/blood, 250) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 50) beakers += B1 beakers += B2 @@ -602,8 +602,8 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("potassium", 100) - B2.reagents.add_reagent("holywater", 100) + B1.reagents.add_reagent(/datum/reagent/potassium, 100) + B2.reagents.add_reagent(/datum/reagent/water/holywater, 100) beakers += B1 beakers += B2 diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm index 9947e38af95b..920640145d79 100644 --- a/code/game/objects/items/grenades/clusterbuster.dm +++ b/code/game/objects/items/grenades/clusterbuster.dm @@ -94,11 +94,11 @@ var/chem = pick(slime_chems) var/amount = 5 if(chem == "lesser plasma") //In the rare case we get another rainbow. - chem = "plasma" + chem = /datum/reagent/toxin/plasma amount = 4 if(chem == "holy water and uranium") - chem = "uranium" - reagents.add_reagent("holywater") + chem = /datum/reagent/uranium + reagents.add_reagent(/datum/reagent/water/holywater) reagents.add_reagent(chem,amount) /obj/effect/payload_spawner/random_slime/spawn_payload(type, numspawned) diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index ed4a3ae12674..41711842cc65 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -77,7 +77,7 @@ L.SetImmobilized(0) L.SetParalyzed(0) L.SetUnconscious(0) - L.reagents.add_reagent("muscle_stimulant", CLAMP(5 - L.reagents.get_reagent_amount("muscle_stimulant"), 0, 5)) //If you don't have legs or get bola'd, tough luck! + L.reagents.add_reagent(/datum/reagent/medicine/muscle_stimulant, CLAMP(5 - L.reagents.get_reagent_amount(/datum/reagent/medicine/muscle_stimulant), 0, 5)) //If you don't have legs or get bola'd, tough luck! colorize(L) /obj/item/hot_potato/examine(mob/user) diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 20383c6713bf..a2653e359dd8 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -43,9 +43,9 @@ imp_in.set_resting(FALSE) imp_in.update_mobility() - imp_in.reagents.add_reagent("synaptizine", 10) - imp_in.reagents.add_reagent("omnizine", 10) - imp_in.reagents.add_reagent("stimulants", 10) + imp_in.reagents.add_reagent(/datum/reagent/medicine/synaptizine, 10) + imp_in.reagents.add_reagent(/datum/reagent/medicine/omnizine, 10) + imp_in.reagents.add_reagent(/datum/reagent/medicine/stimulants, 10) if(!uses) qdel(src) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index c0ede0f9c625..88e4590656e9 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -41,14 +41,14 @@ if(forkload) if(M == user) M.visible_message("[user] eats a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.id, 1) + M.reagents.add_reagent(forkload.type, 1) else M.visible_message("[user] is trying to feed [M] a delicious forkful of omelette!") //yogs start if(!do_mob(user, M)) return - log_combat(user, M, "fed omelette", forkload.id) //yogs end + log_combat(user, M, "fed omelette", forkload.type) //yogs end M.visible_message("[user] feeds [M] a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.id, 1) + M.reagents.add_reagent(forkload.type, 1) icon_state = "fork" forkload = null diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 12b9b3bb8a3f..697473cd9e81 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -25,7 +25,7 @@ /obj/item/mop/proc/clean(turf/A) - if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) + if(reagents.has_reagent(/datum/reagent/water, 1) || reagents.has_reagent(/datum/reagent/water/holywater, 1) || reagents.has_reagent(/datum/reagent/consumable/ethanol/vodka, 1) || reagents.has_reagent(/datum/reagent/space_cleaner, 1)) SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) for(var/obj/effect/O in A) if(is_cleanable(O)) @@ -89,7 +89,7 @@ mopspeed = 8 var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. var/refill_rate = 1 //Rate per process() tick mop refills itself - var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING + var/refill_reagent = /datum/reagent/water //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING /obj/item/mop/advanced/New() ..() diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 40ea0c28517d..303358176686 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -116,7 +116,7 @@ /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) - H.reagents.add_reagent("inaprovaline", 5) + H.reagents.add_reagent(/datum/reagent/medicine/inaprovaline, 5) /obj/item/banner/science name = "sciencia banner" diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index f8de45585fd0..193121608e3a 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -396,7 +396,7 @@ if(DISPENSE_ICECREAM_MODE) L = new /obj/item/reagent_containers/food/snacks/icecream(T) var/obj/item/reagent_containers/food/snacks/icecream/I = L - I.add_ice_cream("vanilla") + I.add_ice_cream(/datum/reagent/consumable/vanilla) I.desc = "Eat the ice cream." var/into_hands = FALSE diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index da96fe33fb9a..4035365dfddc 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -426,9 +426,9 @@ name = "medical cyborg expanded hypospray" desc = "An upgrade to the Medical module's hypospray, allowing it \ to treat a wider range of conditions and problems." - additional_reagents = list("mannitol", "oculine", "inacusiate", - "mutadone", "haloperidol", "oxandrolone", "sal_acid", "rezadone", - "pen_acid") + additional_reagents = list(/datum/reagent/medicine/mannitol, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, + /datum/reagent/medicine/mutadone, /datum/reagent/medicine/haloperidol, /datum/reagent/medicine/oxandrolone, /datum/reagent/medicine/sal_acid, /datum/reagent/medicine/rezadone, + /datum/reagent/medicine/pen_acid) /obj/item/borg/upgrade/piercing_hypospray name = "cyborg piercing hypospray" diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 2d494ca186bb..acfc6100d22c 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -10,7 +10,7 @@ points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal - grind_results = list("bluespace" = 20) + grind_results = list(/datum/reagent/bluespace = 20) /obj/item/stack/ore/bluespace_crystal/refined name = "refined bluespace crystal" @@ -53,7 +53,7 @@ blink_range = 4 // Not as good as the organic stuff! points = 0 //nice try refined_type = null - grind_results = list("bluespace" = 10, "silicon" = 20) + grind_results = list(/datum/reagent/bluespace = 10, /datum/reagent/silicon = 20) //Polycrystals, aka stacks /obj/item/stack/sheet/bluespace_crystal @@ -66,7 +66,7 @@ materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") novariants = TRUE - grind_results = list("bluespace" = 20) + grind_results = list(/datum/reagent/bluespace = 20) point_value = 30 var/crystal_type = /obj/item/stack/ore/bluespace_crystal/refined diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index a524bff23fb2..61ee6d58b9fc 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -111,7 +111,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' heal_brute = 40 self_delay = 20 - grind_results = list("styptic_powder" = 10) + grind_results = list(/datum/reagent/medicine/styptic_powder = 10) /obj/item/stack/medical/bruise_pack/suicide_act(mob/user) user.visible_message("[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -166,7 +166,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' heal_burn = 40 self_delay = 20 - grind_results = list("silver_sulfadiazine" = 10) + grind_results = list(/datum/reagent/medicine/silver_sulfadiazine = 10) /obj/item/stack/medical/ointment/suicide_act(mob/living/user) user.visible_message("[user] is squeezing \the [src] into [user.p_their()] mouth! [user.p_do(TRUE)]n't [user.p_they()] know that stuff is toxic?") diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 417fa696b62a..49b9caeca212 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -23,7 +23,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/glass - grind_results = list("silicon" = 20) + grind_results = list(/datum/reagent/silicon = 20) point_value = 1 /obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user) @@ -98,7 +98,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmaglass - grind_results = list("silicon" = 20, "plasma" = 10) + grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10) /obj/item/stack/sheet/plasmaglass/fifty amount = 50 @@ -149,7 +149,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/rglass - grind_results = list("silicon" = 20, "iron" = 10) + grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10) point_value = 4 /obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params) @@ -192,7 +192,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmarglass - grind_results = list("silicon" = 20, "plasma" = 10, "iron" = 10) + grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10) point_value = 23 /obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index c2c6015747e7..c42cfbe571b9 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -11,7 +11,7 @@ throw_range = 7 flags_1 = CONDUCT_1 max_amount = 60 - grind_results = list("silicon" = 20, "copper" = 5) + grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/copper = 5) /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/stack/sheet/metal)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 82c394d4c132..b23f36e6bc69 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -105,7 +105,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ sheettype = "diamond" materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) point_value = 25 merge_type = /obj/item/stack/sheet/mineral/diamond @@ -132,7 +132,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ sheettype = "uranium" materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list("uranium" = 20) + grind_results = list(/datum/reagent/uranium = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/uranium @@ -159,7 +159,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ resistance_flags = FLAMMABLE max_integrity = 100 materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) - grind_results = list("plasma" = 20) + grind_results = list(/datum/reagent/toxin/plasma = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/plasma @@ -200,7 +200,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ singular_name = "gold bar" sheettype = "gold" materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) - grind_results = list("gold" = 20) + grind_results = list(/datum/reagent/gold = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/gold @@ -229,7 +229,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ singular_name = "silver bar" sheettype = "silver" materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) - grind_results = list("silver" = 20) + grind_results = list(/datum/reagent/silver = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/silver @@ -258,7 +258,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ sheettype = "bananium" materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list("banana" = 20) + grind_results = list(/datum/reagent/consumable/banana = 20) point_value = 50 merge_type = /obj/item/stack/sheet/mineral/bananium @@ -341,7 +341,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ singular_name = "snow block" force = 1 throwforce = 2 - grind_results = list("ice" = 20) + grind_results = list(/datum/reagent/consumable/ice = 20) merge_type = /obj/item/stack/sheet/mineral/snow GLOBAL_LIST_INIT(snow_recipes, list ( \ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index dee65ed18c48..d9bc91dc0864 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -103,7 +103,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/metal - grind_results = list("iron" = 20) + grind_results = list(/datum/reagent/iron = 20) point_value = 2 /obj/item/stack/sheet/metal/ratvar_act() @@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel - grind_results = list("iron" = 20, "plasma" = 20) + grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) point_value = 23 /obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE) @@ -225,7 +225,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/wood novariants = TRUE - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) /obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.wood_recipes @@ -419,7 +419,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal novariants = TRUE - grind_results = list("iron" = 5, "blood" = 15) + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/blood = 15) /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -486,7 +486,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/clockwork novariants = FALSE - grind_results = list("iron" = 5, "teslium" = 15) + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/teslium = 15) merge_type = /obj/item/stack/tile/brass /obj/item/stack/tile/brass/narsie_act() @@ -536,7 +536,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/bronze novariants = FALSE - grind_results = list("iron" = 5, "copper" = 3) //we have no "tin" reagent so this is the closest thing + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/copper = 3) //we have no "tin" reagent so this is the closest thing merge_type = /obj/item/stack/tile/bronze /obj/item/stack/tile/bronze/attack_self(mob/living/user) @@ -589,7 +589,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 - grind_results = list("carbon" = 10) + grind_results = list(/datum/reagent/carbon = 10) merge_type = /obj/item/stack/sheet/bone GLOBAL_LIST_INIT(plastic_recipes, list( diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 6d1f1b41a1bd..08e144168381 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -171,16 +171,16 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", for(var/obj/effect/rune/R in orange(2,user)) R.invisibility = 0 if(user.mind && (user.mind.isholy)) - if(A.reagents && A.reagents.has_reagent("water")) // blesses all the water in the holder + if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder to_chat(user, "You bless [A].") - var/water2holy = A.reagents.get_reagent_amount("water") - A.reagents.del_reagent("water") - A.reagents.add_reagent("holywater",water2holy) - if(A.reagents && A.reagents.has_reagent("unholywater")) // yeah yeah, copy pasted code - sue me + var/water2holy = A.reagents.get_reagent_amount(/datum/reagent/water) + A.reagents.del_reagent(/datum/reagent/water) + A.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) + if(A.reagents && A.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me to_chat(user, "You purify [A].") - var/unholy2clean = A.reagents.get_reagent_amount("unholywater") - A.reagents.del_reagent("unholywater") - A.reagents.add_reagent("holywater",unholy2clean) + var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) + A.reagents.del_reagent(/datum/reagent/fuel/unholywater) + A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) if(istype(A, /obj/item/storage/book/bible) && !istype(A, /obj/item/storage/book/bible/syndicate)) to_chat(user, "You purify [A], conforming it to your belief.") var/obj/item/storage/book/bible/B = A diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 4e975ccb7cb3..76e00b98b661 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -149,7 +149,7 @@ /obj/item/watertank/janitor/Initialize() . = ..() - reagents.add_reagent("cleaner", 500) + reagents.add_reagent(/datum/reagent/space_cleaner, 500) /obj/item/reagent_containers/spray/mister/janitor name = "janitor spray nozzle" @@ -185,7 +185,7 @@ /obj/item/watertank/atmos/Initialize() . = ..() - reagents.add_reagent("water", 200) + reagents.add_reagent(/datum/reagent/water, 200) /obj/item/watertank/atmos/make_noz() return new /obj/item/extinguisher/mini/nozzle(src) @@ -437,13 +437,13 @@ /obj/item/watertank/op/Initialize() . = ..() - reagents.add_reagent("mutagen",350) - reagents.add_reagent("napalm",125) - reagents.add_reagent("welding_fuel",125) - reagents.add_reagent("clf3",300) - reagents.add_reagent("cryptobiolin",350) - reagents.add_reagent("plasma",250) - reagents.add_reagent("condensedcapsaicin",500) + reagents.add_reagent(/datum/reagent/toxin/mutagen,350) + reagents.add_reagent(/datum/reagent/napalm,125) + reagents.add_reagent(/datum/reagent/fuel,125) + reagents.add_reagent(/datum/reagent/clf3,300) + reagents.add_reagent(/datum/reagent/cryptobiolin,350) + reagents.add_reagent(/datum/reagent/toxin/plasma,250) + reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin,500) /obj/item/reagent_containers/spray/mister/op desc = "A mister nozzle attached to several extended water tanks. It suspiciously has a compressor in the system and is labelled entirely in New Cyrillic." diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 8dcf434c47f0..88861e5fb0f9 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -37,7 +37,7 @@ /obj/item/weldingtool/Initialize() . = ..() create_reagents(max_fuel) - reagents.add_reagent("welding_fuel", max_fuel) + reagents.add_reagent(/datum/reagent/fuel, max_fuel) update_icon() @@ -97,7 +97,7 @@ /obj/item/weldingtool/proc/explode() var/turf/T = get_turf(loc) - var/plasmaAmount = reagents.get_reagent_amount("plasma") + var/plasmaAmount = reagents.get_reagent_amount(/datum/reagent/toxin/plasma) dyn_explosion(T, plasmaAmount/5)//20 plasma in a standard welder has a 4 power explosion. no breaches, but enough to kill/dismember holder qdel(src) @@ -142,7 +142,7 @@ /obj/item/weldingtool/attack_self(mob/user) - if(src.reagents.has_reagent("plasma")) + if(src.reagents.has_reagent(/datum/reagent/toxin/plasma)) message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].") explode() switched_on(user) @@ -154,7 +154,7 @@ // Returns the amount of fuel in the welder /obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount("welding_fuel") + return reagents.get_reagent_amount(/datum/reagent/fuel) // Uses fuel from the welding tool. @@ -165,7 +165,7 @@ if(used) burned_fuel_for = 0 if(get_fuel() >= used) - reagents.remove_reagent("welding_fuel", used) + reagents.remove_reagent(/datum/reagent/fuel, used) check_fuel() return TRUE else @@ -336,7 +336,7 @@ /obj/item/weldingtool/abductor/process() if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) ..() /obj/item/weldingtool/hugetank @@ -373,6 +373,6 @@ ..() if(get_fuel() < max_fuel && nextrefueltick < world.time) nextrefueltick = world.time + 10 - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index ffa0899ad7fe..ebebb8a4bb95 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -70,7 +70,7 @@ name = "crushed can" icon_state = "cola" resistance_flags = NONE - grind_results = list("aluminium" = 10) + grind_results = list(/datum/reagent/aluminium = 10) /obj/item/trash/attack(mob/M, mob/living/user) return @@ -80,7 +80,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "slag" desc = "Someone's gotten on the naughty list." - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) /obj/item/trash/coal/burn() visible_message("[src] fuses into a diamond! Someone wasn't so naughty after all...") diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index 7587a8ad5d17..5ce34d4476fd 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -39,7 +39,7 @@ return last_process = world.time to_chat(user, "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.") - user.reagents.add_reagent("godblood",20) + user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,20) update_icon() addtimer(CALLBACK(src, .proc/update_icon), time_between_uses) diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 0896a3960812..093c12cc0111 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -12,7 +12,7 @@ var/on = FALSE var/current_temperature = SHOWER_NORMAL var/datum/looping_sound/showering/soundloop - var/reagent_id = "water" + var/reagent_id = /datum/reagent/water var/reaction_volume = 200 /obj/machinery/shower/Initialize() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 7df1476d5671..12d246565fe3 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -101,7 +101,7 @@ if (!open) return var/obj/item/reagent_containers/RG = I - RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) to_chat(user, "You fill [RG] from [src]. Gross.") else return ..() @@ -199,7 +199,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "urinalcake" w_class = WEIGHT_CLASS_TINY - list_reagents = list("chlorine" = 3, "ammonia" = 1) + list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1) foodtype = TOXIC | GROSS /obj/item/reagent_containers/food/snacks/urinalcake/attack_self(mob/living/user) @@ -222,7 +222,7 @@ desc = "A sink used for washing one's hands and face." anchored = TRUE var/busy = FALSE //Something's being washed at the moment - var/dispensedreagent = "water" // for whenever plumbing happens + var/dispensedreagent = /datum/reagent/water // for whenever plumbing happens /obj/structure/sink/attack_hand(mob/living/user) . = ..() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 3861a081bec6..c288838acca2 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -545,7 +545,7 @@ if(istype(R, /datum/reagent/consumable)) var/datum/reagent/consumable/nutri_check = R if(nutri_check.nutriment_factor >0) - M.reagents.remove_reagent(R.id,R.volume) + M.reagents.remove_reagent(R.type,R.volume) //Whatever happens after high temperature fire dies out or thermite reaction works. //Should return new turf diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index b3c9df7ec376..fdccee723ad7 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -755,7 +755,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon_state = "bed" can_buckle = 1 - var/static/list/injected_reagents = list("corazone") + var/static/list/injected_reagents = list(/datum/reagent/medicine/corazone) /obj/structure/table/optable/abductor/Crossed(atom/movable/AM) . = ..() diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index 373d4b10893f..295069b7b8bc 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -319,15 +319,8 @@ /obj/item/organ/heart/gland/chem/Initialize() . = ..() - for(var/X in subtypesof(/datum/reagent/drug)) - var/datum/reagent/R = X - possible_reagents += initial(R.id) - for(var/X in subtypesof(/datum/reagent/medicine)) - var/datum/reagent/R = X - possible_reagents += initial(R.id) - for(var/X in typesof(/datum/reagent/toxin)) - var/datum/reagent/R = X - possible_reagents += initial(R.id) + for(var/R in subtypesof(/datum/reagent/drug) + subtypesof(/datum/reagent/medicine) + typesof(/datum/reagent/toxin)) + possible_reagents += R /obj/item/organ/heart/gland/chem/activate() var/chem_to_add = pick(possible_reagents) diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index 464a0b7575bf..2f17071af84e 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -57,7 +57,7 @@ return ..() /mob/living/simple_animal/hostile/blob/proc/blob_chat(msg) - var/spanned_message = say_quote(msg, get_spans()) + var/spanned_message = say_quote(msg) var/rendered = "\[Blob Telepathy\] [real_name] [spanned_message]" for(var/M in GLOB.mob_list) if(isovermind(M) || istype(M, /mob/living/simple_animal/hostile/blob)) @@ -147,7 +147,7 @@ if(overmind && overmind.blobstrain) overmind.blobstrain.on_sporedeath(src) else - reagents.add_reagent("spore", 10) + reagents.add_reagent(/datum/reagent/toxin/spore, 10) // Attach the smoke spreader and setup/start it. S.attach(location) diff --git a/code/modules/antagonists/blob/blobstrains/_reagent.dm b/code/modules/antagonists/blob/blobstrains/_reagent.dm index 71e12de1904e..a18bf49c9015 100644 --- a/code/modules/antagonists/blob/blobstrains/_reagent.dm +++ b/code/modules/antagonists/blob/blobstrains/_reagent.dm @@ -16,7 +16,7 @@ reagent.reaction_mob(L, VAPOR, 20, 0, mob_protection, overmind)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. /datum/blobstrain/reagent/on_sporedeath(mob/living/spore) - spore.reagents.add_reagent(reagent.id, 10) + spore.reagents.add_reagent(reagent.type, 10) // These can only be applied by blobs. They are what (reagent) blobs are made out of. /datum/reagent/blob diff --git a/code/modules/antagonists/blob/blobstrains/blazing_oil.dm b/code/modules/antagonists/blob/blobstrains/blazing_oil.dm index 9cddb901a5cd..df7ca60b9d20 100644 --- a/code/modules/antagonists/blob/blobstrains/blazing_oil.dm +++ b/code/modules/antagonists/blob/blobstrains/blazing_oil.dm @@ -28,7 +28,6 @@ /datum/reagent/blob/blazing_oil name = "Blazing Oil" - id = "blazing_oil" taste_description = "burning oil" color = "#B68D00" diff --git a/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm b/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm index 09096c06a792..fe054f69e01f 100644 --- a/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm +++ b/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm @@ -12,7 +12,6 @@ /datum/reagent/blob/cryogenic_poison name = "Cryogenic Poison" - id = "cryogenic_poison" description = "will inject targets with a freezing poison that does high damage over time." color = "#8BA6E9" taste_description = "brain freeze" diff --git a/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm b/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm index 630836c956b6..33918ca057e3 100644 --- a/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm +++ b/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm @@ -22,7 +22,6 @@ /datum/reagent/blob/electromagnetic_web name = "Electromagnetic Web" - id = "electromagnetic_web" taste_description = "pop rocks" color = "#83ECEC" diff --git a/code/modules/antagonists/blob/blobstrains/energized_jelly.dm b/code/modules/antagonists/blob/blobstrains/energized_jelly.dm index 375eda5ef5d9..ea36c6be12cf 100644 --- a/code/modules/antagonists/blob/blobstrains/energized_jelly.dm +++ b/code/modules/antagonists/blob/blobstrains/energized_jelly.dm @@ -23,7 +23,6 @@ /datum/reagent/blob/energized_jelly name = "Energized Jelly" - id = "energized_jelly" taste_description = "gelatin" color = "#EFD65A" diff --git a/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm b/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm index 0832abd416af..cb0b11849211 100644 --- a/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm +++ b/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm @@ -20,7 +20,6 @@ /datum/reagent/blob/explosive_lattice name = "Explosive Lattice" - id = "explosive_lattice" taste_description = "the bomb" color = "#8B2500" diff --git a/code/modules/antagonists/blob/blobstrains/networked_fibers.dm b/code/modules/antagonists/blob/blobstrains/networked_fibers.dm index 31005488c345..06bd0eac4d1d 100644 --- a/code/modules/antagonists/blob/blobstrains/networked_fibers.dm +++ b/code/modules/antagonists/blob/blobstrains/networked_fibers.dm @@ -28,7 +28,6 @@ //does massive brute and burn damage, but can only expand manually /datum/reagent/blob/networked_fibers name = "Networked Fibers" - id = "networked_fibers" taste_description = "efficiency" color = "#CDC0B0" diff --git a/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm b/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm index 399b3bc999bf..fbb570a0e5e4 100644 --- a/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm +++ b/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm @@ -34,7 +34,6 @@ /datum/reagent/blob/pressurized_slime name = "Pressurized Slime" - id = "pressurized_slime" taste_description = "a sponge" color = "#AAAABB" diff --git a/code/modules/antagonists/blob/blobstrains/reactive_spines.dm b/code/modules/antagonists/blob/blobstrains/reactive_spines.dm index 950bc62485ee..69e9b8f6cf15 100644 --- a/code/modules/antagonists/blob/blobstrains/reactive_spines.dm +++ b/code/modules/antagonists/blob/blobstrains/reactive_spines.dm @@ -21,7 +21,6 @@ /datum/reagent/blob/reactive_spines name = "Reactive Spines" - id = "reactive_spines" taste_description = "rock" color = "#9ACD32" diff --git a/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm b/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm index 11e467182a5c..fa12663458ee 100644 --- a/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm +++ b/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm @@ -10,7 +10,6 @@ /datum/reagent/blob/regenerative_materia name = "Regenerative Materia" - id = "regenerative_materia" taste_description = "heaven" color = "#C8A5DC" diff --git a/code/modules/antagonists/blob/blobstrains/replicating_foam.dm b/code/modules/antagonists/blob/blobstrains/replicating_foam.dm index d5dcd8154f58..03d7e2d0ba9d 100644 --- a/code/modules/antagonists/blob/blobstrains/replicating_foam.dm +++ b/code/modules/antagonists/blob/blobstrains/replicating_foam.dm @@ -27,7 +27,6 @@ /datum/reagent/blob/replicating_foam name = "Replicating Foam" - id = "replicating_foam" taste_description = "duplication" color = "#7B5A57" diff --git a/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm b/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm index 4545e8e19680..665c1783301c 100644 --- a/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm +++ b/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm @@ -29,7 +29,6 @@ /datum/reagent/blob/shifting_fragments name = "Shifting Fragments" - id = "shifting_fragments" color = "#C8963C" /datum/reagent/blob/shifting_fragments/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) diff --git a/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm b/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm index 3ee1826c7db2..d0fd74bf5957 100644 --- a/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm +++ b/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm @@ -25,7 +25,6 @@ /datum/reagent/blob/synchronous_mesh name = "Synchronous Mesh" - id = "synchronous_mesh" taste_description = "toxic mold" color = "#65ADA2" diff --git a/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm b/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm index 37dac877d1fd..059363c0c8a7 100644 --- a/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm +++ b/code/modules/antagonists/blob/blobstrains/zombifying_pods.dm @@ -29,7 +29,6 @@ /datum/reagent/blob/zombifying_pods name = "Zombifying Pods" - id = "zombifying_pods" color = "#E88D5D" /datum/reagent/blob/zombifying_pods/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) diff --git a/code/modules/antagonists/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm index 8a6b0dd8a9ea..a332adc9c6e6 100644 --- a/code/modules/antagonists/changeling/powers/adrenaline.dm +++ b/code/modules/antagonists/changeling/powers/adrenaline.dm @@ -18,7 +18,7 @@ user.SetKnockdown(0) user.SetImmobilized(0) user.SetParalyzed(0) - //user.reagents.add_reagent("changelingadrenaline", 10) //yogs - lings no longer get prolonged anti-stun reagents - user.reagents.add_reagent("changelinghaste", 2) //For a really quick burst of speed + user.reagents.add_reagent(/datum/reagent/medicine/changelingadrenaline, 10) + user.reagents.add_reagent(/datum/reagent/medicine/changelinghaste, 2) //For a really quick burst of speed user.adjustStaminaLoss(-75) return TRUE diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 28edff655943..3f15bab46f92 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -57,7 +57,7 @@ target.mind.linglink = 1 target.say("[MODE_TOKEN_CHANGELING] AAAAARRRRGGGGGHHHHH!!") to_chat(target, "You can now communicate in the changeling hivemind, say \"[MODE_TOKEN_CHANGELING] message\" to communicate!") - target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them + target.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 40) // So they don't choke to death while you interrogate them sleep(1800) SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]")) if(!do_mob(user, target, 20)) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index dd693bb9e043..4583c6c5ce76 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -486,7 +486,7 @@ /obj/item/clothing/suit/space/changeling/process() if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.reagents.add_reagent("salbutamol", REAGENTS_METABOLISM) + H.reagents.add_reagent(/datum/reagent/medicine/salbutamol, REAGENTS_METABOLISM) /obj/item/clothing/head/helmet/space/changeling name = "flesh mass" diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm index 7b0b41603fd3..2da5a5d8eede 100644 --- a/code/modules/antagonists/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -26,10 +26,10 @@ C.vomit(0, toxic = TRUE) O.forceMove(get_turf(user)) - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("pen_acid", 20) - user.reagents.add_reagent("antihol", 10) - user.reagents.add_reagent("mannitol", 25) + user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) + user.reagents.add_reagent(/datum/reagent/medicine/pen_acid, 20) + user.reagents.add_reagent(/datum/reagent/medicine/antihol, 10) + user.reagents.add_reagent(/datum/reagent/medicine/mannitol, 25) if(isliving(user)) var/mob/living/L = user diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index 3064f58c8c86..168b66544690 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -246,5 +246,5 @@ /datum/action/changeling/sting/cryo/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "cryo sting") if(target.reagents) - target.reagents.add_reagent("frostoil", 30) + target.reagents.add_reagent(/datum/reagent/consumable/frostoil, 30) return TRUE diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 4ea2e856ce62..e1cc8d7b8298 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -104,7 +104,7 @@ var/burndamage = L.getFireLoss() var/oxydamage = L.getOxyLoss() var/totaldamage = brutedamage + burndamage + oxydamage - if(!totaldamage && (!L.reagents || !L.reagents.has_reagent("holywater"))) + if(!totaldamage && (!L.reagents || !L.reagents.has_reagent(/datum/reagent/water/holywater))) to_chat(ranged_ability_user, "\"[L] is unhurt and untainted.\"") return TRUE @@ -112,7 +112,7 @@ to_chat(ranged_ability_user, "You bathe [L == ranged_ability_user ? "yourself":"[L]"] in Inath-neq's power!") var/targetturf = get_turf(L) - var/has_holy_water = (L.reagents && L.reagents.has_reagent("holywater")) + var/has_holy_water = (L.reagents && L.reagents.has_reagent(/datum/reagent/water/holywater)) var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20 for(var/i in 1 to healseverity) new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1") @@ -133,7 +133,7 @@ playsound(targetturf, 'sound/magic/staff_healing.ogg', 50, 1) if(has_holy_water) - L.reagents.remove_reagent("holywater", 1000) + L.reagents.remove_reagent(/datum/reagent/water/holywater, 1000) remove_ranged_ability() diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 9a546f660f34..8e2257bb5e7b 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -747,7 +747,7 @@ var/turf/T = get_turf(target) if(T) for(var/obj/effect/decal/cleanable/blood/B in view(T, 2)) - if(B.blood_state == "blood") + if(B.blood_state == BLOOD_STATE_HUMAN) if(B.bloodiness == 100) //Bonus for "pristine" bloodpools, also to prevent cheese with footprint spam temp += 30 else @@ -757,9 +757,9 @@ for(var/obj/effect/decal/cleanable/trail_holder/TH in view(T, 2)) qdel(TH) var/obj/item/clothing/shoes/shoecheck = user.shoes - if(shoecheck && shoecheck.bloody_shoes["blood"]) - temp += shoecheck.bloody_shoes["blood"]/20 - shoecheck.bloody_shoes["blood"] = 0 + if(shoecheck && shoecheck.bloody_shoes[/datum/reagent/blood]) + temp += shoecheck.bloody_shoes[/datum/reagent/blood]/20 + shoecheck.bloody_shoes[/datum/reagent/blood] = 0 if(temp) user.Beam(T,icon_state="drainbeam",time=15) new /obj/effect/temp_visual/cult/sparks(get_turf(user)) @@ -815,4 +815,3 @@ else to_chat(user, "You need a free hand for this rite!") qdel(rite) - diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index f504eb669f9a..dbc00b1e52ff 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -486,7 +486,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" color = "#333333" - list_reagents = list("unholywater" = 50) + list_reagents = list(/datum/reagent/fuel/unholywater = 50) /obj/item/shuttle_curse name = "cursed orb" @@ -785,7 +785,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent("unholywater", 4) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+5 < M.maxHealth) @@ -889,7 +889,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent("unholywater", 7) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+15 < M.maxHealth) diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index c623b2646a03..c731edf6109e 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -24,11 +24,11 @@ This file contains the cult dagger and rune list code /obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion + if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount("holywater") - M.reagents.del_reagent("holywater") - M.reagents.add_reagent("unholywater",holy2unholy) + var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater) + M.reagents.del_reagent(/datum/reagent/water/holywater) + M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy) log_combat(user, M, "smacked", src, " removing the holy water from them") return FALSE . = ..() diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index d85f5c4a85fe..04459050d21a 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -389,7 +389,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(BANISH_FORMALDYHIDE) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent("formaldehyde") + return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde) return 0 if(BANISH_RUNES) if(body) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 0673845180f5..56443aab8710 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -519,7 +519,7 @@ /obj/machinery/nuclearbomb/beer/proc/fizzbuzz() var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = src - R.add_reagent("beer", 100) + R.add_reagent(/datum/reagent/consumable/ethanol/beer, 100) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(src), R) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index 01c464864083..496041ac93a1 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -355,7 +355,7 @@ to_chat(H, "You feel [pick("suddenly sick", "a surge of nausea", "like your skin is wrong")].") else if(mob.reagents) - mob.reagents.add_reagent("plasma", 5) + mob.reagents.add_reagent(/datum/reagent/toxin/plasma, 5) else mob.adjustToxLoss(5) for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability. diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 5b89da2e875d..36d0a2ef4d0d 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -5,7 +5,7 @@ spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS cure_text = "Holy water or extensive rest." spread_text = "A burst of unholy energy" - cures = list("holywater") + cures = list(/datum/reagent/water/holywater) cure_chance = 50 //higher chance to cure, because revenants are assholes agent = "Unholy Forces" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 7a34b65d9ba8..d2a0084ebec0 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -12,7 +12,7 @@ /datum/bounty/reagent/applies_to(obj/O) if(!istype(O, /obj/item/reagent_containers)) return FALSE - if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.id)) + if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type)) return FALSE if(O.flags_1 & HOLOGRAM_1) return FALSE @@ -21,7 +21,7 @@ /datum/bounty/reagent/ship(obj/O) if(!applies_to(O)) return - shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.id) + shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) if(shipped_volume > required_volume) shipped_volume = required_volume @@ -29,7 +29,7 @@ if(!istype(other_bounty, /datum/bounty/reagent)) return TRUE var/datum/bounty/reagent/R = other_bounty - return wanted_reagent.id != R.wanted_reagent.id + return wanted_reagent.type != R.wanted_reagent.type /datum/bounty/reagent/simple_drink name = "Simple Drink" @@ -113,7 +113,7 @@ /datum/reagent/consumable/ethanol/peppermint_patty,\ /datum/reagent/consumable/ethanol/aloe,\ /datum/reagent/consumable/pumpkin_latte) - + var/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type name = wanted_reagent.name diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c1ca42342424..d0dcd12cf934 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -62,7 +62,7 @@ /obj/item/reagent_containers/food/snacks/clothing name = "temporary moth clothing snack item" desc = "If you're reading this it means I messed up. This is related to moths eating clothes and I didn't know a better way to do it than making a new food object." - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) tastes = list("dust" = 1, "lint" = 1) foodtype = CLOTH diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index e8f9f51f6abc..37bcd7fdcfb8 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -53,7 +53,7 @@ return var/obj/item/reagent_containers/glass/bucket/bucket = H.get_item_for_held_index(1) - bucket.reagents.add_reagent("water",70) + bucket.reagents.add_reagent(/datum/reagent/water,70) /datum/outfit/laser_tag name = "Laser Tag Red" diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index 8b27e92a8c1a..8cc709dcfeb6 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -96,7 +96,7 @@ icon = 'icons/obj/holiday_misc.dmi' icon_state = "candyheart" desc = "A heart-shaped candy that reads: " - list_reagents = list("sugar" = 2) + list_reagents = list(/datum/reagent/consumable/sugar = 2) junkiness = 5 /obj/item/reagent_containers/food/snacks/candyheart/Initialize() diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 8d82bea02119..e5c4bd8844ca 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -13,9 +13,9 @@ var/list/vents = list() var/randomProbability = 1 var/reagentsAmount = 100 - var/list/saferChems = list("water","carbon","flour","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube","pink_glitter","cryptobiolin", - "plantbgone","blood","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid","mindbreaker","rotatium","bluespace", - "pax","laughter","concentrated_barbers_aid","colorful_reagent","dizzysolution","tiresolution","sodiumchloride","beer","hair_dye","sugar","white_glitter","growthserum") + var/list/saferChems = list(/datum/reagent/water,/datum/reagent/carbon,/datum/reagent/consumable/flour,/datum/reagent/space_cleaner,/datum/reagent/consumable/nutriment,/datum/reagent/consumable/condensedcapsaicin,/datum/reagent/drug/mushroomhallucinogen,/datum/reagent/lube,/datum/reagent/glitter/pink,/datum/reagent/cryptobiolin, + /datum/reagent/toxin/plantbgone,/datum/reagent/blood,/datum/reagent/medicine/charcoal,/datum/reagent/drug/space_drugs,/datum/reagent/medicine/morphine,/datum/reagent/water/holywater,/datum/reagent/consumable/ethanol,/datum/reagent/consumable/hot_coco,/datum/reagent/toxin/acid,/datum/reagent/toxin/mindbreaker,/datum/reagent/toxin/rotatium,/datum/reagent/bluespace, + /datum/reagent/pax,/datum/reagent/consumable/laughter,/datum/reagent/concentrated_barbers_aid,/datum/reagent/colorful_reagent,/datum/reagent/peaceborg/confuse,/datum/reagent/peaceborg/tire,/datum/reagent/consumable/sodiumchloride,/datum/reagent/consumable/ethanol/beer,/datum/reagent/hair_dye,/datum/reagent/consumable/sugar,/datum/reagent/glitter/white,/datum/reagent/growthserum) //needs to be chemid unit checked at some point /datum/round_event/vent_clog/announce() @@ -95,7 +95,7 @@ if(vent && vent.loc) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("beer", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/ethanol/beer, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) diff --git a/code/modules/events/wizard/invincible.dm b/code/modules/events/wizard/invincible.dm index 209bdd26c1c3..6ba9b44ee162 100644 --- a/code/modules/events/wizard/invincible.dm +++ b/code/modules/events/wizard/invincible.dm @@ -8,5 +8,5 @@ /datum/round_event/wizard/invincible/start() for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs) + H.reagents.add_reagent(/datum/reagent/medicine/adminordrazine, 40) //100 ticks of absolute invinciblity (barring gibs) to_chat(H, "You feel invincible, nothing can hurt you!") \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 7f3e3c52bf8c..6298a61d8684 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -195,7 +195,7 @@ name = "robust coffee" desc = "Careful, the beverage you're about to enjoy is extremely hot." icon_state = "coffee" - list_reagents = list("coffee" = 30) + list_reagents = list(/datum/reagent/consumable/coffee = 30) spillable = TRUE resistance_flags = FREEZE_PROOF isGlass = FALSE @@ -205,14 +205,14 @@ desc = "Careful, cold ice, do not chew." custom_price = 5 icon_state = "coffee" - list_reagents = list("ice" = 30) + list_reagents = list(/datum/reagent/consumable/ice = 30) spillable = TRUE isGlass = FALSE /obj/item/reagent_containers/food/drinks/ice/prison name = "dirty ice cup" desc = "Either Nanotrasen's water supply is contaminated, or this machine actually vends lemon, chocolate, and cherry snow cones." - list_reagents = list("ice" = 25, "liquidgibs" = 5) + list_reagents = list(/datum/reagent/consumable/ice = 25, /datum/reagent/liquidgibs = 5) /obj/item/reagent_containers/food/drinks/mug/ // parent type is literally just so empty mug sprites are a thing name = "mug" @@ -230,12 +230,12 @@ /obj/item/reagent_containers/food/drinks/mug/tea name = "Duke Purple tea" desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." - list_reagents = list("tea" = 30) + list_reagents = list(/datum/reagent/consumable/tea = 30) /obj/item/reagent_containers/food/drinks/mug/coco name = "Dutch hot coco" desc = "Made in Space South America." - list_reagents = list("hot_coco" = 30, "sugar" = 5) + list_reagents = list(/datum/reagent/consumable/hot_coco = 15, /datum/reagent/consumable/sugar = 5) foodtype = SUGAR resistance_flags = FREEZE_PROOF @@ -245,7 +245,7 @@ name = "cup ramen" desc = "Just add 5ml of water, self heats! A taste that reminds you of your school years. Now new with salty flavour!" icon_state = "ramen" - list_reagents = list("dry_ramen" = 15, "sodiumchloride" = 3) + list_reagents = list(/datum/reagent/consumable/dry_ramen = 15, /datum/reagent/consumable/sodiumchloride = 3) foodtype = GRAIN isGlass = FALSE @@ -253,20 +253,20 @@ name = "space beer" desc = "Beer. In space." icon_state = "beer" - list_reagents = list("beer" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/beer = 30) foodtype = GRAIN | ALCOHOL /obj/item/reagent_containers/food/drinks/beer/light name = "Carp Lite" desc = "Brewed with \"Pure Ice Asteroid Spring Water\"." - list_reagents = list("light_beer" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/beer/light = 30) /obj/item/reagent_containers/food/drinks/ale name = "Magm-Ale" desc = "A true dorf's drink of choice." icon_state = "alebottle" item_state = "beer" - list_reagents = list("ale" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/ale = 30) foodtype = GRAIN | ALCOHOL /obj/item/reagent_containers/food/drinks/sillycup @@ -310,32 +310,32 @@ /obj/item/reagent_containers/food/drinks/sillycup/smallcarton/on_reagent_change(changetype) if (reagents.reagent_list.len) switch(reagents.get_master_reagent_id()) - if("orangejuice") + if(/datum/reagent/consumable/orangejuice) icon_state = "orangebox" name = "orange juice box" desc = "A great source of vitamins. Stay healthy!" foodtype = FRUIT - if("milk") + if(/datum/reagent/consumable/milk) icon_state = "milkbox" name = "carton of milk" desc = "An excellent source of calcium for growing space explorers." foodtype = DAIRY - if("applejuice") + if(/datum/reagent/consumable/applejuice) icon_state = "juicebox" name = "apple juice box" desc = "Sweet apple juice. Don't be late for school!" foodtype = FRUIT - if("grapejuice") + if(/datum/reagent/consumable/grapejuice) icon_state = "grapebox" name = "grape juice box" desc = "Tasty grape juice in a fun little container. Non-alcoholic!" foodtype = FRUIT - if("chocolate_milk") + if(/datum/reagent/consumable/milk/chocolate_milk) icon_state = "chocolatebox" name = "carton of chocolate milk" desc = "Milk for cool kids!" foodtype = SUGAR - if("eggnog") + if(/datum/reagent/consumable/ethanol/eggnog) icon_state = "nog2" name = "carton of eggnog" desc = "For enjoying the most wonderful time of the year." @@ -380,7 +380,7 @@ name = "detective's flask" desc = "The detective's only true friend." icon_state = "detflask" - list_reagents = list("whiskey" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 30) /obj/item/reagent_containers/food/drinks/britcup name = "cup" @@ -446,7 +446,7 @@ desc = "Cola. in space." custom_price = 10 icon_state = "cola" - list_reagents = list("cola" = 30) + list_reagents = list(/datum/reagent/consumable/space_cola = 30) foodtype = SUGAR /obj/item/reagent_containers/food/drinks/soda_cans/tonic @@ -454,7 +454,7 @@ desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." custom_price = 10 icon_state = "tonic" - list_reagents = list("tonic" = 50) + list_reagents = list(/datum/reagent/consumable/tonic = 50) foodtype = ALCOHOL /obj/item/reagent_containers/food/drinks/soda_cans/sodawater @@ -462,13 +462,13 @@ desc = "A can of soda water. Why not make a scotch and soda?" custom_price = 10 icon_state = "sodawater" - list_reagents = list("sodawater" = 50) + list_reagents = list(/datum/reagent/consumable/sodawater = 50) /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime name = "orange soda" desc = "You wanted ORANGE. It gave you Lemon Lime." icon_state = "lemon-lime" - list_reagents = list("lemon_lime" = 30) + list_reagents = list(/datum/reagent/consumable/lemon_lime = 30) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime/Initialize() @@ -479,59 +479,59 @@ name = "Space-Up!" desc = "Tastes like a hull breach in your mouth." icon_state = "space-up" - list_reagents = list("space_up" = 30) + list_reagents = list(/datum/reagent/consumable/space_up = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/starkist name = "Star-kist" desc = "The taste of a star in liquid form. And, a bit of tuna...?" icon_state = "starkist" - list_reagents = list("cola" = 15, "orangejuice" = 15) + list_reagents = list(/datum/reagent/consumable/space_cola = 15, /datum/reagent/consumable/orangejuice = 15) foodtype = SUGAR | FRUIT | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind name = "Space Mountain Wind" desc = "Blows right through you like a space wind." icon_state = "space_mountain_wind" - list_reagents = list("spacemountainwind" = 30) + list_reagents = list(/datum/reagent/consumable/spacemountainwind = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko name = "Thirteen Loko" desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkenness, or even death. Please Drink Responsibly." icon_state = "thirteen_loko" - list_reagents = list("thirteenloko" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/thirteenloko = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb name = "Dr. Gibb" desc = "A delicious mixture of 42 different flavors." icon_state = "dr_gibb" - list_reagents = list("dr_gibb" = 30) + list_reagents = list(/datum/reagent/consumable/dr_gibb = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game name = "Pwr Game" desc = "The only drink with the PWR that true gamers crave." icon_state = "purple_can" - list_reagents = list("pwr_game" = 30) + list_reagents = list(/datum/reagent/consumable/pwr_game = 30) /obj/item/reagent_containers/food/drinks/soda_cans/shamblers name = "Shambler's juice" desc = "~Shake me up some of that Shambler's Juice!~" icon_state = "shamblers" - list_reagents = list("shamblers" = 30) + list_reagents = list(/datum/reagent/consumable/shamblers = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/grey_bull name = "Grey Bull" desc = "Grey Bull, it gives you gloves!" icon_state = "energy_drink" - list_reagents = list("grey_bull" = 20) + list_reagents = list(/datum/reagent/consumable/grey_bull = 20) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/air name = "canned air" desc = "There is no air shortage. Do not drink." icon_state = "air" - list_reagents = list("nitrogen" = 24, "oxygen" = 6) + list_reagents = list(/datum/reagent/nitrogen = 24, /datum/reagent/oxygen = 6) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 8c3ff0a40cc7..33564f399b58 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -142,99 +142,99 @@ name = "Griffeater gin" desc = "A bottle of high quality gin, produced in the New London Space Station." icon_state = "ginbottle" - list_reagents = list("gin" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/gin = 100) /obj/item/reagent_containers/food/drinks/bottle/whiskey name = "Uncle Git's special reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" - list_reagents = list("whiskey" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Tunguska triple distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" - list_reagents = list("vodka" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka name = "Badminka vodka" desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." icon_state = "badminka" - list_reagents = list("vodka" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila name = "Caccavo guaranteed quality tequila" desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" icon_state = "tequilabottle" - list_reagents = list("tequila" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/tequila = 100) /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing name = "bottle of nothing" desc = "A bottle filled with nothing." icon_state = "bottleofnothing" - list_reagents = list("nothing" = 100) + list_reagents = list(/datum/reagent/consumable/nothing = 100) foodtype = NONE /obj/item/reagent_containers/food/drinks/bottle/patron name = "Wrapp Artiste Patron" desc = "Silver laced tequila, served in space night clubs across the galaxy." icon_state = "patronbottle" - list_reagents = list("patron" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/patron = 100) /obj/item/reagent_containers/food/drinks/bottle/rum name = "Captain Pete's Cuban spiced rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" - list_reagents = list("rum" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/rum = 100) /obj/item/reagent_containers/food/drinks/bottle/holywater name = "flask of holy water" desc = "A flask of the chaplain's holy water." icon_state = "holyflask" - list_reagents = list("holywater" = 100) + list_reagents = list(/datum/reagent/water/holywater = 100) foodtype = NONE /obj/item/reagent_containers/food/drinks/bottle/holywater/hell desc = "A flask of holy water...it's been sitting in the Necropolis a while though." - list_reagents = list("hell_water" = 100) + list_reagents = list(/datum/reagent/hellwater = 100) /obj/item/reagent_containers/food/drinks/bottle/vermouth name = "Goldeneye vermouth" desc = "Sweet, sweet dryness~" icon_state = "vermouthbottle" - list_reagents = list("vermouth" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/vermouth = 100) /obj/item/reagent_containers/food/drinks/bottle/kahlua name = "Robert Robust's coffee liqueur" desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK." icon_state = "kahluabottle" - list_reagents = list("kahlua" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/kahlua = 100) foodtype = VEGETABLES /obj/item/reagent_containers/food/drinks/bottle/goldschlager name = "College Girl goldschlager" desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" - list_reagents = list("goldschlager" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/goldschlager = 100) /obj/item/reagent_containers/food/drinks/bottle/cognac name = "Chateau de Baton premium cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" - list_reagents = list("cognac" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/cognac = 100) /obj/item/reagent_containers/food/drinks/bottle/wine name = "Doublebeard's bearded special wine" desc = "A faint aura of unease and asspainery surrounds the bottle." icon_state = "winebottle" - list_reagents = list("wine" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/wine = 100) foodtype = FRUIT | ALCOHOL /obj/item/reagent_containers/food/drinks/bottle/absinthe name = "extra-strong absinthe" desc = "An strong alcoholic drink brewed and distributed by" icon_state = "absinthebottle" - list_reagents = list("absinthe" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 100) /obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize() . = ..() @@ -287,7 +287,7 @@ name = "bottle of lizard wine" desc = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol. Inexplicably popular among command staff." icon_state = "lizardwine" - list_reagents = list("lizardwine" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/lizardwine = 100) foodtype = FRUIT | ALCOHOL /obj/item/reagent_containers/food/drinks/bottle/hcider @@ -295,19 +295,19 @@ desc = "Apple juice for adults." icon_state = "hcider" volume = 50 - list_reagents = list("hcider" = 50) + list_reagents = list(/datum/reagent/consumable/ethanol/hcider = 50) /obj/item/reagent_containers/food/drinks/bottle/grappa name = "Phillipes well-aged Grappa" desc = "Bottle of Grappa." icon_state = "grappabottle" - list_reagents = list("grappa" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/grappa = 100) /obj/item/reagent_containers/food/drinks/bottle/sake name = "Ryo's traditional sake" desc = "Sweet as can be, and burns like fire going down." icon_state = "sakebottle" - list_reagents = list("sake" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/sake = 100) /obj/item/reagent_containers/food/drinks/bottle/sake/Initialize() . = ..() @@ -324,7 +324,7 @@ name = "Fernet Bronca" desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" icon_state = "fernetbottle" - list_reagents = list("fernet" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/fernet = 100) //////////////////////////JUICES AND STUFF /////////////////////// @@ -337,7 +337,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("orangejuice" = 100) + list_reagents = list(/datum/reagent/consumable/orangejuice = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/cream @@ -349,7 +349,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("cream" = 100) + list_reagents = list(/datum/reagent/consumable/cream = 100) foodtype = DAIRY /obj/item/reagent_containers/food/drinks/bottle/tomatojuice @@ -361,7 +361,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("tomatojuice" = 100) + list_reagents = list(/datum/reagent/consumable/tomatojuice = 100) foodtype = VEGETABLES /obj/item/reagent_containers/food/drinks/bottle/limejuice @@ -373,7 +373,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("limejuice" = 100) + list_reagents = list(/datum/reagent/consumable/limejuice = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/menthol @@ -385,7 +385,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("menthol" = 100) + list_reagents = list(/datum/reagent/consumable/menthol = 100) /obj/item/reagent_containers/food/drinks/bottle/grenadine name = "Jester Grenadine" @@ -393,9 +393,40 @@ custom_price = 10 icon_state = "grenadine" isGlass = TRUE - list_reagents = list("grenadine" = 100) + list_reagents = list(/datum/reagent/consumable/grenadine = 100) foodtype = FRUIT +/obj/item/reagent_containers/food/drinks/bottle/applejack + name = "Buckin' Bronco's Applejack" + desc = "Kicks like a horse, tastes like an apple!" + custom_price = 10 + icon_state = "applejack_bottle" + isGlass = TRUE + list_reagents = list(/datum/reagent/consumable/ethanol/applejack = 100) + foodtype = FRUIT + +/obj/item/reagent_containers/food/drinks/bottle/champagne + name = "Eau d' Dandy Brut Champagne" + desc = "Finely sourced from only the most pretentious French vineyards." + custom_premium_price = 200 + icon_state = "champagne_bottle" + isGlass = TRUE + list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100) + +/obj/item/reagent_containers/food/drinks/bottle/blazaam + name = "Ginbad's Blazaam" + desc = "You feel like you should give the bottle a good rub before opening." + icon_state = "blazaambottle" + list_reagents = list(/datum/reagent/consumable/ethanol/blazaam = 100) + +/obj/item/reagent_containers/food/drinks/bottle/trappist + name = "Mont de Requin Trappistes Bleu" + desc = "Brewed in space-Belgium. Fancy!" + custom_premium_price = 50 + icon_state = "trappistbottle" + volume = 50 + list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50) + ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/molotov diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 5ebf3e80f47e..c3b5739a7ce3 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -83,16 +83,16 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda name = "Soda Water" - list_reagents = list("sodawater" = 50) + list_reagents = list(/datum/reagent/consumable/sodawater = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola name = "Space Cola" - list_reagents = list("cola" = 50) + list_reagents = list(/datum/reagent/consumable/space_cola = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola name = "Nuka Cola" - list_reagents = list("nuka_cola" = 50) - + list_reagents = list(/datum/reagent/consumable/nuka_cola = 50) + /obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs var/obj/item/reagent_containers/food/snacks/egg/E = I @@ -101,7 +101,7 @@ to_chat(user, "[src] is full.") else to_chat(user, "You break [E] in [src].") - reagents.add_reagent("eggyolk", 5) + reagents.add_reagent(/datum/reagent/consumable/eggyolk, 5) qdel(E) return else diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index e23acabb0416..d807198cd6c7 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -13,21 +13,25 @@ reagent_flags = OPENCONTAINER possible_transfer_amounts = list(1, 5, 10, 15, 20, 25, 30, 50) volume = 50 - //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. + //Possible_states has the reagent type as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. var/list/possible_states = list( - "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), - "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), - "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), - "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), - "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), - "sodiumchloride" = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), - "blackpepper" = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), - "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), - "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), - "mayonnaise" = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."), - "cinnamon" = list("cinnamonshaker", "cinnamon shaker", "A spice obtained from the bark of a cinnamomum tree")) // yogs added cinnamon + /datum/reagent/consumable/ketchup = list("ketchup", "ketchup bottle", "You feel more American already."), + /datum/reagent/consumable/capsaicin = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), + /datum/reagent/consumable/enzyme = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), + /datum/reagent/consumable/soysauce = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), + /datum/reagent/consumable/frostoil = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), + /datum/reagent/consumable/sodiumchloride = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), + /datum/reagent/consumable/blackpepper = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), + /datum/reagent/consumable/cornoil = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), + /datum/reagent/consumable/sugar = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), + /datum/reagent/consumable/mayonnaise = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."), + ) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. +/obj/item/reagent_containers/food/condiment/Initialize() + . = ..() + possible_states = typelist("possible_states", possible_states) + /obj/item/reagent_containers/food/condiment/suicide_act(mob/living/carbon/user) user.visible_message("[user] is trying to eat the entire [src]! It looks like [user.p_they()] forgot how food works!") return OXYLOSS @@ -115,12 +119,12 @@ name = "universal enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" - list_reagents = list("enzyme" = 50) + list_reagents = list(/datum/reagent/consumable/enzyme = 50) /obj/item/reagent_containers/food/condiment/sugar name = "sugar bottle" desc = "Tasty spacey sugar!" - list_reagents = list("sugar" = 50) + list_reagents = list(/datum/reagent/consumable/sugar = 50) /obj/item/reagent_containers/food/condiment/saltshaker //Separate from above since it's a small shaker rather then name = "salt shaker" // a large one. @@ -129,7 +133,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 - list_reagents = list("sodiumchloride" = 20) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 20) possible_states = list() /obj/item/reagent_containers/food/condiment/saltshaker/on_reagent_change(changetype) @@ -152,11 +156,11 @@ if(!proximity) return if(isturf(target)) - if(!reagents.has_reagent("sodiumchloride", 2)) + if(!reagents.has_reagent(/datum/reagent/consumable/sodiumchloride, 2)) to_chat(user, "You don't have enough salt to make a pile!") return user.visible_message("[user] shakes some salt onto [target].", "You shake some salt onto [target].") - reagents.remove_reagent("sodiumchloride", 2) + reagents.remove_reagent(/datum/reagent/consumable/sodiumchloride, 2) new/obj/effect/decal/cleanable/food/salt(target) return @@ -167,7 +171,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 - list_reagents = list("blackpepper" = 20) + list_reagents = list(/datum/reagent/consumable/blackpepper = 20) possible_states = list() /obj/item/reagent_containers/food/condiment/peppermill/on_reagent_change(changetype) @@ -183,7 +187,7 @@ item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - list_reagents = list("milk" = 50) + list_reagents = list(/datum/reagent/consumable/milk = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/flour @@ -191,7 +195,7 @@ desc = "A big bag of flour. Good for baking!" icon_state = "flour" item_state = "flour" - list_reagents = list("flour" = 30) + list_reagents = list(/datum/reagent/consumable/flour = 30) possible_states = list() /obj/item/reagent_containers/food/condiment/soymilk @@ -201,7 +205,7 @@ item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - list_reagents = list("soymilk" = 50) + list_reagents = list(/datum/reagent/consumable/soymilk = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/rice @@ -209,21 +213,21 @@ desc = "A big bag of rice. Good for cooking!" icon_state = "rice" item_state = "flour" - list_reagents = list("rice" = 30) + list_reagents = list(/datum/reagent/consumable/rice = 30) possible_states = list() /obj/item/reagent_containers/food/condiment/soysauce name = "soy sauce" desc = "A salty soy-based flavoring." icon_state = "soysauce" - list_reagents = list("soysauce" = 50) + list_reagents = list(/datum/reagent/consumable/soysauce = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/mayonnaise name = "mayonnaise" desc = "An oily condiment made from egg yolks." icon_state = "mayonnaise" - list_reagents = list("mayonnaise" = 50) + list_reagents = list(/datum/reagent/consumable/mayonnaise = 50) possible_states = list() @@ -237,7 +241,17 @@ volume = 10 amount_per_transfer_from_this = 10 possible_transfer_amounts = list() - possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!")) + possible_states = list( + /datum/reagent/consumable/ketchup = list("condi_ketchup", "Ketchup", "You feel more American already."), + /datum/reagent/consumable/capsaicin = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), + /datum/reagent/consumable/soysauce = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), + /datum/reagent/consumable/frostoil = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), + /datum/reagent/consumable/sodiumchloride = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), + /datum/reagent/consumable/blackpepper = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), + /datum/reagent/consumable/cornoil = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), + /datum/reagent/consumable/sugar = list("condi_sugar", "Sugar", "Tasty spacey sugar!"), + /datum/reagent/consumable/astrotame = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories."), + ) /obj/item/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. return @@ -280,10 +294,15 @@ /obj/item/reagent_containers/food/condiment/pack/ketchup name = "ketchup pack" originalname = "ketchup" - list_reagents = list("ketchup" = 10) + list_reagents = list(/datum/reagent/consumable/ketchup = 10) //Hot sauce /obj/item/reagent_containers/food/condiment/pack/hotsauce name = "hotsauce pack" originalname = "hotsauce" - list_reagents = list("capsaicin" = 10) + list_reagents = list(/datum/reagent/consumable/capsaicin = 10) + +/obj/item/reagent_containers/food/condiment/pack/astrotame + name = "astrotame pack" + originalname = "astrotame" + list_reagents = list(/datum/reagent/consumable/astrotame = 5) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index fafc0cabe938..c593227733fd 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -187,7 +187,7 @@ desc = "Delicious food on a stick." ingredients_placement = INGREDIENTS_LINE trash = /obj/item/stack/rods - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) ingMax = 6 icon_state = "rod" @@ -302,7 +302,7 @@ else if(contents.len >= 20) to_chat(user, "You can't add more ingredients to [src]!") else - if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? + if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad? var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 2fc8d3dde60d..1c922abd6727 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -21,8 +21,8 @@ Here is an example of the new formatting for anyone who wants to add more food i icon_state = "xburger" //Refers to an icon in food.dmi /obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL MESS WITH THIS . = ..() //Same here. - reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste - reagents.add_reagent("nutriment", 2) //this line of code for all the contents. + reagents.add_reagent(/datum/reagent/xenomicrobes, 10) //This is what is in the food item. you may copy/paste + reagents.add_reagent(/datum/reagent/consumable/nutriment, 2) //this line of code for all the contents. bitesize = 3 //This is the amount each bite consumes. ``` @@ -60,7 +60,7 @@ All foods are distributed among various categories. Use common sense. if(list_reagents) for(var/rid in list_reagents) var/amount = list_reagents[rid] - if(rid == "nutriment" || rid == "vitamin") + if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) reagents.add_reagent(rid, amount, tastes.Copy()) else reagents.add_reagent(rid, amount) @@ -206,7 +206,7 @@ All foods are distributed among various categories. Use common sense. if(bonus_reagents && bonus_reagents.len) for(var/r_id in bonus_reagents) var/amount = bonus_reagents[r_id] - if(r_id == "nutriment" || r_id == "vitamin") + if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) reagents.add_reagent(r_id, amount, tastes) else reagents.add_reagent(r_id, amount) @@ -285,7 +285,7 @@ All foods are distributed among various categories. Use common sense. if(S.bonus_reagents && S.bonus_reagents.len) for(var/r_id in S.bonus_reagents) var/amount = S.bonus_reagents[r_id] * cooking_efficiency - if(r_id == "nutriment" || r_id == "vitamin") + if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) S.reagents.add_reagent(r_id, amount, tastes) else S.reagents.add_reagent(r_id, amount) diff --git a/code/modules/food_and_drinks/food/snacks/dough.dm b/code/modules/food_and_drinks/food/snacks/dough.dm index 6ae8836b284b..e071fb3df72b 100644 --- a/code/modules/food_and_drinks/food/snacks/dough.dm +++ b/code/modules/food_and_drinks/food/snacks/dough.dm @@ -8,7 +8,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "dough" cooked_type = /obj/item/reagent_containers/food/snacks/store/bread/plain - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN @@ -36,7 +36,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/doughslice slices_num = 3 cooked_type = /obj/item/reagent_containers/food/snacks/pizzabread - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN @@ -47,7 +47,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "pizzabread" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pizza - list_reagents = list("nutriment" = 7) + list_reagents = list(/datum/reagent/consumable/nutriment = 7) w_class = WEIGHT_CLASS_NORMAL tastes = list("bread" = 1) foodtype = GRAIN @@ -69,7 +69,7 @@ desc = "A base for any self-respecting burger." icon = 'icons/obj/food/burgerbread.dmi' icon_state = "bun" - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/burger filling_color = "#CD853F" tastes = list("bun" = 1) // the bun tastes of bun. @@ -81,7 +81,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "cakebatter" cooked_type = /obj/item/reagent_containers/food/snacks/store/cake/plain - list_reagents = list("nutriment" = 9) + list_reagents = list(/datum/reagent/consumable/nutriment = 9) w_class = WEIGHT_CLASS_NORMAL tastes = list("batter" = 1) foodtype = GRAIN | DAIRY @@ -106,7 +106,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/rawpastrybase slices_num = 3 cooked_type = /obj/item/reagent_containers/food/snacks/pie/plain - list_reagents = list("nutriment" = 9) + list_reagents = list(/datum/reagent/consumable/nutriment = 9) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN | DAIRY @@ -118,7 +118,7 @@ icon_state = "rawpastrybase" cooked_type = /obj/item/reagent_containers/food/snacks/pastrybase filling_color = "#CD853F" - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) tastes = list("raw pastry" = 1) foodtype = GRAIN | DAIRY @@ -127,7 +127,7 @@ desc = "A base for any self-respecting pastry." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "pastrybase" - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#CD853F" tastes = list("pastry" = 1) foodtype = GRAIN | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index ce74cf62bc47..0362b873df6c 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -8,7 +8,7 @@ icon_state = "meat" dried_type = /obj/item/reagent_containers/food/snacks/sosjerky/healthy bitesize = 3 - list_reagents = list("nutriment" = 3, "cooking_oil" = 2) //Meat has fats that a food processor can process into cooking oil + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2) //Meat has fats that a food processor can process into cooking oil cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain slices_num = 3 @@ -61,7 +61,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime icon_state = "slimemeat" desc = "Because jello wasn't offensive enough to vegans." - list_reagents = list("nutriment" = 3, "slimejelly" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin/slimejelly = 3) filling_color = "#00FFFF" tastes = list("slime" = 1, "jelly" = 1) foodtype = MEAT | RAW | TOXIC @@ -69,7 +69,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem icon_state = "golemmeat" desc = "Edible rocks, welcome to the future." - list_reagents = list("nutriment" = 3, "iron" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/iron = 3) filling_color = "#A9A9A9" tastes = list("rock" = 1) foodtype = MEAT | RAW | GROSS @@ -104,7 +104,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly icon_state = "flymeat" desc = "Nothing says tasty like maggot filled radioactive mutant flesh." - list_reagents = list("nutriment" = 3, "uranium" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/uranium = 3) tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtype = MEAT | RAW | GROSS @@ -136,7 +136,7 @@ icon_state = "etherealmeat" desc = "So shiny you feel like ingesting it might make you shine too" filling_color = "#97ee63" - list_reagents = list("liquidelectricity" = 3) + list_reagents = list(/datum/reagent/consumable/liquidelectricity = 3) tastes = list("pure electrictiy" = 2, "meat" = 1) foodtype = RAW | MEAT | TOXIC @@ -177,7 +177,7 @@ name = "killer tomato meat" desc = "A slice from a huge tomato." icon_state = "tomatomeat" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#FF0000" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/killertomato slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/killertomato @@ -188,7 +188,7 @@ name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" - list_reagents = list("nutriment" = 12, "morphine" = 5, "vitamin" = 2, "cooking_oil" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/medicine/morphine = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 6) filling_color = "#FFB6C1" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/bear slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/bear @@ -200,7 +200,7 @@ name = "xeno meat" desc = "A slab of meat." icon_state = "xenomeat" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 4 filling_color = "#32CD32" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/xeno @@ -212,7 +212,7 @@ name = "spider meat" desc = "A slab of spider meat." icon_state = "spidermeat" - list_reagents = list("nutriment" = 3, "toxin" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin = 3, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#7CFC00" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/spider slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider @@ -223,7 +223,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/goliath name = "goliath meat" desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava." - list_reagents = list("nutriment" = 3, "toxin" = 5, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin = 5, /datum/reagent/consumable/cooking_oil = 3) icon_state = "goliathmeat" tastes = list("meat" = 1) foodtype = RAW | MEAT | TOXIC @@ -236,7 +236,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/meatwheat name = "meatwheat clump" desc = "This doesn't look like meat, but your standards aren't that high to begin with." - list_reagents = list("nutriment" = 3, "vitamin" = 2, "blood" = 5, "cooking_oil" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/blood = 5, /datum/reagent/consumable/cooking_oil = 1) filling_color = rgb(150, 0, 0) icon_state = "meatwheat_clump" bitesize = 4 @@ -246,7 +246,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gorilla name = "gorilla meat" desc = "Much meatier than monkey meat." - list_reagents = list("nutriment" = 5, "vitamin" = 1, "cooking_oil" = 5) //Plenty of fat! + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/cooking_oil = 5) //Plenty of fat! /obj/item/reagent_containers/food/snacks/meat/rawbacon name = "raw piece of bacon" @@ -254,7 +254,7 @@ icon_state = "bacon" cooked_type = /obj/item/reagent_containers/food/snacks/meat/bacon bitesize = 2 - list_reagents = list("nutriment" = 1, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cooking_oil = 3) filling_color = "#B22222" tastes = list("bacon" = 1) foodtype = RAW | MEAT @@ -263,8 +263,8 @@ name = "piece of bacon" desc = "A delicious piece of bacon." icon_state = "baconcooked" - list_reagents = list("nutriment" = 2) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1, "cooking_oil" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/cooking_oil = 2) filling_color = "#854817" tastes = list("bacon" = 1) foodtype = MEAT @@ -272,7 +272,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gondola name = "gondola meat" desc = "According to legends of old, consuming raw gondola flesh grants one inner peace." - list_reagents = list("nutriment" = 3, "tranquility" = 5, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/tranquility = 5, /datum/reagent/consumable/cooking_oil = 3) tastes = list("meat" = 4, "tranquility" = 1) filling_color = "#9A6750" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/gondola @@ -282,7 +282,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/penguin name = "penguin meat" desc = "A slab of penguin meat." - list_reagents = list("nutriment" = 2, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cooking_oil = 3) cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/penguin slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/penguin filling_color = "#B22222" @@ -295,8 +295,8 @@ name = "steak" desc = "A piece of hot spicy meat." icon_state = "meatsteak" - list_reagents = list("nutriment" = 5) - bonus_reagents = list("nutriment" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) trash = /obj/item/trash/plate filling_color = "#B22222" foodtype = MEAT @@ -353,7 +353,7 @@ icon_state = "rawcutlet" cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain bitesize = 2 - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#B22222" tastes = list("meat" = 1) var/meat_type = "meat" @@ -417,8 +417,8 @@ desc = "A cooked meat cutlet." icon_state = "cutlet" bitesize = 2 - list_reagents = list("nutriment" = 2) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#B22222" tastes = list("meat" = 1) foodtype = MEAT diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index b6054fbf4238..53abab727624 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -12,7 +12,7 @@ bitesize = 2 custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/sandwich filling_color = "#FFA500" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) slot_flags = ITEM_SLOT_HEAD customfoodfilling = 0 //to avoid infinite bread-ception foodtype = GRAIN @@ -21,8 +21,8 @@ name = "bread" desc = "Some plain old earthen bread." icon_state = "bread" - bonus_reagents = list("nutriment" = 7) - list_reagents = list("nutriment" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 7) + list_reagents = list(/datum/reagent/consumable/nutriment = 10) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/bread slice_path = /obj/item/reagent_containers/food/snacks/breadslice/plain tastes = list("bread" = 10) @@ -40,8 +40,8 @@ desc = "The culinary base of every self-respecting eloquen/tg/entleman." icon_state = "meatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/meat - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 30, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "meat" = 10) foodtype = GRAIN | MEAT @@ -56,8 +56,8 @@ desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical." icon_state = "xenomeatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/xenomeat - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 30, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "acid" = 10) foodtype = GRAIN | MEAT @@ -66,7 +66,7 @@ desc = "A slice of delicious meatbread. Extra Heretical." icon_state = "xenobreadslice" filling_color = "#32CD32" - list_reagents = list("nutriment" = 6, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/store/bread/spidermeat @@ -74,8 +74,8 @@ desc = "Reassuringly green meatloaf made from spider meat." icon_state = "spidermeatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/spidermeat - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 30, "toxin" = 15, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/toxin = 15, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "cobwebs" = 5) foodtype = GRAIN | MEAT | TOXIC @@ -84,7 +84,7 @@ desc = "A slice of meatloaf made from an animal that most likely still wants you dead." icon_state = "xenobreadslice" filling_color = "#7CFC00" - list_reagents = list("nutriment" = 6, "toxin" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin = 3, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT | TOXIC /obj/item/reagent_containers/food/snacks/store/bread/banana @@ -92,8 +92,8 @@ desc = "A heavenly and filling treat." icon_state = "bananabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/banana - bonus_reagents = list("nutriment" = 5, "banana" = 20) - list_reagents = list("nutriment" = 20, "banana" = 20) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/banana = 20) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/banana = 20) tastes = list("bread" = 10) // bananjuice will also flavour foodtype = GRAIN | FRUIT @@ -103,7 +103,7 @@ desc = "A slice of delicious banana bread." icon_state = "bananabreadslice" filling_color = "#FFD700" - list_reagents = list("nutriment" = 4, "banana" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/banana = 4) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/store/bread/tofu @@ -111,8 +111,8 @@ desc = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." icon_state = "tofubread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/tofu - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 20, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "tofu" = 10) foodtype = GRAIN | VEGETABLES @@ -121,7 +121,7 @@ desc = "A slice of delicious tofubread." icon_state = "tofubreadslice" filling_color = "#FF8C00" - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | VEGETABLES /obj/item/reagent_containers/food/snacks/store/bread/creamcheese @@ -129,8 +129,8 @@ desc = "Yum yum yum!" icon_state = "creamcheesebread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/creamcheese - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 20, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "cheese" = 10) foodtype = GRAIN | DAIRY @@ -139,7 +139,7 @@ desc = "A slice of yum!" icon_state = "creamcheesebreadslice" filling_color = "#FF8C00" - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/store/bread/mimana @@ -147,8 +147,8 @@ desc = "Best eaten in silence." icon_state = "mimanabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/mimana - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 20, "mutetoxin" = 5, "nothing" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/consumable/nothing = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "silence" = 10) foodtype = GRAIN | FRUIT @@ -157,7 +157,7 @@ desc = "A slice of silence!" icon_state = "mimanabreadslice" filling_color = "#C0C0C0" - list_reagents = list("nutriment" = 2, "mutetoxin" = 1, "nothing" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/breadslice/custom @@ -171,14 +171,27 @@ desc = "Bon appetit!" icon = 'icons/obj/food/burgerbread.dmi' icon_state = "baguette" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 1) + item_state = "baguette" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 3 w_class = WEIGHT_CLASS_NORMAL slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT tastes = list("bread" = 1) foodtype = GRAIN +/obj/item/reagent_containers/food/snacks/garlicbread + name = "garlic bread" + desc = "Alas, it is limited." + icon = 'icons/obj/food/burgerbread.dmi' + icon_state = "garlicbread" + item_state = "garlicbread" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/garlic = 2) + bitesize = 3 + tastes = list("bread" = 1, "garlic" = 1, "butter" = 1) + foodtype = GRAIN + /obj/item/reagent_containers/food/snacks/deepfryholder name = "Deep Fried Foods Holder Obj" desc = "If you can see this description the code for the deep fryer fucked up." @@ -250,8 +263,8 @@ icon_state = "butteredtoast" bitesize = 3 filling_color = "#FFA500" - list_reagents = list("nutriment" = 4) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("butter" = 1, "toast" = 1) /obj/item/reagent_containers/food/snacks/butterbiscuit @@ -260,8 +273,8 @@ icon = 'yogstation/icons/obj/food/food.dmi' icon_state = "butterbiscuit" filling_color = "#F0E68C" - list_reagents = list("nutriment" = 5) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("butter" = 1, "biscuit" = 1) /obj/item/reagent_containers/food/snacks/butterdog @@ -271,8 +284,8 @@ icon_state = "butterdog" bitesize = 1 filling_color = "#F1F49A" - list_reagents = list("nutriment" = 5) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("butter", "exotic butter") /obj/item/reagent_containers/food/snacks/butterdog/ComponentInitialize() diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index d5153638bf1f..83ffc7937e03 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -3,14 +3,14 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "hburger" bitesize = 3 - list_reagents = list("nutriment" = 6, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/plain name = "burger" desc = "The cornerstone of every nutritious breakfast." - bonus_reagents = list("vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/plain/Initialize() @@ -31,7 +31,7 @@ var/subjectjob = null name = "human burger" desc = "A bloody burger." - bonus_reagents = list("vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) foodtype = MEAT | GRAIN | GROSS /obj/item/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) @@ -50,13 +50,13 @@ /obj/item/reagent_containers/food/snacks/burger/corgi name = "corgi burger" desc = "You monster." - bonus_reagents = list("vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT | GROSS /obj/item/reagent_containers/food/snacks/burger/appendix name = "appendix burger" desc = "Tastes like appendicitis." - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) icon_state = "appendixburger" tastes = list("bun" = 4, "grass" = 2) foodtype = GRAIN | MEAT | GROSS @@ -65,7 +65,7 @@ name = "fillet -o- carp sandwich" desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp." icon_state = "fishburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 4, "fish" = 4) foodtype = GRAIN | MEAT @@ -73,7 +73,7 @@ name = "tofu burger" desc = "What.. is that meat?" icon_state = "tofuburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("bun" = 4, "tofu" = 4) foodtype = GRAIN | VEGETABLES @@ -81,8 +81,8 @@ name = "roburger" desc = "The lettuce is the only organic component. Beep." icon_state = "roburger" - bonus_reagents = list("nutriment" = 2, "nanomachines" = 2, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "nanomachines" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/nanomachines = 2, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/nanomachines = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1) foodtype = GRAIN | TOXIC @@ -91,8 +91,8 @@ desc = "This massive patty looks like poison. Beep." icon_state = "roburger" volume = 120 - bonus_reagents = list("nutriment" = 5, "nanomachines" = 70, "vitamin" = 10) - list_reagents = list("nutriment" = 6, "nanomachines" = 70, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/nanomachines = 70, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/nanomachines = 70, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1) foodtype = GRAIN | TOXIC @@ -100,7 +100,7 @@ name = "xenoburger" desc = "Smells caustic. Tastes like heresy." icon_state = "xburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("bun" = 4, "acid" = 4) foodtype = GRAIN | MEAT @@ -108,29 +108,29 @@ name = "bearger" desc = "Best served rawr." icon_state = "bearger" - bonus_reagents = list("nutriment" = 3, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/clown name = "clown burger" desc = "This tastes funny..." icon_state = "clownburger" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6, "banana" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/banana = 6) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/burger/mime name = "mime burger" desc = "Its taste defies language." icon_state = "mimeburger" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6, "nothing" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/nothing = 6) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/burger/brain name = "brainburger" desc = "A strange looking burger. It looks almost sentient." icon_state = "brainburger" - bonus_reagents = list("nutriment" = 6, "mannitol" = 6, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "mannitol" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "brains" = 2) foodtype = GRAIN | MEAT | GROSS @@ -138,7 +138,7 @@ name = "ghost burger" desc = "Too Spooky!" alpha = 125 - bonus_reagents = list("nutriment" = 5, "vitamin" = 12) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 12) tastes = list("bun" = 4, "ectoplasm" = 2) foodtype = GRAIN @@ -147,7 +147,7 @@ desc = "Perfect for hiding the fact it's burnt to a crisp." icon_state = "cburger" color = "#DA0000FF" - bonus_reagents = list("redcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/red = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/orange @@ -155,7 +155,7 @@ desc = "Contains 0% juice." icon_state = "cburger" color = "#FF9300FF" - bonus_reagents = list("orangecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/orange = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/yellow @@ -163,7 +163,7 @@ desc = "Bright to the last bite." icon_state = "cburger" color = "#FFF200FF" - bonus_reagents = list("yellowcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/yellow = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/green @@ -171,7 +171,7 @@ desc = "It's not tainted meat, it's painted meat!" icon_state = "cburger" color = "#A8E61DFF" - bonus_reagents = list("greencrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/blue @@ -179,7 +179,7 @@ desc = "Is this blue rare?" icon_state = "cburger" color = "#00B7EFFF" - bonus_reagents = list("bluecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/blue = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/purple @@ -187,7 +187,7 @@ desc = "Regal and low class at the same time." icon_state = "cburger" color = "#DA00FFFF" - bonus_reagents = list("purplecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/purple = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/black @@ -195,7 +195,7 @@ desc = "This is overcooked." icon_state = "cburger" color = "#1C1C1C" - bonus_reagents = list("blackcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/black = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/white @@ -203,14 +203,14 @@ desc = "Delicous Titanium!" icon_state = "cburger" color = "#FFFFFF" - bonus_reagents = list("whitecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/white = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/spell name = "spell burger" desc = "This is absolutely Ei Nath." icon_state = "spellburger" - bonus_reagents = list("nutriment" = 6, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("bun" = 4, "magic" = 2) foodtype = GRAIN | MEAT @@ -218,8 +218,8 @@ name = "big bite burger" desc = "Forget the Big Mac. THIS is the future!" icon_state = "bigbiteburger" - bonus_reagents = list("vitamin" = 6) - list_reagents = list("nutriment" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) w_class = WEIGHT_CLASS_NORMAL foodtype = GRAIN | MEAT @@ -231,21 +231,21 @@ foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/jelly/slime - bonus_reagents = list("slimejelly" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "slimejelly" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/burger/jelly/cherry - bonus_reagents = list("cherryjelly" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "cherryjelly" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/burger/superbite name = "super bite burger" desc = "This is a mountain of a burger. FOOD!" icon_state = "superbiteburger" - bonus_reagents = list("vitamin" = 10) - list_reagents = list("nutriment" = 40, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 40, /datum/reagent/consumable/nutriment/vitamin = 5) w_class = WEIGHT_CLASS_NORMAL bitesize = 7 volume = 100 @@ -256,29 +256,29 @@ name = "five alarm burger" desc = "HOT! HOT!" icon_state = "fivealarmburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "capsaicin" = 5, "condensedcapsaicin" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/condensedcapsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/rat name = "rat burger" desc = "Pretty much what you'd expect..." icon_state = "ratburger" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT | GROSS /obj/item/reagent_containers/food/snacks/burger/baseball name = "home run baseball burger" desc = "It's still warm. The steam coming off of it looks like baseball." icon_state = "baseball" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | GROSS /obj/item/reagent_containers/food/snacks/burger/baconburger name = "bacon burger" desc = "The perfect combination of all things American." icon_state = "baconburger" - bonus_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "bacon" = 2) foodtype = GRAIN | MEAT @@ -286,6 +286,6 @@ name = "empowered burger" desc = "It's shockingly good, if you live off of electricity that is." icon_state = "empoweredburger" - list_reagents = list("nutriment" = 8, "liquidelectricity" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/liquidelectricity = 5) tastes = list("bun" = 2, "pure electricity" = 4) foodtype = GRAIN | TOXIC diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 781b021d05f8..222215e43643 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -4,14 +4,14 @@ slices_num = 5 bitesize = 3 volume = 80 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 1) foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/cakeslice icon = 'icons/obj/food/piecake.dmi' trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) customfoodfilling = 0 //to avoid infinite cake-ception tastes = list("cake" = 1) foodtype = GRAIN | DAIRY @@ -21,7 +21,7 @@ desc = "A plain cake, not a lie." icon_state = "plaincake" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/cake - bonus_reagents = list("nutriment" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("vanilla" = 1, "sweetness" = 2,"cake" = 5) foodtype = GRAIN | DAIRY | SUGAR @@ -40,8 +40,8 @@ icon_state = "carrotcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/carrot slices_num = 5 - bonus_reagents = list("nutriment" = 3, "oculine" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/oculine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -50,7 +50,7 @@ desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." icon_state = "carrotcake_slice" filling_color = "#FFA500" - list_reagents = list("nutriment" = 4, "oculine" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/oculine = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -61,8 +61,8 @@ icon_state = "braincake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brain slices_num = 5 - bonus_reagents = list("nutriment" = 5, "mannitol" = 10, "vitamin" = 10) - list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1) foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR @@ -72,7 +72,7 @@ desc = "Lemme tell you something about prions. THEY'RE DELICIOUS." icon_state = "braincakeslice" filling_color = "#FF69B4" - list_reagents = list("nutriment" = 4, "mannitol" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/mannitol = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1) foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR @@ -82,7 +82,7 @@ icon_state = "cheesecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/cheese slices_num = 5 - bonus_reagents = list("vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 4, "cream cheese" = 3) foodtype = GRAIN | DAIRY @@ -102,7 +102,7 @@ icon_state = "orangecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/orange slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -120,7 +120,7 @@ icon_state = "limecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lime slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -139,7 +139,7 @@ icon_state = "lemoncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lemon slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -159,7 +159,7 @@ icon_state = "chocolatecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/chocolate slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -179,8 +179,8 @@ icon_state = "birthdaycake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday slices_num = 5 - bonus_reagents = list("nutriment" = 7, "sprinkles" = 10, "vitamin" = 5) - list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -189,7 +189,7 @@ desc = "A slice of your birthday." icon_state = "birthdaycakeslice" filling_color = "#DC143C" - list_reagents = list("nutriment" = 4, "sprinkles" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -200,7 +200,7 @@ icon_state = "applecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/apple slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -223,7 +223,7 @@ desc = "A cake made of slimes. Probably not electrified." icon_state = "slimecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/slimecake - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -240,7 +240,7 @@ desc = "A hollow cake with real pumpkin." icon_state = "pumpkinspicecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice - bonus_reagents = list("nutriment" = 3, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index cc6d796fb320..76120013ab16 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -5,8 +5,8 @@ name = "chocolate egg" desc = "Such, sweet, fattening food." icon_state = "chocolateegg" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) filling_color = "#A0522D" tastes = list("chocolate" = 4, "sweetness" = 1) foodtype = JUNKFOOD | SUGAR @@ -15,7 +15,7 @@ name = "egg" desc = "An egg!" icon_state = "egg" - list_reagents = list("eggyolk" = 5) + list_reagents = list(/datum/reagent/consumable/eggyolk = 5) cooked_type = /obj/item/reagent_containers/food/snacks/boiledegg filling_color = "#F0E68C" foodtype = MEAT @@ -89,10 +89,10 @@ name = "fried egg" desc = "A fried egg, with a touch of salt and pepper." icon_state = "friedegg" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 1 filling_color = "#FFFFF0" - list_reagents = list("nutriment" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3) tastes = list("egg" = 4, "salt" = 1, "pepper" = 1) foodtype = MEAT | FRIED @@ -100,9 +100,9 @@ name = "boiled egg" desc = "A hard boiled egg." icon_state = "egg" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFFFF0" - list_reagents = list("nutriment" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("egg" = 1) foodtype = MEAT @@ -111,8 +111,8 @@ desc = "That's all you can say!" icon_state = "omelette" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 1 w_class = WEIGHT_CLASS_NORMAL tastes = list("egg" = 1, "cheese" = 1) @@ -129,7 +129,7 @@ "You take a piece of omelette with your fork.") var/datum/reagent/R = pick(reagents.reagent_list) - reagents.remove_reagent(R.id, 1) + reagents.remove_reagent(R.type, 1) F.forkload = R if(reagents.total_volume <= 0) qdel(src) @@ -140,10 +140,10 @@ name = "eggs benedict" desc = "There is only one egg on this, how rude." icon_state = "benedict" - bonus_reagents = list("vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) trash = /obj/item/trash/plate w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 6, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("egg" = 1, "bacon" = 1, "bun" = 1) foodtype = MEAT diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 9c2811323b9a..4af2ee3926e6 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -8,10 +8,10 @@ desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" icon_state = "cubancarp" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) bitesize = 3 filling_color = "#CD853F" - list_reagents = list("nutriment" = 6, "capsaicin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 1) tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1) foodtype = MEAT @@ -19,7 +19,7 @@ name = "carp fillet" desc = "A fillet of spess carp meat." icon_state = "fishfillet" - list_reagents = list("nutriment" = 3, "carpotoxin" = 2, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin/carpotoxin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 6 filling_color = "#FA8072" tastes = list("fish" = 1) @@ -37,8 +37,8 @@ name = "fish fingers" desc = "A finger of fish." icon_state = "fishfingers" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) bitesize = 1 filling_color = "#CD853F" tastes = list("fish" = 1, "breadcrumbs" = 1) @@ -48,8 +48,8 @@ name = "fish and chips" desc = "I do say so myself chap." icon_state = "fishandchips" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#FA8072" tastes = list("fish" = 1, "chips" = 1) foodtype = MEAT | VEGETABLES | FRIED @@ -60,7 +60,7 @@ name = "tofu" desc = "We all love tofu." icon_state = "tofu" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#F0E68C" tastes = list("tofu" = 1) foodtype = VEGETABLES @@ -75,7 +75,7 @@ name = "spider leg" desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?" icon_state = "spiderleg" - list_reagents = list("nutriment" = 2, "toxin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin = 2) cooked_type = /obj/item/reagent_containers/food/snacks/boiledspiderleg filling_color = "#000000" tastes = list("cobwebs" = 1) @@ -86,8 +86,8 @@ desc = "Now you can feel like a real tourist vacationing in Ireland." icon_state = "cornedbeef" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) tastes = list("meat" = 1, "cabbage" = 1) foodtype = MEAT | VEGETABLES @@ -96,8 +96,8 @@ desc = "Because eating bear wasn't manly enough." icon_state = "bearsteak" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 2, "vitamin" = 5, "manlydorf" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/ethanol/manly_dorf = 5) tastes = list("meat" = 1, "salmon" = 1) foodtype = MEAT | ALCOHOL @@ -105,7 +105,7 @@ name = "meatball" //YOGS - Bigotry rule desc = "A great meal all round. Not a cord of wood." icon_state = "faggot" - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#800000" tastes = list("meat" = 1) foodtype = MEAT @@ -115,8 +115,8 @@ desc = "A piece of mixed, long meat." icon_state = "sausage" filling_color = "#CD5C5C" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 1) foodtype = MEAT var/roasted = FALSE @@ -129,35 +129,35 @@ trash = /obj/item/stack/rods icon_state = "kebab" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 8) + list_reagents = list(/datum/reagent/consumable/nutriment = 8) tastes = list("meat" = 3, "metal" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/kebab/human name = "human-kebab" desc = "A human meat, on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("tender meat" = 3, "metal" = 1) foodtype = MEAT | GROSS /obj/item/reagent_containers/food/snacks/kebab/monkey name = "meat-kebab" desc = "Delicious meat, on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("meat" = 3, "metal" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/kebab/tofu name = "tofu-kebab" desc = "Vegan meat, on a stick." - bonus_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) tastes = list("tofu" = 3, "metal" = 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/kebab/tail name = "lizard-tail kebab" desc = "Severed lizard tail on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("meat" = 8, "metal" = 4, "scales" = 1) foodtype = MEAT @@ -165,7 +165,7 @@ name = "raw khinkali" desc = "One hundred khinkalis? Do I look like a pig?" icon_state = "khinkali" - list_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/garlic = 1) cooked_type = /obj/item/reagent_containers/food/snacks/khinkali tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) foodtype = MEAT @@ -174,7 +174,7 @@ name = "khinkali" desc = "One hundred khinkalis? Do I look like a pig?" icon_state = "khinkali" - list_reagents = list("nutriment" = 4, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/garlic = 1) bitesize = 3 filling_color = "#F0F0F0" tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) @@ -185,7 +185,7 @@ desc = "Just add water!" icon_state = "monkeycube" bitesize = 12 - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#CD853F" tastes = list("the jungle" = 1, "bananas" = 1) foodtype = MEAT | SUGAR @@ -211,7 +211,7 @@ name = "gorilla cube" desc = "A Waffle Co. brand gorilla cube. Now with extra molecules!" bitesize = 20 - list_reagents = list("nutriment" = 15) + list_reagents = list(/datum/reagent/consumable/nutriment = 15) tastes = list("the jungle" = 1, "bananas" = 1, "jimmies" = 1) spawned_mob = /mob/living/simple_animal/hostile/gorilla @@ -219,10 +219,10 @@ name = "enchiladas" desc = "Viva La Mexico!" icon_state = "enchiladas" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 4 filling_color = "#FFA07A" - list_reagents = list("nutriment" = 8, "capsaicin" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/capsaicin = 6) tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) foodtype = MEAT @@ -231,8 +231,8 @@ desc = "Even non-vegetarians will LOVE this!" icon_state = "stewedsoymeat" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8) filling_color = "#D2691E" tastes = list("soy" = 1, "vegetables" = 1) foodtype = VEGETABLES @@ -246,8 +246,8 @@ desc = "A giant spider's leg that's still twitching after being cooked. Gross!" icon_state = "spiderlegcooked" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "capsaicin" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 3, "capsaicin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/capsaicin = 2) filling_color = "#000000" tastes = list("hot peppers" = 1, "cobwebs" = 1) foodtype = MEAT @@ -257,8 +257,8 @@ desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?" icon_state = "spidereggsham" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) bitesize = 4 filling_color = "#7FFF00" tastes = list("meat" = 1, "the colour green" = 1) @@ -268,8 +268,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "capsaicin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC @@ -277,8 +277,8 @@ /obj/item/reagent_containers/food/snacks/nugget name = "chicken nugget" filling_color = "#B22222" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("\"chicken\"" = 1) foodtype = MEAT @@ -292,8 +292,8 @@ name = "pig in a blanket" desc = "A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it." icon_state = "pigblanket" - list_reagents = list("nutriment" = 6, "vitamin" = 1) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#800000" tastes = list("meat" = 1, "butter" = 1) @@ -302,7 +302,7 @@ desc = "Not so delicious rat meat, on a stick." icon_state = "ratkebab" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 6, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("rat meat" = 1, "metal" = 1) foodtype = MEAT | GROSS @@ -310,4 +310,4 @@ name = "double rat-kebab" icon_state = "doubleratkebab" tastes = list("rat meat" = 2, "metal" = 1) - bonus_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index a38ac23848bb..3640558f0a55 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -7,7 +7,7 @@ icon_state = "cheesewheel" slice_path = /obj/item/reagent_containers/food/snacks/cheesewedge slices_num = 5 - list_reagents = list("nutriment" = 15, "vitamin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/nutriment/vitamin = 5) w_class = WEIGHT_CLASS_NORMAL tastes = list("cheese" = 1) foodtype = DAIRY @@ -17,7 +17,7 @@ desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." icon_state = "cheesewedge" filling_color = "#FFD700" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cheese" = 1) foodtype = DAIRY @@ -28,13 +28,13 @@ filling_color = "#FF1493" tastes = list("watermelon" = 1) foodtype = FRUIT - juice_results = list("watermelonjuice" = 5) + juice_results = list(/datum/reagent/consumable/watermelonjuice = 5) /obj/item/reagent_containers/food/snacks/candy_corn name = "candy corn" desc = "It's a handful of candy corn. Can be stored in a detective's hat." icon_state = "candy_corn" - list_reagents = list("nutriment" = 4, "sugar" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2) filling_color = "#FF8C00" tastes = list("candy corn" = 1) foodtype = JUNKFOOD | SUGAR @@ -51,7 +51,7 @@ name = "chocolate bar" desc = "Such, sweet, fattening food." icon_state = "chocolatebar" - list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -60,7 +60,7 @@ name = "huge mushroom slice" desc = "A slice from a huge mushroom." icon_state = "hugemushroomslice" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("mushroom" = 1) foodtype = VEGETABLES @@ -69,7 +69,7 @@ desc = "Now let's find some cinema." icon_state = "popcorn" trash = /obj/item/trash/popcorn - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 filling_color = "#FFEFD5" tastes = list("popcorn" = 3, "butter" = 1) @@ -83,8 +83,8 @@ name = "loaded baked potato" desc = "Totally baked." icon_state = "loadedbakedpotato" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#D2B48C" tastes = list("potato" = 1) foodtype = VEGETABLES | DAIRY @@ -94,7 +94,7 @@ desc = "AKA: French Fries, Freedom Fries, etc." icon_state = "fries" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) filling_color = "#FFD700" tastes = list("fries" = 3, "salt" = 1) foodtype = VEGETABLES | GRAIN | FRIED @@ -103,7 +103,7 @@ name = "tator tot" desc = "A large fried potato nugget that may or may not try to valid you." icon_state = "tatortot" - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) filling_color = "FFD700" tastes = list("potato" = 3, "valids" = 1) foodtype = FRIED | VEGETABLES @@ -113,7 +113,7 @@ desc = "Dope from a soy." icon_state = "soydope" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#DEB887" tastes = list("soy" = 1) foodtype = VEGETABLES @@ -123,8 +123,8 @@ desc = "Fries. Covered in cheese. Duh." icon_state = "cheesyfries" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#FFD700" tastes = list("fries" = 3, "cheese" = 1) foodtype = VEGETABLES | GRAIN @@ -133,7 +133,7 @@ name = "burned mess" desc = "Someone should be demoted from cook for this." icon_state = "badrecipe" - list_reagents = list("bad_food" = 30) + list_reagents = list(/datum/reagent/toxin/bad_food = 30) filling_color = "#8B4513" foodtype = GROSS @@ -142,7 +142,7 @@ desc = "Tasty fries from fresh Carrots." icon_state = "carrotfries" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 3, "oculine" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFA500" tastes = list("carrots" = 3, "salt" = 1) foodtype = VEGETABLES @@ -152,8 +152,8 @@ desc = "An apple coated in sugary sweetness." icon_state = "candiedapple" bitesize = 3 - bonus_reagents = list("nutriment" = 2, "sugar" = 3) - list_reagents = list("nutriment" = 3, "sugar" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 2) filling_color = "#FF4500" tastes = list("apple" = 2, "sweetness" = 2) foodtype = JUNKFOOD | FRUIT | SUGAR @@ -164,7 +164,7 @@ icon_state = "mint" bitesize = 1 trash = /obj/item/trash/plate - list_reagents = list("minttoxin" = 2) + list_reagents = list(/datum/reagent/toxin/minttoxin = 2) filling_color = "#800000" foodtype = TOXIC | SUGAR @@ -172,8 +172,8 @@ name = "egg wrap" desc = "The precursor to Pigs in a Blanket." icon_state = "eggwrap" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#F0E68C" tastes = list("egg" = 1) foodtype = MEAT | GRAIN @@ -182,8 +182,8 @@ name = "tin of beans" desc = "Musical fruit in a slightly less musical container." icon_state = "beans" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 10) filling_color = "#B22222" tastes = list("beans" = 1) foodtype = VEGETABLES @@ -192,7 +192,7 @@ name = "spider eggs" desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health." icon_state = "spidereggs" - list_reagents = list("nutriment" = 2, "toxin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin = 2) filling_color = "#008000" tastes = list("cobwebs" = 1) foodtype = MEAT | TOXIC @@ -201,7 +201,7 @@ name = "spiderling" desc = "It's slightly twitching in your hand. Ew..." icon_state = "spiderling" - list_reagents = list("nutriment" = 1, "toxin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 4) filling_color = "#00800" tastes = list("cobwebs" = 1, "guts" = 2) foodtype = MEAT | TOXIC @@ -210,7 +210,7 @@ name = "spider lollipop" desc = "Still gross, but at least it has a mountain of sugar on it." icon_state = "spiderlollipop" - list_reagents = list("nutriment" = 1, "toxin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //lollipop, but vitamins = toxins + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins filling_color = "#00800" tastes = list("cobwebs" = 1, "sugar" = 2) foodtype = JUNKFOOD | SUGAR @@ -219,8 +219,8 @@ name = "chocolate coin" desc = "A completely edible but nonflippable festive coin." icon_state = "chococoin" - bonus_reagents = list("nutriment" = 1, "sugar" = 1) - list_reagents = list("nutriment" = 3, "cocoa" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/coco = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -229,8 +229,8 @@ name = "fudge dice" desc = "A little cube of chocolate that tends to have a less intense taste if you eat too many at once." icon_state = "chocodice" - bonus_reagents = list("nutriment" = 1, "sugar" = 1) - list_reagents = list("nutriment" = 3, "cocoa" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/coco = 1) filling_color = "#A0522D" trash = /obj/item/dice/fudge tastes = list("fudge" = 1) @@ -240,8 +240,8 @@ name = "chocolate orange" desc = "A festive chocolate orange." icon_state = "chocoorange" - bonus_reagents = list("nutriment" = 1, "sugar" = 1) - list_reagents = list("nutriment" = 3, "sugar" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 1) filling_color = "#A0522D" tastes = list("chocolate" = 3, "oranges" = 1) foodtype = JUNKFOOD | SUGAR @@ -251,8 +251,8 @@ desc = "The only good recipe for eggplant." icon_state = "eggplantparm" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#BA55D3" tastes = list("eggplant" = 3, "cheese" = 1) foodtype = VEGETABLES | DAIRY @@ -262,7 +262,7 @@ desc = "The base for all your burritos." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "tortilla" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFEFD5" tastes = list("tortilla" = 1) foodtype = GRAIN @@ -271,8 +271,8 @@ name = "burrito" desc = "Tortilla wrapped goodness." icon_state = "burrito" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 4, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFEFD5" tastes = list("torilla" = 2, "meat" = 3) foodtype = GRAIN | MEAT @@ -281,8 +281,8 @@ name = "cheesy burrito" desc = "It's a burrito filled with cheese." icon_state = "cheesyburrito" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 4, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFD800" tastes = list("torilla" = 2, "meat" = 3, "cheese" = 1) foodtype = GRAIN | MEAT | DAIRY @@ -291,8 +291,8 @@ name = "carne asada burrito" desc = "The best burrito for meat lovers." icon_state = "carneburrito" - bonus_reagents = list("nutriment" = 2, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#A0522D" tastes = list("torilla" = 2, "meat" = 4) foodtype = GRAIN | MEAT @@ -301,8 +301,8 @@ name = "fuego plasma burrito" desc = "A super spicy burrito." icon_state = "fuegoburrito" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) - list_reagents = list("nutriment" = 4, "capsaicin" = 5, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#FF2000" tastes = list("torilla" = 2, "meat" = 3, "hot peppers" = 1) foodtype = GRAIN | MEAT @@ -312,7 +312,7 @@ desc = "Made with roasted sweet potatoes!" icon_state = "yakiimo" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 5, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#8B1105" tastes = list("sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -322,7 +322,7 @@ desc = "Sweet and crunchy." icon_state = "roastparsnip" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 3, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FF5500" tastes = list("parsnip" = 1) foodtype = VEGETABLES @@ -331,8 +331,8 @@ name = "melon fruit bowl" desc = "For people who wants edible fruit bowls." icon_state = "melonfruitbowl" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FF5500" w_class = WEIGHT_CLASS_NORMAL tastes = list("melon" = 1) @@ -342,8 +342,8 @@ name = "space freezy" desc = "The best icecream in space." icon_state = "spacefreezy" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "bluecherryjelly" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/bluecherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#87CEFA" tastes = list("blue cherries" = 2, "ice cream" = 2) foodtype = FRUIT | DAIRY @@ -352,8 +352,8 @@ name = "sundae" desc = "A classic dessert." icon_state = "sundae" - bonus_reagents = list("nutriment" = 2, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -362,8 +362,8 @@ name = "honkdae" desc = "The clown's favorite dessert." icon_state = "honkdae" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "banana" = 10, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 10, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -372,8 +372,8 @@ name = "nachos" desc = "Chips from Space Mexico." icon_state = "nachos" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#F4A460" tastes = list("nachos" = 1) foodtype = VEGETABLES | FRIED @@ -382,8 +382,8 @@ name = "cheesy nachos" desc = "The delicious combination of nachos and melting cheese." icon_state = "cheesynachos" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#FFD700" tastes = list("nachos" = 2, "cheese" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -392,8 +392,8 @@ name = "Cuban nachos" desc = "That's some dangerously spicy nachos." icon_state = "cubannachos" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) - list_reagents = list("nutriment" = 7, "capsaicin" = 8, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/capsaicin = 8, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#DC143C" tastes = list("nachos" = 2, "hot pepper" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -402,8 +402,8 @@ name = "melon keg" desc = "Who knew vodka was a fruit?" icon_state = "melonkeg" - bonus_reagents = list("nutriment" = 3, "vitamin" = 3) - list_reagents = list("nutriment" = 9, "vodka" = 15, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/ethanol/vodka = 15, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FFD700" volume = 80 bitesize = 5 @@ -414,8 +414,8 @@ name = "honey nut bar" desc = "Oats and nuts compressed together into a bar, held together with a honey glaze." icon_state = "honeybar" - bonus_reagents = list("nutriment" = 2, "honey" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 5, "honey" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/honey = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/honey = 5) filling_color = "#F2CE91" tastes = list("oats" = 3, "nuts" = 2, "honey" = 1) foodtype = FRUIT | SUGAR @@ -424,8 +424,8 @@ name = "stuffed legion" desc = "The former skull of a damned human, filled with goliath meat. It has a decorative lava pool made of ketchup and hotsauce." icon_state = "stuffed_legion" - bonus_reagents = list("vitamin" = 3, "capsaicin" = 1, "tricordrazine" = 5) - list_reagents = list("nutriment" = 5, "vitamin" = 5, "capsaicin" = 2, "tricordrazine" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/medicine/tricordrazine = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/medicine/tricordrazine = 10) tastes = list("death" = 2, "rock" = 1, "meat" = 1, "hot peppers" = 1) foodtype = MEAT @@ -434,8 +434,8 @@ name = "Powercrepe" desc = "With great power, comes great crepes. It looks like a pancake filled with jelly but packs quite a punch." icon_state = "powercrepe" - bonus_reagents = list("nutriment" = 5, "vitamin" = 3, "iron" = 10) - list_reagents = list("nutriment" = 10, "vitamin" = 5, "cherryjelly" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/iron = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/cherryjelly = 5) force = 20 throwforce = 10 block_chance = 50 @@ -450,7 +450,7 @@ desc = "A delicious lollipop. Makes for a great Valentine's present." icon = 'icons/obj/lollipop.dmi' icon_state = "lollipop_stick" - list_reagents = list("nutriment" = 1, "vitamin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //Honk + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //Honk var/mutable_appearance/head var/headcolor = rgb(0, 0, 0) tastes = list("candy" = 1) @@ -492,7 +492,7 @@ desc = "A colorful, sugary gumball." icon = 'icons/obj/lollipop.dmi' icon_state = "gumball" - list_reagents = list("sugar" = 5, "bicaridine" = 2, "kelotane" = 2) //Kek + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/bicaridine = 2, /datum/reagent/medicine/kelotane = 2) //Kek tastes = list("candy") foodtype = JUNKFOOD @@ -519,8 +519,8 @@ name = "taco" desc = "A traditional taco with meat, cheese, and lettuce." icon_state = "taco" - bonus_reagents = list("nutriment" = 3, "vitamin" = 2) - list_reagents = list("nutriment" = 4, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "F0D830" tastes = list("taco" = 4, "meat" = 2, "cheese" = 2, "lettuce" = 1) foodtype = MEAT | DAIRY | GRAIN | VEGETABLES @@ -528,8 +528,8 @@ /obj/item/reagent_containers/food/snacks/taco/plain desc = "A traditional taco with meat and cheese, minus the rabbit food." icon_state = "taco_plain" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 3, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("taco" = 4, "meat" = 2, "cheese" = 2) foodtype = MEAT | DAIRY | GRAIN @@ -537,8 +537,8 @@ name = "Bran Requests Cereal" desc = "A dry cereal that satiates your requests for bran. Tastes uniquely like raisins and salt." icon_state = "bran_requests" - list_reagents = list("nutriment" = 3, "vitamin" = 2, "sodiumchloride" = 5) - bonus_reagents = list("sodiumchloride" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/sodiumchloride = 5) + bonus_reagents = list(/datum/reagent/consumable/sodiumchloride = 10) tastes = list("bran" = 4, "raisins" = 3, "salt" = 1) foodtype = GRAIN | FRUIT @@ -546,7 +546,7 @@ name = "stick of butter" desc = "A stick of delicious, golden, fatty goodness." icon_state = "butter" - list_reagents = list("nutriment" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#FFD700" tastes = list("butter" = 1) foodtype = DAIRY @@ -555,7 +555,7 @@ name = "onion rings" desc = "Onion slices coated in batter." icon_state = "onionrings" - list_reagents = list("nutriment" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3) filling_color = "#C0C9A0" gender = PLURAL tastes = list("batter" = 3, "onion" = 1) @@ -573,7 +573,23 @@ name = "chocolate" desc = "A tiny and sweet chocolate." icon_state = "tiny_chocolate" - list_reagents = list("nutriment" = 1, "sugar" = 1, "cocoa" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR + +/obj/item/reagent_containers/food/snacks/cannedpeaches + name = "Canned Peaches" + desc = "Just a nice can of ripe peaches swimming in their own juices." + icon_state = "peachcan" + list_reagents = list(/datum/reagent/consumable/peachjuice = 20, /datum/reagent/consumable/sugar = 8, /datum/reagent/consumable/nutriment = 2) + filling_color = "#ffdf26" + w_class = WEIGHT_CLASS_NORMAL + tastes = list("peaches" = 7, "tin" = 1) + foodtype = FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/cannedpeaches/maint + name = "Maintenance Peaches" + desc = "I have a mouth and I must eat." + icon_state = "peachcanmaint" + tastes = list("peaches" = 1, "tin" = 7) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index bd108a27f7b7..307c7e27f14a 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -7,8 +7,8 @@ desc = "Goes great with robust coffee." icon_state = "donut1" bitesize = 5 - bonus_reagents = list("sugar" = 1) - list_reagents = list("nutriment" = 3, "sprinkles" = 1, "sugar" = 2) + bonus_reagents = list(/datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/sugar = 2) filling_color = "#D2691E" tastes = list("donut" = 1) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR @@ -27,7 +27,7 @@ is_frosted = TRUE name = "frosted [name]" icon_state = frosted_icon //delish~! - reagents.add_reagent("sprinkles", 1) + reagents.add_reagent(/datum/reagent/consumable/sprinkles, 1) filling_color = "#FF69B4" return TRUE @@ -53,7 +53,7 @@ /obj/item/reagent_containers/food/snacks/donut/chaos/Initialize() . = ..() - extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine") + extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, /datum/reagent/drug/krokodil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco, /datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice, /datum/reagent/medicine/omnizine) reagents.add_reagent("[extra_reagent]", 3) /obj/item/reagent_containers/food/snacks/donut/jelly @@ -61,8 +61,8 @@ desc = "You jelly?" icon_state = "jdonut1" frosted_icon = "jdonut2" - bonus_reagents = list("sugar" = 1, "vitamin" = 1) - extra_reagent = "berryjuice" + bonus_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + extra_reagent = /datum/reagent/consumable/berryjuice tastes = list("jelly" = 1, "donut" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR @@ -75,19 +75,19 @@ name = "jelly donut" desc = "You jelly?" icon_state = "jdonut1" - extra_reagent = "slimejelly" + extra_reagent = /datum/reagent/toxin/slimejelly foodtype = JUNKFOOD | GRAIN | FRIED | TOXIC | SUGAR /obj/item/reagent_containers/food/snacks/donut/jelly/cherryjelly name = "jelly donut" desc = "You jelly?" icon_state = "jdonut1" - extra_reagent = "cherryjelly" + extra_reagent = /datum/reagent/consumable/cherryjelly foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT /obj/item/reagent_containers/food/snacks/donut/meat - bonus_reagents = list("ketchup" = 1) - list_reagents = list("nutriment" = 3, "ketchup" = 2) + bonus_reagents = list(/datum/reagent/consumable/ketchup = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ketchup = 2) tastes = list("meat" = 1) foodtype = JUNKFOOD | MEAT | GROSS | FRIED @@ -98,8 +98,8 @@ name = "muffin" desc = "A delicious and spongy little cake." icon_state = "muffin" - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#F4A460" tastes = list("muffin" = 1) foodtype = GRAIN | SUGAR @@ -123,8 +123,8 @@ name = "chawanmushi" desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." icon_state = "chawanmushi" - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#FFE4E1" tastes = list("custard" = 1) foodtype = GRAIN | MEAT | VEGETABLES @@ -136,8 +136,8 @@ desc = "Mmm, waffles." icon_state = "waffles" trash = /obj/item/trash/waffles - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#D2691E" tastes = list("waffles" = 1) foodtype = GRAIN | SUGAR @@ -147,8 +147,8 @@ desc = "Not made of people. Honest." //Totally people. icon_state = "soylent_green" trash = /obj/item/trash/waffles - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 10, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "people" = 1) foodtype = GRAIN | GROSS | MEAT @@ -158,8 +158,8 @@ desc = "Not made of people. Honest." //Actually honest for once. icon_state = "soylent_yellow" trash = /obj/item/trash/waffles - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 10, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "the colour green" = 1) foodtype = GRAIN @@ -170,8 +170,8 @@ icon_state = "rofflewaffles" trash = /obj/item/trash/waffles bitesize = 4 - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 8, "mushroomhallucinogen" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/drug/mushroomhallucinogen = 2, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#00BFFF" tastes = list("waffle" = 1, "mushrooms" = 1) foodtype = GRAIN | VEGETABLES | TOXIC | SUGAR @@ -183,8 +183,8 @@ desc = "COOKIE!!!" icon_state = "COOKIE!!!" bitesize = 1 - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#F0E68C" tastes = list("cookie" = 1) foodtype = GRAIN | SUGAR @@ -193,7 +193,7 @@ name = "\improper Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm filling_color = "#CD853F" tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) @@ -202,8 +202,9 @@ /obj/item/reagent_containers/food/snacks/donkpocket/warm name = "warm Donk-pocket" desc = "The heated food of choice for the seasoned traitor." - bonus_reagents = list("omnizine" = 3) - list_reagents = list("nutriment" = 4, "omnizine" = 3) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3) + cooked_type = null tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) foodtype = GRAIN @@ -211,7 +212,7 @@ name = "\improper Dank-pocket" desc = "The food of choice for the seasoned botanist." icon_state = "dankpocket" - list_reagents = list("lipolicide" = 3, "space_drugs" = 3, "nutriment" = 4) + list_reagents = list(/datum/reagent/toxin/lipolicide = 3, /datum/reagent/drug/space_drugs = 3, /datum/reagent/consumable/nutriment = 4) filling_color = "#00FF00" tastes = list("meat" = 2, "dough" = 2) foodtype = GRAIN | VEGETABLES @@ -220,8 +221,8 @@ name = "fortune cookie" desc = "A true prophecy in each cookie!" icon_state = "fortune_cookie" - bonus_reagents = list("nutriment" = 2) - list_reagents = list("nutriment" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3) filling_color = "#F4A460" tastes = list("cookie" = 1) foodtype = GRAIN | SUGAR @@ -230,8 +231,8 @@ name = "poppy pretzel" desc = "It's all twisted up!" icon_state = "poppypretzel" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#F0E68C" tastes = list("pretzel" = 1) foodtype = GRAIN | SUGAR @@ -240,8 +241,8 @@ name = "plump helmet biscuit" desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." icon_state = "phelmbiscuit" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#F0E68C" tastes = list("mushroom" = 1, "biscuit" = 1) foodtype = GRAIN | VEGETABLES @@ -251,18 +252,18 @@ if(fey) name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) . = ..() if(fey) - reagents.add_reagent("omnizine", 5) + reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) /obj/item/reagent_containers/food/snacks/cracker name = "cracker" desc = "It's a salted cracker." icon_state = "cracker" bitesize = 1 - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#F0E68C" tastes = list("cracker" = 1) foodtype = GRAIN @@ -272,8 +273,8 @@ desc = "Fresh footlong ready to go down on." icon_state = "hotdog" bitesize = 3 - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/ketchup = 3, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -282,8 +283,8 @@ name = "meat bun" desc = "Has the potential to not be Dog." icon_state = "meatbun" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -292,7 +293,7 @@ name = "khachapuri" desc = "Bread with egg and cheese?" icon_state = "khachapuri" - list_reagents = list("nutriment" = 12, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFF4D" tastes = list("bread" = 1, "egg" = 1, "cheese" = 1) foodtype = GRAIN | MEAT | DAIRY @@ -302,8 +303,8 @@ name = "sugar cookie" desc = "Just like your little sister used to make." icon_state = "sugarcookie" - bonus_reagents = list("nutriment" = 1, "sugar" = 3) - list_reagents = list("nutriment" = 3, "sugar" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 3) filling_color = "#CD853F" tastes = list("sweetness" = 1) foodtype = GRAIN | JUNKFOOD | SUGAR @@ -312,8 +313,8 @@ name = "chocolate cornet" desc = "Which side's the head, the fat end or the thin end?" icon_state = "chococornet" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFE4C4" tastes = list("biscuit" = 3, "chocolate" = 1) foodtype = GRAIN | JUNKFOOD @@ -322,8 +323,8 @@ name = "oatmeal cookie" desc = "The best of both cookie and oat." icon_state = "oatmealcookie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#D2691E" tastes = list("cookie" = 2, "oat" = 1) foodtype = GRAIN @@ -332,8 +333,8 @@ name = "raisin cookie" desc = "Why would you put raisins on a cookie?" icon_state = "raisincookie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cookie" = 1, "raisins" = 1) foodtype = GRAIN | FRUIT @@ -342,8 +343,8 @@ name = "cherry cupcake" desc = "A sweet cupcake with cherry bits." icon_state = "cherrycupcake" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cake" = 3, "cherry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -352,8 +353,8 @@ name = "blue cherry cupcake" desc = "Blue cherries inside a delicious cupcake." icon_state = "bluecherrycupcake" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cake" = 3, "blue cherry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -362,8 +363,8 @@ name = "honey bun" desc = "A sticky pastry bun glazed with honey." icon_state = "honeybun" - bonus_reagents = list("nutriment" = 1, "honey" = 1) - list_reagents = list("nutriment" = 5, "honey" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/honey = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/honey = 5) filling_color = "#F2CE91" tastes = list("pastry" = 1, "sweetness" = 1) foodtype = GRAIN @@ -375,8 +376,8 @@ desc = "A fluffy pancake. The softer, superior relative of the waffle." icon_state = "pancakes_1" item_state = "pancakes" - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 4, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#D2691E" tastes = list("pancakes" = 1) foodtype = GRAIN | SUGAR @@ -386,8 +387,8 @@ desc = "A fluffy and delicious blueberry pancake." icon_state = "bbpancakes_1" item_state = "bbpancakes" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pancakes" = 1, "blueberries" = 1) /obj/item/reagent_containers/food/snacks/pancakes/chocolatechip @@ -395,8 +396,8 @@ desc = "A fluffy and delicious chocolate chip pancake." icon_state = "ccpancakes_1" item_state = "ccpancakes" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pancakes" = 1, "chocolate" = 1) /obj/item/reagent_containers/food/snacks/pancakes/Initialize() diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 285361b0451c..ce0a6f8d970a 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -5,7 +5,7 @@ bitesize = 3 w_class = WEIGHT_CLASS_NORMAL volume = 80 - list_reagents = list("nutriment" = 10, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1) foodtype = GRAIN @@ -14,7 +14,7 @@ desc = "A simple pie, still delicious." icon_state = "pie" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pie - bonus_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("pie" = 1) foodtype = GRAIN @@ -23,8 +23,8 @@ desc = "Just like back home, on clown planet! HONK!" icon_state = "pie" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1) foodtype = GRAIN | DAIRY | SUGAR var/stunning = TRUE @@ -66,8 +66,8 @@ name = "berry clafoutis" desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 10, "berryjuice" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/berryjuice = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1, "blackberries" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -75,8 +75,8 @@ name = "beary pie" desc = "No brown bears, this is a good sign." icon_state = "bearypie" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) - list_reagents = list("nutriment" = 2, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pie" = 1, "meat" = 1, "salmon" = 1) foodtype = GRAIN | SUGAR @@ -84,7 +84,7 @@ name = "meat-pie" icon_state = "meatpie" desc = "An old barber recipe, very delicious!" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -93,7 +93,7 @@ name = "tofu-pie" icon_state = "meatpie" desc = "A delicious tofu pie." - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1, "tofu" = 1) foodtype = GRAIN @@ -103,8 +103,8 @@ desc = "Sweet and tasty poison pie." icon_state = "amanita_pie" bitesize = 4 - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "amatoxin" = 3, "mushroomhallucinogen" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/amatoxin = 3, /datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | TOXIC | GROSS @@ -113,7 +113,7 @@ name = "plump pie" desc = "I bet you love stuff made out of plump helmets!" icon_state = "plump_pie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES @@ -124,9 +124,9 @@ if(fey) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4) if(fey) - reagents.add_reagent("omnizine", 5) + reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) /obj/item/reagent_containers/food/snacks/pie/xemeatpie @@ -134,7 +134,7 @@ icon_state = "xenomeatpie" desc = "A delicious meatpie. Probably heretical." trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "meat" = 1, "acid" = 1) foodtype = GRAIN | MEAT @@ -143,7 +143,7 @@ name = "apple pie" desc = "A pie containing sweet sweet love...or apple." icon_state = "applepie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pie" = 1, "apple" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -153,7 +153,7 @@ name = "cherry pie" desc = "Taste so good, make a grown man cry." icon_state = "cherrypie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 7, "Nicole Paige Brooks" = 2) foodtype = GRAIN | FRUIT | SUGAR @@ -164,7 +164,7 @@ icon_state = "pumpkinpie" slice_path = /obj/item/reagent_containers/food/snacks/pumpkinpieslice slices_num = 5 - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "pumpkin" = 1) foodtype = GRAIN | VEGETABLES @@ -175,7 +175,7 @@ icon_state = "pumpkinpieslice" trash = /obj/item/trash/plate filling_color = "#FFA500" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("pie" = 1, "pumpkin" = 1) foodtype = GRAIN | VEGETABLES @@ -183,8 +183,8 @@ name = "golden apple streusel tart" desc = "A tasty dessert that won't make it through a metal detector." icon_state = "gappletart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/gold = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -192,8 +192,8 @@ name = "grape tart" desc = "A tasty dessert that reminds you of the wine you didn't make." icon_state = "grapetart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "grape" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -203,7 +203,7 @@ icon_state = "blumpkinpie" slice_path = /obj/item/reagent_containers/food/snacks/blumpkinpieslice slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("pie" = 1, "a mouthful of pool water" = 1) foodtype = GRAIN | VEGETABLES @@ -214,7 +214,7 @@ icon_state = "blumpkinpieslice" trash = /obj/item/trash/plate filling_color = "#1E90FF" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("pie" = 1, "a mouthful of pool water" = 1) foodtype = GRAIN | VEGETABLES @@ -224,7 +224,7 @@ icon_state = "dulcedebatata" slice_path = /obj/item/reagent_containers/food/snacks/dulcedebatataslice slices_num = 5 - bonus_reagents = list("nutriment" = 4, "vitamin" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 8) tastes = list("jelly" = 1, "sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -235,7 +235,7 @@ icon_state = "dulcedebatataslice" trash = /obj/item/trash/plate filling_color = "#8B4513" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("jelly" = 1, "sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -243,6 +243,6 @@ name = "frosty pie" desc = "Tastes like blue and cold." icon_state = "frostypie" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("mint" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index e6d04cfc4561..cb2ea093ca3d 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -6,13 +6,13 @@ w_class = WEIGHT_CLASS_NORMAL slices_num = 6 volume = 80 - list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1) foodtype = GRAIN | DAIRY | VEGETABLES /obj/item/reagent_containers/food/snacks/pizzaslice icon = 'icons/obj/food/pizzaspaghetti.dmi' - list_reagents = list("nutriment" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) foodtype = GRAIN | DAIRY | VEGETABLES /obj/item/reagent_containers/food/snacks/pizza/margherita @@ -20,12 +20,12 @@ desc = "The most cheezy pizza in galaxy." icon_state = "pizzamargherita" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/margherita - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1) foodtype = GRAIN | VEGETABLES /obj/item/reagent_containers/food/snacks/pizza/margherita/robo/Initialize() - bonus_reagents += list("nanomachines" = 70) + bonus_reagents += list(/datum/reagent/nanomachines = 70) return ..() /obj/item/reagent_containers/food/snacks/pizzaslice/margherita @@ -41,8 +41,8 @@ desc = "Greasy pizza with delicious meat." icon_state = "meatpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/meat - bonus_reagents = list("nutriment" = 5, "vitamin" = 8) - list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 8) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 8) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES| DAIRY | MEAT @@ -59,8 +59,8 @@ desc = "Very special pizza." icon_state = "mushroompizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 30, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -77,8 +77,8 @@ desc = "No one of Tomatos Sapiens were harmed during making this pizza." icon_state = "vegetablepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/vegetable - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/oculine = 12, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 2, "cheese" = 1, "carrot" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -95,8 +95,8 @@ desc = "Who thought this would be a good idea?" icon_state = "donkpocketpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "omnizine" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD @@ -113,8 +113,8 @@ desc = "The hippie's pizza of choice." icon_state = "dankpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/dank - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 25, "doctorsdelight" = 5, "tomatojuice" = 6, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY @@ -131,7 +131,7 @@ desc = "You can really smell the sassiness." icon_state = "sassysagepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/sassysage - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -148,7 +148,7 @@ desc = "The pizza equivalent of Einstein's riddle." icon_state = "pineapplepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 2, "ham" = 2) foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT | PINEAPPLE @@ -165,7 +165,7 @@ desc = "Hello, you've reached Arnold's pizza shop. I'm not here now, I'm out killing pepperoni." icon_state = "arnoldpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/arnold - bonus_reagents = list("nutriment" = 30, "vitamin" = 6, "iron" = 10, "omnizine" = 30) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/iron = 10, /datum/reagent/medicine/omnizine = 30) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2) /obj/item/reagent_containers/food/snacks/proc/try_break_off(mob/living/M, mob/living/user) //maybe i give you a pizza maybe i break off your arm diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index ec58737c02e5..4de2500b1440 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -5,7 +5,7 @@ trash = /obj/item/reagent_containers/glass/bowl bitesize = 3 w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 7, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1) foodtype = VEGETABLES @@ -17,8 +17,8 @@ name = "\improper Aesir salad" desc = "Probably too incredible for mortal men to fully enjoy." icon_state = "aesirsalad" - bonus_reagents = list("omnizine" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 8, "omnizine" = 8, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("leaves" = 1) foodtype = VEGETABLES @@ -26,8 +26,8 @@ name = "herb salad" desc = "A tasty salad with apples on top." icon_state = "herbsalad" - bonus_reagents = list("vitamin" = 4) - list_reagents = list("nutriment" = 8, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1, "apple" = 1) foodtype = VEGETABLES | FRUIT @@ -35,8 +35,8 @@ name = "valid salad" desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it." icon_state = "validsalad" - bonus_reagents = list("doctorsdelight" = 5, "vitamin" = 4) - list_reagents = list("nutriment" = 8, "doctorsdelight" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1) foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT @@ -44,8 +44,8 @@ name = "oatmeal" desc = "A nice bowl of oatmeal." icon_state = "oatmeal" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "milk" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/milk = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("oats" = 1, "milk" = 1) foodtype = DAIRY | GRAIN @@ -53,7 +53,7 @@ name = "fruit salad" desc = "Your standard fruit salad." icon_state = "fruitsalad" - bonus_reagents = list("nutriment" = 2, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("fruit" = 1) foodtype = FRUIT @@ -61,8 +61,8 @@ name = "jungle salad" desc = "Exotic fruits in a bowl." icon_state = "junglesalad" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "banana" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("fruit" = 1, "the jungle" = 1) foodtype = FRUIT @@ -70,8 +70,8 @@ name = "citrus delight" desc = "Citrus overload!" icon_state = "citrusdelight" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("sourness" = 1, "leaves" = 1) foodtype = FRUIT @@ -80,7 +80,7 @@ desc = "A bowl of raw rice." icon_state = "ricebowl" cooked_type = /obj/item/reagent_containers/food/snacks/salad/boiledrice - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) tastes = list("rice" = 1) foodtype = GRAIN | RAW @@ -88,8 +88,8 @@ name = "boiled rice" desc = "A warm bowl of rice." icon_state = "boiledrice" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("rice" = 1) foodtype = GRAIN @@ -97,7 +97,7 @@ name = "rice pudding" desc = "Everybody loves rice pudding!" icon_state = "ricepudding" - bonus_reagents = list("nutriment" = 4, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("rice" = 1, "sweetness" = 1) foodtype = GRAIN | DAIRY @@ -105,7 +105,7 @@ name = "rice and pork" desc = "Well, it looks like pork..." icon_state = "riceporkbowl" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("rice" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -113,6 +113,6 @@ name = "egg bowl" desc = "A bowl of rice with a fried egg." icon_state = "eggbowl" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("rice" = 1, "egg" = 1) foodtype = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017 diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 19caf628441e..11b13cc9a7d8 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "sandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 7, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = /obj/item/reagent_containers/food/snacks/toastedsandwich tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1) foodtype = GRAIN | VEGETABLES @@ -16,8 +16,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "toastedsandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "carbon" = 2) - list_reagents = list("nutriment" = 6, "carbon" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/carbon = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/carbon = 2) tastes = list("toast" = 1) foodtype = GRAIN @@ -27,8 +27,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "toastedsandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("toast" = 1, "cheese" = 1) foodtype = GRAIN | DAIRY @@ -43,13 +43,13 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jellysandwich/slime - bonus_reagents = list("slimejelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "slimejelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/jellysandwich/cherry - bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/icecreamsandwich @@ -57,8 +57,8 @@ desc = "Portable Ice-cream in its own packaging." icon = 'yogstation/icons/obj/food/food.dmi' icon_state = "icecreamsandwich" - bonus_reagents = list("nutriment" = 1, "ice" = 2) - list_reagents = list("nutriment" = 2, "ice" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/ice = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/ice = 2) tastes = list("ice cream" = 1) foodtype = GRAIN | DAIRY @@ -68,8 +68,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "notasandwich" trash = /obj/item/trash/plate - bonus_reagents = list("vitamin" = 6) - list_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("nothing suspicious" = 1) foodtype = GRAIN | GROSS @@ -84,13 +84,13 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jelliedtoast/cherry - bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 1, "cherryjelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT | SUGAR /obj/item/reagent_containers/food/snacks/jelliedtoast/slime - bonus_reagents = list("slimejelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC | SUGAR /obj/item/reagent_containers/food/snacks/twobread @@ -98,7 +98,7 @@ desc = "This seems awfully bitter." icon = 'icons/obj/food/burgerbread.dmi' icon_state = "twobread" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("bread" = 2) foodtype = GRAIN diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 2bf00c4e08e2..1002daf9e8f5 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -4,7 +4,7 @@ trash = /obj/item/reagent_containers/glass/bowl bitesize = 5 volume = 80 - list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("tasteless soup" = 1) foodtype = VEGETABLES @@ -16,7 +16,7 @@ name = "wish soup" desc = "I wish this was soup." icon_state = "wishsoup" - list_reagents = list("water" = 10) + list_reagents = list(/datum/reagent/water = 10) tastes = list("wishes" = 1) /obj/item/reagent_containers/food/snacks/soup/wish/Initialize() @@ -24,17 +24,17 @@ var/wish_true = prob(25) if(wish_true) desc = "A wish come true!" - bonus_reagents = list("nutriment" = 9, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/nutriment/vitamin = 1) if(wish_true) - reagents.add_reagent("nutriment", 9) - reagents.add_reagent("vitamin", 1) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 9) + reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/meatball name = "meatball soup" desc = "You've got balls kid, BALLS!" icon_state = "meatballsoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("meat" = 1) foodtype = MEAT @@ -42,8 +42,8 @@ name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" - bonus_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("slime" = 1) foodtype = TOXIC | SUGAR @@ -51,8 +51,8 @@ name = "tomato soup" desc = "Smells like copper." icon_state = "tomatosoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) - list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/blood = 10, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("iron" = 1) foodtype = GROSS @@ -61,8 +61,8 @@ desc = "A savory dish of alien wing wang in soy." icon_state = "wingfangchu" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "soysauce" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/soysauce = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("soy" = 1) foodtype = MEAT @@ -70,8 +70,8 @@ name = "clown's tears" desc = "Not very funny." icon_state = "clownstears" - bonus_reagents = list("nutriment" = 1, "banana" = 5, "vitamin" = 8, "clownstears" = 10) - list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 5, "vitamin" = 8, "clownstears" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/clownstears = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/banana = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/clownstears = 10) tastes = list("a bad joke" = 1) foodtype = FRUIT | SUGAR @@ -79,7 +79,7 @@ name = "vegetable soup" desc = "A true vegan meal." icon_state = "vegetablesoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("vegetables" = 1) foodtype = VEGETABLES @@ -87,7 +87,7 @@ name = "nettle soup" desc = "To think, the botanist would've beat you to death with one of these." icon_state = "nettlesoup" - bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("nettles" = 1) foodtype = VEGETABLES @@ -96,21 +96,21 @@ desc = "The mystery is, why aren't you eating it?" icon_state = "mysterysoup" var/extra_reagent = null - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) tastes = list("chaos" = 1) /obj/item/reagent_containers/food/snacks/soup/mystery/Initialize() . = ..() - extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine") - bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6) + extra_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, /datum/reagent/medicine/omnizine, /datum/reagent/consumable/banana, /datum/reagent/blood, /datum/reagent/toxin/slimejelly, /datum/reagent/toxin, /datum/reagent/consumable/banana, /datum/reagent/carbon, /datum/reagent/medicine/oculine) + bonus_reagents = list("[extra_reagent]" = 5, /datum/reagent/consumable/nutriment = 6) reagents.add_reagent("[extra_reagent]", 5) /obj/item/reagent_containers/food/snacks/soup/hotchili name = "hot chili" desc = "A five alarm Texan Chili!" icon_state = "hotchili" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("hot peppers" = 1) foodtype = VEGETABLES @@ -118,8 +118,8 @@ name = "cold chili" desc = "This slush is barely a liquid!" icon_state = "coldchili" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 5, "frostoil" = 1, "tomatojuice" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/frostoil = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("tomato" = 1, "mint" = 1) foodtype = VEGETABLES @@ -127,8 +127,8 @@ name = "monkey's delight" desc = "A delicious soup with dumplings and hunks of monkey meat simmered to perfection, in a broth that tastes faintly of bananas." icon_state = "monkeysdelight" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 10, "banana" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("the jungle" = 1, "banana" = 1) foodtype = FRUIT @@ -136,8 +136,8 @@ name = "tomato soup" desc = "Drinking this feels like being a vampire! A tomato vampire..." icon_state = "tomatosoup" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 3) - list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("tomato" = 1) foodtype = VEGETABLES @@ -145,7 +145,7 @@ name = "eyeball soup" desc = "It looks back at you..." icon_state = "eyeballsoup" - bonus_reagents = list("nutriment" = 1, "liquidgibs" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/liquidgibs = 3) tastes = list("tomato" = 1, "squirming" = 1) foodtype = MEAT | GROSS @@ -153,7 +153,7 @@ name = "milosoup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("milo" = 1) // wtf is milo foodtype = GROSS @@ -161,8 +161,8 @@ name = "chantrelle soup" desc = "A delicious and hearty mushroom soup." icon_state = "mushroomsoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 8, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("mushroom" = 1) foodtype = VEGETABLES @@ -170,7 +170,7 @@ name = "beet soup" desc = "Wait, how do you spell it again..?" icon_state = "beetsoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/beet/Initialize() @@ -184,8 +184,8 @@ desc = "Jello gelatin, from Alfred Hubbard's cookbook." icon_state = "spacylibertyduff" bitesize = 3 - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES @@ -194,8 +194,8 @@ desc = "Looks curiously toxic." icon_state = "amanitajelly" bitesize = 3 - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 3, "amatoxin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 3, /datum/reagent/toxin/amatoxin = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES | TOXIC @@ -203,8 +203,8 @@ name = "stew" desc = "A nice and warm stew. Healthy and strong." icon_state = "stew" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/tomatojuice = 5, /datum/reagent/consumable/nutriment/vitamin = 5) bitesize = 7 volume = 100 tastes = list("tomato" = 1, "carrot" = 1) @@ -214,7 +214,7 @@ name = "sweet potato soup" desc = "Delicious sweet potato in soup form." icon_state = "sweetpotatosoup" - bonus_reagents = list("nutriment" = 4, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("sweet potato" = 1) foodtype = VEGETABLES | SUGAR @@ -222,6 +222,6 @@ name = "red beet soup" desc = "Quite a delicacy." icon_state = "redbeetsoup" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("beet" = 1) foodtype = VEGETABLES diff --git a/code/modules/food_and_drinks/food/snacks_spaghetti.dm b/code/modules/food_and_drinks/food/snacks_spaghetti.dm index e14c9177ed0e..b30703e9a844 100644 --- a/code/modules/food_and_drinks/food/snacks_spaghetti.dm +++ b/code/modules/food_and_drinks/food/snacks_spaghetti.dm @@ -4,7 +4,7 @@ desc = "Now that's a nic'e pasta!" icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spaghetti" - list_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = /obj/item/reagent_containers/food/snacks/spaghetti/boiledspaghetti filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -23,8 +23,8 @@ desc = "A plain dish of noodles, this needs more ingredients." icon_state = "spaghettiboiled" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2) - list_reagents = list("nutriment" = 2, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = null custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pasta @@ -34,8 +34,8 @@ icon_state = "pastatomato" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 4) cooked_type = null filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) @@ -47,8 +47,8 @@ icon_state = "copypasta" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 12, "tomatojuice" = 20, "vitamin" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/tomatojuice = 20, /datum/reagent/consumable/nutriment/vitamin = 8) cooked_type = null filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) @@ -59,8 +59,8 @@ desc = "Now that's a nic'e meatball!" icon_state = "meatballspaghetti" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 8, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 4) cooked_type = null tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -70,8 +70,8 @@ desc = "A lawyers favourite." icon_state = "spesslaw" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) - list_reagents = list("nutriment" = 8, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 6) cooked_type = null tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) @@ -80,8 +80,8 @@ desc = "A nice mix of noodles and fried vegetables." icon_state = "chowmein" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 3, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 6) cooked_type = null tastes = list("noodle" = 1, "tomato" = 1) @@ -90,7 +90,7 @@ desc = "Nutritious, beefy and noodly." icon_state = "beefnoodle" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "liquidgibs" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/liquidgibs = 3) cooked_type = null tastes = list("noodle" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -100,7 +100,7 @@ desc = "Noodles covered in savory butter. Simple and slippery, but delicious." icon_state = "butternoodles" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = null tastes = list("noodle" = 1, "butter" = 1) foodtype = GRAIN | DAIRY \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 4e7dcecf3769..41c41783a6a4 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -7,7 +7,7 @@ desc = "Nougat love it or hate it." icon_state = "candy" trash = /obj/item/trash/candy - list_reagents = list("nutriment" = 1, "sugar" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) junkiness = 25 filling_color = "#D2691E" tastes = list("candy" = 1) @@ -18,7 +18,7 @@ icon_state = "sosjerky" desc = "Beef jerky made from the finest space cows." trash = /obj/item/trash/sosjerky - list_reagents = list("nutriment" = 1, "sugar" = 3, "sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/sodiumchloride = 2) junkiness = 25 filling_color = "#8B0000" tastes = list("dried meat" = 1) @@ -27,7 +27,7 @@ /obj/item/reagent_containers/food/snacks/sosjerky/healthy name = "homemade beef jerky" desc = "Homemade beef jerky made from the finest space cows." - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) junkiness = 0 /obj/item/reagent_containers/food/snacks/chips @@ -36,7 +36,7 @@ icon_state = "chips" trash = /obj/item/trash/chips bitesize = 1 - list_reagents = list("nutriment" = 1, "sugar" = 3, "sodiumchloride" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/sodiumchloride = 1) junkiness = 20 filling_color = "#FFD700" tastes = list("salt" = 1, "crisps" = 1) @@ -47,7 +47,7 @@ icon_state = "4no_raisins" desc = "Best raisins in the universe. Not sure why." trash = /obj/item/trash/raisins - list_reagents = list("nutriment" = 2, "sugar" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 4) junkiness = 25 filling_color = "#8B0000" tastes = list("dried raisins" = 1) @@ -57,7 +57,7 @@ /obj/item/reagent_containers/food/snacks/no_raisin/healthy name = "homemade raisins" desc = "Homemade raisins, the best in all of spess." - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) junkiness = 0 foodtype = FRUIT @@ -65,7 +65,7 @@ name = "space twinkie" icon_state = "space_twinkie" desc = "Guaranteed to survive longer than you will." - list_reagents = list("sugar" = 4) + list_reagents = list(/datum/reagent/consumable/sugar = 4) junkiness = 25 filling_color = "#FFD700" foodtype = JUNKFOOD | GRAIN | SUGAR @@ -76,7 +76,7 @@ desc = "Bite sized cheesie snacks that will honk all over your mouth." icon_state = "cheesie_honkers" trash = /obj/item/trash/cheesie - list_reagents = list("nutriment" = 1, "sugar" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) junkiness = 25 filling_color = "#FFD700" tastes = list("cheese" = 5, "crisps" = 2) @@ -88,7 +88,7 @@ icon_state = "syndi_cakes" desc = "An extremely moist snack cake that tastes just as good after being nuked." trash = /obj/item/trash/syndi_cakes - list_reagents = list("nutriment" = 4, "doctorsdelight" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5) filling_color = "#F5F5DC" tastes = list("sweetness" = 3, "cake" = 1) foodtype = GRAIN | FRUIT | VEGETABLES @@ -98,7 +98,7 @@ icon_state = "energybar" desc = "An energy bar with a lot of punch, you probably shouldn't eat this if you're not an Ethereal." trash = /obj/item/trash/energybar - list_reagents = list("nutriment" = 3, "liquidelectricity" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/liquidelectricity = 3) filling_color = "#97ee63" tastes = list("pure electricity" = 3, "fitness" = 2) foodtype = TOXIC diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index b0a22edb93d7..30b2ff5abb23 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -53,7 +53,7 @@ God bless America. /obj/machinery/deepfryer/Initialize() . = ..() create_reagents(50, OPENCONTAINER) - reagents.add_reagent("cooking_oil", 25) + reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25) component_parts = list() component_parts += new /obj/item/circuitboard/machine/deep_fryer(null) component_parts += new /obj/item/stock_parts/micro_laser(null) @@ -83,7 +83,7 @@ God bless America. I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = user) qdel(I) return - if(!reagents.has_reagent("cooking_oil")) + if(!reagents.has_reagent(/datum/reagent/consumable/cooking_oil)) to_chat(user, "[src] has no cooking oil to fry with!") return if(I.resistance_flags & INDESTRUCTIBLE) @@ -107,7 +107,7 @@ God bless America. /obj/machinery/deepfryer/process() ..() - var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent("cooking_oil") + var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) if(!C) return reagents.chem_temp = C.fry_temperature diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 9c01eaa13cd1..1843ad0991e8 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -35,16 +35,16 @@ dat += "Portion: [portion]
" for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Purge" + dat += "Purge" if (glasses > 0) - dat += "Pour in a glass" - dat += "Add to the mixer
" + dat += "Pour in a glass" + dat += "Add to the mixer
" dat += "
MIXER CONTENTS
" for(var/datum/reagent/R in mixer.reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Transfer back" + dat += "Transfer back" if (glasses > 0) - dat += "Pour in a glass" + dat += "Pour in a glass" dat += "
" dat += "

STORED FOOD
" for(var/V in stored_food) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 4341217fe59a..5bd0d76ddb00 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -186,7 +186,7 @@ newmeat.name = "[sourcename] [newmeat.name]" if(istype(newmeat)) newmeat.subjectname = sourcename - newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first + newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first if(occupant_volume) occupant.reagents.trans_to(newmeat, occupant_volume / meat_produced, remove_blacklisted = TRUE) if(sourcejob) diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 9ff68b5c06db..5cbc608fa87c 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -17,31 +17,31 @@ max_integrity = 300 var/list/product_types = list() var/dispense_flavour = ICECREAM_VANILLA - var/flavour_name = "vanilla" + var/flavour_name = /datum/reagent/consumable/vanilla var/static/list/icecream_vat_reagents = list( - "milk" = 5, - "flour" = 5, - "sugar" = 5, - "ice" = 5, - "cocoa" = 5, - "vanilla" = 5, - "berryjuice" = 5, - "singulo" = 5) + /datum/reagent/consumable/milk = 5, + /datum/reagent/consumable/flour = 5, + /datum/reagent/consumable/sugar = 5, + /datum/reagent/consumable/ice = 5, + /datum/reagent/consumable/coco = 5, + /datum/reagent/consumable/vanilla = 5, + /datum/reagent/consumable/berryjuice = 5, + /datum/reagent/consumable/ethanol/singulo = 5) /obj/machinery/icecream_vat/proc/get_ingredient_list(type) switch(type) if(ICECREAM_CHOCOLATE) - return list("milk", "ice", "cocoa") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/coco) if(ICECREAM_STRAWBERRY) - return list("milk", "ice", "berryjuice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/berryjuice) if(ICECREAM_BLUE) - return list("milk", "ice", "singulo") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/ethanol/singulo) if(CONE_WAFFLE) - return list("flour", "sugar") + return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar) if(CONE_CHOC) - return list("flour", "sugar", "cocoa") + return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar, /datum/reagent/consumable/coco) else //ICECREAM_VANILLA - return list("milk", "ice", "vanilla") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/vanilla) /obj/machinery/icecream_vat/proc/get_flavour_name(flavour_type) @@ -57,7 +57,7 @@ if(CONE_CHOC) return "chocolate" else //ICECREAM_VANILLA - return "vanilla" + return /datum/reagent/consumable/vanilla /obj/machinery/icecream_vat/Initialize() @@ -84,7 +84,7 @@ dat += "VAT CONTENT
" for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
" + dat += "Purge
" dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) @@ -100,7 +100,7 @@ product_types[dispense_flavour] -= 1 I.add_ice_cream(flavour_name) if(I.reagents.total_volume < 10) - I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) + I.reagents.add_reagent(/datum/reagent/consumable/sugar, 10 - I.reagents.total_volume) else to_chat(user, "There is not enough ice cream left!") else @@ -179,16 +179,16 @@ /obj/item/reagent_containers/food/snacks/icecream/Initialize() . = ..() create_reagents(20) - reagents.add_reagent("nutriment", 4) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 4) /obj/item/reagent_containers/food/snacks/icecream/proc/set_cone_type(var/cone_name) cone_type = cone_name icon_state = "icecream_cone_[cone_name]" switch (cone_type) if ("waffle") - reagents.add_reagent("nutriment", 1) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 1) if ("chocolate") - reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids + reagents.add_reagent(/datum/reagent/consumable/coco, 1) // chocolate ain't as nutritious kids desc = "Delicious [cone_name] cone, but no ice cream." @@ -197,20 +197,20 @@ name = "[flavour_name] icecream" src.add_overlay("icecream_[flavour_name]") switch (flavour_name) // adding the actual reagents advertised in the ingredient list - if ("vanilla") + if (/datum/reagent/consumable/vanilla) desc = "A delicious [cone_type] cone filled with vanilla ice cream. All the other ice creams take content from it." if ("chocolate") desc = "A delicious [cone_type] cone filled with chocolate ice cream. Surprisingly, made with real cocoa." - reagents.add_reagent("cocoa", 2) + reagents.add_reagent(/datum/reagent/consumable/coco, 2) if ("strawberry") desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries." - reagents.add_reagent("berryjuice", 2) + reagents.add_reagent(/datum/reagent/consumable/berryjuice, 2) if ("blue") desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?" - reagents.add_reagent("singulo", 2) + reagents.add_reagent(/datum/reagent/consumable/ethanol/singulo, 2) if ("mob") desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..." - reagents.add_reagent("liquidgibs", 2) + reagents.add_reagent(/datum/reagent/liquidgibs, 2) ice_creamed = 1 /obj/item/reagent_containers/food/snacks/icecream/proc/add_mob_flavor(var/mob/M) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 910145871806..a377540f0d6c 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -136,8 +136,8 @@ if(istype(O, /obj/item/reagent_containers/spray)) var/obj/item/reagent_containers/spray/clean_spray = O - if(clean_spray.reagents.has_reagent("cleaner", clean_spray.amount_per_transfer_from_this)) - clean_spray.reagents.remove_reagent("cleaner", clean_spray.amount_per_transfer_from_this,1) + if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) + clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1) playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") dirty = 0 diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 76ad855665f8..5d9a3e190b05 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -3,701 +3,781 @@ /datum/chemical_reaction/goldschlager name = "Goldschlager" - id = "goldschlager" - results = list("goldschlager" = 10) - required_reagents = list("vodka" = 10, "gold" = 1) + id = /datum/reagent/consumable/ethanol/goldschlager + results = list(/datum/reagent/consumable/ethanol/goldschlager = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/gold = 1) /datum/chemical_reaction/patron name = "Patron" - id = "patron" - results = list("patron" = 10) - required_reagents = list("tequila" = 10, "silver" = 1) + id = /datum/reagent/consumable/ethanol/patron + results = list(/datum/reagent/consumable/ethanol/patron = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 10, /datum/reagent/silver = 1) /datum/chemical_reaction/bilk name = "Bilk" - id = "bilk" - results = list("bilk" = 2) - required_reagents = list("milk" = 1, "beer" = 1) + id = /datum/reagent/consumable/ethanol/bilk + results = list(/datum/reagent/consumable/ethanol/bilk = 2) + required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ethanol/beer = 1) /datum/chemical_reaction/icetea name = "Iced Tea" - id = "icetea" - results = list("icetea" = 4) - required_reagents = list("ice" = 1, "tea" = 3) + id = /datum/reagent/consumable/icetea + results = list(/datum/reagent/consumable/icetea = 4) + required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3) /datum/chemical_reaction/icecoffee name = "Iced Coffee" - id = "icecoffee" - results = list("icecoffee" = 4) - required_reagents = list("ice" = 1, "coffee" = 3) + id = /datum/reagent/consumable/icecoffee + results = list(/datum/reagent/consumable/icecoffee = 4) + required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/coffee = 3) /datum/chemical_reaction/nuka_cola name = "Nuka Cola" - id = "nuka_cola" - results = list("nuka_cola" = 6) - required_reagents = list("uranium" = 1, "cola" = 6) + id = /datum/reagent/consumable/nuka_cola + results = list(/datum/reagent/consumable/nuka_cola = 6) + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/space_cola = 6) /datum/chemical_reaction/moonshine name = "Moonshine" - id = "moonshine" - results = list("moonshine" = 10) - required_reagents = list("nutriment" = 5, "sugar" = 5) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/moonshine + results = list(/datum/reagent/consumable/ethanol/moonshine = 10) + required_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sugar = 5) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/wine name = "Wine" - id = "wine" - results = list("wine" = 10) - required_reagents = list("grapejuice" = 10) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/wine + results = list(/datum/reagent/consumable/ethanol/wine = 10) + required_reagents = list(/datum/reagent/consumable/grapejuice = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/spacebeer name = "Space Beer" id = "spacebeer" - results = list("beer" = 10) - required_reagents = list("flour" = 10) - required_catalysts = list("enzyme" = 5) + results = list(/datum/reagent/consumable/ethanol/beer = 10) + required_reagents = list(/datum/reagent/consumable/flour = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/vodka name = "Vodka" - id = "vodka" - results = list("vodka" = 10) - required_reagents = list("potato" = 10) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/vodka + results = list(/datum/reagent/consumable/ethanol/vodka = 10) + required_reagents = list(/datum/reagent/consumable/potato_juice = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/kahlua name = "Kahlua" - id = "kahlua" - results = list("kahlua" = 5) - required_reagents = list("coffee" = 5, "sugar" = 5) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/kahlua + results = list(/datum/reagent/consumable/ethanol/kahlua = 5) + required_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/sugar = 5) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/gin_tonic name = "Gin and Tonic" - id = "gintonic" - results = list("gintonic" = 3) - required_reagents = list("gin" = 2, "tonic" = 1) + id = /datum/reagent/consumable/ethanol/gintonic + results = list(/datum/reagent/consumable/ethanol/gintonic = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/tonic = 1) /datum/chemical_reaction/rum_coke name = "Rum and Coke" - id = "rumcoke" - results = list("rumcoke" = 3) - required_reagents = list("rum" = 2, "cola" = 1) + id = /datum/reagent/consumable/ethanol/rum_coke + results = list(/datum/reagent/consumable/ethanol/rum_coke = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/cuba_libre name = "Cuba Libre" - id = "cubalibre" - results = list("cubalibre" = 4) - required_reagents = list("rumcoke" = 3, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/cuba_libre + results = list(/datum/reagent/consumable/ethanol/cuba_libre = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/rum_coke = 3, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/martini name = "Classic Martini" - id = "martini" - results = list("martini" = 3) - required_reagents = list("gin" = 2, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/martini + results = list(/datum/reagent/consumable/ethanol/martini = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/ethanol/vermouth = 1) /datum/chemical_reaction/vodkamartini name = "Vodka Martini" - id = "vodkamartini" - results = list("vodkamartini" = 3) - required_reagents = list("vodka" = 2, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/vodkamartini + results = list(/datum/reagent/consumable/ethanol/vodkamartini = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/ethanol/vermouth = 1) /datum/chemical_reaction/white_russian name = "White Russian" - id = "whiterussian" - results = list("whiterussian" = 5) - required_reagents = list("blackrussian" = 3, "cream" = 2) + id = /datum/reagent/consumable/ethanol/white_russian + results = list(/datum/reagent/consumable/ethanol/white_russian = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/black_russian = 3, /datum/reagent/consumable/cream = 2) /datum/chemical_reaction/whiskey_cola name = "Whiskey Cola" - id = "whiskeycola" - results = list("whiskeycola" = 3) - required_reagents = list("whiskey" = 2, "cola" = 1) + id = /datum/reagent/consumable/ethanol/whiskey_cola + results = list(/datum/reagent/consumable/ethanol/whiskey_cola = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/screwdriver name = "Screwdriver" - id = "screwdrivercocktail" - results = list("screwdrivercocktail" = 3) - required_reagents = list("vodka" = 2, "orangejuice" = 1) + id = /datum/reagent/consumable/ethanol/screwdrivercocktail + results = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/orangejuice = 1) /datum/chemical_reaction/bloody_mary name = "Bloody Mary" - id = "bloodymary" - results = list("bloodymary" = 4) - required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/bloody_mary + results = list(/datum/reagent/consumable/ethanol/bloody_mary = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/gargle_blaster name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - results = list("gargleblaster" = 5) - required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/gargle_blaster + results = list(/datum/reagent/consumable/ethanol/gargle_blaster = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/brave_bull name = "Brave Bull" - id = "bravebull" - results = list("bravebull" = 3) - required_reagents = list("tequila" = 2, "kahlua" = 1) + id = /datum/reagent/consumable/ethanol/brave_bull + results = list(/datum/reagent/consumable/ethanol/brave_bull = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/ethanol/kahlua = 1) /datum/chemical_reaction/tequila_sunrise name = "Tequila Sunrise" - id = "tequilasunrise" - results = list("tequilasunrise" = 5) - required_reagents = list("tequila" = 2, "orangejuice" = 2, "grenadine" = 1) + id = /datum/reagent/consumable/ethanol/tequila_sunrise + results = list(/datum/reagent/consumable/ethanol/tequila_sunrise = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/grenadine = 1) /datum/chemical_reaction/toxins_special name = "Toxins Special" - id = "toxinsspecial" - results = list("toxinsspecial" = 5) - required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2) + id = /datum/chemical_reaction/toxins_special + results = list(/datum/chemical_reaction/toxins_special = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vermouth = 1, /datum/reagent/toxin/plasma = 2) /datum/chemical_reaction/beepsky_smash name = "Beepksy Smash" id = "beepksysmash" - results = list("beepskysmash" = 5) - required_reagents = list("limejuice" = 2, "quadruple_sec" = 2, "iron" = 1) + results = list(/datum/reagent/consumable/ethanol/beepsky_smash = 5) + required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/ethanol/quadruple_sec = 2, /datum/reagent/iron = 1) /datum/chemical_reaction/doctor_delight name = "The Doctor's Delight" id = "doctordelight" - results = list("doctorsdelight" = 5) - required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "cryoxadone" = 1) + results = list(/datum/reagent/consumable/doctor_delight = 5) + required_reagents = list(/datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/cryoxadone = 1) /datum/chemical_reaction/irish_cream name = "Irish Cream" - id = "irishcream" - results = list("irishcream" = 3) - required_reagents = list("whiskey" = 2, "cream" = 1) + id = /datum/reagent/consumable/ethanol/irish_cream + results = list(/datum/reagent/consumable/ethanol/irish_cream = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/manly_dorf name = "The Manly Dorf" - id = "manlydorf" - results = list("manlydorf" = 3) - required_reagents = list ("beer" = 1, "ale" = 2) + id = /datum/reagent/consumable/ethanol/manly_dorf + results = list(/datum/reagent/consumable/ethanol/manly_dorf = 3) + required_reagents = list (/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/ale = 2) /datum/chemical_reaction/greenbeer name = "Green Beer" - id = "greenbeer" - results = list("greenbeer" = 10) - required_reagents = list("greencrayonpowder" = 1, "beer" = 10) + id = /datum/reagent/consumable/ethanol/beer/green + results = list(/datum/reagent/consumable/ethanol/beer/green = 10) + required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 1, /datum/reagent/consumable/ethanol/beer = 10) /datum/chemical_reaction/hooch name = "Hooch" - id = "hooch" - results = list("hooch" = 3) - required_reagents = list ("ethanol" = 2, "welding_fuel" = 1) - required_catalysts = list("enzyme" = 1) + id = /datum/reagent/consumable/ethanol/hooch + results = list(/datum/reagent/consumable/ethanol/hooch = 3) + required_reagents = list (/datum/reagent/consumable/ethanol = 2, /datum/reagent/fuel = 1) + required_catalysts = list(/datum/reagent/consumable/enzyme = 1) /datum/chemical_reaction/irish_coffee name = "Irish Coffee" - id = "irishcoffee" - results = list("irishcoffee" = 2) - required_reagents = list("irishcream" = 1, "coffee" = 1) + id = /datum/reagent/consumable/ethanol/irishcoffee + results = list(/datum/reagent/consumable/ethanol/irishcoffee = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/coffee = 1) /datum/chemical_reaction/b52 name = "B-52" - id = "b52" - results = list("b52" = 3) - required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) + id = /datum/reagent/consumable/ethanol/b52 + results = list(/datum/reagent/consumable/ethanol/b52 = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/cognac = 1) /datum/chemical_reaction/atomicbomb name = "Atomic Bomb" - id = "atomicbomb" - results = list("atomicbomb" = 10) - required_reagents = list("b52" = 10, "uranium" = 1) + id = /datum/reagent/consumable/ethanol/atomicbomb + results = list(/datum/reagent/consumable/ethanol/atomicbomb = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/b52 = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/margarita name = "Margarita" - id = "margarita" - results = list("margarita" = 3) - required_reagents = list("tequila" = 2, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/margarita + results = list(/datum/reagent/consumable/ethanol/margarita = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/longislandicedtea name = "Long Island Iced Tea" - id = "longislandicedtea" - results = list("longislandicedtea" = 4) - required_reagents = list("vodka" = 1, "gin" = 1, "tequila" = 1, "cubalibre" = 1) + id = /datum/reagent/consumable/ethanol/longislandicedtea + results = list(/datum/reagent/consumable/ethanol/longislandicedtea = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/tequila = 1, /datum/reagent/consumable/ethanol/cuba_libre = 1) /datum/chemical_reaction/threemileisland name = "Three Mile Island Iced Tea" - id = "threemileisland" - results = list("threemileisland" = 10) - required_reagents = list("longislandicedtea" = 10, "uranium" = 1) + id = /datum/reagent/consumable/ethanol/threemileisland + results = list(/datum/reagent/consumable/ethanol/threemileisland = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/longislandicedtea = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/whiskeysoda name = "Whiskey Soda" - id = "whiskeysoda" - results = list("whiskeysoda" = 3) - required_reagents = list("whiskey" = 2, "sodawater" = 1) + id = /datum/reagent/consumable/ethanol/whiskeysoda + results = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/sodawater = 1) /datum/chemical_reaction/black_russian name = "Black Russian" - id = "blackrussian" - results = list("blackrussian" = 5) - required_reagents = list("vodka" = 3, "kahlua" = 2) + id = /datum/reagent/consumable/ethanol/black_russian + results = list(/datum/reagent/consumable/ethanol/black_russian = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 3, /datum/reagent/consumable/ethanol/kahlua = 2) /datum/chemical_reaction/manhattan name = "Manhattan" - id = "manhattan" - results = list("manhattan" = 3) - required_reagents = list("whiskey" = 2, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/manhattan + results = list(/datum/reagent/consumable/ethanol/manhattan = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/ethanol/vermouth = 1) /datum/chemical_reaction/manhattan_proj name = "Manhattan Project" - id = "manhattan_proj" - results = list("manhattan_proj" = 10) - required_reagents = list("manhattan" = 10, "uranium" = 1) + id = /datum/reagent/consumable/ethanol/manhattan_proj + results = list(/datum/reagent/consumable/ethanol/manhattan_proj = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/vodka_tonic name = "Vodka and Tonic" - id = "vodkatonic" - results = list("vodkatonic" = 3) - required_reagents = list("vodka" = 2, "tonic" = 1) + id = /datum/reagent/consumable/ethanol/vodkatonic + results = list(/datum/reagent/consumable/ethanol/vodkatonic = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/tonic = 1) /datum/chemical_reaction/gin_fizz name = "Gin Fizz" - id = "ginfizz" - results = list("ginfizz" = 4) - required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/ginfizz + results = list(/datum/reagent/consumable/ethanol/ginfizz = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/bahama_mama name = "Bahama mama" - id = "bahama_mama" - results = list("bahama_mama" = 6) - required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/bahama_mama + results = list(/datum/reagent/consumable/ethanol/bahama_mama = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/singulo name = "Singulo" - id = "singulo" - results = list("singulo" = 10) - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + id = /datum/reagent/consumable/ethanol/singulo + results = list(/datum/reagent/consumable/ethanol/singulo = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/uranium/radium = 1, /datum/reagent/consumable/ethanol/wine = 5) /datum/chemical_reaction/alliescocktail name = "Allies Cocktail" - id = "alliescocktail" - results = list("alliescocktail" = 2) - required_reagents = list("martini" = 1, "vodka" = 1) + id = /datum/reagent/consumable/ethanol/alliescocktail + results = list(/datum/reagent/consumable/ethanol/alliescocktail = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/martini = 1, /datum/reagent/consumable/ethanol/vodka = 1) /datum/chemical_reaction/demonsblood name = "Demons Blood" - id = "demonsblood" - results = list("demonsblood" = 4) - required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) + id = /datum/reagent/consumable/ethanol/demonsblood + results = list(/datum/reagent/consumable/ethanol/demonsblood = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/spacemountainwind = 1, /datum/reagent/blood = 1, /datum/reagent/consumable/dr_gibb = 1) /datum/chemical_reaction/booger name = "Booger" - id = "booger" - results = list("booger" = 4) - required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) + id = /datum/reagent/consumable/ethanol/booger + results = list(/datum/reagent/consumable/ethanol/booger = 4) + required_reagents = list(/datum/reagent/consumable/cream = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/watermelonjuice = 1) /datum/chemical_reaction/antifreeze name = "Anti-freeze" - id = "antifreeze" - results = list("antifreeze" = 4) - required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/antifreeze + results = list(/datum/reagent/consumable/ethanol/antifreeze = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/barefoot name = "Barefoot" - id = "barefoot" - results = list("barefoot" = 3) - required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/barefoot + results = list(/datum/reagent/consumable/ethanol/barefoot = 3) + required_reagents = list(/datum/reagent/consumable/berryjuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ethanol/vermouth = 1) ////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// /datum/chemical_reaction/sbiten name = "Sbiten" - id = "sbiten" - results = list("sbiten" = 10) - required_reagents = list("vodka" = 10, "capsaicin" = 1) + id = /datum/reagent/consumable/ethanol/sbiten + results = list(/datum/reagent/consumable/ethanol/sbiten = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/consumable/capsaicin = 1) /datum/chemical_reaction/red_mead name = "Red Mead" - id = "red_mead" - results = list("red_mead" = 2) - required_reagents = list("blood" = 1, "mead" = 1) + id = /datum/reagent/consumable/ethanol/red_mead + results = list(/datum/reagent/consumable/ethanol/red_mead = 2) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/mead = 1) /datum/chemical_reaction/mead name = "Mead" - id = "mead" - results = list("mead" = 2) - required_reagents = list("honey" = 2) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/mead + results = list(/datum/reagent/consumable/ethanol/mead = 2) + required_reagents = list(/datum/reagent/consumable/honey = 2) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/iced_beer name = "Iced Beer" - id = "iced_beer" - results = list("iced_beer" = 6) - required_reagents = list("beer" = 5, "ice" = 1) + id = /datum/reagent/consumable/ethanol/iced_beer + results = list(/datum/reagent/consumable/ethanol/iced_beer = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/beer = 5, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/grog name = "Grog" - id = "grog" - results = list("grog" = 2) - required_reagents = list("rum" = 1, "water" = 1) + id = /datum/reagent/consumable/ethanol/grog + results = list(/datum/reagent/consumable/ethanol/grog = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/water = 1) /datum/chemical_reaction/soy_latte name = "Soy Latte" - id = "soy_latte" - results = list("soy_latte" = 2) - required_reagents = list("coffee" = 1, "soymilk" = 1) + id = /datum/reagent/consumable/soy_latte + results = list(/datum/reagent/consumable/soy_latte = 2) + required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/soymilk = 1) /datum/chemical_reaction/cafe_latte name = "Cafe Latte" - id = "cafe_latte" - results = list("cafe_latte" = 2) - required_reagents = list("coffee" = 1, "milk" = 1) + id = /datum/reagent/consumable/cafe_latte + results = list(/datum/reagent/consumable/cafe_latte = 2) + required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/milk = 1) /datum/chemical_reaction/acidspit name = "Acid Spit" - id = "acidspit" - results = list("acidspit" = 6) - required_reagents = list("sacid" = 1, "wine" = 5) + id = /datum/reagent/consumable/ethanol/acid_spit + results = list(/datum/reagent/consumable/ethanol/acid_spit = 6) + required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/consumable/ethanol/wine = 5) /datum/chemical_reaction/amasec name = "Amasec" - id = "amasec" - results = list("amasec" = 10) - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + id = /datum/reagent/consumable/ethanol/amasec + results = list(/datum/reagent/consumable/ethanol/amasec = 10) + required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/consumable/ethanol/wine = 5, /datum/reagent/consumable/ethanol/vodka = 5) /datum/chemical_reaction/changelingsting name = "Changeling Sting" - id = "changelingsting" - results = list("changelingsting" = 5) - required_reagents = list("screwdrivercocktail" = 1, "lemon_lime" = 2) + id = /datum/reagent/consumable/ethanol/changelingsting + results = list(/datum/reagent/consumable/ethanol/changelingsting = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 1, /datum/reagent/consumable/lemon_lime = 2) /datum/chemical_reaction/aloe name = "Aloe" - id = "aloe" - results = list("aloe" = 2) - required_reagents = list("irishcream" = 1, "watermelonjuice" = 1) + id = /datum/reagent/consumable/ethanol/aloe + results = list(/datum/reagent/consumable/ethanol/aloe = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/watermelonjuice = 1) /datum/chemical_reaction/andalusia name = "Andalusia" - id = "andalusia" - results = list("andalusia" = 3) - required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) + id = /datum/reagent/consumable/ethanol/andalusia + results = list(/datum/reagent/consumable/ethanol/andalusia = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1) /datum/chemical_reaction/neurotoxin name = "Neurotoxin" - id = "neurotoxin" - results = list("neurotoxin" = 2) - required_reagents = list("gargleblaster" = 1, "morphine" = 1) + id = /datum/reagent/consumable/ethanol/neurotoxin + results = list(/datum/reagent/consumable/ethanol/neurotoxin = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/morphine = 1) /datum/chemical_reaction/snowwhite name = "Snow White" - id = "snowwhite" - results = list("snowwhite" = 2) - required_reagents = list("beer" = 1, "lemon_lime" = 1) + id = /datum/reagent/consumable/ethanol/snowwhite + results = list(/datum/reagent/consumable/ethanol/snowwhite = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/lemon_lime = 1) /datum/chemical_reaction/irishcarbomb name = "Irish Car Bomb" - id = "irishcarbomb" - results = list("irishcarbomb" = 2) - required_reagents = list("ale" = 1, "irishcream" = 1) + id = /datum/reagent/consumable/ethanol/irishcarbomb + results = list(/datum/reagent/consumable/ethanol/irishcarbomb = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/ethanol/irish_cream = 1) /datum/chemical_reaction/syndicatebomb name = "Syndicate Bomb" - id = "syndicatebomb" - results = list("syndicatebomb" = 2) - required_reagents = list("beer" = 1, "whiskeycola" = 1) + id = /datum/reagent/consumable/ethanol/syndicatebomb + results = list(/datum/reagent/consumable/ethanol/syndicatebomb = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/whiskey_cola = 1) /datum/chemical_reaction/erikasurprise name = "Erika Surprise" - id = "erikasurprise" - results = list("erikasurprise" = 5) - required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/erikasurprise + results = list(/datum/reagent/consumable/ethanol/erikasurprise = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/devilskiss name = "Devils Kiss" - id = "devilskiss" - results = list("devilskiss" = 3) - required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) + id = /datum/reagent/consumable/ethanol/devilskiss + results = list(/datum/reagent/consumable/ethanol/devilskiss = 3) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/rum = 1) /datum/chemical_reaction/hippiesdelight name = "Hippies Delight" - id = "hippiesdelight" - results = list("hippiesdelight" = 2) - required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1) + id = /datum/reagent/consumable/ethanol/hippies_delight + results = list(/datum/reagent/consumable/ethanol/hippies_delight = 2) + required_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/ethanol/gargle_blaster = 1) /datum/chemical_reaction/bananahonk name = "Banana Honk" - id = "bananahonk" - results = list("bananahonk" = 2) - required_reagents = list("laughter" = 1, "cream" = 1) + id = /datum/reagent/consumable/ethanol/bananahonk + results = list(/datum/reagent/consumable/ethanol/bananahonk = 2) + required_reagents = list(/datum/reagent/consumable/laughter = 1, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/silencer name = "Silencer" - id = "silencer" - results = list("silencer" = 3) - required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) + id = /datum/reagent/consumable/ethanol/silencer + results = list(/datum/reagent/consumable/ethanol/silencer = 3) + required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/driestmartini name = "Driest Martini" - id = "driestmartini" - results = list("driestmartini" = 2) - required_reagents = list("nothing" = 1, "gin" = 1) + id = /datum/reagent/consumable/ethanol/driestmartini + results = list(/datum/reagent/consumable/ethanol/driestmartini = 2) + required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/ethanol/gin = 1) /datum/chemical_reaction/thirteenloko name = "Thirteen Loko" - id = "thirteenloko" - results = list("thirteenloko" = 3) - required_reagents = list("vodka" = 1, "coffee" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/thirteenloko + results = list(/datum/reagent/consumable/ethanol/thirteenloko = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/chocolatepudding name = "Chocolate Pudding" - id = "chocolatepudding" - results = list("chocolatepudding" = 20) - required_reagents = list("chocolate_milk" = 10, "eggyolk" = 5) + id = /datum/reagent/consumable/chocolatepudding + results = list(/datum/reagent/consumable/chocolatepudding = 20) + required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 10, /datum/reagent/consumable/eggyolk = 5) /datum/chemical_reaction/vanillapudding name = "Vanilla Pudding" - id = "vanillapudding" - results = list("vanillapudding" = 20) - required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5) + id = /datum/reagent/consumable/vanillapudding + results = list(/datum/reagent/consumable/vanillapudding = 20) + required_reagents = list(/datum/reagent/consumable/vanilla = 5, /datum/reagent/consumable/milk = 5, /datum/reagent/consumable/eggyolk = 5) /datum/chemical_reaction/cherryshake name = "Cherry Shake" - id = "cherryshake" - results = list("cherryshake" = 3) - required_reagents = list("cherryjelly" = 1, "ice" = 1, "cream" = 1) + id = /datum/reagent/consumable/cherryshake + results = list(/datum/reagent/consumable/cherryshake = 3) + required_reagents = list(/datum/reagent/consumable/cherryjelly = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/bluecherryshake name = "Blue Cherry Shake" - id = "bluecherryshake" - results = list("bluecherryshake" = 3) - required_reagents = list("bluecherryjelly" = 1, "ice" = 1, "cream" = 1) + id = /datum/reagent/consumable/bluecherryshake + results = list(/datum/reagent/consumable/bluecherryshake = 3) + required_reagents = list(/datum/reagent/consumable/bluecherryjelly = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/drunkenblumpkin name = "Drunken Blumpkin" - id = "drunkenblumpkin" - results = list("drunkenblumpkin" = 4) - required_reagents = list("blumpkinjuice" = 1, "irishcream" = 2, "ice" = 1) + id = /datum/reagent/consumable/ethanol/drunkenblumpkin + results = list(/datum/reagent/consumable/ethanol/drunkenblumpkin = 4) + required_reagents = list(/datum/reagent/consumable/blumpkinjuice = 1, /datum/reagent/consumable/ethanol/irish_cream = 2, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/pumpkin_latte name = "Pumpkin space latte" - id = "pumpkin_latte" - results = list("pumpkin_latte" = 15) - required_reagents = list("pumpkinjuice" = 5, "coffee" = 5, "cream" = 5) + id = /datum/reagent/consumable/pumpkin_latte + results = list(/datum/reagent/consumable/pumpkin_latte = 15) + required_reagents = list(/datum/reagent/consumable/pumpkinjuice = 5, /datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/cream = 5) /datum/chemical_reaction/gibbfloats name = "Gibb Floats" - id = "gibbfloats" - results = list("gibbfloats" = 15) - required_reagents = list("dr_gibb" = 5, "ice" = 5, "cream" = 5) + id = /datum/reagent/consumable/gibbfloats + results = list(/datum/reagent/consumable/gibbfloats = 15) + required_reagents = list(/datum/reagent/consumable/dr_gibb = 5, /datum/reagent/consumable/ice = 5, /datum/reagent/consumable/cream = 5) /datum/chemical_reaction/triple_citrus - name = "triple_citrus" - id = "triple_citrus" - results = list("triple_citrus" = 5) - required_reagents = list("lemonjuice" = 1, "limejuice" = 1, "orangejuice" = 1) + name = /datum/reagent/consumable/triple_citrus + id = /datum/reagent/consumable/triple_citrus + results = list(/datum/reagent/consumable/triple_citrus = 5) + required_reagents = list(/datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/orangejuice = 1) /datum/chemical_reaction/grape_soda name = "grape soda" - id = "grapesoda" - results = list("grapesoda" = 2) - required_reagents = list("grapejuice" = 1, "sodawater" = 1) + id = /datum/reagent/consumable/grape_soda + results = list(/datum/reagent/consumable/grape_soda = 2) + required_reagents = list(/datum/reagent/consumable/grapejuice = 1, /datum/reagent/consumable/sodawater = 1) /datum/chemical_reaction/grappa - name = "grappa" - id = "grappa" - results = list("grappa" = 10) - required_reagents = list ("wine" = 10) - required_catalysts = list ("enzyme" = 5) + name = /datum/reagent/consumable/ethanol/grappa + id = /datum/reagent/consumable/ethanol/grappa + results = list(/datum/reagent/consumable/ethanol/grappa = 10) + required_reagents = list (/datum/reagent/consumable/ethanol/wine = 10) + required_catalysts = list (/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/whiskey_sour name = "Whiskey Sour" - id = "whiskey_sour" - results = list("whiskey_sour" = 3) - required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1) + id = /datum/reagent/consumable/ethanol/whiskey_sour + results = list(/datum/reagent/consumable/ethanol/whiskey_sour = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/sugar = 1) mix_message = "The mixture darkens to a rich gold hue." /datum/chemical_reaction/fetching_fizz name = "Fetching Fizz" - id = "fetching_fizz" - results = list("fetching_fizz" = 3) - required_reagents = list("nuka_cola" = 1, "iron" = 1) //Manufacturable from only the mining station + id = /datum/reagent/consumable/ethanol/fetching_fizz + results = list(/datum/reagent/consumable/ethanol/fetching_fizz = 3) + required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/iron = 1) //Manufacturable from only the mining station mix_message = "The mixture slightly vibrates before settling." /datum/chemical_reaction/hearty_punch name = "Hearty Punch" - id = "hearty_punch" - results = list("hearty_punch" = 1) //Very little, for balance reasons - required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5) + id = /datum/reagent/consumable/ethanol/hearty_punch + results = list(/datum/reagent/consumable/ethanol/hearty_punch = 1) //Very little, for balance reasons + required_reagents = list(/datum/reagent/consumable/ethanol/brave_bull = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5, /datum/reagent/consumable/ethanol/absinthe = 5) mix_message = "The mixture darkens to a healthy crimson." required_temp = 315 //Piping hot! /datum/chemical_reaction/bacchus_blessing name = "Bacchus' Blessing" - id = "bacchus_blessing" - results = list("bacchus_blessing" = 4) - required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1) + id = /datum/reagent/consumable/ethanol/bacchus_blessing + results = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/hooch = 1, /datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/manly_dorf = 1, /datum/reagent/consumable/ethanol/syndicatebomb = 1) mix_message = "The mixture turns to a sickening froth." /datum/chemical_reaction/lemonade name = "Lemonade" - id = "lemonade" - results = list("lemonade" = 5) - required_reagents = list("lemonjuice" = 2, "water" = 2, "sugar" = 1, "ice" = 1) + id = /datum/reagent/consumable/lemonade + results = list(/datum/reagent/consumable/lemonade = 5) + required_reagents = list(/datum/reagent/consumable/lemonjuice = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ice = 1) mix_message = "You're suddenly reminded of home." /datum/chemical_reaction/arnold_palmer name = "Arnold Palmer" - id = "arnold_palmer" - results = list("arnold_palmer" = 2) - required_reagents = list("tea" = 1, "lemonade" = 1) + id = /datum/reagent/consumable/tea/arnold_palmer + results = list(/datum/reagent/consumable/tea/arnold_palmer = 2) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1) mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange." /datum/chemical_reaction/chocolate_milk name = "chocolate milk" - id = "chocolate_milk" - results = list("chocolate_milk" = 2) - required_reagents = list("milk" = 1, "cocoa" = 1) + id = /datum/reagent/consumable/milk/chocolate_milk + results = list(/datum/reagent/consumable/milk/chocolate_milk = 2) + required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/coco = 1) mix_message = "The color changes as the mixture blends smoothly." /datum/chemical_reaction/eggnog - name = "eggnog" - id = "eggnog" - results = list("eggnog" = 15) - required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) + name = /datum/reagent/consumable/ethanol/eggnog + id = /datum/reagent/consumable/ethanol/eggnog + results = list(/datum/reagent/consumable/ethanol/eggnog = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 5, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/eggyolk = 5) /datum/chemical_reaction/narsour name = "Nar'sour" - id = "narsour" - results = list("narsour" = 1) - required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1) + id = /datum/reagent/consumable/ethanol/narsour + results = list(/datum/reagent/consumable/ethanol/narsour = 1) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/demonsblood = 1) mix_message = "The mixture develops a sinister glow." mix_sound = 'sound/effects/singlebeat.ogg' /datum/chemical_reaction/quadruplesec name = "Quadruple Sec" - id = "quadruple_sec" - results = list("quadruple_sec" = 15) - required_reagents = list("triple_sec" = 5, "triple_citrus" = 5, "creme_de_menthe" = 5) + id = /datum/reagent/consumable/ethanol/quadruple_sec + results = list(/datum/reagent/consumable/ethanol/quadruple_sec = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 5, /datum/reagent/consumable/triple_citrus = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5) mix_message = "The snap of a taser emanates clearly from the mixture as it settles." mix_sound = 'sound/weapons/taser.ogg' /datum/chemical_reaction/grasshopper name = "Grasshopper" - id = "grasshopper" - results = list("grasshopper" = 15) - required_reagents = list("cream" = 5, "creme_de_menthe" = 5, "creme_de_cacao" = 5) + id = /datum/reagent/consumable/ethanol/grasshopper + results = list(/datum/reagent/consumable/ethanol/grasshopper = 15) + required_reagents = list(/datum/reagent/consumable/cream = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5, /datum/reagent/consumable/ethanol/creme_de_cacao = 5) mix_message = "A vibrant green bubbles forth as the mixture emulsifies." /datum/chemical_reaction/stinger name = "Stinger" - id = "stinger" - results = list("stinger" = 15) - required_reagents = list("whiskey" = 10, "creme_de_menthe" = 5 ) + id = /datum/reagent/consumable/ethanol/stinger + results = list(/datum/reagent/consumable/ethanol/stinger = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 10, /datum/reagent/consumable/ethanol/creme_de_menthe = 5 ) /datum/chemical_reaction/quintuplesec name = "Quintuple Sec" - id = "quintuple_sec" - results = list("quintuple_sec" = 15) - required_reagents = list("quadruple_sec" = 5, "clownstears" = 5, "syndicatebomb" = 5) + id = /datum/reagent/consumable/ethanol/quintuple_sec + results = list(/datum/reagent/consumable/ethanol/quintuple_sec = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/quadruple_sec = 5, /datum/reagent/consumable/clownstears = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5) mix_message = "Judgement is upon you." mix_sound = 'sound/items/airhorn2.ogg' /datum/chemical_reaction/bastion_bourbon name = "Bastion Bourbon" - id = "bastion_bourbon" - results = list("bastion_bourbon" = 2) - required_reagents = list("tea" = 1, "creme_de_menthe" = 1, "triple_citrus" = 1, "berryjuice" = 1) //herbal and minty, with a hint of citrus and berry + id = /datum/reagent/consumable/ethanol/bastion_bourbon + results = list(/datum/reagent/consumable/ethanol/bastion_bourbon = 2) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/triple_citrus = 1, /datum/reagent/consumable/berryjuice = 1) //herbal and minty, with a hint of citrus and berry mix_message = "You catch an aroma of hot tea and fruits as the mix blends into a blue-green color." /datum/chemical_reaction/squirt_cider name = "Squirt Cider" - id = "squirt_cider" - results = list("squirt_cider" = 1) - required_reagents = list("water" = 1, "tomatojuice" = 1, "nutriment" = 1) + id = /datum/reagent/consumable/ethanol/squirt_cider + results = list(/datum/reagent/consumable/ethanol/squirt_cider = 1) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/nutriment = 1) mix_message = "The mix swirls and turns a bright red that reminds you of an apple's skin." /datum/chemical_reaction/fringe_weaver name = "Fringe Weaver" - id = "fringe_weaver" - results = list("fringe_weaver" = 10) - required_reagents = list("ethanol" = 9, "sugar" = 1) //9 karmotrine, 1 adelhyde + id = /datum/reagent/consumable/ethanol/fringe_weaver + results = list(/datum/reagent/consumable/ethanol/fringe_weaver = 10) + required_reagents = list(/datum/reagent/consumable/ethanol = 9, /datum/reagent/consumable/sugar = 1) //9 karmotrine, 1 adelhyde mix_message = "The mix turns a pleasant cream color and foams up." /datum/chemical_reaction/sugar_rush name = "Sugar Rush" - id = "sugar_rush" - results = list("sugar_rush" = 4) - required_reagents = list("sugar" = 2, "lemonjuice" = 1, "wine" = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol) + id = /datum/reagent/consumable/ethanol/sugar_rush + results = list(/datum/reagent/consumable/ethanol/sugar_rush = 4) + required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/wine = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol) mix_message = "The mixture bubbles and brightens into a girly pink." /datum/chemical_reaction/crevice_spike name = "Crevice Spike" - id = "crevice_spike" - results = list("crevice_spike" = 6) - required_reagents = list("limejuice" = 2, "capsaicin" = 4) //2 powdered delta (sour), 4 flanergide (spicy) + id = /datum/reagent/consumable/ethanol/crevice_spike + results = list(/datum/reagent/consumable/ethanol/crevice_spike = 6) + required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/capsaicin = 4) //2 powdered delta (sour), 4 flanergide (spicy) mix_message = "The mixture stings your eyes as it settles." /datum/chemical_reaction/sake - name = "sake" - id = "sake" - results = list("sake" = 10) - required_reagents = list("rice" = 10) - required_catalysts = list("enzyme" = 5) + name = /datum/reagent/consumable/ethanol/sake + id = /datum/reagent/consumable/ethanol/sake + results = list(/datum/reagent/consumable/ethanol/sake = 10) + required_reagents = list(/datum/reagent/consumable/rice = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) mix_message = "The rice grains ferment into a clear, sweet-smelling liquid." /datum/chemical_reaction/peppermint_patty name = "Peppermint Patty" - id = "peppermint_patty" - results = list("peppermint_patty" = 10) - required_reagents = list("hot_coco" = 6, "creme_de_cacao" = 1, "creme_de_menthe" = 1, "vodka" = 1, "menthol" = 1) + id = /datum/reagent/consumable/ethanol/peppermint_patty + results = list(/datum/reagent/consumable/ethanol/peppermint_patty = 10) + required_reagents = list(/datum/reagent/consumable/hot_coco = 6, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/menthol = 1) mix_message = "The coco turns mint green just as the strong scent hits your nose." /datum/chemical_reaction/alexander name = "Alexander" - id = "alexander" - results = list("alexander" = 3) - required_reagents = list("cognac" = 1, "creme_de_cacao" = 1, "cream" = 1) + id = /datum/reagent/consumable/ethanol/alexander + results = list(/datum/reagent/consumable/ethanol/alexander = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/sidecar name = "Sidecar" - id = "sidecar" - results = list("sidecar" = 4) - required_reagents = list("cognac" = 2, "triple_sec" = 1, "lemonjuice" = 1) + id = /datum/reagent/consumable/ethanol/sidecar + results = list(/datum/reagent/consumable/ethanol/sidecar = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 2, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/lemonjuice = 1) /datum/chemical_reaction/between_the_sheets name = "Between the Sheets" - id = "between_the_sheets" - results = list("between_the_sheets" = 5) - required_reagents = list("rum" = 1, "sidecar" = 4) + id = /datum/reagent/consumable/ethanol/between_the_sheets + results = list(/datum/reagent/consumable/ethanol/between_the_sheets = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/sidecar = 4) /datum/chemical_reaction/kamikaze name = "Kamikaze" - id = "kamikaze" - results = list("kamikaze" = 3) - required_reagents = list("vodka" = 1, "triple_sec" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/kamikaze + results = list(/datum/reagent/consumable/ethanol/kamikaze = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/mojito name = "Mojito" - id = "mojito" - results = list("mojito" = 5) - required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1) + id = /datum/reagent/consumable/ethanol/mojito + results = list(/datum/reagent/consumable/ethanol/mojito = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/menthol = 1) /datum/chemical_reaction/fernet_cola name = "Fernet Cola" - id = "fernet_cola" - results = list("fernet_cola" = 2) - required_reagents = list("fernet" = 1, "cola" = 1) + id = /datum/reagent/consumable/ethanol/fernet_cola + results = list(/datum/reagent/consumable/ethanol/fernet_cola = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/fanciulli name = "Fanciulli" - id = "fanciulli" - results = list("fanciulli" = 2) - required_reagents = list("manhattan" = 1, "fernet" = 1) + id = /datum/reagent/consumable/ethanol/fanciulli + results = list(/datum/reagent/consumable/ethanol/fanciulli = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 1, /datum/reagent/consumable/ethanol/fernet = 1) /datum/chemical_reaction/branca_menta name = "Branca Menta" - id = "branca_menta" - results = list("branca_menta" = 3) - required_reagents = list("fernet" = 1, "creme_de_menthe" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/branca_menta + results = list(/datum/reagent/consumable/ethanol/branca_menta = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/blank_paper name = "Blank Paper" - id = "blank_paper" - results = list("blank_paper" = 3) - required_reagents = list("silencer" = 1, "nothing" = 1, "nuka_cola" = 1) + id = /datum/reagent/consumable/ethanol/blank_paper + results = list(/datum/reagent/consumable/ethanol/blank_paper = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/silencer = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nuka_cola = 1) + + +/datum/chemical_reaction/wizz_fizz + name = "Wizz Fizz" + id = /datum/reagent/consumable/ethanol/wizz_fizz + results = list(/datum/reagent/consumable/ethanol/wizz_fizz = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/ethanol/champagne = 1) + mix_message = "The beverage starts to froth with an almost mystical zeal!" + mix_sound = 'sound/effects/bubbles2.ogg' + + +/datum/chemical_reaction/bug_spray + name = "Bug Spray" + id = /datum/reagent/consumable/ethanol/bug_spray + results = list(/datum/reagent/consumable/ethanol/bug_spray = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 2, /datum/reagent/consumable/lemon_lime = 1, /datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vodka = 1) + mix_message = "The faint aroma of summer camping trips wafts through the air; but what's that buzzing noise?" + mix_sound = 'sound/creatures/bee.ogg' + +/datum/chemical_reaction/jack_rose + name = "Jack Rose" + id = /datum/reagent/consumable/ethanol/jack_rose + results = list(/datum/reagent/consumable/ethanol/jack_rose = 4) + required_reagents = list(/datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/ethanol/applejack = 2, /datum/reagent/consumable/limejuice = 1) + mix_message = "As the grenadine incorporates, the beverage takes on a mellow, red-orange glow." + +/datum/chemical_reaction/turbo + name = "Turbo" + id = /datum/reagent/consumable/ethanol/turbo + results = list(/datum/reagent/consumable/ethanol/turbo = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/moonshine = 2, /datum/reagent/nitrous_oxide = 1, /datum/reagent/consumable/ethanol/sugar_rush = 1, /datum/reagent/consumable/pwr_game = 1) + +/datum/chemical_reaction/old_timer + name = "Old Timer" + id = /datum/reagent/consumable/ethanol/old_timer + results = list(/datum/reagent/consumable/ethanol/old_timer = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3, /datum/reagent/consumable/parsnipjuice = 2, /datum/reagent/consumable/ethanol/alexander = 1) + +/datum/chemical_reaction/rubberneck + name = "Rubberneck" + id = /datum/reagent/consumable/ethanol/rubberneck + results = list(/datum/reagent/consumable/ethanol/rubberneck = 10) + required_reagents = list(/datum/reagent/consumable/ethanol = 4, /datum/reagent/consumable/grey_bull = 5, /datum/reagent/consumable/astrotame = 1) + +/datum/chemical_reaction/duplex + name = "Duplex" + id = /datum/reagent/consumable/ethanol/duplex + results = list(/datum/reagent/consumable/ethanol/duplex = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/hcider = 2, /datum/reagent/consumable/applejuice = 1, /datum/reagent/consumable/berryjuice = 1) + +/datum/chemical_reaction/trappist + name = "Trappist" + id = /datum/reagent/consumable/ethanol/trappist + results = list(/datum/reagent/consumable/ethanol/trappist = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/ale = 2, /datum/reagent/water/holywater = 2, /datum/reagent/consumable/sugar = 1) + +/datum/chemical_reaction/cream_soda + name = "Cream Soda" + id = /datum/reagent/consumable/cream_soda + results = list(/datum/reagent/consumable/cream_soda = 4) + required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/sodawater = 2, /datum/reagent/consumable/vanilla = 1) + +/datum/chemical_reaction/blazaam + name = "Blazaam" + id = /datum/reagent/consumable/ethanol/blazaam + results = list(/datum/reagent/consumable/ethanol/blazaam = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/peachjuice = 1, /datum/reagent/bluespace = 1) + +/datum/chemical_reaction/planet_cracker + name = "Planet Cracker" + id = /datum/reagent/consumable/ethanol/planet_cracker + results = list(/datum/reagent/consumable/ethanol/planet_cracker = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/champagne = 2, /datum/reagent/consumable/ethanol/lizardwine = 2, /datum/reagent/consumable/eggyolk = 1, /datum/reagent/gold = 1) + mix_message = "The liquid's color starts shifting as the nanogold is alternately corroded and redeposited." + +/datum/chemical_reaction/red_queen + name = "Red Queen" + id = /datum/reagent/consumable/red_queen + results = list(/datum/reagent/consumable/red_queen = 10) + required_reagents = list(/datum/reagent/consumable/tea = 6, /datum/reagent/mercury = 2, /datum/reagent/consumable/blackpepper = 1, /datum/reagent/growthserum = 1) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index d10286d21ada..923976f3487b 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -11,8 +11,8 @@ /datum/chemical_reaction/tofu name = "Tofu" id = "tofu" - required_reagents = list("soymilk" = 10) - required_catalysts = list("enzyme" = 5) + required_reagents = list(/datum/reagent/consumable/soymilk = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) mob_react = FALSE /datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume) @@ -24,7 +24,7 @@ /datum/chemical_reaction/chocolate_bar name = "Chocolate Bar" id = "chocolate_bar" - required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2) + required_reagents = list(/datum/reagent/consumable/soymilk = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/sugar = 2) /datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -36,7 +36,7 @@ /datum/chemical_reaction/chocolate_bar2 name = "Chocolate Bar" id = "chocolate_bar" - required_reagents = list("chocolate_milk" = 4, "sugar" = 2) + required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 4, /datum/reagent/consumable/sugar = 2) mob_react = FALSE /datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume) @@ -47,40 +47,40 @@ /datum/chemical_reaction/hot_coco name = "Hot Coco" - id = "hot_coco" - results = list("hot_coco" = 5) - required_reagents = list("water" = 5, "cocoa" = 1) + id = /datum/reagent/consumable/hot_coco + results = list(/datum/reagent/consumable/hot_coco = 5) + required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/coco = 1) /datum/chemical_reaction/coffee name = "Coffee" - id = "coffee" - results = list("coffee" = 5) - required_reagents = list("coffeepowder" = 1, "water" = 5) + id = /datum/reagent/consumable/coffee + results = list(/datum/reagent/consumable/coffee = 5) + required_reagents = list(/datum/reagent/toxin/coffeepowder = 1, /datum/reagent/water = 5) /datum/chemical_reaction/tea name = "Tea" - id = "tea" - results = list("tea" = 5) - required_reagents = list("teapowder" = 1, "water" = 5) + id = /datum/reagent/consumable/tea + results = list(/datum/reagent/consumable/tea = 5) + required_reagents = list(/datum/reagent/toxin/teapowder = 1, /datum/reagent/water = 5) /datum/chemical_reaction/soysauce name = "Soy Sauce" - id = "soysauce" - results = list("soysauce" = 5) - required_reagents = list("soymilk" = 4, "sacid" = 1) + id = /datum/reagent/consumable/soysauce + results = list(/datum/reagent/consumable/soysauce = 5) + required_reagents = list(/datum/reagent/consumable/soymilk = 4, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/corn_syrup - name = "corn_syrup" - id = "corn_syrup" - results = list("corn_syrup" = 5) - required_reagents = list("corn_starch" = 1, "sacid" = 1) + name = /datum/reagent/consumable/corn_syrup + id = /datum/reagent/consumable/corn_syrup + results = list(/datum/reagent/consumable/corn_syrup = 5) + required_reagents = list(/datum/reagent/consumable/corn_starch = 1, /datum/reagent/toxin/acid = 1) required_temp = 374 /datum/chemical_reaction/cheesewheel name = "Cheesewheel" id = "cheesewheel" - required_reagents = list("milk" = 40) - required_catalysts = list("enzyme" = 5) + required_reagents = list(/datum/reagent/consumable/milk = 40) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -90,7 +90,7 @@ /datum/chemical_reaction/synthmeat name = "synthmeat" id = "synthmeat" - required_reagents = list("blood" = 5, "cryoxadone" = 1) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/cryoxadone = 1) mob_react = FALSE /datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume) @@ -100,20 +100,20 @@ /datum/chemical_reaction/hot_ramen name = "Hot Ramen" - id = "hot_ramen" - results = list("hot_ramen" = 3) - required_reagents = list("water" = 1, "dry_ramen" = 3) + id = /datum/reagent/consumable/hot_ramen + results = list(/datum/reagent/consumable/hot_ramen = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/dry_ramen = 3) /datum/chemical_reaction/hell_ramen name = "Hell Ramen" - id = "hell_ramen" - results = list("hell_ramen" = 6) - required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) + id = /datum/reagent/consumable/hell_ramen + results = list(/datum/reagent/consumable/hell_ramen = 6) + required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/hot_ramen = 6) /datum/chemical_reaction/imitationcarpmeat name = "Imitation Carpmeat" id = "imitationcarpmeat" - required_reagents = list("carpotoxin" = 5) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 5) required_container = /obj/item/reagent_containers/food/snacks/tofu mix_message = "The mixture becomes similar to carp meat." @@ -126,7 +126,7 @@ /datum/chemical_reaction/dough name = "Dough" id = "dough" - required_reagents = list("water" = 10, "flour" = 15) + required_reagents = list(/datum/reagent/water = 10, /datum/reagent/consumable/flour = 15) mix_message = "The ingredients form a dough." /datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume) @@ -137,7 +137,7 @@ /datum/chemical_reaction/cakebatter name = "Cake Batter" id = "cakebatter" - required_reagents = list("eggyolk" = 15, "flour" = 15, "sugar" = 5) + required_reagents = list(/datum/reagent/consumable/eggyolk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) mix_message = "The ingredients form a cake batter." /datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume) @@ -147,12 +147,12 @@ /datum/chemical_reaction/cakebatter/vegan id = "vegancakebatter" - required_reagents = list("soymilk" = 15, "flour" = 15, "sugar" = 5) + required_reagents = list(/datum/reagent/consumable/soymilk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) /datum/chemical_reaction/ricebowl name = "Rice Bowl" id = "ricebowl" - required_reagents = list("rice" = 10, "water" = 10) + required_reagents = list(/datum/reagent/consumable/rice = 10, /datum/reagent/water = 10) required_container = /obj/item/reagent_containers/glass/bowl mix_message = "The rice absorbs the water." diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm index e572cc76ffce..ecbdac571cb0 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_bread.dm @@ -84,6 +84,16 @@ result = /obj/item/reagent_containers/food/snacks/butteredtoast subcategory = CAT_BREAD +/datum/crafting_recipe/food/garlicbread + name = "Garlic Bread" + time = 40 + reqs = list(/obj/item/reagent_containers/food/snacks/grown/garlic = 1, + /obj/item/reagent_containers/food/snacks/breadslice/plain = 1, + /obj/item/reagent_containers/food/snacks/butter = 1 + ) + result = /obj/item/reagent_containers/food/snacks/garlicbread + subcategory = CAT_BREAD + /datum/crafting_recipe/food/butterbiscuit name = "Butter Biscuit" reqs = list( diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index f35735d2d81b..5d31aaff7e39 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -163,7 +163,7 @@ icon_state = "briochecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brioche slices_num = 6 - bonus_reagents = list("nutriment" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) /obj/item/reagent_containers/food/snacks/cakeslice/brioche name = "brioche cake slice" @@ -184,10 +184,10 @@ name = "scotch egg" desc = "A boiled egg wrapped in a delicious, seasoned meatball." icon_state = "scotchegg" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 3 filling_color = "#FFFFF0" - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) /datum/crafting_recipe/food/scotchegg name = "Scotch egg" @@ -204,8 +204,8 @@ name = "Mammi" desc = "A bowl of mushy bread and milk. It reminds you, not too fondly, of a bowel movement." icon_state = "mammi" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) /datum/crafting_recipe/food/mammi name = "Mammi" @@ -221,8 +221,8 @@ name = "chocolate bunny" desc = "Contains less than 10% real rabbit!" icon_state = "chocolatebunny" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) filling_color = "#A0522D" /datum/crafting_recipe/food/chocolatebunny diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index 91b778158ba4..5b53499a8b3a 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -6,14 +6,14 @@ //spooky recipes /datum/recipe/sugarcookie/spookyskull - reagents = list("flour" = 5, "sugar" = 5, "milk" = 5) + reagents = list(/datum/reagent/consumable/flour = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/milk = 5) items = list( /obj/item/reagent_containers/food/snacks/egg, ) result = /obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull /datum/recipe/sugarcookie/spookycoffin - reagents = list("flour" = 5, "sugar" = 5, "coffee" = 5) + reagents = list(/datum/reagent/consumable/flour = 5, /datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/coffee = 5) items = list( /obj/item/reagent_containers/food/snacks/egg, ) diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index f70d23f307d4..65163c2e12f8 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -65,7 +65,7 @@ var/datum/reagent/R = null if(random_reagent) R = pick(subtypesof(/datum/reagent)) - R = GLOB.chemical_reagents_list[initial(R.id)] + R = GLOB.chemical_reagents_list[R] queen_bee = new(src) queen_bee.beehome = src @@ -95,7 +95,7 @@ bee_resources = max(bee_resources-BEE_RESOURCE_HONEYCOMB_COST, 0) var/obj/item/reagent_containers/honeycomb/HC = new(src) if(queen_bee.beegent) - HC.set_reagent(queen_bee.beegent.id) + HC.set_reagent(queen_bee.beegent.type) honeycombs += HC if(bees.len < get_max_bees()) diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index e7faff02091b..daa22c4f850f 100644 --- a/code/modules/hydroponics/beekeeping/honeycomb.dm +++ b/code/modules/hydroponics/beekeeping/honeycomb.dm @@ -9,7 +9,7 @@ disease_amount = 0 volume = 10 amount_per_transfer_from_this = 0 - list_reagents = list("honey" = 5) + list_reagents = list(/datum/reagent/consumable/honey = 5) grind_results = list() var/honey_color = "" @@ -22,7 +22,7 @@ /obj/item/reagent_containers/honeycomb/update_icon() cut_overlays() - var/mutable_appearance/honey_overlay = mutable_appearance(icon, "honey") + var/mutable_appearance/honey_overlay = mutable_appearance(icon, /datum/reagent/consumable/honey) if(honey_color) honey_overlay.icon_state = "greyscale_honey" honey_overlay.color = honey_color @@ -34,7 +34,7 @@ if(istype(R)) name = "honeycomb ([R.name])" honey_color = R.color - reagents.add_reagent(R.id,5) + reagents.add_reagent(R.type,5) else honey_color = "" update_icon() \ No newline at end of file diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 5e837b4d349c..73b13164279c 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -215,9 +215,9 @@ var/S = 0 for(var/obj/item/reagent_containers/food/snacks/grown/I in contents) S += 5 - if(I.reagents.get_reagent_amount("nutriment") < 0.1) + if(I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) < 0.1) points += 1*productivity - else points += I.reagents.get_reagent_amount("nutriment")*10*productivity + else points += I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)*10*productivity qdel(I) if(S) processing = TRUE diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index bc5f3d2ace80..33fbeb91d633 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -34,7 +34,7 @@ data["tastes"] = list(fruit.wine_flavor = 1) else data["tastes"] = list(fruit.tastes[1] = 1) - reagents.add_reagent("fruit_wine", amount, data) + reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, amount, data) qdel(fruit) playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 1c81c3827ba3..19d5128f9e19 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -145,20 +145,20 @@ return TRUE /obj/item/reagent_containers/food/snacks/grown/on_grind() - var/nutriment = reagents.get_reagent_amount("nutriment") + var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) if(grind_results&&grind_results.len) for(var/i in 1 to grind_results.len) grind_results[grind_results[i]] = nutriment - reagents.del_reagent("nutriment") - reagents.del_reagent("vitamin") + reagents.del_reagent(/datum/reagent/consumable/nutriment) + reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin) /obj/item/reagent_containers/food/snacks/grown/on_juice() - var/nutriment = reagents.get_reagent_amount("nutriment") + var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) if(juice_results&&juice_results.len) for(var/i in 1 to juice_results.len) juice_results[juice_results[i]] = nutriment - reagents.del_reagent("nutriment") - reagents.del_reagent("vitamin") + reagents.del_reagent(/datum/reagent/consumable/nutriment) + reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin) // For item-containing growns such as eggy or gatfruit /obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index a3b93db1ea21..e84025208a30 100644 --- a/code/modules/hydroponics/grown/ambrosia.dm +++ b/code/modules/hydroponics/grown/ambrosia.dm @@ -25,7 +25,7 @@ icon_dead = "ambrosia-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/ambrosia/deus) - reagents_add = list("space_drugs" = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05, "toxin" = 0.1) + reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/medicine/bicaridine = 0.1, /datum/reagent/medicine/kelotane = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/toxin = 0.1) /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris seed = /obj/item/seeds/ambrosia @@ -42,7 +42,7 @@ plantname = "Ambrosia Deus" product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus mutatelist = list(/obj/item/seeds/ambrosia/gaia) - reagents_add = list("omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/medicine/omnizine = 0.15, /datum/reagent/medicine/synaptizine = 0.15, /datum/reagent/drug/space_drugs = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) rarity = 40 /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus @@ -62,7 +62,7 @@ plantname = "Ambrosia Gaia" product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia mutatelist = list(/obj/item/seeds/ambrosia/deus) - reagents_add = list("earthsblood" = 0.05, "nutriment" = 0.06, "vitamin" = 0.05) + reagents_add = list(/datum/reagent/medicine/earthsblood = 0.05, /datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/nutriment/vitamin = 0.05) rarity = 30 //These are some pretty good plants right here genes = list() weed_rate = 4 diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm index 007c0b24542a..f8e58aee1b4a 100644 --- a/code/modules/hydroponics/grown/apple.dm +++ b/code/modules/hydroponics/grown/apple.dm @@ -14,7 +14,7 @@ icon_dead = "apple-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple/gold) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/apple seed = /obj/item/seeds/apple @@ -24,9 +24,9 @@ filling_color = "#FF4500" bitesize = 100 // Always eat the apple in one bite foodtype = FRUIT - juice_results = list("applejuice" = 0) + juice_results = list(/datum/reagent/consumable/applejuice = 0) tastes = list("apple" = 1) - distill_reagent = "hcider" + distill_reagent = /datum/reagent/consumable/ethanol/hcider // Gold Apple /obj/item/seeds/apple/gold @@ -39,7 +39,7 @@ maturation = 10 production = 10 mutatelist = list() - reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/gold = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 40 // Alchemy! /obj/item/reagent_containers/food/snacks/grown/apple/gold diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index daa2f7ee2820..fe87f8dc400e 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -12,7 +12,7 @@ icon_dead = "banana-dead" genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace) - reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/banana = 0.1, /datum/reagent/potassium = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) /obj/item/reagent_containers/food/snacks/grown/banana seed = /obj/item/seeds/banana @@ -24,8 +24,8 @@ filling_color = "#FFFF00" bitesize = 5 foodtype = FRUIT - juice_results = list("banana" = 0) - distill_reagent = "bananahonk" + juice_results = list(/datum/reagent/consumable/banana = 0) + distill_reagent = /datum/reagent/consumable/ethanol/bananahonk /obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user) user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") @@ -33,7 +33,7 @@ sleep(25) if(!user) return (OXYLOSS) - user.say("BANG!", forced = "banana") + user.say("BANG!", forced = /datum/reagent/consumable/banana) sleep(25) if(!user) return (OXYLOSS) @@ -70,7 +70,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/banana/mime growthstages = 4 mutatelist = list() - reagents_add = list("nothing" = 0.1, "mutetoxin" = 0.1, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/toxin/mutetoxin = 0.1, /datum/reagent/consumable/nutriment = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/banana/mime @@ -80,7 +80,7 @@ icon_state = "mimana" trash = /obj/item/grown/bananapeel/mimanapeel filling_color = "#FFFFEE" - distill_reagent = "silencer" + distill_reagent = /datum/reagent/consumable/ethanol/silencer /obj/item/grown/bananapeel/mimanapeel seed = /obj/item/seeds/banana/mime @@ -100,7 +100,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/banana/bluespace mutatelist = list() genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("bluespace" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/bluespace = 0.2, /datum/reagent/consumable/banana = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/banana/bluespace diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm index 4338e3b07008..3e5fee411fa6 100644 --- a/code/modules/hydroponics/grown/beans.dm +++ b/code/modules/hydroponics/grown/beans.dm @@ -15,7 +15,7 @@ icon_dead = "soybean-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/soya/koi) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "cooking_oil" = 0.03) //Vegetable oil! + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/consumable/cooking_oil = 0.03) //Vegetable oil! /obj/item/reagent_containers/food/snacks/grown/soybeans seed = /obj/item/seeds/soya @@ -26,7 +26,7 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = VEGETABLES - grind_results = list("soymilk" = 0) + grind_results = list(/datum/reagent/consumable/soymilk = 0) tastes = list("soy" = 1) wine_power = 20 @@ -40,7 +40,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/koibeans potency = 10 mutatelist = list() - reagents_add = list("carpotoxin" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/toxin/carpotoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/koibeans diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index a7e55733e4eb..46060897f5e4 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -15,7 +15,7 @@ icon_dead = "berry-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/berries seed = /obj/item/seeds/berry @@ -26,9 +26,9 @@ filling_color = "#FF00FF" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("berryjuice" = 0) + juice_results = list(/datum/reagent/consumable/berryjuice = 0) tastes = list("berry" = 1) - distill_reagent = "gin" + distill_reagent = /datum/reagent/consumable/ethanol/gin // Poison Berries /obj/item/seeds/berry/poison @@ -39,7 +39,7 @@ plantname = "Poison-Berry Bush" product = /obj/item/reagent_containers/food/snacks/grown/berries/poison mutatelist = list(/obj/item/seeds/berry/death) - reagents_add = list("cyanide" = 0.15, "tirizene" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/toxin/cyanide = 0.15, /datum/reagent/toxin/staminatoxin = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 10 // Mildly poisonous berries are common in reality /obj/item/reagent_containers/food/snacks/grown/berries/poison @@ -49,7 +49,7 @@ icon_state = "poisonberrypile" filling_color = "#C71585" foodtype = FRUIT | TOXIC - juice_results = list("poisonberryjuice" = 0) + juice_results = list(/datum/reagent/consumable/poisonberryjuice = 0) tastes = list("poison-berry" = 1) distill_reagent = null wine_power = 35 @@ -65,7 +65,7 @@ lifespan = 30 potency = 50 mutatelist = list() - reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/toxin/coniine = 0.08, /datum/reagent/toxin/staminatoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/berries/death @@ -91,7 +91,7 @@ endurance = 25 mutatelist = list() genes = list(/datum/plant_gene/trait/glow/berry, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/uranium = 0.25, /datum/reagent/iodine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/berries/glow @@ -123,7 +123,7 @@ icon_dead = "cherry-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cherry/blue) - reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) /obj/item/reagent_containers/food/snacks/grown/cherries seed = /obj/item/seeds/cherry @@ -134,7 +134,7 @@ filling_color = "#FF0000" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("cherryjelly" = 0) + grind_results = list(/datum/reagent/consumable/cherryjelly = 0) tastes = list("cherry" = 1) wine_power = 30 @@ -147,7 +147,7 @@ plantname = "Blue Cherry Tree" product = /obj/item/reagent_containers/food/snacks/grown/bluecherries mutatelist = list() - reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) rarity = 10 /obj/item/reagent_containers/food/snacks/grown/bluecherries @@ -158,7 +158,7 @@ filling_color = "#6495ED" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("bluecherryjelly" = 0) + grind_results = list(/datum/reagent/consumable/bluecherryjelly = 0) tastes = list("blue cherry" = 1) wine_power = 50 @@ -181,7 +181,7 @@ icon_dead = "grape-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grape/green) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1) /obj/item/reagent_containers/food/snacks/grown/grapes seed = /obj/item/seeds/grape @@ -192,9 +192,9 @@ filling_color = "#FF1493" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("grapejuice" = 0) + juice_results = list(/datum/reagent/consumable/grapejuice = 0) tastes = list("grape" = 1) - distill_reagent = "wine" + distill_reagent = /datum/reagent/consumable/ethanol/wine // Green Grapes /obj/item/seeds/grape/green @@ -204,7 +204,7 @@ species = "greengrape" plantname = "Green-Grape Vine" product = /obj/item/reagent_containers/food/snacks/grown/grapes/green - reagents_add = list("kelotane" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1) + reagents_add = list(/datum/reagent/medicine/kelotane = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1) // No rarity: technically it's a beneficial mutant, but it's not exactly "new"... mutatelist = list() @@ -214,4 +214,4 @@ icon_state = "greengrapes" filling_color = "#7FFF00" tastes = list("green grape" = 1) - distill_reagent = "cognac" + distill_reagent = /datum/reagent/consumable/ethanol/cognac diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 67c5e61dcf55..a7e571d7c1d3 100644 --- a/code/modules/hydroponics/grown/cannabis.dm +++ b/code/modules/hydroponics/grown/cannabis.dm @@ -17,7 +17,7 @@ /obj/item/seeds/cannabis/death, /obj/item/seeds/cannabis/white, /obj/item/seeds/cannabis/ultimate) - reagents_add = list("space_drugs" = 0.15, "lipolicide" = 0.35) // gives u the munchies + reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.35) // gives u the munchies /obj/item/seeds/cannabis/rainbow @@ -28,7 +28,7 @@ plantname = "Rainbow Weed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow mutatelist = list() - reagents_add = list("mindbreaker" = 0.15, "lipolicide" = 0.35) + reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.15, /datum/reagent/toxin/lipolicide = 0.35) rarity = 40 /obj/item/seeds/cannabis/death @@ -39,7 +39,7 @@ plantname = "Deathweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death mutatelist = list() - reagents_add = list("cyanide" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15) + reagents_add = list(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15) rarity = 40 /obj/item/seeds/cannabis/white @@ -50,7 +50,7 @@ plantname = "Lifeweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white mutatelist = list() - reagents_add = list("omnizine" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15) + reagents_add = list(/datum/reagent/medicine/omnizine = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15) rarity = 40 @@ -62,21 +62,21 @@ plantname = "Omega Weed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate mutatelist = list() - reagents_add = list("space_drugs" = 0.3, - "mindbreaker" = 0.3, - "mercury" = 0.15, - "lithium" = 0.15, - "atropine" = 0.15, - "haloperidol" = 0.15, - "methamphetamine" = 0.15, - "capsaicin" = 0.15, - "barbers_aid" = 0.15, - "bath_salts" = 0.15, - "itching_powder" = 0.15, - "crank" = 0.15, - "krokodil" = 0.15, - "histamine" = 0.15, - "lipolicide" = 0.15) + reagents_add = list(/datum/reagent/drug/space_drugs = 0.3, + /datum/reagent/toxin/mindbreaker = 0.3, + /datum/reagent/mercury = 0.15, + /datum/reagent/lithium = 0.15, + /datum/reagent/medicine/atropine = 0.15, + /datum/reagent/medicine/haloperidol = 0.15, + /datum/reagent/drug/methamphetamine = 0.15, + /datum/reagent/consumable/capsaicin = 0.15, + /datum/reagent/barbers_aid = 0.15, + /datum/reagent/drug/bath_salts = 0.15, + /datum/reagent/toxin/itching_powder = 0.15, + /datum/reagent/drug/crank = 0.15, + /datum/reagent/drug/krokodil = 0.15, + /datum/reagent/toxin/histamine = 0.15, + /datum/reagent/toxin/lipolicide = 0.15) rarity = 69 diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index c53cd6718ac8..f4520d7fcfbb 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -11,7 +11,7 @@ potency = 15 icon_dead = "wheat-dead" mutatelist = list(/obj/item/seeds/wheat/oat, /obj/item/seeds/wheat/meat) - reagents_add = list("nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/wheat seed = /obj/item/seeds/wheat @@ -22,9 +22,9 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = GRAIN - grind_results = list("flour" = 0) + grind_results = list(/datum/reagent/consumable/flour = 0) tastes = list("wheat" = 1) - distill_reagent = "beer" + distill_reagent = /datum/reagent/consumable/ethanol/beer // Oat /obj/item/seeds/wheat/oat @@ -45,16 +45,16 @@ filling_color = "#556B2F" bitesize_mod = 2 foodtype = GRAIN - grind_results = list("flour" = 0) + grind_results = list(/datum/reagent/consumable/flour = 0) tastes = list("oat" = 1) - distill_reagent = "ale" + distill_reagent = /datum/reagent/consumable/ethanol/ale // Rice /obj/item/seeds/wheat/rice name = "pack of rice seeds" desc = "These may, or may not, grow into rice." icon_state = "seed-rice" - species = "rice" + species = /datum/reagent/consumable/rice plantname = "Rice Stalks" product = /obj/item/reagent_containers/food/snacks/grown/rice mutatelist = list() @@ -69,9 +69,9 @@ filling_color = "#FAFAD2" bitesize_mod = 2 foodtype = GRAIN - grind_results = list("rice" = 0) + grind_results = list(/datum/reagent/consumable/rice = 0) tastes = list("rice" = 1) - distill_reagent = "sake" + distill_reagent = /datum/reagent/consumable/ethanol/sake //Meatwheat - grows into synthetic meat /obj/item/seeds/wheat/meat @@ -92,7 +92,7 @@ bitesize_mod = 2 seed = /obj/item/seeds/wheat/meat foodtype = MEAT | GRAIN - grind_results = list("flour" = 0, "blood" = 0) + grind_results = list(/datum/reagent/consumable/flour = 0, /datum/reagent/blood = 0) tastes = list("meatwheat" = 1) can_distill = FALSE diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 6325daacdcca..0522b5fd4543 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -16,7 +16,7 @@ icon_dead = "chili-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/chili/ice, /obj/item/seeds/chili/ghost) - reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/capsaicin = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/chili seed = /obj/item/seeds/chili @@ -41,7 +41,7 @@ production = 4 rarity = 20 mutatelist = list() - reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/frostoil = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02) /obj/item/reagent_containers/food/snacks/grown/icepepper seed = /obj/item/seeds/chili/ice @@ -67,7 +67,7 @@ yield = 3 rarity = 20 mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.3, /datum/reagent/consumable/capsaicin = 0.55, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/ghost_chili seed = /obj/item/seeds/chili/ghost diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 7a847032d9f5..fe6d466598f7 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -23,7 +23,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/orange) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/lime seed = /obj/item/seeds/lime @@ -31,7 +31,7 @@ desc = "It's so sour, your face will twist." icon_state = "lime" filling_color = "#00FF00" - juice_results = list("limejuice" = 0) + juice_results = list(/datum/reagent/consumable/limejuice = 0) // Orange /obj/item/seeds/orange @@ -50,7 +50,7 @@ icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/lime, /obj/item/seeds/orange_3d) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/orange seed = /obj/item/seeds/orange @@ -58,8 +58,8 @@ desc = "It's a tangy fruit." icon_state = "orange" filling_color = "#FFA500" - juice_results = list("orangejuice" = 0) - distill_reagent = "triple_sec" + juice_results = list(/datum/reagent/consumable/orangejuice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/triple_sec // Lemon /obj/item/seeds/lemon @@ -77,7 +77,7 @@ icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/firelemon) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/lemon seed = /obj/item/seeds/lemon @@ -85,7 +85,7 @@ desc = "When life gives you lemons, make lemonade." icon_state = "lemon" filling_color = "#FFD700" - juice_results = list("lemonjuice" = 0) + juice_results = list(/datum/reagent/consumable/lemonjuice = 0) // Combustible lemon /obj/item/seeds/firelemon //combustible lemon is too long so firelemon @@ -102,7 +102,7 @@ lifespan = 55 endurance = 45 yield = 4 - reagents_add = list("nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/firelemon seed = /obj/item/seeds/firelemon @@ -174,16 +174,16 @@ icon_grow = "lime-grow" icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d seed = /obj/item/seeds/orange - name = "extradminesional orange" + name = "extradimensional orange" desc = "You can hardly wrap your head around this thing." icon_state = "orang" filling_color = "#FFA500" - juice_results = list("orangejuice" = 0) - distill_reagent = "triple_sec" + juice_results = list(/datum/reagent/consumable/orangejuice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/triple_sec tastes = list("polygons" = 1, "oranges" = 1) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d/pickup(mob/user) @@ -192,4 +192,4 @@ /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d/dropped(mob/user) . = ..() - icon_state = "orang" + icon_state = "orang" \ No newline at end of file diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index ea1b9716bd1f..e84a913c2da6 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -16,7 +16,7 @@ icon_dead = "cocoapod-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cocoapod/vanillapod) - reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/coco = 0.25, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/cocoapod seed = /obj/item/seeds/cocoapod @@ -27,7 +27,7 @@ bitesize_mod = 2 foodtype = FRUIT tastes = list("cocoa" = 1) - distill_reagent = "creme_de_cacao" + distill_reagent = /datum/reagent/consumable/ethanol/creme_de_cacao // Vanilla Pod /obj/item/seeds/cocoapod/vanillapod @@ -39,7 +39,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/vanillapod genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list() - reagents_add = list("vanilla" = 0.25, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/vanilla = 0.25, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/vanillapod seed = /obj/item/seeds/cocoapod/vanillapod @@ -49,4 +49,4 @@ filling_color = "#FFD700" foodtype = FRUIT tastes = list("vanilla" = 1) - distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it. + distill_reagent = /datum/reagent/consumable/vanilla //Takes longer, but you can get even more vanilla from it. diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index c259baaf2dfd..691cbb8344f3 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -13,7 +13,7 @@ icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes icon_dead = "corn-dead" // Same for the dead icon mutatelist = list(/obj/item/seeds/corn/snapcorn) - reagents_add = list("cornoil" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/cornoil = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/corn seed = /obj/item/seeds/corn @@ -25,9 +25,9 @@ trash = /obj/item/grown/corncob bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list("corn_starch" = 0) + juice_results = list(/datum/reagent/consumable/corn_starch = 0) tastes = list("corn" = 1) - distill_reagent = "whiskey" + distill_reagent = /datum/reagent/consumable/ethanol/whiskey /obj/item/grown/corncob name = "corn cob" diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm index 7c01a68f0a7c..f893ad9e57c1 100644 --- a/code/modules/hydroponics/grown/eggplant.dm +++ b/code/modules/hydroponics/grown/eggplant.dm @@ -13,7 +13,7 @@ icon_dead = "eggplant-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/eggplant/eggy) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/eggplant seed = /obj/item/seeds/eggplant @@ -36,7 +36,7 @@ lifespan = 75 production = 12 mutatelist = list() - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/shell/eggy seed = /obj/item/seeds/eggplant/eggy @@ -47,4 +47,4 @@ filling_color = "#F8F8FF" bitesize_mod = 2 foodtype = MEAT - distill_reagent = "eggnog" + distill_reagent = /datum/reagent/consumable/ethanol/eggnog diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 4e1718f853e4..cdb27cc4f9ac 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -15,7 +15,7 @@ icon_grow = "poppy-grow" icon_dead = "poppy-dead" mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily) - reagents_add = list("bicaridine" = 0.2, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/medicine/bicaridine = 0.2, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/poppy seed = /obj/item/seeds/poppy @@ -26,7 +26,7 @@ filling_color = "#FF6347" bitesize_mod = 3 foodtype = VEGETABLES | GROSS - distill_reagent = "vermouth" + distill_reagent = /datum/reagent/consumable/ethanol/vermouth // Lily /obj/item/seeds/poppy/lily @@ -79,7 +79,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' - reagents_add = list("nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/harebell seed = /obj/item/seeds/harebell @@ -89,7 +89,7 @@ slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 3 - distill_reagent = "vermouth" + distill_reagent = /datum/reagent/consumable/ethanol/vermouth // Sunflower /obj/item/seeds/sunflower @@ -107,7 +107,7 @@ icon_grow = "sunflower-grow" icon_dead = "sunflower-dead" mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower) - reagents_add = list("cornoil" = 0.08, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/cornoil = 0.08, /datum/reagent/consumable/nutriment = 0.04) /obj/item/grown/sunflower // FLOWER POWER! seed = /obj/item/seeds/sunflower @@ -141,7 +141,7 @@ icon_dead = "sunflower-dead" product = /obj/item/reagent_containers/food/snacks/grown/moonflower mutatelist = list() - reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/ethanol/moonshine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/moonflower @@ -152,7 +152,7 @@ slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 2 - distill_reagent = "absinthe" //It's made from flowers. + distill_reagent = /datum/reagent/consumable/ethanol/absinthe //It's made from flowers. // Novaflower /obj/item/seeds/sunflower/novaflower @@ -165,7 +165,7 @@ icon_dead = "sunflower-dead" product = /obj/item/grown/novaflower mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "nutriment" = 0) + reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.25, /datum/reagent/consumable/capsaicin = 0.3, /datum/reagent/consumable/nutriment = 0) rarity = 20 /obj/item/grown/novaflower @@ -183,7 +183,7 @@ throw_speed = 1 throw_range = 3 attack_verb = list("roasted", "scorched", "burned") - grind_results = list("capsaicin" = 0, "condensedcapsaicin" = 0) + grind_results = list(/datum/reagent/consumable/capsaicin = 0, /datum/reagent/consumable/condensedcapsaicin = 0) /obj/item/grown/novaflower/add_juice() ..() diff --git a/code/modules/hydroponics/grown/garlic.dm b/code/modules/hydroponics/grown/garlic.dm new file mode 100644 index 000000000000..53d147f22b1b --- /dev/null +++ b/code/modules/hydroponics/grown/garlic.dm @@ -0,0 +1,22 @@ +/obj/item/seeds/garlic + name = "pack of garlic seeds" + desc = "A packet of extremely pungent seeds." + icon_state = "seed-garlic" + species = /datum/reagent/consumable/garlic + plantname = "Garlic Sprouts" + product = /obj/item/reagent_containers/food/snacks/grown/garlic + yield = 6 + potency = 25 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' + reagents_add = list(/datum/reagent/consumable/garlic = 0.15, /datum/reagent/consumable/nutriment = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/garlic + seed = /obj/item/seeds/garlic + name = "garlic" + desc = "Delicious, but with a potentially overwhelming odor." + icon_state = "garlic" + filling_color = "#C0C9A0" + bitesize_mod = 2 + tastes = list("garlic" = 1) + wine_power = 10 diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 1a1c2ac07fa8..bbaccbc437dd 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -16,7 +16,7 @@ icon_dead = "grass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grass/carpet) - reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05) /obj/item/reagent_containers/food/snacks/grown/grass seed = /obj/item/seeds/grass @@ -45,7 +45,7 @@ name = "pack of carpet seeds" desc = "These seeds grow into stylish carpet samples." icon_state = "seed-carpet" - species = "carpet" + species = /datum/reagent/carpet plantname = "Carpet" product = /obj/item/reagent_containers/food/snacks/grown/grass/carpet mutatelist = list() diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 6ceb69536dcb..5f1fdcdaa920 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -14,7 +14,7 @@ growthstages = 4 rarity = 30 var/list/mutations = list() - reagents_add = list("charcoal" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/medicine/charcoal = 0.04, /datum/reagent/consumable/nutriment = 0.02) /obj/item/seeds/kudzu/Copy() var/obj/item/seeds/kudzu/S = ..() @@ -58,7 +58,7 @@ /obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S) var/list/temp_mut_list = list() - if(S.has_reagent("sterilizine", 5)) + if(S.has_reagent(/datum/reagent/space_cleaner/sterilizine, 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == NEGATIVE) temp_mut_list += SM @@ -66,7 +66,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("welding_fuel", 5)) + if(S.has_reagent(/datum/reagent/fuel, 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == POSITIVE) temp_mut_list += SM @@ -74,7 +74,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("phenol", 5)) + if(S.has_reagent(/datum/reagent/phenol, 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == MINOR_NEGATIVE) temp_mut_list += SM @@ -82,16 +82,16 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("blood", 15)) + if(S.has_reagent(/datum/reagent/blood, 15)) adjust_production(rand(15, -5)) - if(S.has_reagent("amatoxin", 5)) + if(S.has_reagent(/datum/reagent/toxin/amatoxin, 5)) adjust_production(rand(5, -15)) - if(S.has_reagent("plasma", 5)) + if(S.has_reagent(/datum/reagent/toxin/plasma, 5)) adjust_potency(rand(5, -15)) - if(S.has_reagent("holywater", 10)) + if(S.has_reagent(/datum/reagent/water/holywater, 10)) adjust_potency(rand(15, -5)) diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 35dba21dc4d2..3bebfb5cbd5a 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -12,7 +12,7 @@ icon_dead = "watermelon-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/watermelon/holy) - reagents_add = list("water" = 0.2, "vitamin" = 0.04, "nutriment" = 0.2) + reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2) /obj/item/seeds/watermelon/suicide_act(mob/user) user.visible_message("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -33,7 +33,7 @@ filling_color = "#008000" bitesize_mod = 3 foodtype = FRUIT - juice_results = list("watermelonjuice" = 0) + juice_results = list(/datum/reagent/consumable/watermelonjuice = 0) wine_power = 40 // Holymelon @@ -45,7 +45,7 @@ plantname = "Holy Melon Vines" product = /obj/item/reagent_containers/food/snacks/grown/holymelon mutatelist = list() - reagents_add = list("holywater" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/water/holywater = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/holymelon diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 7e2767f437f3..d288b5a9da6a 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -79,7 +79,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/replicapod) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/cabbage seed = /obj/item/seeds/cabbage @@ -116,7 +116,7 @@ filling_color = "#FFD700" bitesize_mod = 2 foodtype = VEGETABLES | SUGAR - distill_reagent = "rum" + distill_reagent = /datum/reagent/consumable/ethanol/rum // Gatfruit /obj/item/seeds/gatfruit @@ -136,7 +136,7 @@ growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' - reagents_add = list("sulfur" = 0.1, "carbon" = 0.1, "nitrogen" = 0.07, "potassium" = 0.05) + reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05) /obj/item/reagent_containers/food/snacks/grown/shell/gatfruit seed = /obj/item/seeds/gatfruit @@ -158,7 +158,7 @@ plantname = "Cherry Bomb Tree" product = /obj/item/reagent_containers/food/snacks/grown/cherry_bomb mutatelist = list() - reagents_add = list("nutriment" = 0.1, "sugar" = 0.1, "blackpowder" = 0.7) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/blackpowder = 0.7) rarity = 60 //See above /obj/item/reagent_containers/food/snacks/grown/cherry_bomb diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index fe2beb896c56..f30e110b9121 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -21,7 +21,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("morphine" = 0.35, "charcoal" = 0.35, "nutriment" = 0) + reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/charcoal = 0.35, /datum/reagent/consumable/nutriment = 0) /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi seed = /obj/item/seeds/reishi @@ -47,7 +47,7 @@ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/angel) - reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.35, "nutriment" = 0, "growthserum" = 0.1) + reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.35, /datum/reagent/consumable/nutriment = 0, /datum/reagent/growthserum = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/amanita seed = /obj/item/seeds/amanita @@ -73,7 +73,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.1, "nutriment" = 0, "amanitin" = 0.2) + reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.1, /datum/reagent/consumable/nutriment = 0, /datum/reagent/toxin/amanitin = 0.2) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/angel @@ -99,7 +99,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("mushroomhallucinogen" = 0.25, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.25, /datum/reagent/consumable/nutriment = 0.02) /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap seed = /obj/item/seeds/liberty @@ -125,7 +125,7 @@ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/plump/walkingmushroom) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet seed = /obj/item/seeds/plump @@ -133,7 +133,7 @@ desc = "Plumus Hellmus: Plump, soft and s-so inviting~" icon_state = "plumphelmet" filling_color = "#9370DB" - distill_reagent = "manlydorf" + distill_reagent = /datum/reagent/consumable/ethanol/manly_dorf // Walking Mushroom /obj/item/seeds/plump/walkingmushroom @@ -149,7 +149,7 @@ yield = 1 growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list() - reagents_add = list("vitamin" = 0.05, "nutriment" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.15) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom @@ -190,7 +190,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle seed = /obj/item/seeds/chanter @@ -219,7 +219,7 @@ genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/glowshroom/glowcap, /obj/item/seeds/glowshroom/shadowshroom) - reagents_add = list("radium" = 0.1, "phosphorus" = 0.1, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/uranium/radium = 0.1, /datum/reagent/phosphorus = 0.1, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom seed = /obj/item/seeds/glowshroom @@ -264,7 +264,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap genes = list(/datum/plant_gene/trait/glow/red, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism) mutatelist = list() - reagents_add = list("teslium" = 0.1, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/teslium = 0.1, /datum/reagent/consumable/nutriment = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap @@ -289,7 +289,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom genes = list(/datum/plant_gene/trait/glow/shadow, /datum/plant_gene/trait/plant_type/fungal_metabolism) mutatelist = list() - reagents_add = list("radium" = 0.2, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/uranium/radium = 0.2, /datum/reagent/consumable/nutriment = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom @@ -321,7 +321,7 @@ potency = 15 growthstages = 3 rarity = 20 - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) resistance_flags = FIRE_PROOF /obj/item/seeds/lavaland/polypore diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index b64bdce4ccc2..7fe9d52fe50b 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -11,7 +11,7 @@ growthstages = 5 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/nettle/death) - reagents_add = list("sacid" = 0.5) + reagents_add = list(/datum/reagent/toxin/acid = 0.5) /obj/item/seeds/nettle/death name = "pack of death-nettle seeds" @@ -25,7 +25,7 @@ yield = 2 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/stinging) mutatelist = list() - reagents_add = list("facid" = 0.5, "sacid" = 0.5) + reagents_add = list(/datum/reagent/toxin/acid/fluacid = 0.5, /datum/reagent/toxin/acid = 0.5) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/nettle // "snack" diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 9cb8d1a63c6f..2ebaa6d5e27a 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -13,7 +13,7 @@ growthstages = 3 weed_chance = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) mutatelist = list(/obj/item/seeds/onion/red) /obj/item/reagent_containers/food/snacks/grown/onion @@ -36,7 +36,7 @@ plantname = "Red Onion Sprouts" weed_chance = 1 product = /obj/item/reagent_containers/food/snacks/grown/onion/red - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "tearjuice" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/tearjuice = 0.05) /obj/item/reagent_containers/food/snacks/grown/onion/red seed = /obj/item/seeds/onion/red @@ -61,7 +61,7 @@ name = "onion slices" desc = "Rings, not for wearing." icon_state = "onionslice" - list_reagents = list("nutriment" = 5, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#C0C9A0" gender = PLURAL cooked_type = /obj/item/reagent_containers/food/snacks/onionrings @@ -71,4 +71,4 @@ desc = "They shine like exceptionally low quality amethyst." icon_state = "onionslice_red" filling_color = "#C29ACF" - list_reagents = list("nutriment" = 5, "vitamin" = 2, "tearjuice" = 2.5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/tearjuice = 2.5) diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index e52c261217b9..40b3a67573fe 100644 --- a/code/modules/hydroponics/grown/pineapple.dm +++ b/code/modules/hydroponics/grown/pineapple.dm @@ -12,7 +12,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple) - reagents_add = list("vitamin" = 0.02, "nutriment" = 0.2, "water" = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.04) /obj/item/reagent_containers/food/snacks/grown/pineapple seed = /obj/item/seeds/pineapple diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index 15378b368e72..20f2a357b60b 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -16,7 +16,7 @@ icon_dead = "potato-dead" genes = list(/datum/plant_gene/trait/battery) mutatelist = list(/obj/item/seeds/potato/sweet) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/potato seed = /obj/item/seeds/potato @@ -26,8 +26,8 @@ filling_color = "#E9967A" bitesize = 100 foodtype = VEGETABLES - juice_results = list("potato" = 0) - distill_reagent = "vodka" + juice_results = list(/datum/reagent/consumable/potato_juice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/vodka /obj/item/reagent_containers/food/snacks/grown/potato/wedges name = "potato wedges" @@ -57,11 +57,11 @@ plantname = "Sweet Potato Plants" product = /obj/item/reagent_containers/food/snacks/grown/potato/sweet mutatelist = list() - reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/potato/sweet seed = /obj/item/seeds/potato/sweet name = "sweet potato" desc = "It's sweet." icon_state = "sweetpotato" - distill_reagent = "sbiten" + distill_reagent = /datum/reagent/consumable/ethanol/sbiten diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 644dedff3d02..e26d1c1d2a1e 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -14,7 +14,7 @@ icon_dead = "pumpkin-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/pumpkin/blumpkin) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2) /obj/item/reagent_containers/food/snacks/grown/pumpkin seed = /obj/item/seeds/pumpkin @@ -24,7 +24,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("pumpkinjuice" = 0) + juice_results = list(/datum/reagent/consumable/pumpkinjuice = 0) wine_power = 20 /obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params) @@ -45,7 +45,7 @@ plantname = "Blumpkin Vines" product = /obj/item/reagent_containers/food/snacks/grown/blumpkin mutatelist = list() - reagents_add = list("ammonia" = 0.2, "chlorine" = 0.1, "nutriment" = 0.2) + reagents_add = list(/datum/reagent/ammonia = 0.2, /datum/reagent/chlorine = 0.1, /datum/reagent/consumable/nutriment = 0.2) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/blumpkin @@ -56,5 +56,5 @@ filling_color = "#87CEFA" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("blumpkinjuice" = 0) + juice_results = list(/datum/reagent/consumable/blumpkinjuice = 0) wine_power = 50 diff --git a/code/modules/hydroponics/grown/rainbow_bunch.dm b/code/modules/hydroponics/grown/rainbow_bunch.dm index c50de8d8c500..44e8ced977bf 100644 --- a/code/modules/hydroponics/grown/rainbow_bunch.dm +++ b/code/modules/hydroponics/grown/rainbow_bunch.dm @@ -16,7 +16,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' icon_dead = "rainbowbunch-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list("nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/rainbow_flower seed = /obj/item/seeds/rainbow_bunch @@ -38,40 +38,40 @@ if(1) item_color = "red" color = "#DA0000" - list_reagents = list("redcrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/red = 3) desc += " This one is in a bright red color." if(2) item_color = "orange" color = "#FF9300" - list_reagents = list("orangecrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/orange = 3) desc += " This one is in a citrus orange color." if(3) item_color = "yellow" color = "#FFF200" - list_reagents = list("yellowcrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/yellow = 3) desc += " This one is in a bright yellow color." if(4) item_color = "green" color = "#A8E61D" - list_reagents = list("greencrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 3) desc += " This one is in a grassy green color." if(5) item_color = "blue" color = "#00B7EF" - list_reagents = list("bluecrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/blue = 3) desc += " This one is in a soothing blue color." if(6) item_color = "purple" color = "#DA00FF" - list_reagents = list("purplecrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/purple = 3) desc += " This one is in a vibrant purple color." if(7) item_color = "black" color = "#1C1C1C" - list_reagents = list("blackcrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/black = 3) desc += " This one is in a midnight black color." if(8) item_color = "white" color = "#FFFFFF" - list_reagents = list("whitecrayonpowder" = 3) + list_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/white = 3) desc += " This one is in a pure white color." diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index cfe73c638240..41907e7bea95 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -31,7 +31,7 @@ /obj/item/seeds/replicapod/on_reagent_change(changetype) if(changetype == ADD_REAGENT) - var/datum/reagent/blood/B = reagents.has_reagent("blood") + var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) if(B) if(B.data["mind"] && B.data["cloneable"]) mind = B.data["mind"] @@ -48,7 +48,7 @@ else visible_message("The [src] rejects the sample!") - if(!reagents.has_reagent("blood")) + if(!reagents.has_reagent(/datum/reagent/blood)) mind = null ckey = null realName = null diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index be0a209c9f9e..871d1535a0d0 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -12,7 +12,7 @@ growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' mutatelist = list(/obj/item/seeds/carrot/parsnip) - reagents_add = list("oculine" = 0.25, "vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/medicine/oculine = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/carrot seed = /obj/item/seeds/carrot @@ -22,7 +22,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list("carrotjuice" = 0) + juice_results = list(/datum/reagent/consumable/carrotjuice = 0) wine_power = 30 /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) @@ -45,7 +45,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/parsnip icon_dead = "carrot-dead" mutatelist = list() - reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/parsnip seed = /obj/item/seeds/carrot/parsnip @@ -54,6 +54,7 @@ icon_state = "parsnip" bitesize_mod = 2 foodtype = VEGETABLES + juice_results = list(/datum/reagent/consumable/parsnipjuice = 0) wine_power = 35 @@ -71,7 +72,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" mutatelist = list(/obj/item/seeds/redbeet) - reagents_add = list("vitamin" = 0.04, "sugar" = 0.2, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/sugar = 0.2, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/whitebeet seed = /obj/item/seeds/whitebeet @@ -97,7 +98,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" genes = list(/datum/plant_gene/trait/maxchem) - reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/redbeet seed = /obj/item/seeds/redbeet diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index fc84617ed8f7..3d62ecdf7fcf 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -21,7 +21,7 @@ desc = "These aromatic tips of the tea plant can be dried to make tea." icon_state = "tea_aspera_leaves" filling_color = "#008000" - grind_results = list("teapowder" = 0) + grind_results = list(/datum/reagent/toxin/teapowder = 0) dry_grind = TRUE can_distill = FALSE @@ -33,7 +33,7 @@ plantname = "Tea Astra Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/astra mutatelist = list() - reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1) + reagents_add = list(/datum/reagent/medicine/synaptizine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/teapowder = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tea/astra @@ -41,7 +41,7 @@ name = "Tea Astra tips" icon_state = "tea_astra_leaves" filling_color = "#4582B4" - grind_results = list("teapowder" = 0, "salglu_solution" = 0) + grind_results = list(/datum/reagent/toxin/teapowder = 0, /datum/reagent/medicine/salglu_solution = 0) // Coffee @@ -61,7 +61,7 @@ icon_dead = "coffee-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/coffee/robusta) - reagents_add = list("vitamin" = 0.04, "coffeepowder" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1) /obj/item/reagent_containers/food/snacks/grown/coffee seed = /obj/item/seeds/coffee @@ -71,8 +71,8 @@ filling_color = "#DC143C" bitesize_mod = 2 dry_grind = TRUE - grind_results = list("coffeepowder" = 0) - distill_reagent = "kahlua" + grind_results = list(/datum/reagent/toxin/coffeepowder = 0) + distill_reagent = /datum/reagent/consumable/ethanol/kahlua // Coffee Robusta /obj/item/seeds/coffee/robusta @@ -83,7 +83,7 @@ plantname = "Coffee Robusta Bush" product = /obj/item/reagent_containers/food/snacks/grown/coffee/robusta mutatelist = list() - reagents_add = list("ephedrine" = 0.1, "vitamin" = 0.04, "coffeepowder" = 0.1) + reagents_add = list(/datum/reagent/medicine/ephedrine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/coffee/robusta @@ -91,4 +91,4 @@ name = "coffee robusta beans" desc = "Increases robustness by 37 percent!" icon_state = "coffee_robusta" - grind_results = list("coffeepowder" = 0, "morphine" = 0) + grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/morphine = 0) diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 684271fa6b46..1e2d25d8257c 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -13,7 +13,7 @@ growthstages = 3 icon_dead = "tobacco-dead" mutatelist = list(/obj/item/seeds/tobacco/space) - reagents_add = list("nicotine" = 0.03, "nutriment" = 0.03) + reagents_add = list(/datum/reagent/drug/nicotine = 0.03, /datum/reagent/consumable/nutriment = 0.03) /obj/item/reagent_containers/food/snacks/grown/tobacco seed = /obj/item/seeds/tobacco @@ -21,7 +21,7 @@ desc = "Dry them out to make some smokes." icon_state = "tobacco_leaves" filling_color = "#008000" - distill_reagent = "creme_de_menthe" //Menthol, I guess. + distill_reagent = /datum/reagent/consumable/ethanol/creme_de_menthe //Menthol, I guess. // Space Tobacco /obj/item/seeds/tobacco/space @@ -32,7 +32,7 @@ plantname = "Space Tobacco Plant" product = /obj/item/reagent_containers/food/snacks/grown/tobacco/space mutatelist = list() - reagents_add = list("salbutamol" = 0.05, "nicotine" = 0.08, "nutriment" = 0.03) + reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08, /datum/reagent/consumable/nutriment = 0.03) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tobacco/space diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index ffd0ba70897d..f4ca793be990 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -12,7 +12,7 @@ icon_dead = "tomato-dead" genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tomato/blue, /obj/item/seeds/tomato/blood, /obj/item/seeds/tomato/killer) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/tomato seed = /obj/item/seeds/tomato @@ -23,9 +23,9 @@ filling_color = "#FF6347" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("ketchup" = 0) - juice_results = list("tomatojuice" = 0) - distill_reagent = "enzyme" + grind_results = list(/datum/reagent/consumable/ketchup = 0) + juice_results = list(/datum/reagent/consumable/tomatojuice = 0) + distill_reagent = /datum/reagent/consumable/enzyme // Blood Tomato /obj/item/seeds/tomato/blood @@ -36,7 +36,7 @@ plantname = "Blood-Tomato Plants" product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood mutatelist = list() - reagents_add = list("blood" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blood @@ -47,8 +47,8 @@ splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" foodtype = FRUIT | GROSS - grind_results = list("ketchup" = 0, "blood" = 0) - distill_reagent = "bloodymary" + grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) + distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary // Blue Tomato /obj/item/seeds/tomato/blue @@ -62,7 +62,7 @@ icon_grow = "bluetomato-grow" mutatelist = list(/obj/item/seeds/tomato/blue/bluespace) genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("lube" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blue @@ -72,7 +72,7 @@ icon_state = "bluetomato" splat_type = /obj/effect/decal/cleanable/oil filling_color = "#0000FF" - distill_reagent = "laughter" + distill_reagent = /datum/reagent/consumable/laughter // Bluespace Tomato /obj/item/seeds/tomato/blue/bluespace @@ -85,7 +85,7 @@ yield = 2 mutatelist = list() genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("lube" = 0.2, "bluespace" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/bluespace = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace @@ -120,7 +120,7 @@ icon_state = "killertomato" var/awakening = 0 filling_color = "#FF0000" - distill_reagent = "demonsblood" + distill_reagent = /datum/reagent/consumable/ethanol/demonsblood /obj/item/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone) if(awakening) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 1bb11459562c..cd27d88ee1c6 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -24,7 +24,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list("weedkiller" = 100) + list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 100) /obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user) user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -39,7 +39,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list("pestkiller" = 100) + list_reagents = list(/datum/reagent/toxin/pestkiller = 100) /obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user) user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -160,17 +160,17 @@ /obj/item/reagent_containers/glass/bottle/nutrient/ez name = "bottle of E-Z-Nutrient" desc = "Contains a fertilizer that causes mild mutations with each harvest." - list_reagents = list("eznutriment" = 50) + list_reagents = list(/datum/reagent/plantnutriment/eznutriment = 50) /obj/item/reagent_containers/glass/bottle/nutrient/l4z name = "bottle of Left 4 Zed" desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants." - list_reagents = list("left4zednutriment" = 50) + list_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 50) /obj/item/reagent_containers/glass/bottle/nutrient/rh name = "bottle of Robust Harvest" desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations." - list_reagents = list("robustharvestnutriment" = 50) + list_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 50) /obj/item/reagent_containers/glass/bottle/nutrient/empty name = "bottle" @@ -183,9 +183,9 @@ /obj/item/reagent_containers/glass/bottle/killer/weedkiller name = "bottle of weed killer" desc = "Contains a herbicide." - list_reagents = list("weedkiller" = 50) + list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 50) /obj/item/reagent_containers/glass/bottle/killer/pestkiller name = "bottle of pest spray" desc = "Contains a pesticide." - list_reagents = list("pestkiller" = 50) + list_reagents = list(/datum/reagent/toxin/pestkiller = 50) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 5c032413b90c..6072468bf907 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -445,7 +445,7 @@ myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines // Requires 5 mutagen to possibly change species.// Poor man's mutagen. - if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) + if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/uranium/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10)) switch(rand(100)) if(91 to 100) adjustHealth(-10) @@ -466,202 +466,202 @@ to_chat(user, "Nothing happens...") // 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen - else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5)) + else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/uranium/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5)) hardmutate() - else if(S.has_reagent("mutagen", 1) || S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) + else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/uranium/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2)) mutate() // After handling the mutating, we now handle the damage from adding crude radioactives... - if(S.has_reagent("uranium", 1)) - adjustHealth(-round(S.get_reagent_amount("uranium") * 1)) - adjustToxic(round(S.get_reagent_amount("uranium") * 2)) - if(S.has_reagent("radium", 1)) - adjustHealth(-round(S.get_reagent_amount("radium") * 1)) - adjustToxic(round(S.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce) + if(S.has_reagent(/datum/reagent/uranium, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2)) + if(S.has_reagent(/datum/reagent/uranium/radium, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium/radium) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium/radium) * 3)) // Radium is harsher (OOC: also easier to produce) // Nutriments - if(S.has_reagent("eznutriment", 1)) + if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1)) yieldmod = 1 mutmod = 1 - adjustNutri(round(S.get_reagent_amount("eznutriment") * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1)) - if(S.has_reagent("left4zednutriment", 1)) + if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1)) yieldmod = 0 mutmod = 2 - adjustNutri(round(S.get_reagent_amount("left4zednutriment") * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1)) - if(S.has_reagent("robustharvestnutriment", 1)) + if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1)) yieldmod = 1.3 mutmod = 0 - adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 )) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) *1 )) // Ambrosia Gaia produces earthsblood. - if(S.has_reagent("earthsblood")) - self_sufficiency_progress += S.get_reagent_amount("earthsblood") + if(S.has_reagent(/datum/reagent/medicine/earthsblood)) + self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood) if(self_sufficiency_progress >= self_sufficiency_req) become_self_sufficient() else if(!self_sustaining) to_chat(user, "[src] warms as it might on a spring day under a genuine Sun.") // Antitoxin binds shit pretty well. So the tox goes significantly down - if(S.has_reagent("charcoal", 1)) - adjustToxic(-round(S.get_reagent_amount("charcoal") * 2)) + if(S.has_reagent(/datum/reagent/medicine/charcoal, 1)) + adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2)) // NIGGA, YOU JUST WENT ON FULL RETARD. - if(S.has_reagent("toxin", 1)) - adjustToxic(round(S.get_reagent_amount("toxin") * 2)) + if(S.has_reagent(/datum/reagent/toxin, 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2)) // Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now... - if(S.has_reagent("milk", 1)) - adjustNutri(round(S.get_reagent_amount("milk") * 0.1)) - adjustWater(round(S.get_reagent_amount("milk") * 0.9)) + if(S.has_reagent(/datum/reagent/consumable/milk, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9)) // Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay? - if(S.has_reagent("beer", 1)) - adjustHealth(-round(S.get_reagent_amount("beer") * 0.05)) - adjustNutri(round(S.get_reagent_amount("beer") * 0.25)) - adjustWater(round(S.get_reagent_amount("beer") * 0.7)) + if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7)) // You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial - if(S.has_reagent("fluorine", 1)) - adjustHealth(-round(S.get_reagent_amount("fluorine") * 2)) - adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5)) - adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5)) + if(S.has_reagent(/datum/reagent/fluorine, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5)) + adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5)) adjustWeeds(-rand(1,4)) // You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial - if(S.has_reagent("chlorine", 1)) - adjustHealth(-round(S.get_reagent_amount("chlorine") * 1)) - adjustToxic(round(S.get_reagent_amount("chlorine") * 1.5)) - adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5)) + if(S.has_reagent(/datum/reagent/chlorine, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5)) + adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5)) adjustWeeds(-rand(1,3)) // White Phosphorous + water -> phosphoric acid. That's not a good thing really. // Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much. - if(S.has_reagent("phosphorus", 1)) - adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75)) - adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1)) - adjustWater(-round(S.get_reagent_amount("phosphorus") * 0.5)) + if(S.has_reagent(/datum/reagent/phosphorus, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1)) + adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5)) adjustWeeds(-rand(1,2)) // Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though... - if(S.has_reagent("sugar", 1)) + if(S.has_reagent(/datum/reagent/consumable/sugar, 1)) adjustWeeds(rand(1,2)) adjustPests(rand(1,2)) - adjustNutri(round(S.get_reagent_amount("sugar") * 0.1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1)) // It is water! - if(S.has_reagent("water", 1)) - adjustWater(round(S.get_reagent_amount("water") * 1)) + if(S.has_reagent(/datum/reagent/water, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1)) // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~ - if(S.has_reagent("holywater", 1)) - adjustWater(round(S.get_reagent_amount("holywater") * 1)) - adjustHealth(round(S.get_reagent_amount("holywater") * 0.1)) + if(S.has_reagent(/datum/reagent/water/holywater, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1)) // A variety of nutrients are dissolved in club soda, without sugar. // These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth. - if(S.has_reagent("sodawater", 1)) - adjustWater(round(S.get_reagent_amount("sodawater") * 1)) - adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1)) - adjustNutri(round(S.get_reagent_amount("sodawater") * 0.1)) + if(S.has_reagent(/datum/reagent/consumable/sodawater, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1)) // Man, you guys are retards - if(S.has_reagent("sacid", 1)) - adjustHealth(-round(S.get_reagent_amount("sacid") * 1)) - adjustToxic(round(S.get_reagent_amount("sacid") * 1.5)) + if(S.has_reagent(/datum/reagent/toxin/acid, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5)) adjustWeeds(-rand(1,2)) // SERIOUSLY - if(S.has_reagent("facid", 1)) - adjustHealth(-round(S.get_reagent_amount("facid") * 2)) - adjustToxic(round(S.get_reagent_amount("facid") * 3)) + if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3)) adjustWeeds(-rand(1,4)) // Plant-B-Gone is just as bad - if(S.has_reagent("plantbgone", 1)) - adjustHealth(-round(S.get_reagent_amount("plantbgone") * 5)) - adjustToxic(round(S.get_reagent_amount("plantbgone") * 6)) + if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6)) adjustWeeds(-rand(4,8)) // why, just why - if(S.has_reagent("napalm", 1)) + if(S.has_reagent(/datum/reagent/napalm, 1)) if(!(myseed.resistance_flags & FIRE_PROOF)) - adjustHealth(-round(S.get_reagent_amount("napalm") * 6)) - adjustToxic(round(S.get_reagent_amount("napalm") * 7)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7)) adjustWeeds(-rand(5,9)) //Weed Spray - if(S.has_reagent("weedkiller", 1)) - adjustToxic(round(S.get_reagent_amount("weedkiller") * 0.5)) + if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5)) //old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts adjustWeeds(-rand(1,2)) //Pest Spray - if(S.has_reagent("pestkiller", 1)) - adjustToxic(round(S.get_reagent_amount("pestkiller") * 0.5)) + if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5)) adjustPests(-rand(1,2)) // Healing - if(S.has_reagent("cryoxadone", 1)) - adjustHealth(round(S.get_reagent_amount("cryoxadone") * 3)) - adjustToxic(-round(S.get_reagent_amount("cryoxadone") * 3)) + if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3)) + adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3)) // Ammonia is bad ass. - if(S.has_reagent("ammonia", 1)) - adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5)) - adjustNutri(round(S.get_reagent_amount("ammonia") * 1)) + if(S.has_reagent(/datum/reagent/ammonia, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01)) + myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01)) // Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants - if(S.has_reagent("saltpetre", 1)) - var/salt = S.get_reagent_amount("saltpetre") + if(S.has_reagent(/datum/reagent/saltpetre, 1)) + var/salt = S.get_reagent_amount(/datum/reagent/saltpetre) adjustHealth(round(salt * 0.25)) if (myseed) myseed.adjust_production(-round(salt/100)-prob(salt%100)) myseed.adjust_potency(round(salt*0.5)) // Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer - if(S.has_reagent("ash", 1)) - adjustHealth(round(S.get_reagent_amount("ash") * 0.25)) - adjustNutri(round(S.get_reagent_amount("ash") * 0.5)) + if(S.has_reagent(/datum/reagent/ash, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5)) adjustWeeds(-1) // This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant. - if(S.has_reagent("diethylamine", 1)) - adjustHealth(round(S.get_reagent_amount("diethylamine") * 1)) - adjustNutri(round(S.get_reagent_amount("diethylamine") * 2)) + if(S.has_reagent(/datum/reagent/diethylamine, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02)) + myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02)) adjustPests(-rand(1,2)) // Compost, effectively - if(S.has_reagent("nutriment", 1)) - adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5)) - adjustNutri(round(S.get_reagent_amount("nutriment") * 1)) + if(S.has_reagent(/datum/reagent/consumable/nutriment, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1)) // Compost for EVERYTHING - if(S.has_reagent("virusfood", 1)) - adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5)) - adjustHealth(-round(S.get_reagent_amount("virusfood") * 0.5)) + if(S.has_reagent(/datum/reagent/consumable/virus_food, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/virus_food) * 0.5)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/virus_food) * 0.5)) // FEED ME - if(S.has_reagent("blood", 1)) - adjustNutri(round(S.get_reagent_amount("blood") * 1)) + if(S.has_reagent(/datum/reagent/blood, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1)) adjustPests(rand(2,4)) // FEED ME SEYMOUR - if(S.has_reagent("strange_reagent", 1)) + if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1)) spawnplant() // The best stuff there is. For testing/debugging. - if(S.has_reagent("adminordrazine", 1)) - adjustWater(round(S.get_reagent_amount("adminordrazine") * 1)) - adjustHealth(round(S.get_reagent_amount("adminordrazine") * 1)) - adjustNutri(round(S.get_reagent_amount("adminordrazine") * 1)) + if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) adjustPests(-rand(1,5)) adjustWeeds(-rand(1,5)) - if(S.has_reagent("adminordrazine", 5)) + if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5)) switch(rand(100)) if(66 to 100) mutatespecie() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 53282ed06d3a..4bb9b6995f44 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -97,7 +97,7 @@ // Reagent genes store reagent ID and reagent ratio. Amount of reagent in the plant = 1 + (potency * rate) /datum/plant_gene/reagent name = "Nutriment" - var/reagent_id = "nutriment" + var/reagent_id = /datum/reagent/consumable/nutriment var/rate = 0.04 /datum/plant_gene/reagent/get_name() @@ -108,7 +108,7 @@ name = "UNKNOWN" var/datum/reagent/R = GLOB.chemical_reagents_list[reag_id] - if(R && R.id == reagent_id) + if(R && R.type == reagent_id) name = R.name /datum/plant_gene/reagent/New(reag_id = null, reag_rate = 0) @@ -179,7 +179,7 @@ // For code, see grown.dm name = "Liquid Contents" examine_line = "It has a lot of liquid contents inside." - + /datum/plant_gene/trait/squash/on_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/C) // Squash the plant on slip. G.squash(C) @@ -198,7 +198,7 @@ var/obj/item/seeds/seed = G.seed var/stun_len = seed.potency * rate - if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) + if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube))) stun_len /= 3 G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G)) @@ -347,7 +347,7 @@ pocell.name = "[G.name] battery" pocell.desc = "A rechargeable plant-based power cell. This one has a rating of [DisplayEnergy(pocell.maxcharge)], and you should not swallow it." - if(G.reagents.has_reagent("plasma", 2)) + if(G.reagents.has_reagent(/datum/reagent/toxin/plasma, 2)) pocell.rigged = TRUE qdel(G) @@ -360,7 +360,7 @@ /datum/plant_gene/trait/stinging/on_slip(obj/item/reagent_containers/food/snacks/grown/G, atom/target) on_throw_impact(G, target) - + /datum/plant_gene/trait/stinging/on_throw_impact(obj/item/reagent_containers/food/snacks/grown/G, atom/target) if(isliving(target) && G.reagents && G.reagents.total_volume) var/mob/living/L = target diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 28468ea132af..459aa8216648 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -164,9 +164,9 @@ var/amount = 1 + round(potency * reagents_add[rid], 1) var/list/data = null - if(rid == "blood") // Hack to make blood in plants always O- + if(rid == /datum/reagent/blood) // Hack to make blood in plants always O- data = list("blood_type" = "O-") - if(rid == "nutriment" || rid == "vitamin") + if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) // apple tastes of apple. if(istype(T, /obj/item/reagent_containers/food/snacks/grown)) var/obj/item/reagent_containers/food/snacks/grown/grown_edible = T diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 699df5de128e..cbffb981b925 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -323,14 +323,13 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums return null /obj/machinery/computer/libraryconsole/bookmanagement/proc/print_forbidden_lore(mob/user) - var/spook = pick("blood", "brass") - var/turf/T = get_turf(src) - if(spook == "blood") - new /obj/item/melee/cultblade/dagger(T) + if (prob(50)) + new /obj/item/melee/cultblade/dagger(get_turf(src)) + to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a sinister dagger sitting on the desk. You don't even remember where it came from...") else - new /obj/item/clockwork/slab(T) + new /obj/item/clockwork/slab(get_turf(src)) + to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a strange metal tablet sitting on the desk. You don't even remember where it came from...") - to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a [spook == "blood" ? "sinister dagger" : "strange metal tablet"] sitting on the desk. You don't even remember where it came from...") user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2) /obj/machinery/computer/libraryconsole/bookmanagement/attackby(obj/item/W, mob/user, params) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 797009cc1b81..7b8823bc665a 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -148,7 +148,7 @@ desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl." icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_shavings" - list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2) + list_reagents = list(/datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/ethanol = 2, /datum/reagent/stabilizing_agent = 3, /datum/reagent/toxin/minttoxin = 2) w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 100 @@ -166,7 +166,7 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf name = "mushroom leaf" desc = "A leaf, from a mushroom." - list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/vitfro = 2, /datum/reagent/drug/nicotine = 2) icon_state = "mushroom_leaf" seed = /obj/item/seeds/lavaland/porcini wine_power = 40 @@ -174,7 +174,7 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap name = "mushroom cap" desc = "The cap of a large mushroom." - list_reagents = list("mindbreaker" = 2, "entpoly" = 4, "mushroomhallucinogen" = 2) + list_reagents = list(/datum/reagent/toxin/mindbreaker = 2, /datum/reagent/consumable/entpoly = 4, /datum/reagent/drug/mushroomhallucinogen = 2) icon_state = "mushroom_cap" seed = /obj/item/seeds/lavaland/inocybe wine_power = 70 @@ -182,14 +182,14 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem name = "mushroom stem" desc = "A long mushroom stem. It's slightly glowing." - list_reagents = list("tinlux" = 2, "vitamin" = 1, "space_drugs" = 1) + list_reagents = list(/datum/reagent/consumable/tinlux = 2, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/drug/space_drugs = 1) icon_state = "mushroom_stem" seed = /obj/item/seeds/lavaland/ember wine_power = 60 /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit name = "cactus fruit" - list_reagents = list("vitamin" = 2, "nutriment" = 2, "vitfro" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/vitfro = 4) desc = "A cactus fruit covered in a thick, reddish skin. And some ash." icon_state = "cactus_fruit" seed = /obj/item/seeds/lavaland/cactus @@ -218,7 +218,7 @@ else if(contents.len >= 20) to_chat(user, "You can't add more ingredients to [src]!") else - if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? + if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad? var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup/ashsoup(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 43523d8dfb9d..be055197f627 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -138,7 +138,7 @@ desc = "A device which causes kinetic accelerators to permanently gain damage against creature types killed with it." id = "bountymod" materials = list(MAT_METAL = 4000, MAT_SILVER = 4000, MAT_GOLD = 4000, MAT_BLUESPACE = 4000) - reagents_list = list("blood" = 40) + reagents_list = list(/datum/reagent/blood = 40) build_path = /obj/item/borg/upgrade/modkit/bounty //Spooky special loot @@ -581,7 +581,7 @@ /obj/item/reagent_containers/glass/bottle/potion/flight name = "strange elixir" desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'." - list_reagents = list("flightpotion" = 5) + list_reagents = list(/datum/reagent/flightpotion = 5) /obj/item/reagent_containers/glass/bottle/potion/update_icon() if(reagents.total_volume) @@ -591,7 +591,6 @@ /datum/reagent/flightpotion name = "Flight Potion" - id = "flightpotion" description = "Strange mutagenic compound of unknown origins." reagent_state = LIQUID color = "#FFEBEB" @@ -884,8 +883,8 @@ /datum/disease/transformation/dragon name = "dragon transformation" - cure_text = "Unknown" //Yogs - changed "nothing" to "unknown" - cures = list("adminordrazine") + cure_text = "nothing" + cures = list(/datum/reagent/medicine/adminordrazine) agent = "dragon's blood" desc = "What do dragons have to do with Space Station 13?" stage_prob = 20 diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 73313ffde803..9acfd04d25b8 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -352,7 +352,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_gold_heads" value = 25 materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("gold" = 4) + grind_results = list(/datum/reagent/gold = 4) /obj/item/coin/silver name = "silver coin" @@ -360,7 +360,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_silver_heads" value = 10 materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("silver" = 4) + grind_results = list(/datum/reagent/silver = 4) /obj/item/coin/diamond name = "diamond coin" @@ -368,7 +368,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_diamond_heads" value = 100 materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("carbon" = 4) + grind_results = list(/datum/reagent/carbon = 4) /obj/item/coin/iron name = "iron coin" @@ -376,7 +376,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_iron_heads" value = 1 materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("iron" = 4) + grind_results = list(/datum/reagent/iron = 4) /obj/item/coin/plasma name = "plasma coin" @@ -384,7 +384,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_plasma_heads" value = 40 materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("plasma" = 4) + grind_results = list(/datum/reagent/toxin/plasma = 4) /obj/item/coin/uranium name = "uranium coin" @@ -392,7 +392,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_uranium_heads" value = 25 materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("uranium" = 4) + grind_results = list(/datum/reagent/uranium = 4) /obj/item/coin/bananium name = "bananium coin" @@ -400,7 +400,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_bananium_heads" value = 200 //makes the clown cry materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("banana" = 4) + grind_results = list(/datum/reagent/consumable/banana = 4) /obj/item/coin/adamantine name = "adamantine coin" @@ -421,7 +421,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ sideslist = list("heads") materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) value = 1 - grind_results = list("iron" = 4) + grind_results = list(/datum/reagent/iron = 4) /obj/item/coin/antagtoken name = "antag token" @@ -430,7 +430,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ desc = "A novelty coin that helps the heart know what hard evidence cannot prove." sideslist = list("valid", "salad") value = 0 - grind_results = list("sodiumchloride" = 4) + grind_results = list(/datum/reagent/consumable/sodiumchloride = 4) /obj/item/coin/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stack/cable_coil)) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 717b9e1855e4..f9ff185106ff 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -139,7 +139,7 @@ if(iscarbon(AM)) var/mob/living/carbon/C = AM if(blood_id == C.get_blood_id())//both mobs have the same blood substance - if(blood_id == "blood") //normal blood + if(blood_id == /datum/reagent/blood) //normal blood if(blood_data["viruses"]) for(var/thing in blood_data["viruses"]) var/datum/disease/D = thing @@ -147,7 +147,7 @@ continue C.ForceContractDisease(D) if(!(blood_data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", amount * 0.5) + C.reagents.add_reagent(/datum/reagent/toxin, amount * 0.5) return 1 C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM) @@ -161,7 +161,7 @@ return /mob/living/carbon/get_blood_data(blood_id) - if(blood_id == "blood") //actual blood reagent + if(blood_id == /datum/reagent/blood) //actual blood reagent var/blood_data = list() //set the blood data blood_data["donor"] = src @@ -176,7 +176,7 @@ blood_data["resistances"] = disease_resistances.Copy() var/list/temp_chem = list() for(var/datum/reagent/R in reagents.reagent_list) - temp_chem[R.id] = R.volume + temp_chem[R.type] = R.volume blood_data["trace_chem"] = list2params(temp_chem) if(mind) blood_data["mind"] = mind @@ -206,11 +206,11 @@ /mob/living/simple_animal/get_blood_id() if(blood_volume) - return "blood" + return /datum/reagent/blood /mob/living/carbon/monkey/get_blood_id() if(!(HAS_TRAIT(src, TRAIT_HUSK))) - return "blood" + return /datum/reagent/blood /mob/living/carbon/human/get_blood_id() if(HAS_TRAIT(src, TRAIT_HUSK)) @@ -219,7 +219,7 @@ return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits)) return - return "blood" + return /datum/reagent/blood // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) @@ -246,7 +246,7 @@ //to add a splatter of blood or other mob liquid. /mob/living/proc/add_splatter_floor(turf/T, small_drip) - if(get_blood_id() != "blood") + if(get_blood_id() != /datum/reagent/blood) return if(!T) T = get_turf(src) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index ec536e2b15e9..4273dad86cad 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -74,7 +74,7 @@ if(victim.stat == CONSCIOUS) src.visible_message("[victim] kicks free of the blood pool just before entering it!", null, "You hear splashing and struggling.") - else if(victim.reagents && victim.reagents.has_reagent("demonsblood")) + else if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/demonsblood)) visible_message("Something prevents [victim] from entering the pool!", "A strange force is blocking [victim] from entering!", "You hear a splash and a thud.") else victim.forceMove(src) @@ -105,7 +105,7 @@ if(!victim) return FALSE - if(victim.reagents && victim.reagents.has_reagent("devilskiss")) + if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/devilskiss)) to_chat(src, "AAH! THEIR FLESH! IT BURNS!") adjustBruteLoss(25) //I can't use adjustHealth() here because bloodcrawl affects /mob/living and adjustHealth() only affects simple mobs var/found_bloodpool = FALSE diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 0b95d4e4828f..7a88ef7d92a7 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -94,13 +94,13 @@ if(istype(O, /obj/item/organ_storage)) return //Borg organ bags shouldn't be killing brains - if(damaged_brain && O.is_drainable() && O.reagents.has_reagent("mannitol")) //attempt to heal the brain + if(damaged_brain && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/mannitol)) //attempt to heal the brain . = TRUE //don't do attack animation. if(brain_death || brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing to_chat(user, "[src] is far too damaged, there's nothing else we can do for it!") return - if(!O.reagents.has_reagent("mannitol", 10)) + if(!O.reagents.has_reagent(/datum/reagent/medicine/mannitol, 10)) to_chat(user, "There's not enough mannitol in [O] to restore [src]!") return diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index feeb66a9be71..028d8c43fe1a 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -26,7 +26,7 @@ /obj/item/organ/alien/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("sacid", 10) + S.reagents.add_reagent(/datum/reagent/toxin/acid, 10) return S @@ -45,7 +45,7 @@ /obj/item/organ/alien/plasmavessel/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("plasma", storedPlasma/10) + S.reagents.add_reagent(/datum/reagent/toxin/plasma, storedPlasma/10) return S /obj/item/organ/alien/plasmavessel/large diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 9023a2d8ced3..e370e3ab161a 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -18,7 +18,7 @@ /obj/item/organ/body_egg/alien_embryo/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("sacid", 10) + S.reagents.add_reagent(/datum/reagent/toxin/acid, 10) return S /obj/item/organ/body_egg/alien_embryo/on_life() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 4a987896c3e7..300858fff7fe 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -233,7 +233,7 @@ shock_damage *= dna.species.siemens_coeff if(shock_damage<1 && !override) return 0 - if(reagents.has_reagent("teslium")) + if(reagents.has_reagent(/datum/reagent/teslium)) shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging! if(illusion) adjustStaminaLoss(shock_damage) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index ec3de049f0ba..beeac714fa17 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -230,12 +230,12 @@ if(bleedsuppress) msg += "[t_He] [t_is] bandaged with something.\n" else if(bleed_rate) - if(reagents.has_reagent("heparin")) + if(reagents.has_reagent(/datum/reagent/toxin/heparin)) msg += "[t_He] [t_is] bleeding uncontrollably!\n" else msg += "[t_He] [t_is] bleeding!\n" - if(reagents.has_reagent("teslium")) + if(reagents.has_reagent(/datum/reagent/teslium)) msg += "[t_He] [t_is] emitting a gentle blue glow!\n" if(islist(stun_absorption)) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index b83cb872deca..72b10a30bfdb 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -950,9 +950,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_mutant_bodyparts() /datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == exotic_blood) + if(chem.type == exotic_blood) H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM) - H.reagents.del_reagent(chem.id) + H.reagents.del_reagent(chem.type) return 1 return FALSE diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index b63614af8dde..c5a45c92a6c9 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -7,7 +7,7 @@ attack_sound = 'sound/weapons/etherealhit.ogg' miss_sound = 'sound/weapons/etherealmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ethereal - exotic_blood = "liquidelectricity" //Liquid Electricity. fuck you think of something better gamer + exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer siemens_coeff = 0.5 //They thrive on energy brutemod = 1.25 //They're weak to punches attack_type = BURN //burn bish diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 9b7cf1ef0826..a12fb1d68d6e 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -13,9 +13,9 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "pestkiller") + if(chem.type == /datum/reagent/toxin/pestkiller) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 5bdb46c45a96..a9a8f66021dc 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -314,9 +314,9 @@ H.take_overall_damage(2,0) /datum/species/golem/wood/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "plantbgone") + if(chem.type == /datum/reagent/toxin/plantbgone) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 //Radioactive @@ -624,14 +624,14 @@ C.RemoveSpell(dominate) /datum/species/golem/runic/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "holywater") + if(istype(chem, /datum/reagent/water/holywater)) H.adjustFireLoss(4) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) - if(chem.id == "unholywater") + if(chem.type == /datum/reagent/fuel/unholywater) H.adjustBruteLoss(-4) H.adjustFireLoss(-4) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) /datum/species/golem/clockwork diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 5cef467fa4bd..ce48b8475ead 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -7,7 +7,7 @@ species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD) inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime - exotic_blood = "slimejelly" + exotic_blood = /datum/reagent/toxin/slimejelly damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs liked_food = MEAT diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 8a7f775a4895..455405b87877 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -45,9 +45,9 @@ /datum/species/moth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) . = ..() - if(chem.id == "pestkiller") + if(chem.type == /datum/reagent/toxin/pestkiller) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) /datum/species/moth/check_species_weakness(obj/item/weapon, mob/living/attacker) if(istype(weapon, /obj/item/melee/flyswatter)) diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index f207c08e3e5c..ed6650085768 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -51,9 +51,9 @@ QDEL_NULL(mush) /datum/species/mush/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "weedkiller") + if(chem.type == /datum/reagent/toxin/plantbgone/weedkiller) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return TRUE /datum/species/mush/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 6c89d8e48966..6163106aac0d 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -45,9 +45,9 @@ H.take_overall_damage(2,0) /datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "plantbgone") + if(chem.type == /datum/reagent/toxin/plantbgone) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 /datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 01b271be9f63..68b6759bf49c 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -18,13 +18,13 @@ mutanteyes = /obj/item/organ/eyes/snail mutanttongue = /obj/item/organ/tongue/snail - exotic_blood = "lube" + exotic_blood = /datum/reagent/lube /datum/species/snail/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "sodiumchloride") + if(istype(chem,/datum/reagent/consumable/sodiumchloride)) H.adjustFireLoss(2) playsound(H, 'sound/weapons/sear.ogg', 30, 1) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 /datum/species/snail/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index c21636e23707..ae0fbc2d5700 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -13,8 +13,8 @@ var/datum/species/fake_species //a species to do most of our work for us, unless we're damaged var/list/initial_species_traits //for getting these values back for assume_disguise() var/list/initial_inherent_traits - changesource_flags = MIRROR_BADMIN | WABBAJACK | SLIME_EXTRACT - + changesource_flags = MIRROR_BADMIN | WABBAJACK | SLIME_EXTRACT//Yogs -- Slime_extract + /datum/species/synth/New() initial_species_traits = species_traits.Copy() initial_inherent_traits = inherent_traits.Copy() @@ -34,15 +34,16 @@ assume_disguise(old_species, H) /datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - H.reagents.remove_reagent(chem.id, chem.volume) //yogs start - synths don't process chems + H.reagents.remove_reagent(chem.type, chem.volume) //yogs start - synths don't process chems return TRUE - /*if(chem.id == "synthflesh") + /* + if(chem.type == /datum/reagent/medicine/synthflesh) chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 else - return ..()*/ //yogs end - + return ..() + */ //yogs end /datum/species/synth/proc/assume_disguise(datum/species/S, mob/living/carbon/human/H) if(S && !istype(S, type)) diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 3d14e8b664cb..c5c42a359902 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -99,6 +99,10 @@ to_chat(victim, "[H] tries to bite you, but stops before touching you!") to_chat(H, "[victim] is blessed! You stop just in time to avoid catching fire.") return + if(victim?.reagents?.has_reagent(/datum/reagent/consumable/garlic)) + to_chat(victim, "[H] tries to bite you, but recoils in disgust!") + to_chat(H, "[victim] reeks of garlic! you can't bring yourself to drain such tainted blood.") + return if(!do_after(H, 30, target = victim)) return var/blood_volume_difference = BLOOD_VOLUME_MAXIMUM - H.blood_volume //How much capacity we have left to absorb blood diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 2f64a6c80f11..9cbc36cb5079 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -65,7 +65,7 @@ //Second link in a breath chain, calls check_breath() /mob/living/carbon/proc/breathe() - if(reagents.has_reagent("lexorin")) + if(reagents.has_reagent(/datum/reagent/toxin/lexorin)) return if(istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) return @@ -137,7 +137,7 @@ //CRIT if(!breath || (breath.total_moles() == 0) || !lungs) - if(reagents.has_reagent("epinephrine") && lungs) + if(reagents.has_reagent(/datum/reagent/medicine/epinephrine) && lungs) return adjustOxyLoss(1) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 1b7c7fa7c766..0e016e22c0db 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -61,9 +61,9 @@ . = ..() remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE) var/amount - if(reagents.has_reagent("morphine")) + if(reagents.has_reagent(/datum/reagent/medicine/morphine)) amount = -1 - if(reagents.has_reagent("nuka_cola")) + if(reagents.has_reagent(/datum/reagent/consumable/nuka_cola)) amount = -1 if(amount) add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index c0550e3efecd..1515e935ca40 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -350,7 +350,7 @@ to_chat(src, "You resist Nar-Sie's influence... but not all of it. Run!") adjustBruteLoss(35) if(src && reagents) - reagents.add_reagent("heparin", 5) + reagents.add_reagent(/datum/reagent/toxin/heparin, 5) return FALSE if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src]) GLOB.cult_narsie.souls_needed -= src diff --git a/code/modules/mob/living/silicon/ai/vox_sounds.dm b/code/modules/mob/living/silicon/ai/vox_sounds.dm index eb6d0ce99199..8c47bc0cfdc0 100644 --- a/code/modules/mob/living/silicon/ai/vox_sounds.dm +++ b/code/modules/mob/living/silicon/ai/vox_sounds.dm @@ -576,7 +576,7 @@ GLOBAL_LIST_INIT(vox_sounds, list("abduction" = 'sound/vox_fem/abduction.ogg', "nine" = 'sound/vox_fem/nine.ogg', "nineteen" = 'sound/vox_fem/nineteen.ogg', "ninety" = 'sound/vox_fem/ninety.ogg', -"nitrogen" = 'sound/vox_fem/nitrogen.ogg', +/datum/reagent/nitrogen = 'sound/vox_fem/nitrogen.ogg', "n" = 'sound/vox_fem/n.ogg', "nominal" = 'sound/vox_fem/nominal.ogg', "no" = 'sound/vox_fem/no.ogg', @@ -975,4 +975,4 @@ GLOBAL_LIST_INIT(vox_sounds, list("abduction" = 'sound/vox_fem/abduction.ogg', "zombie" = 'sound/vox_fem/zombie.ogg', "zone" = 'sound/vox_fem/zone.ogg', "zulu" = 'sound/vox_fem/zulu.ogg')) -#endif \ No newline at end of file +#endif diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index b580fcf4feb7..a88aec9a8600 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -410,11 +410,11 @@ /obj/item/reagent_containers/spray/cyborg_drying name = "drying agent spray" color = "#A000A0" - list_reagents = list("drying_agent" = 250) + list_reagents = list(/datum/reagent/drying_agent = 250) /obj/item/reagent_containers/spray/cyborg_lube name = "lube spray" - list_reagents = list("lube" = 250) + list_reagents = list(/datum/reagent/lube = 250) /obj/item/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) ..() @@ -425,11 +425,11 @@ var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules if(CD) - CD.reagents.add_reagent("drying_agent", 5 * coeff) + CD.reagents.add_reagent(/datum/reagent/drying_agent, 5 * coeff) var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules if(CL) - CL.reagents.add_reagent("lube", 2 * coeff) + CL.reagents.add_reagent(/datum/reagent/lube, 2 * coeff) /obj/item/robot_module/clown name = "Clown" @@ -492,7 +492,7 @@ ..() var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules if(O) - O.reagents.add_reagent("enzyme", 2 * coeff) + O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) /obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index eb3a29d51ea3..2609d01786d9 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -132,7 +132,7 @@ extinguish_people = TRUE internal_ext = new /obj/item/extinguisher(src) - internal_ext.chem = "clf3" //Refill the internal extinguisher with liquid fire + internal_ext.chem = /datum/reagent/clf3 //Refill the internal extinguisher with liquid fire internal_ext.power = 3 internal_ext.safety = FALSE internal_ext.precision = FALSE diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index f01e88bda77e..fd2275c0e72d 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -43,16 +43,16 @@ var/declare_cooldown = 0 //Prevents spam of critical patient alerts. var/stationary_mode = 0 //If enabled, the Medibot will not move automatically. //Setting which reagents to use to treat what by default. By id. - var/treatment_brute_avoid = "tricordrazine" - var/treatment_brute = "bicaridine" + var/treatment_brute_avoid = /datum/reagent/medicine/tricordrazine + var/treatment_brute = /datum/reagent/medicine/bicaridine var/treatment_oxy_avoid = null - var/treatment_oxy = "dexalin" - var/treatment_fire_avoid = "tricordrazine" - var/treatment_fire = "kelotane" - var/treatment_tox_avoid = "tricordrazine" - var/treatment_tox = "charcoal" + var/treatment_oxy = /datum/reagent/medicine/dexalin + var/treatment_fire_avoid = /datum/reagent/medicine/tricordrazine + var/treatment_fire = /datum/reagent/medicine/kelotane + var/treatment_tox_avoid = /datum/reagent/medicine/tricordrazine + var/treatment_tox = /datum/reagent/medicine/charcoal var/treatment_virus_avoid = null - var/treatment_virus = "spaceacillin" + var/treatment_virus = /datum/reagent/medicine/spaceacillin var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible. var/shut_up = 0 //self explanatory :) @@ -60,9 +60,9 @@ name = "\improper Mysterious Medibot" desc = "International Medibot of mystery." skin = "bezerk" - treatment_brute = "tricordrazine" - treatment_fire = "tricordrazine" - treatment_tox = "tricordrazine" + treatment_brute = /datum/reagent/medicine/tricordrazine + treatment_fire = /datum/reagent/medicine/tricordrazine + treatment_tox = /datum/reagent/medicine/tricordrazine /mob/living/simple_animal/bot/medbot/derelict name = "\improper Old Medibot" @@ -70,13 +70,13 @@ skin = "bezerk" heal_threshold = 0 declare_crit = 0 - treatment_oxy = "pancuronium" + treatment_oxy = /datum/reagent/toxin/pancuronium treatment_brute_avoid = null - treatment_brute = "pancuronium" + treatment_brute = /datum/reagent/toxin/pancuronium treatment_fire_avoid = null - treatment_fire = "sodium_thiopental" + treatment_fire = /datum/reagent/toxin/sodium_thiopental treatment_tox_avoid = null - treatment_tox = "sodium_thiopental" + treatment_tox = /datum/reagent/toxin/sodium_thiopental /mob/living/simple_animal/bot/medbot/update_icon() cut_overlays() @@ -369,7 +369,7 @@ //If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS. if((reagent_glass) && (use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15)))) for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) - if(!C.reagents.has_reagent(R.id)) + if(!C.reagents.has_reagent(R.type)) return TRUE //They're injured enough for it! @@ -469,7 +469,7 @@ //If the patient is injured but doesn't have our special reagent in them then we should give it to them first if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume) for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) - if(!C.reagents.has_reagent(R.id) && !check_overdose(patient, R.id, injection_amount)) + if(!C.reagents.has_reagent(R.type) && !check_overdose(patient, R.type, injection_amount)) reagent_id = "internal_beaker" break diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 980d3e757747..b962b423206e 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -54,7 +54,7 @@ var/atom/Tsec = drop_location() new /obj/item/stock_parts/cell/potato(Tsec) var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec) - S.reagents.add_reagent("whiskey", 15) + S.reagents.add_reagent(/datum/reagent/consumable/ethanol/whiskey, 15) S.on_reagent_change(ADD_REAGENT) ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 7ca65a11b00d..67cd3047ff60 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -289,5 +289,5 @@ /mob/living/simple_animal/pet/cat/cak/attack_hand(mob/living/L) ..() if(L.a_intent == INTENT_HARM && L.reagents && !stat) - L.reagents.add_reagent("nutriment", 0.4) - L.reagents.add_reagent("vitamin", 0.4) + L.reagents.add_reagent(/datum/reagent/consumable/nutriment, 0.4) + L.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.4) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 607cdd715052..ec98fcb9c7ff 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -330,12 +330,12 @@ /obj/item/udder/Initialize() create_reagents(50) - reagents.add_reagent("milk", 20) + reagents.add_reagent(/datum/reagent/consumable/milk, 20) . = ..() /obj/item/udder/proc/generateMilk() if(prob(5)) - reagents.add_reagent("milk", rand(5, 10)) + reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10)) /obj/item/udder/proc/milkAnimal(obj/O, mob/user) var/obj/item/reagent_containers/glass/G = O diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 6b2bce76e4ed..433aef6e3fe4 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -110,9 +110,9 @@ icon_state = "mouse_gray_dead" bitesize = 3 eatverb = "devour" - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW - grind_results = list("blood" = 20, "liquidgibs" = 5) + grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) /obj/item/reagent_containers/food/snacks/deadmouse/attackby(obj/item/I, mob/user, params) if(I.is_sharp() && user.a_intent == INTENT_HARM) diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index d8912ee25f71..2fbbc9ab99c2 100644 --- a/code/modules/mob/living/simple_animal/friendly/snake.dm +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -1,6 +1,6 @@ /mob/living/simple_animal/hostile/retaliate/poison var/poison_per_bite = 0 - var/poison_type = "toxin" + var/poison_type = /datum/reagent/toxin /mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 57a1461c3712..14bbb1d92b7a 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -142,7 +142,7 @@ var/mob/living/L = target if(L.reagents) beegent.reaction_mob(L, INJECT) - L.reagents.add_reagent(beegent.id, rand(1,5)) + L.reagents.add_reagent(beegent.type, rand(1,5)) /mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R) @@ -208,7 +208,7 @@ /mob/living/simple_animal/hostile/poison/bees/toxin/Initialize() . = ..() var/datum/reagent/R = pick(typesof(/datum/reagent/toxin)) - assign_reagent(GLOB.chemical_reagents_list[initial(R.id)]) + assign_reagent(GLOB.chemical_reagents_list[R]) /mob/living/simple_animal/hostile/poison/bees/queen name = "queen bee" @@ -228,7 +228,7 @@ if(. && beegent && isliving(target)) var/mob/living/L = target beegent.reaction_mob(L, TOUCH) - L.reagents.add_reagent(beegent.id, rand(1,5)) + L.reagents.add_reagent(beegent.type, rand(1,5)) //PEASENT BEES @@ -239,7 +239,7 @@ /mob/living/simple_animal/hostile/poison/bees/proc/reagent_incompatible(mob/living/simple_animal/hostile/poison/bees/B) if(!B) return FALSE - if(B.beegent && beegent && B.beegent.id != beegent.id || B.beegent && !beegent || !B.beegent && beegent) + if(B.beegent && beegent && B.beegent.type != beegent.type || B.beegent && !beegent || !B.beegent && beegent) return TRUE return FALSE @@ -256,9 +256,9 @@ /obj/item/queen_bee/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/syringe)) var/obj/item/reagent_containers/syringe/S = I - if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped - if(S.reagents.has_reagent("royal_bee_jelly",5)) - S.reagents.remove_reagent("royal_bee_jelly", 5) + if(S.reagents.has_reagent(/datum/reagent/royal_bee_jelly)) //checked twice, because I really don't want royal bee jelly to be duped + if(S.reagents.has_reagent(/datum/reagent/royal_bee_jelly,5)) + S.reagents.remove_reagent(/datum/reagent/royal_bee_jelly, 5) var/obj/item/queen_bee/qb = new(user.drop_location()) qb.queen = new(qb) if(queen && queen.beegent) @@ -269,8 +269,8 @@ to_chat(user, "You don't have enough royal bee jelly to split a bee in two!") else var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()] - if(R && S.reagents.has_reagent(R.id, 5)) - S.reagents.remove_reagent(R.id,5) + if(R && S.reagents.has_reagent(R.type, 5)) + S.reagents.remove_reagent(R.type,5) queen.assign_reagent(R) user.visible_message("[user] injects [src]'s genome with [R.name], mutating its DNA!","You inject [src]'s genome with [R.name], mutating its DNA!") name = queen.name @@ -296,7 +296,7 @@ forceMove(beehome.drop_location()) else ..() - + /mob/living/simple_animal/hostile/poison/bees/short desc = "These bees seem unstable and won't survive for long." diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index be9fc28a1427..4ac33b6fc2f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -6,7 +6,7 @@ /mob/living/simple_animal/hostile/poison var/poison_per_bite = 5 - var/poison_type = "toxin" + var/poison_type = /datum/reagent/toxin /mob/living/simple_animal/hostile/poison/AttackingTarget() . = ..() @@ -154,7 +154,7 @@ melee_damage_upper = 1 poison_per_bite = 12 move_to_delay = 4 - poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? + poison_type = /datum/reagent/toxin/venom //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? speed = 1 gold_core_spawnable = NO_SPAWN @@ -213,7 +213,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = "frostoil" + poison_type = /datum/reagent/consumable/frostoil color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN @@ -222,7 +222,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = "frostoil" + poison_type = /datum/reagent/consumable/frostoil color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN @@ -231,7 +231,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = "frostoil" + poison_type = /datum/reagent/consumable/frostoil color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index 247e4290df22..b2cf20e6fb87 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -105,7 +105,6 @@ /datum/reagent/toxin/leaper_venom name = "Leaper venom" - id = "leaper_venom" description = "A toxin spat out by leapers that, while harmless in small doses, quickly creates a toxic reaction if too much is in the body." color = "#801E28" // rgb: 128, 30, 40 toxpwr = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 7d4bb32af9d4..47c9a337786b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -163,7 +163,6 @@ /obj/item/udder/gutlunch/generateMilk() if(prob(60)) - reagents.add_reagent("cream", rand(2, 5)) + reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5)) if(prob(45)) - reagents.add_reagent("salglu_solution", rand(2,5)) - + reagents.add_reagent(/datum/reagent/medicine/salglu_solution, rand(2,5)) diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 9cdeaa2f629c..55e5dedc4827 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -186,6 +186,6 @@ var/counter for(counter=0, counter<=powerlevel, counter++) var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc) - S.reagents.add_reagent("mushroomhallucinogen", powerlevel) - S.reagents.add_reagent("omnizine", powerlevel) - S.reagents.add_reagent("synaptizine", powerlevel) + S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel) + S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel) + S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 609f610c2c2e..da3f86ed2733 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -35,7 +35,7 @@ do_footstep = TRUE var/banana_time = 0 // If there's no time set it won't spawn. var/banana_type = /obj/item/grown/bananapeel - var/attack_reagent + var/attack_reagent /mob/living/simple_animal/hostile/retaliate/clown/handle_temperature_damage() if(bodytemperature < minbodytemp) @@ -109,7 +109,7 @@ attacktext = "cheers up" loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/human, /obj/item/soap, /obj/item/seeds/banana/bluespace) banana_type = /obj/item/grown/bananapeel - attack_reagent = "laughter" + attack_reagent = /datum/reagent/consumable/laughter /mob/living/simple_animal/hostile/retaliate/clown/fleshclown name = "Fleshclown" @@ -216,7 +216,7 @@ attacktext = "ferociously mauls" environment_smash = ENVIRONMENT_SMASH_NONE loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/xeno/bodypartless, /obj/effect/particle_effect/foam, /obj/item/soap) - attack_reagent = "dizzysolution" + attack_reagent = /datum/reagent/peaceborg/confuse /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/destroyer name = "The Destroyer" @@ -274,4 +274,4 @@ speed = 20 attacktext = "bounces off of" loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/xeno/bodypartless, /obj/effect/particle_effect/foam, /obj/item/soap, /obj/effect/gibspawner/generic, /obj/effect/gibspawner/generic/animal, /obj/effect/gibspawner/human/bodypartless, /obj/effect/gibspawner/human) - attack_reagent = "mindbreaker" + attack_reagent = /datum/reagent/toxin/mindbreaker diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index e012b62e375d..bba8e1dde64c 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -140,9 +140,9 @@ . = ..() remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE) var/amount = 0 - if(reagents.has_reagent("morphine")) // morphine slows slimes down + if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down amount = 2 - if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow + if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow amount = 5 if(amount) add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) diff --git a/code/modules/mob/living/simple_animal/slime/subtypes.dm b/code/modules/mob/living/simple_animal/slime/subtypes.dm index a2df855d0b7b..b5720c622500 100644 --- a/code/modules/mob/living/simple_animal/slime/subtypes.dm +++ b/code/modules/mob/living/simple_animal/slime/subtypes.dm @@ -76,4 +76,4 @@ slime_mutation[2] = colour slime_mutation[3] = colour slime_mutation[4] = colour - return(slime_mutation) \ No newline at end of file + return(slime_mutation) diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index d5c2499a3ce0..3b344dacda60 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -13,7 +13,7 @@ H.stuttering = 0 H.lying = 0 H.update_mobility() - H.reagents.add_reagent("stimulants", 5) + H.reagents.add_reagent(/datum/reagent/medicine/stimulants, 5) H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost") a_boost-- to_chat(H, "There are [a_boost] adrenaline boosts remaining.") @@ -22,5 +22,5 @@ /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after() var/mob/living/carbon/human/H = affecting - H.reagents.add_reagent("radium", a_transfer) + H.reagents.add_reagent(/datum/reagent/uranium/radium, a_transfer) to_chat(H, "You are beginning to feel the after-effect of the injection.") diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm index 0496a2f1c344..7300f22f9b8c 100644 --- a/code/modules/ninja/suit/suit_attackby.dm +++ b/code/modules/ninja/suit/suit_attackby.dm @@ -5,13 +5,13 @@ return ..() if(istype(I, /obj/item/reagent_containers/glass))//If it's a glass beaker. - if(I.reagents.has_reagent("radium", a_transfer) && a_boost < a_maxamount) - I.reagents.remove_reagent("radium", a_transfer) + if(I.reagents.has_reagent(/datum/reagent/uranium/radium, a_transfer) && a_boost < a_maxamount) + I.reagents.remove_reagent(/datum/reagent/uranium/radium, a_transfer) a_boost++; to_chat(U, "There are now [a_boost] adrenaline boosts remaining.") return - if(I.reagents.has_reagent("smoke_powder", a_transfer) && s_bombs < s_maxamount) - I.reagents.remove_reagent("smoke_powder", a_transfer) + if(I.reagents.has_reagent(/datum/reagent/smoke_powder, a_transfer) && s_bombs < s_maxamount) + I.reagents.remove_reagent(/datum/reagent/smoke_powder, a_transfer) s_bombs++; to_chat(U, "There are now [s_bombs] smoke bombs remaining.") return diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index a40b87f9230c..00f2db528b3f 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -23,7 +23,7 @@ throw_range = 7 materials = list(MAT_METAL=10) pressure_resistance = 2 - grind_results = list("iron" = 2, "iodine" = 1) + grind_results = list(/datum/reagent/iron = 2, /datum/reagent/iodine = 1) var/colour = "black" //what colour the ink is! var/degrees = 0 var/font = PEN_FONT @@ -165,9 +165,9 @@ /obj/item/pen/sleepy/Initialize() . = ..() create_reagents(45, OPENCONTAINER) - reagents.add_reagent("chloralhydratedelayed", 20) - reagents.add_reagent("mutetoxin", 15) - reagents.add_reagent("tirizene", 10) + reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 20) + reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 15) + reagents.add_reagent(/datum/reagent/toxin/staminatoxin, 10) /* * (Alan) Edaggers diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index fd93413c3653..c0e20323cf87 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -330,6 +330,6 @@ name = "toner cartridge" icon = 'icons/obj/device.dmi' icon_state = "tonercartridge" - grind_results = list("iodine" = 40, "iron" = 10) + grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10) var/charges = 5 var/max_charges = 5 diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 8ee75576bac9..03b3aa2777cf 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 50 - grind_results = list("iodine" = 4) + grind_results = list(/datum/reagent/iodine = 4) var/datum/picture/picture var/scribble //Scribble on the back. diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index f87dbface747..f0f88097a662 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -491,7 +491,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai attack_verb = list("whipped", "lashed", "disciplined", "flogged") singular_name = "cable piece" full_w_class = WEIGHT_CLASS_SMALL - grind_results = list("copper" = 2) //2 copper per cable in the coil + grind_results = list(/datum/reagent/copper = 2) //2 copper per cable in the coil usesound = 'sound/items/deconstruct.ogg' /obj/item/stack/cable_coil/cyborg diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 44d14a521a75..93946cb3ae1d 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -14,7 +14,7 @@ var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 materials = list(MAT_METAL=700, MAT_GLASS=50) - grind_results = list("lithium" = 15, "iron" = 5, "silicon" = 5) + grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) var/rigged = FALSE // true if rigged to explode var/chargerate = 100 //how much power is given every tick in a recharger var/self_recharge = 0 //does it self recharge, over time, or not? @@ -103,7 +103,7 @@ return (FIRELOSS) /obj/item/stock_parts/cell/on_reagent_change(changetype) - rigged = !isnull(reagents.has_reagent("plasma", 5)) //has_reagent returns the reagent datum + rigged = !isnull(reagents.has_reagent(/datum/reagent/toxin/plasma, 5)) //has_reagent returns the reagent datum ..() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 5ba594b8dce1..3a11d363b93d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -386,7 +386,7 @@ removeStaticPower(static_power_used, STATIC_LIGHT) broken_sparks(start_only=TRUE) - + /obj/machinery/light/update_atom_colour() ..() update() @@ -761,7 +761,7 @@ var/base_state var/switchcount = 0 // number of times switched materials = list(MAT_GLASS=100) - grind_results = list("silicon" = 5, "nitrogen" = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs + grind_results = list(/datum/reagent/silicon = 5, /datum/reagent/nitrogen = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs var/rigged = FALSE // true if rigged to explode var/brightness = 2 //how much light it gives off @@ -843,7 +843,7 @@ to_chat(user, "You inject the solution into \the [src].") - if(S.reagents.has_reagent("plasma", 5)) + if(S.reagents.has_reagent(/datum/reagent/toxin/plasma, 5)) rigged = TRUE diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 14918052b185..8019a914f5f2 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -132,8 +132,8 @@ /obj/item/ammo_casing/shotgun/dart/bioterror/Initialize() . = ..() - reagents.add_reagent("neurotoxin", 6) - reagents.add_reagent("spore", 6) - reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT - reagents.add_reagent("coniine", 6) - reagents.add_reagent("sodium_thiopental", 6) + reagents.add_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 6) + reagents.add_reagent(/datum/reagent/toxin/spore, 6) + reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 6) //;HELP OPS IN MAINT + reagents.add_reagent(/datum/reagent/toxin/coniine, 6) + reagents.add_reagent(/datum/reagent/toxin/sodium_thiopental, 6) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 3577f6ed423d..46d938005774 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -194,9 +194,8 @@ if(reagents && reagents.reagent_list) reagent_note = " REAGENTS:" for(var/datum/reagent/R in reagents.reagent_list) - reagent_note += R.id + " (" - reagent_note += num2text(R.volume) + ") " -// yogs start - Checks blood for diease + reagent_note += "[R.name] ([num2text(R.volume)])" +// yogs start - Checks blood for disease if(istype(R, /datum/reagent/blood)) var/datum/reagent/blood/RR = R for(var/datum/disease/D in RR.data["viruses"]) @@ -213,6 +212,7 @@ investigate_log("[firer] injected [src] using a projectile with [viruslist] [blocked == 100 ? "BLOCKED" : ""]", INVESTIGATE_VIROLOGY) log_game("[firer] injected [src] using a projectile with [viruslist] [blocked == 100 ? "BLOCKED" : ""]") // yogs end + if(ismob(firer)) log_combat(firer, L, "shot", src, reagent_note) else diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 6f6527abc168..8091efcdfc5d 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -29,9 +29,9 @@ /obj/item/projectile/bullet/dart/metalfoam/Initialize() . = ..() - reagents.add_reagent("aluminium", 15) - reagents.add_reagent("foaming_agent", 5) - reagents.add_reagent("facid", 5) + reagents.add_reagent(/datum/reagent/aluminium, 15) + reagents.add_reagent(/datum/reagent/foaming_agent, 5) + reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 5) /obj/item/projectile/bullet/dart/syringe name = "syringe" diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index a18227ec9251..65cf3743f041 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -11,13 +11,13 @@ for(var/path in paths) var/datum/reagent/D = new path() - GLOB.chemical_reagents_list[D.id] = D + GLOB.chemical_reagents_list[path] = D /proc/build_chemical_reactions_list() //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. // For example: - // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma + // chemical_reaction_list[/datum/reagent/toxin/plasma] is a list of all reactions relating to plasma if(GLOB.chemical_reactions_list) return @@ -83,10 +83,9 @@ return "no reagents" var/list/data = list() - var/seperator for(var/r in reagent_list) //no reagents will be left behind var/datum/reagent/R = r - data += "[seperator ? " | " : null][R.id] ([round(R.volume, 0.1)]u)" + data += "[R.type] ([round(R.volume, 0.1)]u)" //Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. return english_list(data) @@ -107,7 +106,7 @@ current_list_element = 1 var/datum/reagent/R = cached_reagents[current_list_element] - remove_reagent(R.id, 1) + remove_reagent(R.type, 1) current_list_element++ total_transfered++ @@ -122,7 +121,7 @@ var/part = amount / total_volume for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - remove_reagent(R.id, R.volume * part) + remove_reagent(R.type, R.volume * part) update_total() handle_reactions() @@ -142,15 +141,15 @@ /datum/reagents/proc/get_master_reagent_id() var/list/cached_reagents = reagent_list - var/id + var/max_type var/max_volume = 0 for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume > max_volume) max_volume = R.volume - id = R.id + max_type = R.type - return id + return max_type /datum/reagents/proc/get_master_reagent() var/list/cached_reagents = reagent_list @@ -197,8 +196,8 @@ var/transfer_amount = T.volume * part if(preserve_data) trans_data = copy_data(T) - R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, no_react = 1) //we only handle reaction after every reagent has been transfered. - remove_reagent(T.id, transfer_amount) + R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, no_react = 1) //we only handle reaction after every reagent has been transfered. + remove_reagent(T.type, transfer_amount) update_total() R.update_total() @@ -230,7 +229,7 @@ var/copy_amount = T.volume * part if(preserve_data) trans_data = T.data - R.add_reagent(T.id, copy_amount * multiplier, trans_data) + R.add_reagent(T.type, copy_amount * multiplier, trans_data) src.update_total() R.update_total() @@ -254,11 +253,11 @@ var/trans_data = null for (var/CR in cached_reagents) var/datum/reagent/current_reagent = CR - if(current_reagent.id == reagent) + if(current_reagent.type == reagent) if(preserve_data) trans_data = current_reagent.data - R.add_reagent(current_reagent.id, amount, trans_data, src.chem_temp) - remove_reagent(current_reagent.id, amount, 1) + R.add_reagent(current_reagent.type, amount, trans_data, src.chem_temp) + remove_reagent(current_reagent.type, amount, 1) break src.update_total() @@ -318,10 +317,10 @@ need_mob_update += R.addiction_act_stage4(C) if(40 to INFINITY) to_chat(C, "You feel like you've gotten over your need for [R.name].") - SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_overdose") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose") cached_addictions.Remove(R) else - SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_overdose") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose") addiction_tick++ if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates. C.updatehealth() @@ -357,7 +356,7 @@ reaction_occurred = 0 for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - for(var/reaction in cached_reactions[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id + for(var/reaction in cached_reactions[R.type]) // Was a big list but now it should be smaller since we filtered it with our reagent id if(!reaction) continue @@ -466,15 +465,15 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if(R.id != reagent) - del_reagent(R.id) + if(R.type != reagent) + del_reagent(R.type) update_total() /datum/reagents/proc/del_reagent(reagent) var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if(R.id == reagent) + if(R.type == reagent) if(my_atom && isliving(my_atom)) var/mob/living/M = my_atom R.on_mob_delete(M) @@ -491,7 +490,7 @@ for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume < 0.1) - del_reagent(R.id) + del_reagent(R.type) else total_volume += R.volume @@ -501,7 +500,7 @@ var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - del_reagent(R.id) + del_reagent(R.type) return 0 /datum/reagents/proc/reaction(atom/A, method = TOUCH, volume_modifier = 1, show_message = 1) @@ -587,7 +586,7 @@ //add the reagent to the existing if it exists for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.id == reagent) + if (R.type == reagent) R.volume += amount update_total() if(my_atom) @@ -621,7 +620,7 @@ handle_reactions() return TRUE -/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15) +/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, "beer" = 15) for(var/r_id in list_reagents) var/amt = list_reagents[r_id] add_reagent(r_id, amt, data) @@ -643,7 +642,7 @@ for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.id == reagent) + if (R.type == reagent) //clamp the removal amount to be between current reagent amount //and zero, to prevent removing more than the holder has stored amount = CLAMP(amount, 0, R.volume) @@ -661,7 +660,7 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if (R.id == reagent) + if (R.type == reagent) if(!amount) return R else @@ -676,7 +675,7 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if (R.id == reagent) + if (R.type == reagent) return round(R.volume, CHEMICAL_QUANTISATION_LEVEL) return 0 @@ -709,7 +708,7 @@ // We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type. if(matches) // Have our other proc handle removement - has_removed_reagent = remove_reagent(R.id, amount, safety) + has_removed_reagent = remove_reagent(R.type, amount, safety) return has_removed_reagent @@ -718,14 +717,14 @@ var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - if(R.id == reagent_id) + if(R.type == reagent_id) return R.data /datum/reagents/proc/set_data(reagent_id, new_data) var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - if(R.id == reagent_id) + if(R.type == reagent_id) R.data = new_data /datum/reagents/proc/copy_data(datum/reagent/current_reagent) @@ -824,6 +823,6 @@ for(var/thing in subtypesof(/datum/reagent)) var/datum/reagent/R = thing if(initial(R.can_synth)) - random_reagents += initial(R.id) + random_reagents += R var/picked_reagent = pick(random_reagents) return picked_reagent diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 902807296141..e317d2b8a3a1 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -1,3 +1,16 @@ +/proc/translate_legacy_chem_id(id) + switch (id) + if ("sacid") + return "sulphuricacid" + if ("facid") + return "fluorosulfuricacid" + if ("co2") + return "carbondioxide" + if ("mine_salve") + return "minerssalve" + else + return ckey(id) + /obj/machinery/chem_dispenser name = "chem dispenser" desc = "Creates and dispenses chemicals." @@ -21,48 +34,48 @@ var/macroresolution = 1 var/obj/item/reagent_containers/beaker = null var/list/dispensable_reagents = list( - "hydrogen", - "lithium", - "carbon", - "nitrogen", - "oxygen", - "fluorine", - "sodium", - "aluminium", - "silicon", - "phosphorus", - "sulfur", - "chlorine", - "potassium", - "iron", - "copper", - "mercury", - "radium", - "water", - "ethanol", - "sugar", - "sacid", - "welding_fuel", - "silver", - "iodine", - "bromine", - "stable_plasma" + /datum/reagent/hydrogen, + /datum/reagent/lithium, + /datum/reagent/carbon, + /datum/reagent/nitrogen, + /datum/reagent/oxygen, + /datum/reagent/fluorine, + /datum/reagent/sodium, + /datum/reagent/aluminium, + /datum/reagent/silicon, + /datum/reagent/phosphorus, + /datum/reagent/sulfur, + /datum/reagent/chlorine, + /datum/reagent/potassium, + /datum/reagent/iron, + /datum/reagent/copper, + /datum/reagent/mercury, + /datum/reagent/uranium/radium, + /datum/reagent/water, + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/sugar, + /datum/reagent/toxin/acid, + /datum/reagent/fuel, + /datum/reagent/silver, + /datum/reagent/iodine, + /datum/reagent/bromine, + /datum/reagent/stable_plasma ) //these become available once the manipulator has been upgraded to tier 4 (femto) var/list/upgrade_reagents = list( "oil", - "ash", - "acetone", - "saltpetre", - "ammonia", - "diethylamine" + /datum/reagent/ash, + /datum/reagent/acetone, + /datum/reagent/saltpetre, + /datum/reagent/ammonia, + /datum/reagent/diethylamine ) var/list/emagged_reagents = list( - "space_drugs", - "morphine", - "carpotoxin", - "mine_salve", - "toxin" + /datum/reagent/drug/space_drugs, + /datum/reagent/medicine/morphine, + /datum/reagent/toxin/carpotoxin, + /datum/reagent/medicine/mine_salve, + /datum/reagent/toxin ) var/list/saved_recipes = list() @@ -187,7 +200,7 @@ var/chemname = temp.name if(is_hallucinating && prob(5)) chemname = "[pick_list_replacements("hallucination.json", "chemicals")]" - chemicals.Add(list(list("title" = chemname, "id" = temp.id))) + chemicals.Add(list(list("title" = chemname, "id" = ckey(temp.name)))) for(var/recipe in saved_recipes) recipes.Add(list(recipe)) data["chemicals"] = chemicals @@ -209,7 +222,7 @@ if("dispense") if(!is_operational() || QDELETED(cell)) return - var/reagent = params["reagent"] + var/reagent = GLOB.name2reagent[params["reagent"]] if(beaker && dispensable_reagents.Find(reagent)) var/datum/reagents/R = beaker.reagents var/free = R.maximum_volume - R.total_volume @@ -242,7 +255,7 @@ var/res = macroresolution for(var/key in chemicals_to_dispense) // i suppose you could edit the list locally before passing it var/list/keysplit = splittext(key," ") - var/r_id = keysplit[1] + var/r_id = GLOB.name2reagent[translate_legacy_chem_id(keysplit[1])] if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine var/datum/reagents/R = beaker.reagents var/free = R.maximum_volume - R.total_volume @@ -274,7 +287,8 @@ var/resmismatch = FALSE for(var/reagents in first_process) var/list/reagent = splittext(reagents, "=") - if(dispensable_reagents.Find(reagent[1])) + var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent[1])] + if(dispensable_reagents.Find(reagent_id)) if (!resmismatch && !check_macro_part(reagents, res)) resmismatch = TRUE continue @@ -439,35 +453,35 @@ nopower_state = null pass_flags = PASSTABLE dispensable_reagents = list( - "water", - "ice", - "coffee", - "cream", - "tea", - "icetea", - "cola", - "spacemountainwind", - "dr_gibb", - "space_up", - "tonic", - "sodawater", - "lemon_lime", - "pwr_game", - "shamblers", - "sugar", - "orangejuice", - "grenadine", - "limejuice", - "tomatojuice", - "lemonjuice", - "menthol" + /datum/reagent/water, + /datum/reagent/consumable/ice, + /datum/reagent/consumable/coffee, + /datum/reagent/consumable/cream, + /datum/reagent/consumable/tea, + /datum/reagent/consumable/icetea, + /datum/reagent/consumable/space_cola, + /datum/reagent/consumable/spacemountainwind, + /datum/reagent/consumable/dr_gibb, + /datum/reagent/consumable/space_up, + /datum/reagent/consumable/tonic, + /datum/reagent/consumable/sodawater, + /datum/reagent/consumable/lemon_lime, + /datum/reagent/consumable/pwr_game, + /datum/reagent/consumable/shamblers, + /datum/reagent/consumable/sugar, + /datum/reagent/consumable/orangejuice, + /datum/reagent/consumable/grenadine, + /datum/reagent/consumable/limejuice, + /datum/reagent/consumable/tomatojuice, + /datum/reagent/consumable/lemonjuice, + /datum/reagent/consumable/menthol ) upgrade_reagents = null emagged_reagents = list( - "thirteenloko", - "whiskeycola", - "mindbreaker", - "tirizene" + /datum/reagent/consumable/ethanol/thirteenloko, + /datum/reagent/consumable/ethanol/whiskey_cola, + /datum/reagent/toxin/mindbreaker, + /datum/reagent/toxin/staminatoxin ) /obj/machinery/chem_dispenser/drinks/fullupgrade //fully ugpraded stock parts, emagged @@ -495,31 +509,32 @@ icon_state = "booze_dispenser" circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer dispensable_reagents = list( - "beer", - "kahlua", - "whiskey", - "wine", - "vodka", - "gin", - "rum", - "tequila", - "vermouth", - "cognac", - "ale", - "absinthe", - "hcider", - "creme_de_menthe", - "creme_de_cacao", - "triple_sec", - "sake" + /datum/reagent/consumable/ethanol/beer, + /datum/reagent/consumable/ethanol/kahlua, + /datum/reagent/consumable/ethanol/whiskey, + /datum/reagent/consumable/ethanol/wine, + /datum/reagent/consumable/ethanol/vodka, + /datum/reagent/consumable/ethanol/gin, + /datum/reagent/consumable/ethanol/rum, + /datum/reagent/consumable/ethanol/tequila, + /datum/reagent/consumable/ethanol/vermouth, + /datum/reagent/consumable/ethanol/cognac, + /datum/reagent/consumable/ethanol/ale, + /datum/reagent/consumable/ethanol/absinthe, + /datum/reagent/consumable/ethanol/hcider, + /datum/reagent/consumable/ethanol/creme_de_menthe, + /datum/reagent/consumable/ethanol/creme_de_cacao, + /datum/reagent/consumable/ethanol/triple_sec, + /datum/reagent/consumable/ethanol/sake, + /datum/reagent/consumable/ethanol/applejack ) upgrade_reagents = null emagged_reagents = list( - "ethanol", - "iron", - "minttoxin", - "atomicbomb", - "fernet" + /datum/reagent/consumable/ethanol, + /datum/reagent/iron, + /datum/reagent/toxin/minttoxin, + /datum/reagent/consumable/ethanol/atomicbomb, + /datum/reagent/consumable/ethanol/fernet ) /obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged @@ -543,9 +558,9 @@ /obj/machinery/chem_dispenser/mutagen name = "mutagen dispenser" desc = "Creates and dispenses mutagen." - dispensable_reagents = list("mutagen") + dispensable_reagents = list(/datum/reagent/toxin/mutagen) upgrade_reagents = null - emagged_reagents = list("plasma") + emagged_reagents = list(/datum/reagent/toxin/plasma) /obj/machinery/chem_dispenser/mutagensaltpeter @@ -554,19 +569,19 @@ flags_1 = NODECONSTRUCT_1 dispensable_reagents = list( - "mutagen", - "saltpetre", - "eznutriment", - "left4zednutriment", - "robustharvestnutriment", - "water", - "plantbgone", - "weedkiller", - "pestkiller", - "cryoxadone", - "ammonia", - "ash", - "diethylamine") + /datum/reagent/toxin/mutagen, + /datum/reagent/saltpetre, + /datum/reagent/plantnutriment/eznutriment, + /datum/reagent/plantnutriment/left4zednutriment, + /datum/reagent/plantnutriment/robustharvestnutriment, + /datum/reagent/water, + /datum/reagent/toxin/plantbgone, + /datum/reagent/toxin/plantbgone/weedkiller, + /datum/reagent/toxin/pestkiller, + /datum/reagent/medicine/cryoxadone, + /datum/reagent/ammonia, + /datum/reagent/ash, + /datum/reagent/diethylamine) upgrade_reagents = null /obj/machinery/chem_dispenser/mutagensaltpeter/Initialize() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 7ef9bb5cde03..4302dcc129fe 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -153,7 +153,7 @@ /obj/machinery/chem_master/ui_base_html(html) var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/pills) . = replacetext(html, "", assets.css_tag()) - + /obj/machinery/chem_master/ui_data(mob/user) var/list/data = list() data["isBeakerLoaded"] = beaker ? 1 : 0 @@ -173,13 +173,13 @@ var/beakerContents[0] if(beaker) for(var/datum/reagent/R in beaker.reagents.reagent_list) - beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... + beakerContents.Add(list(list("name" = R.name, "id" = ckey(R.name), "volume" = R.volume))) // list in a list because Byond merges the first list... data["beakerContents"] = beakerContents var/bufferContents[0] if(reagents.total_volume) for(var/datum/reagent/N in reagents.reagent_list) - bufferContents.Add(list(list("name" = N.name, "id" = N.id, "volume" = N.volume))) // ^ + bufferContents.Add(list(list("name" = N.name, "id" = ckey(N.name), "volume" = N.volume))) // ^ data["bufferContents"] = bufferContents //Calculated at init time as it never changes @@ -203,26 +203,26 @@ if("transferToBuffer") if(beaker) - var/id = params["id"] + var/reagent = GLOB.name2reagent[params["id"]] var/amount = text2num(params["amount"]) if (amount > 0) - beaker.reagents.trans_id_to(src, id, amount) + beaker.reagents.trans_id_to(src, reagent, amount) . = TRUE else if (amount == -1) // -1 means custom amount useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null if (useramount > 0) - beaker.reagents.trans_id_to(src, id, useramount) + beaker.reagents.trans_id_to(src, reagent, useramount) . = TRUE if("transferFromBuffer") - var/id = params["id"] + var/reagent = GLOB.name2reagent[params["id"]] var/amount = text2num(params["amount"]) if (amount > 0) if(mode) - reagents.trans_id_to(beaker, id, amount) + reagents.trans_id_to(beaker, reagent, amount) . = TRUE else - reagents.remove_reagent(id, amount) + reagents.remove_reagent(reagent, amount) . = TRUE if("toggleMode") @@ -343,7 +343,7 @@ . = TRUE if("analyze") - var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]] + var/datum/reagent/R = GLOB.name2reagent[params["id"]] if(R) var/state = "Unknown" if(initial(R.reagent_state) == 1) diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm index daac5a5d1ce1..df288cf9d410 100644 --- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm +++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm @@ -8,8 +8,8 @@ flags_1 = NODECONSTRUCT_1 use_power = NO_POWER_USE var/static/list/shortcuts = list( - "meth" = "methamphetamine", - "tricord" = "tricordrazine" + "meth" = /datum/reagent/drug/methamphetamine, + "tricord" = /datum/reagent/medicine/tricordrazine ) /obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ @@ -36,7 +36,7 @@ input_reagent = shortcuts[input_reagent] else input_reagent = find_reagent(input_reagent) - if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent]) + if(!input_reagent || !GLOB.name2reagent[input_reagent]) say("OUT OF RANGE") return else diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 147f83f01696..17be6ee05f19 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -166,9 +166,9 @@ var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list if(B) data["has_blood"] = TRUE - data["blood"] = list() - data["blood"]["dna"] = B.data["blood_DNA"] || "none" - data["blood"]["type"] = B.data["blood_type"] || "none" + data[/datum/reagent/blood] = list() + data[/datum/reagent/blood]["dna"] = B.data["blood_DNA"] || "none" + data[/datum/reagent/blood]["type"] = B.data["blood_type"] || "none" data["viruses"] = get_viruses_data(B) data["resistances"] = get_resistance_data(B) if(SYMPTOM_DETAILS) @@ -214,7 +214,7 @@ var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[A.name] culture bottle" B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium." - B.reagents.add_reagent("blood", 20, data) + B.reagents.add_reagent(/datum/reagent/blood, 20, data) wait = TRUE update_icon() var/turf/source_turf = get_turf(src) @@ -226,7 +226,7 @@ var/datum/disease/D = SSdisease.archive_diseases[id] var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[D.name] vaccine bottle" - B.reagents.add_reagent("vaccine", 15, list(id)) + B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id)) wait = TRUE update_icon() addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 67222a1931e8..36d7911ffbb7 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -298,12 +298,12 @@ /obj/machinery/reagentgrinder/proc/mix_complete() if(beaker?.reagents.total_volume) //Recipe to make Butter - var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount("milk") / MILK_TO_BUTTER_COEFF, 1) - beaker.reagents.remove_reagent("milk", MILK_TO_BUTTER_COEFF * butter_amt) + var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/milk) / MILK_TO_BUTTER_COEFF, 1) + beaker.reagents.remove_reagent(/datum/reagent/consumable/milk, MILK_TO_BUTTER_COEFF * butter_amt) for(var/i in 1 to butter_amt) new /obj/item/reagent_containers/food/snacks/butter(drop_location()) //Recipe to make Mayonnaise - if (beaker.reagents.has_reagent("eggyolk")) - var/amount = beaker.reagents.get_reagent_amount("eggyolk") - beaker.reagents.remove_reagent("eggyolk", amount) - beaker.reagents.add_reagent("mayonnaise", amount) + if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk)) + var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/eggyolk) + beaker.reagents.remove_reagent(/datum/reagent/consumable/eggyolk, amount) + beaker.reagents.add_reagent(/datum/reagent/consumable/mayonnaise, amount) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index aab435c1cfe4..d908256bb7d4 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,12 +1,21 @@ #define REM REAGENTS_EFFECT_MULTIPLIER +GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) + +/proc/build_name2reagent() + . = list() + for (var/t in subtypesof(/datum/reagent)) + var/datum/reagent/R = t + if (length(initial(R.name))) + .[ckey(initial(R.name))] = t + + //Various reagents //Toxin & acid reagents //Hydroponics stuff /datum/reagent var/name = "Reagent" - var/id = "reagent" var/description = "" var/specific_heat = SPECIFIC_HEAT_DEFAULT //J/(K*mol) var/taste_description = "metaphorical salt" @@ -43,7 +52,7 @@ var/modifier = CLAMP((1 - touch_protection), 0, 1) var/amount = round(reac_volume*modifier, 0.1) if(amount >= 0.5) - M.reagents.add_reagent(id, amount) + M.reagents.add_reagent(type, amount) return 1 /datum/reagent/proc/reaction_obj(obj/O, volume) @@ -54,7 +63,7 @@ /datum/reagent/proc/on_mob_life(mob/living/carbon/M) current_cycle++ - holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. + holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. return // Called when this reagent is first added to a mob @@ -89,29 +98,29 @@ /datum/reagent/proc/overdose_start(mob/living/M) to_chat(M, "You feel like you took too much of [name]!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) return /datum/reagent/proc/addiction_act_stage1(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_light, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_light, name) if(prob(30)) to_chat(M, "You feel like having some [name] right about now.") return /datum/reagent/proc/addiction_act_stage2(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_medium, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_medium, name) if(prob(30)) to_chat(M, "You feel like you need [name]. You just can't get enough.") return /datum/reagent/proc/addiction_act_stage3(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_severe, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_severe, name) if(prob(30)) to_chat(M, "You have an intense craving for [name].") return /datum/reagent/proc/addiction_act_stage4(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_critical, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_critical, name) if(prob(30)) to_chat(M, "You're not feeling good at all! You really need some [name].") return diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index d4d16e084f57..ed872a66b5d3 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -8,7 +8,6 @@ /datum/reagent/consumable/ethanol name = "Ethanol" - id = "ethanol" description = "A well-known alcohol with a variety of applications." color = "#404030" // rgb: 64, 64, 48 nutriment_factor = 0 @@ -81,7 +80,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer name = "Beer" - id = "beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. Still popular today." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -92,7 +90,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer/light name = "Light Beer" - id = "light_beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content." boozepwr = 5 //Space Europeans hate it taste_description = "dish water" @@ -101,7 +98,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer/green name = "Green Beer" - id = "greenbeer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety is dyed a festive green." color = "#A8E61D" taste_description = "green piss water" @@ -119,7 +115,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/kahlua name = "Kahlua" - id = "kahlua" description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -139,7 +134,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey name = "Whiskey" - id = "whiskey" description = "A superb and well-aged single-malt whiskey. Damn." color = "#664300" // rgb: 102, 67, 0 boozepwr = 75 @@ -151,7 +145,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/thirteenloko name = "Thirteen Loko" - id = "thirteenloko" description = "A potent mixture of caffeine and alcohol." color = "#102000" // rgb: 16, 32, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -215,7 +208,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodka name = "Vodka" - id = "vodka" description = "Number one drink AND fueling choice for Russians worldwide." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 65 @@ -231,7 +223,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bilk name = "Bilk" - id = "bilk" description = "This appears to be beer mixed with milk. Disgusting." color = "#895C4C" // rgb: 137, 92, 76 nutriment_factor = 2 * REAGENTS_METABOLISM @@ -249,7 +240,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/threemileisland name = "Three Mile Island Iced Tea" - id = "threemileisland" description = "Made for a woman, strong enough for a man." color = "#666340" // rgb: 102, 99, 64 boozepwr = 10 @@ -265,7 +255,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gin name = "Gin" - id = "gin" description = "It's gin. In space. I say, good sir." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -276,7 +265,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rum name = "Rum" - id = "rum" description = "Yohoho and all that." color = "#664300" // rgb: 102, 67, 0 boozepwr = 60 @@ -288,7 +276,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila name = "Tequila" - id = "tequila" description = "A strong and mildly flavoured, Mexican produced spirit. Feeling thirsty, hombre?" color = "#FFFF91" // rgb: 255, 255, 145 boozepwr = 70 @@ -300,7 +287,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vermouth name = "Vermouth" - id = "vermouth" description = "You suddenly feel a craving for a martini..." color = "#91FF91" // rgb: 145, 255, 145 boozepwr = 45 @@ -312,7 +298,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/wine name = "Wine" - id = "wine" description = "A premium alcoholic beverage made from distilled grape juice." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 35 @@ -324,7 +309,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/lizardwine name = "Lizard wine" - id = "lizardwine" description = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 45 @@ -333,7 +317,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grappa name = "Grappa" - id = "grappa" description = "A fine Italian brandy, for when regular wine just isn't alcoholic enough for you." color = "#F8EBF1" boozepwr = 60 @@ -344,7 +327,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/cognac name = "Cognac" - id = "cognac" description = "A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing. Classy as fornication." color = "#AB3C05" // rgb: 171, 60, 5 boozepwr = 75 @@ -356,7 +338,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/absinthe name = "Absinthe" - id = "absinthe" description = "A powerful alcoholic drink. Rumored to cause hallucinations but does not." color = rgb(10, 206, 0) boozepwr = 80 //Very strong even by default @@ -373,7 +354,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hooch name = "Hooch" - id = "hooch" description = "Either someone's failure at cocktail making or attempt in alcohol production. In any case, do you really want to drink that?" color = "#664300" // rgb: 102, 67, 0 boozepwr = 100 @@ -390,7 +370,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/ale name = "Ale" - id = "ale" description = "A dark alcoholic beverage made with malted barley and yeast." color = "#664300" // rgb: 102, 67, 0 boozepwr = 65 @@ -401,7 +380,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" - id = "goldschlager" description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." color = "#FFFF91" // rgb: 255, 255, 145 boozepwr = 25 @@ -414,7 +392,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/patron name = "Patron" - id = "patron" description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." color = "#585840" // rgb: 88, 88, 64 boozepwr = 60 @@ -427,7 +404,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gintonic name = "Gin and Tonic" - id = "gintonic" description = "An all time classic, mild cocktail." color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 @@ -439,7 +415,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rum_coke name = "Rum and Coke" - id = "rumcoke" description = "Rum, mixed with cola." taste_description = "cola" boozepwr = 40 @@ -451,7 +426,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/cuba_libre name = "Cuba Libre" - id = "cubalibre" description = "Viva la Revolucion! Viva Cuba Libre!" color = "#3E1B00" // rgb: 62, 27, 0 boozepwr = 50 @@ -472,7 +446,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" - id = "whiskeycola" description = "Whiskey, mixed with cola. Surprisingly refreshing." color = "#3E1B00" // rgb: 62, 27, 0 boozepwr = 70 @@ -485,7 +458,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/martini name = "Classic Martini" - id = "martini" description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 boozepwr = 60 @@ -497,7 +469,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" - id = "vodkamartini" description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 boozepwr = 65 @@ -509,7 +480,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/white_russian name = "White Russian" - id = "whiterussian" description = "That's just, like, your opinion, man..." color = "#A68340" // rgb: 166, 131, 64 boozepwr = 50 @@ -521,7 +491,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" - id = "screwdrivercocktail" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." color = "#A68310" // rgb: 166, 131, 16 boozepwr = 55 @@ -538,7 +507,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/booger name = "Booger" - id = "booger" description = "Ewww..." color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 45 @@ -549,7 +517,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bloody_mary name = "Bloody Mary" - id = "bloodymary" description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." color = "#664300" // rgb: 102, 67, 0 boozepwr = 55 @@ -566,7 +533,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/brave_bull name = "Brave Bull" - id = "bravebull" description = "It's just as effective as Dutch-Courage!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 80 @@ -590,7 +556,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila_sunrise name = "Tequila Sunrise" - id = "tequilasunrise" description = "Tequila, Grenadine, and Orange Juice." color = "#FFE48C" // rgb: 255, 228, 140 boozepwr = 45 @@ -608,7 +573,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M) if(QDELETED(light_holder)) - M.reagents.del_reagent("tequilasunrise") //If we lost our light object somehow, remove the reagent + M.reagents.del_reagent(/datum/reagent/consumable/ethanol/tequila_sunrise) //If we lost our light object somehow, remove the reagent else if(light_holder.loc != M) light_holder.forceMove(M) return ..() @@ -619,7 +584,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/toxins_special name = "Toxins Special" - id = "toxinsspecial" description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 @@ -636,7 +600,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beepsky_smash name = "Beepsky Smash" - id = "beepskysmash" description = "Drink this and prepare for the LAW." color = "#664300" // rgb: 102, 67, 0 boozepwr = 120 //yogs - made the fist of the law even stronger to compensate for it no longer stunning @@ -679,7 +642,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irish_cream name = "Irish Cream" - id = "irishcream" description = "Whiskey-imbued cream, what else would you expect from the Irish?" color = "#664300" // rgb: 102, 67, 0 boozepwr = 50 @@ -691,7 +653,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manly_dorf name = "The Manly Dorf" - id = "manlydorf" description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." color = "#664300" // rgb: 102, 67, 0 boozepwr = 100 //For the manly only @@ -718,7 +679,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/longislandicedtea name = "Long Island Iced Tea" - id = "longislandicedtea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -731,7 +691,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/moonshine name = "Moonshine" - id = "moonshine" description = "You've really hit rock bottom now... your liver packed its bags and left last night." color = "#664300" // rgb: 102, 67, 0 boozepwr = 95 @@ -742,7 +701,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/b52 name = "B-52" - id = "b52" description = "Coffee, Irish Cream, and cognac. You will get bombed." color = "#664300" // rgb: 102, 67, 0 boozepwr = 85 @@ -758,7 +716,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irishcoffee name = "Irish Coffee" - id = "irishcoffee" description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -770,7 +727,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/margarita name = "Margarita" - id = "margarita" description = "On the rocks with salt on the rim. Arriba~!" color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 35 @@ -782,7 +738,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/black_russian name = "Black Russian" - id = "blackrussian" description = "For the lactose-intolerant. Still as classy as a White Russian." color = "#360000" // rgb: 54, 0, 0 boozepwr = 70 @@ -795,7 +750,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manhattan name = "Manhattan" - id = "manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." color = "#664300" // rgb: 102, 67, 0 boozepwr = 30 @@ -808,7 +762,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manhattan_proj name = "Manhattan Project" - id = "manhattan_proj" description = "A scientist's drink of choice, for pondering ways to blow up the station." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -825,7 +778,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskeysoda name = "Whiskey Soda" - id = "whiskeysoda" description = "For the more refined griffon." color = "#664300" // rgb: 102, 67, 0 boozepwr = 70 @@ -837,7 +789,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/antifreeze name = "Anti-freeze" - id = "antifreeze" description = "The ultimate refreshment. Not what it sounds like." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -853,7 +804,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/barefoot name = "Barefoot" - id = "barefoot" description = "Barefoot and pregnant." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -873,7 +823,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/snowwhite name = "Snow White" - id = "snowwhite" description = "A cold refreshment." color = "#FFFFFF" // rgb: 255, 255, 255 boozepwr = 35 @@ -885,7 +834,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon. name = "Demon's Blood" - id = "demonsblood" description = "AHHHH!!!!" color = "#820000" // rgb: 130, 0, 0 boozepwr = 75 @@ -897,7 +845,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it. name = "Devil's Kiss" - id = "devilskiss" description = "Creepy time!" color = "#A68310" // rgb: 166, 131, 16 boozepwr = 70 @@ -909,7 +856,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodkatonic name = "Vodka and Tonic" - id = "vodkatonic" description = "For when a gin and tonic isn't Russian enough." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 70 @@ -922,7 +868,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" - id = "ginfizz" description = "Refreshingly lemony, deliciously dry." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -935,7 +880,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bahama_mama name = "Bahama Mama" - id = "bahama_mama" description = "Tropical cocktail." color = "#FF7F3B" // rgb: 255, 127, 59 boozepwr = 35 @@ -947,7 +891,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/singulo name = "Singulo" - id = "singulo" description = "A blue-space beverage!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 35 @@ -959,7 +902,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sbiten name = "Sbiten" - id = "sbiten" description = "A spicy Vodka! Might be a little hot for the little guys!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 70 @@ -975,7 +917,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/red_mead name = "Red Mead" - id = "red_mead" description = "The true Viking drink! Even though it has a strange red color." color = "#C73C00" // rgb: 199, 60, 0 boozepwr = 31 //Red drinks are stronger @@ -987,7 +928,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/mead name = "Mead" - id = "mead" description = "A Viking drink, though a cheap one." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -1000,7 +940,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" - id = "iced_beer" description = "A beer which is so cold the air around it freezes." color = "#664300" // rgb: 102, 67, 0 boozepwr = 15 @@ -1015,7 +954,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grog name = "Grog" - id = "grog" description = "Watered down rum, Nanotrasen approves!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 1 //Basically nothing @@ -1027,7 +965,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/aloe name = "Aloe" - id = "aloe" description = "So very, very, very good." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -1039,7 +976,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/andalusia name = "Andalusia" - id = "andalusia" description = "A nice, strangely named drink." color = "#664300" // rgb: 102, 67, 0 boozepwr = 40 @@ -1051,7 +987,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alliescocktail name = "Allies Cocktail" - id = "alliescocktail" description = "A drink made from your allies. Not as sweet as those made from your enemies." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -1063,7 +998,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" - id = "acidspit" description = "A drink for the daring, can be deadly if incorrectly prepared!" color = "#365000" // rgb: 54, 80, 0 boozepwr = 80 @@ -1075,7 +1009,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/amasec name = "Amasec" - id = "amasec" description = "Official drink of the Nanotrasen Gun-Club!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -1087,7 +1020,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/changelingsting name = "Changeling Sting" - id = "changelingsting" description = "You take a tiny sip and feel a burning sensation..." color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 95 @@ -1107,7 +1039,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irishcarbomb name = "Irish Car Bomb" - id = "irishcarbomb" description = "Mmm, tastes like chocolate cake..." color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 25 @@ -1119,7 +1050,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/syndicatebomb name = "Syndicate Bomb" - id = "syndicatebomb" description = "Tastes like terrorism!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 90 @@ -1136,7 +1066,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/erikasurprise name = "Erika Surprise" - id = "erikasurprise" description = "The surprise is, it's green!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 35 @@ -1148,7 +1077,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/driestmartini name = "Driest Martini" - id = "driestmartini" description = "Only for the experienced. You think you see sand floating in the glass." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#2E6671" // rgb: 46, 102, 113 @@ -1161,7 +1089,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bananahonk name = "Banana Honk" - id = "bananahonk" description = "A drink from Clown Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#FFFF91" // rgb: 255, 255, 140 @@ -1180,7 +1107,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/silencer name = "Silencer" - id = "silencer" description = "A drink from Mime Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 @@ -1200,7 +1126,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/drunkenblumpkin name = "Drunken Blumpkin" - id = "drunkenblumpkin" description = "A weird mix of whiskey and blumpkin juice." color = "#1EA0FF" // rgb: 102, 67, 0 boozepwr = 50 @@ -1212,7 +1137,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour. name = "Whiskey Sour" - id = "whiskey_sour" description = "Lemon juice/whiskey/sugar mixture. Moderate alcohol content." color = rgb(255, 201, 49) boozepwr = 35 @@ -1224,7 +1148,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hcider name = "Hard Cider" - id = "hcider" description = "Apple juice, for adults." color = "#CD6839" nutriment_factor = 1 * REAGENTS_METABOLISM @@ -1238,7 +1161,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber! name = "Fetching Fizz" - id = "fetching_fizz" description = "Whiskey sour/iron/uranium mixture resulting in a highly magnetic slurry. Mild alcohol content." //Requires no alcohol to make but has alcohol anyway because ~magic~ color = rgb(255, 91, 15) boozepwr = 10 @@ -1258,7 +1180,6 @@ All effects don't start immediately, but rather get worse over time; the rate is //Another reference. Heals those in critical condition extremely quickly. /datum/reagent/consumable/ethanol/hearty_punch name = "Hearty Punch" - id = "hearty_punch" description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content." color = rgb(140, 0, 0) boozepwr = 90 @@ -1281,7 +1202,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes. name = "Bacchus' Blessing" - id = "bacchus_blessing" description = "Unidentifiable mixture. Unmeasurably high alcohol content." color = rgb(51, 19, 3) //Sickly brown boozepwr = 300 //I warned you @@ -1294,7 +1214,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/atomicbomb name = "Atomic Bomb" - id = "atomicbomb" description = "Nuclear proliferation never tasted so good." color = "#666300" // rgb: 102, 99, 0 boozepwr = 0 //custom drunk effect @@ -1324,7 +1243,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gargle_blaster name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" description = "Whoah, this stuff looks volatile!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 0 //custom drunk effect @@ -1353,7 +1271,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neurotoxin name = "Neurotoxin" - id = "neurotoxin" description = "A strong neurotoxin that puts the subject into a death-like state." color = "#2E2E61" // rgb: 46, 46, 97 boozepwr = 50 @@ -1377,7 +1294,8 @@ All effects don't start immediately, but rather get worse over time; the rate is to_chat(M, "You cant feel your hands!") if(current_cycle > 5) if(prob(20)) - ADD_TRAIT(M, pickt(), "neurotoxin") + var/t = pickt() + ADD_TRAIT(M, t, type) M.adjustStaminaLoss(10) if(current_cycle > 30) M.adjustBrainLoss(2*REM) @@ -1390,16 +1308,15 @@ All effects don't start immediately, but rather get worse over time; the rate is ..() /datum/reagent/consumable/ethanol/neurotoxin/on_mob_delete(mob/living/carbon/M) - REMOVE_TRAIT(M, TRAIT_PARALYSIS_L_ARM, "neurotoxin") - REMOVE_TRAIT(M, TRAIT_PARALYSIS_R_ARM, "neurotoxin") - REMOVE_TRAIT(M, TRAIT_PARALYSIS_R_LEG, "neurotoxin") - REMOVE_TRAIT(M, TRAIT_PARALYSIS_L_LEG, "neurotoxin") + REMOVE_TRAIT(M, TRAIT_PARALYSIS_L_ARM, type) + REMOVE_TRAIT(M, TRAIT_PARALYSIS_R_ARM, type) + REMOVE_TRAIT(M, TRAIT_PARALYSIS_R_LEG, type) + REMOVE_TRAIT(M, TRAIT_PARALYSIS_L_LEG, type) M.adjustStaminaLoss(10) ..() /datum/reagent/consumable/ethanol/hippies_delight name = "Hippie's Delight" - id = "hippiesdelight" description = "You just don't get it maaaan." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 0 @@ -1445,7 +1362,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/eggnog name = "Eggnog" - id = "eggnog" description = "For enjoying the most wonderful time of the year." color = "#fcfdc6" // rgb: 252, 253, 198 nutriment_factor = 2 * REAGENTS_METABOLISM @@ -1459,7 +1375,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/narsour name = "Nar'Sour" - id = "narsour" description = "Side effects include self-mutilation and hoarding plasteel." color = RUNE_COLOR_DARKRED boozepwr = 10 @@ -1476,7 +1391,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/triple_sec name = "Triple Sec" - id = "triple_sec" description = "A sweet and vibrant orange liqueur." color = "#ffcc66" boozepwr = 30 @@ -1487,7 +1401,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/creme_de_menthe name = "Creme de Menthe" - id = "creme_de_menthe" description = "A minty liqueur excellent for refreshing, cool drinks." color = "#00cc00" boozepwr = 20 @@ -1498,7 +1411,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/creme_de_cacao name = "Creme de Cacao" - id = "creme_de_cacao" description = "A chocolatey liqueur excellent for adding dessert notes to beverages and bribing sororities." color = "#996633" boozepwr = 20 @@ -1509,7 +1421,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/quadruple_sec name = "Quadruple Sec" - id = "quadruple_sec" description = "Kicks just as hard as licking the powercell on a baton, but tastier." color = "#cc0000" boozepwr = 35 @@ -1529,7 +1440,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/quintuple_sec name = "Quintuple Sec" - id = "quintuple_sec" description = "Law, Order, Alcohol, and Police Brutality distilled into one single elixir of JUSTICE." color = "#ff3300" boozepwr = 80 @@ -1552,7 +1462,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grasshopper name = "Grasshopper" - id = "grasshopper" description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this." color = "00ff00" boozepwr = 25 @@ -1564,7 +1473,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/stinger name = "Stinger" - id = "stinger" description = "A snappy way to end the day." color = "ccff99" boozepwr = 25 @@ -1576,7 +1484,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bastion_bourbon name = "Bastion Bourbon" - id = "bastion_bourbon" description = "Soothing hot herbal brew with restorative properties. Hints of citrus and berry flavors." color = "#00FFFF" boozepwr = 30 @@ -1614,7 +1521,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/squirt_cider name = "Squirt Cider" - id = "squirt_cider" description = "Fermented squirt extract with a nose of stale bread and ocean water. Whatever a squirt is." color = "#FF0000" boozepwr = 40 @@ -1632,7 +1538,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fringe_weaver name = "Fringe Weaver" - id = "fringe_weaver" description = "Bubbly, classy, and undoubtedly strong - a Glitch City classic." color = "#FFEAC4" boozepwr = 90 //classy hooch, essentially, but lower pwr to make up for slightly easier access @@ -1644,7 +1549,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sugar_rush name = "Sugar Rush" - id = "sugar_rush" description = "Sweet, light, and fruity - as girly as it gets." color = "#FF226C" boozepwr = 10 @@ -1662,7 +1566,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/crevice_spike name = "Crevice Spike" - id = "crevice_spike" description = "Sour, bitter, and smashingly sobering." color = "#5BD231" boozepwr = -10 //sobers you up - ideally, one would drink to get hit with brute damage now to avoid alcohol problems later @@ -1677,7 +1580,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sake name = "Sake" - id = "sake" description = "A sweet rice wine of questionable legality and extreme potency." color = "#DDDDDD" boozepwr = 70 @@ -1688,7 +1590,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/peppermint_patty name = "Peppermint Patty" - id = "peppermint_patty" description = "This lightly alcoholic drink combines the benefits of menthol and cocoa." color = "#45ca7a" taste_description = "mint and chocolate" @@ -1705,7 +1606,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alexander name = "Alexander" - id = "alexander" description = "Named after a Greek hero, this mix is said to embolden a user's shield as if they were in a phalanx." color = "#F5E9D3" boozepwr = 80 @@ -1738,7 +1638,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sidecar name = "Sidecar" - id = "sidecar" description = "The one ride you'll gladly give up the wheel for." color = "#FFC55B" boozepwr = 80 @@ -1750,7 +1649,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/between_the_sheets name = "Between the Sheets" - id = "between_the_sheets" description = "A provocatively named classic. Funny enough, doctors recommend drinking it before taking a nap." color = "#F4C35A" boozepwr = 80 @@ -1775,7 +1673,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/kamikaze name = "Kamikaze" - id = "kamikaze" description = "Divinely windy." color = "#EEF191" boozepwr = 60 @@ -1787,7 +1684,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/mojito name = "Mojito" - id = "mojito" description = "A drink that looks as refreshing as it tastes." color = "#DFFAD9" boozepwr = 30 @@ -1799,7 +1695,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet name = "Fernet" - id = "fernet" description = "An incredibly bitter herbal liqueur used as a digestif." color = "#1B2E24" // rgb: 27, 46, 36 boozepwr = 80 @@ -1816,7 +1711,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet_cola name = "Fernet Cola" - id = "fernet_cola" description = "A very popular and bittersweet digestif, ideal after a heavy meal. Best served on a sawed-off cola bottle as per tradition." color = "#390600" // rgb: 57, 6, 0 boozepwr = 25 @@ -1836,7 +1730,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fanciulli name = "Fanciulli" - id = "fanciulli" description = "What if the Manhattan coctail ACTUALLY used a bitter herb liquour? Helps you sobers up." //also causes a bit of stamina damage to symbolize the afterdrink lazyness color = "#CA933F" // rgb: 202, 147, 63 boozepwr = -10 @@ -1860,7 +1753,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/branca_menta name = "Branca Menta" - id = "branca_menta" description = "A refreshing mixture of bitter Fernet with mint creme liquour." color = "#4B5746" // rgb: 75, 87, 70 boozepwr = 35 @@ -1883,7 +1775,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blank_paper name = "Blank Paper" - id = "blank_paper" description = "A bubbling glass of blank paper. Just looking at it makes you feel fresh." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#DCDCDC" // rgb: 220, 220, 220 @@ -1903,7 +1794,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" - id = "fruit_wine" description = "A wine made from grown plants." color = "#FFFFFF" boozepwr = 35 @@ -2005,3 +1895,200 @@ All effects don't start immediately, but rather get worse over time; the rate is taste_description = flavor if(holder.my_atom) holder.my_atom.on_reagent_change() + + +/datum/reagent/consumable/ethanol/champagne //How the hell did we not have champagne already!? + name = "Champagne" + description = "A sparkling wine known for its ability to strike fast and hard." + color = "#ffffc1" + boozepwr = 40 + taste_description = "auspicious occasions and bad decisions" + glass_icon_state = "champagne_glass" + glass_name = "Champagne" + glass_desc = "The flute clearly displays the slowly rising bubbles." + + +/datum/reagent/consumable/ethanol/wizz_fizz + name = "Wizz Fizz" + description = "A magical potion, fizzy and wild! However the taste, you will find, is quite mild." + color = "#4235d0" //Just pretend that the triple-sec was blue curacao. + boozepwr = 50 + quality = DRINK_GOOD + taste_description = "friendship! It is magic, after all" + glass_icon_state = "wizz_fizz" + glass_name = "Wizz Fizz" + glass_desc = "The glass bubbles and froths with an almost magical intensity." + +/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/M) + //A healing drink similar to Quadruple Sec, Ling Stings, and Screwdrivers for the Wizznerds; the check is consistent with the changeling sting + if(M?.mind?.has_antag_datum(/datum/antagonist/wizard)) + M.heal_bodypart_damage(1,1,1) + M.adjustOxyLoss(-1,0) + M.adjustToxLoss(-1,0) + return ..() + +/datum/reagent/consumable/ethanol/bug_spray + name = "Bug Spray" + description = "A harsh, acrid, bitter drink, for those who need something to brace themselves." + color = "#33ff33" + boozepwr = 50 + quality = DRINK_GOOD + taste_description = "the pain of ten thousand slain mosquitos" + glass_icon_state = "bug_spray" + glass_name = "Bug Spray" + glass_desc = "Your eyes begin to water as the sting of alcohol reaches them." + +/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M) +//Bugs should not drink Bug spray. + if(ismoth(M) || isflyperson(M)) + M.adjustToxLoss(1,0) + return ..() +/datum/reagent/consumable/ethanol/bug_spray/on_mob_add(mob/living/carbon/M) + + if(ismoth(M) || isflyperson(M)) + M.emote("scream") + return ..() + + +/datum/reagent/consumable/ethanol/applejack + name = "Applejack" + description = "The perfect beverage for when you feel the need to horse around." + color = "#ff6633" + boozepwr = 20 + taste_description = "an honest day's work at the orchard" + glass_icon_state = "applejack_glass" + glass_name = "Applejack" + glass_desc = "You feel like you could drink this all neight." + +/datum/reagent/consumable/ethanol/jack_rose + name = "Jack Rose" + description = "A light cocktail perfect for sipping with a slice of pie." + color = "#ff6633" + boozepwr = 15 + quality = DRINK_NICE + taste_description = "a sweet and sour slice of apple" + glass_icon_state = "jack_rose" + glass_name = "Jack Rose" + glass_desc = "Enough of these, and you really will start to suppose your toeses are roses." + +/datum/reagent/consumable/ethanol/turbo + name = "Turbo" + description = "A turbulent cocktail associated with outlaw hoverbike racing. Not for the faint of heart." + color = "#e94c3a" + boozepwr = 85 + quality = DRINK_VERYGOOD + taste_description = "the outlaw spirit" + glass_icon_state = "turbo" + glass_name = "Turbo" + glass_desc = "A turbulent cocktail for outlaw hoverbikers." + +/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/M) + if(prob(4)) + to_chat(M, "[pick("You feel disregard for the rule of law.", "You feel pumped!", "Your head is pounding.", "Your thoughts are racing..")]") + M.adjustStaminaLoss(-M.drunkenness * 0.25) + return ..() + +/datum/reagent/consumable/ethanol/old_timer + name = "Old Timer" + description = "An archaic potation enjoyed by old coots of all ages." + color = "#996835" + boozepwr = 35 + quality = DRINK_NICE + taste_description = "simpler times" + glass_icon_state = "old_timer" + glass_name = "Old Timer" + glass_desc = "WARNING! May cause premature aging!" + +/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/M) + if(prob(20)) + if(ishuman(M)) + var/mob/living/carbon/human/N = M + N.age += 1 + if(N.age > 70) + N.facial_hair_color = "ccc" + N.hair_color = "ccc" + N.update_hair() + if(N.age > 100) + N.become_nearsighted(type) + if(N.gender == MALE) + N.facial_hair_style = "Beard (Very Long)" + N.update_hair() + + if(N.age > 969) //Best not let people get older than this or i might incur G-ds wrath + M.visible_message("[M] becomes older than any man should be.. and crumbles into dust!") + M.dust(0,1,0) + + return ..() + +/datum/reagent/consumable/ethanol/rubberneck + name = "Rubberneck" + description = "A quality rubberneck should not contain any gross natural ingredients." + color = "#ffe65b" + boozepwr = 60 + quality = DRINK_GOOD + taste_description = "artifical fruityness" + glass_icon_state = "rubberneck" + glass_name = "Rubberneck" + glass_desc = "A popular drink amongst those adhering to an all synthetic diet." + +/datum/reagent/consumable/ethanol/duplex + name = "Duplex" + description = "An inseparable combination of two fruity drinks." + color = "#50e5cf" + boozepwr = 25 + quality = DRINK_NICE + taste_description = "green apples and blue raspberries" + glass_icon_state = "duplex" + glass_name = "Duplex" + glass_desc = "To imbibe one component separately from the other is consider a great faux pas." + +/datum/reagent/consumable/ethanol/trappist + name = "Trappist Beer" + description = "A strong dark ale brewed by space-monks." + color = "#390c00" + boozepwr = 40 + quality = DRINK_VERYGOOD + taste_description = "dried plums and malt" + glass_icon_state = "trappistglass" + glass_name = "Trappist Beer" + glass_desc = "boozy Catholicism in a glass." + +/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M) + if(M.mind.isholy) + M.adjustFireLoss(-2.5, 0) + M.jitteriness = max(0, M.jitteriness-1) + M.stuttering = max(0, M.stuttering-1) + return ..() + +/datum/reagent/consumable/ethanol/blazaam + name = "Blazaam" + description = "A strange drink that few people seem to remember existing. Doubles as a Berenstain remover." + boozepwr = 70 + quality = DRINK_FANTASTIC + taste_description = "alternate realities" + glass_icon_state = "blazaamglass" + glass_name = "Blazaam" + glass_desc = "The glass seems to be sliding between realities. Doubles as a Berenstain remover." + var/stored_teleports = 0 + +/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M) + if(M.drunkenness > 40) + if(stored_teleports) + do_teleport(M, get_turf(M), rand(1,3), channel = TELEPORT_CHANNEL_WORMHOLE) + stored_teleports-- + if(prob(10)) + stored_teleports += rand(2,6) + if(prob(70)) + M.vomit() + return ..() + + +/datum/reagent/consumable/ethanol/planet_cracker + name = "Planet Cracker" + description = "This jubilant drink celebrates humanity's triumph over the alien menace. May be offensive to non-human crewmembers." + boozepwr = 50 + quality = DRINK_FANTASTIC + taste_description = "triumph with a hint of bitterness" + glass_icon_state = "planet_cracker" + glass_name = "Planet Cracker" + glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy." diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index a5a9d4b6a946..d83055455c36 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -6,7 +6,6 @@ /datum/reagent/consumable/orangejuice name = "Orange Juice" - id = "orangejuice" description = "Both delicious AND rich in Vitamin C, what more do you need?" color = "#E78108" // rgb: 231, 129, 8 taste_description = "oranges" @@ -22,7 +21,6 @@ /datum/reagent/consumable/tomatojuice name = "Tomato Juice" - id = "tomatojuice" description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" color = "#731008" // rgb: 115, 16, 8 taste_description = "tomatoes" @@ -38,7 +36,6 @@ /datum/reagent/consumable/limejuice name = "Lime Juice" - id = "limejuice" description = "The sweet-sour juice of limes." color = "#365E30" // rgb: 54, 94, 48 taste_description = "unbearable sourness" @@ -54,7 +51,6 @@ /datum/reagent/consumable/carrotjuice name = "Carrot Juice" - id = "carrotjuice" description = "It is just like a carrot but without crunching." color = "#973800" // rgb: 151, 56, 0 taste_description = "carrots" @@ -76,7 +72,6 @@ /datum/reagent/consumable/berryjuice name = "Berry Juice" - id = "berryjuice" description = "A delicious blend of several different kinds of berries." color = "#863333" // rgb: 134, 51, 51 taste_description = "berries" @@ -86,14 +81,12 @@ /datum/reagent/consumable/applejuice name = "Apple Juice" - id = "applejuice" description = "The sweet juice of an apple, fit for all ages." color = "#ECFF56" // rgb: 236, 255, 86 taste_description = "apples" /datum/reagent/consumable/poisonberryjuice name = "Poison Berry Juice" - id = "poisonberryjuice" description = "A tasty juice blended from various kinds of very deadly and toxic berries." color = "#863353" // rgb: 134, 51, 83 taste_description = "berries" @@ -108,7 +101,6 @@ /datum/reagent/consumable/watermelonjuice name = "Watermelon Juice" - id = "watermelonjuice" description = "Delicious juice made from watermelon." color = "#863333" // rgb: 134, 51, 51 taste_description = "juicy watermelon" @@ -118,7 +110,6 @@ /datum/reagent/consumable/lemonjuice name = "Lemon Juice" - id = "lemonjuice" description = "This juice is VERY sour." color = "#863333" // rgb: 175, 175, 0 taste_description = "sourness" @@ -128,7 +119,6 @@ /datum/reagent/consumable/banana name = "Banana Juice" - id = "banana" description = "The raw essence of a banana. HONK" color = "#863333" // rgb: 175, 175, 0 taste_description = "banana" @@ -144,7 +134,6 @@ /datum/reagent/consumable/nothing name = "Nothing" - id = "nothing" description = "Absolutely nothing." taste_description = "nothing" glass_icon_state = "nothing" @@ -161,7 +150,6 @@ /datum/reagent/consumable/laughter name = "Laughter" - id = "laughter" description = "Some say that this is the best medicine, but recent studies have proven that to be untrue." metabolization_rate = INFINITY color = "#FF4DD2" @@ -174,7 +162,6 @@ /datum/reagent/consumable/superlaughter name = "Super Laughter" - id = "superlaughter" description = "Funny until you're the one laughing." metabolization_rate = 1.5 * REAGENTS_METABOLISM color = "#FF4DD2" @@ -189,7 +176,6 @@ /datum/reagent/consumable/potato_juice name = "Potato Juice" - id = "potato" description = "Juice of the potato. Bleh." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -200,14 +186,12 @@ /datum/reagent/consumable/grapejuice name = "Grape Juice" - id = "grapejuice" description = "The juice of a bunch of grapes. Guaranteed non-alcoholic." color = "#290029" // dark purple taste_description = "grape soda" /datum/reagent/consumable/milk name = "Milk" - id = "milk" description = "An opaque white liquid produced by the mammary glands of mammals." color = "#DFDFDF" // rgb: 223, 223, 223 taste_description = "milk" @@ -229,7 +213,6 @@ /datum/reagent/consumable/soymilk name = "Soy Milk" - id = "soymilk" description = "An opaque white liquid made from soybeans." color = "#DFDFC7" // rgb: 223, 223, 199 taste_description = "soy milk" @@ -245,7 +228,6 @@ /datum/reagent/consumable/cream name = "Cream" - id = "cream" description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" color = "#DFD7AF" // rgb: 223, 215, 175 taste_description = "creamy milk" @@ -261,7 +243,6 @@ /datum/reagent/consumable/coffee name = "Coffee" - id = "coffee" description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." color = "#482000" // rgb: 72, 32, 0 nutriment_factor = 0 @@ -288,7 +269,6 @@ /datum/reagent/consumable/tea name = "Tea" - id = "tea" description = "Tasty black tea, it has antioxidants, it's good for you!" color = "#101000" // rgb: 16, 16, 0 nutriment_factor = 0 @@ -310,7 +290,6 @@ /datum/reagent/consumable/lemonade name = "Lemonade" - id = "lemonade" description = "Sweet, tangy lemonade. Good for the soul." quality = DRINK_NICE taste_description = "sunshine and summertime" @@ -321,7 +300,6 @@ /datum/reagent/consumable/tea/arnold_palmer name = "Arnold Palmer" - id = "arnold_palmer" description = "Encourages the patient to go golfing." color = "#FFB766" quality = DRINK_NICE @@ -339,7 +317,6 @@ /datum/reagent/consumable/icecoffee name = "Iced Coffee" - id = "icecoffee" description = "Coffee and ice, refreshing and cool." color = "#102838" // rgb: 16, 40, 56 nutriment_factor = 0 @@ -359,7 +336,6 @@ /datum/reagent/consumable/icetea name = "Iced Tea" - id = "icetea" description = "No relation to a certain rap artist/actor." color = "#104038" // rgb: 16, 64, 56 nutriment_factor = 0 @@ -380,7 +356,6 @@ /datum/reagent/consumable/space_cola name = "Cola" - id = "cola" description = "A refreshing beverage." color = "#100800" // rgb: 16, 8, 0 taste_description = "cola" @@ -395,7 +370,6 @@ /datum/reagent/consumable/nuka_cola name = "Nuka Cola" - id = "nuka_cola" description = "Cola, cola never changes." color = "#100800" // rgb: 16, 8, 0 quality = DRINK_VERYGOOD @@ -406,10 +380,10 @@ /datum/reagent/consumable/nuka_cola/on_mob_add(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-0.75, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.75, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/consumable/nuka_cola/on_mob_delete(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) @@ -424,7 +398,6 @@ /datum/reagent/consumable/grey_bull name = "Grey Bull" - id = "grey_bull" description = "Grey Bull, it gives you gloves!" color = "#EEFF00" // rgb: 238, 255, 0 quality = DRINK_VERYGOOD @@ -435,10 +408,10 @@ /datum/reagent/consumable/grey_bull/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, id) + ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, type) /datum/reagent/consumable/grey_bull/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, type) ..() /datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M) @@ -451,7 +424,6 @@ /datum/reagent/consumable/spacemountainwind name = "SM Wind" - id = "spacemountainwind" description = "Blows right through you like a space wind." color = "#102000" // rgb: 16, 32, 0 taste_description = "sweet citrus soda" @@ -469,7 +441,6 @@ /datum/reagent/consumable/dr_gibb name = "Dr. Gibb" - id = "dr_gibb" description = "A delicious blend of 42 different flavours." color = "#102000" // rgb: 16, 32, 0 taste_description = "cherry soda" // FALSE ADVERTISING @@ -484,7 +455,6 @@ /datum/reagent/consumable/space_up name = "Space-Up" - id = "space_up" description = "Tastes like a hull breach in your mouth." color = "#00FF00" // rgb: 0, 255, 0 taste_description = "cherry soda" @@ -500,7 +470,6 @@ /datum/reagent/consumable/lemon_lime name = "Lemon Lime" description = "A tangy substance made of 0.5% natural citrus!" - id = "lemon_lime" color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "tangy lime and lemon soda" glass_icon_state = "glass_yellow" @@ -515,7 +484,6 @@ /datum/reagent/consumable/pwr_game name = "Pwr Game" description = "The only drink with the PWR that true gamers crave." - id = "pwr_game" color = "#9385bf" // rgb: 58, 52, 75 taste_description = "sweet and salty tang" glass_icon_state = "glass_red" @@ -529,7 +497,6 @@ /datum/reagent/consumable/shamblers name = "Shambler's Juice" description = "~Shake me up some of that Shambler's Juice!~" - id = "shamblers" color = "#f00060" // rgb: 94, 0, 38 taste_description = "carbonated metallic soda" glass_icon_state = "glass_red" @@ -541,7 +508,6 @@ ..() /datum/reagent/consumable/sodawater name = "Soda Water" - id = "sodawater" description = "A can of club soda. Why not make a scotch and soda?" color = "#619494" // rgb: 97, 148, 148 taste_description = "carbonated water" @@ -557,7 +523,6 @@ /datum/reagent/consumable/tonic name = "Tonic Water" - id = "tonic" description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." color = "#0064C8" // rgb: 0, 100, 200 taste_description = "tart and fresh" @@ -575,7 +540,6 @@ /datum/reagent/consumable/ice name = "Ice" - id = "ice" description = "Frozen water, your dentist wouldn't like you chewing this." reagent_state = SOLID color = "#619494" // rgb: 97, 148, 148 @@ -590,7 +554,6 @@ /datum/reagent/consumable/soy_latte name = "Soy Latte" - id = "soy_latte" description = "A nice and tasty beverage while you are reading your hippie books." color = "#664300" // rgb: 102, 67, 0 quality = DRINK_NICE @@ -612,7 +575,6 @@ /datum/reagent/consumable/cafe_latte name = "Cafe Latte" - id = "cafe_latte" description = "A nice, strong and tasty beverage while you are reading." color = "#664300" // rgb: 102, 67, 0 quality = DRINK_NICE @@ -634,7 +596,6 @@ /datum/reagent/consumable/doctor_delight name = "The Doctor's Delight" - id = "doctorsdelight" description = "A gulp a day keeps the Medibot away! A mixture of juices that heals most damage types fairly quickly at the cost of hunger." color = "#FF8CFF" // rgb: 255, 140, 255 quality = DRINK_VERYGOOD @@ -656,7 +617,6 @@ /datum/reagent/consumable/chocolatepudding name = "Chocolate Pudding" - id = "chocolatepudding" description = "A great dessert for chocolate lovers." color = "#800000" quality = DRINK_VERYGOOD @@ -668,7 +628,6 @@ /datum/reagent/consumable/vanillapudding name = "Vanilla Pudding" - id = "vanillapudding" description = "A great dessert for vanilla lovers." color = "#FAFAD2" quality = DRINK_VERYGOOD @@ -680,7 +639,6 @@ /datum/reagent/consumable/cherryshake name = "Cherry Shake" - id = "cherryshake" description = "A cherry flavored milkshake." color = "#FFB6C1" quality = DRINK_VERYGOOD @@ -692,7 +650,6 @@ /datum/reagent/consumable/bluecherryshake name = "Blue Cherry Shake" - id = "bluecherryshake" description = "An exotic milkshake." color = "#00F1FF" quality = DRINK_VERYGOOD @@ -704,7 +661,6 @@ /datum/reagent/consumable/pumpkin_latte name = "Pumpkin Latte" - id = "pumpkin_latte" description = "A mix of pumpkin juice and coffee." color = "#F4A460" quality = DRINK_VERYGOOD @@ -716,7 +672,6 @@ /datum/reagent/consumable/gibbfloats name = "Gibb Floats" - id = "gibbfloats" description = "Ice cream on top of a Dr. Gibb glass." color = "#B22222" quality = DRINK_NICE @@ -728,21 +683,18 @@ /datum/reagent/consumable/pumpkinjuice name = "Pumpkin Juice" - id = "pumpkinjuice" description = "Juiced from real pumpkin." color = "#FFA500" taste_description = "pumpkin" /datum/reagent/consumable/blumpkinjuice name = "Blumpkin Juice" - id = "blumpkinjuice" description = "Juiced from real blumpkin." color = "#00BFFF" taste_description = "a mouthful of pool water" /datum/reagent/consumable/triple_citrus name = "Triple Citrus" - id = "triple_citrus" description = "A solution." color = "#C8A5DC" quality = DRINK_NICE @@ -753,7 +705,6 @@ /datum/reagent/consumable/grape_soda name = "Grape soda" - id = "grapesoda" description = "Beloved of children and teetotalers." color = "#E6CDFF" taste_description = "grape soda" @@ -762,7 +713,6 @@ /datum/reagent/consumable/milk/chocolate_milk name = "Chocolate Milk" - id = "chocolate_milk" description = "Milk for cool kids." color = "#7D4E29" quality = DRINK_NICE @@ -770,7 +720,6 @@ /datum/reagent/consumable/menthol name = "Menthol" - id = "menthol" description = "Alleviates coughing symptoms one might have." color = "#80AF9C" taste_description = "mint" @@ -784,9 +733,63 @@ /datum/reagent/consumable/grenadine name = "Grenadine" - id = "grenadine" description = "Not cherry flavored!" color = "#EA1D26" taste_description = "sweet pomegranates" glass_name = "glass of grenadine" glass_desc = "Delicious flavored syrup." + +/datum/reagent/consumable/parsnipjuice + name = "Parsnip Juice" + description = "Why..." + color = "#FFA500" + taste_description = "parsnip" + glass_name = "glass of parsnip juice" + +/datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink + name = "Peach Juice" + description = "Just peachy." + color = "#E78108" + taste_description = "peaches" + glass_name = "glass of peach juice" + +/datum/reagent/consumable/cream_soda + name = "Cream Soda" + description = "A classic space-American vanilla flavored soft drink." + color = "#dcb137" + quality = DRINK_VERYGOOD + taste_description = "fizzy vanilla" + glass_icon_state = "cream_soda" + glass_name = "Cream Soda" + glass_desc = "A classic space-American vanilla flavored soft drink." + +/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M) + M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + ..() + +/datum/reagent/consumable/red_queen + name = "Red Queen" + description = "DRINK ME." + color = "#e6ddc3" + quality = DRINK_GOOD + taste_description = "wonder" + glass_icon_state = "red_queen" + glass_name = "Red Queen" + glass_desc = "DRINK ME." + var/current_size = 1 + +/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/H) + if(prob(75)) + return ..() + var/newsize = pick(0.5, 0.75, 1, 1.50, 2) + H.resize = newsize/current_size + current_size = newsize + H.update_transform() + if(prob(40)) + H.emote("sneeze") + ..() + +/datum/reagent/consumable/red_queen/on_mob_delete(mob/living/M) + M.resize = 1/current_size + M.update_transform() + ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index e634f7195f0c..7165086487b4 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -1,17 +1,15 @@ /datum/reagent/drug name = "Drug" - id = "drug" metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" var/trippy = TRUE //Does this drug make you trip? /datum/reagent/drug/on_mob_delete(mob/living/M) if(trippy) - SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_high") + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_high") /datum/reagent/drug/space_drugs name = "Space drugs" - id = "space_drugs" description = "An illegal chemical compound used as drug." color = "#60A584" // rgb: 96, 165, 132 overdose_threshold = 30 @@ -28,7 +26,7 @@ /datum/reagent/drug/space_drugs/overdose_start(mob/living/M) to_chat(M, "You start tripping hard!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) /datum/reagent/drug/space_drugs/overdose_process(mob/living/M) if(M.hallucination < volume && prob(20)) @@ -37,7 +35,6 @@ /datum/reagent/drug/nicotine name = "Nicotine" - id = "nicotine" description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 @@ -68,7 +65,6 @@ /datum/reagent/drug/crank name = "Crank" - id = "crank" description = "Reduces stun times by about 200%. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage." reagent_state = LIQUID color = "#FA00C8" @@ -117,7 +113,6 @@ /datum/reagent/drug/krokodil name = "Krokodil" - id = "krokodil" description = "Cools and calms you down. If overdosed it will deal significant Brain and Toxin damage. If addicted it will begin to deal fatal amounts of Brute damage as the subject's skin falls off." reagent_state = LIQUID color = "#0064B4" @@ -168,7 +163,6 @@ /datum/reagent/drug/methamphetamine name = "Methamphetamine" - id = "methamphetamine" description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage." reagent_state = LIQUID color = "#FAFAFA" @@ -178,10 +172,10 @@ /datum/reagent/drug/methamphetamine/on_mob_add(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/drug/methamphetamine/on_mob_delete(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M) @@ -252,7 +246,6 @@ /datum/reagent/drug/bath_salts name = "Bath Salts" - id = "bath_salts" description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic." reagent_state = LIQUID color = "#FAFAFA" @@ -263,16 +256,16 @@ /datum/reagent/drug/bath_salts/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_STUNIMMUNE, id) - ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + ADD_TRAIT(L, TRAIT_STUNIMMUNE, type) + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) if(iscarbon(L)) var/mob/living/carbon/C = L rage = new() C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE) /datum/reagent/drug/bath_salts/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id) - REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) if(rage) QDEL_NULL(rage) ..() @@ -352,7 +345,6 @@ /datum/reagent/drug/aranesp name = "Aranesp" - id = "aranesp" description = "Amps you up, gets you going, and rapidly restores stamina damage. Side effects include breathlessness and toxicity." reagent_state = LIQUID color = "#78FFF0" @@ -371,7 +363,6 @@ /datum/reagent/drug/happiness name = "Happiness" - id = "happiness" description = "Fills you with ecstasic numbness and causes minor brain damage. Highly addictive. If overdosed causes sudden mood swings." reagent_state = LIQUID color = "#FFF378" @@ -380,11 +371,11 @@ /datum/reagent/drug/happiness/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FEARLESS, id) + ADD_TRAIT(L, TRAIT_FEARLESS, type) SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "happiness_drug", /datum/mood_event/happiness_drug) /datum/reagent/drug/happiness/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FEARLESS, id) + REMOVE_TRAIT(L, TRAIT_FEARLESS, type) SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "happiness_drug") ..() diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index e3d01f665d76..fcac30aac2c0 100755 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -9,7 +9,6 @@ /datum/reagent/consumable name = "Consumable" - id = "consumable" taste_description = "generic food" taste_mult = 4 var/nutriment_factor = 1 * REAGENTS_METABOLISM @@ -21,7 +20,7 @@ var/mob/living/carbon/human/H = M if(!HAS_TRAIT(H, TRAIT_NOHUNGER)) H.adjust_nutrition(nutriment_factor) - holder.remove_reagent(src.id, metabolization_rate) + holder.remove_reagent(type, metabolization_rate) /datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == INGEST) @@ -39,7 +38,6 @@ /datum/reagent/consumable/nutriment name = "Nutriment" - id = "nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM @@ -90,7 +88,6 @@ /datum/reagent/consumable/nutriment/vitamin name = "Vitamin" - id = "vitamin" description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." brute_heal = 1 @@ -103,7 +100,6 @@ /datum/reagent/consumable/cooking_oil name = "Cooking Oil" - id = "cooking_oil" description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying." color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil) taste_mult = 0.8 @@ -119,7 +115,7 @@ O.loc.visible_message("[O] rapidly fries as it's splashed with hot oil! Somehow.") var/obj/item/reagent_containers/food/snacks/deepfryholder/F = new(O.drop_location(), O) F.fry(volume) - F.reagents.add_reagent("cooking_oil", reac_volume) + F.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume) /datum/reagent/consumable/cooking_oil/reaction_mob(mob/living/M, method = TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(!istype(M)) @@ -148,7 +144,6 @@ /datum/reagent/consumable/sugar name = "Sugar" - id = "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 color = "#FFFFFF" // rgb: 255, 255, 255 @@ -170,7 +165,6 @@ /datum/reagent/consumable/virus_food name = "Virus Food" - id = "virusfood" description = "A mixture of water and milk. Virus cells can use this mixture to reproduce." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#899613" // rgb: 137, 150, 19 @@ -178,7 +172,6 @@ /datum/reagent/consumable/soysauce name = "Soysauce" - id = "soysauce" description = "A salty sauce made from the soy plant." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" // rgb: 121, 35, 0 @@ -186,7 +179,6 @@ /datum/reagent/consumable/ketchup name = "Ketchup" - id = "ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 @@ -195,7 +187,6 @@ /datum/reagent/consumable/capsaicin name = "Capsaicin Oil" - id = "capsaicin" description = "This is what makes chilis hot." color = "#B31008" // rgb: 179, 16, 8 taste_description = "hot peppers" @@ -206,8 +197,8 @@ switch(current_cycle) if(1 to 15) heating = 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("cryostylane")) - holder.remove_reagent("cryostylane", 5) + if(holder.has_reagent(/datum/reagent/cryostylane)) + holder.remove_reagent(/datum/reagent/cryostylane, 5) if(isslime(M)) heating = rand(5,20) if(15 to 25) @@ -227,7 +218,6 @@ /datum/reagent/consumable/frostoil name = "Frost Oil" - id = "frostoil" description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes." color = "#8BA6E9" // rgb: 139, 166, 233 taste_description = "mint" @@ -237,8 +227,8 @@ switch(current_cycle) if(1 to 15) cooling = -10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) + if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) + holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5) if(isslime(M)) cooling = -rand(5,20) if(15 to 25) @@ -272,7 +262,6 @@ /datum/reagent/consumable/condensedcapsaicin name = "Condensed Capsaicin" - id = "condensedcapsaicin" description = "A chemical agent used for self-defense and in police work." color = "#B31008" // rgb: 179, 16, 8 taste_description = "scorching agony" @@ -320,7 +309,6 @@ /datum/reagent/consumable/sodiumchloride name = "Table Salt" - id = "sodiumchloride" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID color = "#FFFFFF" // rgb: 255,255,255 @@ -341,7 +329,6 @@ /datum/reagent/consumable/blackpepper name = "Black Pepper" - id = "blackpepper" description = "A powder ground from peppercorns. *AAAACHOOO*" reagent_state = SOLID // no color (ie, black) @@ -349,7 +336,6 @@ /datum/reagent/consumable/coco name = "Coco Powder" - id = "cocoa" description = "A fatty, bitter paste made from coco beans." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -358,7 +344,6 @@ /datum/reagent/consumable/hot_coco name = "Hot Chocolate" - id = "hot_coco" description = "Made with love! And coco beans." nutriment_factor = 3 * REAGENTS_METABOLISM color = "#403010" // rgb: 64, 48, 16 @@ -373,7 +358,6 @@ /datum/reagent/drug/mushroomhallucinogen name = "Mushroom Hallucinogen" - id = "mushroomhallucinogen" description = "A strong hallucinogenic drug derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 metabolization_rate = 0.2 * REAGENTS_METABOLISM @@ -402,9 +386,31 @@ M.emote(pick("twitch","giggle")) ..() +/datum/reagent/consumable/garlic //NOTE: having garlic in your blood stops vampires from biting you. + name = "Garlic Juice" + description = "Crushed garlic. Chefs love it, but it can make you smell bad." + color = "#FEFEFE" + taste_description = "garlic" + metabolization_rate = 0.15 * REAGENTS_METABOLISM + +/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M) + if(isvampire(M)) //incapacitating but not lethal. Unfortunately, vampires cannot vomit. + if(prob(min(25,current_cycle))) + to_chat(M, "You can't get the scent of garlic out of your nose! You can barely think...") + M.Paralyze(10) + M.Jitter(10) + else if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.job == "Cook") + if(prob(20)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate + H.heal_bodypart_damage(1,1, 0) + . = 1 + else //chefs' robust space-Italian metabolism lets them eat garlic without producing allyl methyl sulfide + H.adjust_hygiene(-0.15 * volume) + ..() + /datum/reagent/consumable/sprinkles name = "Sprinkles" - id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." color = "#FF00FF" // rgb: 255, 0, 255 taste_description = "childhood whimsy" @@ -417,7 +423,6 @@ /datum/reagent/consumable/cornoil name = "Corn Oil" - id = "cornoil" description = "An oil derived from various types of corn." nutriment_factor = 20 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -437,14 +442,12 @@ /datum/reagent/consumable/enzyme name = "Universal Enzyme" - id = "enzyme" description = "A universal enzyme used in the preperation of certain chemicals and foods." color = "#365E30" // rgb: 54, 94, 48 taste_description = "sweetness" /datum/reagent/consumable/dry_ramen name = "Dry Ramen" - id = "dry_ramen" description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." reagent_state = SOLID color = "#302000" // rgb: 48, 32, 0 @@ -452,7 +455,6 @@ /datum/reagent/consumable/hot_ramen name = "Hot Ramen" - id = "hot_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -464,7 +466,6 @@ /datum/reagent/consumable/hell_ramen name = "Hell Ramen" - id = "hell_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -476,7 +477,6 @@ /datum/reagent/consumable/flour name = "Flour" - id = "flour" description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID color = "#FFFFFF" // rgb: 0, 0, 0 @@ -487,25 +487,22 @@ var/obj/effect/decal/cleanable/food/flour/reagentdecal = new(T) reagentdecal = locate() in T //Might have merged with flour already there. if(reagentdecal) - reagentdecal.reagents.add_reagent("flour", reac_volume) + reagentdecal.reagents.add_reagent(/datum/reagent/consumable/flour, reac_volume) /datum/reagent/consumable/cherryjelly name = "Cherry Jelly" - id = "cherryjelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." color = "#801E28" // rgb: 128, 30, 40 taste_description = "cherry" /datum/reagent/consumable/bluecherryjelly name = "Blue Cherry Jelly" - id = "bluecherryjelly" description = "Blue and tastier kind of cherry jelly." color = "#00F0FF" taste_description = "blue cherry" /datum/reagent/consumable/rice name = "Rice" - id = "rice" description = "tiny nutritious grains" reagent_state = SOLID nutriment_factor = 3 * REAGENTS_METABOLISM @@ -514,7 +511,6 @@ /datum/reagent/consumable/vanilla name = "Vanilla Powder" - id = "vanilla" description = "A fatty, bitter paste made from vanilla pods." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -523,7 +519,6 @@ /datum/reagent/consumable/eggyolk name = "Egg Yolk" - id = "eggyolk" description = "It's full of protein." nutriment_factor = 3 * REAGENTS_METABOLISM color = "#FFB500" @@ -531,26 +526,23 @@ /datum/reagent/consumable/corn_starch name = "Corn Starch" - id = "corn_starch" description = "A slippery solution." color = "#C8A5DC" taste_description = "slime" /datum/reagent/consumable/corn_syrup name = "Corn Syrup" - id = "corn_syrup" description = "Decays into sugar." color = "#C8A5DC" metabolization_rate = 3 * REAGENTS_METABOLISM taste_description = "sweet slime" /datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M) - holder.add_reagent("sugar", 3) + holder.add_reagent(/datum/reagent/consumable/sugar, 3) ..() /datum/reagent/consumable/honey - name = "honey" - id = "honey" + name = "Honey" description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties." color = "#d3a308" nutriment_factor = 15 * REAGENTS_METABOLISM @@ -558,7 +550,7 @@ taste_description = "sweetness" /datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M) - M.reagents.add_reagent("sugar",3) + M.reagents.add_reagent(/datum/reagent/consumable/sugar,3) if(prob(55)) M.adjustBruteLoss(-1*REM, 0) M.adjustFireLoss(-1*REM, 0) @@ -576,14 +568,12 @@ /datum/reagent/consumable/mayonnaise name = "Mayonnaise" - id = "mayonnaise" description = "An white and oily mixture of mixed egg yolks." color = "#DFDFDF" taste_description = "mayonnaise" /datum/reagent/consumable/tearjuice name = "Tear Juice" - id = "tearjuice" description = "A blinding substance extracted from certain onions." color = "#c0c9a0" taste_description = "bitterness" @@ -621,7 +611,6 @@ /datum/reagent/consumable/nutriment/stabilized name = "Stabilized Nutriment" - id = "stabilizednutriment" description = "A bioengineered protien-nutrient structure designed to decompose in high saturation. In layman's terms, it won't get you fat." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM @@ -637,7 +626,6 @@ /datum/reagent/consumable/entpoly name = "Entropic Polypnium" - id = "entpoly" description = "An ichor, derived from a certain mushroom, makes for a bad time." color = "#1d043d" taste_description = "bitter mushroom" @@ -657,7 +645,6 @@ /datum/reagent/consumable/tinlux name = "Tinea Luxor" - id = "tinlux" description = "A stimulating ichor which causes luminescent fungi to grow on the skin. " color = "#b5a213" taste_description = "tingling mushroom" @@ -670,7 +657,6 @@ /datum/reagent/consumable/vitfro name = "Vitrium Froth" - id = "vitfro" description = "A bubbly paste that heals wounds of the skin." color = "#d3a308" nutriment_factor = 3 * REAGENTS_METABOLISM @@ -685,7 +671,6 @@ /datum/reagent/consumable/clownstears name = "Clown's Tears" - id = "clownstears" description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#eef442" // rgb: 238, 244, 66 @@ -694,7 +679,6 @@ /datum/reagent/consumable/liquidelectricity name = "Liquid Electricity" - id = "liquidelectricity" description = "The blood of Ethereals, and the stuff that keeps them going. Great for them, horrid for anyone else." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#97ee63" @@ -709,3 +693,20 @@ M.electrocute_act(rand(10,15), "Liquid Electricity in their body", 1) //lmao at the newbs who eat energy bars playsound(M, "sparks", 50, 1) return ..() + +/datum/reagent/consumable/astrotame + name = "Astrotame" + description = "A space age artifical sweetener." + nutriment_factor = 0 + metabolization_rate = 2 * REAGENTS_METABOLISM + reagent_state = SOLID + color = "#FFFFFF" // rgb: 255, 255, 255 + taste_mult = 8 + taste_description = "sweetness" + overdose_threshold = 17 + +/datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/M) + if(M.disgust < 80) + M.adjust_disgust(10) + ..() + . = 1 diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index a9b5feeca26e..f5ebc30327bb 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -7,16 +7,14 @@ /datum/reagent/medicine name = "Medicine" - id = "medicine" taste_description = "bitterness" /datum/reagent/medicine/on_mob_life(mob/living/carbon/M) current_cycle++ - holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism + holder.remove_reagent(type, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism /datum/reagent/medicine/leporazine name = "Leporazine" - id = "leporazine" description = "Leporazine will effectively regulate a patient's body temperature, ensuring it never leaves safe levels." color = "#C8A5DC" // rgb: 200, 165, 220 @@ -29,7 +27,6 @@ /datum/reagent/medicine/adminordrazine //An OP chemical for admins name = "Adminordrazine" - id = "adminordrazine" description = "It's magic. We don't have to explain it." color = "#C8A5DC" // rgb: 200, 165, 220 can_synth = FALSE @@ -75,13 +72,11 @@ /datum/reagent/medicine/adminordrazine/quantum_heal name = "Quantum Medicine" - id = "quantum_heal" description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy." taste_description = "science" /datum/reagent/medicine/synaptizine name = "Synaptizine" - id = "synaptizine" description = "Increases resistance to stuns as well as reducing drowsiness and hallucinations." color = "#FF00FF" @@ -92,8 +87,8 @@ M.AdjustUnconscious(-20, FALSE) M.AdjustImmobilized(-20, FALSE) M.AdjustParalyzed(-20, FALSE) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) + if(holder.has_reagent(/datum/reagent/toxin/mindbreaker)) + holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) M.hallucination = max(0, M.hallucination - 10) if(prob(30)) M.adjustToxLoss(1, 0) @@ -102,16 +97,15 @@ /datum/reagent/medicine/synaphydramine name = "Diphen-Synaptizine" - id = "synaphydramine" description = "Reduces drowsiness, hallucinations, and Histamine from body." color = "#EC536D" // rgb: 236, 83, 109 /datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M) M.drowsyness = max(M.drowsyness-5, 0) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) - if(holder.has_reagent("histamine")) - holder.remove_reagent("histamine", 5) + if(holder.has_reagent(/datum/reagent/toxin/mindbreaker)) + holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) + if(holder.has_reagent(/datum/reagent/toxin/histamine)) + holder.remove_reagent(/datum/reagent/toxin/histamine, 5) M.hallucination = max(0, M.hallucination - 10) if(prob(30)) M.adjustToxLoss(1, 0) @@ -120,7 +114,6 @@ /datum/reagent/medicine/inacusiate name = "Inacusiate" - id = "inacusiate" description = "Instantly restores all hearing to the patient, but does not cure deafness." color = "#6600FF" // rgb: 100, 165, 255 @@ -130,7 +123,6 @@ /datum/reagent/medicine/cryoxadone name = "Cryoxadone" - id = "cryoxadone" description = "A chemical mixture with almost magical healing powers. Its main limitation is that the patient's body temperature must be under 270K for it to metabolise correctly." color = "#0000C8" taste_description = "sludge" @@ -150,7 +142,6 @@ /datum/reagent/medicine/clonexadone name = "Clonexadone" - id = "clonexadone" description = "A chemical that derives from Cryoxadone. It specializes in healing clone damage, but nothing else. Requires very cold temperatures to properly metabolize, and metabolizes quicker than cryoxadone." color = "#0000C8" taste_description = "muscle" @@ -166,7 +157,6 @@ /datum/reagent/medicine/pyroxadone name = "Pyroxadone" - id = "pyroxadone" description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation." color = "#f7832a" taste_description = "spicy jelly" @@ -195,7 +185,6 @@ /datum/reagent/medicine/rezadone name = "Rezadone" - id = "rezadone" description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 @@ -218,7 +207,6 @@ /datum/reagent/medicine/spaceacillin name = "Spaceacillin" - id = "spaceacillin" description = "Spaceacillin will prevent a patient from conventionally spreading any diseases they are currently infected with." color = "#C8A5DC" // rgb: 200, 165, 220 metabolization_rate = 0.1 * REAGENTS_METABOLISM @@ -226,7 +214,6 @@ //Goon Chems. Ported mainly from Goonstation. Easily mixable (or not so easily) and provide a variety of effects. /datum/reagent/medicine/silver_sulfadiazine name = "Silver Sulfadiazine" - id = "silver_sulfadiazine" description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. If ingested through other means, deals minor toxin damage." reagent_state = LIQUID color = "#C8A5DC" @@ -252,7 +239,6 @@ /datum/reagent/medicine/oxandrolone name = "Oxandrolone" - id = "oxandrolone" description = "Stimulates the healing of severe burns. Extremely rapidly heals severe burns and slowly heals minor ones. Overdose will worsen existing burns." reagent_state = LIQUID color = "#f7ffa5" @@ -275,7 +261,6 @@ /datum/reagent/medicine/styptic_powder name = "Styptic Powder" - id = "styptic_powder" description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. If ingested through other means, deals minor toxin damage." reagent_state = LIQUID color = "#FF9696" @@ -302,7 +287,6 @@ /datum/reagent/medicine/salglu_solution name = "Saline-Glucose Solution" - id = "salglu_solution" description = "Has a 33% chance per metabolism cycle to heal brute and burn damage. Can be used as a temporary blood substitute." reagent_state = LIQUID color = "#DCDCDC" @@ -330,12 +314,12 @@ /datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M) if(prob(3)) to_chat(M, "You feel salty.") - holder.add_reagent("sodiumchloride", 1) - holder.remove_reagent("salglu_solution", 0.5) + holder.add_reagent(/datum/reagent/consumable/sodiumchloride, 1) + holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) else if(prob(3)) to_chat(M, "You feel sweet.") - holder.add_reagent("sugar", 1) - holder.remove_reagent("salglu_solution", 0.5) + holder.add_reagent(/datum/reagent/consumable/sugar, 1) + holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) if(prob(33)) M.adjustBruteLoss(0.5*REM, FALSE, FALSE, BODYPART_ORGANIC) M.adjustFireLoss(0.5*REM, FALSE, FALSE, BODYPART_ORGANIC) @@ -344,7 +328,6 @@ /datum/reagent/medicine/mine_salve name = "Miner's Salve" - id = "mine_salve" description = "A powerful painkiller. Restores bruising and burns in addition to making the patient believe they are fully healed." reagent_state = LIQUID color = "#6D6374" @@ -382,7 +365,6 @@ /datum/reagent/medicine/synthflesh name = "Synthflesh" - id = "synthflesh" description = "Has a 100% chance of instantly healing brute and burn damage. One unit of the chemical will heal one point of damage. Touch application only." reagent_state = LIQUID color = "#FFEBEB" @@ -401,7 +383,6 @@ /datum/reagent/medicine/charcoal name = "Charcoal" - id = "charcoal" description = "Heals toxin damage as well as slowly removing any other chemicals the patient has in their bloodstream." reagent_state = LIQUID color = "#000000" @@ -418,7 +399,6 @@ /datum/reagent/medicine/omnizine name = "Omnizine" - id = "omnizine" description = "Slowly heals all damage types. Overdose will cause damage in all types instead." reagent_state = LIQUID color = "#DCDCDC" @@ -443,7 +423,6 @@ /datum/reagent/medicine/calomel name = "Calomel" - id = "calomel" description = "Quickly purges the body of all chemicals. Toxin damage is dealt if the patient is in good condition." reagent_state = LIQUID color = "#19C832" @@ -453,7 +432,7 @@ /datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M) for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) - M.reagents.remove_reagent(R.id,2.5) + M.reagents.remove_reagent(R.type,2.5) if(M.health > 20) M.adjustToxLoss(2.5*REM, 0) . = 1 @@ -461,7 +440,6 @@ /datum/reagent/medicine/potass_iodide name = "Potassium Iodide" - id = "potass_iodide" description = "Efficiently restores low radiation damage." reagent_state = LIQUID color = "#14FF3C" @@ -474,7 +452,6 @@ /datum/reagent/medicine/pen_acid name = "Pentetic Acid" - id = "pen_acid" description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body." reagent_state = LIQUID color = "#E6FFF0" @@ -485,13 +462,12 @@ M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) - M.reagents.remove_reagent(R.id,2) + M.reagents.remove_reagent(R.type,2) ..() . = 1 /datum/reagent/medicine/sal_acid name = "Salicyclic Acid" - id = "sal_acid" description = "Stimulates the healing of severe bruises. Extremely rapidly heals severe bruising and slowly heals minor ones. Overdose will worsen existing bruising." reagent_state = LIQUID color = "#D2D2D2" @@ -515,7 +491,6 @@ /datum/reagent/medicine/salbutamol name = "Salbutamol" - id = "salbutamol" description = "Rapidly restores oxygen deprivation as well as preventing more of it to an extent." reagent_state = LIQUID color = "#00FFFF" @@ -530,7 +505,6 @@ /datum/reagent/medicine/perfluorodecalin name = "Perfluorodecalin" - id = "perfluorodecalin" description = "Extremely rapidly restores oxygen deprivation, but inhibits speech. May also heal small amounts of bruising and burns." reagent_state = LIQUID color = "#FF6464" @@ -549,7 +523,6 @@ /datum/reagent/medicine/ephedrine name = "Ephedrine" - id = "ephedrine" description = "Increases stun resistance and movement speed. Overdose deals toxin damage and inhibits breathing." reagent_state = LIQUID color = "#D2FFFA" @@ -559,10 +532,10 @@ /datum/reagent/medicine/ephedrine/on_mob_add(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-0.85, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-0.85, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/ephedrine/on_mob_delete(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M) @@ -643,7 +616,6 @@ /datum/reagent/medicine/diphenhydramine name = "Diphenhydramine" - id = "diphenhydramine" description = "Rapidly purges the body of Histamine and reduces jitteriness. Slight chance of causing drowsiness." reagent_state = LIQUID color = "#64FFE6" @@ -653,12 +625,11 @@ if(prob(10)) M.drowsyness += 1 M.jitteriness -= 1 - M.reagents.remove_reagent("histamine",3) + M.reagents.remove_reagent(/datum/reagent/toxin/histamine,3) ..() /datum/reagent/medicine/morphine name = "Morphine" - id = "morphine" description = "A painkiller that allows the patient to move at full speed even in bulky objects. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal." reagent_state = LIQUID color = "#A9FBFB" @@ -668,10 +639,10 @@ /datum/reagent/medicine/morphine/on_mob_add(mob/living/L) ..() - L.ignore_slowdown(id) + L.ignore_slowdown(type) /datum/reagent/medicine/morphine/on_mob_delete(mob/living/L) - L.unignore_slowdown(id) + L.unignore_slowdown(type) ..() /datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M) @@ -727,7 +698,6 @@ /datum/reagent/medicine/oculine name = "Oculine" - id = "oculine" description = "Quickly restores eye damage, cures nearsightedness, and has a chance to restore vision to the blind." reagent_state = LIQUID color = "#FFFFFF" @@ -758,7 +728,6 @@ /datum/reagent/medicine/atropine name = "Atropine" - id = "atropine" description = "If a patient is in critical condition, rapidly heals all damage types as well as regulating oxygen in the body. Excellent for stabilizing wounded patients." reagent_state = LIQUID color = "#000000" @@ -787,7 +756,6 @@ /datum/reagent/medicine/epinephrine name = "Epinephrine" - id = "epinephrine" description = "Minor boost to stun resistance. Slowly heals damage if a patient is in critical condition, as well as regulating oxygen loss. Overdose causes weakness and toxin damage." reagent_state = LIQUID color = "#D2FFFA" @@ -796,10 +764,10 @@ /datum/reagent/medicine/epinephrine/on_mob_add(mob/living/carbon/M) ..() - ADD_TRAIT(M, TRAIT_NOCRITDAMAGE, id) + ADD_TRAIT(M, TRAIT_NOCRITDAMAGE, type) /datum/reagent/medicine/epinephrine/on_mob_delete(mob/living/carbon/M) - REMOVE_TRAIT(M, TRAIT_NOCRITDAMAGE, id) + REMOVE_TRAIT(M, TRAIT_NOCRITDAMAGE, type) ..() /datum/reagent/medicine/epinephrine/on_mob_life(mob/living/carbon/M) @@ -828,7 +796,6 @@ /datum/reagent/medicine/strange_reagent name = "Strange Reagent" - id = "strange_reagent" description = "A miracle drug capable of bringing the dead back to life. Only functions when applied by patch or spray, if the target has less than 100 brute and burn damage (independent of one another) and hasn't been husked. Causes slight damage to the living." reagent_state = LIQUID color = "#A0E85E" @@ -867,7 +834,6 @@ /datum/reagent/medicine/mannitol name = "Mannitol" - id = "mannitol" description = "Efficiently restores brain damage." color = "#DCDCFF" @@ -877,20 +843,18 @@ /datum/reagent/medicine/neurine name = "Neurine" - id = "neurine" description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas." color = "#EEFF8F" /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) - if(holder.has_reagent("neurotoxin")) - holder.remove_reagent("neurotoxin", 5) + if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) + holder.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 5) if(prob(15)) C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) ..() /datum/reagent/medicine/mutadone name = "Mutadone" - id = "mutadone" description = "Removes jitteriness and restores genetic defects." color = "#5096C8" taste_description = "acid" @@ -904,7 +868,6 @@ /datum/reagent/medicine/antihol name = "Antihol" - id = "antihol" description = "Purges alcoholic substance from the patient's body and eliminates its side effects." color = "#00B4C8" taste_description = "raw egg" @@ -924,7 +887,6 @@ /datum/reagent/medicine/stimulants name = "Stimulants" - id = "stimulants" description = "Increases stun resistance and movement speed in addition to restoring minor damage and weakness. Overdose causes weakness and toxin damage." color = "#78008C" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -932,10 +894,10 @@ /datum/reagent/medicine/stimulants/on_mob_add(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/stimulants/on_mob_delete(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) @@ -959,7 +921,6 @@ /datum/reagent/medicine/insulin name = "Insulin" - id = "insulin" description = "Increases sugar depletion rates." reagent_state = LIQUID color = "#FFFFF0" @@ -968,13 +929,12 @@ /datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/M) if(M.AdjustSleeping(-20, FALSE)) . = 1 - M.reagents.remove_reagent("sugar", 3) + M.reagents.remove_reagent(/datum/reagent/consumable/sugar, 3) ..() //Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient. /datum/reagent/medicine/bicaridine name = "Bicaridine" - id = "bicaridine" description = "Restores bruising. Overdose causes it instead." reagent_state = LIQUID color = "#C8A5DC" @@ -992,7 +952,6 @@ /datum/reagent/medicine/dexalin name = "Dexalin" - id = "dexalin" description = "Restores oxygen loss. Overdose causes it instead." reagent_state = LIQUID color = "#C8A5DC" @@ -1010,7 +969,6 @@ /datum/reagent/medicine/kelotane name = "Kelotane" - id = "kelotane" description = "Restores fire damage. Overdose causes it instead." reagent_state = LIQUID color = "#C8A5DC" @@ -1028,7 +986,6 @@ /datum/reagent/medicine/antitoxin name = "Anti-Toxin" - id = "antitoxin" description = "Heals toxin damage and removes toxins in the bloodstream. Overdose causes toxin damage." reagent_state = LIQUID color = "#C8A5DC" @@ -1038,7 +995,7 @@ /datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/toxin/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.id,1) + M.reagents.remove_reagent(R.type,1) ..() . = 1 @@ -1049,7 +1006,6 @@ /datum/reagent/medicine/inaprovaline name = "Inaprovaline" - id = "inaprovaline" description = "Stabilizes the breathing of patients. Good for those in critical condition." reagent_state = LIQUID color = "#C8A5DC" @@ -1061,7 +1017,6 @@ /datum/reagent/medicine/tricordrazine name = "Tricordrazine" - id = "tricordrazine" description = "Has a high chance to heal all types of damage. Overdose instead causes it." reagent_state = LIQUID color = "#C8A5DC" @@ -1087,7 +1042,6 @@ /datum/reagent/medicine/regen_jelly name = "Regenerative Jelly" - id = "regen_jelly" description = "Gradually regenerates all types of damage, without harming slime anatomy." reagent_state = LIQUID color = "#91D865" @@ -1103,7 +1057,6 @@ /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs name = "Restorative Nanites" - id = "syndicate_nanites" description = "Miniature medical robots that swiftly restore bodily damage." reagent_state = SOLID color = "#555555" @@ -1121,14 +1074,13 @@ /datum/reagent/medicine/syndicate_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots if(prob(25)) - M.reagents.remove_reagent(src.id, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code + M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies ..() . = 1 /datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants name = "Earthsblood" - id = "earthsblood" description = "Ichor from an extremely powerful plant. Great for restoring wounds, but it's a little heavy on the brain." color = rgb(255, 175, 0) overdose_threshold = 25 @@ -1154,7 +1106,6 @@ /datum/reagent/medicine/haloperidol name = "Haloperidol" - id = "haloperidol" description = "Increases depletion rates for most stimulating/hallucinogenic drugs. Reduces druggy effects and jitteriness. Severe stamina regeneration penalty, causes drowsiness. Small chance of brain damage." reagent_state = LIQUID color = "#27870a" @@ -1162,7 +1113,7 @@ /datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M) for(var/datum/reagent/drug/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.id,5) + M.reagents.remove_reagent(R.type,5) M.drowsyness += 2 if(M.jitteriness >= 3) M.jitteriness -= 3 @@ -1176,7 +1127,6 @@ /datum/reagent/medicine/lavaland_extract name = "Lavaland Extract" - id = "lavaland_extract" description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise." color = "#C8A5DC" // rgb: 200, 165, 220 overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent @@ -1197,7 +1147,6 @@ //used for changeling's adrenaline power /datum/reagent/medicine/changelingadrenaline name = "Changeling Adrenaline" - id = "changelingadrenaline" description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed." color = "#C8A5DC" overdose_threshold = 30 @@ -1215,17 +1164,16 @@ /datum/reagent/medicine/changelinghaste name = "Changeling Haste" - id = "changelinghaste" description = "Drastically increases movement speed, but deals toxin damage." color = "#C8A5DC" metabolization_rate = 1 /datum/reagent/medicine/changelinghaste/on_mob_add(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/changelinghaste/on_mob_delete(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) @@ -1237,35 +1185,32 @@ // Heart attack code will not do damage if corazone is present // because it's SPACE MAGIC ASPIRIN name = "Corazone" - id = "corazone" description = "A medication used to treat pain, fever, and inflammation, along with heart attacks." color = "#F5F5F5" self_consuming = TRUE /datum/reagent/medicine/corazone/on_mob_add(mob/living/M) ..() - ADD_TRAIT(M, TRAIT_STABLEHEART, id) + ADD_TRAIT(M, TRAIT_STABLEHEART, type) /datum/reagent/medicine/corazone/on_mob_delete(mob/living/M) - REMOVE_TRAIT(M, TRAIT_STABLEHEART, id) + REMOVE_TRAIT(M, TRAIT_STABLEHEART, type) ..() /datum/reagent/medicine/muscle_stimulant name = "Muscle Stimulant" - id = "muscle_stimulant" description = "A potent chemical that allows someone under its influence to be at full physical ability even when under massive amounts of pain." /datum/reagent/medicine/muscle_stimulant/on_mob_add(mob/living/M) . = ..() - M.ignore_slowdown(id) + M.ignore_slowdown(type) /datum/reagent/medicine/muscle_stimulant/on_mob_delete(mob/living/M) . = ..() - M.unignore_slowdown(id) + M.unignore_slowdown(type) /datum/reagent/medicine/modafinil name = "Modafinil" - id = "modafinil" description = "Long-lasting sleep suppressant that very slightly reduces stun and knockdown times. Overdosing has horrendous side effects and deals lethal oxygen damage, will knock you unconscious if not dealt with." reagent_state = LIQUID color = "#BEF7D8" // palish blue white @@ -1275,11 +1220,11 @@ var/overdose_progress = 0 // to track overdose progress /datum/reagent/medicine/modafinil/on_mob_add(mob/living/M) - ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, id) + ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, type) ..() /datum/reagent/medicine/modafinil/on_mob_delete(mob/living/M) - REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, id) + REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, type) ..() /datum/reagent/medicine/modafinil/on_mob_life(mob/living/carbon/M) @@ -1330,7 +1275,6 @@ /datum/reagent/medicine/psicodine name = "Psicodine" - id = "psicodine" description = "Suppresses anxiety and other various forms of mental distress. Overdose causes hallucinations and minor toxin damage." reagent_state = LIQUID color = "#07E79E" @@ -1339,10 +1283,10 @@ /datum/reagent/medicine/psicodine/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FEARLESS, id) + ADD_TRAIT(L, TRAIT_FEARLESS, type) /datum/reagent/medicine/psicodine/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FEARLESS, id) + REMOVE_TRAIT(L, TRAIT_FEARLESS, type) ..() /datum/reagent/medicine/psicodine/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 8c52e3c3ac71..8f4dc098dbc6 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,7 +1,6 @@ /datum/reagent/blood data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null) name = "Blood" - id = "blood" color = "#C80000" // rgb: 200, 0, 0 metabolization_rate = 5 //fast rate so it disappears fast. taste_description = "iron" @@ -26,9 +25,9 @@ if(iscarbon(L)) var/mob/living/carbon/C = L - if(C.get_blood_id() == "blood" && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) + if(C.get_blood_id() == /datum/reagent/blood && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", reac_volume * 0.5) + C.reagents.add_reagent(/datum/reagent/toxin, reac_volume * 0.5) else C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) @@ -84,7 +83,6 @@ /datum/reagent/liquidgibs name = "Liquid gibs" - id = "liquidgibs" color = "#FF9966" description = "You don't even want to think about what's in here." taste_description = "gross iron" @@ -93,7 +91,6 @@ /datum/reagent/vaccine //data must contain virus type name = "Vaccine" - id = "vaccine" color = "#C81040" // rgb: 200, 16, 64 taste_description = "slime" @@ -111,7 +108,6 @@ /datum/reagent/water name = "Water" - id = "water" description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen." color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha) taste_description = "water" @@ -183,7 +179,6 @@ /datum/reagent/water/holywater name = "Holy Water" - id = "holywater" description = "Water blessed by some deity." color = "#E0E8EF" // rgb: 224, 232, 239 glass_icon_state = "glass_clear" @@ -192,10 +187,10 @@ /datum/reagent/water/holywater/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_HOLY, id) + ADD_TRAIT(L, TRAIT_HOLY, type) /datum/reagent/water/holywater/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_HOLY, id) + REMOVE_TRAIT(L, TRAIT_HOLY, type) ..() /datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -242,7 +237,7 @@ remove_servant_of_ratvar(M) M.jitteriness = 0 M.stuttering = 0 - holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? + holder.remove_reagent(type, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? return if(ishuman(M) && is_vampire(M) && prob(80)) // Yogs Start var/datum/antagonist/vampire/V = M.mind.has_antag_datum(ANTAG_DATUM_VAMPIRE) @@ -259,7 +254,7 @@ M.adjust_fire_stacks(3) M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard? // Yogs End - holder.remove_reagent(id, 0.4) //fixed consumption to prevent balancing going out of whack + holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack /datum/reagent/water/holywater/reaction_turf(turf/T, reac_volume) ..() @@ -272,13 +267,12 @@ /datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke name = "Unholy Water" - id = "unholywater" description = "Something that shouldn't exist on this plane of existence." taste_description = "suffering" /datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent(id,reac_volume/4) + M.reagents.add_reagent(type,reac_volume/4) return return ..() @@ -299,12 +293,11 @@ M.adjustFireLoss(2, 0) M.adjustOxyLoss(2, 0) M.adjustBruteLoss(2, 0) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) return TRUE /datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god name = "Hell Water" - id = "hell_water" description = "YOUR FLESH! IT BURNS!" taste_description = "burning" @@ -314,17 +307,15 @@ M.adjustToxLoss(1, 0) M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard? M.adjustBrainLoss(5, 150) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) /datum/reagent/medicine/omnizine/godblood name = "Godblood" - id = "godblood" description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power." overdose_threshold = 150 /datum/reagent/lube name = "Space Lube" - id = "lube" description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." color = "#009CA8" // rgb: 0, 156, 168 taste_description = "cherry" // by popular demand @@ -337,7 +328,6 @@ /datum/reagent/spraytan name = "Spray Tan" - id = "spraytan" description = "A substance applied to the skin to darken the skin." color = "#FFC080" // rgb: 255, 196, 128 Bright orange metabolization_rate = 10 * REAGENTS_METABOLISM // very fast, so it can be applied rapidly. But this changes on an overdose @@ -427,13 +417,12 @@ else M.visible_message("[M] flexes [M.p_their()] arms.") if(prob(10)) - M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don’t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = "spraytan") + M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don???t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = /datum/reagent/spraytan) ..() return /datum/reagent/mutationtoxin name = "Stable Mutation Toxin" - id = "stablemutationtoxin" description = "A humanizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY //So it instantly removes all of itself @@ -464,7 +453,6 @@ /datum/reagent/mutationtoxin/classic //The one from plasma on green slimes name = "Mutation Toxin" - id = "mutationtoxin" description = "A corruptive toxin." color = "#13BC5E" // rgb: 19, 188, 94 race = /datum/species/jelly/slime @@ -472,14 +460,12 @@ /datum/reagent/mutationtoxin/felinid name = "Felinid Mutation Toxin" - id = "felinidmutationtoxin" color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/human/felinid mutationtext = "The pain subsides. You feel... like a degenerate." /datum/reagent/mutationtoxin/lizard name = "Lizard Mutation Toxin" - id = "lizardmutationtoxin" description = "A lizarding toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard @@ -487,7 +473,6 @@ /datum/reagent/mutationtoxin/fly name = "Fly Mutation Toxin" - id = "flymutationtoxin" description = "An insectifying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/fly @@ -495,7 +480,6 @@ /datum/reagent/mutationtoxin/moth name = "Moth Mutation Toxin" - id = "mothmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/moth @@ -503,7 +487,6 @@ /datum/reagent/mutationtoxin/pod name = "Podperson Mutation Toxin" - id = "podmutationtoxin" description = "A vegetalizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/pod @@ -511,7 +494,6 @@ /datum/reagent/mutationtoxin/jelly name = "Imperfect Mutation Toxin" - id = "jellymutationtoxin" description = "An jellyfying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/jelly @@ -519,7 +501,6 @@ /datum/reagent/mutationtoxin/golem name = "Golem Mutation Toxin" - id = "golemmutationtoxin" description = "A crystal toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/golem/random @@ -527,7 +508,6 @@ /datum/reagent/mutationtoxin/abductor name = "Abductor Mutation Toxin" - id = "abductormutationtoxin" description = "An alien toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/abductor @@ -535,7 +515,6 @@ /datum/reagent/mutationtoxin/android name = "Android Mutation Toxin" - id = "androidmutationtoxin" description = "A robotic toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/android @@ -545,7 +524,6 @@ //BLACKLISTED RACES /datum/reagent/mutationtoxin/skeleton name = "Skeleton Mutation Toxin" - id = "skeletonmutationtoxin" description = "A scary toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/skeleton @@ -553,7 +531,6 @@ /datum/reagent/mutationtoxin/zombie name = "Zombie Mutation Toxin" - id = "zombiemutationtoxin" description = "An undead toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past. @@ -561,7 +538,6 @@ /datum/reagent/mutationtoxin/ash name = "Ash Mutation Toxin" - id = "ashmutationtoxin" description = "An ashen toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard/ashwalker @@ -571,7 +547,6 @@ //DANGEROUS RACES /datum/reagent/mutationtoxin/shadow name = "Shadow Mutation Toxin" - id = "shadowmutationtoxin" description = "A dark toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/shadow @@ -579,7 +554,6 @@ /datum/reagent/mutationtoxin/plasma name = "Plasma Mutation Toxin" - id = "plasmamutationtoxin" description = "A plasma-based toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/plasmaman @@ -587,7 +561,6 @@ /datum/reagent/slime_toxin name = "Slime Mutation Toxin" - id = "slime_toxin" description = "A toxin that turns organic material into slime." color = "#5EFF3B" //RGB: 94, 255, 59 taste_description = "slime" @@ -604,7 +577,7 @@ to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) - H.reagents.del_reagent(id) + H.reagents.del_reagent(type) switch(current_cycle) if(1 to 6) @@ -619,12 +592,11 @@ if(20 to INFINITY) var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) - H.reagents.del_reagent(id) + H.reagents.del_reagent(type) to_chat(H, "You've become \a jellyperson!") /datum/reagent/mulligan name = "Mulligan Toxin" - id = "mulligan" description = "This toxin will rapidly change the DNA of human beings. Commonly used by Syndicate spies and assassins in need of an emergency ID change." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY @@ -640,7 +612,6 @@ /datum/reagent/aslimetoxin name = "Advanced Mutation Toxin" - id = "amutationtoxin" description = "An advanced corruptive toxin produced by slimes." color = "#13BC5E" // rgb: 19, 188, 94 taste_description = "slime" @@ -651,7 +622,6 @@ /datum/reagent/gluttonytoxin name = "Gluttony's Blessing" - id = "gluttonytoxin" description = "An advanced corruptive toxin produced by something terrible." color = "#5EFF3B" //RGB: 94, 255, 59 can_synth = FALSE @@ -662,7 +632,6 @@ /datum/reagent/serotrotium name = "Serotrotium" - id = "serotrotium" description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." color = "#202040" // rgb: 20, 20, 40 metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -676,7 +645,6 @@ /datum/reagent/oxygen name = "Oxygen" - id = "oxygen" description = "A colorless, odorless gas. Grows on trees but is still pretty valuable." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -696,7 +664,6 @@ /datum/reagent/copper name = "Copper" - id = "copper" description = "A highly ductile metal. Things made out of copper aren't very durable, but it makes a decent material for electrical wiring." reagent_state = SOLID color = "#6E3B08" // rgb: 110, 59, 8 @@ -711,7 +678,6 @@ /datum/reagent/nitrogen name = "Nitrogen" - id = "nitrogen" description = "A colorless, odorless, tasteless gas. A simple asphyxiant that can silently displace vital oxygen." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -731,7 +697,6 @@ /datum/reagent/hydrogen name = "Hydrogen" - id = "hydrogen" description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -739,7 +704,6 @@ /datum/reagent/potassium name = "Potassium" - id = "potassium" description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." reagent_state = SOLID color = "#A0A0A0" // rgb: 160, 160, 160 @@ -747,7 +711,6 @@ /datum/reagent/mercury name = "Mercury" - id = "mercury" description = "A curious metal that's a liquid at room temperature. Neurodegenerative and very bad for the mind." color = "#484848" // rgb: 72, 72, 72A taste_mult = 0 // apparently tasteless. @@ -762,7 +725,6 @@ /datum/reagent/sulfur name = "Sulfur" - id = "sulfur" description = "A sickly yellow solid mostly known for its nasty smell. It's actually much more helpful than it looks in biochemisty." reagent_state = SOLID color = "#BF8C00" // rgb: 191, 140, 0 @@ -770,7 +732,6 @@ /datum/reagent/carbon name = "Carbon" - id = "carbon" description = "A crumbly black solid that, while unexciting on a physical level, forms the base of all known life. Kind of a big deal." reagent_state = SOLID color = "#1C1300" // rgb: 30, 20, 0 @@ -784,7 +745,6 @@ /datum/reagent/chlorine name = "Chlorine" - id = "chlorine" description = "A pale yellow gas that's well known as an oxidizer. While it forms many harmless molecules in its elemental form it is far from harmless." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -797,7 +757,6 @@ /datum/reagent/fluorine name = "Fluorine" - id = "fluorine" description = "A comically-reactive chemical element. The universe does not want this stuff to exist in this form in the slightest." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -810,7 +769,6 @@ /datum/reagent/sodium name = "Sodium" - id = "sodium" description = "A soft silver metal that can easily be cut with a knife. It's not salt just yet, so refrain from putting in on your chips." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 @@ -818,7 +776,6 @@ /datum/reagent/phosphorus name = "Phosphorus" - id = "phosphorus" description = "A ruddy red powder that burns readily. Though it comes in many colors, the general theme is always the same." reagent_state = SOLID color = "#832828" // rgb: 131, 40, 40 @@ -826,7 +783,6 @@ /datum/reagent/lithium name = "Lithium" - id = "lithium" description = "A silver metal, its claim to fame is its remarkably low density. Using it is a bit too effective in calming oneself down." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 @@ -841,14 +797,12 @@ /datum/reagent/glycerol name = "Glycerol" - id = "glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." color = "#808080" // rgb: 128, 128, 128 taste_description = "sweetness" /datum/reagent/space_cleaner/sterilizine name = "Sterilizine" - id = "sterilizine" description = "Sterilizes wounds in preparation for surgery." color = "#C8A5DC" // rgb: 200, 165, 220 taste_description = "bitterness" @@ -863,7 +817,6 @@ /datum/reagent/iron name = "Iron" - id = "iron" description = "Pure iron is a metal." reagent_state = SOLID taste_description = "iron" @@ -878,12 +831,11 @@ /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them. if(holder && holder.chem_temp < 100) // COLD iron. - M.reagents.add_reagent("toxin", reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) ..() /datum/reagent/gold name = "Gold" - id = "gold" description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." reagent_state = SOLID color = "#F7C430" // rgb: 247, 196, 48 @@ -891,7 +843,6 @@ /datum/reagent/silver name = "Silver" - id = "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 color = "#D0D0D0" // rgb: 208, 208, 208 @@ -899,12 +850,11 @@ /datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(M.has_bane(BANE_SILVER)) - M.reagents.add_reagent("toxin", reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) ..() /datum/reagent/uranium name ="Uranium" - id = "uranium" description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." reagent_state = SOLID color = "#B8B8C0" // rgb: 184, 184, 192 @@ -921,11 +871,10 @@ var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents if(!GG) GG = new/obj/effect/decal/cleanable/greenglow(T) - GG.reagents.add_reagent(id, reac_volume) + GG.reagents.add_reagent(type, reac_volume) /datum/reagent/uranium/radium name = "Radium" - id = "radium" description = "Radium is an alkaline earth metal. It is extremely radioactive." reagent_state = SOLID color = "#C7C7C7" // rgb: 199,199,199 @@ -934,7 +883,6 @@ /datum/reagent/bluespace name = "Bluespace Dust" - id = "bluespace" description = "A dust composed of microscopic bluespace crystals, with minor space-warping properties." reagent_state = SOLID color = "#0000CC" @@ -958,7 +906,6 @@ /datum/reagent/aluminium name = "Aluminium" - id = "aluminium" description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -966,7 +913,6 @@ /datum/reagent/silicon name = "Silicon" - id = "silicon" description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -974,7 +920,6 @@ /datum/reagent/fuel name = "Welding fuel" - id = "welding_fuel" description = "Required for welders. Flammable." color = "#660000" // rgb: 102, 0, 0 taste_description = "gross metal" @@ -995,7 +940,6 @@ /datum/reagent/space_cleaner name = "Space cleaner" - id = "cleaner" description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" color = "#A5F0EE" // rgb: 165, 240, 238 taste_description = "sourness" @@ -1054,7 +998,6 @@ /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" - id = "ez_clean" description = "A powerful, acidic cleaner sold by Waffle Co. Affects organic matter while leaving other objects unaffected." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "acid" @@ -1073,7 +1016,6 @@ /datum/reagent/cryptobiolin name = "Cryptobiolin" - id = "cryptobiolin" description = "Cryptobiolin causes confusion and dizziness." color = "#C8A5DC" // rgb: 200, 165, 220 metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1088,7 +1030,6 @@ /datum/reagent/impedrezene name = "Impedrezene" - id = "impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." color = "#C8A5DC" // rgb: 200, 165, 220A taste_description = "numbness" @@ -1105,7 +1046,6 @@ /datum/reagent/nanomachines name = "Nanomachines" - id = "nanomachines" description = "Microscopic construction robots." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE @@ -1117,7 +1057,6 @@ /datum/reagent/xenomicrobes name = "Xenomicrobes" - id = "xenomicrobes" description = "Microbes with an entirely alien cellular structure." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE @@ -1129,7 +1068,6 @@ /datum/reagent/fungalspores name = "Tubercle bacillus Cosmosis microbes" - id = "fungalspores" description = "Active fungal spores." color = "#92D17D" // rgb: 146, 209, 125 can_synth = FALSE @@ -1141,7 +1079,6 @@ /* YOGS /datum/reagent/snail name = "Agent-S" - id = "snailserum" description = "Virological agent that infects the subject with Gastrolosis." color = "#003300" // rgb(0, 51, 0) taste_description = "goo" @@ -1153,14 +1090,12 @@ /datum/reagent/fluorosurfactant//foam precursor name = "Fluorosurfactant" - id = "fluorosurfactant" description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." color = "#9E6B38" // rgb: 158, 107, 56 taste_description = "metal" /datum/reagent/foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. name = "Foaming agent" - id = "foaming_agent" description = "An agent that yields metallic foam when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" // rgb: 102, 75, 99 @@ -1168,7 +1103,6 @@ /datum/reagent/smart_foaming_agent //Smart foaming agent. Functions similarly to metal foam, but conforms to walls. name = "Smart foaming agent" - id = "smart_foaming_agent" description = "An agent that yields metallic foam which conforms to area boundaries when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" // rgb: 102, 75, 99 @@ -1176,7 +1110,6 @@ /datum/reagent/ammonia name = "Ammonia" - id = "ammonia" description = "A caustic substance commonly used in fertilizer or household cleaners." reagent_state = GAS color = "#404030" // rgb: 64, 64, 48 @@ -1184,14 +1117,12 @@ /datum/reagent/diethylamine name = "Diethylamine" - id = "diethylamine" description = "A secondary amine, mildly corrosive." color = "#604030" // rgb: 96, 64, 48 taste_description = "iron" /datum/reagent/carbondioxide name = "Carbon Dioxide" - id = "co2" reagent_state = GAS description = "A gas commonly produced by burning carbon fuels. You're constantly producing this in your lungs." color = "#B0B0B0" // rgb : 192, 192, 192 @@ -1211,7 +1142,6 @@ /datum/reagent/nitrous_oxide name = "Nitrous Oxide" - id = "nitrous_oxide" description = "A potent oxidizer used as fuel in rockets and as an anaesthetic during surgery." reagent_state = LIQUID metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1245,7 +1175,6 @@ /datum/reagent/stimulum name = "Stimulum" - id = "stimulum" description = "An unstable experimental gas that greatly increases the energy of those that inhale it" reagent_state = GAS metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl are handled through gas breathing, metabolism must be lower for breathcode to keep up @@ -1254,12 +1183,12 @@ /datum/reagent/stimulum/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_STUNIMMUNE, id) - ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + ADD_TRAIT(L, TRAIT_STUNIMMUNE, type) + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) /datum/reagent/stimulum/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id) - REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) ..() /datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) @@ -1268,7 +1197,6 @@ /datum/reagent/nitryl name = "Nitryl" - id = "no2" description = "A highly reactive gas that makes you feel faster" reagent_state = GAS metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because stimulum/nitryl are handled through gas breathing, metabolism must be lower for breathcode to keep up @@ -1277,10 +1205,10 @@ /datum/reagent/nitryl/on_mob_add(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/nitryl/on_mob_delete(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -1289,7 +1217,6 @@ /datum/reagent/colorful_reagent/crayonpowder name = "Crayon Powder" - id = "crayon powder" var/colorname = "none" description = "A powder made by grinding down crayons, good for colouring chemical reagents." reagent_state = SOLID @@ -1302,63 +1229,54 @@ /datum/reagent/colorful_reagent/crayonpowder/red name = "Red Crayon Powder" - id = "redcrayonpowder" colorname = "red" color = "#DA0000" // red random_color_list = list("#DA0000") /datum/reagent/colorful_reagent/crayonpowder/orange name = "Orange Crayon Powder" - id = "orangecrayonpowder" colorname = "orange" color = "#FF9300" // orange random_color_list = list("#FF9300") /datum/reagent/colorful_reagent/crayonpowder/yellow name = "Yellow Crayon Powder" - id = "yellowcrayonpowder" colorname = "yellow" color = "#FFF200" // yellow random_color_list = list("#FFF200") /datum/reagent/colorful_reagent/crayonpowder/green name = "Green Crayon Powder" - id = "greencrayonpowder" colorname = "green" color = "#A8E61D" // green random_color_list = list("#A8E61D") /datum/reagent/colorful_reagent/crayonpowder/blue name = "Blue Crayon Powder" - id = "bluecrayonpowder" colorname = "blue" color = "#00B7EF" // blue random_color_list = list("#00B7EF") /datum/reagent/colorful_reagent/crayonpowder/purple name = "Purple Crayon Powder" - id = "purplecrayonpowder" colorname = "purple" color = "#DA00FF" // purple random_color_list = list("#DA00FF") /datum/reagent/colorful_reagent/crayonpowder/invisible name = "Invisible Crayon Powder" - id = "invisiblecrayonpowder" colorname = "invisible" color = "#FFFFFF00" // white + no alpha random_color_list = list(null) //because using the powder color turns things invisible /datum/reagent/colorful_reagent/crayonpowder/black name = "Black Crayon Powder" - id = "blackcrayonpowder" colorname = "black" color = "#1C1C1C" // not quite black random_color_list = list("#404040") /datum/reagent/colorful_reagent/crayonpowder/white name = "White Crayon Powder" - id = "whitecrayonpowder" colorname = "white" color = "#FFFFFF" // white random_color_list = list("#FFFFFF") //doesn't actually change appearance at all @@ -1370,7 +1288,6 @@ /datum/reagent/plantnutriment name = "Generic nutriment" - id = "plantnutriment" description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it." color = "#000000" // RBG: 0, 0, 0 var/tox_prob = 0 @@ -1384,21 +1301,18 @@ /datum/reagent/plantnutriment/eznutriment name = "E-Z-Nutrient" - id = "eznutriment" description = "Cheap and extremely common type of plant nutriment." color = "#376400" // RBG: 50, 100, 0 tox_prob = 10 /datum/reagent/plantnutriment/left4zednutriment name = "Left 4 Zed" - id = "left4zednutriment" description = "Unstable nutriment that makes plants mutate more often than usual." color = "#1A1E4D" // RBG: 26, 30, 77 tox_prob = 25 /datum/reagent/plantnutriment/robustharvestnutriment name = "Robust Harvest" - id = "robustharvestnutriment" description = "Very potent nutriment that prevents plants from mutating." color = "#9D9D00" // RBG: 157, 157, 0 tox_prob = 15 @@ -1415,7 +1329,6 @@ /datum/reagent/oil name = "Oil" - id = "oil" description = "Burns in a small smoky fire, mostly used to get Ash." reagent_state = LIQUID color = "#C8A5DC" @@ -1423,7 +1336,6 @@ /datum/reagent/stable_plasma name = "Stable Plasma" - id = "stable_plasma" description = "Non-flammable plasma locked into a liquid form that cannot ignite or become gaseous/solid." reagent_state = LIQUID color = "#C8A5DC" @@ -1436,7 +1348,6 @@ /datum/reagent/iodine name = "Iodine" - id = "iodine" description = "Commonly added to table salt as a nutrient. On its own it tastes far less pleasing." reagent_state = LIQUID color = "#C8A5DC" @@ -1444,7 +1355,6 @@ /datum/reagent/carpet name = "Carpet" - id = "carpet" description = "For those that need a more creative way to roll out a red carpet." reagent_state = LIQUID color = "#C8A5DC" @@ -1458,7 +1368,6 @@ /datum/reagent/bromine name = "Bromine" - id = "bromine" description = "A brownish liquid that's highly reactive. Useful for stopping free radicals, but not intended for human consumption." reagent_state = LIQUID color = "#C8A5DC" @@ -1466,7 +1375,6 @@ /datum/reagent/phenol name = "Phenol" - id = "phenol" description = "An aromatic ring of carbon with a hydroxyl group. A useful precursor to some medicines, but has no healing properties on its own." reagent_state = LIQUID color = "#C8A5DC" @@ -1474,7 +1382,6 @@ /datum/reagent/ash name = "Ash" - id = "ash" description = "Supposedly phoenixes rise from these, but you've never seen it." reagent_state = LIQUID color = "#C8A5DC" @@ -1482,7 +1389,6 @@ /datum/reagent/acetone name = "Acetone" - id = "acetone" description = "A slick, slightly carcinogenic liquid. Has a multitude of mundane uses in everyday life." reagent_state = LIQUID color = "#C8A5DC" @@ -1490,7 +1396,6 @@ /datum/reagent/colorful_reagent name = "Colorful Reagent" - id = "colorful_reagent" description = "Thoroughly sample the rainbow." reagent_state = LIQUID color = "#C8A5DC" @@ -1518,7 +1423,6 @@ /datum/reagent/hair_dye name = "Quantum Hair Dye" - id = "hair_dye" description = "Has a high chance of making you look like a mad scientist." reagent_state = LIQUID color = "#C8A5DC" @@ -1535,7 +1439,6 @@ /datum/reagent/barbers_aid name = "Barber's Aid" - id = "barbers_aid" description = "A solution to hair loss across the world." reagent_state = LIQUID color = "#C8A5DC" @@ -1553,7 +1456,6 @@ /datum/reagent/concentrated_barbers_aid name = "Concentrated Barber's Aid" - id = "concentrated_barbers_aid" description = "A concentrated solution to hair loss across the world." reagent_state = LIQUID color = "#C8A5DC" @@ -1569,7 +1471,6 @@ /datum/reagent/saltpetre name = "Saltpetre" - id = "saltpetre" description = "Volatile. Controversial. Third Thing." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 @@ -1577,7 +1478,6 @@ /datum/reagent/lye name = "Lye" - id = "lye" description = "Also known as sodium hydroxide. As a profession making this is somewhat underwhelming." reagent_state = LIQUID color = "#FFFFD6" // very very light yellow @@ -1585,7 +1485,6 @@ /datum/reagent/drying_agent name = "Drying agent" - id = "drying_agent" description = "A desiccant. Can be used to dry things." reagent_state = LIQUID color = "#A70FFF" @@ -1605,51 +1504,43 @@ /datum/reagent/toxin/mutagen/mutagenvirusfood name = "mutagenic agar" - id = "mutagenvirusfood" color = "#A3C00F" // rgb: 163,192,15 taste_description = "sourness" /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar name = "sucrose agar" - id = "sugarvirusfood" color = "#41B0C0" // rgb: 65,176,192 taste_description = "sweetness" /datum/reagent/medicine/synaptizine/synaptizinevirusfood name = "virus rations" - id = "synaptizinevirusfood" color = "#D18AA5" // rgb: 209,138,165 taste_description = "bitterness" /datum/reagent/toxin/plasma/plasmavirusfood name = "virus plasma" - id = "plasmavirusfood" color = "#A69DA9" // rgb: 166,157,169 taste_description = "bitterness" taste_mult = 1.5 /datum/reagent/toxin/plasma/plasmavirusfood/weak name = "weakened virus plasma" - id = "weakplasmavirusfood" color = "#CEC3C6" // rgb: 206,195,198 taste_description = "bitterness" taste_mult = 1.5 /datum/reagent/uranium/uraniumvirusfood name = "decaying uranium gel" - id = "uraniumvirusfood" color = "#67ADBA" // rgb: 103,173,186 taste_description = "the inside of a reactor" /datum/reagent/uranium/uraniumvirusfood/unstable name = "unstable uranium gel" - id = "uraniumplasmavirusfood_unstable" color = "#2FF2CB" // rgb: 47,242,203 taste_description = "the inside of a reactor" /datum/reagent/uranium/uraniumvirusfood/stable name = "stable uranium gel" - id = "uraniumplasmavirusfood_stable" color = "#04506C" // rgb: 4,80,108 taste_description = "the inside of a reactor" @@ -1657,7 +1548,6 @@ /datum/reagent/royal_bee_jelly name = "royal bee jelly" - id = "royal_bee_jelly" description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees." color = "#00ff80" taste_description = "strange honey" @@ -1672,7 +1562,6 @@ /datum/reagent/romerol name = "Romerol" // the REAL zombie powder - id = "romerol" description = "Romerol is a highly experimental bioterror agent \ which causes dormant nodules to be etched into the grey matter of \ the subject. These nodules only become active upon death of the \ @@ -1692,7 +1581,6 @@ /datum/reagent/magillitis name = "Magillitis" - id = "magillitis" description = "An experimental serum which causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." reagent_state = LIQUID color = "#00f041" @@ -1704,7 +1592,6 @@ /datum/reagent/growthserum name = "Growth Serum" - id = "growthserum" description = "A commercial chemical designed to help older men in the bedroom."//not really it just makes you a giant color = "#ff0000"//strong red. rgb 255, 0, 0 var/current_size = 1 @@ -1736,14 +1623,12 @@ /datum/reagent/plastic_polymers name = "plastic polymers" - id = "plastic_polymers" description = "the petroleum based components of plastic." color = "#f7eded" taste_description = "plastic" /datum/reagent/glitter name = "generic glitter" - id = "glitter" description = "if you can see this description, contact a coder." color = "#FFFFFF" //pure white taste_description = "plastic" @@ -1757,27 +1642,23 @@ /datum/reagent/glitter/pink name = "pink glitter" - id = "pink_glitter" description = "pink sparkles that get everywhere" color = "#ff8080" //A light pink color glitter_type = /obj/effect/decal/cleanable/glitter/pink /datum/reagent/glitter/white name = "white glitter" - id = "white_glitter" description = "white sparkles that get everywhere" glitter_type = /obj/effect/decal/cleanable/glitter/white /datum/reagent/glitter/blue name = "blue glitter" - id = "blue_glitter" description = "blue sparkles that get everywhere" color = "#4040FF" //A blueish color glitter_type = /obj/effect/decal/cleanable/glitter/blue /datum/reagent/pax name = "Pax" - id = "pax" description = "A colorless liquid that suppresses violence on the subjects." color = "#AAAAAA55" taste_description = "water" @@ -1785,15 +1666,14 @@ /datum/reagent/pax/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_PACIFISM, id) + ADD_TRAIT(L, TRAIT_PACIFISM, type) /datum/reagent/pax/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_PACIFISM, id) + REMOVE_TRAIT(L, TRAIT_PACIFISM, type) ..() /datum/reagent/bz_metabolites name = "BZ metabolites" - id = "bz_metabolites" description = "A harmless metabolite of BZ gas" color = "#FAFF00" taste_description = "acrid cinnamon" @@ -1801,13 +1681,13 @@ /datum/reagent/bz_metabolites/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id) + ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type) if(L.mind && L.mind.has_antag_datum(/datum/antagonist/changeling)) //yogs to_chat(L, "We have toxins in our blood, our powers are weakening rapidly!") //yogs /datum/reagent/bz_metabolites/on_mob_delete(mob/living/L) ..() - REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id) + REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type) if(L.mind && L.mind.has_antag_datum(/datum/antagonist/changeling)) //yogs to_chat(L, "Our blood is pure, we can regenerate chemicals again.") //yogs @@ -1820,13 +1700,11 @@ /datum/reagent/pax/peaceborg name = "synth-pax" - id = "synthpax" description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax." metabolization_rate = 1.5 * REAGENTS_METABOLISM /datum/reagent/peaceborg/confuse name = "Dizzying Solution" - id = "dizzysolution" description = "Makes the target off balance and dizzy" metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "dizziness" @@ -1842,7 +1720,6 @@ /datum/reagent/peaceborg/tire name = "Tiring Solution" - id = "tiresolution" description = "An extremely weak stamina-toxin that tires out the target. Completely harmless." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "tiredness" @@ -1857,7 +1734,6 @@ /datum/reagent/tranquility name = "Tranquility" - id = "tranquility" description = "A highly mutative liquid of unknown origin." color = "#9A6750" //RGB: 154, 103, 80 taste_description = "inner peace" diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index a6cb066b7806..f16bfec6faa8 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -1,7 +1,6 @@ /datum/reagent/thermite name = "Thermite" - id = "thermite" description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." reagent_state = SOLID color = "#550000" @@ -18,14 +17,12 @@ /datum/reagent/nitroglycerin name = "Nitroglycerin" - id = "nitroglycerin" description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." color = "#808080" // rgb: 128, 128, 128 taste_description = "oil" /datum/reagent/stabilizing_agent name = "Stabilizing Agent" - id = "stabilizing_agent" description = "Keeps unstable chemicals stable. This does not work on everything." reagent_state = LIQUID color = "#FFFF00" @@ -33,7 +30,6 @@ /datum/reagent/clf3 name = "Chlorine Trifluoride" - id = "clf3" description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space." reagent_state = LIQUID color = "#FFC8C8" @@ -77,7 +73,6 @@ /datum/reagent/sorium name = "Sorium" - id = "sorium" description = "Sends everything flying from the detonation point." reagent_state = LIQUID color = "#5A64C8" @@ -85,7 +80,6 @@ /datum/reagent/liquid_dark_matter name = "Liquid Dark Matter" - id = "liquid_dark_matter" description = "Sucks everything into the detonation point." reagent_state = LIQUID color = "#210021" @@ -93,7 +87,6 @@ /datum/reagent/blackpowder name = "Black Powder" - id = "blackpowder" description = "Explodes. Violently." reagent_state = LIQUID color = "#000000" @@ -114,7 +107,6 @@ /datum/reagent/flash_powder name = "Flash Powder" - id = "flash_powder" description = "Makes a very bright flash." reagent_state = LIQUID color = "#C8C8C8" @@ -122,7 +114,6 @@ /datum/reagent/smoke_powder name = "Smoke Powder" - id = "smoke_powder" description = "Makes a large cloud of smoke that can carry reagents." reagent_state = LIQUID color = "#C8C8C8" @@ -130,7 +121,6 @@ /datum/reagent/sonic_powder name = "Sonic Powder" - id = "sonic_powder" description = "Makes a deafening noise." reagent_state = LIQUID color = "#C8C8C8" @@ -138,7 +128,6 @@ /datum/reagent/phlogiston name = "Phlogiston" - id = "phlogiston" description = "Catches you on fire and makes you ignite." reagent_state = LIQUID color = "#FA00AF" @@ -160,7 +149,6 @@ /datum/reagent/napalm name = "Napalm" - id = "napalm" description = "Very flammable." reagent_state = LIQUID color = "#FA00AF" @@ -177,7 +165,6 @@ /datum/reagent/cryostylane name = "Cryostylane" - id = "cryostylane" description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the container 0K." color = "#0000DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -185,8 +172,8 @@ /datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube - if(M.reagents.has_reagent("oxygen")) - M.reagents.remove_reagent("oxygen", 0.5) + if(M.reagents.has_reagent(/datum/reagent/oxygen)) + M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(-15) ..() @@ -197,21 +184,19 @@ /datum/reagent/pyrosium name = "Pyrosium" - id = "pyrosium" description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly heats all other reagents in the container." color = "#64FAC8" metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" /datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M) - if(M.reagents.has_reagent("oxygen")) - M.reagents.remove_reagent("oxygen", 0.5) + if(M.reagents.has_reagent(/datum/reagent/oxygen)) + M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(15) ..() /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. name = "Teslium" - id = "teslium" description = "An unstable, electrically-charged metallic slurry. Periodically electrocutes its victim, and makes electrocutions against them more deadly. Excessively heating teslium results in dangerous destabilization. Do not allow to come into contact with water." reagent_state = LIQUID color = "#20324D" //RGB: 32, 50, 77 @@ -229,7 +214,6 @@ /datum/reagent/teslium/energized_jelly name = "Energized Jelly" - id = "energized_jelly" description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms." reagent_state = LIQUID color = "#CAFF43" @@ -248,7 +232,6 @@ /datum/reagent/firefighting_foam name = "Firefighting Foam" - id = "firefighting_foam" description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels." reagent_state = LIQUID color = "#A6FAFF55" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 8e77f5fdcd23..62264588997d 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -3,7 +3,6 @@ /datum/reagent/toxin name = "Toxin" - id = "toxin" description = "A toxic chemical." color = "#CF3600" // rgb: 207, 54, 0 taste_description = "bitterness" @@ -19,7 +18,6 @@ /datum/reagent/toxin/amatoxin name = "Amatoxin" - id = "amatoxin" description = "A powerful poison derived from certain species of mushroom." color = "#792300" // rgb: 121, 35, 0 toxpwr = 2.5 @@ -27,7 +25,6 @@ /datum/reagent/toxin/mutagen name = "Unstable mutagen" - id = "mutagen" description = "Might cause unpredictable mutations. Keep away from children." color = "#00FF00" toxpwr = 0 @@ -55,7 +52,6 @@ /datum/reagent/toxin/plasma name = "Plasma" - id = "plasma" description = "Plasma in its liquid form." taste_description = "bitterness" specific_heat = SPECIFIC_HEAT_PLASMA @@ -64,8 +60,8 @@ toxpwr = 3 /datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C) - if(holder.has_reagent("epinephrine")) - holder.remove_reagent("epinephrine", 2*REM) + if(holder.has_reagent(/datum/reagent/medicine/epinephrine)) + holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM) C.adjustPlasma(20) return ..() @@ -89,7 +85,6 @@ /datum/reagent/toxin/lexorin name = "Lexorin" - id = "lexorin" description = "A powerful poison used to stop respiration." color = "#7DC3A0" toxpwr = 0 @@ -110,7 +105,6 @@ /datum/reagent/toxin/slimejelly name = "Slime Jelly" - id = "slimejelly" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." color = "#801E28" // rgb: 128, 30, 40 toxpwr = 0 @@ -129,7 +123,6 @@ /datum/reagent/toxin/minttoxin name = "Mint Toxin" - id = "minttoxin" description = "Useful for dealing with undesirable customers." color = "#CF3600" // rgb: 207, 54, 0 toxpwr = 0 @@ -142,7 +135,6 @@ /datum/reagent/toxin/carpotoxin name = "Carpotoxin" - id = "carpotoxin" description = "A deadly neurotoxin produced by the dreaded spess carp." silent_toxin = TRUE color = "#003333" // rgb: 0, 51, 51 @@ -151,7 +143,6 @@ /datum/reagent/toxin/zombiepowder name = "Zombie Powder" - id = "zombiepowder" description = "A strong neurotoxin that puts the subject into a death-like state." silent_toxin = TRUE reagent_state = SOLID @@ -161,10 +152,10 @@ /datum/reagent/toxin/zombiepowder/on_mob_add(mob/living/L) ..() - L.fakedeath(id) + L.fakedeath(type) /datum/reagent/toxin/zombiepowder/on_mob_delete(mob/living/L) - L.cure_fakedeath(id) + L.cure_fakedeath(type) ..() /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) @@ -174,7 +165,6 @@ /datum/reagent/toxin/ghoulpowder name = "Ghoul Powder" - id = "ghoulpowder" description = "A strong neurotoxin that slows metabolism to a death-like state, while keeping the patient fully active. Causes toxin buildup if used too long." reagent_state = SOLID color = "#664700" // rgb: 102, 71, 0 @@ -183,10 +173,10 @@ /datum/reagent/toxin/ghoulpowder/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FAKEDEATH, id) + ADD_TRAIT(L, TRAIT_FAKEDEATH, type) /datum/reagent/toxin/ghoulpowder/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FAKEDEATH, id) + REMOVE_TRAIT(L, TRAIT_FAKEDEATH, type) ..() /datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M) @@ -196,7 +186,6 @@ /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" - id = "mindbreaker" description = "A powerful hallucinogen. Not a thing to be messed with. For some mental patients. it counteracts their symptoms and anchors them to reality." color = "#B31008" // rgb: 139, 166, 233 toxpwr = 0 @@ -208,7 +197,6 @@ /datum/reagent/toxin/plantbgone name = "Plant-B-Gone" - id = "plantbgone" description = "A harmful toxic mixture to kill plantlife. Do not ingest!" color = "#49002E" // rgb: 73, 0, 46 toxpwr = 1 @@ -234,13 +222,11 @@ /datum/reagent/toxin/plantbgone/weedkiller name = "Weed Killer" - id = "weedkiller" description = "A harmful toxic mixture to kill weeds. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 /datum/reagent/toxin/pestkiller name = "Pest Killer" - id = "pestkiller" description = "A harmful toxic mixture to kill pests. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 toxpwr = 1 @@ -253,7 +239,6 @@ /datum/reagent/toxin/spore name = "Spore Toxin" - id = "spore" description = "A natural toxin produced by blob spores that inhibits vision when ingested." color = "#9ACD32" toxpwr = 1 @@ -266,7 +251,6 @@ /datum/reagent/toxin/spore_burning name = "Burning Spore Toxin" - id = "spore_burning" description = "A natural toxin produced by blob spores that induces combustion in its victim." color = "#9ACD32" toxpwr = 0.5 @@ -279,7 +263,6 @@ /datum/reagent/toxin/chloralhydrate name = "Chloral Hydrate" - id = "chloralhydrate" description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep." silent_toxin = TRUE reagent_state = SOLID @@ -301,28 +284,8 @@ . = 1 ..() -/datum/reagent/toxin/chloralhydratedelayed //sedates half as quickly and does not cause toxloss. same name/desc so it doesn't give away sleepypens - name = "Chloral Hydrate" - id = "chloralhydratedelayed" - description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep." - silent_toxin = TRUE - reagent_state = SOLID - color = "#000067" // rgb: 0, 0, 103 - toxpwr = 0 - metabolization_rate = 1.5 * REAGENTS_METABOLISM - -/datum/reagent/toxin/chloralhydratedelayed/on_mob_life(mob/living/carbon/M) - switch(current_cycle) - if(10 to 20) - M.confused += 1 - M.drowsyness += 1 - if(20 to INFINITY) - M.Sleeping(40, 0) - ..() - /datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots name = "Beer" - id = "fakebeer" description = "A specially-engineered sedative disguised as beer. It induces instant sleep in its target." color = "#664300" // rgb: 102, 67, 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -342,7 +305,6 @@ /datum/reagent/toxin/coffeepowder name = "Coffee Grounds" - id = "coffeepowder" description = "Finely ground coffee beans, used to make coffee." reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 @@ -350,7 +312,6 @@ /datum/reagent/toxin/teapowder name = "Ground Tea Leaves" - id = "teapowder" description = "Finely shredded tea leaves, used for making tea." reagent_state = SOLID color = "#7F8400" // rgb: 127, 132, 0 @@ -358,7 +319,6 @@ /datum/reagent/toxin/mutetoxin //the new zombie powder. name = "Mute Toxin" - id = "mutetoxin" description = "A nonlethal poison that inhibits speech in its victim." silent_toxin = TRUE color = "#F0F8FF" // rgb: 240, 248, 255 @@ -371,7 +331,6 @@ /datum/reagent/toxin/staminatoxin name = "Tirizene" - id = "tirizene" description = "A nonlethal poison that causes extreme fatigue and weakness in its victim." silent_toxin = TRUE color = "#6E2828" @@ -386,7 +345,6 @@ /datum/reagent/toxin/polonium name = "Polonium" - id = "polonium" description = "An extremely radioactive material in liquid form. Ingestion results in fatal irradiation." reagent_state = LIQUID color = "#787878" @@ -399,7 +357,6 @@ /datum/reagent/toxin/histamine name = "Histamine" - id = "histamine" description = "Histamine's effects become more dangerous depending on the dosage amount. They range from mildly annoying to incredibly lethal." silent_toxin = TRUE reagent_state = LIQUID @@ -434,7 +391,6 @@ /datum/reagent/toxin/formaldehyde name = "Formaldehyde" - id = "formaldehyde" description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine." silent_toxin = TRUE reagent_state = LIQUID @@ -444,14 +400,13 @@ /datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M) if(prob(5)) - holder.add_reagent("histamine", pick(5,15)) - holder.remove_reagent("formaldehyde", 1.2) + holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15)) + holder.remove_reagent(/datum/reagent/toxin/formaldehyde, 1.2) else return ..() /datum/reagent/toxin/venom name = "Venom" - id = "venom" description = "An exotic poison extracted from highly toxic fauna. Causes scaling amounts of toxin damage and bruising depending and dosage. Often decays into Histamine." reagent_state = LIQUID color = "#F0FFF0" @@ -463,14 +418,13 @@ M.adjustBruteLoss((0.3*volume)*REM, 0) . = 1 if(prob(15)) - M.reagents.add_reagent("histamine", pick(5,10)) - M.reagents.remove_reagent("venom", 1.1) + M.reagents.add_reagent(/datum/reagent/toxin/histamine, pick(5,10)) + M.reagents.remove_reagent(/datum/reagent/toxin/venom, 1.1) else ..() /datum/reagent/toxin/fentanyl name = "Fentanyl" - id = "fentanyl" description = "Fentanyl will inhibit brain function and cause toxin damage before eventually knocking out its victim." reagent_state = LIQUID color = "#64916E" @@ -488,7 +442,6 @@ /datum/reagent/toxin/cyanide name = "Cyanide" - id = "cyanide" description = "An infamous poison known for its use in assassination. Causes small amounts of toxin damage with a small chance of oxygen damage or a stun." reagent_state = LIQUID color = "#00B4FF" @@ -506,7 +459,6 @@ /datum/reagent/toxin/bad_food name = "Bad Food" - id = "bad_food" description = "The result of some abomination of cookery, food so bad it's toxic." reagent_state = LIQUID color = "#d6d6d8" @@ -516,7 +468,6 @@ /datum/reagent/toxin/itching_powder name = "Itching Powder" - id = "itching_powder" description = "A powder that induces itching upon contact with the skin. Causes the victim to scratch at their itches and has a very low chance to decay into Histamine." silent_toxin = TRUE reagent_state = LIQUID @@ -526,7 +477,7 @@ /datum/reagent/toxin/itching_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent("itching_powder", reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume) /datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) if(prob(15)) @@ -542,14 +493,13 @@ M.adjustBruteLoss(0.2*REM, 0) . = 1 if(prob(3)) - M.reagents.add_reagent("histamine",rand(1,3)) - M.reagents.remove_reagent("itching_powder",1.2) + M.reagents.add_reagent(/datum/reagent/toxin/histamine,rand(1,3)) + M.reagents.remove_reagent(/datum/reagent/toxin/itching_powder,1.2) return ..() /datum/reagent/toxin/initropidril name = "Initropidril" - id = "initropidril" description = "A powerful poison with insidious effects. It can cause stuns, lethal breathing failure, and cardiac arrest." silent_toxin = TRUE reagent_state = LIQUID @@ -581,7 +531,6 @@ /datum/reagent/toxin/pancuronium name = "Pancuronium" - id = "pancuronium" description = "An undetectable toxin that swiftly incapacitates its victim. May also cause breathing failure." silent_toxin = TRUE reagent_state = LIQUID @@ -600,7 +549,6 @@ /datum/reagent/toxin/sodium_thiopental name = "Sodium Thiopental" - id = "sodium_thiopental" description = "Sodium Thiopental induces heavy weakness in its target as well as unconsciousness." silent_toxin = TRUE reagent_state = LIQUID @@ -617,7 +565,6 @@ /datum/reagent/toxin/sulfonal name = "Sulfonal" - id = "sulfonal" description = "A stealthy poison that deals minor toxin damage and eventually puts the target to sleep." silent_toxin = TRUE reagent_state = LIQUID @@ -632,7 +579,6 @@ /datum/reagent/toxin/amanitin name = "Amanitin" - id = "amanitin" description = "A very powerful delayed toxin. Upon full metabolization, a massive amount of toxin damage will be dealt depending on how long it has been in the victim's bloodstream." silent_toxin = TRUE reagent_state = LIQUID @@ -648,7 +594,6 @@ /datum/reagent/toxin/lipolicide name = "Lipolicide" - id = "lipolicide" description = "A powerful toxin that will destroy fat cells, massively reducing body weight in a short time. Deadly to those without nutriment in their body." silent_toxin = TRUE taste_description = "mothballs" @@ -666,7 +611,6 @@ /datum/reagent/toxin/coniine name = "Coniine" - id = "coniine" description = "Coniine metabolizes extremely slowly, but deals high amounts of toxin damage and stops breathing." reagent_state = LIQUID color = "#7DC3A0" @@ -679,7 +623,6 @@ /datum/reagent/toxin/spewium name = "Spewium" - id = "spewium" description = "A powerful emetic, causes uncontrollable vomiting. May result in vomiting organs at high doses." reagent_state = LIQUID color = "#2f6617" //A sickly green color @@ -694,7 +637,7 @@ C.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30)) for(var/datum/reagent/toxin/R in C.reagents.reagent_list) if(R != src) - C.reagents.remove_reagent(R.id,1) + C.reagents.remove_reagent(R.type,1) /datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C) . = ..() @@ -705,7 +648,6 @@ /datum/reagent/toxin/curare name = "Curare" - id = "curare" description = "Causes slight toxin damage followed by chain-stunning and oxygen damage." reagent_state = LIQUID color = "#191919" @@ -721,7 +663,6 @@ /datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic. name = "Heparin" - id = "heparin" description = "A powerful anticoagulant. Victims will bleed uncontrollably and suffer scaling bruising." silent_toxin = TRUE reagent_state = LIQUID @@ -740,7 +681,6 @@ /datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious name = "Rotatium" - id = "rotatium" description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild." silent_toxin = TRUE reagent_state = LIQUID @@ -768,7 +708,6 @@ /datum/reagent/toxin/skewium name = "Skewium" - id = "skewium" description = "A strange, dull coloured liquid that appears to warp back and forth inside its container. Causes any consumer to experience a visual phenomena similar to said warping." silent_toxin = TRUE reagent_state = LIQUID @@ -805,7 +744,6 @@ /datum/reagent/toxin/anacea name = "Anacea" - id = "anacea" description = "A toxin that quickly purges medicines and metabolizes very slowly." reagent_state = LIQUID color = "#3C5133" @@ -814,10 +752,10 @@ /datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M) var/remove_amt = 5 - if(holder.has_reagent("calomel") || holder.has_reagent("pen_acid")) + if(holder.has_reagent(/datum/reagent/medicine/calomel) || holder.has_reagent(/datum/reagent/medicine/pen_acid)) remove_amt = 0.5 for(var/datum/reagent/medicine/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.id,remove_amt) + M.reagents.remove_reagent(R.type,remove_amt) return ..() //ACID @@ -825,7 +763,6 @@ /datum/reagent/toxin/acid name = "Sulphuric acid" - id = "sacid" description = "A strong mineral acid with the molecular formula H2SO4." color = "#00FF32" toxpwr = 1 @@ -859,7 +796,6 @@ /datum/reagent/toxin/acid/fluacid name = "Fluorosulfuric acid" - id = "facid" description = "Fluorosulfuric acid is an extremely corrosive chemical substance." color = "#5050FF" toxpwr = 2 @@ -872,7 +808,6 @@ /datum/reagent/toxin/delayed name = "Toxin Microcapsules" - id = "delayed_toxin" description = "Causes heavy toxin damage after a brief time of inactivity." reagent_state = LIQUID metabolization_rate = 0 //stays in the system until active. @@ -883,7 +818,7 @@ /datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M) if(current_cycle > delay) - holder.remove_reagent(id, actual_metaboliztion_rate * M.metabolism_efficiency) + holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency) M.adjustToxLoss(actual_toxpwr*REM, 0) if(prob(10)) M.Paralyze(20, 0) @@ -892,7 +827,6 @@ /datum/reagent/toxin/mimesbane name = "Mime's Bane" - id = "mimesbane" description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture." silent_toxin = TRUE color = "#F0F8FF" // rgb: 240, 248, 255 @@ -900,14 +834,13 @@ taste_description = "stillness" /datum/reagent/toxin/mimesbane/on_mob_add(mob/living/L) - ADD_TRAIT(L, TRAIT_EMOTEMUTE, id) + ADD_TRAIT(L, TRAIT_EMOTEMUTE, type) /datum/reagent/toxin/mimesbane/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, id) + REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, type) /datum/reagent/toxin/bonehurtingjuice //oof ouch name = "Bone Hurting Juice" - id = "bonehurtingjuice" description = "A strange substance that looks a lot like water. Drinking it is oddly tempting. Oof ouch." silent_toxin = TRUE //no point spamming them even more. color = "#AAAAAA77" //RGBA: 170, 170, 170, 77 @@ -916,7 +849,7 @@ overdose_threshold = 50 /datum/reagent/toxin/bonehurtingjuice/on_mob_add(mob/living/carbon/M) - M.say("oof ouch my bones", forced = "bonehurtingjuice") + M.say("oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice) /datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/M) M.adjustStaminaLoss(15, 0) @@ -926,10 +859,10 @@ switch(rand(1, 3)) if(1) var/list/possible_says = list("oof.", "ouch!", "my bones.", "oof ouch.", "oof ouch my bones.") - M.say(pick(possible_says), forced = "bonehurtingjuice") + M.say(pick(possible_says), forced = /datum/reagent/toxin/bonehurtingjuice) if(2) var/list/possible_mes = list("oofs softly.", "looks like their bones hurt.", "grimaces, as though their bones hurt.") - M.say("*custom " + pick(possible_mes), forced = "bonehurtingjuice") + M.say("*custom " + pick(possible_mes), forced = /datum/reagent/toxin/bonehurtingjuice) if(3) to_chat(M, "Your bones hurt!") return ..() @@ -952,15 +885,15 @@ bp.receive_damage(0, 0, 200) playsound(M, get_sfx("desceration"), 50, TRUE, -1) M.visible_message("[M]'s bones hurt too much!!", "Your bones hurt too much!!") - M.say("OOF!!", forced = "bonehurtingjuice") + M.say("OOF!!", forced = /datum/reagent/toxin/bonehurtingjuice) else //SUCH A LUST FOR REVENGE!!! to_chat(M, "A phantom limb hurts!") - M.say("Why are we still here, just to suffer?", forced = "bonehurtingjuice") + M.say("Why are we still here, just to suffer?", forced = /datum/reagent/toxin/bonehurtingjuice) else //you just want to socialize if(bp) playsound(M, get_sfx("desceration"), 50, TRUE, -1) M.visible_message("[M] rattles loudly and flails around!!", "Your bones hurt so much that your missing muscles spasm!!") - M.say("OOF!!", forced="bonehurtingjuice") + M.say("OOF!!", forced=/datum/reagent/toxin/bonehurtingjuice) bp.receive_damage(200, 0, 0) //But I don't think we should else to_chat(M, "Your missing arm aches from wherever you left it.") diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 716d86fc800c..7049c3da0eac 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -1,49 +1,49 @@ /datum/chemical_reaction/space_drugs name = "Space Drugs" - id = "space_drugs" - results = list("space_drugs" = 3) - required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) + id = /datum/reagent/drug/space_drugs + results = list(/datum/reagent/drug/space_drugs = 3) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1) /datum/chemical_reaction/crank name = "Crank" - id = "crank" - results = list("crank" = 5) - required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "welding_fuel" = 1) + id = /datum/reagent/drug/crank + results = list(/datum/reagent/drug/crank = 5) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/ammonia = 1, /datum/reagent/lithium = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/fuel = 1) mix_message = "The mixture violently reacts, leaving behind a few crystalline shards." required_temp = 390 /datum/chemical_reaction/krokodil name = "Krokodil" - id = "krokodil" - results = list("krokodil" = 6) - required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "welding_fuel" = 1) + id = /datum/reagent/drug/krokodil + results = list(/datum/reagent/drug/krokodil = 6) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 /datum/chemical_reaction/methamphetamine - name = "methamphetamine" - id = "methamphetamine" - results = list("methamphetamine" = 4) - required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) + name = /datum/reagent/drug/methamphetamine + id = /datum/reagent/drug/methamphetamine + results = list(/datum/reagent/drug/methamphetamine = 4) + required_reagents = list(/datum/reagent/medicine/ephedrine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1) required_temp = 374 /datum/chemical_reaction/bath_salts - name = "bath_salts" - id = "bath_salts" - results = list("bath_salts" = 7) - required_reagents = list("bad_food" = 1, "saltpetre" = 1, "nutriment" = 1, "cleaner" = 1, "enzyme" = 1, "tea" = 1, "mercury" = 1) + name = /datum/reagent/drug/bath_salts + id = /datum/reagent/drug/bath_salts + results = list(/datum/reagent/drug/bath_salts = 7) + required_reagents = list(/datum/reagent/toxin/bad_food = 1, /datum/reagent/saltpetre = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/consumable/enzyme = 1, /datum/reagent/consumable/tea = 1, /datum/reagent/mercury = 1) required_temp = 374 /datum/chemical_reaction/aranesp - name = "aranesp" - id = "aranesp" - results = list("aranesp" = 3) - required_reagents = list("epinephrine" = 1, "atropine" = 1, "morphine" = 1) + name = /datum/reagent/drug/aranesp + id = /datum/reagent/drug/aranesp + results = list(/datum/reagent/drug/aranesp = 3) + required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1) /datum/chemical_reaction/happiness name = "Happiness" - id = "happiness" - results = list("happiness" = 4) - required_reagents = list("nitrous_oxide" = 2, "epinephrine" = 1, "ethanol" = 1) - required_catalysts = list("plasma" = 5) + id = /datum/reagent/drug/happiness + results = list(/datum/reagent/drug/happiness = 4) + required_reagents = list(/datum/reagent/nitrous_oxide = 2, /datum/reagent/medicine/epinephrine = 1, /datum/reagent/consumable/ethanol = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index f9b7177011a8..5465e9e252cf 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -1,266 +1,266 @@ /datum/chemical_reaction/leporazine name = "Leporazine" - id = "leporazine" - results = list("leporazine" = 2) - required_reagents = list("silicon" = 1, "copper" = 1) - required_catalysts = list("plasma" = 5) + id = /datum/reagent/medicine/leporazine + results = list(/datum/reagent/medicine/leporazine = 2) + required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/rezadone name = "Rezadone" - id = "rezadone" - results = list("rezadone" = 3) - required_reagents = list("capsaicin" = 1, "cryptobiolin" = 1, "copper" = 1) // yogs - Makes recipe capsaicin + id = /datum/reagent/medicine/rezadone + results = list(/datum/reagent/medicine/rezadone = 3) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 1, /datum/reagent/cryptobiolin = 1, /datum/reagent/copper = 1) /datum/chemical_reaction/spaceacillin name = "Spaceacillin" - id = "spaceacillin" - results = list("spaceacillin" = 2) - required_reagents = list("cryptobiolin" = 1, "epinephrine" = 1) + id = /datum/reagent/medicine/spaceacillin + results = list(/datum/reagent/medicine/spaceacillin = 2) + required_reagents = list(/datum/reagent/cryptobiolin = 1, /datum/reagent/medicine/epinephrine = 1) /datum/chemical_reaction/inacusiate - name = "inacusiate" - id = "inacusiate" - results = list("inacusiate" = 2) - required_reagents = list("water" = 1, "carbon" = 1, "charcoal" = 1) + name = /datum/reagent/medicine/inacusiate + id = /datum/reagent/medicine/inacusiate + results = list(/datum/reagent/medicine/inacusiate = 2) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/synaptizine name = "Synaptizine" - id = "synaptizine" - results = list("synaptizine" = 3) - required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) + id = /datum/reagent/medicine/synaptizine + results = list(/datum/reagent/medicine/synaptizine = 3) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1, /datum/reagent/water = 1) /datum/chemical_reaction/charcoal name = "Charcoal" - id = "charcoal" - results = list("charcoal" = 2) - required_reagents = list("ash" = 1, "sodiumchloride" = 1) + id = /datum/reagent/medicine/charcoal + results = list(/datum/reagent/medicine/charcoal = 2) + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/sodiumchloride = 1) mix_message = "The mixture yields a fine black powder." required_temp = 380 /datum/chemical_reaction/silver_sulfadiazine name = "Silver Sulfadiazine" - id = "silver_sulfadiazine" - results = list("silver_sulfadiazine" = 5) - required_reagents = list("ammonia" = 1, "silver" = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1) + id = /datum/reagent/medicine/silver_sulfadiazine + results = list(/datum/reagent/medicine/silver_sulfadiazine = 5) + required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, /datum/reagent/sulfur = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/salglu_solution name = "Saline-Glucose Solution" - id = "salglu_solution" - results = list("salglu_solution" = 3) - required_reagents = list("sodiumchloride" = 1, "water" = 1, "sugar" = 1) + id = /datum/reagent/medicine/salglu_solution + results = list(/datum/reagent/medicine/salglu_solution = 3) + required_reagents = list(/datum/reagent/consumable/sodiumchloride = 1, /datum/reagent/water = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/mine_salve name = "Miner's Salve" - id = "mine_salve" - results = list("mine_salve" = 3) - required_reagents = list("oil" = 1, "water" = 1, "iron" = 1) + id = /datum/reagent/medicine/mine_salve + results = list(/datum/reagent/medicine/mine_salve = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/water = 1, /datum/reagent/iron = 1) /datum/chemical_reaction/mine_salve2 name = "Miner's Salve" - id = "mine_salve" - results = list("mine_salve" = 15) - required_reagents = list("plasma" = 5, "iron" = 5, "sugar" = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these + id = /datum/reagent/medicine/mine_salve + results = list(/datum/reagent/medicine/mine_salve = 15) + required_reagents = list(/datum/reagent/toxin/plasma = 5, /datum/reagent/iron = 5, /datum/reagent/consumable/sugar = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these /datum/chemical_reaction/synthflesh name = "Synthflesh" - id = "synthflesh" - results = list("synthflesh" = 3) - required_reagents = list("blood" = 1, "carbon" = 1, "styptic_powder" = 1) + id = /datum/reagent/medicine/synthflesh + results = list(/datum/reagent/medicine/synthflesh = 3) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/styptic_powder = 1) /datum/chemical_reaction/styptic_powder name = "Styptic Powder" - id = "styptic_powder" - results = list("styptic_powder" = 4) - required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, "sacid" = 1) + id = /datum/reagent/medicine/styptic_powder + results = list(/datum/reagent/medicine/styptic_powder = 4) + required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1) mix_message = "The solution yields an astringent powder." /datum/chemical_reaction/calomel name = "Calomel" - id = "calomel" - results = list("calomel" = 2) - required_reagents = list("mercury" = 1, "chlorine" = 1) + id = /datum/reagent/medicine/calomel + results = list(/datum/reagent/medicine/calomel = 2) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/chlorine = 1) required_temp = 374 /datum/chemical_reaction/potass_iodide name = "Potassium Iodide" - id = "potass_iodide" - results = list("potass_iodide" = 2) - required_reagents = list("potassium" = 1, "iodine" = 1) + id = /datum/reagent/medicine/potass_iodide + results = list(/datum/reagent/medicine/potass_iodide = 2) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/iodine = 1) /datum/chemical_reaction/pen_acid name = "Pentetic Acid" - id = "pen_acid" - results = list("pen_acid" = 6) - required_reagents = list("welding_fuel" = 1, "chlorine" = 1, "ammonia" = 1, "formaldehyde" = 1, "sodium" = 1, "cyanide" = 1) + id = /datum/reagent/medicine/pen_acid + results = list(/datum/reagent/medicine/pen_acid = 6) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/chlorine = 1, /datum/reagent/ammonia = 1, /datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/cyanide = 1) /datum/chemical_reaction/sal_acid name = "Salicyclic Acid" - id = "sal_acid" - results = list("sal_acid" = 5) - required_reagents = list("sodium" = 1, "phenol" = 1, "carbon" = 1, "oxygen" = 1, "sacid" = 1) + id = /datum/reagent/medicine/sal_acid + results = list(/datum/reagent/medicine/sal_acid = 5) + required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/phenol = 1, /datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/oxandrolone name = "Oxandrolone" - id = "oxandrolone" - results = list("oxandrolone" = 6) - required_reagents = list("carbon" = 3, "phenol" = 1, "hydrogen" = 1, "oxygen" = 1) + id = /datum/reagent/medicine/oxandrolone + results = list(/datum/reagent/medicine/oxandrolone = 6) + required_reagents = list(/datum/reagent/carbon = 3, /datum/reagent/phenol = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/salbutamol name = "Salbutamol" - id = "salbutamol" - results = list("salbutamol" = 5) - required_reagents = list("sal_acid" = 1, "lithium" = 1, "aluminium" = 1, "bromine" = 1, "ammonia" = 1) + id = /datum/reagent/medicine/salbutamol + results = list(/datum/reagent/medicine/salbutamol = 5) + required_reagents = list(/datum/reagent/medicine/sal_acid = 1, /datum/reagent/lithium = 1, /datum/reagent/aluminium = 1, /datum/reagent/bromine = 1, /datum/reagent/ammonia = 1) /datum/chemical_reaction/perfluorodecalin name = "Perfluorodecalin" - id = "perfluorodecalin" - results = list("perfluorodecalin" = 3) - required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1) + id = /datum/reagent/medicine/perfluorodecalin + results = list(/datum/reagent/medicine/perfluorodecalin = 3) + required_reagents = list(/datum/reagent/hydrogen = 1, /datum/reagent/fluorine = 1, /datum/reagent/oil = 1) required_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." /datum/chemical_reaction/ephedrine name = "Ephedrine" - id = "ephedrine" - results = list("ephedrine" = 4) - required_reagents = list("sugar" = 1, "oil" = 1, "hydrogen" = 1, "diethylamine" = 1) + id = /datum/reagent/medicine/ephedrine + results = list(/datum/reagent/medicine/ephedrine = 4) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, /datum/reagent/hydrogen = 1, /datum/reagent/diethylamine = 1) mix_message = "The solution fizzes and gives off toxic fumes." /datum/chemical_reaction/diphenhydramine name = "Diphenhydramine" - id = "diphenhydramine" - results = list("diphenhydramine" = 4) - required_reagents = list("oil" = 1, "carbon" = 1, "bromine" = 1, "diethylamine" = 1, "ethanol" = 1) + id = /datum/reagent/medicine/diphenhydramine + results = list(/datum/reagent/medicine/diphenhydramine = 4) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/carbon = 1, /datum/reagent/bromine = 1, /datum/reagent/diethylamine = 1, /datum/reagent/consumable/ethanol = 1) mix_message = "The mixture dries into a pale blue powder." /datum/chemical_reaction/oculine name = "Oculine" - id = "oculine" - results = list("oculine" = 3) - required_reagents = list("charcoal" = 1, "carbon" = 1, "hydrogen" = 1) + id = /datum/reagent/medicine/oculine + results = list(/datum/reagent/medicine/oculine = 3) + required_reagents = list(/datum/reagent/medicine/charcoal = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1) mix_message = "The mixture sputters loudly and becomes a pale pink color." /datum/chemical_reaction/atropine name = "Atropine" - id = "atropine" - results = list("atropine" = 5) - required_reagents = list("ethanol" = 1, "acetone" = 1, "diethylamine" = 1, "phenol" = 1, "sacid" = 1) + id = /datum/reagent/medicine/atropine + results = list(/datum/reagent/medicine/atropine = 5) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/phenol = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/epinephrine name = "Epinephrine" - id = "epinephrine" - results = list("epinephrine" = 6) - required_reagents = list("phenol" = 1, "acetone" = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1) + id = /datum/reagent/medicine/epinephrine + results = list(/datum/reagent/medicine/epinephrine = 6) + required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/strange_reagent name = "Strange Reagent" - id = "strange_reagent" - results = list("strange_reagent" = 3) - required_reagents = list("omnizine" = 1, "holywater" = 1, "mutagen" = 1) + id = /datum/reagent/medicine/strange_reagent + results = list(/datum/reagent/medicine/strange_reagent = 3) + required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/mannitol name = "Mannitol" - id = "mannitol" - results = list("mannitol" = 3) - required_reagents = list("sugar" = 1, "hydrogen" = 1, "water" = 1) + id = /datum/reagent/medicine/mannitol + results = list(/datum/reagent/medicine/mannitol = 3) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1) mix_message = "The solution slightly bubbles, becoming thicker." - + /datum/chemical_reaction/neurine name = "Neurine" - id = "neurine" - results = list("neurine" = 3) - required_reagents = list("mannitol" = 1, "acetone" = 1, "oxygen" = 1) + id = /datum/reagent/medicine/neurine + results = list(/datum/reagent/medicine/neurine = 3) + required_reagents = list(/datum/reagent/medicine/mannitol = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/mutadone name = "Mutadone" - id = "mutadone" - results = list("mutadone" = 3) - required_reagents = list("mutagen" = 1, "acetone" = 1, "bromine" = 1) + id = /datum/reagent/medicine/mutadone + results = list(/datum/reagent/medicine/mutadone = 3) + required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/acetone = 1, /datum/reagent/bromine = 1) /datum/chemical_reaction/antihol - name = "antihol" - id = "antihol" - results = list("antihol" = 3) - required_reagents = list("ethanol" = 1, "charcoal" = 1, "copper" = 1) + name = /datum/reagent/medicine/antihol + id = /datum/reagent/medicine/antihol + results = list(/datum/reagent/medicine/antihol = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/copper = 1) /datum/chemical_reaction/cryoxadone name = "Cryoxadone" - id = "cryoxadone" - results = list("cryoxadone" = 3) - required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) + id = /datum/reagent/medicine/cryoxadone + results = list(/datum/reagent/medicine/cryoxadone = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/pyroxadone name = "Pyroxadone" - id = "pyroxadone" - results = list("pyroxadone" = 2) - required_reagents = list("cryoxadone" = 1, "slimejelly" = 1) + id = /datum/reagent/medicine/pyroxadone + results = list(/datum/reagent/medicine/pyroxadone = 2) + required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/toxin/slimejelly = 1) /datum/chemical_reaction/clonexadone name = "Clonexadone" - id = "clonexadone" - results = list("clonexadone" = 2) - required_reagents = list("cryoxadone" = 1, "sodium" = 1) - required_catalysts = list("plasma" = 5) + id = /datum/reagent/medicine/clonexadone + results = list(/datum/reagent/medicine/clonexadone = 2) + required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/sodium = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/haloperidol name = "Haloperidol" - id = "haloperidol" - results = list("haloperidol" = 5) - required_reagents = list("chlorine" = 1, "fluorine" = 1, "aluminium" = 1, "potass_iodide" = 1, "oil" = 1) + id = /datum/reagent/medicine/haloperidol + results = list(/datum/reagent/medicine/haloperidol = 5) + required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 1, /datum/reagent/aluminium = 1, /datum/reagent/medicine/potass_iodide = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/bicaridine name = "Bicaridine" - id = "bicaridine" - results = list("bicaridine" = 3) - required_reagents = list("carbon" = 1, "oxygen" = 1, "sugar" = 1) + id = /datum/reagent/medicine/bicaridine + results = list(/datum/reagent/medicine/bicaridine = 3) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/kelotane name = "Kelotane" - id = "kelotane" - results = list("kelotane" = 2) - required_reagents = list("carbon" = 1, "silicon" = 1) + id = /datum/reagent/medicine/kelotane + results = list(/datum/reagent/medicine/kelotane = 2) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/silicon = 1) /datum/chemical_reaction/antitoxin name = "Antitoxin" - id = "antitoxin" - results = list("antitoxin" = 3) - required_reagents = list("nitrogen" = 1, "silicon" = 1, "potassium" = 1) + id = /datum/reagent/medicine/antitoxin + results = list(/datum/reagent/medicine/antitoxin = 3) + required_reagents = list(/datum/reagent/nitrogen = 1, /datum/reagent/silicon = 1, /datum/reagent/potassium = 1) /datum/chemical_reaction/tricordrazine name = "Tricordrazine" - id = "tricordrazine" - results = list("tricordrazine" = 3) - required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1) + id = /datum/reagent/medicine/tricordrazine + results = list(/datum/reagent/medicine/tricordrazine = 3) + required_reagents = list(/datum/reagent/medicine/bicaridine = 1, /datum/reagent/medicine/kelotane = 1, /datum/reagent/medicine/antitoxin = 1) /datum/chemical_reaction/regen_jelly name = "Regenerative Jelly" - id = "regen_jelly" - results = list("regen_jelly" = 2) - required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) + id = /datum/reagent/medicine/regen_jelly + results = list(/datum/reagent/medicine/regen_jelly = 2) + required_reagents = list(/datum/reagent/medicine/tricordrazine = 1, /datum/reagent/toxin/slimejelly = 1) /datum/chemical_reaction/corazone name = "Corazone" - id = "corazone" - results = list("corazone" = 3) - required_reagents = list("phenol" = 2, "lithium" = 1) + id = /datum/reagent/medicine/corazone + results = list(/datum/reagent/medicine/corazone = 3) + required_reagents = list(/datum/reagent/phenol = 2, /datum/reagent/lithium = 1) /datum/chemical_reaction/morphine name = "Morphine" - id = "morphine" - results = list("morphine" = 2) - required_reagents = list("carbon" = 2, "hydrogen" = 2, "ethanol" = 1, "oxygen" = 1) + id = /datum/reagent/medicine/morphine + results = list(/datum/reagent/medicine/morphine = 2) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) required_temp = 480 /datum/chemical_reaction/modafinil name = "Modafinil" - id = "modafinil" - results = list("modafinil" = 5) - required_reagents = list("diethylamine" = 1, "ammonia" = 1, "phenol" = 1, "acetone" = 1, "sacid" = 1) - required_catalysts = list("bromine" = 1) // as close to the real world synthesis as possible + id = /datum/reagent/medicine/modafinil + results = list(/datum/reagent/medicine/modafinil = 5) + required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/ammonia = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid = 1) + required_catalysts = list(/datum/reagent/bromine = 1) // as close to the real world synthesis as possible /datum/chemical_reaction/psicodine name = "Psicodine" - id = "psicodine" - results = list("psicodine" = 5) - required_reagents = list( "mannitol" = 2, "water" = 2, "impedrezene" = 1) + id = /datum/reagent/medicine/psicodine + results = list(/datum/reagent/medicine/psicodine = 5) + required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 15643d57120d..2e28732ef27a 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -1,56 +1,56 @@ /datum/chemical_reaction/sterilizine name = "Sterilizine" - id = "sterilizine" - results = list("sterilizine" = 3) - required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1) + id = /datum/reagent/space_cleaner/sterilizine + results = list(/datum/reagent/space_cleaner/sterilizine = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/lube name = "Space Lube" - id = "lube" - results = list("lube" = 4) - required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) + id = /datum/reagent/lube + results = list(/datum/reagent/lube = 4) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/spraytan name = "Spray Tan" - id = "spraytan" - results = list("spraytan" = 2) - required_reagents = list("orangejuice" = 1, "oil" = 1) + id = /datum/reagent/spraytan + results = list(/datum/reagent/spraytan = 2) + required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/spraytan2 name = "Spray Tan" - id = "spraytan" - results = list("spraytan" = 2) - required_reagents = list("orangejuice" = 1, "cornoil" = 1) + id = /datum/reagent/spraytan + results = list(/datum/reagent/spraytan = 2) + required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cornoil = 1) /datum/chemical_reaction/impedrezene name = "Impedrezene" - id = "impedrezene" - results = list("impedrezene" = 2) - required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) + id = /datum/reagent/impedrezene + results = list(/datum/reagent/impedrezene = 2) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/cryptobiolin name = "Cryptobiolin" - id = "cryptobiolin" - results = list("cryptobiolin" = 3) - required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) + id = /datum/reagent/cryptobiolin + results = list(/datum/reagent/cryptobiolin = 3) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/glycerol name = "Glycerol" - id = "glycerol" - results = list("glycerol" = 1) - required_reagents = list("cornoil" = 3, "sacid" = 1) + id = /datum/reagent/glycerol + results = list(/datum/reagent/glycerol = 1) + required_reagents = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/sodiumchloride name = "Sodium Chloride" - id = "sodiumchloride" - results = list("sodiumchloride" = 3) - required_reagents = list("water" = 1, "sodium" = 1, "chlorine" = 1) + id = /datum/reagent/consumable/sodiumchloride + results = list(/datum/reagent/consumable/sodiumchloride = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/plasmasolidification name = "Solid Plasma" id = "solidplasma" - required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20) + required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/frostoil = 5, /datum/reagent/toxin/plasma = 20) mob_react = FALSE /datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, created_volume) @@ -61,7 +61,7 @@ /datum/chemical_reaction/goldsolidification name = "Solid Gold" id = "solidgold" - required_reagents = list("frostoil" = 5, "gold" = 20, "iron" = 1) + required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/gold = 20, /datum/reagent/iron = 1) mob_react = FALSE /datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, created_volume) @@ -72,13 +72,13 @@ /datum/chemical_reaction/capsaicincondensation name = "Capsaicincondensation" id = "capsaicincondensation" - results = list("condensedcapsaicin" = 5) - required_reagents = list("capsaicin" = 1, "ethanol" = 5) + results = list(/datum/reagent/consumable/condensedcapsaicin = 5) + required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/ethanol = 5) /datum/chemical_reaction/soapification name = "Soapification" id = "soapification" - required_reagents = list("liquidgibs" = 10, "lye" = 10) // requires two scooped gib tiles + required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/lye = 10) // requires two scooped gib tiles required_temp = 374 mob_react = FALSE @@ -90,7 +90,7 @@ /datum/chemical_reaction/candlefication name = "Candlefication" id = "candlefication" - required_reagents = list("liquidgibs" = 5, "oxygen" = 5) // + required_reagents = list(/datum/reagent/liquidgibs = 5, /datum/reagent/oxygen = 5) // required_temp = 374 mob_react = FALSE @@ -102,7 +102,7 @@ /datum/chemical_reaction/meatification name = "Meatification" id = "meatification" - required_reagents = list("liquidgibs" = 10, "nutriment" = 10, "carbon" = 10) + required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/consumable/nutriment = 10, /datum/reagent/carbon = 10) mob_react = FALSE /datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume) @@ -114,99 +114,99 @@ /datum/chemical_reaction/carbondioxide name = "Direct Carbon Oxidation" id = "burningcarbon" - results = list("co2" = 3) - required_reagents = list("carbon" = 1, "oxygen" = 2) + results = list(/datum/reagent/carbondioxide = 3) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 2) required_temp = 777 // pure carbon isn't especially reactive. /datum/chemical_reaction/nitrous_oxide name = "Nitrous Oxide" - id = "nitrous_oxide" - results = list("nitrous_oxide" = 5) - required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2) + id = /datum/reagent/nitrous_oxide + results = list(/datum/reagent/nitrous_oxide = 5) + required_reagents = list(/datum/reagent/ammonia = 2, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 2) required_temp = 525 //Technically a mutation toxin /datum/chemical_reaction/mulligan name = "Mulligan" - id = "mulligan" - results = list("mulligan" = 1) - required_reagents = list("slime_toxin" = 1, "mutagen" = 1) + id = /datum/reagent/mulligan + results = list(/datum/reagent/mulligan = 1) + required_reagents = list(/datum/reagent/slime_toxin = 1, /datum/reagent/toxin/mutagen = 1) ////////////////////////////////// VIROLOGY ////////////////////////////////////////// /datum/chemical_reaction/virus_food name = "Virus Food" - id = "virusfood" - results = list("virusfood" = 15) - required_reagents = list("water" = 5, "milk" = 5) + id = /datum/reagent/consumable/virus_food + results = list(/datum/reagent/consumable/virus_food = 15) + required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/milk = 5) /datum/chemical_reaction/virus_food_mutagen name = "mutagenic agar" - id = "mutagenvirusfood" - results = list("mutagenvirusfood" = 1) - required_reagents = list("mutagen" = 1, "virusfood" = 1) + id = /datum/reagent/toxin/mutagen/mutagenvirusfood + results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1) + required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_synaptizine name = "virus rations" - id = "synaptizinevirusfood" - results = list("synaptizinevirusfood" = 1) - required_reagents = list("synaptizine" = 1, "virusfood" = 1) + id = /datum/reagent/medicine/synaptizine/synaptizinevirusfood + results = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1) + required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_plasma name = "virus plasma" - id = "plasmavirusfood" - results = list("plasmavirusfood" = 1) - required_reagents = list("plasma" = 1, "virusfood" = 1) + id = /datum/reagent/toxin/plasma/plasmavirusfood + results = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_plasma_synaptizine name = "weakened virus plasma" - id = "weakplasmavirusfood" - results = list("weakplasmavirusfood" = 2) - required_reagents = list("synaptizine" = 1, "plasmavirusfood" = 1) + id = /datum/reagent/toxin/plasma/plasmavirusfood/weak + results = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 2) + required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/toxin/plasma/plasmavirusfood = 1) /datum/chemical_reaction/virus_food_mutagen_sugar name = "sucrose agar" - id = "sugarvirusfood" - results = list("sugarvirusfood" = 2) - required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1) + id = /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar + results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1) /datum/chemical_reaction/virus_food_mutagen_salineglucose name = "sucrose agar" id = "salineglucosevirusfood" - results = list("sugarvirusfood" = 2) - required_reagents = list("salglu_solution" = 1, "mutagenvirusfood" = 1) + results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1) /datum/chemical_reaction/virus_food_uranium name = "Decaying uranium gel" - id = "uraniumvirusfood" - results = list("uraniumvirusfood" = 1) - required_reagents = list("uranium" = 1, "virusfood" = 1) + id = /datum/reagent/uranium/uraniumvirusfood + results = list(/datum/reagent/uranium/uraniumvirusfood = 1) + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_uranium_plasma name = "Unstable uranium gel" id = "uraniumvirusfood_plasma" - results = list("uraniumplasmavirusfood_unstable" = 1) - required_reagents = list("uranium" = 5, "plasmavirusfood" = 1) + results = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1) + required_reagents = list(/datum/reagent/uranium = 5, /datum/reagent/toxin/plasma/plasmavirusfood = 1) /datum/chemical_reaction/virus_food_uranium_plasma_gold name = "Stable uranium gel" id = "uraniumvirusfood_gold" - results = list("uraniumplasmavirusfood_stable" = 1) - required_reagents = list("uranium" = 10, "gold" = 10, "plasma" = 1) + results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) + required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/gold = 10, /datum/reagent/toxin/plasma = 1) /datum/chemical_reaction/virus_food_uranium_plasma_silver name = "Stable uranium gel" id = "uraniumvirusfood_silver" - results = list("uraniumplasmavirusfood_stable" = 1) - required_reagents = list("uranium" = 10, "silver" = 10, "plasma" = 1) + results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) + required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/silver = 10, /datum/reagent/toxin/plasma = 1) /datum/chemical_reaction/mix_virus name = "Mix Virus" id = "mixvirus" - results = list("blood" = 1) - required_reagents = list("virusfood" = 1) - required_catalysts = list("blood" = 1) + results = list(/datum/reagent/blood = 1) + required_reagents = list(/datum/reagent/consumable/virus_food = 1) + required_catalysts = list(/datum/reagent/blood = 1) var/level_min = 1 var/level_max = 2 @@ -223,7 +223,7 @@ name = "Mix Virus 2" id = "mixvirus2" - required_reagents = list("mutagen" = 1) + required_reagents = list(/datum/reagent/toxin/mutagen = 1) level_min = 2 level_max = 4 @@ -231,7 +231,7 @@ name = "Mix Virus 3" id = "mixvirus3" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) level_min = 4 level_max = 6 @@ -239,7 +239,7 @@ name = "Mix Virus 4" id = "mixvirus4" - required_reagents = list("uranium" = 1) + required_reagents = list(/datum/reagent/uranium = 1) level_min = 5 level_max = 6 @@ -247,7 +247,7 @@ name = "Mix Virus 5" id = "mixvirus5" - required_reagents = list("mutagenvirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1) level_min = 3 level_max = 3 @@ -255,7 +255,7 @@ name = "Mix Virus 6" id = "mixvirus6" - required_reagents = list("sugarvirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 1) level_min = 4 level_max = 4 @@ -263,7 +263,7 @@ name = "Mix Virus 7" id = "mixvirus7" - required_reagents = list("weakplasmavirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 1) level_min = 5 level_max = 5 @@ -271,7 +271,7 @@ name = "Mix Virus 8" id = "mixvirus8" - required_reagents = list("plasmavirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) level_min = 6 level_max = 6 @@ -279,7 +279,7 @@ name = "Mix Virus 9" id = "mixvirus9" - required_reagents = list("synaptizinevirusfood" = 1) + required_reagents = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1) level_min = 1 level_max = 1 @@ -287,7 +287,7 @@ name = "Mix Virus 10" id = "mixvirus10" - required_reagents = list("uraniumvirusfood" = 1) + required_reagents = list(/datum/reagent/uranium/uraniumvirusfood = 1) level_min = 6 level_max = 7 @@ -295,7 +295,7 @@ name = "Mix Virus 11" id = "mixvirus11" - required_reagents = list("uraniumplasmavirusfood_unstable" = 1) + required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1) level_min = 7 level_max = 7 @@ -303,7 +303,7 @@ name = "Mix Virus 12" id = "mixvirus12" - required_reagents = list("uraniumplasmavirusfood_stable" = 1) + required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) level_min = 8 level_max = 8 @@ -311,8 +311,8 @@ name = "Devolve Virus" id = "remvirus" - required_reagents = list("synaptizine" = 1) - required_catalysts = list("blood" = 1) + required_reagents = list(/datum/reagent/medicine/synaptizine = 1) + required_catalysts = list(/datum/reagent/blood = 1) /datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume) @@ -325,8 +325,8 @@ /datum/chemical_reaction/mix_virus/neuter_virus name = "Neuter Virus" id = "neutervirus" - required_reagents = list("formaldehyde" = 1) - required_catalysts = list("blood" = 1) + required_reagents = list(/datum/reagent/toxin/formaldehyde = 1) + required_catalysts = list(/datum/reagent/blood = 1) /datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume) @@ -344,13 +344,13 @@ /datum/chemical_reaction/surfactant name = "Foam surfactant" id = "foam surfactant" - results = list("fluorosurfactant" = 5) - required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) + results = list(/datum/reagent/fluorosurfactant = 5) + required_reagents = list(/datum/reagent/fluorine = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/foam name = "Foam" id = "foam" - required_reagents = list("fluorosurfactant" = 1, "water" = 1) + required_reagents = list(/datum/reagent/fluorosurfactant = 1, /datum/reagent/water = 1) mob_react = FALSE /datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume) @@ -367,7 +367,7 @@ /datum/chemical_reaction/metalfoam name = "Metal Foam" id = "metalfoam" - required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "facid" = 1) + required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE /datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume) @@ -384,7 +384,7 @@ /datum/chemical_reaction/smart_foam name = "Smart Metal Foam" id = "smart_metal_foam" - required_reagents = list("aluminium" = 3, "smart_foaming_agent" = 1, "facid" = 1) + required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/smart_foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = TRUE /datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, created_volume) @@ -398,7 +398,7 @@ /datum/chemical_reaction/ironfoam name = "Iron Foam" id = "ironlfoam" - required_reagents = list("iron" = 3, "foaming_agent" = 1, "facid" = 1) + required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE /datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) @@ -412,15 +412,15 @@ /datum/chemical_reaction/foaming_agent name = "Foaming Agent" - id = "foaming_agent" - results = list("foaming_agent" = 1) - required_reagents = list("lithium" = 1, "hydrogen" = 1) + id = /datum/reagent/foaming_agent + results = list(/datum/reagent/foaming_agent = 1) + required_reagents = list(/datum/reagent/lithium = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/smart_foaming_agent name = "Smart foaming Agent" - id = "smart_foaming_agent" - results = list("smart_foaming_agent" = 3) - required_reagents = list("foaming_agent" = 3, "acetone" = 1, "iron" = 1) + id = /datum/reagent/smart_foaming_agent + results = list(/datum/reagent/smart_foaming_agent = 3) + required_reagents = list(/datum/reagent/foaming_agent = 3, /datum/reagent/acetone = 1, /datum/reagent/iron = 1) mix_message = "The solution mixes into a frothy metal foam and conforms to the walls of its container." @@ -428,89 +428,89 @@ /datum/chemical_reaction/ammonia name = "Ammonia" - id = "ammonia" - results = list("ammonia" = 3) - required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + id = /datum/reagent/ammonia + results = list(/datum/reagent/ammonia = 3) + required_reagents = list(/datum/reagent/hydrogen = 3, /datum/reagent/nitrogen = 1) /datum/chemical_reaction/diethylamine name = "Diethylamine" - id = "diethylamine" - results = list("diethylamine" = 2) - required_reagents = list ("ammonia" = 1, "ethanol" = 1) + id = /datum/reagent/diethylamine + results = list(/datum/reagent/diethylamine = 2) + required_reagents = list (/datum/reagent/ammonia = 1, /datum/reagent/consumable/ethanol = 1) /datum/chemical_reaction/space_cleaner name = "Space cleaner" - id = "cleaner" - results = list("cleaner" = 2) - required_reagents = list("ammonia" = 1, "water" = 1) + id = /datum/reagent/space_cleaner + results = list(/datum/reagent/space_cleaner = 2) + required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1) /datum/chemical_reaction/plantbgone name = "Plant-B-Gone" - id = "plantbgone" - results = list("plantbgone" = 5) - required_reagents = list("toxin" = 1, "water" = 4) + id = /datum/reagent/toxin/plantbgone + results = list(/datum/reagent/toxin/plantbgone = 5) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/water = 4) /datum/chemical_reaction/weedkiller name = "Weed Killer" - id = "weedkiller" - results = list("weedkiller" = 5) - required_reagents = list("toxin" = 1, "ammonia" = 4) + id = /datum/reagent/toxin/plantbgone/weedkiller + results = list(/datum/reagent/toxin/plantbgone/weedkiller = 5) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/ammonia = 4) /datum/chemical_reaction/pestkiller name = "Pest Killer" - id = "pestkiller" - results = list("pestkiller" = 5) - required_reagents = list("toxin" = 1, "ethanol" = 4) + id = /datum/reagent/toxin/pestkiller + results = list(/datum/reagent/toxin/pestkiller = 5) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/consumable/ethanol = 4) /datum/chemical_reaction/drying_agent name = "Drying agent" - id = "drying_agent" - results = list("drying_agent" = 3) - required_reagents = list("stable_plasma" = 2, "ethanol" = 1, "sodium" = 1) + id = /datum/reagent/drying_agent + results = list(/datum/reagent/drying_agent = 3) + required_reagents = list(/datum/reagent/stable_plasma = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/sodium = 1) //////////////////////////////////// Other goon stuff /////////////////////////////////////////// /datum/chemical_reaction/acetone - name = "acetone" - id = "acetone" - results = list("acetone" = 3) - required_reagents = list("oil" = 1, "welding_fuel" = 1, "oxygen" = 1) + name = /datum/reagent/acetone + id = /datum/reagent/acetone + results = list(/datum/reagent/acetone = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/carpet - name = "carpet" - id = "carpet" - results = list("carpet" = 2) - required_reagents = list("space_drugs" = 1, "blood" = 1) + name = /datum/reagent/carpet + id = /datum/reagent/carpet + results = list(/datum/reagent/carpet = 2) + required_reagents = list(/datum/reagent/drug/space_drugs = 1, /datum/reagent/blood = 1) /datum/chemical_reaction/oil name = "Oil" - id = "oil" - results = list("oil" = 3) - required_reagents = list("welding_fuel" = 1, "carbon" = 1, "hydrogen" = 1) + id = /datum/reagent/oil + results = list(/datum/reagent/oil = 3) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/phenol - name = "phenol" - id = "phenol" - results = list("phenol" = 3) - required_reagents = list("water" = 1, "chlorine" = 1, "oil" = 1) + name = /datum/reagent/phenol + id = /datum/reagent/phenol + results = list(/datum/reagent/phenol = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/chlorine = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/ash name = "Ash" - id = "ash" - results = list("ash" = 1) - required_reagents = list("oil" = 1) + id = /datum/reagent/ash + results = list(/datum/reagent/ash = 1) + required_reagents = list(/datum/reagent/oil = 1) required_temp = 480 /datum/chemical_reaction/colorful_reagent - name = "colorful_reagent" - id = "colorful_reagent" - results = list("colorful_reagent" = 5) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "space_drugs" = 1, "cryoxadone" = 1, "triple_citrus" = 1) + name = /datum/reagent/colorful_reagent + id = /datum/reagent/colorful_reagent + results = list(/datum/reagent/colorful_reagent = 5) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/uranium/radium = 1, /datum/reagent/drug/space_drugs = 1, /datum/reagent/medicine/cryoxadone = 1, /datum/reagent/consumable/triple_citrus = 1) /datum/chemical_reaction/life name = "Life" id = "life" - required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1) + required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/blood = 1) required_temp = 374 /datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume) @@ -519,7 +519,7 @@ /datum/chemical_reaction/life_friendly name = "Life (Friendly)" id = "life_friendly" - required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1) + required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/consumable/sugar = 1) required_temp = 374 /datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume) @@ -528,7 +528,7 @@ /datum/chemical_reaction/corgium name = "corgium" id = "corgium" - required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1) + required_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/blood = 1) required_temp = 374 /datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) @@ -538,57 +538,57 @@ ..() /datum/chemical_reaction/hair_dye - name = "hair_dye" - id = "hair_dye" - results = list("hair_dye" = 5) - required_reagents = list("colorful_reagent" = 1, "radium" = 1, "space_drugs" = 1) + name = /datum/reagent/hair_dye + id = /datum/reagent/hair_dye + results = list(/datum/reagent/hair_dye = 5) + required_reagents = list(/datum/reagent/colorful_reagent = 1, /datum/reagent/uranium/radium = 1, /datum/reagent/drug/space_drugs = 1) /datum/chemical_reaction/barbers_aid - name = "barbers_aid" - id = "barbers_aid" - results = list("barbers_aid" = 5) - required_reagents = list("carpet" = 1, "radium" = 1, "space_drugs" = 1) + name = /datum/reagent/barbers_aid + id = /datum/reagent/barbers_aid + results = list(/datum/reagent/barbers_aid = 5) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/uranium/radium = 1, /datum/reagent/drug/space_drugs = 1) /datum/chemical_reaction/concentrated_barbers_aid - name = "concentrated_barbers_aid" - id = "concentrated_barbers_aid" - results = list("concentrated_barbers_aid" = 2) - required_reagents = list("barbers_aid" = 1, "mutagen" = 1) + name = /datum/reagent/concentrated_barbers_aid + id = /datum/reagent/concentrated_barbers_aid + results = list(/datum/reagent/concentrated_barbers_aid = 2) + required_reagents = list(/datum/reagent/barbers_aid = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/saltpetre - name = "saltpetre" - id = "saltpetre" - results = list("saltpetre" = 3) - required_reagents = list("potassium" = 1, "nitrogen" = 1, "oxygen" = 3) + name = /datum/reagent/saltpetre + id = /datum/reagent/saltpetre + results = list(/datum/reagent/saltpetre = 3) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 3) /datum/chemical_reaction/lye - name = "lye" - id = "lye" - results = list("lye" = 3) - required_reagents = list("sodium" = 1, "hydrogen" = 1, "oxygen" = 1) + name = /datum/reagent/lye + id = /datum/reagent/lye + results = list(/datum/reagent/lye = 3) + required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/lye2 - name = "lye" - id = "lye" - results = list("lye" = 2) - required_reagents = list("ash" = 1, "water" = 1, "carbon" = 1) + name = /datum/reagent/lye + id = /datum/reagent/lye + results = list(/datum/reagent/lye = 2) + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/water = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" - id = "royal_bee_jelly" - results = list("royal_bee_jelly" = 5) - required_reagents = list("mutagen" = 10, "honey" = 40) + id = /datum/reagent/royal_bee_jelly + results = list(/datum/reagent/royal_bee_jelly = 5) + required_reagents = list(/datum/reagent/toxin/mutagen = 10, /datum/reagent/consumable/honey = 40) /datum/chemical_reaction/laughter - name = "laughter" - id = "laughter" - results = list("laughter" = 10) // Fuck it. I'm not touching this one. - required_reagents = list("sugar" = 1, "banana" = 1) + name = /datum/reagent/consumable/laughter + id = /datum/reagent/consumable/laughter + results = list(/datum/reagent/consumable/laughter = 10) // Fuck it. I'm not touching this one. + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/banana = 1) /datum/chemical_reaction/plastic_polymers name = "plastic polymers" - id = "plastic_polymers" - required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3) + id = /datum/reagent/plastic_polymers + required_reagents = list(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, /datum/reagent/ash = 3) required_temp = 374 //lazily consistent with soap & other crafted objects generically created with heat. /datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume) @@ -597,7 +597,7 @@ new /obj/item/stack/sheet/plastic(location) /datum/chemical_reaction/pax - name = "pax" - id = "pax" - results = list("pax" = 3) - required_reagents = list("mindbreaker" = 1, "synaptizine" = 1, "water" = 1) + name = /datum/reagent/pax + id = /datum/reagent/pax + results = list(/datum/reagent/pax = 3) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/water = 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 9bcd615b8773..e8ad481494d8 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -25,21 +25,21 @@ /datum/chemical_reaction/reagent_explosion/nitroglycerin name = "Nitroglycerin" - id = "nitroglycerin" - results = list("nitroglycerin" = 2) - required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1) + id = /datum/reagent/nitroglycerin + results = list(/datum/reagent/nitroglycerin = 2) + required_reagents = list(/datum/reagent/glycerol = 1, /datum/reagent/toxin/acid/fluacid = 1, /datum/reagent/toxin/acid = 1) strengthdiv = 2 /datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("nitroglycerin", created_volume*2) + holder.remove_reagent(/datum/reagent/nitroglycerin, created_volume*2) ..() /datum/chemical_reaction/reagent_explosion/nitroglycerin_explosion name = "Nitroglycerin explosion" id = "nitroglycerin_explosion" - required_reagents = list("nitroglycerin" = 1) + required_reagents = list(/datum/reagent/nitroglycerin = 1) required_temp = 474 strengthdiv = 2 @@ -47,13 +47,13 @@ /datum/chemical_reaction/reagent_explosion/potassium_explosion name = "Explosion" id = "potassium_explosion" - required_reagents = list("water" = 1, "potassium" = 1) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/potassium = 1) strengthdiv = 10 /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom name = "Holy Explosion" id = "holyboom" - required_reagents = list("holywater" = 1, "potassium" = 1) + required_reagents = list(/datum/reagent/water/holywater = 1, /datum/reagent/potassium = 1) /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, created_volume) if(created_volume >= 150) @@ -81,14 +81,14 @@ /datum/chemical_reaction/blackpowder name = "Black Powder" - id = "blackpowder" - results = list("blackpowder" = 3) - required_reagents = list("saltpetre" = 1, "charcoal" = 1, "sulfur" = 1) + id = /datum/reagent/blackpowder + results = list(/datum/reagent/blackpowder = 3) + required_reagents = list(/datum/reagent/saltpetre = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/sulfur = 1) /datum/chemical_reaction/reagent_explosion/blackpowder_explosion name = "Black Powder Kaboom" id = "blackpowder_explosion" - required_reagents = list("blackpowder" = 1) + required_reagents = list(/datum/reagent/blackpowder = 1) required_temp = 474 strengthdiv = 6 modifier = 1 @@ -100,14 +100,14 @@ /datum/chemical_reaction/thermite name = "Thermite" - id = "thermite" - results = list("thermite" = 3) - required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1) + id = /datum/reagent/thermite + results = list(/datum/reagent/thermite = 3) + required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/iron = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/emp_pulse name = "EMP Pulse" id = "emp_pulse" - required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/iron = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense /datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -120,7 +120,7 @@ /datum/chemical_reaction/beesplosion name = "Bee Explosion" id = "beesplosion" - required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1) + required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/uranium/radium = 1) /datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) var/location = holder.my_atom.drop_location() @@ -129,9 +129,8 @@ else playsound(location,'sound/creatures/bee.ogg', 100, TRUE) var/list/beeagents = list() - for(var/X in holder.reagent_list) - var/datum/reagent/R = X - if(required_reagents[R.id]) + for(var/R in holder.reagent_list) + if(required_reagents[R]) continue beeagents += R var/bee_amount = round(created_volume * 0.2) @@ -142,16 +141,16 @@ /datum/chemical_reaction/stabilizing_agent - name = "stabilizing_agent" - id = "stabilizing_agent" - results = list("stabilizing_agent" = 3) - required_reagents = list("iron" = 1, "oxygen" = 1, "hydrogen" = 1) + name = /datum/reagent/stabilizing_agent + id = /datum/reagent/stabilizing_agent + results = list(/datum/reagent/stabilizing_agent = 3) + required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/clf3 name = "Chlorine Trifluoride" - id = "clf3" - results = list("clf3" = 4) - required_reagents = list("chlorine" = 1, "fluorine" = 3) + id = /datum/reagent/clf3 + results = list(/datum/reagent/clf3 = 4) + required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 3) required_temp = 424 /datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume) @@ -164,7 +163,7 @@ name = "Meth explosion" id = "methboom1" required_temp = 380 //slightly above the meth mix time. - required_reagents = list("methamphetamine" = 1) + required_reagents = list(/datum/reagent/drug/methamphetamine = 1) strengthdiv = 6 modifier = 1 mob_react = FALSE @@ -178,19 +177,19 @@ /datum/chemical_reaction/reagent_explosion/methsplosion/methboom2 id = "methboom2" - required_reagents = list("diethylamine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) //diethylamine is often left over from mixing the ephedrine. + required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1) //diethylamine is often left over from mixing the ephedrine. required_temp = 300 //room temperature, chilling it even a little will prevent the explosion /datum/chemical_reaction/sorium name = "Sorium" - id = "sorium" - results = list("sorium" = 4) - required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1) + id = /datum/reagent/sorium + results = list(/datum/reagent/sorium = 4) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/nitrogen = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("sorium", created_volume*4) + holder.remove_reagent(/datum/reagent/sorium, created_volume*4) var/turf/T = get_turf(holder.my_atom) var/range = CLAMP(sqrt(created_volume*4), 1, 6) goonchem_vortex(T, 1, range) @@ -198,7 +197,7 @@ /datum/chemical_reaction/sorium_vortex name = "sorium_vortex" id = "sorium_vortex" - required_reagents = list("sorium" = 1) + required_reagents = list(/datum/reagent/sorium = 1) required_temp = 474 /datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume) @@ -208,14 +207,14 @@ /datum/chemical_reaction/liquid_dark_matter name = "Liquid Dark Matter" - id = "liquid_dark_matter" - results = list("liquid_dark_matter" = 3) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1) + id = /datum/reagent/liquid_dark_matter + results = list(/datum/reagent/liquid_dark_matter = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/uranium/radium = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("liquid_dark_matter", created_volume*3) + holder.remove_reagent(/datum/reagent/liquid_dark_matter, created_volume*3) var/turf/T = get_turf(holder.my_atom) var/range = CLAMP(sqrt(created_volume*3), 1, 6) goonchem_vortex(T, 0, range) @@ -223,7 +222,7 @@ /datum/chemical_reaction/ldm_vortex name = "LDM Vortex" id = "ldm_vortex" - required_reagents = list("liquid_dark_matter" = 1) + required_reagents = list(/datum/reagent/liquid_dark_matter = 1) required_temp = 474 /datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume) @@ -233,12 +232,12 @@ /datum/chemical_reaction/flash_powder name = "Flash powder" - id = "flash_powder" - results = list("flash_powder" = 3) - required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 ) + id = /datum/reagent/flash_powder + results = list(/datum/reagent/flash_powder = 3) + required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/potassium = 1, /datum/reagent/sulfur = 1 ) /datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return var/location = get_turf(holder.my_atom) do_sparks(2, TRUE, location) @@ -252,12 +251,12 @@ C.Paralyze(60) else C.Stun(100) - holder.remove_reagent("flash_powder", created_volume*3) + holder.remove_reagent(/datum/reagent/flash_powder, created_volume*3) /datum/chemical_reaction/flash_powder_flash name = "Flash powder activation" id = "flash_powder_flash" - required_reagents = list("flash_powder" = 1) + required_reagents = list(/datum/reagent/flash_powder = 1) required_temp = 374 /datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) @@ -275,15 +274,15 @@ C.Stun(100) /datum/chemical_reaction/smoke_powder - name = "smoke_powder" - id = "smoke_powder" - results = list("smoke_powder" = 3) - required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) + name = /datum/reagent/smoke_powder + id = /datum/reagent/smoke_powder + results = list(/datum/reagent/smoke_powder = 3) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/phosphorus = 1) /datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("smoke_powder", created_volume*3) + holder.remove_reagent(/datum/reagent/smoke_powder, created_volume*3) var/smoke_radius = round(sqrt(created_volume * 1.5), 1) var/location = get_turf(holder.my_atom) var/datum/effect_system/smoke_spread/chem/S = new @@ -298,7 +297,7 @@ /datum/chemical_reaction/smoke_powder_smoke name = "smoke_powder_smoke" id = "smoke_powder_smoke" - required_reagents = list("smoke_powder" = 1) + required_reagents = list(/datum/reagent/smoke_powder = 1) required_temp = 374 mob_react = FALSE @@ -315,15 +314,15 @@ holder.clear_reagents() /datum/chemical_reaction/sonic_powder - name = "sonic_powder" - id = "sonic_powder" - results = list("sonic_powder" = 3) - required_reagents = list("oxygen" = 1, "cola" = 1, "phosphorus" = 1) + name = /datum/reagent/sonic_powder + id = /datum/reagent/sonic_powder + results = list(/datum/reagent/sonic_powder = 3) + required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, /datum/reagent/phosphorus = 1) /datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("sonic_powder", created_volume*3) + holder.remove_reagent(/datum/reagent/sonic_powder, created_volume*3) var/location = get_turf(holder.my_atom) playsound(location, 'sound/effects/bang.ogg', 25, 1) for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location)) @@ -332,7 +331,7 @@ /datum/chemical_reaction/sonic_powder_deafen name = "sonic_powder_deafen" id = "sonic_powder_deafen" - required_reagents = list("sonic_powder" = 1) + required_reagents = list(/datum/reagent/sonic_powder = 1) required_temp = 374 /datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume) @@ -342,13 +341,13 @@ C.soundbang_act(1, 100, rand(0, 5)) /datum/chemical_reaction/phlogiston - name = "phlogiston" - id = "phlogiston" - results = list("phlogiston" = 3) - required_reagents = list("phosphorus" = 1, "sacid" = 1, "stable_plasma" = 1) + name = /datum/reagent/phlogiston + id = /datum/reagent/phlogiston + results = list(/datum/reagent/phlogiston = 3) + required_reagents = list(/datum/reagent/phosphorus = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/stable_plasma = 1) /datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) @@ -358,15 +357,15 @@ /datum/chemical_reaction/napalm name = "Napalm" - id = "napalm" - results = list("napalm" = 3) - required_reagents = list("oil" = 1, "welding_fuel" = 1, "ethanol" = 1 ) + id = /datum/reagent/napalm + results = list(/datum/reagent/napalm = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1 ) /datum/chemical_reaction/cryostylane - name = "cryostylane" - id = "cryostylane" - results = list("cryostylane" = 3) - required_reagents = list("water" = 1, "stable_plasma" = 1, "nitrogen" = 1) + name = /datum/reagent/cryostylane + id = /datum/reagent/cryostylane + results = list(/datum/reagent/cryostylane = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/nitrogen = 1) /datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // cools the fuck down @@ -375,8 +374,8 @@ /datum/chemical_reaction/cryostylane_oxygen name = "ephemeral cryostylane reaction" id = "cryostylane_oxygen" - results = list("cryostylane" = 1) - required_reagents = list("cryostylane" = 1, "oxygen" = 1) + results = list(/datum/reagent/cryostylane = 1) + required_reagents = list(/datum/reagent/cryostylane = 1, /datum/reagent/oxygen = 1) mob_react = FALSE /datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume) @@ -385,18 +384,18 @@ /datum/chemical_reaction/pyrosium_oxygen name = "ephemeral pyrosium reaction" id = "pyrosium_oxygen" - results = list("pyrosium" = 1) - required_reagents = list("pyrosium" = 1, "oxygen" = 1) + results = list(/datum/reagent/pyrosium = 1) + required_reagents = list(/datum/reagent/pyrosium = 1, /datum/reagent/oxygen = 1) mob_react = FALSE /datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp += 10*created_volume /datum/chemical_reaction/pyrosium - name = "pyrosium" - id = "pyrosium" - results = list("pyrosium" = 3) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "phosphorus" = 1) + name = /datum/reagent/pyrosium + id = /datum/reagent/pyrosium + results = list(/datum/reagent/pyrosium = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/uranium/radium = 1, /datum/reagent/phosphorus = 1) /datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // also cools the fuck down @@ -404,23 +403,23 @@ /datum/chemical_reaction/teslium name = "Teslium" - id = "teslium" - results = list("teslium" = 3) - required_reagents = list("stable_plasma" = 1, "silver" = 1, "blackpowder" = 1) + id = /datum/reagent/teslium + results = list(/datum/reagent/teslium = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/silver = 1, /datum/reagent/blackpowder = 1) mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 /datum/chemical_reaction/energized_jelly name = "Energized Jelly" - id = "energized_jelly" - results = list("energized_jelly" = 2) - required_reagents = list("slimejelly" = 1, "teslium" = 1) + id = /datum/reagent/teslium/energized_jelly + results = list(/datum/reagent/teslium/energized_jelly = 2) + required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/teslium = 1) mix_message = "The slime jelly starts glowing intermittently." /datum/chemical_reaction/reagent_explosion/teslium_lightning name = "Teslium Destabilization" id = "teslium_lightning" - required_reagents = list("teslium" = 1, "water" = 1) + required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1) strengthdiv = 100 modifier = -100 mix_message = "The teslium starts to spark as electricity arcs away from it!" @@ -448,20 +447,20 @@ /datum/chemical_reaction/reagent_explosion/teslium_lightning/heat id = "teslium_lightning2" required_temp = 474 - required_reagents = list("teslium" = 1) + required_reagents = list(/datum/reagent/teslium = 1) /datum/chemical_reaction/reagent_explosion/nitrous_oxide name = "N2O explosion" id = "n2o_explosion" - required_reagents = list("nitrous_oxide" = 1) + required_reagents = list(/datum/reagent/nitrous_oxide = 1) strengthdiv = 7 required_temp = 575 modifier = 1 /datum/chemical_reaction/firefighting_foam name = "Firefighting Foam" - id = "firefighting_foam" - results = list("firefighting_foam" = 3) - required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1) + id = /datum/reagent/firefighting_foam + results = list(/datum/reagent/firefighting_foam = 3) + required_reagents = list(/datum/reagent/stabilizing_agent = 1,/datum/reagent/fluorosurfactant = 1,/datum/reagent/carbon = 1) required_temp = 200 is_cold_recipe = 1 diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 4860dcaf080e..f03acc00428c 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -16,7 +16,7 @@ /datum/chemical_reaction/slime/slimespawn name = "Slime Spawn" id = "m_spawn" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/grey required_other = TRUE @@ -28,15 +28,15 @@ /datum/chemical_reaction/slime/slimeinaprov name = "Slime epinephrine" id = "m_inaprov" - results = list("epinephrine" = 3) - required_reagents = list("water" = 5) + results = list(/datum/reagent/medicine/epinephrine = 3) + required_reagents = list(/datum/reagent/water = 5) required_other = TRUE required_container = /obj/item/slime_extract/grey /datum/chemical_reaction/slime/slimemonkey name = "Slime Monkey" id = "m_monkey" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/grey required_other = TRUE @@ -49,24 +49,24 @@ /datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" id = "slimetoxin" - results = list("slime_toxin" = 1) - required_reagents = list("plasma" = 1) + results = list(/datum/reagent/slime_toxin = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/slimehuman name = "Human Mutation Toxin" id = "humanmuttoxin" - results = list("stablemutationtoxin" = 1) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/mutationtoxin = 1) + required_reagents = list(/datum/reagent/blood = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/slimelizard name = "Lizard Mutation Toxin" id = "lizardmuttoxin" - results = list("lizardmutationtoxin" = 1) - required_reagents = list("radium" = 1) + results = list(/datum/reagent/mutationtoxin/lizard = 1) + required_reagents = list(/datum/reagent/uranium/radium = 1) required_other = TRUE required_container = /obj/item/slime_extract/green @@ -74,7 +74,7 @@ /datum/chemical_reaction/slime/slimemetal name = "Slime Metal" id = "m_metal" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/metal required_other = TRUE @@ -87,7 +87,7 @@ /datum/chemical_reaction/slime/slimeglass name = "Slime Glass" id = "m_glass" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/metal required_other = TRUE @@ -101,7 +101,7 @@ /datum/chemical_reaction/slime/slimemobspawn name = "Slime Crit" id = "m_tele" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/gold required_other = TRUE deletes_extract = FALSE //we do delete, but we don't do so instantly @@ -121,7 +121,7 @@ /datum/chemical_reaction/slime/slimemobspawn/lesser name = "Slime Crit Lesser" id = "m_tele3" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) /datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") @@ -130,7 +130,7 @@ /datum/chemical_reaction/slime/slimemobspawn/friendly name = "Slime Crit Friendly" id = "m_tele5" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) /datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate adorably!") @@ -140,7 +140,7 @@ /datum/chemical_reaction/slime/slimebork name = "Slime Bork" id = "m_tele2" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/silver required_other = TRUE @@ -172,7 +172,7 @@ /datum/chemical_reaction/slime/slimebork/drinks name = "Slime Bork 2" id = "m_tele4" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) /datum/chemical_reaction/slime/slimebork/drinks/getbork() return get_random_drink() @@ -181,15 +181,15 @@ /datum/chemical_reaction/slime/slimefrost name = "Slime Frost Oil" id = "m_frostoil" - results = list("frostoil" = 10) - required_reagents = list("plasma" = 1) + results = list(/datum/reagent/consumable/frostoil = 10) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/blue required_other = TRUE /datum/chemical_reaction/slime/slimestabilizer name = "Slime Stabilizer" id = "m_slimestabilizer" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/blue required_other = TRUE @@ -200,8 +200,8 @@ /datum/chemical_reaction/slime/slimefoam name = "Slime Foam" id = "m_foam" - results = list("fluorosurfactant" = 20, "water" = 20) - required_reagents = list("water" = 5) + results = list(/datum/reagent/fluorosurfactant = 20, /datum/reagent/water = 20) + required_reagents = list(/datum/reagent/water = 5) required_container = /obj/item/slime_extract/blue required_other = TRUE @@ -209,7 +209,7 @@ /datum/chemical_reaction/slime/slimefreeze name = "Slime Freeze" id = "m_freeze" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/darkblue required_other = TRUE deletes_extract = FALSE @@ -232,7 +232,7 @@ /datum/chemical_reaction/slime/slimefireproof name = "Slime Fireproof" id = "m_fireproof" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/darkblue required_other = TRUE @@ -244,15 +244,15 @@ /datum/chemical_reaction/slime/slimecasp name = "Slime Capsaicin Oil" id = "m_capsaicinoil" - results = list("capsaicin" = 10) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/consumable/capsaicin = 10) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/orange required_other = TRUE /datum/chemical_reaction/slime/slimefire name = "Slime fire" id = "m_fire" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/orange required_other = TRUE deletes_extract = FALSE @@ -276,8 +276,8 @@ /datum/chemical_reaction/slime/slimesmoke name = "Slime Smoke" id = "m_smoke" - results = list("phosphorus" = 10, "potassium" = 10, "sugar" = 10) - required_reagents = list("water" = 5) + results = list(/datum/reagent/phosphorus = 10, /datum/reagent/potassium = 10, /datum/reagent/consumable/sugar = 10) + required_reagents = list(/datum/reagent/water = 5) required_container = /obj/item/slime_extract/orange required_other = TRUE @@ -285,7 +285,7 @@ /datum/chemical_reaction/slime/slimeoverload name = "Slime EMP" id = "m_emp" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -296,7 +296,7 @@ /datum/chemical_reaction/slime/slimecell name = "Slime Powercell" id = "m_cell" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -307,7 +307,7 @@ /datum/chemical_reaction/slime/slimeglow name = "Slime Glow" id = "m_glow" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -321,7 +321,7 @@ /datum/chemical_reaction/slime/slimepsteroid name = "Slime Steroid" id = "m_steroid" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/purple required_other = TRUE @@ -332,8 +332,8 @@ /datum/chemical_reaction/slime/slimeregen name = "Slime Regen" id = "m_regen" - results = list("regen_jelly" = 5) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/medicine/regen_jelly = 5) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/purple required_other = TRUE @@ -341,7 +341,7 @@ /datum/chemical_reaction/slime/slimeplasma name = "Slime Plasma" id = "m_plasma" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/darkpurple required_other = TRUE @@ -353,7 +353,7 @@ /datum/chemical_reaction/slime/slimemutator name = "Slime Mutator" id = "m_slimemutator" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -364,7 +364,7 @@ /datum/chemical_reaction/slime/slimebloodlust name = "Bloodlust" id = "m_bloodlust" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -377,7 +377,7 @@ /datum/chemical_reaction/slime/slimespeed name = "Slime Speed" id = "m_speed" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/red required_other = TRUE // yogs start @@ -396,7 +396,7 @@ /datum/chemical_reaction/slime/docility name = "Docility Potion" id = "m_potion" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/pink required_other = TRUE @@ -407,7 +407,7 @@ /datum/chemical_reaction/slime/gender name = "Gender Potion" id = "m_gender" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/pink required_other = TRUE @@ -419,8 +419,8 @@ /datum/chemical_reaction/slime/slimemutate2 name = "Advanced Mutation Toxin" id = "mutationtoxin2" - results = list("amutationtoxin" = 1) - required_reagents = list("plasma" = 1) + results = list(/datum/reagent/aslimetoxin = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/black @@ -428,7 +428,7 @@ /datum/chemical_reaction/slime/slimeexplosion name = "Slime Explosion" id = "m_explosion" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/oil required_other = TRUE deletes_extract = FALSE @@ -457,8 +457,8 @@ /datum/chemical_reaction/slime/slimecornoil name = "Slime Corn Oil" id = "m_cornoil" - results = list("cornoil" = 10) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/consumable/cornoil = 10) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/oil required_other = TRUE @@ -467,7 +467,7 @@ name = "Slime Potion 2" id = "m_potion2" required_container = /obj/item/slime_extract/lightpink - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE /datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder) @@ -478,7 +478,7 @@ name = "Renaming Potion" id = "m_renaming_potion" required_container = /obj/item/slime_extract/lightpink - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_other = TRUE /datum/chemical_reaction/slime/renaming/on_reaction(datum/reagents/holder) @@ -490,7 +490,7 @@ /datum/chemical_reaction/slime/adamantine name = "Adamantine" id = "adamantine" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/adamantine required_other = TRUE @@ -502,7 +502,7 @@ /datum/chemical_reaction/slime/slimefloor2 name = "Bluespace Floor" id = "m_floor2" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -514,7 +514,7 @@ /datum/chemical_reaction/slime/slimecrystal name = "Slime Crystal" id = "m_crystal" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -526,7 +526,7 @@ /datum/chemical_reaction/slime/slimeradio name = "Slime Radio" id = "m_radio" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -538,7 +538,7 @@ /datum/chemical_reaction/slime/slimepsteroid2 name = "Slime Steroid 2" id = "m_steroid2" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/cerulean required_other = TRUE @@ -549,7 +549,7 @@ /datum/chemical_reaction/slime/slime_territory name = "Slime Territory" id = "s_territory" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/cerulean required_other = TRUE @@ -561,7 +561,7 @@ /datum/chemical_reaction/slime/slimestop name = "Slime Stop" id = "m_stop" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -581,7 +581,7 @@ /datum/chemical_reaction/slime/slimecamera name = "Slime Camera" id = "m_camera" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -593,7 +593,7 @@ /datum/chemical_reaction/slime/slimefloor name = "Sepia Floor" id = "m_floor" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -605,7 +605,7 @@ /datum/chemical_reaction/slime/slimepaint name = "Slime Paint" id = "s_paint" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/pyrite required_other = TRUE @@ -617,7 +617,7 @@ /datum/chemical_reaction/slime/slimecrayon name = "Slime Crayon" id = "s_crayon" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/pyrite required_other = TRUE @@ -630,7 +630,7 @@ /datum/chemical_reaction/slime/slimeRNG name = "Random Core" id = "slimerng" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -650,7 +650,7 @@ /datum/chemical_reaction/slime/slimebomb name = "Clusterblorble" id = "slimebomb" - required_reagents = list("slimejelly" = 1) + required_reagents = list(/datum/reagent/toxin/slimejelly = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -666,7 +666,7 @@ /datum/chemical_reaction/slime/slime_transfer name = "Transfer Potion" id = "slimetransfer" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -676,8 +676,8 @@ /datum/chemical_reaction/slime/flight_potion name = "Flight Potion" - id = "flightpotion" - required_reagents = list("holywater" = 5, "uranium" = 5) + id = /datum/reagent/flightpotion + required_reagents = list(/datum/reagent/water/holywater = 5, /datum/reagent/uranium = 5) required_other = TRUE required_container = /obj/item/slime_extract/rainbow diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 5a906bc45410..dbd305d6f822 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -1,128 +1,128 @@ /datum/chemical_reaction/formaldehyde - name = "formaldehyde" + name = /datum/reagent/toxin/formaldehyde id = "Formaldehyde" - results = list("formaldehyde" = 3) - required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) + results = list(/datum/reagent/toxin/formaldehyde = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1, /datum/reagent/silver = 1) required_temp = 420 /datum/chemical_reaction/fentanyl - name = "fentanyl" - id = "fentanyl" - results = list("fentanyl" = 1) - required_reagents = list("space_drugs" = 1) + name = /datum/reagent/toxin/fentanyl + id = /datum/reagent/toxin/fentanyl + results = list(/datum/reagent/toxin/fentanyl = 1) + required_reagents = list(/datum/reagent/drug/space_drugs = 1) required_temp = 674 /datum/chemical_reaction/cyanide name = "Cyanide" - id = "cyanide" - results = list("cyanide" = 3) - required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1) + id = /datum/reagent/toxin/cyanide + results = list(/datum/reagent/toxin/cyanide = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, /datum/reagent/oxygen = 1) required_temp = 380 /datum/chemical_reaction/itching_powder name = "Itching Powder" - id = "itching_powder" - results = list("itching_powder" = 3) - required_reagents = list("welding_fuel" = 1, "ammonia" = 1, "charcoal" = 1) + id = /datum/reagent/toxin/itching_powder + results = list(/datum/reagent/toxin/itching_powder = 3) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/ammonia = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/facid name = "Fluorosulfuric acid" - id = "facid" - results = list("facid" = 4) - required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) + id = /datum/reagent/toxin/acid/fluacid + results = list(/datum/reagent/toxin/acid/fluacid = 4) + required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/fluorine = 1, /datum/reagent/hydrogen = 1, /datum/reagent/potassium = 1) required_temp = 380 /datum/chemical_reaction/sulfonal - name = "sulfonal" - id = "sulfonal" - results = list("sulfonal" = 3) - required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1) + name = /datum/reagent/toxin/sulfonal + id = /datum/reagent/toxin/sulfonal + results = list(/datum/reagent/toxin/sulfonal = 3) + required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/sulfur = 1) /datum/chemical_reaction/lipolicide - name = "lipolicide" - id = "lipolicide" - results = list("lipolicide" = 3) - required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1) + name = /datum/reagent/toxin/lipolicide + id = /datum/reagent/toxin/lipolicide + results = list(/datum/reagent/toxin/lipolicide = 3) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/diethylamine = 1, /datum/reagent/medicine/ephedrine = 1) /datum/chemical_reaction/mutagen name = "Unstable mutagen" - id = "mutagen" - results = list("mutagen" = 3) - required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) + id = /datum/reagent/toxin/mutagen + results = list(/datum/reagent/toxin/mutagen = 3) + required_reagents = list(/datum/reagent/uranium/radium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/lexorin name = "Lexorin" - id = "lexorin" - results = list("lexorin" = 3) - required_reagents = list("plasma" = 1, "hydrogen" = 1, "oxygen" = 1) + id = /datum/reagent/toxin/lexorin + results = list(/datum/reagent/toxin/lexorin = 3) + required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/chloralhydrate name = "Chloral Hydrate" - id = "chloralhydrate" - results = list("chloralhydrate" = 1) - required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) + id = /datum/reagent/toxin/chloralhydrate + results = list(/datum/reagent/toxin/chloralhydrate = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 3, /datum/reagent/water = 1) /datum/chemical_reaction/mutetoxin //i'll just fit this in here snugly between other unfun chemicals :v name = "Mute Toxin" - id = "mutetoxin" - results = list("mutetoxin" = 2) - required_reagents = list("uranium" = 2, "water" = 1, "carbon" = 1) + id = /datum/reagent/toxin/mutetoxin + results = list(/datum/reagent/toxin/mutetoxin = 2) + required_reagents = list(/datum/reagent/uranium = 2, /datum/reagent/water = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/zombiepowder name = "Zombie Powder" - id = "zombiepowder" - results = list("zombiepowder" = 2) - required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5) + id = /datum/reagent/toxin/zombiepowder + results = list(/datum/reagent/toxin/zombiepowder = 2) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/copper = 5) /datum/chemical_reaction/ghoulpowder name = "Ghoul Powder" - id = "ghoulpowder" - results = list("ghoulpowder" = 2) - required_reagents = list("zombiepowder" = 1, "epinephrine" = 1) + id = /datum/reagent/toxin/ghoulpowder + results = list(/datum/reagent/toxin/ghoulpowder = 2) + required_reagents = list(/datum/reagent/toxin/zombiepowder = 1, /datum/reagent/medicine/epinephrine = 1) /datum/chemical_reaction/mindbreaker name = "Mindbreaker Toxin" - id = "mindbreaker" - results = list("mindbreaker" = 5) - required_reagents = list("silicon" = 1, "hydrogen" = 1, "charcoal" = 1) + id = /datum/reagent/toxin/mindbreaker + results = list(/datum/reagent/toxin/mindbreaker = 5) + required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/hydrogen = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/heparin name = "Heparin" id = "Heparin" - results = list("heparin" = 4) - required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1) + results = list(/datum/reagent/toxin/heparin = 4) + required_reagents = list(/datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1, /datum/reagent/lithium = 1) mix_message = "The mixture thins and loses all color." /datum/chemical_reaction/rotatium name = "Rotatium" id = "Rotatium" - results = list("rotatium" = 3) - required_reagents = list("mindbreaker" = 1, "teslium" = 1, "fentanyl" = 1) + results = list(/datum/reagent/toxin/rotatium = 3) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/teslium = 1, /datum/reagent/toxin/fentanyl = 1) mix_message = "After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight." /datum/chemical_reaction/skewium name = "Skewium" id = "Skewium" - results = list("skewium" = 5) - required_reagents = list("rotatium" = 2, "plasma" = 2, "sacid" = 1) + results = list(/datum/reagent/toxin/skewium = 5) + required_reagents = list(/datum/reagent/toxin/rotatium = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/toxin/acid = 1) mix_message = "Wow! it turns out if you mix rotatium with some plasma and sulphuric acid, it gets even worse!" /datum/chemical_reaction/anacea name = "Anacea" - id = "anacea" - results = list("anacea" = 3) - required_reagents = list("haloperidol" = 1, "impedrezene" = 1, "radium" = 1) + id = /datum/reagent/toxin/anacea + results = list(/datum/reagent/toxin/anacea = 3) + required_reagents = list(/datum/reagent/medicine/haloperidol = 1, /datum/reagent/impedrezene = 1, /datum/reagent/uranium/radium = 1) /datum/chemical_reaction/mimesbane name = "Mime's Bane" - id = "mimesbane" - results = list("mimesbane" = 3) - required_reagents = list("radium" = 1, "mutetoxin" = 1, "nothing" = 1) + id = /datum/reagent/toxin/mimesbane + results = list(/datum/reagent/toxin/mimesbane = 3) + required_reagents = list(/datum/reagent/uranium/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1) /datum/chemical_reaction/bonehurtingjuice name = "Bone Hurting Juice" - id = "bonehurtingjuice" - results = list("bonehurtingjuice" = 5) - required_reagents = list("mutagen" = 1, "itching_powder" = 3, "milk" = 1) + id = /datum/reagent/toxin/bonehurtingjuice + results = list(/datum/reagent/toxin/bonehurtingjuice = 5) + required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/toxin/itching_powder = 3, /datum/reagent/consumable/milk = 1) mix_message = "The mixture suddenly becomes clear and looks a lot like water. You feel a strong urge to drink it." diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index bb50428b2ebe..cfc0dd3a80d4 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -21,7 +21,7 @@ if(spawned_disease) var/datum/disease/F = new spawned_disease() var/list/data = list("viruses"= list(F)) - reagents.add_reagent("blood", disease_amount, data) + reagents.add_reagent(/datum/reagent/blood, disease_amount, data) add_initial_reagents() @@ -93,8 +93,7 @@ target.visible_message("[M] has been splashed with something!", \ "[M] has been splashed with something!") for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + R += "[A.type] ([num2text(A.volume)])," if(thrownby) log_combat(thrownby, M, "splashed", R) diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 27765be9c540..9c36fbe3bc75 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -11,12 +11,12 @@ /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) - reagents.add_reagent(unique_blood ? unique_blood : "blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent(unique_blood ? unique_blood : /datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) update_icon() /obj/item/reagent_containers/blood/on_reagent_change(changetype) if(reagents) - var/datum/reagent/blood/B = reagents.has_reagent("blood") + var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) if(B && B.data && B.data["blood_type"]) blood_type = B.data["blood_type"] else @@ -72,7 +72,7 @@ /obj/item/reagent_containers/blood/ethereal blood_type = "LE" - unique_blood = "liquidelectricity" + unique_blood = /datum/reagent/consumable/liquidelectricity /obj/item/reagent_containers/blood/universal blood_type = "U" diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index cc6a0298ae84..1deda349d848 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -26,10 +26,11 @@ Borg Hypospray var/bypass_protection = 0 //If the hypospray can go through armor or thick material var/list/datum/reagents/reagent_list = list() - var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "antitoxin", "epinephrine", "spaceacillin", "salglu_solution") + var/list/reagent_ids = list(/datum/reagent/medicine/dexalin, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/antitoxin, /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution) var/accepts_reagent_upgrades = TRUE //If upgrades can increase number of reagents dispensed. var/list/modes = list() //Basically the inverse of reagent_ids. Instead of having numbers as "keys" and strings as values it has strings as keys and numbers as values. //Used as list for input() in shakers. + var/list/reagent_names = list() /obj/item/reagent_containers/borghypo/Initialize() @@ -56,7 +57,7 @@ Borg Hypospray return 1 // Use this to add more chemicals for the borghypo to produce. -/obj/item/reagent_containers/borghypo/proc/add_reagent(reagent) +/obj/item/reagent_containers/borghypo/proc/add_reagent(datum/reagent/reagent) reagent_ids |= reagent var/datum/reagents/RG = new(30) RG.my_atom = src @@ -66,9 +67,11 @@ Borg Hypospray R.add_reagent(reagent, 30) modes[reagent] = modes.len + 1 + reagent_names[initial(reagent.name)] = reagent -/obj/item/reagent_containers/borghypo/proc/del_reagent(reagent) +/obj/item/reagent_containers/borghypo/proc/del_reagent(datum/reagent/reagent) reagent_ids -= reagent + reagent_names -= initial(reagent.name) var/datum/reagents/RG var/datum/reagents/TRG for(var/i in 1 to reagent_ids.len) @@ -114,7 +117,7 @@ Borg Hypospray log_combat(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])") /obj/item/reagent_containers/borghypo/attack_self(mob/user) - var/chosen_reagent = modes[input(user, "What reagent do you want to dispense?") as null|anything in reagent_ids] + var/chosen_reagent = modes[reagent_names[input(user, "What reagent do you want to dispense?") as null|anything in reagent_names]] if(!chosen_reagent) return mode = chosen_reagent @@ -142,19 +145,19 @@ Borg Hypospray /obj/item/reagent_containers/borghypo/hacked icon_state = "borghypo_s" - reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin") + reagent_ids = list (/datum/reagent/toxin/acid/fluacid, /datum/reagent/toxin/mutetoxin, /datum/reagent/toxin/cyanide, /datum/reagent/toxin/sodium_thiopental, /datum/reagent/toxin/heparin, /datum/reagent/toxin/lexorin) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/clown name = "laughter injector" desc = "Keeps the crew happy and productive!" - reagent_ids = list("laughter") + reagent_ids = list(/datum/reagent/consumable/laughter) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/clown/hacked name = "laughter injector" desc = "Keeps the crew so happy they don't work!" - reagent_ids = list("superlaughter") + reagent_ids = list(/datum/reagent/consumable/superlaughter) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/syndicate @@ -163,7 +166,7 @@ Borg Hypospray icon_state = "borghypo_s" charge_cost = 20 recharge_time = 2 - reagent_ids = list("syndicate_nanites", "potass_iodide", "morphine") + reagent_ids = list(/datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/potass_iodide, /datum/reagent/medicine/morphine) bypass_protection = 1 accepts_reagent_upgrades = FALSE @@ -180,7 +183,7 @@ Borg Shaker recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "milk", "coffee", "banana", "lemonjuice") + reagent_ids = list(/datum/reagent/consumable/ethanol/beer, /datum/reagent/consumable/orangejuice, /datum/reagent/consumable/grenadine, /datum/reagent/consumable/limejuice, /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/space_cola, /datum/reagent/consumable/tonic, /datum/reagent/consumable/sodawater, /datum/reagent/consumable/ice, /datum/reagent/consumable/cream, /datum/reagent/consumable/ethanol/whiskey, /datum/reagent/consumable/ethanol/vodka, /datum/reagent/consumable/ethanol/rum, /datum/reagent/consumable/ethanol/gin, /datum/reagent/consumable/ethanol/tequila, /datum/reagent/consumable/ethanol/vermouth, /datum/reagent/consumable/ethanol/wine, /datum/reagent/consumable/ethanol/kahlua, /datum/reagent/consumable/ethanol/cognac, /datum/reagent/consumable/ethanol/ale, /datum/reagent/consumable/milk, /datum/reagent/consumable/coffee, /datum/reagent/consumable/banana, /datum/reagent/consumable/lemonjuice) /obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user) return //Can't inject stuff with a shaker, can we? //not with that attitude @@ -236,22 +239,22 @@ Borg Shaker recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list("fakebeer", "fernet") + reagent_ids = list(/datum/reagent/toxin/fakebeer, /datum/reagent/consumable/ethanol/fernet) /obj/item/reagent_containers/borghypo/peace name = "Peace Hypospray" - reagent_ids = list("dizzysolution","tiresolution","synthpax") + reagent_ids = list(/datum/reagent/peaceborg/confuse,/datum/reagent/peaceborg/tire,/datum/reagent/pax/peaceborg) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/peace/hacked desc = "Everything's peaceful in death!" icon_state = "borghypo_s" - reagent_ids = list("dizzysolution","tiresolution","synthpax","tirizene","sulfonal","sodium_thiopental","cyanide","fentanyl") + reagent_ids = list(/datum/reagent/peaceborg/confuse,/datum/reagent/peaceborg/tire,/datum/reagent/pax/peaceborg,/datum/reagent/toxin/staminatoxin,/datum/reagent/toxin/sulfonal,/datum/reagent/toxin/sodium_thiopental,/datum/reagent/toxin/cyanide,/datum/reagent/toxin/fentanyl) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/epi name = "epinephrine injector" desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients." - reagent_ids = list("epinephrine") + reagent_ids = list(/datum/reagent/medicine/epinephrine) accepts_reagent_upgrades = FALSE diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 34e2666bc33b..98f5e53a078b 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -43,96 +43,96 @@ /obj/item/reagent_containers/glass/bottle/epinephrine name = "epinephrine bottle" desc = "A small bottle. Contains epinephrine - used to stabilize patients." - list_reagents = list("epinephrine" = 30) + list_reagents = list(/datum/reagent/medicine/epinephrine = 30) /obj/item/reagent_containers/glass/bottle/toxin name = "toxin bottle" desc = "A small bottle of toxins. Do not drink, it is poisonous." - list_reagents = list("toxin" = 30) + list_reagents = list(/datum/reagent/toxin = 30) /obj/item/reagent_containers/glass/bottle/cyanide name = "cyanide bottle" desc = "A small bottle of cyanide. Bitter almonds?" - list_reagents = list("cyanide" = 30) + list_reagents = list(/datum/reagent/toxin/cyanide = 30) /obj/item/reagent_containers/glass/bottle/spewium name = "spewium bottle" desc = "A small bottle of spewium." - list_reagents = list("spewium" = 30) + list_reagents = list(/datum/reagent/toxin/spewium = 30) /obj/item/reagent_containers/glass/bottle/morphine name = "morphine bottle" desc = "A small bottle of morphine." icon = 'icons/obj/chemical.dmi' - list_reagents = list("morphine" = 30) + list_reagents = list(/datum/reagent/medicine/morphine = 30) /obj/item/reagent_containers/glass/bottle/chloralhydrate name = "chloral hydrate bottle" desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" icon_state = "bottle20" - list_reagents = list("chloralhydrate" = 15) + list_reagents = list(/datum/reagent/toxin/chloralhydrate = 15) /obj/item/reagent_containers/glass/bottle/mannitol name = "mannitol bottle" desc = "A small bottle of Mannitol. Useful for healing brain damage." - list_reagents = list("mannitol" = 30) + list_reagents = list(/datum/reagent/medicine/mannitol = 30) /obj/item/reagent_containers/glass/bottle/charcoal name = "charcoal bottle" desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream." - list_reagents = list("charcoal" = 30) + list_reagents = list(/datum/reagent/medicine/charcoal = 30) /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." - list_reagents = list("mutagen" = 30) + list_reagents = list(/datum/reagent/toxin/mutagen = 30) /obj/item/reagent_containers/glass/bottle/plasma name = "liquid plasma bottle" desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood." - list_reagents = list("plasma" = 30) + list_reagents = list(/datum/reagent/toxin/plasma = 30) /obj/item/reagent_containers/glass/bottle/synaptizine name = "synaptizine bottle" desc = "A small bottle of synaptizine." - list_reagents = list("synaptizine" = 30) + list_reagents = list(/datum/reagent/medicine/synaptizine = 30) /obj/item/reagent_containers/glass/bottle/formaldehyde name = "formaldehyde bottle" desc = "A small bottle of formaldehyde." - list_reagents = list("formaldehyde" = 30) + list_reagents = list(/datum/reagent/toxin/formaldehyde = 30) /obj/item/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" desc = "A small bottle of ammonia." - list_reagents = list("ammonia" = 30) + list_reagents = list(/datum/reagent/ammonia = 30) /obj/item/reagent_containers/glass/bottle/diethylamine name = "diethylamine bottle" desc = "A small bottle of diethylamine." - list_reagents = list("diethylamine" = 30) + list_reagents = list(/datum/reagent/diethylamine = 30) /obj/item/reagent_containers/glass/bottle/facid name = "Fluorosulfuric Acid Bottle" desc = "A small bottle. Contains a small amount of fluorosulfuric acid." - list_reagents = list("facid" = 30) + list_reagents = list(/datum/reagent/toxin/acid/fluacid = 30) /obj/item/reagent_containers/glass/bottle/adminordrazine name = "Adminordrazine Bottle" desc = "A small bottle. Contains the liquid essence of the gods." icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" - list_reagents = list("adminordrazine" = 30) + list_reagents = list(/datum/reagent/medicine/adminordrazine = 30) /obj/item/reagent_containers/glass/bottle/capsaicin name = "Capsaicin Bottle" desc = "A small bottle. Contains hot sauce." - list_reagents = list("capsaicin" = 30) + list_reagents = list(/datum/reagent/consumable/capsaicin = 30) /obj/item/reagent_containers/glass/bottle/frostoil name = "Frost Oil Bottle" desc = "A small bottle. Contains cold sauce." - list_reagents = list("frostoil" = 30) + list_reagents = list(/datum/reagent/consumable/frostoil = 30) /obj/item/reagent_containers/glass/bottle/traitor name = "syndicate bottle" @@ -142,94 +142,94 @@ /obj/item/reagent_containers/glass/bottle/traitor/Initialize() . = ..() - extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "fentanyl", "cyanide") + 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/glass/bottle/polonium name = "polonium bottle" desc = "A small bottle. Contains Polonium." - list_reagents = list("polonium" = 30) + list_reagents = list(/datum/reagent/toxin/polonium = 30) /obj/item/reagent_containers/glass/bottle/magillitis name = "magillitis bottle" desc = "A small bottle. Contains a serum known only as 'magillitis'." - list_reagents = list("magillitis" = 5) + list_reagents = list(/datum/reagent/magillitis = 5) /obj/item/reagent_containers/glass/bottle/venom name = "venom bottle" desc = "A small bottle. Contains Venom." - list_reagents = list("venom" = 30) + list_reagents = list(/datum/reagent/toxin/venom = 30) /obj/item/reagent_containers/glass/bottle/fentanyl name = "fentanyl bottle" desc = "A small bottle. Contains Fentanyl." - list_reagents = list("fentanyl" = 30) + list_reagents = list(/datum/reagent/toxin/fentanyl = 30) /obj/item/reagent_containers/glass/bottle/formaldehyde name = "formaldehyde bottle" desc = "A small bottle. Contains Formaldehyde." - list_reagents = list("formaldehyde" = 30) + list_reagents = list(/datum/reagent/toxin/formaldehyde = 30) /obj/item/reagent_containers/glass/bottle/initropidril name = "initropidril bottle" desc = "A small bottle. Contains initropidril." - list_reagents = list("initropidril" = 30) + list_reagents = list(/datum/reagent/toxin/initropidril = 30) /obj/item/reagent_containers/glass/bottle/pancuronium name = "pancuronium bottle" desc = "A small bottle. Contains pancuronium." - list_reagents = list("pancuronium" = 30) + list_reagents = list(/datum/reagent/toxin/pancuronium = 30) /obj/item/reagent_containers/glass/bottle/sodium_thiopental name = "sodium thiopental bottle" desc = "A small bottle. Contains sodium thiopental." - list_reagents = list("sodium_thiopental" = 30) + list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 30) /obj/item/reagent_containers/glass/bottle/coniine name = "coniine bottle" desc = "A small bottle. Contains coniine." - list_reagents = list("coniine" = 30) + list_reagents = list(/datum/reagent/toxin/coniine = 30) /obj/item/reagent_containers/glass/bottle/curare name = "curare bottle" desc = "A small bottle. Contains curare." - list_reagents = list("curare" = 30) + list_reagents = list(/datum/reagent/toxin/curare = 30) /obj/item/reagent_containers/glass/bottle/amanitin name = "amanitin bottle" desc = "A small bottle. Contains amanitin." - list_reagents = list("amanitin" = 30) + list_reagents = list(/datum/reagent/toxin/amanitin = 30) /obj/item/reagent_containers/glass/bottle/histamine name = "histamine bottle" desc = "A small bottle. Contains Histamine." - list_reagents = list("histamine" = 30) + list_reagents = list(/datum/reagent/toxin/histamine = 30) /obj/item/reagent_containers/glass/bottle/diphenhydramine name = "antihistamine bottle" desc = "A small bottle of diphenhydramine." - list_reagents = list("diphenhydramine" = 30) + list_reagents = list(/datum/reagent/medicine/diphenhydramine = 30) /obj/item/reagent_containers/glass/bottle/potass_iodide name = "anti-radiation bottle" desc = "A small bottle of potassium iodide." - list_reagents = list("potass_iodide" = 30) + list_reagents = list(/datum/reagent/medicine/potass_iodide = 30) /obj/item/reagent_containers/glass/bottle/salglu_solution name = "saline-glucose solution bottle" desc = "A small bottle of saline-glucose solution." icon_state = "bottle1" - list_reagents = list("salglu_solution" = 30) + list_reagents = list(/datum/reagent/medicine/salglu_solution = 30) /obj/item/reagent_containers/glass/bottle/atropine name = "atropine bottle" desc = "A small bottle of atropine." - list_reagents = list("atropine" = 30) + list_reagents = list(/datum/reagent/medicine/atropine = 30) /obj/item/reagent_containers/glass/bottle/romerol name = "romerol bottle" desc = "A small bottle of Romerol. The REAL zombie powder." - list_reagents = list("romerol" = 30) + list_reagents = list(/datum/reagent/romerol = 30) /obj/item/reagent_containers/glass/bottle/random_virus name = "Experimental disease culture bottle" @@ -306,106 +306,106 @@ /obj/item/reagent_containers/glass/bottle/tuberculosiscure name = "BVAK bottle" desc = "A small bottle containing Bio Virus Antidote Kit." - list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) + list_reagents = list(/datum/reagent/medicine/atropine = 5, /datum/reagent/medicine/epinephrine = 5, /datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/spaceacillin = 10) //Oldstation.dmm chemical storage bottles /obj/item/reagent_containers/glass/bottle/hydrogen name = "hydrogen bottle" - list_reagents = list("hydrogen" = 30) + list_reagents = list(/datum/reagent/hydrogen = 30) /obj/item/reagent_containers/glass/bottle/lithium name = "lithium bottle" - list_reagents = list("lithium" = 30) + list_reagents = list(/datum/reagent/lithium = 30) /obj/item/reagent_containers/glass/bottle/carbon name = "carbon bottle" - list_reagents = list("carbon" = 30) + list_reagents = list(/datum/reagent/carbon = 30) /obj/item/reagent_containers/glass/bottle/nitrogen name = "nitrogen bottle" - list_reagents = list("nitrogen" = 30) + list_reagents = list(/datum/reagent/nitrogen = 30) /obj/item/reagent_containers/glass/bottle/oxygen name = "oxygen bottle" - list_reagents = list("oxygen" = 30) + list_reagents = list(/datum/reagent/oxygen = 30) /obj/item/reagent_containers/glass/bottle/fluorine name = "fluorine bottle" - list_reagents = list("fluorine" = 30) + list_reagents = list(/datum/reagent/fluorine = 30) /obj/item/reagent_containers/glass/bottle/sodium name = "sodium bottle" - list_reagents = list("sodium" = 30) + list_reagents = list(/datum/reagent/sodium = 30) /obj/item/reagent_containers/glass/bottle/aluminium name = "aluminium bottle" - list_reagents = list("aluminium" = 30) + list_reagents = list(/datum/reagent/aluminium = 30) /obj/item/reagent_containers/glass/bottle/silicon name = "silicon bottle" - list_reagents = list("silicon" = 30) + list_reagents = list(/datum/reagent/silicon = 30) /obj/item/reagent_containers/glass/bottle/phosphorus name = "phosphorus bottle" - list_reagents = list("phosphorus" = 30) + list_reagents = list(/datum/reagent/phosphorus = 30) /obj/item/reagent_containers/glass/bottle/sulfur name = "sulfur bottle" - list_reagents = list("sulfur" = 30) + list_reagents = list(/datum/reagent/sulfur = 30) /obj/item/reagent_containers/glass/bottle/chlorine name = "chlorine bottle" - list_reagents = list("chlorine" = 30) + list_reagents = list(/datum/reagent/chlorine = 30) /obj/item/reagent_containers/glass/bottle/potassium name = "potassium bottle" - list_reagents = list("potassium" = 30) + list_reagents = list(/datum/reagent/potassium = 30) /obj/item/reagent_containers/glass/bottle/iron name = "iron bottle" - list_reagents = list("iron" = 30) + list_reagents = list(/datum/reagent/iron = 30) /obj/item/reagent_containers/glass/bottle/copper name = "copper bottle" - list_reagents = list("copper" = 30) + list_reagents = list(/datum/reagent/copper = 30) /obj/item/reagent_containers/glass/bottle/mercury name = "mercury bottle" - list_reagents = list("mercury" = 30) + list_reagents = list(/datum/reagent/mercury = 30) /obj/item/reagent_containers/glass/bottle/radium name = "radium bottle" - list_reagents = list("radium" = 30) + list_reagents = list(/datum/reagent/uranium/radium = 30) /obj/item/reagent_containers/glass/bottle/water name = "water bottle" - list_reagents = list("water" = 30) + list_reagents = list(/datum/reagent/water = 30) /obj/item/reagent_containers/glass/bottle/ethanol name = "ethanol bottle" - list_reagents = list("ethanol" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol = 30) /obj/item/reagent_containers/glass/bottle/sugar name = "sugar bottle" - list_reagents = list("sugar" = 30) + list_reagents = list(/datum/reagent/consumable/sugar = 30) /obj/item/reagent_containers/glass/bottle/sacid name = "sulphuric acid bottle" - list_reagents = list("sacid" = 30) + list_reagents = list(/datum/reagent/toxin/acid = 30) /obj/item/reagent_containers/glass/bottle/welding_fuel name = "welding fuel bottle" - list_reagents = list("welding_fuel" = 30) + list_reagents = list(/datum/reagent/fuel = 30) /obj/item/reagent_containers/glass/bottle/silver name = "silver bottle" - list_reagents = list("silver" = 30) + list_reagents = list(/datum/reagent/silver = 30) /obj/item/reagent_containers/glass/bottle/iodine name = "iodine bottle" - list_reagents = list("iodine" = 30) + list_reagents = list(/datum/reagent/iodine = 30) /obj/item/reagent_containers/glass/bottle/bromine name = "bromine bottle" - list_reagents = list("bromine" = 30) + list_reagents = list(/datum/reagent/bromine = 30) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 9042584b807b..0a3f486ac47b 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -59,8 +59,7 @@ var/viruslist = "" // yogs - adds viruslist variable if(reagents) for(var/datum/reagent/A in src.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + R += "[A] ([num2text(A.volume)])," // yogs start - checks blood for disease if(istype(A, /datum/reagent/blood)) var/datum/reagent/blood/RR = A diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 7bd0febbc83a..20a2ded0d9e0 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -26,8 +26,8 @@ "[user] splashes the contents of [src] onto [M]!") if(reagents) for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + R += "[A] ([num2text(A.volume)])," + if(isturf(target) && reagents.reagent_list.len && thrownby) log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") @@ -213,32 +213,32 @@ possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) /obj/item/reagent_containers/glass/beaker/cryoxadone - list_reagents = list("cryoxadone" = 30) + list_reagents = list(/datum/reagent/medicine/cryoxadone = 30) /obj/item/reagent_containers/glass/beaker/sulphuric - list_reagents = list("sacid" = 50) + list_reagents = list(/datum/reagent/toxin/acid = 50) /obj/item/reagent_containers/glass/beaker/slime - list_reagents = list("slimejelly" = 50) + list_reagents = list(/datum/reagent/toxin/slimejelly = 50) /obj/item/reagent_containers/glass/beaker/large/styptic name = "styptic reserve tank" - list_reagents = list("styptic_powder" = 50) + list_reagents = list(/datum/reagent/medicine/styptic_powder = 50) /obj/item/reagent_containers/glass/beaker/large/silver_sulfadiazine name = "silver sulfadiazine reserve tank" - list_reagents = list("silver_sulfadiazine" = 50) + list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 50) /obj/item/reagent_containers/glass/beaker/large/charcoal name = "charcoal reserve tank" - list_reagents = list("charcoal" = 50) + list_reagents = list(/datum/reagent/medicine/charcoal = 50) /obj/item/reagent_containers/glass/beaker/large/epinephrine name = "epinephrine reserve tank" - list_reagents = list("epinephrine" = 50) + list_reagents = list(/datum/reagent/medicine/epinephrine = 50) /obj/item/reagent_containers/glass/beaker/synthflesh - list_reagents = list("synthflesh" = 50) + list_reagents = list(/datum/reagent/medicine/synthflesh = 50) /obj/item/reagent_containers/glass/bucket name = "bucket" @@ -312,7 +312,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "smallbottle" item_state = "bottle" - list_reagents = list("water" = 49.5, "fluorine" = 0.5)//see desc, don't think about it too hard + list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard materials = list(MAT_GLASS=0) volume = 50 amount_per_transfer_from_this = 10 @@ -324,9 +324,72 @@ desc = "A fresh commercial-sized bottle of water." icon_state = "largebottle" materials = list(MAT_GLASS=0) - list_reagents = list("water" = 100) + list_reagents = list(/datum/reagent/water = 100) volume = 100 amount_per_transfer_from_this = 20 /obj/item/reagent_containers/glass/beaker/waterbottle/large/empty list_reagents = list() + +/obj/item/pestle + name = "pestle" + desc = "An ancient, simple tool used in conjunction with a mortar to grind or juice items." + icon = 'icons/obj/chemical.dmi' + icon_state = "pestle" + force = 7 + +/obj/item/reagent_containers/glass/mortar + name = "mortar" + desc = "A specially formed bowl of ancient design. It is possible to crush or juice items placed in it using a pestle; however the process, unlike modern methods, is slow and physically exhausting. Alt click to eject the item." + icon_state = "mortar" + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50, 100) + volume = 100 + reagent_flags = OPENCONTAINER + spillable = TRUE + var/obj/item/grinded + +/obj/item/reagent_containers/glass/mortar/AltClick(mob/user) + if(grinded) + grinded.forceMove(drop_location()) + grinded = null + to_chat(user, "You eject the item inside.") + +/obj/item/reagent_containers/glass/mortar/attackby(obj/item/I, mob/living/carbon/human/user) + ..() + if(istype(I,/obj/item/pestle)) + if(grinded) + if(user.getStaminaLoss() > 50) + to_chat(user, "You are too tired to work!") + return + to_chat(user, "You start grinding...") + if((do_after(user, 25, target = src)) && grinded) + user.adjustStaminaLoss(40) + if(grinded.juice_results) //prioritize juicing + grinded.on_juice() + reagents.add_reagent_list(grinded.juice_results) + to_chat(user, "You juice [grinded] into a fine liquid.") + QDEL_NULL(grinded) + return + grinded.on_grind() + reagents.add_reagent_list(grinded.grind_results) + to_chat(user, "You break [grinded] into powder.") + QDEL_NULL(grinded) + return + return + else + to_chat(user, "There is nothing to grind!") + return + if(grinded) + to_chat(user, "There is something inside already!") + return + if(I.juice_results || I.grind_results) + I.forceMove(src) + grinded = I + return + to_chat(user, "You can't grind this!") + +/obj/item/reagent_containers/glass/saline + name = "saline canister" + volume = 5000 + list_reagents = list(/datum/reagent/medicine/salglu_solution = 5000) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 8c8ad71d4370..a5e7910f3d9d 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -69,7 +69,7 @@ log_game("[user.real_name] ([user.ckey]) injected [M.real_name] ([M.ckey]) with [viruslist]") // yogs end /obj/item/reagent_containers/hypospray/CMO - list_reagents = list("omnizine" = 30) + list_reagents = list(/datum/reagent/medicine/omnizine = 30) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/item/reagent_containers/hypospray/combat @@ -79,12 +79,12 @@ icon_state = "combat_hypo" volume = 90 ignore_flags = 1 // So they can heal their comrades. - list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/omnizine = 30, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) /obj/item/reagent_containers/hypospray/combat/nanites desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with experimental medical compounds for rapid healing." volume = 100 - list_reagents = list("quantum_heal" = 80, "synaptizine" = 20) + list_reagents = list(/datum/reagent/medicine/adminordrazine/quantum_heal = 80, /datum/reagent/medicine/synaptizine = 20) /obj/item/reagent_containers/hypospray/magillitis name = "experimental autoinjector" @@ -92,7 +92,7 @@ icon_state = "combat_hypo" volume = 5 reagent_flags = NONE - list_reagents = list("magillitis" = 5) + list_reagents = list(/datum/reagent/magillitis = 5) //MediPens @@ -108,7 +108,7 @@ ignore_flags = 1 //so you can medipen through hardsuits reagent_flags = DRAWABLE flags_1 = null - list_reagents = list("epinephrine" = 10) + list_reagents = list(/datum/reagent/medicine/epinephrine = 10) custom_price = 40 /obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) @@ -152,16 +152,16 @@ icon_state = "stimpen" volume = 20 amount_per_transfer_from_this = 20 - list_reagents = list("ephedrine" = 10, "coffee" = 10) + list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/consumable/coffee = 10) /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect." - list_reagents = list("stimulants" = 10, "omnizine" = 10) + list_reagents = list(/datum/reagent/medicine/stimulants = 10, /datum/reagent/medicine/omnizine = 10) /obj/item/reagent_containers/hypospray/medipen/morphine name = "morphine medipen" desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though." - list_reagents = list("morphine" = 10) + list_reagents = list(/datum/reagent/medicine/morphine = 10) /obj/item/reagent_containers/hypospray/medipen/tuberculosiscure name = "BVAK autoinjector" @@ -169,7 +169,7 @@ icon_state = "stimpen" volume = 60 amount_per_transfer_from_this = 30 - list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20) + list_reagents = list(/datum/reagent/medicine/atropine = 10, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/salbutamol = 20, /datum/reagent/medicine/spaceacillin = 20) /obj/item/reagent_containers/hypospray/medipen/survival name = "survival medipen" @@ -177,7 +177,7 @@ icon_state = "stimpen" volume = 57 amount_per_transfer_from_this = 57 - list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "lavaland_extract" = 2, "omnizine" = 5) + list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/tricordrazine = 15, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2, /datum/reagent/medicine/omnizine = 5) /obj/item/reagent_containers/hypospray/medipen/species_mutator name = "species mutator medipen" @@ -185,22 +185,22 @@ literally appropriating other races." volume = 1 amount_per_transfer_from_this = 1 - list_reagents = list("unstablemutationtoxin" = 1) + list_reagents = list(/datum/reagent/toxin/mutagen = 1) /obj/item/reagent_containers/hypospray/combat/heresypurge name = "holy water autoinjector" desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with 5 doses of a holy water mixture." volume = 250 - list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50) + list_reagents = list(/datum/reagent/water/holywater = 150, /datum/reagent/peaceborg/tire = 50, /datum/reagent/peaceborg/confuse = 50) amount_per_transfer_from_this = 50 /obj/item/reagent_containers/hypospray/medipen/atropine name = "atropine autoinjector" desc = "A rapid way to save a person from a critical injury state!" - list_reagents = list("atropine" = 10) + list_reagents = list(/datum/reagent/medicine/atropine = 10) -/obj/item/reagent_containers/hypospray/medipen/snail +/*/obj/item/reagent_containers/hypospray/medipen/snail name = "snail shot" desc = "All-purpose snail medicine! Do not use on non-snails!" - list_reagents = list("snailserum" = 10) - icon_state = "snail" \ No newline at end of file + list_reagents = list(/datum/reagent/snail = 10) + icon_state = "snail" */ //yogs we removed snail people cause we are bad people who hate fun \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index acfe324c07e5..9335b88af77b 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -72,22 +72,22 @@ name = "medical spray (styptic powder)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains styptic powder, for treating cuts and bruises." icon_state = "brutespray" - list_reagents = list("styptic_powder" = 60) + list_reagents = list(/datum/reagent/medicine/styptic_powder = 60) /obj/item/reagent_containers/medspray/silver_sulf name = "medical spray (silver sulfadiazine)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains silver sulfadiazine, useful for treating burns." icon_state = "burnspray" - list_reagents = list("silver_sulfadiazine" = 60) + list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 60) /obj/item/reagent_containers/medspray/synthflesh name = "medical spray (synthflesh)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains synthflesh, an apex brute and burn healing agent." icon_state = "synthspray" - list_reagents = list("synthflesh" = 60) + list_reagents = list(/datum/reagent/medicine/synthflesh = 60) custom_price = 80 /obj/item/reagent_containers/medspray/sterilizine name = "sterilizer spray" desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery." - list_reagents = list("sterilizine" = 60) + list_reagents = list(/datum/reagent/space_cleaner/sterilizine = 60) diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 370d7f6475d6..fd05482daa67 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -30,17 +30,17 @@ /obj/item/reagent_containers/pill/patch/styptic name = "brute patch" desc = "Helps with brute injuries." - list_reagents = list("styptic_powder" = 20) + list_reagents = list(/datum/reagent/medicine/styptic_powder = 20) icon_state = "bandaid_brute" /obj/item/reagent_containers/pill/patch/silver_sulf name = "burn patch" desc = "Helps with burn injuries." - list_reagents = list("silver_sulfadiazine" = 20) + list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 20) icon_state = "bandaid_burn" /obj/item/reagent_containers/pill/patch/synthflesh name = "synthflesh patch" desc = "Helps with brute and burn injuries." - list_reagents = list("synthflesh" = 20) + list_reagents = list(/datum/reagent/medicine/synthflesh = 20) icon_state = "bandaid_both" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 7783c7849e33..56229fbaa829 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -80,108 +80,108 @@ name = "toxins pill" desc = "Highly toxic." icon_state = "pill5" - list_reagents = list("toxin" = 50) + list_reagents = list(/datum/reagent/toxin = 50) rename_with_volume = TRUE /obj/item/reagent_containers/pill/cyanide name = "cyanide pill" desc = "Don't swallow this." icon_state = "pill5" - list_reagents = list("cyanide" = 50) + list_reagents = list(/datum/reagent/toxin/cyanide = 50) /obj/item/reagent_containers/pill/adminordrazine name = "adminordrazine pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" - list_reagents = list("adminordrazine" = 50) + list_reagents = list(/datum/reagent/medicine/adminordrazine = 50) /obj/item/reagent_containers/pill/morphine name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" - list_reagents = list("morphine" = 30) + list_reagents = list(/datum/reagent/medicine/morphine = 30) rename_with_volume = TRUE /obj/item/reagent_containers/pill/stimulant name = "stimulant pill" desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" icon_state = "pill19" - list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30) + list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/medicine/antihol = 10, /datum/reagent/consumable/coffee = 30) /obj/item/reagent_containers/pill/salbutamol name = "salbutamol pill" desc = "Used to treat oxygen deprivation." icon_state = "pill16" - list_reagents = list("salbutamol" = 30) + list_reagents = list(/datum/reagent/medicine/salbutamol = 30) rename_with_volume = TRUE /obj/item/reagent_containers/pill/charcoal name = "charcoal pill" desc = "Neutralizes many common toxins." icon_state = "pill17" - list_reagents = list("charcoal" = 10) + list_reagents = list(/datum/reagent/medicine/charcoal = 10) rename_with_volume = TRUE /obj/item/reagent_containers/pill/epinephrine name = "epinephrine pill" desc = "Used to stabilize patients." icon_state = "pill5" - list_reagents = list("epinephrine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 15) rename_with_volume = TRUE /obj/item/reagent_containers/pill/mannitol name = "mannitol pill" desc = "Used to treat brain damage." icon_state = "pill17" - list_reagents = list("mannitol" = 50) + list_reagents = list(/datum/reagent/medicine/mannitol = 50) rename_with_volume = TRUE /obj/item/reagent_containers/pill/mutadone name = "mutadone pill" desc = "Used to treat genetic damage." icon_state = "pill20" - list_reagents = list("mutadone" = 50) + list_reagents = list(/datum/reagent/medicine/mutadone = 50) rename_with_volume = TRUE /obj/item/reagent_containers/pill/salicyclic name = "salicylic acid pill" desc = "Used to dull pain." icon_state = "pill9" - list_reagents = list("sal_acid" = 24) + list_reagents = list(/datum/reagent/medicine/sal_acid = 24) rename_with_volume = TRUE /obj/item/reagent_containers/pill/oxandrolone name = "oxandrolone pill" desc = "Used to stimulate burn healing." icon_state = "pill11" - list_reagents = list("oxandrolone" = 24) + list_reagents = list(/datum/reagent/medicine/oxandrolone = 24) rename_with_volume = TRUE /obj/item/reagent_containers/pill/insulin name = "insulin pill" desc = "Handles hyperglycaemic coma." icon_state = "pill18" - list_reagents = list("insulin" = 50) + list_reagents = list(/datum/reagent/medicine/insulin = 50) rename_with_volume = TRUE /obj/item/reagent_containers/pill/psicodine name = "psicodine pill" desc = "Used to treat mental instability and phobias." - list_reagents = list("psicodine" = 10) + list_reagents = list(/datum/reagent/medicine/psicodine = 10) icon_state = "pill22" rename_with_volume = TRUE /obj/item/reagent_containers/pill/penacid name = "pentetic acid pill" desc = "Used to expunge radiation and toxins." - list_reagents = list("pen_acid" = 10) + list_reagents = list(/datum/reagent/medicine/pen_acid = 10) icon_state = "pill22" rename_with_volume = TRUE /obj/item/reagent_containers/pill/neurine name = "neurine pill" desc = "Used to treat non-severe mental traumas." - list_reagents = list("neurine" = 10) + list_reagents = list(/datum/reagent/medicine/neurine = 10) icon_state = "pill22" rename_with_volume = TRUE @@ -191,41 +191,41 @@ desc = "I wouldn't eat this if I were you." icon_state = "pill9" color = "#454545" - list_reagents = list("shadowmutationtoxin" = 1) + list_reagents = list(/datum/reagent/mutationtoxin/shadow = 1) //////////////////////////////////////// drugs /obj/item/reagent_containers/pill/zoom name = "yellow pill" desc = "A poorly made canary-yellow pill; it is slightly crumbly." - list_reagents = list("synaptizine" = 10, "nicotine" = 10, "methamphetamine" = 1) + list_reagents = list(/datum/reagent/medicine/synaptizine = 10, /datum/reagent/drug/nicotine = 10, /datum/reagent/drug/methamphetamine = 1) icon_state = "pill7" /obj/item/reagent_containers/pill/happy name = "happy pill" desc = "They have little happy faces on them, and they smell like marker pens." - list_reagents = list("sugar" = 10, "space_drugs" = 10) + list_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/drug/space_drugs = 10) icon_state = "pill_happy" /obj/item/reagent_containers/pill/lsd name = "sunshine pill" desc = "Engraved on this split-coloured pill is a half-sun, half-moon." - list_reagents = list("mushroomhallucinogen" = 15, "mindbreaker" = 15) + list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15) icon_state = "pill14" /obj/item/reagent_containers/pill/aranesp name = "smooth pill" desc = "This blue pill is feels slightly moist." - list_reagents = list("aranesp" = 10) + list_reagents = list(/datum/reagent/drug/aranesp = 10) icon_state = "pill3" /obj/item/reagent_containers/pill/happiness name = "happiness pill" desc = "It has a creepy smiling face on it." icon_state = "pill_happy" - list_reagents = list("happiness" = 10) + list_reagents = list(/datum/reagent/drug/happiness = 10) /obj/item/reagent_containers/pill/floorpill name = "floorpill" diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index ff0489c32438..5ebe29144c11 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -183,7 +183,7 @@ name = "space cleaner" desc = "BLAM!-brand non-foaming space cleaner!" volume = 100 - list_reagents = list("cleaner" = 100) + list_reagents = list(/datum/reagent/space_cleaner = 100) amount_per_transfer_from_this = 2 stream_amount = 5 @@ -206,7 +206,7 @@ name = "spray tan" volume = 50 desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices." - list_reagents = list("spraytan" = 50) + list_reagents = list(/datum/reagent/spraytan = 50) //pepperspray @@ -221,7 +221,7 @@ volume = 40 stream_range = 4 amount_per_transfer_from_this = 5 - list_reagents = list("condensedcapsaicin" = 40) + list_reagents = list(/datum/reagent/consumable/condensedcapsaicin = 40) /obj/item/reagent_containers/spray/pepper/empty //for protolathe printing list_reagents = null @@ -245,7 +245,7 @@ item_state = "sunflower" amount_per_transfer_from_this = 1 volume = 10 - list_reagents = list("water" = 10) + list_reagents = list(/datum/reagent/water = 10) /obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays return @@ -253,9 +253,9 @@ /obj/item/reagent_containers/spray/waterflower/cyborg reagent_flags = NONE volume = 100 - list_reagents = list("water" = 100) + list_reagents = list(/datum/reagent/water = 100) var/generate_amount = 5 - var/generate_type = "water" + var/generate_type = /datum/reagent/water var/last_generate = 0 var/generate_delay = 10 //deciseconds can_fill_from_container = FALSE @@ -263,9 +263,9 @@ /obj/item/reagent_containers/spray/waterflower/cyborg/hacked name = "nova flower" desc = "This doesn't look safe at all..." - list_reagents = list("clf3" = 3) + list_reagents = list(/datum/reagent/clf3 = 3) volume = 3 - generate_type = "clf3" + generate_type = /datum/reagent/clf3 generate_amount = 1 generate_delay = 40 //deciseconds @@ -327,7 +327,7 @@ ..(the_targets[i], user) /obj/item/reagent_containers/spray/chemsprayer/bioterror - list_reagents = list("sodium_thiopental" = 100, "coniine" = 100, "venom" = 100, "condensedcapsaicin" = 100, "initropidril" = 100, "polonium" = 100) + list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 100, /datum/reagent/toxin/coniine = 100, /datum/reagent/toxin/venom = 100, /datum/reagent/consumable/condensedcapsaicin = 100, /datum/reagent/toxin/initropidril = 100, /datum/reagent/toxin/polonium = 100) /obj/item/reagent_containers/spray/chemsprayer/janitor @@ -338,11 +338,11 @@ lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' reagent_flags = NONE - list_reagents = list("cleaner" = 1000) + list_reagents = list(/datum/reagent/space_cleaner = 1000) volume = 1000 amount_per_transfer_from_this = 5 var/generate_amount = 50 - var/generate_type = "cleaner" + var/generate_type = /datum/reagent/space_cleaner var/last_generate = 0 var/generate_delay = 10 //deciseconds @@ -370,4 +370,4 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list("plantbgone" = 100) + list_reagents = list(/datum/reagent/toxin/plantbgone = 100) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index cbd5f911d5b8..0785843958c0 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -196,39 +196,39 @@ /obj/item/reagent_containers/syringe/epinephrine name = "syringe (epinephrine)" desc = "Contains epinephrine - used to stabilize patients." - list_reagents = list("epinephrine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 15) /obj/item/reagent_containers/syringe/charcoal name = "syringe (charcoal)" desc = "Contains charcoal." - list_reagents = list("charcoal" = 15) + list_reagents = list(/datum/reagent/medicine/charcoal = 15) /obj/item/reagent_containers/syringe/antiviral name = "syringe (spaceacillin)" desc = "Contains antiviral agents." - list_reagents = list("spaceacillin" = 15) + list_reagents = list(/datum/reagent/medicine/spaceacillin = 15) /obj/item/reagent_containers/syringe/bioterror name = "bioterror syringe" desc = "Contains several paralyzing reagents." - list_reagents = list("neurotoxin" = 5, "mutetoxin" = 5, "sodium_thiopental" = 5) + list_reagents = list(/datum/reagent/consumable/ethanol/neurotoxin = 5, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/toxin/sodium_thiopental = 5) /obj/item/reagent_containers/syringe/stimulants name = "Stimpack" desc = "Contains stimulants." amount_per_transfer_from_this = 50 volume = 50 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/syringe/calomel name = "syringe (calomel)" desc = "Contains calomel." - list_reagents = list("calomel" = 15) + list_reagents = list(/datum/reagent/medicine/calomel = 15) /obj/item/reagent_containers/syringe/plasma name = "syringe (plasma)" desc = "Contains plasma." - list_reagents = list("plasma" = 15) + list_reagents = list(/datum/reagent/toxin/plasma = 15) /obj/item/reagent_containers/syringe/lethal name = "lethal injection syringe" @@ -237,24 +237,24 @@ volume = 50 /obj/item/reagent_containers/syringe/lethal/choral - list_reagents = list("chloralhydrate" = 50) + list_reagents = list(/datum/reagent/toxin/chloralhydrate = 50) /obj/item/reagent_containers/syringe/lethal/execution - list_reagents = list("plasma" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10) + list_reagents = list(/datum/reagent/toxin/plasma = 15, /datum/reagent/toxin/formaldehyde = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) /obj/item/reagent_containers/syringe/mulligan name = "Mulligan" desc = "A syringe used to completely change the users identity." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list("mulligan" = 1) + list_reagents = list(/datum/reagent/mulligan = 1) /obj/item/reagent_containers/syringe/gluttony name = "Gluttony's Blessing" desc = "A syringe recovered from a dread place. It probably isn't wise to use." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list("gluttonytoxin" = 1) + list_reagents = list(/datum/reagent/gluttonytoxin = 1) /obj/item/reagent_containers/syringe/bluespace name = "bluespace syringe" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index e5559cace6f4..8a837b6d2be4 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -8,7 +8,7 @@ pressure_resistance = 2*ONE_ATMOSPHERE max_integrity = 300 var/tank_volume = 1000 //In units, how much the dispenser can hold - var/reagent_id = "water" //The ID of the reagent that the dispenser uses + var/reagent_id = /datum/reagent/water //The ID of the reagent that the dispenser uses /obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() @@ -54,14 +54,14 @@ name = "firefighting foam tank" desc = "A tank full of firefighting foam." icon_state = "foam" - reagent_id = "firefighting_foam" + reagent_id = /datum/reagent/firefighting_foam tank_volume = 500 /obj/structure/reagent_dispensers/fueltank name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." icon_state = "fuel" - reagent_id = "welding_fuel" + reagent_id = /datum/reagent/fuel /obj/structure/reagent_dispensers/fueltank/boom() explosion(get_turf(src), 0, 1, 5, flame_range = 5) @@ -89,12 +89,12 @@ /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params) if(I.tool_behaviour == TOOL_WELDER) - if(!reagents.has_reagent("welding_fuel")) + if(!reagents.has_reagent(/datum/reagent/fuel)) to_chat(user, "[src] is out of fuel!") return var/obj/item/weldingtool/W = I if(!W.welding) - if(W.reagents.has_reagent("welding_fuel", W.max_fuel)) + if(W.reagents.has_reagent(/datum/reagent/fuel, W.max_fuel)) to_chat(user, "Your [W.name] is already full!") return reagents.trans_to(W, W.max_fuel, transfered_by = user) @@ -117,7 +117,7 @@ icon_state = "pepper" anchored = TRUE density = FALSE - reagent_id = "condensedcapsaicin" + reagent_id = /datum/reagent/consumable/condensedcapsaicin /obj/structure/reagent_dispensers/peppertank/Initialize() . = ..() @@ -159,7 +159,7 @@ name = "beer keg" desc = "Beer is liquid bread, it's good for you..." icon_state = "beer" - reagent_id = "beer" + reagent_id = /datum/reagent/consumable/ethanol/beer /obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B) explosion(src.loc,0,3,5,7,10) @@ -173,7 +173,7 @@ icon_state = "virus_food" anchored = TRUE density = FALSE - reagent_id = "virusfood" + reagent_id = /datum/reagent/consumable/virus_food /obj/structure/reagent_dispensers/cooking_oil @@ -181,4 +181,4 @@ desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food." icon_state = "vat" anchored = TRUE - reagent_id = "cooking_oil" + reagent_id = /datum/reagent/consumable/cooking_oil diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index ec79c38742a6..04c7a63f9d89 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -4,18 +4,18 @@ /datum/design/milk name = "10 Milk" - id = "milk" + id = /datum/reagent/consumable/milk build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 20) - make_reagents = list("milk" = 10) + make_reagents = list(/datum/reagent/consumable/milk = 10) category = list("initial","Food") /datum/design/cream name = "10 Cream" - id = "cream" + id = /datum/reagent/consumable/cream build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 30) - make_reagents = list("cream" = 10) + make_reagents = list(/datum/reagent/consumable/cream = 10) category = list("initial","Food") /datum/design/milk_carton @@ -39,7 +39,7 @@ id = "black_pepper" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 25) - make_reagents = list("blackpepper" = 10) + make_reagents = list(/datum/reagent/consumable/blackpepper = 10) category = list("initial","Food") /datum/design/pepper_mill @@ -53,10 +53,10 @@ /datum/design/enzyme name = "10u Universal Enzyme" - id = "enzyme" + id = /datum/reagent/consumable/enzyme build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 30) - make_reagents = list("enzyme" = 10) + make_reagents = list(/datum/reagent/consumable/enzyme = 10) category = list("initial","Food") /datum/design/flour_sack diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index 71f7234e3497..954dfca65866 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -6,7 +6,7 @@ name = "Left Arm" id = "leftarm" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/l_arm category = list("initial","human","lizard","fly","moth","plasmaman") @@ -14,7 +14,7 @@ name = "Right Arm" id = "rightarm" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/r_arm category = list("initial","human","lizard","fly","moth","plasmaman") @@ -22,7 +22,7 @@ name = "Left Leg" id = "leftleg" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/l_leg category = list("initial","human","lizard","fly","moth","plasmaman") @@ -30,7 +30,7 @@ name = "Right Leg" id = "rightleg" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/r_leg category = list("initial","human","lizard","fly","moth","plasmaman") @@ -38,6 +38,6 @@ name = "Arm Blade" id = "armblade" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 75) + reagents_list = list(/datum/reagent/medicine/synthflesh = 75) build_path = /obj/item/melee/synthetic_arm_blade category = list("other","emagged") \ No newline at end of file diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 2f194795855f..4b145318bc34 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -110,7 +110,7 @@ id = "decloner" build_type = PROTOLATHE materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000) - reagents_list = list("mutagen" = 40) + reagents_list = list(/datum/reagent/toxin/mutagen = 40) build_path = /obj/item/gun/energy/decloner category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -141,7 +141,7 @@ id = "flora_gun" build_type = PROTOLATHE materials = list(MAT_METAL = 2000, MAT_GLASS = 500) - reagents_list = list("radium" = 20) + reagents_list = list(/datum/reagent/uranium/radium = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SERVICE diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index bd33334a925d..a48a9623706b 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -289,7 +289,7 @@ if(!T.density) if(prob(EFFECT_PROB_VERYHIGH) && !(locate(/obj/effect/decal/cleanable/greenglow) in T)) var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T) - reagentdecal.reagents.add_reagent("radium", 7) + reagentdecal.reagents.add_reagent(/datum/reagent/uranium/radium, 7) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -309,7 +309,7 @@ new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src)))) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] destroys [exp_on], leaking dangerous gas!") - chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash") + chosenchem = pick(/datum/reagent/carbon,/datum/reagent/uranium/radium,/datum/reagent/toxin,/datum/reagent/consumable/condensedcapsaicin,/datum/reagent/drug/mushroomhallucinogen,/datum/reagent/drug/space_drugs,/datum/reagent/consumable/ethanol,/datum/reagent/consumable/ethanol/beepsky_smash) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -322,7 +322,7 @@ ejectItem(TRUE) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s chemical chamber has sprung a leak!") - chosenchem = pick("mutationtoxin","nanomachines","sacid") + chosenchem = pick(/datum/reagent/mutationtoxin/classic,/datum/reagent/nanomachines,/datum/reagent/toxin/acid) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -349,7 +349,7 @@ visible_message("[src]'s emergency coolant system gives off a small ding!") playsound(src, 'sound/machines/ding.ogg', 50, 1) var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) - chosenchem = pick("plasma","capsaicin","ethanol") + chosenchem = pick(/datum/reagent/toxin/plasma,/datum/reagent/consumable/capsaicin,/datum/reagent/consumable/ethanol) C.reagents.remove_any(25) C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" @@ -398,7 +398,7 @@ visible_message("[src]'s emergency coolant system gives off a small ding!") var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) playsound(src, 'sound/machines/ding.ogg', 50, 1) //Ding! Your death coffee is ready! - chosenchem = pick("uranium","frostoil","ephedrine") + chosenchem = pick(/datum/reagent/uranium,/datum/reagent/consumable/frostoil,/datum/reagent/medicine/ephedrine) C.reagents.remove_any(25) C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" @@ -408,7 +408,7 @@ visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src - R.add_reagent("frostoil" , 50) + R.add_reagent(/datum/reagent/consumable/frostoil , 50) investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = TRUE) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 585ba30818a8..9ad5a92921ee 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -223,7 +223,7 @@ l += "

Chemical Storage:

" for(var/datum/reagent/R in reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" l += "
" return l diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm index 0f0814fab942..b2caf0e0fde8 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -33,7 +33,7 @@ host_mob.adjustStaminaLoss(-75) host_mob.set_resting(FALSE) host_mob.update_mobility() - host_mob.reagents.add_reagent("stimulants", 1.5) + host_mob.reagents.add_reagent(/datum/reagent/medicine/stimulants, 1.5) /datum/nanite_program/hardening name = "Dermal Hardening" diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index 5c6e1cdafcaf..16da395eb3e8 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -61,7 +61,7 @@ /datum/nanite_program/purging/active_effect() host_mob.adjustToxLoss(-1) for(var/datum/reagent/R in host_mob.reagents.reagent_list) - host_mob.reagents.remove_reagent(R.id,1) + host_mob.reagents.remove_reagent(R.type,1) /datum/nanite_program/brain_heal name = "Neural Regeneration" @@ -155,7 +155,7 @@ /datum/nanite_program/purging_advanced/active_effect() host_mob.adjustToxLoss(-1) for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list) - host_mob.reagents.remove_reagent(R.id,1) + host_mob.reagents.remove_reagent(R.type,1) /datum/nanite_program/regenerative_advanced name = "Bio-Reconstruction" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 08d95d667c2d..a7f1986164c3 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -398,7 +398,7 @@ Nothing else in the console has ID requirements. l += "

Chemical Storage:

" for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" l += "" return l @@ -501,7 +501,7 @@ Nothing else in the console has ID requirements. l += "

Chemical Storage:

" for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" return l /obj/machinery/computer/rdconsole/proc/ui_circuit_materials() //Legacy code! diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.dm b/code/modules/research/xenobiology/crossbreeding/__corecross.dm index 6d4cfa8f0bee..42f38b70bb44 100644 --- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm @@ -120,19 +120,19 @@ To add a crossbreed: name = "blood extract" desc = "A sphere of liquid blood, somehow managing to stay together." color = "#FF0000" - list_reagents = list("blood" = 50) + list_reagents = list(/datum/reagent/blood = 50) /obj/item/slimecrossbeaker/pax //5u synthpax. name = "peace-inducing extract" desc = "A small blob of synthetic pax." color = "#FFCCCC" - list_reagents = list("synthpax" = 5) + list_reagents = list(/datum/reagent/pax/peaceborg = 5) /obj/item/slimecrossbeaker/omnizine //15u omnizine. name = "healing extract" desc = "A gelatinous extract of pure omnizine." color = "#FF00FF" - list_reagents = list("omnizine" = 15) + list_reagents = list(/datum/reagent/medicine/omnizine = 15) /obj/item/slimecrossbeaker/autoinjector //As with the above, but automatically injects whomever it is used on with contents. var/ignore_flags = FALSE @@ -166,7 +166,7 @@ To add a crossbreed: name = "mending solution" desc = "A strange glob of sweet-smelling semifluid, which seems to stick to skin rather easily." color = "#FF00FF" - list_reagents = list("regen_jelly" = 20) + list_reagents = list(/datum/reagent/medicine/regen_jelly = 20) /obj/item/slimecrossbeaker/autoinjector/slimejelly //Primarily for slimepeople, but you do you. self_use_only = TRUE @@ -174,13 +174,13 @@ To add a crossbreed: name = "slime jelly bubble" desc = "A sphere of slime jelly. It seems to stick to your skin, but avoids other surfaces." color = "#00FF00" - list_reagents = list("slimejelly" = 50) + list_reagents = list(/datum/reagent/toxin/slimejelly = 50) /obj/item/slimecrossbeaker/autoinjector/peaceandlove name = "peaceful distillation" desc = "A light pink gooey sphere. Simply touching it makes you a little dizzy." color = "#DDAAAA" - list_reagents = list("synthpax" = 10, "space_drugs" = 15) //Peace, dudes + list_reagents = list(/datum/reagent/pax/peaceborg = 10, /datum/reagent/drug/space_drugs = 15) //Peace, dudes /obj/item/slimecrossbeaker/autoinjector/peaceandlove/Initialize() . = ..() @@ -190,4 +190,4 @@ To add a crossbreed: name = "invigorating gel" desc = "A bubbling purple mixture, designed to heal and boost movement." color = "#FF00FF" - list_reagents = list("regen_jelly" = 30, "methamphetamine" = 9) + list_reagents = list(/datum/reagent/medicine/regen_jelly = 30, /datum/reagent/drug/methamphetamine = 9) diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index eb055cbf6697..b4c2c536b67a 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -227,7 +227,7 @@ Slimecrossing Items filling_color = "#964B00" tastes = list("cardboard" = 3, "sadness" = 3) foodtype = null //Don't ask what went into them. You're better off not knowing. - list_reagents = list("stabilizednutriment" = 10, "nutriment" = 2) //Won't make you fat. Will make you question your sanity. + list_reagents = list(/datum/reagent/consumable/nutriment/stabilized = 10, /datum/reagent/consumable/nutriment = 2) //Won't make you fat. Will make you question your sanity. /obj/item/reagent_containers/food/snacks/rationpack/checkLiked(fraction, mob/M) //Nobody likes rationpacks. Nobody. if(last_check_time + 50 < world.time) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 8b110d1c17c9..92336e787831 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -913,9 +913,9 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/lightpink/tick() for(var/mob/living/carbon/human/H in range(1, get_turf(owner))) - if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent("epinephrine")) + if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent(/datum/reagent/medicine/epinephrine)) to_chat(owner, "[linked_extract] pulses in sync with [H]'s heartbeat, trying to keep [H.p_them()] alive.") - H.reagents.add_reagent("epinephrine",5) + H.reagents.add_reagent(/datum/reagent/medicine/epinephrine,5) return ..() /datum/status_effect/stabilized/lightpink/on_remove() diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 4bd802b3d9f4..b0ad064b0f3d 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -14,10 +14,10 @@ Burning extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/burning/attack_self(mob/user) - if(!reagents.has_reagent("plasma",10)) + if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent("plasma",10) + reagents.remove_reagent(/datum/reagent/toxin/plasma,10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/magic/fireball.ogg', 50, 1) @@ -46,7 +46,7 @@ Burning extracts: /obj/item/slimecross/burning/orange/do_effect(mob/user) user.visible_message("[src] boils over with a caustic gas!") var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent("condensedcapsaicin", 100) + R.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 100) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(user)) @@ -121,8 +121,8 @@ Burning extracts: /obj/item/slimecross/burning/darkblue/do_effect(mob/user) user.visible_message("[src] releases a burst of chilling smoke!") var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent("frostoil", 40) - user.reagents.add_reagent("cryoxadone",10) + R.add_reagent(/datum/reagent/consumable/frostoil, 40) + user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,10) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(user)) smoke.start() @@ -140,7 +140,7 @@ Burning extracts: for(var/i = 0, i < amount, i++) var/path = get_random_food() var/obj/item/O = new path(pick(turfs)) - O.reagents.add_reagent("slimejelly",5) //Oh god it burns + O.reagents.add_reagent(/datum/reagent/toxin/slimejelly,5) //Oh god it burns if(prob(50)) O.desc += " It smells strange..." user.visible_message("[src] produces a few pieces of food!") @@ -288,7 +288,7 @@ Burning extracts: /obj/item/slimecross/burning/lightpink/do_effect(mob/user) user.visible_message("[src] lets off a hypnotizing pink glow!") for(var/mob/living/carbon/C in view(7, get_turf(user))) - C.reagents.add_reagent("pax",5) + C.reagents.add_reagent(/datum/reagent/pax,5) ..() /obj/item/slimecross/burning/adamantine diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index a2030bebac04..e93ef5a23807 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -15,10 +15,10 @@ Charged extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/charged/attack_self(mob/user) - if(!reagents.has_reagent("plasma",10)) + if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent("plasma",10) + reagents.remove_reagent(/datum/reagent/toxin/plasma,10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/effects/light_flicker.ogg', 50, 1) diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index bbe6957376bb..a58eea8cbd98 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -14,10 +14,10 @@ Chilling extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/chilling/attack_self(mob/user) - if(!reagents.has_reagent("plasma",10)) + if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent("plasma",10) + reagents.remove_reagent(/datum/reagent/toxin/plasma,10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/effects/glassbr1.ogg', 50, 1) @@ -59,7 +59,7 @@ Chilling extracts: return user.visible_message("[src] shatters, and a healing aura fills the room briefly.") for(var/mob/living/carbon/C in A) - C.reagents.add_reagent("regen_jelly",10) + C.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) ..() /obj/item/slimecross/chilling/blue diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm index 67a11258bf80..f82aaff0d667 100644 --- a/code/modules/research/xenobiology/crossbreeding/consuming.dm +++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm @@ -20,7 +20,7 @@ Consuming extracts: if(last_produced + cooldown > world.time) to_chat(user, "[src] is still digesting after its last meal!") return - var/datum/reagent/N = O.reagents.has_reagent("nutriment") + var/datum/reagent/N = O.reagents.has_reagent(/datum/reagent/consumable/nutriment) if(N) nutriment_eaten += N.volume to_chat(user, "[src] opens up and swallows [O] whole!") @@ -76,7 +76,7 @@ Consuming extracts: to_chat(M, "Tastes like [taste].") playsound(get_turf(M), 'sound/items/eatfood.ogg', 20, 1) if(nutrition) - M.reagents.add_reagent("nutriment",nutrition) + M.reagents.add_reagent(/datum/reagent/consumable/nutriment,nutrition) do_effect(M, user) qdel(src) return @@ -136,7 +136,7 @@ Consuming extracts: name = "water cookie" desc = "A transparent blue cookie. Constantly dripping wet." icon_state = "blue" - taste = "water" + taste = /datum/reagent/water /obj/item/slime_cookie/blue/do_effect(mob/living/M, mob/user) M.apply_status_effect(/datum/status_effect/watercookie) @@ -150,7 +150,7 @@ Consuming extracts: name = "metallic cookie" desc = "A shiny grey cookie. Hard to the touch." icon_state = "metal" - taste = "copper" + taste = /datum/reagent/copper /obj/item/slime_cookie/metal/do_effect(mob/living/M, mob/user) M.apply_status_effect(/datum/status_effect/metalcookie) @@ -211,7 +211,7 @@ Consuming extracts: nutrition = 0 //We don't want normal nutriment /obj/item/slime_cookie/silver/do_effect(mob/living/M, mob/user) - M.reagents.add_reagent("stabilizednutriment",10) + M.reagents.add_reagent(/datum/reagent/consumable/nutriment/stabilized,10) /obj/item/slimecross/consuming/bluespace colour = "bluespace" diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index c6d0434bdab8..b53716e14c92 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -30,13 +30,13 @@ Industrial extracts: /obj/item/slimecross/industrial/process() var/IsWorking = FALSE - if(reagents.has_reagent("plasma",amount = 2) && plasmarequired > 1) //Can absorb as much as 2 + if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 2) && plasmarequired > 1) //Can absorb as much as 2 IsWorking = TRUE - reagents.remove_reagent("plasma",2) + reagents.remove_reagent(/datum/reagent/toxin/plasma,2) plasmaabsorbed += 2 - else if(reagents.has_reagent("plasma",amount = 1)) //Can absorb as little as 1 + else if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 1)) //Can absorb as little as 1 IsWorking = TRUE - reagents.remove_reagent("plasma",1) + reagents.remove_reagent(/datum/reagent/toxin/plasma,1) plasmaabsorbed += 1 if(plasmaabsorbed >= plasmarequired) diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index cbe674eb1822..e1d6f36485cc 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -52,7 +52,7 @@ Regenerative extracts: effect_desc = "Fully heals the target and injects them with some regen jelly." /obj/item/slimecross/regenerative/purple/core_effect(mob/living/target, mob/user) - target.reagents.add_reagent("regen_jelly",10) + target.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) /obj/item/slimecross/regenerative/blue colour = "blue" @@ -187,7 +187,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/red/core_effect(mob/living/target, mob/user) to_chat(target, "You feel... faster.") - target.reagents.add_reagent("ephedrine",3) + target.reagents.add_reagent(/datum/reagent/medicine/ephedrine,3) /obj/item/slimecross/regenerative/green colour = "green" @@ -199,7 +199,7 @@ Regenerative extracts: var/mob/living/simple_animal/slime/S = target S.random_colour() if(isjellyperson(target)) - target.reagents.add_reagent("slime_toxin",5) + target.reagents.add_reagent(/datum/reagent/slime_toxin,5) /obj/item/slimecross/regenerative/pink @@ -208,7 +208,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/pink/core_effect(mob/living/target, mob/user) to_chat(target, "You feel more calm.") - target.reagents.add_reagent("krokodil",4) + target.reagents.add_reagent(/datum/reagent/drug/krokodil,4) /obj/item/slimecross/regenerative/gold colour = "gold" diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm index 273d395d0563..d987e8de25ed 100644 --- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm +++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm @@ -44,7 +44,7 @@ Self-sustaining extracts: amount = 4 reagentselect = "plasma" if(reagentselect == "holy water and uranium") - reagentselect = "holywater" + reagentselect = /datum/reagent/water/holywater secondary = "uranium" extract.forceMove(user.drop_location()) qdel(src) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 8f8f28d3183b..00539c0412f2 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -42,7 +42,7 @@ /obj/item/slime_extract/on_grind() if(Uses) - grind_results["slimejelly"] = 20 + grind_results[/datum/reagent/toxin/slimejelly] = 20 //Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds. /obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) @@ -78,7 +78,7 @@ name = "grey slime extract" icon_state = "grey slime extract" effectmod = "reproductive" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -103,7 +103,7 @@ name = "gold slime extract" icon_state = "gold slime extract" effectmod = "symbiont" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -132,7 +132,7 @@ name = "silver slime extract" icon_state = "silver slime extract" effectmod = "consuming" - activate_reagents = list("plasma","water") + activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -157,7 +157,7 @@ name = "metal slime extract" icon_state = "metal slime extract" effectmod = "industrial" - activate_reagents = list("plasma","water") + activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -181,7 +181,7 @@ name = "purple slime extract" icon_state = "purple slime extract" effectmod = "regenerative" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) /obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -193,14 +193,14 @@ if(SLIME_ACTIVATE_MAJOR) to_chat(user, "You activate [src], and it releases regenerative chemicals!") - user.reagents.add_reagent("regen_jelly",10) + user.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) return 600 /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" effectmod = "self-sustaining" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -223,19 +223,19 @@ name = "orange slime extract" icon_state = "orange slime extract" effectmod = "burning" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. You start feeling hot!") - user.reagents.add_reagent("capsaicin",10) + user.reagents.add_reagent(/datum/reagent/consumable/capsaicin,10) return 150 if(SLIME_ACTIVATE_MAJOR) - user.reagents.add_reagent("phosphorus",5)// - user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime - user.reagents.add_reagent("sugar",5) // + user.reagents.add_reagent(/datum/reagent/phosphorus,5)// + user.reagents.add_reagent(/datum/reagent/potassium,5) // = smoke, along with any reagents inside mr. slime + user.reagents.add_reagent(/datum/reagent/consumable/sugar,5) // to_chat(user, "You activate [src], and a cloud of smoke bursts out of your skin!") return 450 @@ -243,7 +243,7 @@ name = "yellow slime extract" icon_state = "yellow slime extract" effectmod = "charged" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -266,13 +266,13 @@ name = "red slime extract" icon_state = "red slime extract" effectmod = "sanguine" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. You start feeling fast!") - user.reagents.add_reagent("ephedrine",5) + user.reagents.add_reagent(/datum/reagent/medicine/ephedrine,5) return 450 if(SLIME_ACTIVATE_MAJOR) @@ -286,15 +286,15 @@ name = "blue slime extract" icon_state = "blue slime extract" effectmod = "stabilized" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. Your genome feels more stable!") user.adjustCloneLoss(-15) - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("potass_iodide", 10) + user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) + user.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, 10) return 250 if(SLIME_ACTIVATE_MAJOR) @@ -310,7 +310,7 @@ name = "dark blue slime extract" icon_state = "dark blue slime extract" effectmod = "chilling" - activate_reagents = list("plasma","water") + activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -318,8 +318,8 @@ to_chat(user, "You activate [src]. You start feeling colder!") user.ExtinguishMob() user.adjust_fire_stacks(-20) - user.reagents.add_reagent("frostoil",4) - user.reagents.add_reagent("cryoxadone",5) + user.reagents.add_reagent(/datum/reagent/consumable/frostoil,4) + user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,5) return 100 if(SLIME_ACTIVATE_MAJOR) @@ -333,7 +333,7 @@ name = "pink slime extract" icon_state = "pink slime extract" effectmod = "gentle" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) /obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -354,14 +354,14 @@ user.visible_message("[user]'s skin starts flashing hypnotically...", "Your skin starts forming odd patterns, pacifying creatures around you.") for(var/mob/living/carbon/C in viewers(user, null)) if(C != user) - C.reagents.add_reagent("pax",2) + C.reagents.add_reagent(/datum/reagent/pax,2) return 600 /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" effectmod = "mutative" - activate_reagents = list("blood","plasma","radium") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/uranium/radium) /obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -385,7 +385,7 @@ name = "light pink slime extract" icon_state = "light pink slime extract" effectmod = "loyal" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -409,7 +409,7 @@ name = "black slime extract" icon_state = "black slime extract" effectmod = "transformative" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -430,7 +430,7 @@ name = "oil slime extract" icon_state = "oil slime extract" effectmod = "detonating" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) /obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -453,7 +453,7 @@ name = "adamantine slime extract" icon_state = "adamantine slime extract" effectmod = "crystalline" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -482,7 +482,7 @@ name = "bluespace slime extract" icon_state = "bluespace slime extract" effectmod = "warping" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) var/teleport_ready = FALSE var/teleport_x = 0 var/teleport_y = 0 @@ -518,7 +518,7 @@ name = "pyrite slime extract" icon_state = "pyrite slime extract" effectmod = "prismatic" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) /obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -544,12 +544,12 @@ name = "cerulean slime extract" icon_state = "cerulean slime extract" effectmod = "recurring" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) /obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) - user.reagents.add_reagent("salbutamol",15) + user.reagents.add_reagent(/datum/reagent/medicine/salbutamol,15) to_chat(user, "You feel like you don't need to breathe!") return 150 @@ -564,7 +564,7 @@ name = "sepia slime extract" icon_state = "sepia slime extract" effectmod = "lengthened" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -586,7 +586,7 @@ name = "rainbow slime extract" icon_state = "rainbow slime extract" effectmod = "hyperchromatic" - activate_reagents = list("blood","plasma","lesser plasma","slimejelly","holy water and uranium") //Curse this snowflake reagent list. + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,"lesser plasma",/datum/reagent/toxin/slimejelly,"holy water and uranium") //Curse this snowflake reagent list. /obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm index d11051dd23d9..a7891a2aa08c 100644 --- a/code/modules/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm @@ -312,6 +312,33 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) var/datum/turf_reservation/reservation var/turf/storageTurf +/area/hilbertshotel/Entered(atom/movable/AM) + . = ..() + if(istype(AM, /obj/item/hilbertshotel)) + relocate(AM) + var/list/obj/item/hilbertshotel/hotels = AM.GetAllContents(/obj/item/hilbertshotel) + for(var/obj/item/hilbertshotel/H in hotels) + if(parentSphere == H) + relocate(H) + +/area/hilbertshotel/proc/relocate(obj/item/hilbertshotel/H) + if(prob(0.135685)) //Because screw you + qdel(H) + return + var/turf/targetturf = find_safe_turf() + if(!targetturf) + if(GLOB.blobstart.len > 0) + targetturf = get_turf(pick(GLOB.blobstart)) + else + CRASH("Unable to find a blobstart landmark") + var/turf/T = get_turf(H) + var/area/A = T.loc + log_game("[H] entered itself. Moving it to [loc_name(targetturf)].") + message_admins("[H] entered itself. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") + for(var/mob/M in A) + to_chat(M, "[H] almost implodes in upon itself, but quickly rebounds, shooting off into a random point in space!") + H.forceMove(targetturf) + /area/hilbertshotel/Exited(atom/movable/AM) . = ..() if(ismob(AM)) @@ -494,4 +521,3 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) Lay your head to rest, it soon becomes clear
There's always more room around every bend
Not all that's countable has an end..."} - diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm index a88bb51b31f6..4c1a2a30fa08 100644 --- a/code/modules/surgery/advanced/necrotic_revival.dm +++ b/code/modules/surgery/advanced/necrotic_revival.dm @@ -20,7 +20,7 @@ name = "start bionecrosis" implements = list(/obj/item/hemostat = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) time = 50 - chems_needed = list("zombiepowder", "rezadone") + chems_needed = list(/datum/reagent/toxin/zombiepowder, /datum/reagent/medicine/rezadone) require_all_chems = FALSE /datum/surgery_step/bionecrosis/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm index f46bb6e2b9da..ab8a46edf3f9 100644 --- a/code/modules/surgery/advanced/viral_bonding.dm +++ b/code/modules/surgery/advanced/viral_bonding.dm @@ -22,7 +22,7 @@ name = "viral bond" implements = list(/obj/item/cautery = 100, TOOL_WELDER = 50, /obj/item = 30) // 30% success with any hot item. time = 100 - chems_needed = list("spaceacillin","virusfood","formaldehyde") + chems_needed = list(/datum/reagent/medicine/spaceacillin,/datum/reagent/consumable/virus_food,/datum/reagent/toxin/formaldehyde) /datum/surgery_step/viral_bond/tool_check(mob/user, obj/item/tool) if(implement_type == TOOL_WELDER || implement_type == /obj/item) diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 2613be6be5a4..e11d06bb92f7 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -48,6 +48,6 @@ newmeat.desc = "Extremely fatty tissue taken from a patient." newmeat.subjectname = H.real_name newmeat.subjectjob = H.job - newmeat.reagents.add_reagent ("nutriment", (removednutriment / 15)) //To balance with nutriment_factor of nutriment + newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, (removednutriment / 15)) //To balance with nutriment_factor of nutriment newmeat.forceMove(target.loc) return 1 diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm index 34a7e16ebff7..7c1f37c1ba7d 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -28,5 +28,5 @@ /obj/item/organ/appendix/prepare_eat() var/obj/S = ..() if(inflamed) - S.reagents.add_reagent("bad_food", 5) + S.reagents.add_reagent(/datum/reagent/toxin/bad_food, 5) return S diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 01b8971cf6ad..4571d749684d 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -32,7 +32,7 @@ . = ..() if(!owner || . & EMP_PROTECT_SELF) return - owner.reagents.add_reagent("bad_food", poison_amount / severity) + owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount / severity) to_chat(owner, "You feel like your insides are burning.") diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 7870057dc550..42e24dd55a25 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -156,7 +156,7 @@ synthetic = TRUE var/dose_available = TRUE - var/rid = "epinephrine" + var/rid = /datum/reagent/medicine/epinephrine var/ramount = 10 /obj/item/organ/heart/cybernetic/emp_act() @@ -195,5 +195,5 @@ min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes to_chat(owner, "You feel yourself dying, but you refuse to give up!") owner.heal_overall_damage(15, 15, 0, BODYPART_ORGANIC) - if(owner.reagents.get_reagent_amount("ephedrine") < 20) - owner.reagents.add_reagent("ephedrine", 10) + if(owner.reagents.get_reagent_amount(/datum/reagent/medicine/ephedrine) < 20) + owner.reagents.add_reagent(/datum/reagent/medicine/ephedrine, 10) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 07a74bd8f8fb..275eb1c80c71 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -35,12 +35,12 @@ for(var/I in C.reagents.reagent_list) var/datum/reagent/pickedreagent = I if(istype(pickedreagent, /datum/reagent/toxin)) - var/datum/reagent/toxin/found_toxin = pickedreagent - var/thisamount = C.reagents.get_reagent_amount(initial(found_toxin.id)) + var/thisamount = C.reagents.get_reagent_amount(pickedreagent) if (thisamount <= toxTolerance && thisamount) - C.reagents.remove_reagent(initial(found_toxin.id), 1) + C.reagents.remove_reagent(pickedreagent, 1) else damage += (thisamount*toxLethality) + var/datum/reagent/toxin/found_toxin = pickedreagent if(provide_pain_message != HAS_PAINFUL_TOXIN) provide_pain_message = found_toxin.silent_toxin ? HAS_SILENT_TOXIN : HAS_PAINFUL_TOXIN @@ -59,7 +59,7 @@ /obj/item/organ/liver/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("iron", 5) + S.reagents.add_reagent(/datum/reagent/iron, 5) return S /obj/item/organ/liver/fly diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index db49a0353bb4..c52339e5318a 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -52,7 +52,7 @@ var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 var/heat_damage_type = BURN - var/crit_stabilizing_reagent = "epinephrine" + var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine /obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H) @@ -241,13 +241,13 @@ var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz][MOLES]) if(bz_pp > BZ_trip_balls_min) H.hallucination += 10 - H.reagents.add_reagent("bz_metabolites",5) + H.reagents.add_reagent(/datum/reagent/bz_metabolites,5) if(prob(33)) H.adjustBrainLoss(3, 150) else if(bz_pp > 0.01) H.hallucination += 5 - H.reagents.add_reagent("bz_metabolites",1) + H.reagents.add_reagent(/datum/reagent/bz_metabolites,1) // Tritium @@ -271,15 +271,15 @@ H.adjustFireLoss(nitryl_pp/4) gas_breathed = breath_gases[/datum/gas/nitryl][MOLES] if (gas_breathed > gas_stimulation_min) - H.reagents.add_reagent("no2",1) + H.reagents.add_reagent(/datum/reagent/nitryl,1) breath_gases[/datum/gas/nitryl][MOLES]-=gas_breathed // Stimulum gas_breathed = breath_gases[/datum/gas/stimulum][MOLES] if (gas_breathed > gas_stimulation_min) - var/existing = H.reagents.get_reagent_amount("stimulum") - H.reagents.add_reagent("stimulum",max(0, 1 - existing)) + var/existing = H.reagents.get_reagent_amount(/datum/reagent/stimulum) + H.reagents.add_reagent(/datum/reagent/stimulum,max(0, 1 - existing)) breath_gases[/datum/gas/stimulum][MOLES]-=gas_breathed // Miasma @@ -380,7 +380,7 @@ /obj/item/organ/lungs/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("salbutamol", 5) + S.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 5) return S /obj/item/organ/lungs/plasmaman diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 320a621d0195..4f821f51efbe 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -75,7 +75,7 @@ name = "appendix" icon_state = "appendix" icon = 'icons/obj/surgery.dmi' - list_reagents = list("nutriment" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) foodtype = RAW | MEAT | GROSS diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 911cb697d24e..f65d10b4ec74 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -126,7 +126,7 @@ visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car spews out a cloud of laughing gas.") var/datum/reagents/R = new/datum/reagents(300) R.my_atom = src - R.add_reagent("superlaughter", 50) + R.add_reagent(/datum/reagent/consumable/superlaughter, 50) var/datum/effect_system/smoke_spread/chem/smoke = new() smoke.set_up(R, 4) smoke.attach(src) diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index 70b9eee7a373..7d8dacb4b971 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -18,6 +18,7 @@ /obj/item/seeds/coffee = 3, /obj/item/seeds/corn = 3, /obj/item/seeds/eggplant = 3, + /obj/item/seeds/garlic = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3, diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi index a2dbc991e7c75277c5427d288fdf7ebf61a0115b..1554df9403e6f167858e2819b75ec8bb880a8c19 100644 GIT binary patch delta 8252 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 diff --git a/icons/obj/hydroponics/growing_vegetables.dmi b/icons/obj/hydroponics/growing_vegetables.dmi index 9fc1520175e6cefc9907ed2d930b4a3ccced2bf9..c13ce2d5210a7128adc78f307c1dc567d8e38294 100644 GIT binary patch literal 20388 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 literal 19389 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 diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 00c621aeb5815aea0f433f7c1189301fce9cf5e4..d9b4eb159939a737f9565295f9737b930ec33389 100644 GIT binary patch literal 75788 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 literal 51611 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 Z{{vn6Pv2Tu>?i;L002ovPDHLkV1mJjRg3@t diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 375cefb4a53b80c9021ec36ffc99ef08e3d94ddb..43ac879d7a4525afeda016af05a17863b1f1c2a9 100644 GIT binary patch delta 21282 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 G)PDi?@+xKk delta 20934 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 50) H.IsSleeping(3) H.adjustToxLoss(4*REAGENTS_EFFECT_MULTIPLIER) - H.reagents.remove_reagent(chem.id, chem.metabolization_rate * REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, chem.metabolization_rate * REAGENTS_METABOLISM) return 0 // still get all the normal effects. /datum/species/pod/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/H) diff --git a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm index 3dc83227f0ac..2661e884fd33 100644 --- a/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm +++ b/yogstation/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm @@ -23,14 +23,12 @@ adjust_charge - take a positive or negative value to adjust the charge level mutantlungs = /obj/item/organ/lungs/preternis yogs_virus_infect_chance = 20 virus_resistance_boost = 10 //YEOUTCH,good luck getting it out - var/charge = PRETERNIS_LEVEL_FULL var/eating_msg_cooldown = FALSE var/emag_lvl = 0 var/power_drain = 0.5 //probably going to have to tweak this shit var/tesliumtrip = FALSE var/draining = FALSE - /datum/species/preternis/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) . = ..() @@ -127,7 +125,7 @@ adjust_charge - take a positive or negative value to adjust the charge level to_chat(H,"NOTICE: Digestive subroutines are inefficient. Seek sustenance via power-cell C.O.N.S.U.M.E. technology induction.") if(chem.current_cycle >= 20) - H.reagents.del_reagent(chem.id) + H.reagents.del_reagent(chem.type) return FALSE diff --git a/yogstation/code/modules/mob/living/simple_animal/friendly/eggdog.dm b/yogstation/code/modules/mob/living/simple_animal/friendly/eggdog.dm index 08f82b5d8ec0..89fcbf1b3870 100644 --- a/yogstation/code/modules/mob/living/simple_animal/friendly/eggdog.dm +++ b/yogstation/code/modules/mob/living/simple_animal/friendly/eggdog.dm @@ -39,6 +39,6 @@ /mob/living/simple_animal/pet/eggdog/attack_hand(mob/living/L) ..() if(L.a_intent == INTENT_HARM && L.reagents && !stat) - L.reagents.add_reagent("eggyolk", 0.4) - L.reagents.add_reagent("vitamin", 0.4) - L.reagents.add_reagent("growthserum", 0.4) \ No newline at end of file + L.reagents.add_reagent(/datum/reagent/consumable/eggyolk, 0.4) + L.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.4) + L.reagents.add_reagent(/datum/reagent/growthserum, 0.4) \ No newline at end of file diff --git a/yogstation/code/modules/reagents/chemistry/reagents/food_reagents.dm b/yogstation/code/modules/reagents/chemistry/reagents/food_reagents.dm index 2cd269bd26f0..6b327173f15b 100644 --- a/yogstation/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/yogstation/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -1,6 +1,5 @@ /datum/reagent/consumable/cinnamon name = "Cinnamon" - id = "cinnamon" description = "A spice obtained from the bark of a cinnamomum tree." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM diff --git a/yogstation/code/modules/reagents/chemistry/reagents/other_reagents.dm b/yogstation/code/modules/reagents/chemistry/reagents/other_reagents.dm index 8690f1c2e498..7fc4706cd3f3 100644 --- a/yogstation/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/yogstation/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,6 +1,5 @@ /datum/reagent/mutationtoxin/gorilla name = "Gorilla Mutation Toxin" - id = "gorillamutationtoxin" description = "A gorilla-ing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/gorilla @@ -8,7 +7,6 @@ /datum/reagent/cluwnification name = "Cluwne Tears" - id = "cluwnification" description = "Tears from thousands of cluwnes compressed into a dangerous cluwnification virus." color = "#535E66" // rgb: 62, 224, 33 can_synth = FALSE diff --git a/yogstation/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/yogstation/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 4b65eb90f528..7109251fb562 100644 --- a/yogstation/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/yogstation/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -2,6 +2,6 @@ name = "Gorilla Mutation Toxin" id = "gorillamuttoxin" results = list("gorillamutationtoxin" = 1) - required_reagents = list("milk" = 1) + required_reagents = list(/datum/reagent/consumable/milk = 1) required_other = TRUE required_container = /obj/item/slime_extract/green \ No newline at end of file diff --git a/yogstation/code/modules/reagents/reagent_containers/bottle.dm b/yogstation/code/modules/reagents/reagent_containers/bottle.dm index 97de390fdbc5..c2384c909a84 100644 --- a/yogstation/code/modules/reagents/reagent_containers/bottle.dm +++ b/yogstation/code/modules/reagents/reagent_containers/bottle.dm @@ -2,4 +2,4 @@ name = "Bottle of drugs" desc = "A bottle containing Space Drugs." icon_state = "bottle3" - list_reagents = list("space_drugs" = 10) \ No newline at end of file + list_reagents = list(/datum/reagent/drug/space_drugs = 10) \ No newline at end of file diff --git a/yogstation/code/modules/reagents/reagent_containers/hypospray.dm b/yogstation/code/modules/reagents/reagent_containers/hypospray.dm index 312dc110aa4d..d5d961054d73 100644 --- a/yogstation/code/modules/reagents/reagent_containers/hypospray.dm +++ b/yogstation/code/modules/reagents/reagent_containers/hypospray.dm @@ -4,7 +4,7 @@ amount_per_transfer_from_this = 5 icon_state = "combat_hypo" volume = 50 - list_reagents = list("bicaridine" = 50) + list_reagents = list(/datum/reagent/medicine/bicaridine = 50) /obj/item/reagent_containers/hypospray/derm name = "QMC Kelotane Injector" @@ -12,8 +12,8 @@ amount_per_transfer_from_this = 5 icon_state = "combat_hypo" volume = 50 - list_reagents = list("kelotane" = 50) - + list_reagents = list(/datum/reagent/medicine/kelotane = 50) + /obj/item/reagent_containers/hypospray/medipen/stimpack/large name = "stimpack injector" desc = "Contains two heavy doses of stimulants." @@ -21,7 +21,7 @@ icon_state = "stimpakpen" volume = 50 amount_per_transfer_from_this = 25 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/hypospray/medipen/stimpack/large/update_icon() if(reagents.total_volume > 25) diff --git a/yogstation/code/modules/research/experimentor.dm b/yogstation/code/modules/research/experimentor.dm index 8fe86b53b8c7..27196c29b468 100644 --- a/yogstation/code/modules/research/experimentor.dm +++ b/yogstation/code/modules/research/experimentor.dm @@ -62,7 +62,7 @@ if(!T.density) if(prob(EFFECT_PROB_VERYHIGH) && !(locate(/obj/effect/decal/cleanable/greenglow) in T)) var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T) - reagentdecal.reagents.add_reagent("radium", 7) + reagentdecal.reagents.add_reagent(/datum/reagent/uranium/radium, 7) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeffIfCrit)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -82,7 +82,7 @@ new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src)))) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeffIfCrit)) visible_message("[src] destroys [exp_on], leaking dangerous gas!") - chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash") + chosenchem = pick(/datum/reagent/carbon,/datum/reagent/uranium/radium,/datum/reagent/toxin,/datum/reagent/consumable/condensedcapsaicin,/datum/reagent/drug/mushroomhallucinogen,/datum/reagent/drug/space_drugs,/datum/reagent/consumable/ethanol,/datum/reagent/consumable/ethanol/beepsky_smash) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -95,7 +95,7 @@ ejectItem(TRUE) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeffIfCrit)) visible_message("[src]'s chemical chamber has sprung a leak!") - chosenchem = pick("mutationtoxin","nanomachines","sacid") + chosenchem = pick(/datum/reagent/mutationtoxin/felinid,/datum/reagent/nanomachines,/datum/reagent/toxin/acid) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) diff --git a/yogstation/code/modules/vending/megaseed.dm b/yogstation/code/modules/vending/megaseed.dm index 7c01436fe530..842bc08507d1 100644 --- a/yogstation/code/modules/vending/megaseed.dm +++ b/yogstation/code/modules/vending/megaseed.dm @@ -19,6 +19,7 @@ /obj/item/seeds/coffee = 3, /obj/item/seeds/corn = 3, /obj/item/seeds/eggplant = 3, + /obj/item/seeds/garlic = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3,