From 8ec4bdaef5af38676eb3634fdbdbce89d807e76f Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 8 Dec 2019 09:02:41 +0100 Subject: [PATCH 01/78] Refactors that mess of a code for alternate worn clothing sprites for digitigrade and taurs. --- code/__DEFINES/inventory.dm | 28 ++- code/_globalvars/lists/mobs.dm | 20 -- code/game/objects/items.dm | 2 +- .../clockcult/clock_items/clockwork_armor.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 2 +- code/modules/client/preferences.dm | 4 +- code/modules/clothing/head/_head.dm | 26 --- code/modules/clothing/head/hardhat.dm | 2 +- code/modules/clothing/head/helmet.dm | 6 +- code/modules/clothing/head/misc.dm | 2 +- code/modules/clothing/head/misc_special.dm | 2 +- code/modules/clothing/masks/_masks.dm | 25 --- code/modules/clothing/masks/boxing.dm | 4 +- code/modules/clothing/masks/breath.dm | 2 +- code/modules/clothing/masks/gasmask.dm | 2 +- code/modules/clothing/masks/miscellaneous.dm | 10 +- code/modules/clothing/shoes/_shoes.dm | 21 +- code/modules/clothing/shoes/vg_shoes.dm | 34 ++-- .../clothing/spacesuits/_spacesuits.dm | 4 +- .../modules/clothing/spacesuits/chronosuit.dm | 1 + code/modules/clothing/spacesuits/hardsuit.dm | 41 ++-- .../clothing/spacesuits/miscellaneous.dm | 26 +-- code/modules/clothing/spacesuits/plasmamen.dm | 3 +- code/modules/clothing/spacesuits/syndi.dm | 5 +- code/modules/clothing/suits/_suits.dm | 50 +---- code/modules/clothing/suits/bio.dm | 4 +- code/modules/clothing/suits/jobs.dm | 4 +- code/modules/clothing/suits/miscellaneous.dm | 2 +- code/modules/clothing/suits/toggles.dm | 15 +- code/modules/clothing/suits/utility.dm | 15 +- code/modules/clothing/suits/vg_suits.dm | 28 +-- code/modules/clothing/under/_under.dm | 13 +- code/modules/clothing/under/jobs/civilian.dm | 13 +- code/modules/clothing/under/miscellaneous.dm | 2 +- code/modules/clothing/under/shorts.dm | 1 - code/modules/clothing/under/vg_under.dm | 68 +++---- .../modules/mining/equipment/explorer_gear.dm | 4 +- .../sprite_accessories/legs_and_taurs.dm | 40 ++-- .../living/carbon/alien/special/facehugger.dm | 2 +- .../mob/living/carbon/human/species.dm | 16 +- .../carbon/human/species_types/furrypeople.dm | 8 +- .../human/species_types/lizardpeople.dm | 5 +- .../mob/living/carbon/human/update_icons.dm | 182 +++++++++--------- code/modules/surgery/bodyparts/helpers.dm | 45 +---- icons/mob/taur_canine.dmi | Bin 128671 -> 128671 bytes icons/mob/taur_hooved.dmi | Bin 87805 -> 8069 bytes .../code/modules/clothing/suits/suits.dm | 6 +- .../clothing/under/polychromic_clothes.dm | 3 +- .../code/modules/clothing/under/trek_under.dm | 11 +- .../modules/clothing/under/turtlenecks.dm | 6 +- .../code/modules/clothing/under/under.dm | 4 +- .../modules/custom_loadout/custom_items.dm | 44 ++--- 52 files changed, 336 insertions(+), 529 deletions(-) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index f5ea8d835f..8611a22df5 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -135,28 +135,24 @@ #define FEMALE_UNIFORM_FULL 1 #define FEMALE_UNIFORM_TOP 2 -//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in -#define NORMAL_STYLE 0 -#define ALT_STYLE 1 - -#define NORMAL_SUIT_STYLE 0 -#define DIGITIGRADE_SUIT_STYLE 1 - -//Tauric Specific suits -#define NOT_TAURIC 0 -#define SNEK_TAURIC 1 -#define PAW_TAURIC 2 -#define HOOF_TAURIC 3 - //Helmets/masks for muzzles or beaks #define NORMAL_FACED 0 #define MUZZLE_FACED 1 #define BEAKED_FACED 2 -//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts -#define NO_MUTANTRACE_VARIATION 0 -#define MUTANTRACE_VARIATION 1 +//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in +#define NORMAL_STYLE 0 +#define ALT_STYLE 1 +//flags for outfits that have mutantrace variants +#define STYLE_DIGITIGRADE (1<<0) //jumpsuits, suits and shoes +#define STYLE_MUZZLE (1<<1) //hats or masks +#define STYLE_SNEK_TAURIC (1<<2) //taur-friendly suits +#define STYLE_PAW_TAURIC (1<<3) +#define STYLE_HOOF_TAURIC (1<<4) +#define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC) + +//digitigrade legs settings. #define NOT_DIGITIGRADE 0 #define FULL_DIGITIGRADE 1 #define SQUISHED_DIGITIGRADE 2 diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 1707c3a536..3577402b36 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -61,26 +61,6 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito var/mob/M = i M.update_config_movespeed() -GLOBAL_LIST_INIT(noodle_taurs, list( - "Naga", - "Tentacle" - )) - -GLOBAL_LIST_INIT(paw_taurs, list( - "Fox", - "Wolf", - "Otie", - "Drake", - "Lab", - "Shepherd", - "Husky", - "Eevee", - "Panther", - "Horse", - "Cow", - "Tiger" - )) - //blood types GLOBAL_LIST_INIT(regular_bloods,list( "O-", diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c5d198c05f..5b9151ae85 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -52,7 +52,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/interaction_flags_item = INTERACT_ITEM_ATTACK_HAND_PICKUP //Citadel Edit for digitigrade stuff - var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. + var/mutantrace_variation = NONE //Are there special sprites for specific situations? Don't use this unless you need to. var/item_color = null //this needs deprecating, soonish diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 88cf420420..e01156ba44 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_NORMAL resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE|HIDESNOUT - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE armor = list("melee" = 50, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) /obj/item/clothing/head/helmet/clockwork/Initialize() diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 5fe941d32f..20d571707d 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -331,7 +331,7 @@ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDESNOUT armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/magusred name = "magus robes" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c476e5a310..8a3cdbbb2e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2319,9 +2319,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) pref_species.species_traits -= DIGITIGRADE if(DIGITIGRADE in pref_species.species_traits) - character.Digitigrade_Leg_Swap(FALSE) + character.Digitigrade_Leg_Swap(FALSE, TRUE) else - character.Digitigrade_Leg_Swap(TRUE) + character.Digitigrade_Leg_Swap(TRUE, TRUE) //let's be sure the character updates if(icon_updates) diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index ec6db20cc4..9849405f24 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -8,8 +8,6 @@ var/blockTracking = 0 //For AI tracking var/can_toggle = null dynamic_hair_suffix = "+generic" - var/muzzle_var = NORMAL_STYLE - mutantrace_variation = NO_MUTANTRACE_VARIATION //not all hats have muzzles /obj/item/clothing/head/Initialize() . = ..() @@ -17,30 +15,6 @@ var/mob/living/carbon/human/H = loc H.update_hair() -/obj/item/clothing/head/equipped(mob/user, slot) - ..() - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/datum/species/pref_species = H.dna.species - - if(mutantrace_variation) - if("mam_snouts" in pref_species.default_features) - if(H.dna.features["mam_snouts"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else if("snout" in pref_species.default_features) - if(H.dna.features["snout"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else - muzzle_var = NORMAL_STYLE - - H.update_inv_head() - ///Special throw_impact for hats to frisbee hats at people to place them on their heads. /obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) . = ..() diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 19f03dfd0a..2be10050db 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -91,7 +91,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/hardhat/weldhat name = "welding hard hat" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index be6e270e45..ae68391dc4 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -76,7 +76,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH dog_fashion = null - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/helmet/attack_self(mob/user) if(can_toggle && !user.incapacitated()) @@ -217,7 +217,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH strip_delay = 80 dog_fashion = null - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/helmet/knight/Initialize(mapload) @@ -246,7 +246,7 @@ icon_state = "skull" item_state = "skull" strip_delay = 100 - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE //LightToggle diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index dabfaf06cd..cdcee331e7 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -66,7 +66,7 @@ item_state = "syndicate-helm-black-red" desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/cueball name = "cueball helmet" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index fc82d038ce..331bd02a1e 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -28,7 +28,7 @@ visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = FIRE_PROOF - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/welding/attack_self(mob/user) weldingvisortoggle(user) diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index c00e6f72e0..5931a7d1ce 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -8,9 +8,6 @@ var/modifies_speech = FALSE var/mask_adjusted = 0 var/adjusted_flags = null - var/muzzle_var = NORMAL_STYLE - mutantrace_variation = NO_MUTANTRACE_VARIATION //most masks have overrides, but not all probably. - /obj/item/clothing/mask/attack_self(mob/user) if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -24,28 +21,6 @@ RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) else UnregisterSignal(M, COMSIG_MOB_SAY) - if(!ishuman(M)) - return - var/mob/living/carbon/human/H = M - var/datum/species/pref_species = H.dna.species - - if(mutantrace_variation) - if("mam_snouts" in pref_species.default_features) - if(H.dna.features["mam_snouts"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else if("snout" in pref_species.default_features) - if(H.dna.features["snout"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else - muzzle_var = NORMAL_STYLE - - H.update_inv_wear_mask() /obj/item/clothing/mask/dropped(mob/M) . = ..() diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 3960bdadeb..e7a7800b5f 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -7,7 +7,7 @@ visor_flags_inv = HIDEFACE|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/adjust) - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/balaclava/attack_self(mob/user) adjustmask(user) @@ -19,7 +19,7 @@ item_state = "luchag" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE modifies_speech = TRUE /obj/item/clothing/mask/luchador/handle_speech(datum/source, list/speech_args) diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index f4335d17e8..b979e2e526 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -13,7 +13,7 @@ flags_cover = MASKCOVERSMOUTH visor_flags_cover = MASKCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user) user.visible_message("[user] is wrapping \the [src]'s tube around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index c613d1a91e..5aedf7045d 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -10,7 +10,7 @@ permeability_coefficient = 0.01 flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/gas/glass name = "glass gas mask" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 4b8f16a77f..894ea2562f 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.9 equip_delay_other = 20 - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/muzzle/attack_paw(mob/user) if(iscarbon(user)) @@ -31,7 +31,7 @@ permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 25, "rad" = 0, "fire" = 0, "acid" = 0) actions_types = list(/datum/action/item_action/adjust) - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/surgical/attack_self(mob/user) adjustmask(user) @@ -41,7 +41,7 @@ desc = "Warning: moustache is fake." icon_state = "fake-moustache" flags_inv = HIDEFACE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/fakemoustache/italian name = "italian moustache" @@ -71,7 +71,7 @@ name = "joy mask" desc = "Express your happiness or hide your sorrows with this laughing face with crying tears of joy cutout." icon_state = "joy" - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/pig name = "pig mask" @@ -242,7 +242,7 @@ slot_flags = ITEM_SLOT_MASK adjusted_flags = ITEM_SLOT_HEAD icon_state = "bandbotany" - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/bandana/attack_self(mob/user) adjustmask(user) diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index a8406e3b12..9d370ff522 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -15,9 +15,7 @@ var/offset = 0 var/equipped_before_drop = FALSE - //CITADEL EDIT Enables digitigrade shoe styles - var/adjusted = NORMAL_STYLE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_DIGITIGRADE var/last_bloodtype = "" //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans var/last_blood_DNA = "" //same as last one @@ -51,7 +49,7 @@ last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works last_blood_DNA = blood_dna[blood_dna.len] -/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) +/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, style_flags) . = list() if(!isinhands) var/bloody = FALSE @@ -63,23 +61,12 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) - if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) - else - . += mutable_appearance('icons/mob/feet_digi.dmi', "shoeblood", color = blood_DNA_to_color()) + var/file2use = style_flags & STYLE_DIGITIGRADE ? 'icons/mob/feet_digi.dmi' : 'icons/effects/blood.dmi' + . += mutable_appearance(file2use, "shoeblood", color = blood_DNA_to_color()) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() - if(mutantrace_variation && ishuman(user)) - var/mob/living/carbon/human/H = user - if(DIGITIGRADE in H.dna.species.species_traits) - adjusted = ALT_STYLE - H.update_inv_shoes() - else if(adjusted == ALT_STYLE) - adjusted = NORMAL_STYLE - H.update_inv_shoes() - if(offset && slot_flags & slotdefine2slotbit(slot)) user.pixel_y += offset worn_y_dimension -= (offset * 2) diff --git a/code/modules/clothing/shoes/vg_shoes.dm b/code/modules/clothing/shoes/vg_shoes.dm index 627a061181..53b093dc72 100644 --- a/code/modules/clothing/shoes/vg_shoes.dm +++ b/code/modules/clothing/shoes/vg_shoes.dm @@ -5,7 +5,7 @@ icon_state = "leather" item_color = "leather" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/magboots/deathsquad desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle." @@ -14,7 +14,7 @@ magboot_state = "DS-magboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/magboots/atmos desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician." @@ -23,102 +23,102 @@ icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' magboot_state = "atmosmagboots" resistance_flags = FIRE_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/simonshoes name = "Simon's Shoes" desc = "Simon's Shoes." icon_state = "simonshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/kneesocks name = "kneesocks" desc = "A pair of girly knee-high socks." icon_state = "kneesock" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/jestershoes name = "Jester Shoes" desc = "As worn by the clowns of old." icon_state = "jestershoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/aviatorboots name = "Aviator Boots" desc = "Boots suitable for just about any occasion." icon_state = "aviator_boots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/libertyshoes name = "Liberty Shoes" desc = "Freedom isn't free, neither were these shoes." icon_state = "libertyshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/megaboots name = "DRN-001 Boots" desc = "Large armored boots, very weak to large spikes." icon_state = "megaboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/protoboots name = "Prototype Boots" desc = "Functionally identical to the DRN-001 model's boots, but in red." icon_state = "protoboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/megaxboots name = "Maverick Hunter boots" desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike." icon_state = "megaxboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/joeboots name = "Sniper Boots" desc = "Nearly identical to the Prototype's boots, except in black." icon_state = "joeboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/doomguy name = "Doomguy's boots" desc = "If you look closely, you might see skull fragments still buried in these boots." icon_state = "doom" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/rottenshoes name = "rotten shoes" desc = "These shoes seem perfect for sneaking around." icon_state = "rottenshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/sandal/slippers name = "magic slippers" icon_state = "slippers" desc = "For the wizard that puts comfort first. Who's going to laugh?" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/slippers_worn name = "worn bunny slippers" desc = "Fluffy..." icon_state = "slippers_worn" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/jackboots/neorussian name = "neo-Russian boots" desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit." icon_state = "nr_boots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION \ No newline at end of file + mutantrace_variation = NONE \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 57866b5131..f49c26ce49 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -21,7 +21,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE dog_fashion = null - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE /obj/item/clothing/suit/space @@ -46,4 +46,4 @@ equip_delay_other = 80 resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //rated for cosmic radation :honk: - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 5a53e2776a..a8387c5ccc 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -26,6 +26,7 @@ actions_types = list(/datum/action/item_action/toggle) armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 1000) resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun) var/obj/item/clothing/head/helmet/space/chronos/helmet = null var/obj/effect/chronos_cam/camera = null diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c6eac4ac56..113b8bdd4d 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -180,7 +180,7 @@ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC //Atmospherics /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -202,7 +202,6 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos - tauric = TRUE //Citadel Add for tauric hardsuits //Chief Engineer's hardsuit @@ -226,7 +225,6 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite jetpack = /obj/item/tank/jetpack/suit - tauric = TRUE //Citadel Add for tauric hardsuits //Mining hardsuit /obj/item/clothing/head/helmet/space/hardsuit/mining @@ -257,7 +255,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC /obj/item/clothing/suit/space/hardsuit/mining/Initialize() . = ..() @@ -353,7 +351,7 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite @@ -370,7 +368,6 @@ on = FALSE resistance_flags = FIRE_PROOF | ACID_PROOF - /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." @@ -382,7 +379,8 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + //The Owl Hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl @@ -404,6 +402,7 @@ item_state = "s_suit" item_color = "owl" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl + mutantrace_variation = STYLE_DIGITIGRADE //Wizard hardsuit @@ -430,6 +429,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/suit/space/hardsuit/wizard/Initialize() . = ..() @@ -455,7 +455,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC //Research Director hardsuit /obj/item/clothing/head/helmet/space/hardsuit/rd @@ -497,7 +497,6 @@ /obj/item/hand_tele, /obj/item/aicard) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd - tauric = TRUE //Citadel Add for tauric hardsuits //Security hardsuit /obj/item/clothing/head/helmet/space/hardsuit/security @@ -515,7 +514,7 @@ item_state = "sec_hardsuit" armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC /obj/item/clothing/suit/space/hardsuit/security/Initialize() . = ..() @@ -536,7 +535,6 @@ armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit - tauric = TRUE //Citadel Add for tauric hardsuits //Captain /obj/item/clothing/head/helmet/space/hardsuit/captain @@ -564,7 +562,6 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/captain/Initialize() . = ..() @@ -586,6 +583,7 @@ item_state = "clown_hardsuit" armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 30) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clown + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/suit/space/hardsuit/clown/mob_can_equip(mob/M, slot) if(!..() || !ishuman(M)) @@ -615,6 +613,7 @@ slowdown = 3 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient resistance_flags = FIRE_PROOF + mutantrace_variation = STYLE_DIGITIGRADE var/footstep = 1 var/mob/listeningTo @@ -710,7 +709,6 @@ var/recharge_rate = 1 //How quickly the shield recharges once it starts charging var/shield_state = "shield-old" var/shield_on = "shield-old" - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/shielded/Initialize() . = ..() @@ -750,13 +748,11 @@ var/mob/living/carbon/human/C = loc C.update_inv_wear_suit() -/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands) - . = list() +/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, style_flags) + . = ..() if(!isinhands) - if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', shield_state, MOB_LAYER + 0.01) - else - . += mutable_appearance('icons/effects/effects.dmi', shield_state, MOB_LAYER + 0.01) + var/file2use = style_flags & STYLE_ALL_TAURIC ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/effects.dmi' + . += mutable_appearance(file2use, shield_state, MOB_LAYER + 0.01) /obj/item/clothing/head/helmet/space/hardsuit/shielded resistance_flags = FIRE_PROOF | ACID_PROOF @@ -826,7 +822,7 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0 - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC /obj/item/clothing/suit/space/hardsuit/shielded/syndi/Initialize() jetpack = new /obj/item/tank/jetpack/suit(src) @@ -855,7 +851,6 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat dog_fashion = /datum/dog_fashion/back/deathsquad - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat name = "death commando helmet" @@ -886,7 +881,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) var/energy_color = "#35FFF0" var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/hardsuit/lavaknight/Initialize() . = ..() @@ -935,8 +930,6 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - tauric = TRUE //Citadel Add for tauric hardsuits - var/energy_color = "#35FFF0" /obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize() diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 88e17d158c..b9b51e5d1c 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -53,6 +53,7 @@ Contains: armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/beret name = "officer's beret" @@ -65,7 +66,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/officer name = "officer's jacket" @@ -81,6 +82,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE //NASA Voidsuit /obj/item/clothing/head/helmet/space/nasavoid @@ -95,6 +97,7 @@ Contains: item_state = "void" desc = "An old, NASA CentCom branch designed, dark red space suit." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/nasavoid/old name = "Engineering Void Helmet" @@ -116,7 +119,7 @@ Contains: desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" flags_cover = HEADCOVERSEYES - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE dog_fashion = /datum/dog_fashion/head/santa @@ -127,6 +130,7 @@ Contains: item_state = "santa" slowdown = 0 allowed = list(/obj/item) //for stuffing exta special presents + mutantrace_variation = STYLE_DIGITIGRADE //Space pirate outfit @@ -140,14 +144,14 @@ Contains: strip_delay = 40 equip_delay_other = 20 flags_cover = HEADCOVERSEYES - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/pirate/bandana name = "royal bandana" desc = "A space-proof bandanna crafted with reflective kevlar." icon_state = "bandana" item_state = "bandana" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/pirate name = "royal waistcoat " @@ -161,6 +165,7 @@ Contains: armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75) strip_delay = 40 equip_delay_other = 20 + mutantrace_variation = STYLE_DIGITIGRADE //Emergency Response Team suits /obj/item/clothing/head/helmet/space/hardsuit/ert @@ -189,7 +194,6 @@ Contains: slowdown = 0 strip_delay = 130 resistance_flags = ACID_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/sec @@ -251,6 +255,7 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec @@ -298,7 +303,6 @@ Contains: item_state = "s_suit" desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65) - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/helmet/space/eva name = "EVA helmet" @@ -317,7 +321,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/freedom name = "eagle suit" @@ -330,6 +334,7 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF slowdown = 0 + mutantrace_variation = STYLE_DIGITIGRADE //Carpsuit, bestsuit, lovesuit /obj/item/clothing/head/helmet/space/hardsuit/carp @@ -340,7 +345,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp brightness_on = 0 //luminosity when on actions_types = list() - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/hardsuit/carp/Initialize() . = ..() @@ -356,6 +361,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy whimpy whoo allowed = list(/obj/item/tank/internals, /obj/item/gun/ballistic/automatic/speargun) //I'm giving you a hint here helmettype = /obj/item/clothing/head/helmet/space/hardsuit/carp + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal name = "paranormal response unit helmet" @@ -366,7 +372,7 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT actions_types = list() resistance_flags = FIRE_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() @@ -380,7 +386,6 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() @@ -427,7 +432,6 @@ Contains: slowdown = 2 armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0) strip_delay = 65 - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(!torn && prob(50)) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 7c829e7570..7aa51155fb 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -12,7 +12,6 @@ var/next_extinguish = 0 var/extinguish_cooldown = 100 var/extinguishes_left = 10 - mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user) . = ..() @@ -47,7 +46,7 @@ var/on = FALSE var/light_overlay = "envirohelm-light" actions_types = list(/datum/action/item_action/toggle_helmet_light) - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/plasmaman/attack_self(mob/user) if(!light_overlay) diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index e6710ee8f9..178e707125 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -14,7 +14,7 @@ w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) armor = list("melee" = 40, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 80, "acid" = 85) - + mutantrace_variation = STYLE_DIGITIGRADE //Green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/green @@ -50,6 +50,7 @@ name = "orange space suit" icon_state = "syndicate-orange" item_state = "syndicate-orange" + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Blue syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/blue @@ -109,7 +110,6 @@ name = "green space suit" icon_state = "syndicate-black-med" item_state = "syndicate-black" - tauric = TRUE //Citadel Add for tauric hardsuits //Black-orange syndicate space suit @@ -134,6 +134,7 @@ name = "black and red space suit" icon_state = "syndicate-black-red" item_state = "syndicate-black-red" + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Black with yellow/red engineering syndicate space suit diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index faec9e2f4c..d05afc15e0 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -9,56 +9,16 @@ var/blood_overlay_type = "suit" var/togglename = null var/suittoggled = FALSE + mutantrace_variation = STYLE_DIGITIGRADE - var/adjusted = NORMAL_STYLE - mutantrace_variation = MUTANTRACE_VARIATION - var/tauric = FALSE //Citadel Add for tauric hardsuits - var/taurmode = NOT_TAURIC - var/dimension_x = 32 - var/dimension_y = 32 - var/center = FALSE //Should we center the sprite? - -/obj/item/clothing/suit/equipped(mob/user, slot) - ..() - if(ishuman(user)) - var/mob/living/carbon/human/H = user - - if(mutantrace_variation) - if(DIGITIGRADE in H.dna.species.species_traits) - adjusted = ALT_STYLE - H.update_inv_wear_suit() - else if(adjusted == ALT_STYLE) - adjusted = NORMAL_STYLE - - if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) - if(H.dna.features["taur"] in GLOB.noodle_taurs) - taurmode = SNEK_TAURIC - if(tauric == TRUE) - center = TRUE - dimension_x = 64 - else if(H.dna.features["taur"] in GLOB.paw_taurs) - taurmode = PAW_TAURIC - if(tauric == TRUE) - center = TRUE - dimension_x = 64 - else - taurmode = NOT_TAURIC - if(tauric == TRUE) - center = FALSE - dimension_x = 32 - H.update_inv_wear_suit() - - -/obj/item/clothing/suit/worn_overlays(isinhands = FALSE) - . = list() +/obj/item/clothing/suit/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) + . = ..() if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") if(blood_DNA) - if(tauric && taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) - else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + var/file2use = (style_flags & STYLE_ALL_TAURIC) ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/blood.dmi' + . += mutable_appearance(file2use, "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 5d0a9b9914..5729daa741 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -9,7 +9,7 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT resistance_flags = ACID_PROOF flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -28,7 +28,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = ACID_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 4318839845..816f0edeba 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -207,7 +207,7 @@ item_state = "techpriest" body_parts_covered = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/techpriest - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/hooded/techpriest name = "techpriest's hood" @@ -216,4 +216,4 @@ item_state = "techpriesthood" body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index b67fda421e..a98a4489e9 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -816,7 +816,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST resistance_flags = NONE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid /obj/item/clothing/suit/assu_suit diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 559d3006a1..79b221a807 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -179,8 +179,7 @@ RemoveHelmet() /obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet() - var/mob/living/carbon/human/H = src.loc - var/datum/species/pref_species = H.dna.species + var/mob/living/carbon/human/H = loc if(!helmettype) return if(!helmet) @@ -194,18 +193,6 @@ to_chat(H, "You're already wearing something on your head!") return else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1)) - if(helmet.mutantrace_variation) - if("mam_snouts" in pref_species.default_features) - if(H.dna.features["mam_snouts"] != "None") - helmet.muzzle_var = ALT_STYLE - - else if("snout" in pref_species.default_features) - if(H.dna.features["snout"] != "None") - helmet.muzzle_var = ALT_STYLE - else - helmet.muzzle_var = NORMAL_STYLE - H.update_inv_head() - to_chat(H, "You engage the helmet on the hardsuit.") suittoggled = TRUE H.update_inv_wear_suit() diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index fbdca6ddbc..a6c272e550 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -21,7 +21,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar) slowdown = 1 armor = list("melee" = 15, "bullet" = 5, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT @@ -30,11 +30,12 @@ strip_delay = 60 equip_delay_other = 60 resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" item_state = "firefighter" + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/suit/fire/heavy @@ -50,6 +51,8 @@ icon_state = "atmos_firesuit" item_state = "firesuit_atmos" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /* * Bomb protection @@ -71,7 +74,7 @@ equip_delay_other = 70 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/bomb_suit @@ -94,7 +97,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = NONE - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/head/bomb_hood/security @@ -131,7 +134,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/radiation name = "radiation suit" @@ -151,4 +154,4 @@ flags_inv = HIDEJUMPSUIT|HIDETAUR resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC diff --git a/code/modules/clothing/suits/vg_suits.dm b/code/modules/clothing/suits/vg_suits.dm index 08fe029f9e..be6cd9938e 100644 --- a/code/modules/clothing/suits/vg_suits.dm +++ b/code/modules/clothing/suits/vg_suits.dm @@ -9,7 +9,7 @@ siemens_coefficient = 0.5 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/xcomsquaddie/dredd name = "Judge Armor" @@ -18,7 +18,7 @@ item_state = "dredd-suit" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/xcomarmor @@ -32,7 +32,7 @@ siemens_coefficient = 0.5 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/vest/neorussian name = "neo-Russian vest" @@ -41,7 +41,7 @@ item_state = "nr_vest" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/doomguy name = "Doomguy's armor" @@ -53,7 +53,7 @@ armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0) icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/kaminacape @@ -63,7 +63,7 @@ body_parts_covered = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/officercoat name = "Officer's Coat" @@ -71,7 +71,7 @@ icon_state = "officersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/soldiercoat name = "Soldier's Coat" @@ -79,7 +79,7 @@ icon_state = "soldiersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/russofurcoat name = "russian fur coat" @@ -89,7 +89,7 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/doshjacket name = "Plasterer's Jacket" @@ -98,7 +98,7 @@ body_parts_covered = CHEST|GROIN|ARMS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/maidapron name = "Apron" @@ -107,7 +107,7 @@ body_parts_covered = CHEST|GROIN icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/clownpiece name = "small fairy wings" @@ -116,7 +116,7 @@ body_parts_covered = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/clownpiece/flying name = "small fairy wings" @@ -124,7 +124,7 @@ icon_state = "clownpiece-fly" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/raincoat name = "Raincoat" @@ -133,6 +133,6 @@ body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index bb5f909521..980a98786d 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -11,11 +11,10 @@ var/sensor_mode = NO_SENSORS var/can_adjust = TRUE var/adjusted = NORMAL_STYLE - var/suit_style = NORMAL_SUIT_STYLE var/alt_covers_chest = FALSE // for adjusted/rolled-down jumpsuits, FALSE = exposes chest and arms, TRUE = exposes arms only var/obj/item/clothing/accessory/attached_accessory var/mutable_appearance/accessory_overlay - mutantrace_variation = MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/under/worn_overlays(isinhands = FALSE) . = list() @@ -49,8 +48,6 @@ if(random_sensor) //make the sensor mode favor higher levels, except coords. sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) - adjusted = NORMAL_STYLE - suit_style = NORMAL_SUIT_STYLE ..() /obj/item/clothing/under/equipped(mob/user, slot) @@ -61,14 +58,6 @@ if(!alt_covers_chest) body_parts_covered |= CHEST - if(mutantrace_variation && ishuman(user)) - var/mob/living/carbon/human/H = user - if(DIGITIGRADE in H.dna.species.species_traits) - suit_style = DIGITIGRADE_SUIT_STYLE - else - suit_style = NORMAL_SUIT_STYLE - H.update_inv_w_uniform() - if(attached_accessory && slot != SLOT_HANDS && ishuman(user)) var/mob/living/carbon/human/H = user attached_accessory.on_uniform_equip(src, user) diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index c6796d64c9..e42049ef6b 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -69,7 +69,6 @@ item_state = "lb_suit" item_color = "cargo" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = MUTANTRACE_VARIATION alt_covers_chest = TRUE /obj/item/clothing/under/rank/cargotech/skirt @@ -132,7 +131,7 @@ item_color = "blueclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/greenclown name = "green clown suit" @@ -142,7 +141,7 @@ item_color = "greenclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/yellowclown name = "yellow clown suit" @@ -152,7 +151,7 @@ item_color = "yellowclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/purpleclown name = "purple clown suit" @@ -162,7 +161,7 @@ item_color = "purpleclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/orangeclown name = "orange clown suit" @@ -172,7 +171,7 @@ item_color = "orangeclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/rainbowclown name = "rainbow clown suit" @@ -182,7 +181,7 @@ item_color = "rainbowclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/clown/Initialize() . = ..() diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 51e34c7b3e..4dc8e7b5e5 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -667,7 +667,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) slowdown = 1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE can_adjust = FALSE strip_delay = 80 var/next_extinguish = 0 diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 67ef30f0cc..a615081f24 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -4,7 +4,6 @@ gender = PLURAL body_parts_covered = GROIN fitted = NO_FEMALE_UNIFORM - mutantrace_variation = MUTANTRACE_VARIATION can_adjust = FALSE /obj/item/clothing/under/shorts/red diff --git a/code/modules/clothing/under/vg_under.dm b/code/modules/clothing/under/vg_under.dm index f416f2ecc5..555ed3b795 100644 --- a/code/modules/clothing/under/vg_under.dm +++ b/code/modules/clothing/under/vg_under.dm @@ -9,7 +9,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/stripper_green name = "green stripper outfit" @@ -19,7 +19,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_orange name = "orange wedding dress" @@ -30,7 +30,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_purple name = "purple wedding dress" @@ -41,7 +41,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_blue name = "blue wedding dress" @@ -52,7 +52,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_red name = "red wedding dress" @@ -63,7 +63,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_white name = "white wedding dress" @@ -74,7 +74,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/mankini name = "pink mankini" @@ -84,7 +84,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /* /obj/item/clothing/under/psysuit @@ -129,7 +129,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/russobluecamooutfit name = "russian blue camo" @@ -140,7 +140,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/stilsuit name = "stillsuit" @@ -151,7 +151,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/aviatoruniform name = "aviator uniform" @@ -162,7 +162,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/bikersuit name = "biker's outfit" @@ -172,7 +172,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/jacketsuit name = "richard's outfit" @@ -183,7 +183,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE obj/item/clothing/under/mega name = "\improper DRN-001 suit" @@ -194,7 +194,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/proto name = "The Prototype Suit" @@ -205,7 +205,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/megax name = "\improper Maverick Hunter regalia" @@ -216,7 +216,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/joe name = "The Sniper Suit" @@ -227,7 +227,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/roll name = "\improper DRN-002 Dress" @@ -238,7 +238,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/gokugidown name = "turtle hermit undershirt" @@ -249,7 +249,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/gokugi name = "turtle hermit outfit" @@ -260,7 +260,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/doomguy name = "\improper Doomguy's pants" @@ -271,7 +271,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/vault13 name = "vault 13 Jumpsuit" @@ -282,7 +282,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/vault name = "vault jumpsuit" @@ -293,7 +293,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/clownpiece name = "Clownpiece's Pierrot suit" @@ -304,7 +304,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/cia name = "casual IAA outfit" @@ -315,7 +315,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/greaser name = "greaser outfit" @@ -325,7 +325,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/greaser/New() var/greaser_colour = "default" @@ -344,7 +344,7 @@ obj/item/clothing/under/mega item_color = "greaser_[greaser_colour]" can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wintercasualwear @@ -356,7 +356,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/casualwear name = "spring casualwear" @@ -367,7 +367,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/keyholesweater name = "keyhole sweater" @@ -378,7 +378,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/casualhoodie name = "casual hoodie" @@ -389,7 +389,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/casualhoodie/skirt icon_state = "hoodieskirt" @@ -397,7 +397,7 @@ obj/item/clothing/under/mega item_color = "hoodieskirt" can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /* /obj/item/clothing/under/mummy_rags @@ -432,5 +432,5 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 559ffc0673..c83c7cc873 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -14,7 +14,7 @@ flags_inv = HIDEJUMPSUIT|HIDETAUR allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/head/hooded/explorer @@ -70,7 +70,7 @@ clothing_flags = THICKMATERIAL //not spaceproof max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC slowdown = 0 armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm index 15640a2699..b31a41bcc7 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm @@ -27,28 +27,33 @@ extra2 = TRUE center = TRUE dimension_x = 64 - var/taur_mode = NOT_TAURIC + var/taur_mode = NONE //Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2 + var/alt_taur_mode = NONE //Same as above. color_src = MATRIXED /datum/sprite_accessory/taur/none + dimension_x = 32 + center = FALSE name = "None" icon_state = "None" /datum/sprite_accessory/taur/cow name = "Cow" icon_state = "cow" - taur_mode = HOOF_TAURIC + taur_mode = STYLE_HOOF_TAURIC + alt_taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/deer name = "Deer" icon_state = "deer" - taur_mode = HOOF_TAURIC + taur_mode = STYLE_HOOF_TAURIC + alt_taur_mode = STYLE_PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/drake name = "Drake" icon_state = "drake" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/drider name = "Drider" @@ -58,67 +63,68 @@ /datum/sprite_accessory/taur/eevee name = "Eevee" icon_state = "eevee" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/fox name = "Fox" icon_state = "fox" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/husky name = "Husky" icon_state = "husky" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/horse name = "Horse" icon_state = "horse" - taur_mode = HOOF_TAURIC + taur_mode = STYLE_HOOF_TAURIC + alt_taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/lab name = "Lab" icon_state = "lab" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/naga name = "Naga" icon_state = "naga" - taur_mode = SNEK_TAURIC + taur_mode = STYLE_SNEK_TAURIC /datum/sprite_accessory/taur/otie name = "Otie" icon_state = "otie" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/pede name = "Scolipede" icon_state = "pede" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/panther name = "Panther" icon_state = "panther" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/shepherd name = "Shepherd" icon_state = "shepherd" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/tentacle name = "Tentacle" icon_state = "tentacle" - taur_mode = SNEK_TAURIC + taur_mode = STYLE_SNEK_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/tiger name = "Tiger" icon_state = "tiger" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/wolf name = "Wolf" icon_state = "wolf" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 1cea4a6e82..8baeb93195 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -21,7 +21,7 @@ flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH layer = MOB_LAYER max_integrity = 100 - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 96bd62b1f6..1c81198d85 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -610,22 +610,22 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) if("tail_lizard" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "tail_lizard" if("waggingtail_lizard" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "waggingtail_lizard" else if ("tail_lizard" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_lizard" if("tail_human" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "tail_human" if("waggingtail_human" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "waggingtail_human" else if ("tail_human" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_human" @@ -685,11 +685,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Other Races if("mam_tail" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "mam_tail" if("mam_waggingtail" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "mam_waggingtail" else if ("mam_tail" in mutant_bodyparts) bodyparts_to_add -= "mam_waggingtail" @@ -720,10 +720,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) species_traits += DIGITIGRADE var/should_be_squished = FALSE if(H.wear_suit) - if(H.wear_suit.mutantrace_variation == NO_MUTANTRACE_VARIATION) //we got digitigrade suits now fam + if(!(H.wear_suit.mutantrace_variation & STYLE_DIGITIGRADE)) //we got digitigrade suits now fam should_be_squished = TRUE if(H.w_uniform && !H.wear_suit) - if(H.w_uniform.mutantrace_variation == NO_MUTANTRACE_VARIATION) + if(!(H.w_uniform.mutantrace_variation & STYLE_DIGITIGRADE)) should_be_squished = TRUE if(O.use_digitigrade == FULL_DIGITIGRADE && should_be_squished) O.use_digitigrade = SQUISHED_DIGITIGRADE diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 1e4b3e9fae..6f0827b3c4 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -73,16 +73,12 @@ /datum/species/xeno/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) species_traits += DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(FALSE) - . = ..() + return ..() /datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") species_traits -= DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(TRUE) - . = ..() + return ..() //Praise the Omnissiah, A challange worthy of my skills - HS diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c0973102d6..82096dd725 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -76,15 +76,12 @@ /datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) species_traits += DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(FALSE) return ..() /datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") species_traits -= DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(TRUE) + return ..() /* Lizard subspecies: ASHWALKERS diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ae69d5dc90..439428d979 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -104,45 +104,45 @@ There are several things that need to be remembered: var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM] inv.update_icon() - if(istype(w_uniform, /obj/item/clothing/under)) - var/obj/item/clothing/under/U = w_uniform - U.screen_loc = ui_iclothing - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += w_uniform - update_observer_view(w_uniform,1) + var/obj/item/clothing/under/U = w_uniform + U.screen_loc = ui_iclothing + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += w_uniform + update_observer_view(w_uniform,1) - if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) - return + if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) + return - var/t_color = U.item_color - if(!t_color) - t_color = U.icon_state - if(U.suit_style == NORMAL_SUIT_STYLE) - if(U.adjusted == ALT_STYLE) - t_color = "[t_color]_d" + var/t_color = U.item_color + if(!t_color) + t_color = U.icon_state + if(U.adjusted == ALT_STYLE) + t_color = "[t_color]_d" - var/alt_worn = U.alternate_worn_icon + var/alt_worn = U.alternate_worn_icon + var/variant_flag = NONE - if(!U.force_alternate_icon && U.mutantrace_variation && U.suit_style == DIGITIGRADE_SUIT_STYLE) - alt_worn = 'icons/mob/uniform_digi.dmi' + if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE) + alt_worn = 'icons/mob/uniform_digi.dmi' + variant_flag |= STYLE_DIGITIGRADE - var/mutable_appearance/uniform_overlay + var/mutable_appearance/uniform_overlay - if(dna && dna.species.sexes) - var/G = (gender == FEMALE) ? "f" : "m" - if(G == "f" && U.fitted != NO_FEMALE_UNIFORM) - uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted) + if(dna && dna.species.sexes) + var/G = (gender == FEMALE) ? "f" : "m" + if(G == "f" && U.fitted != NO_FEMALE_UNIFORM) + uniform_overlay = U.build_worn_icon("[t_color]", UNIFORM_LAYER, alt_worn ? alt_worn : 'icons/mob/uniform.dmi', FALSE, U.fitted, variant_flag) - if(!uniform_overlay) - uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE) + if(!uniform_overlay) + uniform_overlay = U.build_worn_icon("[t_color]", UNIFORM_LAYER, alt_worn ? alt_worn : 'icons/mob/uniform.dmi', FALSE, style_flags = variant_flag) - if(OFFSET_UNIFORM in dna.species.offset_features) - uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] - uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2] - overlays_standing[UNIFORM_LAYER] = uniform_overlay + if(OFFSET_UNIFORM in dna.species.offset_features) + uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] + uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2] + overlays_standing[UNIFORM_LAYER] = uniform_overlay apply_overlay(UNIFORM_LAYER) update_mutant_bodyparts() @@ -270,32 +270,6 @@ There are several things that need to be remembered: if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() -/* - if(!shoes && bloody_feet) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) - if(dna.features["taur"] != "None") - if(dna.features["taur"] in GLOB.noodle_taurs) - bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "snekbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) - if(get_num_legs() < 2) - if(has_left_leg()) - bloody_overlay.icon_state = "snekbloodyfeet_left" - else if(has_right_leg()) - bloody_overlay.icon_state = "snekbloodyfeet_right" - else if(dna.features["taur"] in GLOB.paw_taurs) - bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "pawbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) - if(get_num_legs() < 2) - if(has_left_leg()) - bloody_overlay.icon_state = "pawbloodyfeet_left" - else if(has_right_leg()) - bloody_overlay.icon_state = "pawbloodyfeet_right" - else - if(get_num_legs() < 2) - if(has_left_leg()) - bloody_overlay.icon_state = "bloodyfeet_left" - else if(has_right_leg()) - bloody_overlay.icon_state = "bloodyfeet_right" - - overlays_standing[GLOVES_LAYER] = bloody_overlay*/ if(shoes) var/obj/item/clothing/shoes/S = shoes @@ -304,15 +278,17 @@ There are several things that need to be remembered: if(hud_used.inventory_shown) //if the inventory is open client.screen += shoes //add it to client's screen update_observer_view(shoes,1) - if(S.mutantrace_variation) - if(S.adjusted == ALT_STYLE) - S.alternate_worn_icon = 'icons/mob/feet_digi.dmi' - else - S.alternate_worn_icon = null + + var/alt_icon = S.alternate_worn_icon + var/variation_flag = NONE + if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) + alt_icon = 'icons/mob/feet_digi.dmi' + variation_flag |= STYLE_DIGITIGRADE + var/t_state = shoes.item_state if (!t_state) t_state = shoes.icon_state - overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = t_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi')) + overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(t_state, SHOES_LAYER, alt_icon ? alt_icon : 'icons/mob/feet.dmi', style_flags = variation_flag) var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER] if(OFFSET_SHOES in dna.species.offset_features) shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1] @@ -350,13 +326,18 @@ There are several things that need to be remembered: if(head) remove_overlay(HEAD_LAYER) var/obj/item/clothing/head/H = head - if(H.mutantrace_variation) - if(H.muzzle_var == ALT_STYLE) - H.alternate_worn_icon = 'icons/mob/head_muzzled.dmi' - else - H.alternate_worn_icon = null + var/alt_icon = H.alternate_worn_icon + var/muzzled = FALSE + var/variation_flag = NONE + if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None") + muzzled = TRUE + if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") + muzzled = TRUE + if(muzzled && H.mutantrace_variation & STYLE_MUZZLE) + alt_icon = 'icons/mob/head_muzzled.dmi' + variation_flag |= STYLE_MUZZLE - overlays_standing[HEAD_LAYER] = H.build_worn_icon(state = H.icon_state, default_layer = HEAD_LAYER, default_icon_file = ((head.alternate_worn_icon) ? H.alternate_worn_icon : 'icons/mob/head.dmi')) + overlays_standing[HEAD_LAYER] = H.build_worn_icon(H.icon_state, HEAD_LAYER, alt_icon ? alt_icon : 'icons/mob/head.dmi', style_flags = variation_flag) var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER] if(OFFSET_HEAD in dna.species.offset_features) @@ -409,30 +390,40 @@ There are several things that need to be remembered: client.screen += wear_suit update_observer_view(wear_suit,1) - if(!item_level_support && !S.force_alternate_icon) - if(S.mutantrace_variation) //Just make sure we've got this checked too - if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) //are we not a taur, but we have Digitigrade legs? Run this check first, then. - S.alternate_worn_icon = 'icons/mob/suit_digi.dmi' - else - S.alternate_worn_icon = null + var/worn_icon = wear_suit.alternate_worn_icon || 'icons/mob/suit.dmi' + var/center = FALSE + var/dimension_x = 32 + var/dimension_y = 32 + var/variation_flag = NONE + var/datum/sprite_accessory/taur/T + if("taur" in dna.species.mutant_bodyparts) + T = GLOB.taur_list[dna.features["taur"]] + if(T) + center = T.center + dimension_x = T.dimension_x + dimension_y = T.dimension_y - if(S.tauric == TRUE) //Are we a suit with tauric mode possible? - if(S.taurmode == SNEK_TAURIC) - S.alternate_worn_icon = 'icons/mob/taur_naga.dmi' - if(S.taurmode == PAW_TAURIC) - S.alternate_worn_icon = 'icons/mob/taur_canine.dmi' - if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) - S.alternate_worn_icon = 'icons/mob/suit_digi.dmi' - else if(S.taurmode == NOT_TAURIC && S.adjusted == NORMAL_STYLE) - S.alternate_worn_icon = null + if(!item_level_support && S.mutantrace_variation) + if(T?.taur_mode) + variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode + switch(variation_flag) + if(STYLE_HOOF_TAURIC) + worn_icon = 'icons/mob/taur_hooved.dmi' + if(STYLE_SNEK_TAURIC) + worn_icon = 'icons/mob/taur_naga.dmi' + if(STYLE_PAW_TAURIC) + worn_icon = 'icons/mob/taur_canine.dmi' + else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) //not a taur, but digitigrade legs. + worn_icon = 'icons/mob/suit_digi.dmi' + variation_flag |= STYLE_DIGITIGRADE - overlays_standing[SUIT_LAYER] = S.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.alternate_worn_icon) ? S.alternate_worn_icon : 'icons/mob/suit.dmi')) + overlays_standing[SUIT_LAYER] = S.build_worn_icon(wear_suit.icon_state, SUIT_LAYER, worn_icon, style_flags = variation_flag) var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER] if(OFFSET_SUIT in dna.species.offset_features) suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] - if(!item_level_support && S.center) - suit_overlay = center_image(suit_overlay, S.dimension_x, S.dimension_y) + if(center) + suit_overlay = center_image(suit_overlay, dimension_x, dimension_y) overlays_standing[SUIT_LAYER] = suit_overlay update_hair() update_mutant_bodyparts() @@ -468,13 +459,18 @@ There are several things that need to be remembered: if(wear_mask) var/obj/item/clothing/mask/M = wear_mask remove_overlay(FACEMASK_LAYER) - if(M.mutantrace_variation) - if(M.muzzle_var == ALT_STYLE) - M.alternate_worn_icon = 'icons/mob/mask_muzzled.dmi' - else - M.alternate_worn_icon = null + var/alt_icon = M.alternate_worn_icon + var/muzzled = FALSE + var/variation_flag = NONE + if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None") + muzzled = TRUE + if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") + muzzled = TRUE + if(muzzled && M.mutantrace_variation & STYLE_MUZZLE) + alt_icon = 'icons/mob/head_muzzled.dmi' + variation_flag |= STYLE_MUZZLE - overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = ((wear_mask.alternate_worn_icon) ? M.alternate_worn_icon : 'icons/mob/mask.dmi')) + overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(wear_mask.icon_state, FACEMASK_LAYER, alt_icon ? alt_icon : 'icons/mob/mask.dmi', style_flags = variation_flag) var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER] if(OFFSET_FACEMASK in dna.species.offset_features) @@ -572,7 +568,7 @@ generate/load female uniform sprites matching all previously decided variables */ -/obj/item/proc/build_worn_icon(var/state = "", var/default_layer = 0, var/default_icon_file = null, var/isinhands = FALSE, var/femaleuniform = NO_FEMALE_UNIFORM) +/obj/item/proc/build_worn_icon(state = "", default_layer = 0, default_icon_file = null, isinhands = FALSE, femaleuniform = NO_FEMALE_UNIFORM, style_flags = NONE) //Find a valid icon file from variables+arguments var/file2use @@ -596,7 +592,7 @@ generate/load female uniform sprites matching all previously decided variables //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(isinhands, file2use) + var/list/worn_overlays = worn_overlays(isinhands, file2use, style_flags) if(worn_overlays && worn_overlays.len) standing.overlays.Add(worn_overlays) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 069f30e24c..7cedfc80d7 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -286,52 +286,23 @@ if("orange") . = "ffc905" -/mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back) +/mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back, update = FALSE) var/body_plan_changed = FALSE for(var/X in bodyparts) var/obj/item/bodypart/O = X - var/obj/item/bodypart/N - if((!O.use_digitigrade && swap_back == FALSE) || (O.use_digitigrade && swap_back == TRUE)) - if(O.body_part == LEG_LEFT) - if(swap_back == TRUE) - N = new /obj/item/bodypart/l_leg - else - N = new /obj/item/bodypart/l_leg/digitigrade - else if(O.body_part == LEG_RIGHT) - if(swap_back == TRUE) - N = new /obj/item/bodypart/r_leg - else - N = new /obj/item/bodypart/r_leg/digitigrade - if(!N) - continue - body_plan_changed = TRUE - O.drop_limb(1) - qdel(O) - N.attach_limb(src) + if((O.body_part == LEG_LEFT || O.body_part == LEG_RIGHT) && ((!O.use_digitigrade && !swap_back) || (O.use_digitigrade && swap_back))) + O.use_digitigrade = FULL_DIGITIGRADE + body_plan_changed = TRUE + if(update && body_plan_changed) // most times this proc is called on on_species_gain and on_species_loss, so set_species() already handles the update. + update_body() - if(body_plan_changed && ishuman(src)) + if(ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform) - var/obj/item/clothing/under/U = H.w_uniform - if(U.mutantrace_variation) - if(swap_back) - U.suit_style = NORMAL_SUIT_STYLE - else - U.suit_style = DIGITIGRADE_SUIT_STYLE - H.update_inv_w_uniform() + H.update_inv_w_uniform() if(H.shoes) - var/obj/item/clothing/shoes/S = H.shoes - if(swap_back) - S.adjusted = NORMAL_STYLE - else - S.adjusted = ALT_STYLE H.update_inv_shoes() if(H.wear_suit) - var/obj/item/clothing/suit/S = H.wear_suit - if(swap_back) - S.adjusted = NORMAL_STYLE - else - S.adjusted = ALT_STYLE H.update_inv_wear_suit() /mob/living/carbon/proc/get_body_parts_flags() diff --git a/icons/mob/taur_canine.dmi b/icons/mob/taur_canine.dmi index 15d62144465b656fed90ba1ea486dff3099149e7..d266d1f1352b0a76920b732435c44c511c90849f 100644 GIT binary patch literal 128671 zcmb5Wby!qi+crFeAOZrSw4{Itl2Vc?AzeyHN-K?o)C}F-NSA<=v@{|^Dka@1-2wv) zGvAu~ci+!@Ki~2G^X}tdX7<{9?O1WG>pIW#B1~OXp7<8cEeHfctngAs69U2Z1%DUf|cX>O4mik;)9v=M(m(-M5Q|6 zpXN6Ag?>C@Qc;-SgkIChJR6DHe}pA38oyAn{)*)-8@%-Gy)bx`y+BzO)va*a`8}(V zU+ywCW#q4AK0lq7%_;25h~)@1WTo15%=OezsO%d(%lef4mHCBG6`|9B-P1Ia?~dl0 zv`C_)+N#HnjAe>>Y)=y>*3E;5vy(I47eK;ye1aWy1-c2JMCGbpKOlRS&_b8XAl5-- zK=eYanYpe_DsH^(srhMc5_X+2clD)zod0**-fbz>s`hp5Gv@~Z_ZOZyv_z92tCa-n zKT`khgW4I<4P>C?|aZ94R-Rj;uZDb|Rt*-%NYPD0|U{4Y9^ua;oh z$U^j$4zjKpHrKTG!yZ9M

F=s`hCG0%3$G$UJ-XF=MyY%lp-MBN|N~A4}9ol%QOp zeCOp&1tKQ0hs@R`)`e5yI$dIaJC0^%!tq7n6iLwW7bV4ZWPf`(a!leFOh!zrOk|%i zJCnqcGR6`n%$l<$DDxAfeTBhnCkC^4v0lY1uw7kyt_!C5C`_D`U6)-?4>j4&W0wX7 z|9g{L%+0PO%*p-tHqvU1t^VSlEk7ogK$`fUElM(&4I=pDpY4+B6J%`opKa6ZzblY! z?qFO0d;5E@t?6CCtLayYbG{F{?dFS4UW?We<^1Qql&e{pOm;L0Y_Elq_$|u9`af$5 zMJXiA)d+Z3GuEi#F4??`8-=%BiB%TLD#Eg#yt&wlI6D_i=aDl$386s0LH_gmuqW7w z?cMC!E6iV|TeuHxcN%h(WPh4^G}Cw};gRjHK)Fn_eqHkP<1%Gx8|Ek5boc5l_mQ4P z4TR4O-CGFE+Y~mA)FS0r>FmQX7}hfxV|b%Dn%H*yKK6C-*U0CwJOwJd#c%z zOu=y){EUpPP^vd;OOUr!{JbycA90v zw^mM0d|v1KtgNiEjcmwkOUA6fQF1KccqEOW;!)7N{du$JE ziJH%rQE+##Ac31#!$MEAmJHF_7+mM)}y>( z44K-=RHom{%j<`q`D@!F*UTHH77GnKwtaPsm-3FZU|-H7@bXrFn>xIhGBz;q_PYiT z0ij=nL#xUgW-I0P2;Z_VEfb!qj2M#%eOb*}ty|_ft$?>vps^pLEG{*XgrMiT^^_vyIn;1IZ`n0i8Ym0_b11uoNs*5G^O4KLFLnvvTb=8+@PJ8rFl8rz4w}1XkAa#P=kjW-L~FXqb?1g!hw!`$`OZZ7 ziO3{FR$z;($JE}Ls?<0l;MzYz@cl|KiQ{at1k|iX7$y0x7I!ZSYK2gmw>heWOIaWB zY}y=UyPw}IDX0w`TjTojh0tjy61kP4uCzIc`g z?5qN3XtA*!pIA_{&$J3sy(yti5yr z`$Fw4LoYG9SR-G&0v|?Cbp7T{K|$Le`6!yg$QxS5Ea}{5@}6XGkjCOD_*ok%n)y#1 zqTK~ai2mz#yid=R_RCUPgH1J=j!B3uKrexXH?@YEZ>%g-DnK+H?A|@H3g>?-l-}3u zB~#f(5qM2NK!E#K_-kv<>pn=bNPK9U>uuKP2dp^XT62^j@#R4>Ye=24ENbf|sKGIiB|cp7lAw$IE_(;gv-%B;gT0iUGYHSxJGW zjDf+nZ#g&%zAaCxd1Lkd3&K1mi$@BL>kEbq#2AVq$le|K@cHvCh)sDCn+`c+48z}N zRh3ko(e*XA>2Bi_qO}KVjk%eo)fIoqN4ykDz^G?vz% zdFDpWSD4@H(TjlV`yAMsqX{Dy+%HUgB0q|ZUX3E3kGRz7-2PXF?WV7TdbqXXugcE2fg!p{%Mcidm`ey@%^6??=h zn-)r3M>@Rd+qw`0&eFEoNj`SzLpk?xDQI}3MOX<1N}7c+=DhD?IT ziOxj7ayZy+Ss1KRt>3uzis9$1uA$CD`Fr9O&)c&fEPA!jPo`CRvb;gM)1z19TU%>R zkoO*=t`j7*dK5&{L<`ugmTjE{P8{?1O};;qoX+1E4s%}6ZNl>vPOex6zcEGNh$X%K zSRtF0)1>Q>Ez*vO(4X>hD*hnY%PshBF(HdOWpL{P{O6CTr=@lA)D4z3YeDZ)^OSXM z%E2d>$6Fc!`(NGf%gz5R%VmNW6lo|G$T7TpBr;NrQ`V{{^uWga>2k2+F{)KwAtVM2 z#A95p=#!8o^;y_bTysHJmkjpcDZ7Ml5}rIxyQ-QTk0=<%h4pjKOih{b=^IPsXWC7X zCY6+?M^$$$*s?w4vZaYERi$8MpUUF4K#xWSGVz61R?B^Mmp$^r?KEnhSDol}SwHD* zGowGvyiF&9_Ua*0mp3jdVE4K<7I4ctyMVk0-A<3L=(hZu%jCn1f>*t-MV!;4^X1YK z7rktd8*DQo>J$pL#X%WA=`iNInqQMcLaU3N=m!y{mf^w$hlvp(Iu< zU};}Lmz4-Bh#JF$7(=elZ>LPOh>(F<&Tgz*8Y%^51^6)#Px-m(k1S%f^+zGNG8|^8 zl5(p9tW6xN#$b5*TID}fH%6|A@JY%^2<0{8)}s+et1>bqjB})_0r}6Ww7g^ZX{{aq zu7YCep(^7iNIrs*1rlrGL)+M=-W5~{kI2U4_Ah>jHM4acnWjtSwbjegeQaKcaauSi z$Lenz^rlN#YKPHxCo~todR;(OBOi|Lq>`G)3)^yI`c`S_6><@< z$Efk6MJ`cbrGFwEk~3N*QA%_Q;?7FEcpvJkRg`V5T^oQaMIi4X3D!yODTX`3agW7f zRv!*o!R0UJ^$$5^!dSv)D@uy`7qF$>{Ke}>H1_A|s|@LMEF6~WZMHd_9=N^}ZT7w| zJyOWhzxI@h5%#RbBNe~m{{Q_w_ zC9)jHl^AZ05&C(G6$uOM{eEuPgSCL|ic{J>J~d}%58ZB3pA0Ll(xd)XVISJ{+e-O) zZHNyTqR6#Cd|b4UzUpgEvjC{`c@+J;-FxFNw64n^TqPj% zuH)pUFEM@fECMFz!-~S8q}&cfC=t!Tx2hHWu>&AeM#EoP&WIQv@`nDlNP2*`$IRMS zmT^$iX^a(k{eFykB*Km)EPd+nnR_Fo#bREVUaol3>kigZIo9UKtoC6&^~6mJ+bw1_ll-7JWVitzV7CNE96wvUl(ozt2oi9 zwB0nGJRpl{_Buq$R>Tp>*FW$uu!e9frl-$Vo&xU-*tC(^chDDB%wO{nJE~185bOt^ zQ^CMB=5>`|l}K}ZAri*%XP-;8VRXgCYYz9#&N_beglAv=k%Lo{k9K#21{mNI*6CFz zwW>b(+?>fhwwo_rtW`-;rrmpJkL}ic-%L4hanj2wRF}6~=HYZ@o=*|?wpf+z&Dtxv zwI(v*KOD_5JDy)cM==gK#>;(!beQ&_19rCYT+Sm@Iu^b-=amncAvn&p!mvU4=={+&OeTI1c zJuIaHXDY7g4L&dpyW^+6bHf{HF7b%{q1xKs-{1Fi!@^?mFNBm-E!yYb6~ec)qfb~d zJyz0#Rg%q%bc5+CJgoH`l8PV z{aO$m)H?13CL;*Xn%dQ9$`Puq=Ka9E?KQgevxg(T$6F(xo%w)90GE~T2ZiyudZ6Be z=%aNm6Tvq~jN1-djDp3@ivf>Y-}(4AEPG^qUgCK?rFcD->$gIbkvI2g$JzBA-v7dihNUO%R7YE$)$a!{GNFLLjk7}L+q3JL+>zpRS z5os@S$p*XW4;oTGr##*?m@0pHfRsE79w{hb$5gIPaZ~ZA#Kk=S0r6v$#L*<8A#n^+ z&FBi6Rl~YwTG_*+@pvL)do*j($A^`Sd3e^%c=)klM|yXGLVb=l=$3xP!}q&x%`L4> z^!n_*}PNX=-W~*N^3p5FcGCKCD80 zs&uHpJoO?OX1FUNC!gp&l+Y>&m8#nOkWflcGaacPZ;Y?=+x(~*VJz{;;LgB2M7(*^ zOdI+JucKdW;G^3}Pk-Cqjq)=3dkc1F?ibI8^NuLzanH6r?VGmPKn&1>U0RUtFsh(c zq>70qsLYrXSDEz#5})<7rh(U!XcF61EsftJJqwsC4xeQ8o0AS_-_8oQ4ur&XE48-t z!21{UGKI%PuiI!hhxFJuyiIhAj)tc_ws(5dhkULlLI;O2v(;e(yoCEo`{%yrQ;^0Q zK47{71953+X&a9c5}NE1v0 zn-{pU_7{ih7x%ZQOP&Y`J?eR_t#i_`5X{}sKHKC=OGm8uqXG1GjL%B*y#0ZT)7V1f z2Dy>%dB7VS&tIm++q9GJ@WmaZrU4gyi&F{KibU0sPCmR{Is$fxe%gN5=P@c%#ni2t z*6UiqqFEPzIJ=~*qHT?jT`jX|jnD8|iq-!BI8Qt&=9_N+2Z{*}J{ZCM&yF0!3vyqY ze{ViSDvR{f7nJEg|+|<_Vk17u!b`0GLTqDYOMJP@|O4Xp%S;L*N(6(nb%?wr}PO5F3qs>TzPP5X9~kae*?!1=4buOz;1;+Ajo zUPiUgOyIMd3^%yB|I!-UQdz}6hq}caw_dE0d^;&UbB7we2crhuT%o3Z9E&v0952Ud z-ZC887Vs9<8a-Un08ux7bGt)K__p~EL7uCq>l}Fdr#1?7QFooyGNHpt*m$MD-VY-fzzWe24(Y5JRe8iisZ8hNp8080|)F`wj#xCcbr=c%IUnJ z2we%5;7@$Oi2{bcy^+8cdO<*7e)RjBy?~z;r=tj6KQ!RGZ!=6hSIa>|X87^R!e7GK zXZ6N6rF_Yo>&XNjX0{}}pi1`)-xlbh^4yE+M_rCOw^uKM7VW3K;5{u|S037=G7r+In;nvjyU-<0dZUp`C`g&L=s;VnNyff35gtxcjavaq4#d}Q{p{t08ge8j z7`ps~uW$k`M;NJ-%sO4&=E^saqfkKxq)YW*9Ip~nmfEX=+TAB=3=J1at(ivv=}1fz znaXc_b_N&jez1Sh!#@8f#C`{x`zeB&Q?kDZ09T*IIWLz?z}=kq_>jC};qS=t_?QGj zhl(Q4X1RUAS294p`0P3vp{e&}4U~!S01B~!Dtz;wi)Si=V}2ZM$*&_Z7p4V2-ZlG?bB z?-jMxW`M>MUy)j~IyY(AVTyE@2$U50Hq_NFDWY2?21-A6!A{f6`d_F!$cJXn?+dv# z&q5rZ(h}U{V?3pW_>MV1u$b^N2IU~@Q`FzDC8}9k$sEpvMb_~b>n-tZ7Q=JPr>__Y;eY2%bFSQ+uoL`L^zWe{)SZdW6G5}pl&iX* z=Ek1TUBt)#yZ7sqkc^IcX>*c_hxYD<>BU;9B16hqe;fuoTmCT~h`cu2RvI8cT#^d^ z3v6T;9+3keDJ_4%O;85f4|4{Mq=Cx9JPUG#rnlKE&^&UObMZydLT6sXIVl76b5w>b zzze@_?nx*L^ZN2VKM+16td0;8sQzBk)xLQg^OB$Z@RSMkHt0Yo0~&l%5#eFCNfwCj zVyp%$N?u5$k9%f!b<{|-D{9YL|BAT1ydn|$>zLOU`pe3?l=Jmj*y&Xz|z7XULVNWhbmjK(d-xO{Z5G+?($CF;hT7iZUs`H zJa7xgv91<#>UR@RZ6i{^A6&!RaO?on9uL4W%F*8iphaIUUpGBvfH-P5wYcjkheMv~ zIpb<2f^~LoM>h7W6cdvlz~TJc=brn#6TK&l480?NXQW{;w<}HtP7DI>+KeTh1_1R) zKY#9TJjHWJfnJi}+&yqfK050`pnJ7{jnoUtj@h~kb6y1#slI~ZnzoBf6-mkkh z{x-jPvtWUH(k|1E5OR8U%LVs1Xx8VuDC)V{j}3@SP@p3to90E>Edq_`k{V$|vCDkO zO!uHSllS<2mw~6g?b%6vV%b6(4q_2ZTof;Kxq8A+sQDgX7h{{u#_87IFTo>{k&|GAnDqb>PU-c0nrB*>K?kWv5~HNV0D%z<2KRJ4?Y@vP3I>uHqlw;$|jKJdAnWw z_)40Hd83}Q@E?I8)HjK?@xj*Km8EXXsmc5ySRRgDl<*Fv-`=-yU@)D;F^&WNzpw^9A*MM2odG7d>8?&8 z62bYNR^E~(EQV+~0{I34=V_)#gjY9^IOTjD>?yoP(Q%0Pp{}p69EJMS8kljcd9Aco zUUr%cp7lb)SI-U>hc*jp{+?NA*wzVgQ4pSaQes^bLvXXoO|GMFvFRpb!g@ce^+;)H z7!Ei{5phGm{8tLREsySD8Nly88>}{l)vMNYUeAVm8_ZPX!}K+Zs2%DYuwCCm$lGE7sSg40D(drBDH?jh13?MpNYz~7A2wheGa~XAkrBV;+Y7#ZO9iLJoOp4Ta2&tz zaZ$coUS3XrM$)$Z)VZ=P?7NO3e(mhy%*>Z5p22hc>R>fS4zrA&`lntv_2J|hl9z=c z4oGT^p`sXQSouoV4ZWd)NGEgR>|wk0Mq8|J-XDwCvND&CaE{CB>&%GaFSUFYX87<3 za*hcvuKbsRUQK;U6M9B}?l|@yjAv9hV|8|f#rgicPH#)rkNx@Ps_cl@xCiwt*P`!} zZuse<-ab2go-?o0>Fz)1Jzr&%OhR(nXgwp~nvs~0_Ts%W#UPuo0EzH+jsy;(dsGn8 zQsqJn#`!w~_86~E9^W)lK4riSC*d_m4ME{*p0t1s)6C(Hls2RS4UDN*Hlb*w!eiD) z_#5E6Unk!1$)@QZcRm4SKmHpGZ6I6%FQXY$o;D|w&X20=oS0M4rW(W}I+;aC(K0R$ zk57vAQXkyXui?M_6qxLw@(X{&f!)h*NsE-atn*8y6&qg|kW>(W@Q312%H@mGo`L;T z(AGo1Z$EK^I&4Utr#w2F-E-@IOmTa6QLz#3KX0$IiypczZ2GkQ#+dRvzKkvbsyF#( zwlQq9pKnXEZ_9g7m&=zcbiVxfSU&FP1-1A1X>lbnOm6H1+>o6g`jF8I9k?lFR;BLz zG&{*`l*dcu=Ri53gF$trY-re5EI$AzNw{;jytyOHcUsi6+_cm55h7{ZoOI-6iN(vW zwU5H-m2ysGu#~Ubd&xDNP0p?g)zSA9ueK|ptLvYZj=RR0W*>X@YZ7L)vFSeLzuO!w z>=)e@ZS=8DCd89~mb7>*oz!Sv#Xc_z$0DvP_)Tx$&p67)R%m?2#Z+T>4c3p3Ysn@H z3*tl%Unl!c1BdogEVWEfxgJ?(E4Aos<`0xth?0#_M(Fp9UkN;Ar^P@1Z}6*x-};Xi zgd*o_$QkYMzgt zx8E2e>3Inz!>hj}Z>5W~0Ll}N6&`^lDlqC?pOz#=$D;77uK%Jn?dw-{Nc4TN?h=OR zxIv*;qnnC7q*58%zr8Mw)^Kp~@yP`~-d(34toUSBhFqrFvJFT|1!0o6@dROa-~KFHS4Q589b<`~0KFuDJo~;UMEoRJ%fQ>ed&c?Appe#x zR3L+E)#ElfgN^UkFRVppl@%4knS-%rw$%i-ii$?aUOLK%0~*=0tNqZ)(UCV7hZ!=| zL^`!Am{M0ZC@bJQ5E7!;eN&?QW-GsAGs}J22U>{=)3;;Ona+0rLX+{M0rqQfmqzwS_8%ehbGF5mm*w*I39xWG~Tvug5PlIV}^ZHnEKDehDN zRimS`d%&GtjQuKkK_zDaJkKeT!{f42@$JKPJspqTp?@LOq-HX@?iAQCLIINAch)e1Z_LC53ekga2)}<+I zxI;A-^HfI)?>1epudn6bk*&aOe08nrp%=X4iMuSXq#!;nPjRq6QHwY-x>i8@MMRA; z-uYilXVcLs%XkO(kmMjM>RClZsH89M_Fzrzxq*Hcv2a>)!Pm5M=&*kB$W=;Qj1UGT z|A{dIhqfMN4g=GcfU#IzwQI(-bTY^_v4~K8>0hxgBlIFTkHz#nniSgNb|Ucg0oz0iVU&H}8#V zRr3YHorO#=d|ApH>UfOv9*{x1Z<(~-57tiJ}Qvo~T zXN1O~ks1yKU2$D@lVe&IDcPYly7AgZ5+#S>jx-QYMY zc$z2@@2!c7kU$c|F?V&Zccc9}pRO$MpDQQej z&e4t8!!hL-xBr9rJZr#(GYd{?ZX9Pq?slp@UfbTg*H2`5_ig;1&NlG}XJH7`&EM?Vi|_S~46nUR{fZJFs0Wo2X@Vyk_RkP571jy$4o z!xhbcR6*-{-`DEemy0ThbhpeP#WjfF*-^9mtwg&#K1$-z11k&chs5#L2=*v7EgG~$ z;q|o9aDRW@!7(yVCspVzDd4rBsTxBW@^YN8S<@=SWNAlR^)}Z=j}+vmhxrq!pT!{H z=&mIQ_z3#2%;1U}px)D3GscYsA5U19mOnWCCJlY686j;P+l180B&}s~BKPpVRIX6@ z`pB#may!%7_)vS-3zXy-;<8nU%yU)-jIC#H%S1|h&6iM%?swX)h-g%n3`p&{UA0Oe zUyn~bl=AI4Ke&U=v1a@;)~5*3uABKcFr;J4cy}Vq)~G+nPcg;5 zfbY#dwj`RRiSow}q5>kCVsl6ltg2bZ7^f5J`?>x^$@|-O=!lWxJ{k0Y$Pj3;pHoWL5QWdmudpQToRK19d3jYHj2saAahn$aJwA@x`!B%Kt z>d2;nI$&@UpzPofia5{fhIhrLCiWuk;sYF_ZrLF&eLXxbk`=?#&K4tRIKutq>^vsHC} zX>dNOvr^vfB6D$Kw^dy^&l#nbixR+9FGDmAlYz zz<(&IwL!T;@=dyn;Ak=~de-X`0%xZAQQTw=d8ma-ATL?=0;yrzy=2A0L7<7!*@*76 zJP^-a;{k4fL8h2u)$H`}%OKe{{9B73U+n2GJNRi*ez_zIeY(p<_;H%E;!DagDII7e z*(9YtyzuUgs3_-#VOl}9aVspqNuHw~cCH?LE;83zxru{B3-Z2Kq*Ev;l6hp4OMp7_ zkbvo-gZL{H_kI}9Gf4?%>FTcE(Lve692Evd?-udCqUmw}w8;t6>}R^z*F&l}+@qvPj@!7a^2y z9F>?AH|Pvg(5Xo)-2h?b=4tLXgQ#!%LmFCIDnW(E)t2RFZdsD{zaI|>DM3a?_;B&? z@+Lzb3HZ(WuZBf3C7ltmK2Wcag?t zzX(ECQ(N*{5@`xEpO(kOERtx@o=M~5xOjiH>@Pu72rPW8F)?yKl6X~l6d3VMApZis zH=z8maV|CV41X<3R<;)(jNx>R&mY`-T|u8MFiHjA7{)l z)t@F>s5SX7Et%LB9^+`{mnwMd1dWIczd)AsES%n*nVAvqn*KZAL6h%Nf|jowb9Hec5)>Slk?(OSm5{)y+hgXQ@wZ^`I5BK(?F5(M5dE|<;)?p~ zlwPsNZ_K*+8WIk-zOhgZ%cB*L)UGr~aTgKl{xrC^QrS82vy#3YU43gu4Y_@EMMk)G z>)DtSv7ke-&%6^|Zq6!kht4Vt7tPPCLteuxBECWbEj z$aiJ;Z@Ms;u->cmfMmjc^WIqm0xj!IK)im8%YNj+_p}@KGsk7!=bKMh=mP=1fYEkW zWU0?}#M+(8qs8B;D7d}hS?IDzW>jKgqNc8{bayc=Rxgz+OHj}aP_p786fa@=u`(Mu z5{FqN>wxnY8rqc+D_snQ1bH=Jsef~)&Ar4*CBMTfBQpv%&fSJ-o2m8_7GFZP2M~H} zoohXS!OYCOdH?=PNlDxW7Pysovhl*IU7IHOuK4hj7VECm*u(_0jH^|f7K?Wqm;;NY zJ4mrpazI5@xL}2;F)3q=UpM-af`Bp81(IiXoU^fMP0ph2Q?3uFEN3NE&>ZpU)~f+^ zw7SjLM3?l4zrXMG5})C%u)F{Y9Y8-~^V&7MaNk_E87vA>0q7Qoq%wPE2Rz*s#Ov{- zuwf(oQu!byl3lyak!LP7rvf+SsxFGqlKBGw{&dOVipM7(@;xQ;DnPYyTc+^Yq|>n+ z%%u|3Sy{o3}D#&zWw0gr?*eoj(O1c8)<2eZGMecS@lK8PlXETfH(KqPo z>nklU*kRgAKiMuhFW)S&Y$UD=I8PV!Xuc>4pj{J8((N=1RZZOLA&homOob1$A@F<7j~X z(&4U*3!WN=+lx4UEb%{o&S>v5{k60!Wnu19_Ic+~v~l_*K0BGx$ym?x@!9D?eCD`u z1bSfUsvC`I{`(lT96T@v@Mn(yDIpHr+zD5V_h8_NE zYd}!RrcSuD;D1@p0O&Y#E2|IJSI6Bfy4PlWoRCuexc1M7Ka5Lul(VJtoq->jIncPwH%kE(0dgsDS+cEB+J z`x6si`t1lWTwvY(p?^)tu|c=OvQBAX((1p+c@K>XxgVUCR0 z+0sN@G99W>kHmv_4V9`xU?o}Q8SMZzz%r%@?}m{RUEC9Xvr+N&MjhMxM|fxNhhJkF#6aI zpsMuBkXTFxmtuAGsWXtmutD5>)!+@=Lly53)i}#oezLY?n`&n1-6EN;WSp> zWBID5eFv%1GwJ4j?|I8sKtQE6vcW)#;Of%7^|HL?=`J@ak?e8UzFMqoEUDi%_tK|N z?+ca63JUJZw?-A+vhloj&8crU`=d6+(-xs@qSj#S@}e6K_po)awuUf@izD*}5XDyC zZyoXM?i21nzEs{g#TkKjKWl?szmA`2fB%Sc-NL+WfNT5U3ErV!D{)hVM0rH;_Ux{E zgHOXC|Gqq zi$EWQl&;_Efw8ZUJgxk(-?jd};Okc(r}qxj(jBW*u)O^1%-q4yQ}ZqaKa=>=Q9iyg z>duJ;)AOVy&8lJQ_r_i)2kwT?H^eOdi}mJd^O~*wPv%3g+JBSS|Ie)Vs#rNr@zM3g z_UAZF3oQ;OoOr4R*X*Im?a|@kP03os*N?npLVWOcLC>=Jg^e$djl zqcmAPnz}B07Qp43jTm30w4Gc*&)v9M^foJ5l)$}-H8wi>Tw9w$g#?{qy6F2FmKaSZ z`Wyg!oGVqbs4lrhafCE*=dz1O(dUW`PI9%Si27e63KX@%`~g&2TZt5(HZ30n_Y zCVBqkf79nAf4x-5p2cNLYztHR*{$fulR_c*ZF57uWOph_N;W2on5~}{u$*6(CSA)$ z`#>$)F-m6lZNqT7tC!iekwCHzBC=-;bh}4JV?bWg-cDc(8mnY+{gF2>;Hp8&0p08| z)ej<;61wBq#n6r)0uFI)7nYP)(RZtD20Z_j<>pxD=d-%_hK8PXMsIFB} zQ$eDIL#sT{5W9UC{S4Nc_d$|+l zRCK5BH4UMZ=Mj4S=YC>~&psiP*1g;>b7s3Cx3K;O1cx{_nE+)7p!E2FoV7@4p+a&n zdrDU#y`hv%Yi+7$`-9ran3U@8)W5d?n?4M_)UH=+Gss+aSNFd3*_LJP?JyfVfffTz zng2gbKlJYLodjZ-dG&J4W?$0627DY!Fs^PrfF!XVrrV#b2jor-m&MtyTP!<3@urGQDI@##vzl17ieyxxr^IY zL-o9l8)EdPjzh~Y3JMEd(@B~PAb)@g?lR>>4@HgO1PzB^LmJxm5;03^tAS7ogqwhu zKT`RY!E|Z0REYrRfdr9}9Ue&Rp0M0z(g7IMQL+vPOp^S8NYMy@A-^4&^-8oiftUp@ zIP6kBVQcl@OJ29_uNmF8f88y4TOe{R{m`9{iU<@r&#SYC(6@D0+Tx1<0l}#2i%d{z z%1ecLhV{1_@=QD<+x8Y(S@&ii54=X%_ooft-7=g)I7JMAoo92CFz&ZPA`JvJQH|ReJI8q3byP{`KQG2WagOFK# z8Ukqk$tk0}-l~}E?=VJ?s6?O%<*0^-#wgDi0K6euAu!sG+Jx3Hp`NO$1W;05@R zwq^+o-kdlnKD6MgycuG(z}$+E8p7hWT5t%B>RT#D`viRZmaE*l!!%J2ODS=ekTIB3 zU$|Tp21nIr!YI)jjYd4!Cm@lid;!4|ytei*K|%)auy1;Z%x8x#E8{vN9?Jl+UE0!O zg7w1LS-17b7)p-z!vgeEwMEwh_GL$HvVYVOU$&nox1Q1y{%KV<%gpTWCvW3^pQ5Gb z;otpK3>5yXZdl0w(nPAGMEK0_nMlTKQ28juVj!_9t~Dtd+j_M-ik_KNoc+19*QAyE zEnt2~%Qh+xD)AT}KaQ%&ZV9(pA%{#=WMcV(AGJQ0Pv50ao?LW+b*wV-#)fr-wJ3PLMxbCpoZ?I0IIi@p z9)5I@S&XJ<|tx&0of4ggvo4;HD6%?_I0jDV9;474j|6^cBHNSxVn z))sj-_&)*zt^Xx3;2vmR@?9xT%5b4)5)>u$^_C^Zq}UF{8Z~oEZ=2aT>Ua&}~Gp%2`^( zW@c^iagS!})*a(O&znU9Z$GKF9e;$GFlO)zadb1fh_1$DVStLI6C$dOi~>rGi8eG- z3!3T7vq=8zV5{*1SOS!(@gUVhsO3G9Q~p2*%~O}n8`Evkz|!!!Y^tL!QSYJ9MVxuv z{)+tk%{{3L>dS1jg!AOBn?$kjgq7EX{W?lyCuN-f7MovJ8jMqU%!{M~nCB2|*TNS7`2Z z%lYf8Q*Qo+_ltB7Bi5vI%O@*G+g7e)mak((> z48M@Wm2O`+9an5my99cX=jfMkv+qVhHbeFK41PzyqQ~y+YI{~d-(A4I$&Kc`{PXjQ zm^@GUXPOo3yI2CNgeV}?p+}$6CAYP0j>5iCI-vvHPnM<73Sf@Ka4r7+uz^`5C|yFJ zh@+mihn6VT9&Xn)7ud~fO9ONwMK+!Zj-v6TMcK=_h1l2+7sU5?g00-5V6o2*Ua;4`dzuIaa z<%DT@ooP6K70A~T>6fxxJxS_!QV8grL96l%`c~XGi|sbFcmPNniQoHO8d*c(F~?OC zGf8G+ddq-c7y0HTY`J)^QE95xOIS3`*}bwM(mm)`Z=`+=5IDZw!viT#-h$nXDzkf= zNv`eSJrw4~7|@>0&W1dx=hgg#ZhaTKDNA#WHHyd$22RG^4`LS)sQrXvm~l7opJ(z3 z&A|LgJaYgs*w*}OH1m_Wjvwc08Y{5zPbyD@L{hy6VlXXojyO~YEffNT7pv|q?5BUG zb8LF39{6hElVDeO=pp_vvl2e+Zv6%GpdV)~Eb~FXz)-&f2#0r$nEnh?P&NJDl9J@J z#WBt0{UMGyHmGvqYz1-f&{tA~kK8rIQ64NP(F{_9-BGmbADR^)uJ^>W8@Anw+emaz zG8 z6ezVIX3*dFQv*3ku8Zkd=!d*XAAq|&bPH7z1hZ8wsGM4w4EB#kVPBBb`|HvkcSDa3 z9oJOIa-4jNWeboTVN?tP_I6UJik+1t+Txu2O0j|XN@Q(hS_rL=+X?B)0a#5qjD z6oCh7(U$<$XyB{G^K(97VoJiuvVs5fBcUcc|CrD?33c_M^7L87x(dD5-)G6KH!x4{ zQ+@IL$f~^V`0!dwx6YD0+ZIJRloK1OT(249*0BWjE^L=#)6U&$pJU6zP7VgVqE~=SrfUy zLrnpVW;V|T9Z3cpzBOPg`}$h5ufT)w`sAzc+Jxi8Yo9a`J0=E?Yk2_OywadME7djT*6;$xsQ{ z_gM}MuG*$BT&~-a>`g^V@814H-p&2n;v9%)E~L%P}B_Y$_2)yJKg>o z=kU(`bfBifbU{o$NgC>rY?WdK2FYBcU!q7SgtpBT40r-YkN^U7oxp?v6rC~Rt^>2W z_a955z|N--pdg@1(%^^KnbKUn^YlmD8Df>F)jQ5OLovRhd#f9k>y#^ z0J0B@5x9=vHk7C3Z;-BK*+AczczLoOB^`OH4}65wU(QDIb8D->zHTplKUq=BLb&Ws z@vXP$+dsL3cNpH9(7sSZmNtk9KF~fJDi&8jx4M2L&!D;OyrqBOnZe#wBeJMdyecKh zvF?9;uMnPTl)m!8`NL&x$XC0C8<;rQVqahgatM3~(AZ&vpp!rlq8$Q^|NdwZmfVmrYfFX-*imG1=ZmjjE2Tb21)n^DyhR>ZPF9Npi}R@ zyKQ%IVUV3t$7$^eQmbi))U3$}r5HFxWj&8cb9~-z?i-=M4t%Cb5{buXf*O@}#1{hx zi08Q@!hjAyr2hmU23_0{eP%GAN&w=73UiPh4N`gSn?GkgYHk^R=jKlvTVwM7Qv}e; zd$jd9y*{JBoOVY(Uah|!=+l5;)(mK7Yus+Ut`k%S8FR=`ysh&Zeh>)BSjyqGH?e&B z8A)_IgAxYB5Tfe3@<0?4`z;JW{9j$xogo%@h-u%q|EM6Qcn8Nytzae7;C~+wy!8SS zh++Ga(WHUCzMub=zudk%(U(Wa%MS z>iC2gU`4Y?Pn{auPVQ-O%Q)pYW0-Q+O=CPx(UHhb^deWHXzvP7LidD3WUW!QBOD+! zv~+>Nw3x~2X^Q#GUB;uKT_a#@N5Ekx%X#d2RmW)WCbkv$%HsG#E6$Y!O>x}5FG&o% z=tj!EpS>nWE5hI_XCLW$f%M-{Q0rrpV7+QV==U#uzedy^(Gb0@I>sgFFsGuuuAHwVZ(B<)&)zXx2sooz|n`c1EiJV9dXF^-K-d_*{-KJZk(U&p7Hq+C%O z3+tFXT8vw2=YG}C>xl>@gtpw@P}BV*#U_C~{2>nhc168I%~*>ddbsxWI5#^dIxbHv{?>E@ft22M>nl4J$k=vVBxBnGLu zSXBRr44CjVQ(!ZDXA#}T!`t?SK=X5fCEiAORK(p*3I%hPW5q%39ju!Q6N#e7?H70kKpwMQr-0Z z+335$n@mw)a~+?mjAD40w= zTu8t8^&kT5*1lNS$}N;v@cWIaR)ww!CcXHX4r@^dZh9wF7SL3urlxw7Ol8BvVNEdo z3o#HW05~1ihtj|4MC4AnLKQDqr(Lju_*S6vTO$rCuS(xqJ}5r(o2jJN1c&lGm^J(R z!>6HA^)={=!N;#Q-n#%7l zk=1VI^9j}`$rI@=|KTrq1_Pg%+~gt4BeQ}^#H>#@Q2iM${E2kdA%S`2Hg2ok&@8fx zN;b{f21ewm_2i{Z(Bd)n7p1aSgrf*__Zn3FXw`?Dp8e;RMc#x7;cAR?v_9nXXPWOm zyp4jv>uL7s2+lG;U|$QbuU{rqpLd`JmP|q#gte>moHbonVs+P!lHpux;wL{A!A9VOfTo!6+7{dvEOLqCdJLtj5> z_=Jw0{&v^W{$el#?h3-6G5pVRXVlTjSWF$LwPIp7e7%!gmsPLJ4wngZtSgKLoz!C! zHA>tMbgx%0t}w#rIAOL}(=x`gZLS{;RqsL>32#3T1`>yLoEZ^-t9|hQgTx>S z^p&a8mVlH}IWq{^ZK|c3_vYSeHJ}R-KGvql*s_pcSNX8tqtyumgyG+{F(!wgZUr0D z-bwpmlG}?F7in9{&J%tFUfCpRfcd+)t35}bcQs{=MSmV++cz9b?8Z<4U16(*gH$YyKQw=?K=Z@=&6hB0lyRCgxAKPYtM)~36V`chL zao~qBnT6FDH&WzG)VQjT>~KtPX;|v<=yH}18}@9uI=zQk)@G}rdLDKS50PV7JW(gb z{;vFuT1Wlh3Pm;e#*(V9jt?vN$hXn^<2V8-3O`CY5*l<9vLTW8@jmvcVKhAZ42Q$1 z-6m9|83rDcE}30x9lMZD&j`Tuumu{+=NB|hI}pVZlqs|xR)4ld>knk)ca&4FO8gng z+fAIZGxI4v3MVaooWUNt71gK7x-mNzyw&3<@6BZ>7}fhIp62RaZo}W)c-4$ibn&xN zC*;KO;Vu3UXhsYEM<0d{lNmH}D?8J-MDSz@9Lpaf@Z?T3)t}YtwL?EHK5A%aVB_YB zYYM|CF>S$|_c=3SVrIt3?oJOU}H{C51$NVbce@-v`=WM*Ot0F`3O+!1Dh zc^}1*jv}!+zQ1lgo;kD3B(Ylfb}c0S=;_a5`jF#|93;~x+0*sm4UJkvUj<6^>2KI5 zb|DS5k5QSfk8Xyul2cY@{&>bkv**h?>xlumG*1gwJXMqU%ZyN;>krR3)NE0uRn{+~ zK47?C@e{`H$Scu}$>`9*XqX*e%f8wA#Z&WEwRJgH?|6g4uTqwUu?@c_w-*%XsC`Yw*+}}_Zk|Nbfq=TVIcu-w-IW#<#rVbG$9Q^D zKlY3kaey6op8nKJSTpxJuzI4%?im7oI$f!hdP=g^m-c}a-LW)yUOXv4y5&O;w&hbz zm4p^`tx=#`T3Uu3O-&hfbacomDDF^G%fET^0DKsh{@c;n>mT7{rH7hUsCYJpo0TRe zDw@6ese&AQ;)2>eqF(P4xEHO5opJKnd91tPcFGuwdTeGUY~o&Nu@1R_OGGB6kjM&^8(%*ubVDP_D#uP}IE>Aj1*HGJk^a93;$t7M;b2)?a= zCFRU{?89v=VP zTB{}W8cil@GFKQD67sdo8w^UUt=vCk6Ju4b($dliE*wx!fY_Ac8&g zX6Dw$if=1uspF_2pS`T-)w}yw3cahbXV8_{+`Yy`oIX?Q1|9ACArsQ_fZ_%;vybrn zr9hw5d%b675{%2$P(NN=VFESipF7C`Qmn4Q5+cTs4H;gDu+d-Yu{=%LOFOZgOS6nD zHBK!DzGAFvBux2%FqyfPjm_;Nu7QC-%0yvnT$RyI%;rXTy5>)5A_~d%g4=Y4j~Grf zDaUC}^QppxApKjhkEBrJ}+jB9z!~ zP(|GaJAZ~Rc^E|N;oFkcaI(j$LE!){L1y;3lpz$X>hp1IdKAuPBv5@9y(CFr%1-5M z=5}7fYtM-S-PQp*@Zy;#$so7hu=NtU_K~7Ha;=PtFr%LS!##ActdcHq)C^0=5{a{m z+G|5^1B89|1%$!pSiR%Z=R332>BrPH`5}~A{sMS%*k`-J;lVVJPA=^(mbW`pbF@)= zdwb;f?qLYOId5;n!||JB@cmxJ+r#tJptg?%a^%GGz;`@L=hs)3pvLW@`WlDDfa9_7 zrCB&M+_pP}X=wB`PMXBt-qF!%V`KW8{Lwt~;|!APDtb+f*^>eBK$SFU6B4 z)*`>@I+_R~XS-5O)D;;EeQjY+@|e-2#{tv0j@`z16~b4mZ*tpgU!9B_HSOyo^nloev;K6^T1^M|u9slfhqDP$8Aaa^Nxb#npb*RzXy08Zq5N8vq3uXj~oQs1< zQ#H9g(uEXaZR2u%Cp9(o?>m039v;o#XRdeJTp%_!Mk-si5uE+QaT0$#?O9u7RsvDw*d*qJZ1=x-VNyqbPk zhV}WI>DM!AMp;N}1*b|RRK`}gyu32D$mROtz<1E9L!1JrJKj~1s6Ij&$X;O$&-&in zRk?5qZX_kR(w4G#lMmVm*yWh+qZuiICzrcz5~ifcp@wA>a%fS}$+9QST}dWTJI_y4 zI-}|OnLx39hChU&w6gM9!L_9gW)VZImg4&_U)=GW5gToA+0^-x~^)3v})4%~sL^0!N@bFlH zZof55FUjv7`M;MW63b*fHK~6uKRhz~UpW(m^y%mn$*cKXy|5G}QTmUk9xnE%=1 zN9>RPmmLyz6&VQ#ekWeVuT%Ba(9_fNaLdZbP}6Q-Y^_-e6~F=lTGN-01Kwjws-rAs z#YFfl`>5WVC@Do$&}E#}&%~bVJ|?6<-s$=g{4&V*`f{E;LxZ=|p z_a((qQ&uJh)K4v$2F58H*opEYsM0q%J&k#ISMq{)kgWC3pIdt~gQi|D^uxOC)Ya9? zj{Kh}Ty4MOM(`43z%>RRyLz+jn!IM6GC-`EJ@7Q)^1<}N06XVWD&6gfpnhorPvi1= z|H#JJpylpS+P70^4FW!VTG3bD*4EZFfOmN%kR1;hYHGyVot|<;H*hWFbc5_TW#GH4b4Z_1I`eK!!EO$= z+UOZvzIPE?Z=xTU44H0Hd(`mM9E$Zrz$}y%-sl;LG})7yo%Rm&x%Hl16nP<-V@LXS z5zGAhxxEp>p36@`LBajtN9ZuB*j0LIYl}k>Bimkt@s@X}PBKI_2 zM+gFD(<4)LyWgsIsBx?l?f65)Ab71Dtea|wH9-`5MF}PK5-El(nxzq}A5?oqId5e= zG4GJ;@8Bl$nE}pLc5d!dmrJFTlu(WlQ79*H?$=@ehFv#}xf z`ZX1(`$)m1J`(-)t0edo85ueJ+=rp-mN^FSE-V-^TO1g%M+MM5Qjpc44-Ys@F|7?m zUZtCm_<@Uz?|BBU`xfIZ7@4AItyWRX;2??L-}Q;Cs!C?CrN<8gE^|NXnq#Geidp?- z6F8n@>uX4RTN@QVqdB;uhSMGnGc&Wd5Bvg}LObkQU}`hdrO27aV=tTJ7T=ruBwhS^ ze!64N{w%Yq@(7GOnkuiUCc7EIJhvB?6+I^?pT0_`ntIZDs%fZ?C`%WsKOIU>o zoYk@UHRR&*@_E-O_44|9aB*=l7xq`(9otsbT{|{Ull_e+X^^aXzU@O4 zsVJxT;A+&k!OSYTeA4nw?U0ea&XP%Rlj@3JDWncMAqAmG<>B{esJTWN;aNQJi)Nrw zMAX~MB@Pl+>H1$1{rZTjHp@dFALkLb9Xp9RiE6b)xLO8fjih8C-PMVS(r>C=#CrMN-|`z{S@}tT$DTC@(L6 zn=TI4*CwP7ZWby9-d^OUE1sPCB=R}NPX&U5i;J02Rf+YOG+^mDLa?-!Kc!K+{gu?q z>StcgnCF^vju+2BAFF~;iD6L0_VE11DwL?XX`bgHnfS1#71lk=rbL52nDIkHGe-iS zM~FAXhKpY)Txl|(v&yRuM_TduO^m7~H}^!lNg~?q`l!N)vA@z$+7=(an`IZLCS#k)#67Qv)+R}=62>_ zxleqU=80cCU{?y=x?kU9JBP4GkE+`4h(2r=6Y=@4 z7V|6%@Oyr$M!b)w@Rog&2cYiR3Py9p#$_m+k~d=p+8mJFM^X6ou6s8&UN)zDVZe>X zyY8CMSL~2e#hP{LxruH&MsIpGCDwBa!K9bt}x@|JefHONM2a_s9vhsK8 zLzIT5CgSw8Lo)~S7f@WS7XQXJ)k01+91YY*SW6^>WXSUkk}1QQ5d_?_bw|AC-kfPZ<5k`e22a{ANEbqqxR3M&jlzXjm8@pMbC#GHcgkxPP07s3hN~i z=MM!Gzb*|32+|jqmRctf=1O~%%kcjG-+C6Xj-Q>04MnHOsPjJ)+HUDZDT6&0H7?xy zsqE?)vtm}64ona9gkPbPzS49|Am>`73}XsoJk4-E<1nVLVJu&rh`)`sT5E32h1dGKW!o z;btQ1<%KPr9zuz1uikHoy}+ZStn+fSKX!}b_QrU;i!^wXhvzSTY5*s1%Q4lwI-Rlq zjy@6!k1x+7#j7ave2)XMaxB{%>!*>t^SR$*n(`59p9}a{xS!oUJg7q?zvZSSDgu^S zVUF07oJZ|Y^MDuWU(&rFau0ePe}ovjf7HwBthSkmT#GQbYTKoFlcoE%yj{G_Q&W0%dBD+Sto|qk{N8Av zfq?agWS~rvG(mz8G-N6+!e^8K~jG&$qhXfn))6e&%8Htc}UwbOo9R0MD({9suzq8 z&?<}j`-1~^XuA@V6x2`KIl_REB>@XcG=%#R>ZCorG{d0DTL@qTOZ^kNPxt?JPMvql z;$ljZv*n!IcE&$^^t^AIf|BxR;blx$Z!h!DLX|3nJ%iv^Ulkqj+aC{CS0zpNJ?WvmVaGFgkscPrO;+vYRTnfsGJ13!n1JJf{2S-w|_uE))rKCeq z)P7mAQSy3_j~_}_2YE3~#|-M&pRSySvh^ngVVas+4P4N^Uz$kInP(=V=A-h1p-zfF zucI&+XwvU8FxVfcRgJ#Pcsqvq=IR_Vti=lX_U)Te%4@WYAFx-ayEDPthi(?yXE)wC z1+Q_$^mrs_D|dJI5>UttXnH3>h3arh-kg$>uf}r?f5)|M%GrfmU;-ESzP{I0x&gl? z)iY~yW8;%7F>^CBqNdQ~`1sD2K)fl$s!E(m14r_uy*%)RQQqFpF*>Tr&-+&pGu8I- zaWd*mX5Is7b9H_8Kb|8$(+N8-G<}2OI8!%(@O-nE z6^Rm;-k4B5;}dv)_%P539TN3ru)C*+k94(zsYLx>K`V`tvopVWXXGPceE}}$!9okI zh-(BmAH`0PK^{m57PG5Gx84@q7@y}$brbaB&)XyC8?R%m3T<;78Ww%z?N zukr)Ikul_49$MawUHK0eVBG&z))RO9*Gm|W&!sEACM79=WTc0O2N)dRl9D*MY3xae zh*l=&%q^UViNwjc&o3@OA7L;yUW2TGw&xKqFE5_+HS<$GJ}yhx9kjBn%@=gEHX*iw zfx*@Fb@$+4C-CczkDbH9!W`V(>`NMRa$f21`g60RWH8vmB-Bj{^(%WA{~V8Msv=Ox zeHz+jv-Rf4VrJqcc>6%h!kNUSH)qCOe~#ENyj;<)kOfi{FG~`LPV)2f5A@CwZMTfm z3){=Fy}Z1Ddw+pUC~bSxb~IL0Op1-6ekCT(+`5o5yruA7NLV;281+Pby2=OX3L=i| zI=@Sz-NV&h;z%-?j8X{yJIry|#WwT&aaLB=N8>uFpL*qLr1pY2L+|)MMN-MX&{qib z7&3Ohq-Ie?v(gzFW(zex_dO)L|K;-tEY-3Lde&WbC>1{@DD2cQRIh3uc)VMbS}*8% zOjTd)^S9X~!z*M9c0$8E9&|KJoWGHrhd1I_IxI3BPGm*!tXBI$ALlo%6G@6J7G=B|9gN zl!0b{OJJP`MtE2lsl>hYl{E!V&$>rpa z?BN3qvJANub;FX)eku#10|UxaVNZ5MclLN|c1mJYs6r-UkcP5GmqBu__~K5yG9 zpA}O|H`l(YsZL7MAtDNgaXnDE*&EHbhKSZV8y za&iWHV<&==Pv^2pcEQo3m=K(9lo}({_S6(-2Te#1&c}U$%57 zaC!BGVg&R_IcpefXf9ama%m?oH_h5%0F2$A7T1;vK4pYFOWCfOP&6t6f7~cO^Sr#Y zv^MKGzpSmTt)Sap%69}E8SM)+>iVOG$TuU0zbitQO`~U}A-+Z%6C?TB1qsjXl13x! z!(Qe3|J^q*n|-+4;2ap1?n(geh4XXw0jqR8XL$LSFCq_5H2?0`GojMT%b(u3+Lr+j zAEh=I8HwO}A5_|o!MglNnsn$=g^cACgdf-)9Ud;#5BuPXPn^+>4#rRbyP`S(z3;a- zKc}AO%=1)R)(n=_ad|5-yycH2lLOX}^6}M-Jxu-e>#pJTKkAhyx!?&9AT!^&aQ=B; ziaY+_2n8_DO0Qmh9wiz6^XH{7%L8s42?+^MK@-m}S4KfU3Rs4hHW6r`Mh)ZHWDz<$ zJ7azNG)A#KJ|rSyMFa7u&UrHc1T-xOg)0M!>n4j1z1o{ry{gb84GLnr1NZiMHibip z*qaRk1MKaPoAQ;Im6cUbg#~U^I4?A-3eAQ*XQ;fE)!te8)_OBiW<*6r*+$~1+wz+B zB`3~QkAElpI6)x3wWa0>hczY=k5V3XB#`?p(PW*U+7p!ShoZ2HfC(M4zt7i%@Ge=! zf~@uZ^_k!5zEE}gS@9jY&oJoEK*E0s?fwSd+YgaHw;HhRmQWq=Eo=EB39n{oIAeI9 zUNh%$tQCWfnk0YQ%_X_o7nE;eyv>ZAgQMVcb!y=w*SUl;bQO_L7mrdA>Iu>-*8u>S?ITK!m6}c{LuZqB4vQ zbwn1sUd)EDmx>5VWp6^Gyiljru*JFB@Cxqw1*XnOx@9D%uHR=Y@-{fl*Q7r@uBA}4 zFKA{ixo)!&Mzo0Ct8z;zg}702;~Z{tN$bd!^wr*Yn)46H)7=y0=0H3eqOC5TnyxcA zG)k2j!TTIXAP$FL2w&RPQP6cKq5JmKc4KOG3?|l=#Ab}=7I}DCuU5Aci#)Pj=yw~< zP~u-r?di%v!Uqo?;2!y2d#>odmrj|z$?Q-G+p=9A1+;f|W*HyGE;E6t082^*tQzZo?qFC8x! zw|;8X*!!T%eX&r$C;KVDn;iuM{VJ)8$CPPrQ#=mkIXqjEa6Ob`*AxNnp}iQs^kvkm zh=$cqMNDR^;X$N?rV3rDPxRqnRDnndvu3p|*YRgYhNN|mzb8WqwU{^(LvHYpXUsRLO;t2+n2B3XI;{S9S`)f(sg{r%Wjz1xY6p+BZg>uJek#lr-=GFs|> zK9Rjzr!R|-v;RIb+@U}ZZ*HWUeqFivDw26hcgr3&AOO3^yM7MWV3tG@{0eN+Ik|2e z-YR;D+@>w^Z(6%1&!2jK3n6ji*Ip=p_dkCuV~(&_;J@Dqwfrr{YK_wzNvpj}$L7+@ zB&$uR>q7lTcKg!n2Nl}v)u5m~WgT*eArcA_H96v@mx`J!Fl?qs+z4PX@5!a#44IF2 zgWSpB12f^M3+S<-P|5s^JgMFI*`M9Zf%92|RQPsoYCyvK%F!A0j4vIw-?Y9_hKPuW z;_AI(oYKLV%F4YT=Z2rXll;fML~f0bj{`+F>I1H%=)ka^q}mcJPi@I06#A|S!5fJ? zz*F<94SLsf@0>DuQ&}0?&XK&tJ?pXdMMucJjqy@ue+&%V&BYwi>Yq%{7i(O0Lh9?i z0te>ZE)7d>bNd{*xwy2?&CR{7ZQpL5n=`s(t8q70T(^VW4glyuQBjegh=``9=17Kp z3d$8+ZsG6W+}1bVSnwUR!j-_;Ib~459kd(0Vmq4QlALz-^79Y$TBc4xt>+0xEhW#@ zhd0LniGg0u#zi(YT323@7-4@&^(v^wQ}o5`X^|2j`-M6q9ymEmd+8P%+fkfyBH+$!h~hS=Qxv)b8;cErhMDc1!?cZ(Y%z8I4GgG#<^7_9 z{X65|3!^GI#;!V&ItHtdBORT%#YyT%WonX2nX9gO9kKm%MKB*VAz=sR^7ML zm<{QQV#hlpsF}Gt+uG!McW)OUR3>LRnnHhN4C$BXQG9s3j7kV4k?(!-O@t`2u}N4V z6pDjG{SomqmuN{sRMb#EGAxWwu&UQ)KbafVfBJ}29WpjLy0E>ih@>2sf2Gq<`?{;I zuWfu>Ck~TM#62>@b*FDq;3dSt#o-|*8q>P+{%@V|sCA?7T5(vU*Dpk;4>6}MniKX} ziSBt`oV8lbS(Q~CoptGpDhkHTTJlXB6?HpG)Jw101bztGf5vh0e zyTbn3U*__@s+8t;E|s9FIw$$H)@~C{C7ZP&|9T!Vh?6dn5&Z7IzCSExER8RM`_}z zfKNig`p(p^<#eS@lciclMkcWz&yvh96XNMU(l}fNf*~$$xWHlY@L{|Y^m{C%2ekR@ z#CCd04H8Wy=2`I&qdPwFho>LjJWE|Yd#$5c^$K}AjFMgZqMAM6Pe;W zI1n3lRlmAk&mtij$H1j;3XV**wOGb7j}BZXG%~t$*biA$+ItrC)n?hj*>Po|!V5=L zRrN4V?14zK%*~6tr>CRCbYnnP4D*ADjwiJf;l9B;a=B|+^?zcqmQB$~60ero7Z2!o@Rup37b(~#S zm(;hC<-AG#kcNSZISdw?412q}#+z7aOI)-|$DZ~~>tJvC-o)6`w^rpL+gsEDZWBf1 zgZDXVs@&d=mpzMSXjY@@4T@*&=TE#oJUq;-sR44umqw)gkNtqxVw}cb-i};aQdGT# zj2~p&c`X}#S5}!0qo)mWm;e^ucgG zSdbd#8!Q8f_8pWfud%T)AjT}Mu0FC;>=o?=!7|8GAKOW!#&j1anFEkgPPq|%v4JIy zTyZk?Fn6G z>-2dfP&=i+F?>yxIJLeh;{1zCCIhta3;2(h-F@PNH6@QN`+Pp%bE0PfTT8NrG}gPu z#^T#5L9}Cy{`?o@^NXXNW%p?{#G0e6&}yAs`IDDZ-|2J^fq7?r-+boF|^g?{;=~F-qvPrRB$DGUizwTL8o&z4w^ZAK2Uw zq$N$L#Ll;>P~~*TJCd%huHMxySrzk~?;voyxi0@=@n`1~obUXc``io!%&e?BQMw$0 z$iVtXVRjTvQ^peK?OFA_%dM?)$P-<{xL@z(!D~lQ(Bj`Y-RYctETK1Cejs)xl4hj3 z{mJig&BTcyBgZWKCEHy`tal?*sVAv}SPK9v+gv4JUuGqMfxBPBvlbIXE|76Ianu0szhqbWM!s$1_>bSH+vN!ru>%jTD3dCjiZwwfJzlw_1 z%AcXlT9T9@@1EV~NmK3+c!v*e_`j91(W9y=x2XiKT{o#m8Mmh$=H z`%L{gdM^^ixWj?c_6Ofpoj}u3kI$g7&;K_P#k(yu=y*cPvQp>N|06}WUw22OW2fhJ zYrXIt*FxsW3H$w{m2GnAq6gcyMWf_9Bjp97tZFN-q{!g6o0PQ7xJc&@Bx+vr=Rrm( zB~d68aG<|`BYu$i`Hjiz231g4xp?xQ0O0th9C(?NSUFubDzNMz$-u?3h|m$%d; z@H4WrvHc8{g$0UqHNB7ARzBq%@>x{b{osh|xz9a>@rzPAgND)h&x=(Xj+B%XDsczW zKX|wKCXMy7Vwa>fJ!-#|8_kMG>jZNMV>@}pJz5WWquSn`}qC&88ap~Ip!Z{dcPu++aqcR<+7Sj zaO_KU6uX0tu9jnYysrsXR^4KQ&Yw|8`uqDsCPgZ7{soK;(Zz!r8_zLDwKfPBWH#sY z;1{AnK|!>}=9lfK2T2~lY+{!D$`G-;p6h4wOICv1C(Ou9a0bY_oSNEK|Am;y;ye~1 zp+tbTTk}`AV~nDuua9x*{wlj*oiO_rj~n7FSodpBPgOB)nAvas5D&D2_WJ5#YC0AdOK`>=e6{y`%p#NYP~-%ulsvyQY28M!0=ixFw2%j9`ee zusGsbK^^Q7m|Y@o%C~Uq&Uf(-5O*-X=J=CQBbuGx9|UKaduf9)~XMgb6OsCyr~C{*&@6T@W5oq#>11N7|$b^>aOXE+11}qOi4)zY|!~sn{TPar{rWB zZAmx`1#3mk@)$>rSkOhbzA*oi2X19)d)OVAT~576t%)lS>yC-cfF~$evTY8s z9*X2ptLT`6owYwFpQ_)o`}Op4CI}vV3>1RMunc&o93B!7eg~1PlUV19%ZYvR2k3cS zenGudf32j0WEgsS9mNvDbTH|U^_vMx@I1}y9JKDJib~B^I}~hU3o1k9!C^5c&a96q zp4dqUv1aFN*^W^9pQ_kBLV%$eR$VPnEN(51@s>v`Uzme~ztDSA6S9UqiP(38o2mHG z0r(*A_)0f#tIvSPNg12i!Lxy(!F#p%o)_wyN{C(i-K6!`g zt;66hFxJOtPE4@{;3cl5gj>F`6XI=z+sw>vi-f-{iWdxnm>-N$|n?gc~YLD`ofZ(_pAaH*wEy%>#@LrvBub z`UYfs7dZ$mztvpk!i#S=UC{!ErvqvW%?==LD0+GdgTgA!?-9vm_4qf062Oy%s2Lka zW|{lIC9Y3E&Pm@8dn;VRT*?jZbB6dsB0+`!ZH9~y0`j>`>`(IiAvZ9{5DW?pqzr64 z>rsTLoU1?DxwysG>%uF_s+!j3KD_M%Wndzr67>7VEIU7LzlB7B=kaOGZ7`4DeXWD- zI&;`yYGw1hn>s0+SS|LgbAUFLWq`49Hc<sNjT0eajurk8F5ucfHs5<1&2W1kiM!it(zA764R%@b*!v1A`b)a~ zrCVTVx~l3P=cn5=t=Sj6b2q2r+ny5qv+l2KA!|t?zAdsl86f5NfJG%%t^u$Jt*HA~`t4+2TwAAT^dapV#8Ue& zyIsMUm@mP>c>j|bPe4d`gLD4Fm@iMj=cj-^cu?2m0l-6+sEK#{!)1*4zqC%;pNm@! zewh2t0Jurf`2Pl)xmtyI_btPLYwt_HW zXk10v_3%L+!wLv}$?nz$=Jn1mDO`SR2z=%ETff)J24(St>>U@1J|XAsZ}#A*tG(Lt zxZmH_DxbPU{{CGwwXgOf^C4z?Er!ekX3Hvo^$F(2j$k)84}btm9y={!e6Or|M{7T;)86*h!Abs3k-n~PZ zW(}}IfRwdatgqdFn?Rp%N(#4y`-6}ydXnm~b-?$~JBg*Xfi3&{o{Fr-w;w$;vl#m< zo9-R}rpklmBGn;sqwIzT4c8^rw)d<2Er0)FSe^0Aima+f-`-n|A(6-~+QZE}Pd;pT z^Zev!jPR$$lOv9>o$r5Sy9WAWw=lP!R+!Np(}?#;0xBvbu27$G)Mh~^*w{G)nmN#x_>we$}xB^3Ua z;=e$x?`VJ%(CnNwc-aQpDSv4?ACV>Z`TO^;An#npaG@SsNWdTR`(JRSNFBiAr%4}Y z+!fq!xV{ZgeIQHk1jf8-cV5QBLuh>)ysURte~`VJHxjX4!ph&C2zSTT-j=vF9W1y zjRB{C7j;Y~lb%p|lZ9|7xD|mUW_UI9tJ}ND^M}75Mk=GX=QP#qsP#>EV!cu}9gKUX zW%$?e&{lYUCi*Q6+JdvHAUc#d7>%lI!Iwf%P=} z`(Yt2iy+IPecI0(x)ClpG`88(Z*tgoLffLD*Np7=q~ZM2FTc!YXC{|sEe62fZJ~E> z-KX;N3LXf-l39^<@!x;IvUcwx1z*qHbi}pS)>=E=V{1$tA<7VmJF$$BX-jntCLmt)2UpK^;9$|HTA9LV?7f2&R%xZKMJaobZ_!x zkCSxtrRK8F>8fkF7`mTtQ_aDlq+(}(KMEvs4WzEF zr$e8=YXT2c`jvh<*WMoV^((0_>cR?qRVn?1cxd0ik_*-5600Bs>=}dYg&#?kwXY?GFs*-8*-fE=0t|jqiNk*zI}KR6ciHp zQi+ZiPb22exoNv72$SEkPDreXoKKwf_o;}tRa$d16ej4V<5VzSUY|v@r`PaUCNxcf z9F`^R^K0sWSDVIHm&6P#*LT?kkDs;cbEnqNJ+c!?ihl7e7Vks)H3#zC4Y{MM4L-?g zYGm7iuVp}#)bgYFr(H)A;r(ZcZ${GJfHc-4=u00uejQl{uWNziJJ;^FiHO>IdcsL|D^iL#GBzbHp#bu>BnK$3%xn~8x;~kzbF%!hL-_n3q1B6k}ZyL z;|z$3rU0ZC5LH4>=q%Nd?fwjAr-S5X@TXFw*(eK+ScU1^#6g{S2I7$BWi!Kt%xruq-!=ub6zwi~EP{~Z)jO_fdlz&ARG zNf2NmUZ5xB^kXYLaXH9Xs_t7;V*u^}9E-KaUG$b+r5Fj$aZHjgOz?ZpS9FgJ!Po7A zEUo3ct^}?E&Z$TV1Mpy*qHKov@lGZ0kSbSeV9&bDuF=vF<UuM663y4)-HP`EYh4WA>d_9~DcH4E6st-=3C zXm__=>xFvoBj3Co1aN|*NWUz0&4Yl=rStQEzy&%)xurwzrIQ9YeQV^bRZz3!oE*Hl zSyEgyC1?!sP-A=6y+V~CZ}TiBOGs(vII?ib#2Xc^*VK`Q26W$Y33UH+f||Yg>Y)16 zK=#@s)v+)4c}zH4wmR3fT+W)foo%N!03>o6K36ZI#>+7n zk(SRvU-i0X#)7eESM=tndt=@zqgO8+46}E(=E!d`vkr&gznt_M@!MyxNhKlyo`+>y`Fm-mYo%kUs^Ax92zHI%%i*O;Sp=PozK!#M~L;=IdiXB zilwp6&~-uz2u;dwV}^2{OT3>ND=M$>e#O~z{ph}JJo8eQRcV<&?snWO(oY5|8(d8D zA#KTD-4}7~=0_GV#my_yyfn`-9>%9VJ~wr>VXQsIu3@~8TN-Z!{?-lf*q@erg$7Ti}geh1wzfJ(lqR4nuc zaNq3Q9DuC_sK_BF0vK*?Zh#3zJYcigusb1DQdQM4Hg*qiC9JKj?;n2|f$wc?g@F^3 z*#($jUNY>7*<7v5j-08apVX0>X4;GfS+c{duq!_`;Xl|THwuvHgn$4B=Z2LS7Y0=f z2Pc+nbtT|&wLt-zv+p5*RKk6i=PuB?H^Gc!wuW&dK(=U zNv@k-WnGM{S2-W=Y8Q+_Hy#X4)>eC(SFErufFmU$pqwqBMk)Gp?J_(%-A{7~=Fth8 z!u9_*0?5Y3Pol3nXmF!H`qv`)-;l!F|G!A#zo5m}epL*=?=c0tkWc$o=p+Wq-$**F(7t#+{ zyt9`Wz*&_Kt(ah{t3l@em>AOEb@|oOcMPkB{d_9=A$ftuL11Qt*KFeFQ%;@2ucu;X zvre?Cu&zEo%@;saOiTa7$n_MfFI^(Nu#l@Gu%s9%sW*LYMGX~K@9OC>LtR~D8`M1} za7$4QXe9pBh?<~3hJ|4qyn9h~hlaqi#SHUc=+BRv_|U<)?uWL?4lpV~;OV-re5pAN zB-%bjk*^J=llVnNkqib!ksr$#E1kbh2-m84A=)W^W>`k5LVJ9}xDi~Tp%mPdn$53h59Hs&R{ zBw&x+l1e`7x@01?Bgb*Lp_>AXPu0t|LCxVOrXO-2#sHQ;ytEqBoEsdYPD%YzjHIW7 z(oRC3Go)$`ioX8z`STqb8qQtHiIb?>)AKu1lh8L)wipZDtmzMdCg*J4OLbbncJi^I zp&>povE4l;HF9WaY3cX4ILDPPviI<-iz5UAu^31q4w2+xa?s4k9cuFN$`C*LIcBY1 zF!rueAFz+Z>gz=^dOvFe>gFr#u&VmHI?SP*FGUk$UuXof&D-pjPC-sv52&q_{nG+c zQ|Tb5r>9`gG{J8L)1W!dFE6XY&IkMY-U5Z@)}Q)%0_)18{Co~benCOM@wz1?2y>DD zA4)4#vJL10=iQ?V7`qlC_sg$3XuT#)qU{zJy2=e4k11yOAb|0QHeh1<>Y)xicL#PTcSnLml85H z*wdq+#i5O5l3;+HF%x}L>i<)Qo6fa>F!SH?yk9u|2gOW?)`SY z%*>A2vuEvht+$@{d9CSjeEs|YNSBO`F7&-(?lGv+3JT*!+(xtoUq-LUv}=R4srY); z$nvlKj(EHTlky(RgA$GZn)Le1$nYgGr`>nZnweyl<0m-u^u{>E@Ue`ajZK;D5{7UZTXJ-LiRJEjmYC?~Uh1tVcYZbO)fP^vYA*{wSfx5{@H%39$gp2`GwO{rB&)ygUvlSIwI=0~wRD%1V78+Q;A`MkhWZVsJ-u z^^)pN4h|Gx$EY!1ba&m$ZKxjY@ zyv72M`o!eqH(bt#Ql_Tw0lqSem#sx)85OL+Q&|rY7H?>X&&KLXA>)_*mcfK4A_C_U z;5-ln0E%pXicb>J{BU&&t0h zo*x?i$Cdew4zppDP!30-Bi|_FOBcq_Ag5nLPC>R=i+7JO=5*B2vVkkC+FhbB`Y*7(Y6fA93tW zmu@v*Ek)nD1mxOOA?`gcZLo#tAkp3v*-YY10b_4;TV`19MC-!<#n z7(SW0I|S_EZyxdVr5MKK0MQw2WD<1GhCe=%N;q{^US=X z*60+717O?1_9FX#>cimP+5G`B18NO2=!b+4HbX)}B>jwZPyT=b3|eZ$s7_*BY;Y9H z96dJWC-@f`GloCU*b(!frlyw8i{4h^s`GIJLl&&yQge(b`1I->w-lnr( zcs)N{)YyeltDI10Fv5$3KKxr-YX=LvT9pY-1SOwIeg@ks5F1)u?~Q&MwS|QR1hj0$Lvj+a#<+=CC|!PdD=~iwa>7=zTIJS`H-g8z1dM3QHjY;Q>wBL7u*bP&qM z#s(%LND_=S1inEWS(D%_fZjR309{qe%FBOS&es5J#TqCC9m+;;a6F9;$D1xJEQF(> zqgw}$Fz@S!REgFJvOOK)P#C$kHU@LbRCTpxy`4X;N{KjGSw@C0Fn-j!pjukQPo)yZ z!>MBzR+g570LIV}6S$qpmO%XoRe|t1Hn$m&hF)26!T$M9PA;xc?&&~?l$({Z;ce7U z1Ix^}7(iyv#bAyfwk=yD&IhpMtt2;i)YZ7QNu`CW-W$X7XpCyGzvk7@8^u;v>b)JA zV^E7xX*x~?0o}CPGp`Vz0fp`B3lGuuI1$;I8Rmy2gRKd(Pft(e>69#qXgYb2HP;}H z*Dd{2rK6GDJDS<>@Q~2GS1Qz+)J@7;U``hPjMP*Ywsy98Cf?_OrYbkw?MaMi!TqVB z6)4QCtSoWp#cZW9)}FSz#OsOU)ey!ClTk8(>4BTuz0yqOLdp|rqt^8vAlKRNZCGDp z0HL_pnw|cTAEGo85whd z_5!>E4RtQ#InqSC1j^i`Wr1874R&~3D| zw0-^k^7&s~+}-WzXyZtTZx!X`KLZS!Vv>Oq_zj?uGKB&#xip&ZqEk}B-lA54x-f9r zzP>&PHV9ii+#SRAQ(Qg1ZZyM|jiaREdJTpR-Wm8%{QUWy61&Dbm?nFwKvUj)PXVvP zt=g=-@SwSMYQC`eYR+uWH(jMT<_nU!bqK1j;NKUYYZ3%rh%-Nvc#U zZfjCdHr#z)xjegJdvwshUN$24BKn2ceF`amIf;$cUC75NLAllwH8r9mS)wzk?++$s zW(u|8-2x{+?pMmI>u%w$hmTk9dRnpO3N~TZ&^scKp`g=lN*GLH$Kr+!aUW6e^QUcY z8d=r-LvFjcndb8#aohg=ty{iF#*}~ zA>ngTB6!hI49B89!F$fReFZj>d<(>qQ?eE&UIk#oDmPvp*dVo^GW$x63|9NG>FEIZW%hUT{A~d`I&^67s3l$?`@w;z8~FCu6Y3f= zVmYJ{Fh}z8X1Ho(ro$>?fG-2q(N48_O-P&AprphNE@GD zU11gC5^M2^M|CtK8B-f1Ms&c|rD6@$x>lC^Ct@tdJe-d=A8i0qUP{tl2Z({#G(*=1 zg^ZO@=u+AFFSJkJzkkom$jQn1v4R6N)B}a1nVXCh6yL#-gydv)a((1wPn&CmMI5nt z*lBB;V!vnzO+V6zWg-c_zqKV5KBf}_A|gpCDRf})09?l~*=CyD#?v0Bz0{C5Tn?%i@WC_Q{5Pp%7^kGL3-b+ib`7$U zn?!1ZHiooVyjZi9t>#+BXac$fthPxN9ZTo|zpj3_IRGo~3*V>)3p{ig8~!^`ueYP* zcG|C7|1@`Y2#SQCHIx15X?0l%sd&M7-uiH0T`*0{uao$atgkpbyVLMyIp*8X%1y1p z!;r)|@^bL3mFj?73aAE$wVW5Tpa03pp_?p(boI6SnT#KfbZ5S~Bq>lQTzRL+- z=HMw+GpS5I`(oen5WV}^Cu;sXmx0FbFbAa{norg$@b^KU8_@7KG&Y`GT!4N+y3C0a zp5@O2Q4?R_;dLIQ;mgdpz5U*b?T}IAA79zhk{XCAf{J#e1G(l4i|uxp8rb>_=XpAfq|%iP$j>xP|+W% zp^>Cf1AR9F`h5ll2WR~L?Q?tUcJW63=;7f3RF8e@48~jE+A6HEu(r-EF2*RUt!H`D zKcKF)UiA<`1M$Dc#fnVfcCOIteC|j$4Ad8=$2HU0*09QOVp3!$^nSWjtz6Il);)YN zdidcGNdU)3TbpaDNUa?_T#Kbk<055RAW2r#kBEcAJnvADkpazGZ%Uz+q4N@-w)?@S z+dCBORqKaVJ~QXAnnGt_MBlHw%NCddB0{rQAml?RKu<1@47QxeY>FCvxxF5QUg=)! zPA&kPgi|V$80aVL0#=6E2Bn~|EzCu4y;mFu{nvW%*m8|NT9jVZ@N##<0oXq3j8o!d z!Y(DJXJ;UhZ45538%!NeBL7)Z60P=-^W(q%d%b&C8@eKL!TTU3y&6!J2-gC!MC*V9S+c@9&a3m4%VAi0CbO*mKJa@^2k7x z5nnBC((U*7P6C(X2Ow(&7@ae&V#%@o84lfnG-g69Vd^@@1Lf;JqP_4R6a zUVwvt&T|U3mkB0b0?=zp_s!?GqCmHEoX+CZ;z840K1FyqeGd+PuI=VY-ftgYVKn&q zub>d8!#2|%>|*rWCA^5R4jn}xO$Z=mt<9pRrO%LJG`84^4^r+Z)~t^b3Bk{2q&y)7 z2}{%ve0qh(_BW+TJsiOt?;hXSN;xN9_sckZcoe`P60`{{=?0$sCoNi0Q8HH67~s-! zmo8_Bgs4`TM9zosduv=J{}lE@qNk?^Y||WCWTQC6#ho`9bjh(kH0?#M)0jkZeE1&v z&`3}PA_{(PX=%x66)Wb%s<^lqfE)_UGa7K0XLKk`n_E^Xk9x#+^apeHg>zT2UY5T@ z4A^!92DDj&awrG0`4ng@i7>k30Q3kpF>#o7X>L=KX5!oNvDK+ntd*fAz5LSB2%rk) z=I4QRC006(OH3>cevvCB9HdN)27i58wKlP&=L!Drn*(z;_W;_FK>qiR`nzxs7EEI- zxbo&~3#(DoVHw_OF-F~K>wuh&HO4;#zaX0LS5ne@h7Y1gh0bna+`q3T6*a#W@g>A> zF&O^K@c-`rLwmvqzBmkNu3{u^92AEFdKUS{6RqBQ`>md#AtNBwfD&fjA0CG!15n!5 zsy+J?*&nvUuB{IP%IuI|{heu}Q3qjL0Et`RQ)rF1HZLy_7$1%bk|5j=!T(s760cYW z%vR-6r&br|cs+1Ina0VpvoqKGlkSu`x#K1GquE*Qw|&M$A4ahFZQk6aoZ{p{)aP}ko|*WW(Zny}7p*!R+CC^sHPZ5)#UF zcLVE&nTbgNa8S*OR zYVb+(IFbNCSZnJ24zat&Flp)C0zya{)C=94lW58L?)lqOnp1Qp*HeSnC~Ira-dNW1 zIKKyL-4^w-yF#@yKnim)Ib<>WMs`07r;JzM{n99vzzw{mj5tFtFFpVfda^#2ztOPv zxCjOEgX+D}Cnm)pV6Y+N&4U4tpx3C$>u=e^|NgP})YM{llzQCun^It1;d=KOm7tultMuahe5MltDS^+E%bHQj@$M3K`S+{q z?fK4bOPL?x^YrT2OpIdX!Vgu|HN(BVuax=XY2j0b;PFW^L+HgBx>8LMIF5$qji*2D z)9`>%g!6XXBSF+XAcuX?SHxvsI99s!XxgftWO#UYzuR8#(96{53rk3N)X}mqWKq! zX^$HY?kI2wHJa8n)YZ4GOWSCfB7xDueKg}Ze^t*4(~En>w7QF~QDgB92x(w~e>_p+ zsQi6Uh4Yn?K$Xc^(S}`9tGWi-$2y?U522@t-?n}Y8m+Fa!7-4qSj5ynj0^4@_~+XJ z=M=1%yEFW4RyuFedT{xZZ5J;+$53< znZXFlBy;?>VibWw`J*WEHx2=UV9*FOgkG?+3*=VR*2bh+e9Snkt*zCW8n7-d_9uLk z|IlAi#1$yIn_7$O-Fg)i*+Ka6gvpML>S$WxGqaNXk1zj&1!yxbwW6@^l1si+)baQe zy-_^Yxc4Yh{D~|_OGXCsX=IH{>a{+&T)NxI$b^3|Sh`;0UNb`PPW)uB>KFVSHWwr}zBrD}kh)L(gnIvwaQB~GpDkUYypo6* zlpj4@f|>Qx$J_?VTb>~uCn;w!L6pwOKmC%@+$6-(eK%)Lro;@GFgwl*qoiKR)S~fG zmq(t*DB%yfB?V+JRSkFI!xx;R(Ptbrf*H$c1A39bWkMdWBp9(aqhyrE%WhnWG^K8BuO}QJOS(r140+ zzKUOz(eIQj{PZH*z*p+~NjycyMPI_h=^tiXc!R?|=&N#KYZlku&s@Zje0=EW+O$ny zor&pe?=GR!e_ohAnfVegv?`>cN*TG@=H?~u+91;wi}vzFMHT0g^HSOsb@=HuxdBk8 zgP3pdaxQSt`wlmt+K8wY5P{446+@I0#n7X>G}`xv>+j_9f3edODBAY+EP&|`aI;|G zav%1IaXaU`;yYcNY%!$X|AA_q&goDi^{%RagMJk4c{OL{rs4_%lJ}t$*cN~)(H?~8 zfC|j*V!{2*m?M?=7x+m}oFwB{7O})49m1O_7Mc4*JpR)<(3HhS=dP2qc(<)Z+pP4dwH2LzO%izm)Y2uv}PZ@eit6oD9!5v&L7B}cZZ4GOQB8;IuC?!-jhmuANg#Lrcqbw86)R_YYD#+w z`zP>HD_)YyvaCeMbbt(#$GyXeiHV5>mM|G=AJpG(o8$?EP&pKZ5ffRA@)q0U z+hH4XL4BntjW*IaH~`51AXLc*OEedG)u3=s%cul8#&woGZc@24N3kv{@m%9N&*^o;*sA^4>RROVF*vpVw(^@5C z|EV4ah>WjiWl^lIt^zm70n07q`<3E7`OM;C*r*8w14B4C_E=`}OJf2d5(X@C$S3^N zL8Hp~;PbMwGTTU)1b#a)`Uc29{^aaLJGxKZSA2aA`eaO8@svIaR%MG zI^7W`A!HO3{mNM;6_p5w21Q`^!FJ54x#sS{ZkQ06O_n+1rmN#c9lrp^A$lIIP%^UP zB!XO5aQz;gZuhXw`)2jk?Qjk3 z8?BEEAk_h&HxeEf8*9-}gzf*{0DE~)Pz9d$Kb;Ujiyi?v|DQAK{vQAD4>{o6h7I@4 zzwT&}wOs;$gGnUs5|Gt}p!kV<;T+76mzBPC){EyY>EN_~vBT z>xZ)rjjzXk-2ucE&{4Ypx(!U5ABKkt-PBwN{gjDGFs)fv z*mCc4A}*&2oT_ezM#I|v)&Sc0)}jPjX9tJ8y>zY+nb!B*@>4qwAQug~C)Sy6;nbQS zln#c+!+~zxa5S{E2yba<#Cdb8tMQDtia3p&(1=hUK?Gu9Y(dId77JvJWJC^=&Y}&S zU$!#YEiEOd(bd+}tQJn=zIpK%L?9ZJ9*L1g)*79#`j^k9>EpHDd5b0yC~GnzWDN}> zrLT*VJRl%k`=`ncmwy`Ukj$;*Mp+q6Aq{K5=*mKK0Vcpk)$Idl0~Z+=CwlRsSH@A9 zG19=6uGp(Jh0p<|AYR-~nQ$PHCBXftIlj9@UO4TV#|dKrY(4EPV)`-Ly_ly>)@yGS zyI!jNMv4DWd6Pi@$+9@*+ftTrnr4RTFTJb>ot1%?@B$YXIA|OUdvwdm;Vgu_;Z77e+5OX_UYhJTh&H?X0`@OKbi7 z9^QL9-}LbH;jl3guO#`1;VWb0y4pV`(R zh5a%!w5UlFPXG{1fysUhhO^=te0ajq(!g(*|3TVZ^xvYAMQ$^ylvh?3wXR3P^cWP$0W7>CO+CO4l3I{njXU-cb@-}U{sSVb$@fH}6 z%5oN6>|%1@3NRMcY2%ZsJWn6(TDJRzqTLwYcg9>Sjgb%{i=D=Xn_}s68zh?)RDX>K zc79EbcU`I8JFZP8iM}Ipgrh+mX)t^uBYVmzX7v7Kb$yX;VeJ1DfCfavbWHUTkg-i( zxza$M&*>x%Q5BOf@&b^kP)8dBFse{bYIX5>Y{|b<`1BI+-ENbY{Ia4b_TndQef+Jl zp(fc~3Z==NJlZPQ5q&x;)e?-6S|?u~#2wrQA~9akF^B^C`sANJeJU8inXzC4mLP}= zA+E4XNSt3>gxxfI%{H-dYsaA=|D*`=&?;IaJD%Ppnv6&X#or!UbWs%Vu+Z}syAPju zQf0A%J%Fsn&JL_!yMQHm5{qVW*U0c&*2yepb3dFI3he^Qu0$nUvpHt`7-)(;`f#)zOX}J2MtJ&Pm z7$b+m8%c2Zw5=_{<+GR)#0+V~=Y#6mfqUI$0cBBsQ^;w-Su&kJczu)NMsU>v!#!-i zV!>2f5Q0?e(DuH&{oMpRRGe|vKs?|Nv+;VAC4c(ddiN4j?d@pZO!~uIkU0Xq`bn(` z^Svi&lOyV(HstraKNdy9ddeKEp2tNRZt%{F6<@7xSJZ%@ciqwn3i;N%`{?<#9w}O^ zT9F-xxhfjC>UuvudYw9!2bQb=O%0kjgU$>J3Q={V%#pS)1?W*~ansnM^UPa*yWMBx=HNIEvIoj0N%a3Y&}RS( z;&o}UA-H~y37R&Sh!v9mk7y=|)!iFU3aKd6=NKq$lDV1h=l%*n`A>8-xT&t#&EQAm zA-uOL*ENTh%KbM6X`V?M?w1f7^I?*T;g-P$UTzma<-wNfgatRj0|ii$7DO0dn+Bh` z>Hcf3sijO0c#j_dT-~_ha;uKtbj%4(5I(yv&qviCL~#tBfvcOUAYSveuD|@zg$>?q ziw(KcXIA{U2$n}^$Pj;Om#Xl3LO{D$AhPJl2;RG|CiX6@-g$q&8ZxTDg2pmnW%$=O|3(Sa`T&Ka zc!nm#hOPAn7za|}5zZTyUil_SKL?H4HH)OYz-V+Y+o|L6Z?59bSk!zZ5Xkh$E(LSg z><)|V4NCfP8_9>^eh<5uBrxCoQ7&hQr(In~=O%QoxHCKRo(YJ-v8sTk)oU2X|Nh2v zES_W>b zzVK;YGvnky1O){(-Agl{;P_yxu?apHBd*9FN-Ae@Hn=hO~{Wp={93^-HxU*<=Ed{}d_HY$+^UV{{(b4&#!@n6E-^ZSCI;E!fo}BblNcq;c z6;t^I9?DvJLPQ|3aWQ$W)w32(LWT?eARt&RQ(9V(QI#c(2i4Wt@-L=h9zv8;$vACe zCrEo51?_tYJn;YXGUVQnO2V=J0;(Wn<462Y!&jN3c{$y=gITQW-=3fIXM?xZaifCn zP*HLa@LxC{O9=HpC%I@{X%l1L!mWj&99PHxetc)vddVDyvMhhK=wIeX#6*f{*4n<< zeC(`4$=kDX?-5C|jaGYMm44QV@zn$K9MZ&f%gz%Fw247+-p$=Iti+37*XQEwgKG(g zPnX}3O;;7X8};KgqjB;xozH83oL$1LEBK0|5THa{In~c-*h1#{%iH02m9>Zdkg!ZP zsNQm!9kX>{Nk zwa}#D_Zi}UE^q-)Pf{n)!Z2keweEk4+d(;)HN=>Br3lB4jo_PGq>Q;slt0x8pO;Zr zR3vrs<8noLZTSt3D>p~4WXe54Fe-iq4AZ=oOW7`?(sq!6kFzQMYMtx|K0(98lzrbmNdqQ#nUQ37#^jkpHT9-)02XEwYYBJH6-<(VC5w8fG z#Q!EGMn-=A+RJB%zLJGDVMwRc=ySxl|MMv;mH4`}P1vYAEM&b4Ef)f9yp=O#E7WQM zwvq==0yJqbM+ViF8t65p-!NO*gt_CUs z+sb{Xb_|WSB;I@&Kbng@KE1wvpI?uZbT}e=LFYR1{Ls0DHX;`CTDnhC2l1u6Gq~sT z%@2leOu8}*g=1mK?#dVKHM|p)4^jun_y?`;cy*6ej3RbvBtQl<@cmuk zV!4Vkt-ioABfJ)o2NP4ub+7IAg_{{eGWEQZZ*J+22g5`<3BJx!zJOLX*|nsbT&>h2 z#%O1J*?4Po&i1P<^o@&r*_FIyDLp;v(eZJ=`hs7jdonD#-;>5;Ys#$(AC5E!rqrF- zke(i2zs2^9BN6F4+kGkC@m$$%F2dc_@>9FXcA!FgcgAxQdFcf)o{?Q&8gEemh)(lz{@W~aTJu-h`=8^HwL7+QnKmIJM zJUkquZoI2&mC8rB>t`OlL;8t*n}&A%04+gziKXMl!JV1}wlue$7jNaj6g^xx-<&flWb8!A%;LLd!rCswMoMk*H4T0{3=M zWZ~iIIeAJ{iEf6SLGNf)GS`XLw~qDi0(X@WY;nCpeEE@PC^2sptL>=jK`!T~TEENQ zKUs;CBuSSWn1X`Q+opRc*y`87f_~{KG9+mBVkP_pcfDoEG8sHAXWglp-O&~t%-xwI zofH_%z2UH|sU$7*AjdQ?`n5Gv8iewsrKK&Fnr0aumi)0dO9!qo&Qva|!5+2dDWxYc zMP)?=HmP^$pN&1t_tCL+?r=`N>yc$&9+~e-Cn%PClqUO}Mh#|c^sbMt&d>8U_VKbN zd`=$~&u6&uSyeDJ==I1df&X2?sxqp-m(`@xTd49=VVP*R*hyaikw}JyOwPO?^pB*C z_zoC5G*NBksWL(VFypz#<4(j8!k6ho*;a1W_C|n+1KCs(T1I29h{W!`{z=w9VUkAq zcdd7&#@(kitzWB#OIA>`*;oAY6@lCOwQFl7BB<~BjRhMKqg0BSbL!fKei*h_OG`_8 z__KH8pkc-UQMKVeLHyLCtq1dxZ~tz*s?G1diWGCz{|2ngi1t2i_wNgp!UATNmWF_D zrs41F`f-qg->|wM<3`<+9L!cw`&n`9!4K5(qzu3wCl}-)$wi=PSgFOZBH3pfgNOI)ek8~Q|Ubs%!!04@Cd+}uQ&pdeznV|>|^yNY{FLa4O|))~x7U~8jO=t#7ztuZKIDeP^V z+Yg^dFNM~V=8sw^&P6VVzX~^gjwA(S*A6yek_J?Xu`f&6%i`{#T#0EQhPx3Qhn}-q zHSAD1!UD4E@4p`apEMPYL+v^LH*S8qK|>!2&aIpzD>Aabu5IfBW0Rw*(b364M&AhAb`?r1UI!Mmq}uTpW(G-B3&kC2E039YV{E3J^uI;% z*{rvwgxKxDXrq1$<>$(b=->M((e#<#OTHiINVit03wY9=@K9M?07JBa@ec_;q+2jMip z@$`jc)XWv@{HpL0lEAh74!O?tNSj;3ta<(KX1F1okl`m1m2n(fI5^A;fA~6)h1Pyb znz@^V!N@VOBzXdF7Iuqh0F*HmZ}g9lu08gBA0dQ4Q3vfNifJ2WOgO#9vU+te|H|IT zYKH2Qx%N=MXu<-!!maAl8hP=^`5d))1p9L`!GIlu;2T#e%7{~mTALo~_)pP8$C~G+ zQoUvCew`GFwUtN7sg`4Q;3}I=SkONM81q?R^D<>T+F)rY3JYKV%a5%L*-E1*vim;j z#lI}?$(^Almd(0xQB-|@)m{ZM4}hsI+2Fh9^ls1P{9n-a$U25fk(K=|PZ|Bj}AiT11kDFdyO-N4jU$^04sB+x6 zd{goox2!tf=VvEO&zZ;Iq&2U*YO4{qd8v=3xq527XnAsLz*)^-I`ubU`yUYs8^YhE{wz%#)-ufmSC$wR6yfVrA zniS{>H|eZ_lx`dbKYpDv?5@oJ0Cmq<9kin4KDkKRDoiqR+vd=-Af+` z=VI&=IE%#(lobI?>$}{>(-$f-79ZB^^FoK^n?d~*FHrA!xZYA!(QZR7nXRqM3|S*! z{`MMG&N`kRk+1#_7U0O2OzI8w4-Tu&Pj1brAlB-5Di*;oR!rp;+7V((RWHW=5?=H> z1YYD`YrqL0?b@fLTfk(0ipVDP-l1`4J^rzpI_XMDbl<+>{_dQkFtL=#{NNQ($6_B5 za%AD~ETS&@IFNg?WN9;pD&yYIgd}pF4FltFaupH^3MCpo~3 zBy!KWRxBhplZP7RsPPTq*tIts+E|TuuFXV?7oPUxeYuk*7=fqPRiOXNsr9xS ztFMy8HK=-T>WM$TXq$(R-z)j+88Vl1@7SU&X7J+YkCo!M10Grj>L8u@mdsbpukgM@ zG-bUboHz@~Mnsn_DY5*NucuGJ5}Um-6-<75TtLW=*~|Q)9^dpS_|W$m%h9ljOr0+r(e35Yzx+aGgYx^d<#g$VZx8eR z+0D%&?&*LKfeM^p()enK{1!uqmOOZ<{$``^yz_ut0KTt zKcv+MWpMYhgpr171wCGWcI}IK|CCY#cHt5f=IOv?Nby%#`*PndXr58hfVvOB6ao6z zs^!KA1mm*tKaqm|!~Rz*hyY0NZ6uyr?K^cr4T4JMa|=Y*2LP@0P7ijtC& z)Gt;EX`QH)?E;NAxK)gv-RD6aipsRD&(J9V)dmPAWqi4e^vaNhXQ=l`q_Nl0(Q%AY z(A8b}u643O`VRyI&YyBhJ+-B!jDSts%)M>`efwfdJu4$|$xdrm0RT_)iis82cjNgbWTTI+BXmyxbX)fgZ>=Jg{wyl zms*Rr#qvSkF|XiTd-gVd*yJ^9M`iNcW!gCl9$Z9u2yqCbBDd=h}?wy40`TrRWg7c=5M4np$i3;qEQ9h*gxq_Rc$2)|b}S){b4J zt*!i^IW?FtqZ1Py-6)cEm*u5>wyigf^AmpTTh#q}$piwv_1h$9F%!{@CV^*1;a{ah$iO=+t8B0h+b4G8*979k_^(42U+YNi6M? z?3}v*07h+#SY%jN0~HlDJvTR?t4kDf@fRiI^;vJoCJf|c)^7xWj<@22x~|=89{lHy zQK5!Y?yCBeg>_883>9Xd9e^bt%>MocyY8PSd`GcP7v=tc5+rRlTpP5-l_x zL+;yZ4)mj7@>*zwZ4QML{2appH6_|ZlkF{N*f^-&!$K?F6%$^?6vMv|FAmCB@pFW| zKh6ZGoVl0ZyRL@7MZz)(+)fSy?ES)rg)oF}beL!!a}&~s(JFAk^mq!y41E{6cp)Kk zp-4qW_v<;z(1)ElTT}99f1XmIuTgBj{p71-u+w`<_~7Ysv8FAf?9&+BHn&H~Y0k{! zQancTVK?SH<4kT5m2#5Y{j>CyRd&m-YNJfQShd zfan3h*zWP(6)a+fPNdN_^l9{WH#hm(0)Va-z&cLMOxO01vT<8TKt^y$=6IE|B9t`LJzI#KY5HPDsW*dw<+zAXzruTwE zL#t@7hPo6Mln`5@En^V=D(uhsP8Jj)Qp~lBPakSEOX1r>swHXR&8}`-Les84%LHrU z{1V<>(4?G@EKUSy1%YRmbW`YuJ;c)Ddw85=x47&w9repTK;YkNiOpoSGo)X_k zNaIQZ)ccm<&K~m<%?+uCmx7I#$2yeaA9k%y+?P0UX3BPIucCP_mmv|a+N{@Hlr*Nk zs0iz^2uF8V5e?(X6+yk0+hp{l}suGQ!t>7QBH{Q%cf zQN&;l3W2|XvWCUJ7s`c`rnPyE=~}xW>kjCz9p^_z(zCeLUfA%QikFMHfpA9zt5qq8 zhL|&)5GfbpWsZuQ?_Hy*G5_MILDE%qxA~#^0n>&{+l~id~f%ZjNOBXHQ1tAKN$w`pj^fy974?RY=_w}(P^6m0(MlI^hr^Jt0zo!X6iy1k&rXzLH}EAV@yrO6+3 z8rO<)GjtFm!g%UftT&}9-B%VAZ8n2T_DI|{Iq8Cau2;W*4>2$@D%b(!^6IefTZ*0YDh~hsG9tB2O>x9s3O#Q^FyBaIiYO zlDcYnv8HW!1dOU$=b7g1rGZ4M5Cq?7`g&ub?(h?Vj)GUChMl1<(dj;zW6TDg%WiPsplZzCQqOR@YGVl8j=O9G*86Pk$5crTJqv zz?;Nme*>_ZK+79+@4#bJx2=WDoW>;7mt-KC$iSD@D&Z-_3nB2`dN=mXq&Hd2+3N|5 z!D9UD{@pQNdS+%=UY?24z7N^+yF9oTbveC${d#}@ zpOq^?Q`9SJSZ*tvH>sl|_AAqjl9D*^bp?eN98N_&mS+qu;JQ5SPF&g9v1Uuf%4q71 zMchgUacm=QZB<&S8IluPyt)8X9m~SPa#LzKf4x+ol+5KAJTM>y%5>{NWA%no-op~D zzfb3|$HW!fnJX$Ru$9K^@yzH+QTsgQ`;t?2AlSU0!X8`rb_KT-3AoZ2k#pv<8;Kq~ zJ%weJnn-lerIgN!rH6NJkcg)D?Lew^2ld2R*M^_nna|O&nu4N(1>E7YXD0wj8I{CM ziadOWy`^0d6kPUanD9j-1_nkr?qLfVcvjzmBFOsfiCwkhN)xpB)SyeABdFx(a-_XCOr^Iow zo&1oh-b7eT_=dJi3UaFqb?`;c35!!ws>(i3MbRgP02Zi;N7$o_=mA z`B4G@PK=IsCPW_QhB!Dn)^&!+(RxEMcSBlBN|YZ0AJW!R;Z<#vR8UkL9rMVrU%F@I z4(nd-JJb$TlK(|WNagcuXi)#;i6eAr%f6(Y@S(NN3=gl(AB})1QL1f(gCn}P18n38 zxV~ygA_TQn@aZKbhZ$QzYpWj4YXDq+su)6`U#|M~&mCi-GTav}n_4^PAIHcD_x%M* z1>3c%bUf8ACkgWa7?%G3!8U%80NlY>ELC$wgmj1a@JY`wJTh6bh*8Dyz=lnt-IKFy z9h)qUILO|sbsxCtg>@PrxT|7X#2qq&PvXC@a04g-aPjbpy+9FI?_i3om>5yHBFn_# zpP+CSIJypPt3!_qa^bgiX%OU2OdvN>X{lZ3JEoeGlYb%_xQ?-un%)ATVP&gnyk_Xe z96i8VA${E+f$X1FCMzh|G#}HPi6Rwp?E7qC5P|BHp-h#o0OcGMe>lwp=0e?a)d~B> zPULV^I(*>V?q0mim@a3iV<9VbbaX5bn=xRXjfJUxG=d+&PmwWRXQhH(z@f*DqhAyM z)%1Y(P9L$kr_Tk6pQ3PodohKrO$GNFLTJCKuV6bI6G578+YvT$zvd(BFy5qMySc{ZHG@4LzWn~pR zb-;)KU<8i0es}QxW#+NKenS z#wa=FK%5TnZGQbnE*#MVi}mg)G(iE&G1-R?&ky*~^g9!};Vdl8K*Tir5Dn*gO18jd zrFsVh&~-tlo!c5wVt@p2gFOKSoMB!Oi?%88@ooz#fuXGO8uCSM?sN0pH1x$;&CNn7 zI13|8tO$TG<3~vj8txJT4dU_6cqjN5W$LjgT7ZHZEEeFQ;u4yqmzSr6hqF1-QP8k) zdp0D1ReQlmIZt^(wHQAK43Ke)uL2_%*W3bC>(J8*NGI&2n@)ymMjNc8QI~|;lz?IZ z3iZqyDp~)*CH3GUPUU3fF}kFsl0YWgcLEde7RJZ*ofozA-MaN7Dl43w!Qgxvz}^4Q za(PG)UwbtYIkU3h~6V5$HHv0(I~hZo5> ztM3boav>6IM0E(?^T!`u129Ly-%hr|Kqfa1;ZsCXG|YDWD~pcpdV&?!smt^NA3u)- z4U4p3@7p&}cqw`>q+hO1kE;zaug_fxHKOf# zjf@XO?EIQhq)_Y82p9k@hzyY7+u3^i+*`7yJ>8&nE0VH^FOr}D7U|`;I|na5fM4I; z+PU}mKb*aFSXJHEF1+Y&q@+Gn??cYMnFIW zq&xRsXYS|uz3=(1>wCZNT-W(W_g;&&_KY#d9OIs2+(Vxhq$KU9X8oR}ddN0E+n^~h z3$i9lj~3PB#{4+~fa>4RiT`_990CDPiQHczc z%BusDEGCD|8IhSru|EJ1U@v|UdsdIMd>uSR&w?xTH3~cU4qgwmj|oE$3|#-zoM$WF zLKsP)LG)}y-b=6F)|8&*ib7!1Eqvko_k-F4BDZhc;c5oE9F8K-hi3=oz7Nw|nZO9giM21yVX%KY5I4?`3Bb@>`h;9ZslJd&9ztUG}D32o#w2oJ62O!R@SkkL;pksf8Yw? zqR?|ij6zM(+0)EOav^S-E?$z z?ugH4@P+!q|5OzPvt5s9cLULy_rILk@%5Uc?Ds`Dig^)f!X0X6pALdq{WKrct{+$P zyOR?P&^;=1z^AylmR7JN7#ylL$m!orN$}cbN{qcOuearJaH&a(Kck5-Tvk>9 zn5zKK2PiJkmqdVtIZtM$qO#2RkX=7JF=3a%CII5mORGk;yiOHDq!*a_3n*nENw?lK z!^`V#PsV12va%&sdWH3Nx*{3M1?t4rR8@8AGVm>}G5A68+gir4qobpYakLO0)Wvpk zbaefWi1*Ypb*1mZa!a3%D3bF5EUhHB^)~)(Q2=T{OicD-6~y8ef`Da;uRbhT_=E@M z>*=hrI{Wy$z|g?zeV_6&cW3#@@B6xsI&R#3p>jAT`r)yRHNq1@FN)|$f%A#R25#ZI zH?q>-2#xJ~cE!v3wJKJb?^#VgmwNWIeMtQlurNl8;(N*oHa&KahlhU_a$UQITeW!Q zE?EQun&=(eV$B5q#%g5Zq>k=xm2}KW04+!nrrT) zRcY^EsqhK~Q>iNvK|L1*Ys?7|h91`_vYxU5zDD43Vys?m^1#}y%}Jo?@&j60kR5;M zgu>0s4_^ZE?nGBfFm2x(YmPmRE~Q!h$P(I=!E)@{+0>PdjhJ$Z!JeTFV{y`RWu*Pe zl-t6@H0x6=o-4`=_z)bZR!%S>4RIMjamgJm0S0L+!sLR2d?s14K+Xo}`R<*+e@n-Q zgpE^$sT{XQIA)pF$X|!M?dXtJL8D%PTD4w;Aam1vehzT{v8+0Dd$SI$K5GAc`aRai zv0PIO!j0+%8J?8H2%qIYWpEWw@I@IDfjdcG@tBr@Z=p>X`dxG>y zZxH{GPk9Zjx3^M(=^!N-Ly`AqAiFG}Br-D?801G1irGUIaZ3Y>7IkgNE*E##V1ibw zhpynPSV>kk)Ts~H^Qk#GfRKs`#2EP4<_XYnyc1eQ?RZhgSTBObH$1LW5CRLFujccU7}A9|xp|{q|385_m(wM>i-d3l2_j9kkNH#*mU<>wx{YU## z(>nyRDuz7xFr*PX4P{c-ikuP*4Uaqe=KQ7~kh&m#@&ci<2Z9nUc~0vV!Z`MLT5j{| zgvPx?)lIzZreuxgxStgB$)^4$1Ja`D92y#OU@3R`%;pGVGNqYY3i$^_LiT$ z7il|fJ-bBG-5`z`dT=9ocba}Ua(sI=-?#jqL*^6TsrS+I^=g*&7iXLC4li_Bu|UwZ zc|CzFcov*kVCB`@mSqb>QAToPNv7kGrs*%-d8{jR=UNOSo4mn@MLQe!iGpIUq+kRj-Hv(I>|ME(kTbDrs+2x>V(;d%0q+MNI^cT}aQR1E7 zRZZW{9PZIlD}7an3?j!s6WbXv4|5I4w}ioAA)(-L%i~%_vL0G-ezR zuTHrTIvG2B#w%f}duQl9_qqFn!Z@c9XM65Q^GbiRgUg}SFFUIN+k>8SC&6>~SU?D7 z{^W+yZ(=A%zl@5Nl{`;n_rV4mWl#ByIXEjT3rp6nNssb*boBD{Ha$+<`@cs4b&ZX; zQ_IJlQeV6nDPtupEeorIn{o5>P_r&q*3;g;^xA z5xEDC5A|!UZsubC>s?sAuhEnAD}0MznWrcpWg-INq&3Y|``&yBDiLHJ#~ROXdKaor zaaCXcXmx6*mu3NYv1Il2-kYPt!_RwZq=Xp2jjF?{hg2u+I8i;eKBpAE_bYlrno#}~ z@=U0W>+IL$xin60H+=5)V-V}^(7?SVvKHA;o5&z(#n7F^@VudRq4vVESoS1nc6#Uf z$`F92MrsQ8xgVQOk;om6{nyXaqWl}*VI%nX+H>RL9%oceyV%Y0;&m?#$`~fVG-JGy zCge#C>QU*EYh|bmVzPCc91uGXBB*XrO-=@g?VQUURs-3zQqdyUb3iod%0qzNbIV&gM{g>PNM596Q_ zvHN=G*s+rk0hl(v+qL+3)%gc!z_NbtPwPq*YUbVi&u)M_)z4m9cW+QJ+@j)Au(Giw zJdBay+o8+S=k6>CF?PwBO_U~(y%Q>P%jQGNfS1*XQ8{d>hiO> zY5nhC`SVHcv^o=MUS2{FB06PVYnl9mn1YS}3m zeLWWYt9u8-R)RE45z5Oa=WniPaJo-*t~-?8kBYWdx;{%KuAS-(&DNgf_{*zI-G^E` zs-rMBEoq8yD7(zfZFyK!RBh1*!;(YK8mM$F(OEREhTb%vh?zE@=FUeoJme}?1Tm7f zoI2&KWROmoN?&I#k2rLELy7fM(kjL>Jxg!=?r`+9172(F6Sl4=M?A z2EPCJuULS%F`s=BsJQ&zO4X*|6w~X|+Mh>&ph5z z4?ESzBqyr?VhZ46gJ>Rb!niYBYYy0NZP2;s`UfixZ#iRS)jX|WQ)A;^MT<{!pJB^d zvJXV8QO)Ixa|sLRW>djD~OhI)>jEVmrDycOX{IIC$^B zQL4lr!TUKg6PKlRu~ZaSa9Xm&i@rHXfebKaTyCy-ZZ0K74X3U4^e%oFZNU+gIVUGh z?gr21H~&Cc2cIvcDs=G$Z|XhyI@Qf7W9^nj2)XFWy1KFmnz=+s`;^Xd%aGC~GxHgE z`}kOmeUtr3$3zS-hVa725R`X0i?hqN9X%_rAmU`heos=exgAZHb)`@VhM=)v^HFD{ z-Y+#ImdJI|6&&2or)q9mC!Y0}6T1;{U+hYl-0Y{~pR$a1k$; z&4q3JzB&!(F6fa_BjkF4jM8LRB7S zV^UgxkARbhXZ1~`!jXsPPTti-oKHb#9zsVH5W=KR$HC1xA{Qw$koJAD&eX))Ygso=fs&0?yG`KX zZA#|5j1N~EIHgZ&h$*Au4o_v94iJB=6*6IQNY=F;5(p*1f+y5lc~dc30W$+J_ZqL< zA<)>N^RHj+3@Ezg)jd;sPOE#I}K4^+VQG7|0R&g23?|!=TJw<#r`~9Jbn{R@DN;yu3MDCWY`r0TGD;RUl%m za`R~&EV+q2@X_HR*>Afb&|QiiI?lg84InF{B?F1k0ladgM2`VRB#2fgDd7w}Q|;yW9DAAI2iv-n`0^rVjk;>jTP z61{EQwI#ZvKHO{AYI8++pSMoG2&jah5HuQ8$71Cgx1PG!X8i`)t+3F*cZ)jHQzg{h zXHx@Oy5&yqV*f0^Bq?#xBpZJH2o!nS_YJQLBAS_)pO{!Z+qP0qP-YOjl_KC{ZWa<3 zE9*#KHSUDvO#%v#FJ4B`HTp*VBz%87tAc)S+A6DkZD@3>=xNL^i?cX7QE4%D_PoKT z_iK#qQH5_B1Q-f?qehz9gE{^>Gyfit^aejuC@L1K-s^8gKaFcps-h5Gbjo1dgTw zx%R_HkCumz%`4$Y**LAK?>OIsOxZ8tw-fA=>&}!@3rC5^j( zY{V{U6MK7)=bfA*>EiLk*5+6~Tm$U57g8TUZ-AdeZb-Oy?P(-DD&-c%DEW|9&JD`2_v`_cEiEJJz><|KxV( zFYFY|W6b3CF>QG4|Ga{EfO7fGKIBnBp|XMU@4)`WOul-)h#p)dHNF2G_Ggu)-)kdT zAcEWdJmXz@e8dcP(^Q1aJXi4yqCN$o={{WPGU76Al~h;*d( z1R{O6WkFdo$O0%R;eiLsErW}^lyd=TRZkJLP*vKq&>Y37tA7kzPhb4fg?)|acblFy zk_aW~6Aer>ZMY#N4luuro?&n((o}GA;)C+IR46vg-wmg7%@YD@sUfW_e1t10O*}KX z3ga62A0kIb$9`CUC*!J*Cc3VI zD5Me&gb7|<#p=sp6aZ|41t1Ul3^6VhmKjQ?H%AjQmME*BfCKpSQ&Unxy?q8%3far; zF)>aGGw@a)w$8RYxgO{~@liS0)KSabA11lUfG{0IEg|r(r!jz9Rb+#mVqw z4HjI-{y;bdCh6K+KWf0r)tm(CGb?=`Yjm$Jp>h4=(IpyLw_D$36=qf$-Da_Nl9gmQ z6A`){5jwakUpBs^;UcJvd(nPQUrnOncziE{)$h$hmV5OBT9jQaWBCcQ&RDZh6sLu@ z^!iVDAz(uQ)Uv*zhI_mMcj^Gr+tMObh>gqXAP}vG6{;@|8ClC-tos!{1Hwvp z8YIY1M*>oRxmnGh{~8=|x1Co})ztL9bH~8ZW-x&c(4#&Bmk81PiAq7hO~sbZE&CM6 z1}s{6dF=Smy9bE4&>Q7f$L3+I>b3%kd@tA#$TWuIbhDzOLK%n`v}eY^ht@s`2A{$7 z8To^x8^%(e7Vm>A^M06#`g|0xW17^0LP}zPsJm!Qg(cfr&@yY-DYU|3r}kE!)6ylx z(ll9pOdWZ7>`FgzZ6qzLAE&%|)2ql94D43WLhya6TI~i-Am~bXc=%(+%pZ0?^>!hW zL<&40i})z6*4hn%^XB7t zC53k=g8Mx%fj8-|fAw?zxD#j{82Mp4K^2t~h0u9?(8!9+K3n1`K=TRqipQo;k7nF= z)BM@;^{+;7d)~z^WmPgUxjM^}jdu<3ICy#X(P^Q zW@cs{`%*wg62gmskql4o! zK^FWx2$Daiip=rTbs>eR1)erOYE@hO5Kgc=T4f3Sa=*kG^1OX{II3+W@k^oEjr{rx zP?i?dk}R&V|9qkQ1b_O?n>VFv---$(EY?pmfN0x9wj^t24LLtyZpOMA+#K^0_I#X&?$P6m49 zm)SCCsw3`Zs&7#VMi9L^2oUM`kB}3TO^64FlTo~E^w&f@XM|NN+1~;V~D3+m(qffVX zxI{Ixp2urun;{0(Q50FvY}FEn30B z=txo)LoOs#@Q5+xN?l(L%s2ytW|~W>XtX*@^7NGN8NaFyrSZ<)(7bKNHbCv32=|){ ztExWGlu&!!MY$dnxUUi?5$PF@SO@cHaIQ<&DS3a7JfL-lQ*<1d#C1O{2^ysqUWX zUs@&D;s|Ma&2^Q|r}9GF_wO@&S8kqf$a} z4O=eA)58g-BEngd271MB+=xZZ9)m)uhUV4hp1umQRKg|jEP{p>OVZfeVp>YFdk6L!Dn;#lGG z6RJ$?PF4f&NSp9NEFF6uvE3=ltx+rwai;PrbZf0NI-5&Mp-A;iyP) zEn6!Z)XM?cc}t+sovMb0ja!M=Z2~rPJm%=loD@4HLyvoeHJWd*%mR=E3PH@eMvnEy zr)Ou?HKGipL+f7P{CfB3C~Z8fPU{=87%dKja@zqH7@g68Q(p2A;TS9-DtfpN=MX+N zmVx6}IgemaWrjmas@WVaT7LBxrd?b@3!NbT9uv_1hF=g)>0cn@IV~b$`{7(+_F#Jt z7!5~atxKwW>4ypQp$`aG-888jZeV9&Dt18ZfwP{SAd_4KgSok1DC{Z&U@3WIaP@em z!k{eBl>~@4pxHEiW~5b(I5lqxGCHoR)^>P6fjGaq=6|Z=)rwdQ`Kfmh>cY)S24#@P z2?`2!FT?1GUyQ5D(&$rbQa0%)bXea82Q$hkh#-9$IH95WV0d~u76ii@r0X?|5vo>K z=JsU>b@Zrsxq)NiMp5kGGi0qEq1q9`5l8#ZKgvbv9ARKU2S%j_g@Dj-Cyh2c7nj0A zG?JT}KuNP$?qbM4@I591M{;i=kS0{#yOlPgx7eWmF+(3+L$k}b^9?)z2!wp z$u3R~Ou%2czCt0Viv;{qE_$70?Ahc(i6JwqtuN9eB#V&hS3^OQYPZIOCI2?y{HEZz zkT49$93LC2vVL#MLKojv&|OYSCz{hc@52ceOivPv_1sgv=K#svWcU)j$(G}loH~Ww z$`l5eZyR3;oWb_F!Oz#$(5MBQTZ{97Y0EHMVJ9(0D_2awZp}vq_jUY!3LJaFZ1eZkVD)Y zpJdP5OA7uUyZU3AvZ-WW*0=I|WrEM^IwWum7dICvzOh}7q}>FSw6P#i9=pEwF3O{PjNKdx{wQv-AVYZ-MIl6TYbDejvI+cBWob{r3#`ElD_Usx=nBCxehXws7&F{vHHERsGJKsIoWVX*mwzj--+ro$~DKn9NLH&-0k(b_9pnrLm{ z$We30z8eJK`D-F2)y!*84R7WAg#~Fs|Lg?V9X7n~Gpayl5wpr>T{|m3ymS5CxDzJ7 zGPwRv2Y&$30m7)?rk#F_I47NiP|za6AcQP zyqwm{Ip0jX5Tgdfn={)?ay_az1&ABTZXR9|6#|NGA$P9Y%*P&l>&geB9CqSSfk;0z)2d1r(9qusOBf0sJ=3`=TJFk>Xpq`L)?x6C|Pkg`&tEc(6pr_@t5t z*v#749OOdHhQ%c%sVk9c!0>#B^`cJpQ*v@LCq81f7T}%4prp(6(mljKc;|Ft^_QQ2 zscx_fnz#Ji*vdV|X+53om~Qy8;|#^PN^VE-s3z5Y|v$b-vx$DLcQ{e^iY8$%Wf3*?H#~h0ZbG8JHxW`7U${& zqIy*)(db^m+ILFc0MKnOc~mqsF@Y~@MxR4`f}koqMT%aD1)(Uwjy!>#e<`0L3+jY( z@WCzZ14M=wmK%T>3s`wWfvw$uUrK9CVQ>&gqb#Mv{-{q4<2(@(5y^py%6(|f*KNRD zd%Obr@-H3;4m^tSJ#HrdO&3;te6eJ2|&)G;0+QbsJ_-b{g#MDYG%~4$%FXx zWU1o#f;TAl5bN6_}?w`lBk72oF=qc!lQ$16_L0_wV z>+7i}xOY_Jg1E)$X=KzDgrNxIL;(?|wmDM{3G5n~J9ii~HLa-Mf;_Bg5fI$OAnC&o zJRwSE<^(pxe6I2@nf+llATHee8QqUHX39WntNNL9#x0HTzzeuCr?2Rj8?Q zbMKX)SiLa_6Mh1O-fFo!k^Cj6+s{v_KZw2UnciPb)I}{gh~9$T933rZD<|M&=DXo_ zb#>bnztR-C;UjRCw7)OxoL+;<-G+ajPk)=kcljDfG2+X8a_{N#TwqFrCiB%|gR4J7 z;050MbFk?Io<{z{%^44`sVFqS7=WkC@;o{X94$E_djN6cyXxxU<*Ty2wkw-$3Z^u{ zavbo@gJs4<&1mWlCR6HNlEcNDj z>Aw&b5+lF5;7n6wAI%Iw{^Vvl_F_BW+vP$s_Qf=o>I4x0@HB7jg?*=ZU_Hx|MNsAIaUl4 z0k}9+w6wVKT}#{QP5G}X)To)9m9mUo@isrWIew0@?kSxvDqP`&hHrptF-eTk-Nx~g zGPvK-Ynjg+>aTn|ez2AC?%G8mrbXf=lG~YQgxnfK7V8C`lzBPPM}vPXRxb!FYwK~K zF(-tQIQHG|9N0?DE)71LK`{G-OjZPRbe})iiyS=kE9rG|tDUo90_rFH8K(IOOO3*& zf>1)q(g*mSap9M@qE`dCMm8kUCU0M4@FS>VW2rW4ZO-ERLmV?g8)x0L zt*mg(f_<)F!|3p0ubiNlCP}m$qO6fZV|`FJ7C0W z5tB(7wmsW3d$($HnXud%5g?tkV>DQnLZwhHk$LVSvVaInE%ZX>1V;Zt?}Pv`zLtW) zCWK3{sYGPwrP&+Jk^#ciAR{Jr#ceJ(%J7N*L&46vW^C<{w_)IhT_YgXdVY3A)r4J( z@Wx#-B~4tBw8?^s3F39q))rN**X?$lH?UNW4GrF8vsQ{;undoQP&KIC{!`eE1s(6W z6wrXf26pIyqMV-R0p4dKCLCLt8}bj_!Mbvz!0fBLurpmKK=Gr(`e%Z{wqbd?yEun@ zN2$l@gO&Be?lC{UQHDDPYVX79G~Lkm7aw1-Fr5R$0*P2ZU9^;+N~Oi(O$jLzOWwP; z>oJYZKrr-`%2`K$Wl=d+QFhv^jDI<`1J9w-K0efWfl8{H zo`GT#xukHT`NmdMY~P7~0{W;i`T{|*eGG$`iysfe+JVn&JNv%Y2h{WgP8|{O-$3=R z-lWlWFBgvpuXhT^Bb@JdXzg*G>zDc&01ESBbkZ@E;E{)MU1}bY$Vg2}I>=^c0A6qJ z7pOQPI5?P!k`ij&BmE0(c3_%*(xjEv8!LXd9e+mh0Ss&$SlhVJeVEO}c8>jKu0M`* z?x~nh3xX18SYbq)m-x*glTmEdt;sH>yyD$!2~IN8hcH-uKm*oxTl8%Ng4M-!*OvGy zysUN66I3%|dGbgugz=t9VE6hd{cio?Q^?B4K07aer2+`!xuD>? z1;)H%+il=k9*z~2MX{eCwqe{8#NZ*K2;2R?P!i>EMLw-i)-b@2uVZ9{@%fo0eMm7@ zr`pOYPs??%opt}A-dg}_*0wfGK|x^{Bz&%U34_D1{%(LFgRR7F=VQi;rsSHc8c@l1 z_u# zYyqPDupf}Vncj`d*jGx$QcHPpa;0{gBQEHZr$yD_qT7NFm0poyVD^_!gcJ3)K*v~@ z+59`5&OF=8n5*Gnyk z#yp)5;_Uxdf_xV+Y`{UiDhu%#}EJf;RFd?tc9gEMstemPxiv7v*-T7w1b z$JxdR`!fYvP|7_C9qE%NHK_TStx2{K#_X{zoKSC6WF#3s+1Pk`Ge0rGr1C$#0*fBG zdWt|gS^yu0R2I0@T~?{Vy1KfL#~u`o<^whcqI58~P%Dd2F(wvKb`#w{IA~9le*?}Q z>0%qQE*Luo`jQ(BGT5H=kT^jWsd@lt2CV$tr**~x;6(xBIC9=f-m6+mjUk0ElJtQE zfK@-k)?MRtoF6SSJUvqp6D`B;*2!A~_U{PLF_5AHt`0Ek{e8b(heSrpSjvPpRX!!W zaobKiRqC>k_Xr4PL!wJYx(Z?{V^0=;cyio0TbTg=DrT$MT0{#i5uq2Yv=-n zN}BO1f-d#Vetzf(Ohv3bY)6vLpiqU^b$E~tF638qpBWP_ z1_JV~j;h!)P*S#bnrr(jOps|D)!yaP`E>Rt%k*jdZI=e|$jI;XtrcbU@2V$8ob$Zo zLS9=vvYM*&pkyqG0+uFNOJn244-K8Y1Fdvq=d*{VXOePJzOOgio)|eQkBtdK7NAUv zDw`9I|0#uj!`Bx2vRtF7GEx?)%L41}quvZ|fmM(#7BYd77@w3t#?chV4`-jyfvs^H zZcbiA@0h`CLu%{*jj7qQ#yH9#V7WQz;`qu{fOA;_!jsU{5CAvTR7VmGMAMSrE#~Le zd=oh`q8n{%FP>$)q^%Yd^p!vSjnVMCzkmOFOdnC;0xKP~V{$#K0+K`lw%(Wrxb%oe(ssdw9uo+oiZG{Bi zqlG;g_J-M!CaGhV3Zx$p4zL$*;6eKmnix>6hf0MfCZL-W3R zyB&+(;(av1^a&@-Wnh-)55bd0nK;e3X9hmH#r+_w0;KCadG>v>UqLC6@5^FgZS(sQ zcHXN2Ht!9dnPMHbUMt>+rwh*@kMaG}pQF_kYb>7m8O+g!9Kd&-F4q=i#!|(xUqMqw z(^yNPdvP@Ng2;i5FklJ+EuQqO5k9#~a=O3L*ZdAq$F}z1Hg@RBWgiGgI;zic10i1e z7<>K;_BT-ZEY(spa845;WwTz_4nnqU?oyYyyv=?IA`-{Vr`3~-Dl9+=!^R)j+|1>U zH#F0okaJ>&EBDZ6@v-4vc{^YW-4n{qd3bkrJIR^(;JaGbyfE;Fv%0aI=$jZm#%MOB%y-t^pRbFEVw#HDGPG)zY=3zPzsU$M2=an{?d)LA+Wx`w z@x`+yha;o%34frkpWkf4#5XM#o)Cj%O?eZO6APyYrha?_`&Ugh=egWIl=jA@2$ya8 zn$ONf6^KY34>{ottnJ82>;3)77(9(Aw>8w8I^n}^ZM7pMr~Aj|Rwx|EUVMPw(ShtR z_{FW%P;Pder6u3xr}XD0P3aT(9|+kYj5Dn^QHHy$-k#!zGgNL!wD6S>ct>$E$k3^$HgTfY4GWn!?CA!Yxk;m1@-PV*p~@wQ(KrJQ5lzjz}H-sWEKr#zT^Slembl8z5D-y z6GcE%q#h}$&NirS5~JD5^A0O4sy8Hv&jD~?u$}r5;!IDhJ@AcU`P8e`Htf@vJlU1(rwRAjWZedA5SlB&smNi_0$^LlOy0%`f{8&Z3Pbt{} z_q3Msb3`h%J$JeR@d5PsDF3kze3BCA&e zBmwFOf}Av{~$Eknl#qb*A5#OW;qspeS4okt?dMGcryZ)f_}ws2Uj#K2*l>8 z8(u#;*S;_bP`>dWlwy(8TaDF(7odO+qDG~#CZD~=0qLGQ)COoUn*S@BCQmWI%Z;bOj#5K@@%Y~OqNC-y~ zVL-HuklbQ4p1^Ip@Exc}9b0Htg4_>xJvm`7aPX4#GL&+1)AUU?@*By6NE%efnsfsB;C$Bh4o z%*=mJkQ=>r$8dV*#RGQQqc<5$(R-Fmz_rRZxTsAA+u(ACXl4czkEGd+saYh#{8?r4 zi>(aZFMJO&rLC#g4tBYGmlsvGmDNZ60W!cl@ekJG;COFvGd(@(#YS+Gv>qYFxW%Zt z^KP`vC6>CYedLQCI%3TKGM9@KQ->o=k^%4s08c8U5#93{#_sJ|5e6Xw*#eu+}6u(8AD4k+W zyGa}3$tHxh?CxjOSeyBssdLBuSS@|x1m}^o0`1-Yb?lBy(5e*FiVp4qb`S;zxKLDf zss^|ZgaLMdXQC{UXbEsB44Q+%gn-p zxqHu!`DQYh2&EaMDH|W=C|8Wk0F=0FbE>xj@O;fqX(`{B=wlJUKh_n?UV_5Q4T(eA z+2;Qm)fNFj#UIT^46r~V9z`8^yj3KDJ0efPtzV1n9we|SsD8LUw zr+6D?h$&falPA{GRnp7ZAOMzEH$!Z5@%~u-;R}>5(4e>gdGYNJ!lmJMr~;lFq0V5( zxxHuA0V)Exuvm~&J(5#NN6RAyxVkvd|1ZAu3N^N7Qf>g`Yj-`2b7IXX2D=V2gM>rWa4w^j%K- z{5;Wi6!R5arD82@8!k|pmUf)x#d}$gyDF63ai+eyJ8^uA8(ScqDd?deM5hi2N!(n8 ztb5*kyuRIXcolnEdx>I=Dg+mm9w%!!EmMrGb8n!M9ho3@h(QBDf2ZtMZo5?}SF>?uAmC{YbVPRZ4hR$8{rdKgeu1*;W zKwByK;zMC`=YVCH;D*9yq~48FaDH{W zj44QPp5W4HLGcN=8h@&$l=mWYZw&8veP~jyU|5*SZ^`ER)dQ6!?SkPv1#=$B!K~Nd zHthwg)sl9aD=vgvhRW|1uW@ag3&WZ*0Ad7gdBmb3xS<IZ{PjnpGy@PtPKObo8T5L75wtCg+~M{t)W0`KPdKiq`Y|i_p&0 z5%yH|6X`_<`4ru$3W_T=H8Sb0P44SVU@^i87PIfclGr?YC>)1=;OOGg z+9MY@JT(yB&!Vgn!ofAQ@K=yve-I>4xu~7qGLUW%`@dWPWTQjfpAK(+y z&0XJ|F-_(%?5uX}Mx~(2lgW4L6a74tn0>Y?RNCG(;g6%`25}sKS8rN=WrVRcIQ8wV zs2?%<*h!m}A4Mgl%p8v;F|M0Snw|K%Ei5fzo|2U(k^&%th%eD;iU!9$F=Qm2Km}Ae zYLjuVOzWc5C2m#>6zbsa ze!tSH2g%7TRy}rd2ci=Xsrd(uBXFQU0-haRW;_|&7u4S%pSeK#bbi)o(pcMGYNr1!lmVziUUkHL64wP6SN-W^ z*MrRycpI(8O`K+f`vKI+K z=uc?M?eit|ulsDR_a)2@jwtm>$Gl+8yE5M^6EBpgG!~$17d_PnH}TJy2sEL8!N$J- zH`ti>KZ1>?`R|mIKlxYEm7svDi@~5DZbf6xNQSsVFylb_6gY=Kzg{cSuv~_JI>MRS z2KR#UXn$wq*Vfy=&2bC;+SgDS34lJ3Kavv;aH?-1An~yoNMaMktC$}Xl?m#{mDol`T(9D?~wnJ?RIgw=)#|_`>$v4jS3i-#J5NulsC0jd&)*p6MiP zUvbLZchmD+JMeyo^k)*W+|cWd_@N8Ur}j4Q7n1LKs#ue!W4+k#U;>(iH}5%E#Ke1eOGG1fws5PK3%-@r`keB9{m z2}@wCO@-WRDJ|`_en&qU-i#U%F^m6m?B%_ESEnC64@|bk88?}y!_w3b+QB)!RbP_J zN3)zH0m+(abPK0{rBppFnY|>t01cQtdb8O`^L|bI*n+WOm9Gs07o3PT{(O_)OJEz; zI91z_^y+uV7`;WXvY*3XJXRX&@5*{jKq_Z&DrVCAwu`Di_eHY*;1zFEU}H(*Ho2-E zaSP0c&n8$m7Q*AQ1;gx*w|XkCyw>ycU(X;Gw>*!G9?ZPY!7Pg zld+vyx0cui=_6X2i0ehA)pjUuZtSws(kB7ss92eGaq8e}vVu=Og@PRJT#dXt3IW<5 zjgUlT8Aa9~?L^%RM_0s~sHy#|#R{qe{O^G+sq>xh$oY09DI019JAwIbjUmgOa9r-8 z+tuH$a8?12jremPZpmqZpoI!mD|gluUV@mf92?8Ll!5Sob4HZ2S$f%wf00(+TSO@D z|03-zqv8mccG1DzA-Dx61a}X?9ReY^ySp=x1PJbKAz1JL!DR>#+#$HTyUWaN_CDXa z_s98h*1Ek2G)?!UySl30s;BG;v?lF6+jy15IP|GvHv>1w-k%ikys^ukzjP2%c zRTA=uqv>x|qx1Ke)+?8x&$KxcZ(|TY%sR_|8V`o%l)v?llp?4i44HoR0FoR*ou82~ z&IVI&f9)6XHH|NPPJr8>PaysXBYV7ws0*9z#hF@mePG8$i>0+h2_(+$BZU0r|GsRdqC*d3gN~X?ATFOJrIfKW?lF zz(z`g^BGQUfT1FBO~C7T@!~uTnu(OKbFN;p9t`VBP`jNU@W$Gklh6Vc5eS5>1VOGD zl5#H#z-dMtEjKqluoOn5JQtq71KPBi^$C&b09`s#G$cU|ugU>MRT>_h{ycAp`tk8L z62w2h;Ig;EF)xkUDMAOnIcodB1Tv}1gX{khIQf$X#7~Rd`8`UaQ^p<+d|57-UptAZ zhZG`B^KJtN*Sa5wAfMO4*e@RjnO<-SU|AUY*zr?PW5^*UlZFS8RTW)!#CE~OYK$9$rl=v+D-Ghyp3l~mh`R`YcCTU}NneXKV!5;=ALjk82bTL4A zvm8zr?g72D2VO8zV5gx zG636;n3D!w+|WR}x~KQ|h?TwhXY~b@pVB{TZm`bYTNJ(m(CmtHuifZRrFV7VjO6jm zupJ#&)m1X)1zjC`%gyN{2wLf#yIju{r6>@_V+EWV2Vh0~C{gz-?VHy}tKVV2>uQ2> zDv#R_`hwiBRYcw7bj|=f#(e7+do;z&-^4X|llyV`Cl8{sZ4F3(-=(Z( z7>tqTM|KzDk=H^dw~3qQcfbPran`i!2wwW_{fdUvo{@6Z7Un3?5p&SK?tt=}bf z@+s1YH||BmjWB%x;Bjnbza8|#*D+s1d0)R#(cP5)4a8o|HN+pCA1@0HA@8wjmpd>i zQ*!Fu7z;h6t{HL|jubX+Gv@3a6P`bE18ys$m%`qJ@UP!7vFC)y+-RYQ{gU^$!+mqB z@AFq4-|Hby){>$=r#z#-|1y}=tEI=rmoChJ@4ge;TeW;W2W{jAtmCm>#K=v!6g2>{ zd3BuxJ;pY84T96y1KvmVRLB9Ki(mFOQYGrF0Zb+>23RuV4Dh7Lv=cAXH45zhn`mKq ztpFAwsJ(e@0fbUt(2ab!{|$P>&t<3=aMyF3c7$QhMM-+UpJ?B#f7=h3#&ihq2?;?G zhfpoMD;yA8ShWdPz~3MUpb>x(yI`x=;}cxDio4FaA03xlQl3*~OJ38_<;ec3`1l6c zc@g=61Ij&87(ZeBf?|i{a_e&nCGFeGO8v$kmjY`30asT&1B%&#y7M_GxFn=B*r9?x zYZQwm9);%5Hm`npw3fR@fC7LxiVRk+M?(oOC2~`sMTvJ$&3X7S#GeU+1z*()8fSwp zFUXynEH8$D*QMCP=m?&GKmtj{j{heYz#8)9=TGJ>usi;0o>1)R7=@grB?If5H#z74 zR{I4=HV3j>2M(U=OHx~UWYso+pMwGU<>mI0mO8q+1A`*4tRz6>yH@K~T_0d`a&U%X zP#h5XnA}juNQMa6A3LytjiV`nl+C`t{<&g4uxJeekX`8q0$0FS0PN-XCdS$#Qo!r( zrk>TClEEcEC$Y-?i%o*L}Zl{aag`+PHcX8@-h zecIa{McjISfZW?5lmHJBENetTk1H2fj35H7bs@QO`S0HXokp}< zt<+ropz0fXgRwV@c@SsS!e49Ot>f|wd&b{oYNYcJr?(9MG`oji7Q`OaRwowF$J)w0 zW^Jn=u(`(Z_6TWJ1_=*2d-3^>wPgU{fK*pS?P{Q-H}OppKE=E86u|-r>W+G;yY-bN ztUfh|H@|^rsr_i>n7|y4qR-v=Bv~eKud&IvIiShEk?j~oLt8r(=wZ+4y2t*JgiMQ< zys5gzoKnXLX~d$)?-4re3Z#S^AO#2BhCkoGN3-r2H=Y**j?@EpZ2}JJOVNLPg6(y< z>(~|TST>gtEDt2WalN}}v)s5%Jh`RPk%Jfv44CJD{50F<-rLjXiO!%^V$6zrMSzAU zW84Jod8uN_t6ncN({}q9aS2GJIwi-a&+)X*2PI-`ze5b}=|Qz<9tetr$EHW~Hm{UP z9d8Ae#;nRfNsYEcAsw_AUq|nliTrVH(#=)!Mnt4hVkre4c~1c$DYpju#eC(cfbxNA z{v0&9y)pXqY>x>+16)6*VtJM~uac*+9P&)&Ny%c6$zpmf2mC1Cz5WG(K{f{~0ibhj z8A7~vj04r~lM_cW-*gV%&)=gg+lCZ($ zG_YW*VT&u=-@Ihv%rO$FX{Pl%Ea>XR1X7|+~0_EEoBX^Urm&1q1GXb1o@>49Z&3|H-d^JOZ;fx`;vPyb2&c2Zm$^cjGw- z=6K+`BDISyF=qq>@UQ?EH{!+F`Yhv(b zFK-WrEf9?Yda?>f2JoG`A7>zt$?S=r*HN38G3$e)B&%N<8x;zuNyL(!EtTwP*UgnQ z9XpT`@WTJfz_Y-E`d1$coqH8yKrdOTdX6NIVt!XPH@84{xw%y!j^c71Wu*W1WsF7;wi~*vGstB>5w? zhYBPrapHS(TYg<#3$bqq1WD@N5XgxKr~vfBL_;&Z#`$*pC2hV5uWFs z@eI^COo>?2=_P?cKxpO6xw;IOkoO}aB3h9b&IbXGcU@ya6nsl94cPsUMI6tF|?O(COiTHm%|)q za#~tlATVCO$zva1Pfu?g=x`GX451kfdO2?x1vu+nmo>2aIq^7Esv!~A3CNg!O#X;W z&8ULkr6UeMwE}*PDPAidu5~tXs%Id3)dhYx(ttxqizu#~Nq^+?Z`%G5d901$~z0O!*5CgqzkTF7YUJgROeth~4XEl3LK=qTWiuC zO(MUl3LEf+fffZM5<#L)&D*a)ooW)#FKG@k5uNR~^r)t$W>;fM&fA% zJfqP&{Kh3W3w9nq7Q-=R592px~AkVPG`2>A`gAx0o0icXuAZ0$mOW{i0@JK@UuSz#}J*0?HzO zR8(LB6*r(@;BuL!ou;hnvtBo)0-`tzhB{P~c2vc`c^<7=Pb^ra{r7*rIdeG{kwHk# zE4!Z+rG)Rlh!5q(^e5;MFNj_kO51y=rGZ1(+!(eNoH7`q8 zawy3Y47aux;_hSbkHt#{B-bJnNGa|D2Jg)+VA}uEs~kV<=CXDgOaIl_koGRc(W7sB zSzR&h9#!q_sZ<;GC+L&ue0rR|Q?m>|F3BD#PK__t+4Kc_Tl28ox3Tu4dgm{ik7{}1 zF+h0Yefd9Ou@wjY&824dZ?i1jLH>3XH6X?FJxE)4iBXjG;`7rJEiome$pP~=lbI`>~}yt`ZCoo}Ap{ee$oO7}L3 zxb6g=MmA7Jyb};7v($2qQJHV%ViG3i;w-PRc?VxZZty1l^f2H_ZbEY*fbc{C;WzF- zbr$D>FTi8N8_HVugJgMrGz-A-Z9hs&&1lq|;3O5nd3qIr@%PN@`zhZ1d*e*(H9&d^ zLOSF?pa_hDn#)dSjS0^Adg6dDr8T`~izmjfeIuxV35+BnPj5u;hnBJ90x!~9xxDUl zUdoLx@WmRAp_Yv%ny)w@%kFXE_OY8akF^skE7%ee5U^INkS!wR^7dZ_jdE!X%IbL7T^zBLj!oi}2{AvLx8vxcSe6K!Ke zL?=?g;2f97Q%?jz`%I9(P4OWxV!cey^t1od-`o=#W|H1KR2P^G6B=B@Y9RyOkO-|3qwkWxRiM7gOOCL8RP9m{QP)h7y%`bqUodW^5`E*=h&>#c8 zS{0}^ammB=i@ee<+tYE0;m84M*O4y6Y1zEONq$gc@xOhS99rfwk*05!tEH!EVIRR^M1 z(8~5*c3W98TaOxxfz+C4OOd&`8gg=XG_Ddjd@^}Od{mZWTYUVz*&7ktJbv2;UKQ0* z+eZd5tkC%EuP$$GgBuiRS+E;e8psJSV;wR1KQ&nDHYUhU$`>@Bw0B4}+}K$0CSrc# znHh$Pjfv{laTGjv*tgq59u4i=55I9yi6+R8i+OhV8tq`N|Baq6=MopsO{JC>0gJBS z7&|GSQc+W@jeTQBy63UAvs1+J=HzOH4kZBHg?`sr9~8w;NC3^^+rZ2CzV>SzaCaJK z)wQw9o`ttS!+++vTL=1bV|$6myTGwgyHEbJ%3lW(Y&TNFocIt8f1c6^KCi8=C~R_{1az_QY~&PmSf! zE8#GX-R1?@K8(@lrqv+dqR~NYg#5t(R}NLaq4QTmyRi2PUxCtEt^~Bv z?)3ZMJ`yGFe5w#D$7`W<^f1xw=GG2V$Cld^`_#h>a=p-TM6&D{pvDe?)nISu{ zZ##Ov&Un3a&C9X$5Yo1+222ihw8}0e|U%+*9`^@BWuS!IzAeXR03f1sjOwH?K)x0bA*u80R>J zNeqZieL*mv94gS)8LqQLmoESf0wBY14L5pL~>T9G<$1gg?^IDW1?5AUXAO_vcA=`V&$Z!5_I$%4;7IrTCK0N$% z@wVy++?%uq^;EK`;=#jI9qZ?AWovYpmjZeZeEITzUyB`d)TVUu-240e)Ou?+>`seG zObbCd>?m5AcPBAAiieK zDcDP(mivBXRY7j~eYOt_VP6WeF@|lqzc3wW*7OsG?a;JIgKP_r|_~52NE`Kc@+vbit z53h^kj9qmX*>u>0s+uaW>SAvF+Ub)Ns%&y%@A!oJ_G7e1OCgo|F*UTnB(|p^3DL3g zzUV+8&GAP`2~(gbL7gbZKI%#btjPzUJ$9^M?a`_Se8)|Fb^XXQUA^r=|YioKYmOczH-Dl;Q$K+`7_{vPt2Ns3U%Pv175DJ;=S5 z^c04lli;pIFlQ@V7ex8;?xd6l`LEX<`)<$No292ps!kUu_qAhgo>I&3=Xq8C{G3kK z#)))F!I?NxxM=CupncTu_mpd$H9-v?WV0#w{;HVg%hlI)`ImA_=S8b#FsPw{`v}T> z`=hnP@v>n$}hKn6SOdHeLIFK@#bx_<95 zYo(-wQCV5Z)8aY&Gh_f@DuQJ?Hpr8(pP%0(%>J}`%w+^AWpBe2*fRm7_|WYBV*4m? zTS!>X-YPrmkw35e!_@s_IFr+#L%yJLpakAIBV+r%tCBiCG!}WM4pv-Te1*X2J!8(Y z2zzfVG8i@*=z9zss0K&qWD%Duw3Z zt6LHZ3bW${m8X?ms;#&aBb0bbJj7gR!7C@|M;tk05rx3cKI4FY@K zHk9rWj2!Gdc+Vr`vIhF)Q_yi~ijB~ZS(~xk2|8>DiU<0Q|8iVxsMsuyy$}L3o=!uj zu-6<$sXP7qBvSY?Iw?M+3L&5A-%`=yqPi?UE>EKb@MKF8Ori0%3XfY?m(EM-hG0;(5yAwEtz$tIlXUJZXp5Kt{r#wtS~TRPft7SFOZ*_|sKs|?=AFh*7xj-y#Z*g+`$=g=E#il!z-)Lf zWaLqx51p*_t_N7%*qGY6&GjeqAzT(t@H`nfsm^+=)?xrZmBTpqx_AHF=OWgbcfQe? z8YuMN{8KHC)R|+%sdBtMS`2d_gYB<{hNdy{=$RzM2%^HJq?5pnIdL1vw02M_u zwE|OM@|aG(*{4_45U8+Hq)T4tYpS@C)hC^bPwzyjIQ$OMhI=K5d4x^bHLUn8fHgu< zgv&&f1O(6v?h`Pp6d(!!g#{r{Qc>-68#nnKM6Op{4n-(uxL?B+dcMLA7joM|1u3PH zd`u|41jtte<0toW9}wf2Ouo+oNF%e49=4AXxPt($Ve$`RO0Ij}P0TGHJ(cJ04JO+KIGhcfM*ko5*8hSL27iy?S6cVjn3A<9EA#__DmaIVRPf1`yyFU zDkiEpgkNA-RfXeDjakzD4K;e`UH_<#^vT0-D>?~a#wpa|#JF+vn|c;bvWwtwi|66q z@o~<%Zo8kSg1}Sr60lx=0``pzfx)coO4gi}L-!s|W~piSYsfp%dxV+Ci;X4J0V*mg zx)F&=8E%c>e%1TL!>1GsVB&Fl0w#H}=Lh*muw2CV5$4o+Lt8JU&l5#xTQMdXizb|c z|E_h#l{&Y(4PKoDc+5!PuSYP&4B-DUiQn}?`qbL%0w2fz`6;5+>)7o2;2$OymWGbC zVAZUlx1lg`cJp$*z0SmmYkq>JrjAbE_&DyV|0*946FTp>HB739nRPilx!-0v*Vf6L z3=3$}EX!L`UET-m3%k?|7|4IDHp(dq2WGsHK5(zzq_OEHdf{ItjDuX`u(DMqTzWnHC1L?{;gB#cv{VJcu8|RsI zW$qk^n-3cAqAH*{=t3BkQrQM3=kMphKUg|X#p`b==fMkbZHMyJ{S+vI##g5iOk?Le z0yi&=-2)86g_}&M@T45F^0bJ}7Q|BKfYULCL>so|;!CKok1t57;chG~H zeXih)M=I$3>BJ2L=B&Vn=uJ&daO?H36$j(WPJyl`0v5ObhWx{0dEc73@!2cOr?Ewb z#w8H+3a0;#*`ly!z|%q*5R&_Hj-w3MV+;)6I$~OIKr5G%z$_IvbuQHdZP1gq z!qefX?(u3Ni9#HQ>_uflwn8ygS|D`lD=_tw>QUl6_E_SSZ4F?Y5`?>`tZGH$WFgb7 z+}0VMtAW115{{?Yd~yGnj6@lSBXEEDy#7R-*;0yHCR8^|f#56N!gGlXud6gLk}A3A z0YV6o)S!?I?rY#vV5#d1Nq2sq@%Ru^dC9V@HhpRTOQ{Z=3rqZ{eH(huifZ z{je9KV&|v>02y_eFtS_Sb3|P#@-hcAHdCv7JFLT$Gq#fEmtdo(0q0y<*gI3pfEQy$ zL7nlfuBa|y2PJOn-}-&(p_JJI?C#FTFYn&XE~pyFy|#TEi}BhW#8KDL@t#<{mn z37@7ukBy1c!|pxuPFtD>`N}Z_dC&!C=eQuNaqoK-P?-QlO8+$pn2lYM({w-CWUJO`SuFnMp_1GQs_z~wkLT$9VHD67fy$SN6O0S;P5P8RoJ#zmEZmFSK?Wm(c z#>wDcrw{L+h!Z?e<}w~&QvGxj5%dWNw$J5g@1+LD9AnyNmd!N{eu6((JBRCxmvCRT z4}6wsm7@_m^I=!s<)~XyW%-LCQY5y!?41 zio;5%>m~DUwIc^;9hDjqvQY(f7r()|xAuTs&*=Yl4H`Arxh`6|mLLYyAJBDXb>!0B zdMpp;9`Kmx<6pe?dx}tX=ALHSf<$2HK@F9v(5sIGxB7(+M`Mrv1>7C;vCD#eBCgTf z7R@zc0b>TB`-onUJLcNG!L74Sb$t29%GZSGDh#P%?(a>xQ37_{#4TIKUmQX?#tqv( zCgLeP&dabA{1+igEZavc*_=2c(%^yts2Xc{xcrL?qHSqywa%$YQwod`I9yR- z+Q~7{kK7g~&!~-+Bbc7e&g-Dn?{nT=Fe?h?;-Vw36FVAtc9)TS^#=G<3r|lvN=o+< zpOd}4?=3CoKN?}g#sOT%cb395r&bq6EUAwUZREN1lfb6~bqZbjmbR`73(ksg$ z0t;T~>Zt^WH9HA!Z`*a8^rzXH3WsdTse7Kj2TCDV;ZsGb`>M;w=Za6J($L|M94o!_ zd*+7A+k8jL02A{!l$CthdsGT?fwGJnz)pTaeHe~|!}j|{VZ}jG&KwBvi;A2>Fx&kf zpLAz{n|ige*h<|9pJ_SM3dTj8`Z)#hiwBQ^fvjO3R~*K~mf~*Jm8BlJxAjpO%d-vr z0ITQ=lg~Gm(Y9;$-Wy?Twa>661!Svbu+zu&goXU?TmUCSh7lqOZk=aNt|`;>JWV%b z<=wGppOIaV03V+rq3T+IC&P!>#udLeZ&w%JwtBlCo6++y?JP#DjCdXgjIJ73KEztV zf!FqldjK_&93lx)nF4rWce}^JO!(~|lQTzSef0DsQ|@a{;$}Z?&+0PPzBp>go{ky- zR}j=uk!O4(A6iT1%t#npVjr9Dog#|5Cxf-d#YB`eA{OdeIp41E3_Y49w#KI?w0TcH z=bSFwGh!1C-Sg}p9u6Jc3|jy#e*%Go)Uxd$i!mLY;TpSB#toga(vHzI zjLO#gmRRdIQxys{ul{E%8q1FO{+8{3ZHhQUaKC^3cVp&ZLmBV-@AhN(7lkBHxBIe1 zad*3c{^yE8%>SDU3f8dKM&q0ZvV8p-o{MCghj79ww&_m;l9R*-+o5T#PwGb3&jHMU z6WvisSDjsV%)!Ube~;0E-w#}su)Z$1qQ@kXD@e1mXl!RONJ^D!)I0EGbZ~(nT5sNt zXmfhS!;4ERO0k=o6RxPYGw);9=eJ+!sX43uZng$jQsJukrTVukCB}lsBA>=rwzSmWwg4!8G?P%cQ4%XVbywOY)L!dmEpy|9nDn2jwl) z7=^v(();)@8Iu!n-@ZG-)fS|qK=$tCVXzlOoXFEeEiNj_1dmw zwExrB{w?~**XRd`uYhLLrId%;sbT(S4~ElxT7_>q?zvV!w*?XFlbt9)7*f%<*&zeK zpZA1c{W$#eE#Se&WwVHZ#hVewsZDF=&82dCGTF8fY{)Q(URT)vBRkx zg8yAVoAm7s@O^4YPc8?ko z!en~BruBIp;&!TBfc$=eMBgkZz5=Ur7^Edqu{Dg9J~BRR*;?Su%F+ZQIMs|300A6#T%Vo6UrKfmvuy4aZs z*JSuGYCvfrEK?L_2}^zcVhP)}f?;QYFeMl%{@EIlNix%X?Xt0fH&#K?78e+hj$Fyb zy{;E0L`vsUb#mSK#S(TIPD3_}EA_pM^?i3Y8=4PVtg^|iR>5JSw5Y8#g5|n}@i@E5 zWsI{8jnr6{`92qQ!_O>Btf5J2{b|Q&B(%SKzV6ZaA*jbWP?=RC?!2d%m6pU*SOC|x zD-iUlakl&;^t(~OaHlBt<^J*jhDu``TlVp7fvU=WP!1!wy1|?PvrEI8X+f%a6yG1U z;>Y9HpTd|nhCv0#OAZmi>7b=r@+oz=nmNDtlawv!$sVXGNN7IQOLWB{#o)u)`3jQ>9@ z;5!diOcNvwNj_W83IA)ZucOF9o01vpl0hJ8#%2ET>1}J=H*4sk-@XUyhl%dLQMkd$ z(yv*>TXw&3YPOSb|3fB=*ju}7mA4hfSJ%!_d%pO37e~&KR;HJZ8HjNLx@i+iy?);Q z!gT&%$kQS`9L9OsqG^LWDhEAt378mwt@SEx=b)^n&q_gBgGxPGM;Z-7U6@n<^^bg{ zR!jl#Gw!i}19Yc6Zc+gFEAGB`)Fv#xTFZ?5pWB~@@ornd&Xegg#^vd+t~$`u2uiwR z?dsOu78GoS*K1q}v$}kMWGBTb*B{?GE@o+1XsKp@sR-4oh9^mL|Eb+U*7_GVeO<~G zCtTgJBExN(U83|&Ch-H+R#)wJY?F?6(MAyaUVVVtLknQ8k2~H{4sM`u45!7}wA9^z zZLouWQnZSdgedxmLBhAxl#Z)&n}F!BVr1k8WE&g1?~fh=l|y>_;>#odW(@}?bfR6r z9fZVIe$j4!hGABzzT$z(s><+ZD~?L{Gl~#i&-s=LzRJyz4!9*%>UhIf_spqcx;M`A z5KGv6a?&$+tJz_G37eRRi2XGI7oj13)L(f!e6gbSauI#!n~fSr6(mYBwqAs4{(B}1&9Dc~ik`JFmSoK~7|_1D zw;2)lH<_)8A@el#-aa;`1}gUMM9aHR9~NCfj8Z9`!zhwYfy|!VefPtRr_w(Y2OkLM z3=G=o;`5ax3eAGgaf8FI_?j&fBXo2B9oQ>GUj8H(>tyraBete!T!b3wWw95AGQz}t>gZDckPh1>NkAe6ao-`bOLKRzrv#9p9 zV-MZBZdLR{`l{?S?<=2v;b)(tYw36(i{m}+$(F2>20EssBFiMJ4H9S!;Fj3&Jgokt zIc?FJ`mARD!byNa&9nk401;fV-V!lQOMD$+#C45%C}vC?_}oH=w7EVqWNB#5=T)ky zWB866Uv7$^&68W6o0LI_s$ldmO!{+6uN~D&Tbqfc))~7=e}7;~0%|?QrRw*XuOkS>vGG6ry*;07Y$k%X?gQeU`q?^=9g#0j5Q@UUwp4G1WxoDXQCCX*~;WyP+Q`A&H z%zb&D*J+J>i>R0R4W=KtSD}{-bbPHg+}7omv9osraj}=cU6jpcr*VL;UHd;*()!NqhayIf0_nDyXrA*tg4+ zBvPU#k{@g@N;glTIoV%)a004bqBu6sRhWDi0Jp$VYVKl^I9FIx-Qhd%BvJb@o9QT+7I5>U2Fut^@nzrUGz&AIf%CPW4 zF;L#JfBIu%1B?dX+Y%=2Bl=m@T|NomN~pEQG!j^V{!4=7r_Ac<5@%m0X!al)4C zA5$v+!6`=Qdr{%{83lx!+h}>KpMs=a)-tVjW`A0t)89qbOU7rwUjfBk? zJ9yg&?-QP8+|?&;T%Ie7JUu)T%eqbEVB$|V&L;m6QyUmF zdwejiV0Ma!C(=7tQ?_*4m`#R$N{$?Sy6$HimgV>lYU`DyTRo-jTG~3DTDeCSislwg zd6PLv*$F2!6p^mCH8oe{ivA^#J=%lN!XR7w8DOc=E8(JJGiOsae2;Xkq#xx5_NEGW zpKkA(xy`9R2&%*Q`J$Xi6^|^LYtmkx(U6Jp{-p61!NSoz3E>4zu!wzTy>`os0iJ>k z$9u6u950Kazr3}IAZe-gGM@7~yVO5j%(hxLtT-0u`1q}!IOl&^eDyoUv4oJ2s(W2t ziylY*pLZwX{EWTfD5V%$lej-$3vua1FS4Qn_jE4k@VkEIgW)!#DE6X{R7H!hS@H4jb(BA9_z*?##)|Be~HE1>Ir!j1}pwdJoq?J^_~b7A0z~(vYHY z3m!E#_6PExDkY!OIX;{2Kw103B&ail#&?uJ3oE9>g`(H89QAPKJ2pd#tI-U77aFtb zu133WdH=U@VFuGoqQ_S#V>RqC`!G}>bUdd`RJyM)V zT>%R3ywxEWn`}J@ii{G`5)|VAl*!YMz3r<%e+Kq4yjrF@P4*WFbek&P{wme03`s~h zLiRdy036$11Q+1oOI!ee>E1Mn4~Oo}8rN*KAzP~ntjWIj*h{0eip9*#am&0nFlyXo&Ba-*_WJPv*zldiK^s_x}c19%E%to z+jl3&R|DE_KH|p~rDLkZE55U`Zj_{D&{o&}Souj;{gFcvaooYixG{6Iktj10$o(-&VaV~NGh_o8$pgimy zV0v<}%wzmT`>3~g`qx#vV9n9$hLp*^zpGo#B4it+_vyb|GHFrsT`thO|3BN`ici?z z|JS}uhN)2S|9Ih+VgKJtQW0!S|GQ~e{a;;xWQcx}FmgP(J#L{X99mYk^pIDrKR*;g zZP=`5mlCusXfUf5;MOh8W9Ua3t~KT zbh-rf7cLOYZ$q8?nrqN@kU2UEi}u5JECrqBipOe;`+QD>#e5ZfP`TUt5WZO9rgQ_ zu++p9$~AxTR7Gv=mxmdKRwPQ{J(+y4R~T}h2lH>6z#1v{@HM-bf_ybGW5QfpbCw#5 zX_b1ND=QLyvUV4kI*GVw(y*ZI;&5)gyBILeCFH9Q`n8{ZjD;7$2pW*4@7+Ivb5K3| zH|??*lGIgPmYjKs687AeRQ73RscT_-$k)X1OMr=?xx&BO#%_c|vTfks7I0j5W=Tr4 z^c5h0Erd%DV{kJC85wPgqG{bc5Ee5P6-^K~I>5tC8V)x~X-r&Sx6PUU_s?ast~xoJ zN_ls5(~FJ}j`W|Z;-(VstM`fnr;vpYZWmy%c{w4xs1we=6?832J!zF$Qqm~gjBIHQ zM98C?_rSn^u!W>&iI!%=6{u#~ocpGg@7>4;-sxF%Y+9}!2S+=a{6kEvP@l0u zuPW$m+E-u01ZS9``C!dsaV2*q;PuV2v}vodF0sPHeMp#qntUDl==mLP_GuBCm>`iv z?d+T+9+$T^hxqo|Gg_^8kD5aACwi$x;#jJJ^jSzf7SPn0jxVS80l7?+-48h&^^TP^ z3-i2&cr4ipQ62BQt=^1ybv1lzcUbb-T|+Z*8#@x!s#j?;{t-60k+IASm&%m7;y9x6 z|6f>wfdLW$7@C%_j8WsF#Xl(3OHu{Pz0O*XO?JBE)CMcPDUM3b3;KT_%gdXgWvd{M zo24e*7oz!ixIg}=!pRuTBRHFj#?xVMjl@NNnD%XPdb0EiIqk5uSLn}+ipS3y37h6a zgr}t`J(M?mO&EGw;mFM5dwKrC8@B6#TzJE6dc?Py5+GmFS zK-C-|EGzplN4SvskMP1Pva6N|ZZwu5Vz*Uefi0O7>Q~&ohbKr)y3fr6R&8@B zwl){0xTx^J-6ui-cfbZx>OKB9Hlo|`n~H^D%mDIk3wf@xC3UZSf04=sO3PqG>YTlx`c)3W}o)3Vz-N#T8VF^m3VlKdcy zW2D2^kxI5A>K>+~r(YVO{0rbHO>L!e;!lybkFyDa4*Xg&rp;lKEL^2iOGizxY^senSX~k|bYdK_ zBNM$Wz$r0;uw4uo7Z}Kl9#6ocS0U&Sx&B1^tv3dxy{rrq3#X2LjX{t*Wcfo(l@k7W zAs$w85v@NvuwbM;`x{`F&N;lsi^?y;@4$EG)rmEQ0DUF#o zE6bM9V^vo(C-;6qO9tNTcWq?P79t%1-omjLMOoKZT;3UfkV0J*ZPAtocSPzpe79Eh zP{~wvLr`%`TSGS)tZ;ZSKUZD??Z)wJ_CVlTD zyf?QsGyEcQqKnfpOTMY7{wRwi#oW9afCFW#qJY*T1Xoy5RI|EX(70KS4d%5EA~Q_K(dUo$aQ?*`G9tU#HNQmh6#YC&?F+ zG%Ut^$>gPal3LIH@j6(V`|tiA4ZXv*xoq@vtq7SO#Gjfdhz(kw5z+ZubB^nSD9S$T zYexl!V~nEcXGYkOp{ZDpxu8b$q$+~C##KVHIzRWO1Nf7IN_R1;W(z$MaR2&^t^* z?2jq1BzRMaGPHzu_53K(#sL*#)1A{xNrGR?tg3$%24ndnBl~t#=RFq`tpeeBkLcaU zhj|`O`5Z`CM?UIv1fdj33yVh`ES4@f&cP{dH>rB3^)OAb(fpti1%>WCmn?TIwSPNG zcz4+1CQFJDM99^jRb86|r%&j{4+oTQ!h4u4SBwmkB~bW(u`%BN1&9^fdxj20Oqt5n z&$|d67xLzu%?U=Tn2MV5`mw0=MRb{+!X@BuxMD3P(;a#UD$oqS_0+<=WrgM?B#i|XtUh&bd;DNVADmW4Wnmc5V%=r^qc4Vl z6c=XT@^wwwWuX+v1x4k}_Cn!DWU0sZXH`z=`=X-p&3YQPqTYlm5C9cz0wC($KLVqG z1MdXVL?f1t(S-qH2tWnqXk@8urlJ(G8N$`c8cR;u_+@QIVc{_?T;iD^8p2GFf#`)e zoe~ff5aW21Sgq~v%f?=#b03x}tEyC`rp}9=9G~u#Tm@mNV0q-76a&E3a!IT1)JkvX zH`<@Gr>`584gs{tQjoBFo!!RSV?utPjD^x{V!GlXoq~t8r#4KuqkfV@#jt_hUggl| zyK^vWoGE99WkQ^p7=`$SL4$)+cvK`haY6)1BzwePGkU&=+{rWTrU(@>oX=T7u0Aya z&!8Sgly7j2$A<)W#DXbMb^H-MJZ}^G`NO zT&%#Xq7M_RA~?A%%tx?4F?C~u&gfc&adMmH?u+0#mz%Hh7a|3`{=Dbb9C4afwhOK__w>epeB=aabp9k&8ND;sJgD$srZ^(E zuy^nN-0#j+qq%p4gI!Zon$TU7@!YPdNY+Lqn9YuVPU1cfmg!AbsAB_(vdhglXKrVV z;bn96Z}jQ>-e(VIG{jbEDYKK=k<&mN)cV1C=`4e{Pwpn9CA^rn{)+{%j8Zc$w!but zjS{K9sAVQL89z(&0YOs5A#&nc!_a=re`)$3K+o&FZ4=k`gf9y5um1;Xac=>N>|^LNUpq< z5Pi<^5UN(wzJsxBO*wH@$+le{M?c=s~|^5B^RM+#!5}VK9vx;ImAm)s(G^?0mqO4^$@x zy#5f*S*f4)zNpesVdiuvRc(if$BjovXF{sLmLJ}e4|jH4(^cyE{hR|l-t13jyVn^8 zOJ6#y|8JnugC9a6sm~mu+jcNT?tuw`)gNG!_=yP(fbl1m7yG_0%9v~-+s#y&{w~93 z(ACqB-c>BPGs(LZuS#Ww8cgr~Sx6tZt=4WM?q^=I6N+I3ot$*qIC}Y-03_;`Q zKJ?xxBnRQ!BA4Tl_T0VSx;ex3ZV49H@0-6is$3stamtZ6ChDyCFLHQ^TBkqz&LyOg zm1Hipe0?B)vXU8g?A{5XJ&|l_3|aX@K)&JRQ%xB}glWa-m!-lMT5G@W-%`>1SITn? zvMmstocQG7awVq7XJ>1I?nzCL^!D~=>pPXvXYi|_Kzp7JO` z3Q8}j=zwS$cFo@625DWA+2}DE664+IV3gu#zBoa|4GtQtZUt1=R1$;E2Wb1Z|G+0_ zZHE2$&Rt?J`;m89Kz&3D`fo=2;?KS+8b-#V3K=~$RSgPxUDV_WmFDhLl3b|_1T~5c>VBRPiaO5}R>U3yxi@(6 zbLz6TwhbO?x-g(tw;jk-c_qV&>9p??^nSJ6+d8Z&_)w{+LVSuV{unbX1{C?BY}a@l z6F4+eR%CmfqJjH3^a-n)w^02XC~jtYn7Fa^D>j*(iVESXP0|wHa3ZF!Do$D=mo>)+OKD#!d_Z&}F29zBG>sTUt&JH)TyV|@ zMlS7xdm_QR(brJjo5L@Hb=8x+T%zY2ic6gX`(}PW-fr1-Pm1-8Ww2)1XJ=-gG#1zT zfB^xvulI`$*NQRfi)-RKWm!jQ7T@c>{7{3rWna@c6;Q7K+a@W~R*L4Cf3ER+1GpSO!ghgd`=F1ESlG z!-wxNo5&Be;eyN#x;V2%Q;sgkpQyg-`Q6DJ;S;4$a+sf#*y^&r#V{C` z{@|jZ*o3!fPFo9LekClR&MxSK zEevsTpuUmj`WrjOphJ&9n?UpL_h{YCb7UQNrsS5>2$3V7=?XhG(IBtm$#wrzZxZ9O z$!~!Vh&g~jgfxC|l8S zD8N|Dq?_C73<2S#Dx*`9jfGTVSn8@jY*1L=qB9OZO?@1V-h3JT&HZ%wY8!s9<31aC z&4~ano-5mj*>FlXnU_?{{wJcTe43MM;9voNQZi_Aa!XtwqVwROknDK@-#akyFtf7J z2`^G~F|nU#&2?9m?YF>Zlh=?w6LBXt_x_LP3gGJ)ZqL7XpVveki?XE6;~M4ioVqr@ zVvDiFw@G(i-R1Ajz6k{9(lXfUAu45?_ubny#E43dmo#h3W@PbC4=236Y1(NR~C9g>_{d zpaPl>NCJ|8#i@s;!1*IO6*dQFYvy)xP~KS>KZ7QAE#wJaR&p!f2bg2;($3 z_4lS==^Xfb9}gt@rPy(==5jB!F-i{A4&V(oUDU856v#2SP7vwU>e>t;aOr{V)<1el z=*kC58&~#s{9HNc-_jHz?))FB(_?IgUp85a$%G)y_=8MguKHs~e8Tn@&gY_%Tg(qc zJ7e1-H zO4=PWhG@K0ZWwez81#|Y`I)Yp3Iwn_DHMB5aZD?AEq|DDZ(B{St5d#(A3NNks!88`Li(?er;3 zF43lOyl+DhUPl_6Oz`Io*Fe4D8;XyiS4Deq{KP{~%iDB{Wceu9NEfe*OQ9~Ri)_Fr!GX_=Dt zC@ESis=w_KM*f!J!cKSeZgL=112@iH4ezv#iKosztK{_&MX(cc@;NGMBO~>#H@QB& z3DgY6a(*dy*r#WM`{lb2yaq?xGtPX~G%@?A{^zbRO8?)<_m2M>b( z!|8D1vJVZE8Q(idB4|2cqWmo0jtxSwWTJ1v;sTb4?W37uQGZX1MeTu^ad zqy15Ioh~4da$9#jb9Y_+MpIXwcv!;>xH8xIUV}S-bwW)Ul`m&sJ~i(d*RjxiX8Y*h z8{9edxV60|zg}wWa$m{9vVIxdSmGL^iiZ@Ff88rlwDe|WIHqsHgBgL;Eqw6uk@tTX zAKZw9DI%x;o96lPgN6S8GwJg`CsgY5H5w{w6cB2F1)wyp1R4z!z6dlvBf0CbVG3!z z^H2;#XjXb`f8yRwA}W4aoz=*?%V>-t2^Ae41uxqscKZ8(_Xzd&6RsE*uNpoWCi3eF;2=xaeAY-FF^E;aus!d%GYWE7KXi7r3?5 zZFubyD+;7>wTc&bB!MDAoVny&f8g=Gj;eqXCxH9#!Tll>EnmPtq_0LN#lzzPZk^)k z-nVh1irEeNqLT3xGg7QQ|I3_D3;%e$XpD_bGI=Y0gD89_jjy}Iq{ka|jI{0IVD^wvwBcPgF}1Zs_@_(+kF}TZe`V3K%wPtNp-tvO9rQUQ z9`qDy96~>^91UOC<=7qvTy~vu4u$$&@JADUMea~lv)WBH&DD@bmH}42{4Z@+*#@0jM%KZgJC_bMqtUmH)?RAoT?Lm7xhk6;z@(yc% z?3;hgcmr#ky<{j{1J}sAb=tZ3aRz?bZ!q*X*0Y1#u7lDMmVW4ARtV3T{A^R7@I3d$ zNEQ75i+bCrv1H9u>8;wsonz7)d*|Aqj!pE|ie~^G?hnAj1!^~YaSx|y{iIRdtg)mj zi0S9MJyE7>JmIVmCyY@fDg1L^kMp?YB6bI^BR__6HrvKvdLAuVEKs>hDQH`$_v)PJ zqxdZ=jT-4va9>t(w3nl%Rb597C*I7RnrOBiXRvY>pg&}EmCC&4uc-TGnI3i4N~P3Vy-zAK>dp21{71+Q+qO$*pSuwSmXBRouhI%{ttky}VUF(idd|Jy z=Sp>kvtAaH;lF&jqVc_>dOrrL6z1>8-c#SFeIjnJl+kn!rUP%LhJ?$5Js0<986AW1 zsB|hp>104{UzEud?{YF1#jUsGi8EPS34VhnU3@1Amt}OeCPz=HCh_^+xkHz1nUgm2 z66gbNyxhM{;fOIVt z3o*jLPO>#8?eSHT?{3rf{J>H1_ZoYr^@?{<0wtABwA%CwRdImIbXPBt^c7&W5$$5F z|0{Cy&*ZnQkKTzFc*6Y05cEH}tc_;h=g*e)t$4M?0i7G@6(9MBz;VNk&)rn_W4wXQ z0;T_acN}ziJraRT3so4PWb!%qwA*T$1~heRTq!R0$M-Gy>I|5&;a#R)#un=`%p}ko zBtEa{FFU@-KqDGn0{1!|Kc?GyWjLR^qqVdOb|$Gk zXpHYdfB5jYMY7h7)zAf z525)u{`9XJt6>NWW$`G?N41YIU956iGa@`XVkj9@F9JlQASpCJN*2ik8)IPtEQ+p8)N%IWMptSm470$$?L_RUK1{ z{Wyl3IsSDn-sJ_vckBG}wC~v%9FXjL*LdMGTnBDYWpb+7_7Hl1;TfY1+wu0) zhC#*Fo<5evt!a1tH_DvGj^ziBui(<7=jp+>kuZ|L&KxHrTObD+HmdGCgwRH^J`^MX z2PnGVyL`H4xG%qkBVWW4;@kX5Tf->fC=!Tbdbz%E4<3pJ;B{}Gd?eXlY1DO6(UzC^ z-uTQ9igP#qEl#i$H=#o|(yl+6N~k;of_1d>oDJt7ZYT>~ ze_P^y-xlLo9~$m;E2=z)dmo>t0TPa9DTv~of#0SX&$};C#fi+~69LZYQ^*_)zl+M^ z>;7mFlrsGt6ZPWVj!YM^_q%>ARW&-Koc_eLD@C5#^x2qW`1wa!0FFysG$fOWP6|fZ zYlpm8UIy7`qFiS1Ca~;k=z@R)H_+4GMQ+!P!uiks`gsA3kAqJZF!;&3UsGHX_tN;i zSS}|sn31M)mRrmzm|ML*(|6qimbg@-ISJ190Ud+}z90kiP&&I5^~A&gaEFhZ!6%S< z6H=ta$s%+d>5@GLW<}7IqQ7r(h`)R?uj0j*q%yBu=EjIfi2wWS; z3Us8K$~XUD+O_>V<0omXSCd=48oJM%BkJQ@_5I%FH(`X2A`R`_*RHDfFw{>*85eZQ!nPC4WHIiq-{-e*}T7g(2%!(LJSb!1LZ z&5u-o975E~!UOgLJ}Y0+{=JB|H_P}r$w=&GC3d1(F>|kS8EXtj;&q!ZS9)Je>^>3K zS)%mh&^dushX7xshn!Vb5_W(AiUml1R##=$6$bwJOpzI3z4w~zROdDm{rhA`&XBj= zfHX~c2wArwHwxV)9!sv9-}%-fvd%U2qBU*?H@&XgCDqWV6hi>IYT~crxzd~44vH8XD&{pOC6teFsJ5tV=Qg7}fgVQbS)BV3=WZth$sPp&EJ-z+a9<$Q3yYx@Y z@E3hIazu=@ipf!j=}t+)mXF(8+n!|=Q@(0VU<@Mq|DOC%yDU+noBA8^z(Cb z9G&3*V%<=A(uYmdn-dW{TyRhIZ?0U%e=_i&AD0M+BH(2iOGdcy1&#ZUSkShlt`BE>gHFwxt`EW zVXZ64(te->q>GPqorE7I6AM)^kU#pHaLiy~;VkiKAdO!R*WOo?Ublfo))eRXq@jUn z1%L0$nI2=EoK*ZUJ)QFv5`i^_roHw-hwjzAN34dFPRUsO{_%ET=Q>GX7KuL?0{`XZ z;%GlOxgdFuE-YbxxM5~*2lum7ZbR<()!VD9uKp4d2p^vt5y){+i&3heukVYu_r*<( z+m3H(v7=~=XJk~^{Qbf3=4lY^V{3Xv!g})~&!fQ~W>r-@^G4`fcIu^Nt->N}(ycVh z3l`{&&Hef1RTnNk;I1st==P)RGcz0$Yiq*ZQDI3kimJ|W5m9aM-mMwvvlJiiofu9K z*7syA_AEQb6d+_y*~SF}(?A;}#DDub!me{)o2_9B z{%Jm_(YLcD2y|#~qyKsdD?I?@hN8~kx8>9Df%MFspOGFdtsxlBHtY;jn#^J%T(+97!leraLAdBUXbcVv1I$W>P=H){8MYc8K$trf z^^+wmesgmrcP?gD7E`rx#`y=;$;o(YU%`9F+JDf?>lG+KF(%0=yO(5?D)G&}6z&tITZZA|3u#CZU_eoDX*new zq?nE2W>DD-=noww`Z~qWNL!TqSWPE{459orX=!OOb7X%jK&i=DIR=g?5tJMiG!6}a zG7t}^{QL~&;Sszei_7cTmipV^7*EY$UwvHxEFE;g8H*g~Xfwsnvb8>B2#-Cb5x zqEt3ezY&qZPXN%7d=}SVAmX>~bdzG7C zmN9o^;lrmX>8VUXY(4f^yH3E+Gadj`#fJ~f=+oozmzqm%5XHjHt#i8QMh0dxpw-Ke zzqqSl!9NC@pKBkFeuk0KO|lH(StYV0ChbxC6qX)d)EhNsY_1XS{7PiIT>7aSSHS$E zVMbnFj4BL@f_r6VvWsz;6+;NN#oNo=+-B-fsbu@7KL$P@|Lk#(I_Tlq51;Nnfh{&edm|Wx8Va7X-fPN)M z0twNL;!9$t9QnL!EL01|hoNbX9Zb>tU_3p@#8d^rtP_Lr9=zsRg2k^?LU)%}kWyX4 z!&<3?C4OG@Qo8+UpmK0#8HSvXQ@&Rd-sc)DA_D7 zNPD;?hTB;#J=_7|hlrzO=M;(6f2psTTA4!3w&AR=If5T7BxAux@rnF^DN>k4vi7wN zG?P|rHMG0A=?|xY@RnFO{?x?7r)X3UlS6Myq9^?N;>5%5=21+k$P24afOTw- zwS5S$R>^n;_mRU4T2y& zwex<@MFg&^i5my`V__^|Orhk^mwbko?rx_fMLTfm{IEacVlC4}Rh1H7F8L)I+Vml2 z(|qe)w@_pj#n9l$z{oFFR@Rv(U&!2(LBJB`jd?27Gf!yz&So<(eEN%8zS8jE2CPOr z)5|j`61yH5iR|Ht$k&V^7&G@Bu}whAT!WjPogMp4y=##~rr}^eg5?qxwx|Ca7QUZE ziKPaF5SedIjt7#Sq(InDMFHWb!~Xi(qA*Tzf{((GFpp49K?*XgpjD2J+D-A<531j8 z|5&w_x0)HWyn%|cLTS#akd=&=zu5ddIsIf`*p?al({8Jc!Ok5O|K8Xi8xvzJ=gFgm zpNb=@8vEIY`A6)^cz41j7%Fcmf;znk`m>vdgLT8V`{udrKRQ9Xb8D1#LOyXb-))QT zsZD%A!x7TQnAp9!#|k*jqQV^kFXV%2tfaG^hVY2}8?Goqo81IlZVUy6H1Yee^qY;D=8bI=;gKk~i{;bN zt5^B=l2`c#ql$W3zxJ#JtZH}s4H0kg@}3dyu(p;yZQhef7ECg?w)~?5sVoxM+GOM^ zDn{qr8c=M>wWb}oL)aA@frr02O=5f9=$OA7eL}8J=9`gIS@f;mH|p`YHm4}K!|!tu zu=)AVGVh2dq3P>{BBMl5kYqkPCV+K}DK8H9rFbXirlyM6N2th#YiesI)+$JJGl{Ka z!+*tfPWQ(QfFX!Js}8QMb;f@W6|T>2aC`M`eViP!*xI+`4HJ*dueDqt#z#LG&lU>g zQgRCb%wk#7lV~GeB`zB|D3aLyDY4-(nF+2)<{?u?n_EGeu{aw&Mutxu*zwkp1(!pR~%I$n>MoCp;e8cBslFq2413Y-I|}oXF!TWcgbCtCX~_(B6&6Z|o^=^yCb& zE?!UDoUZ1K)CebOHk0zj%(&K4ZMwxl};HMD%B#Ow7SA&Lc$LT>GAfds?=~6JMnQ5S1xV z^40ZkZ=mK(WfF#DZ7T=@dmokt@?5c6E3N7cvyJk8Q$_Y=Hf*;B;4ie`s;_ zqo42{Eb;+bhabeN^UipGfBz5f6Xdze6ooT>y4tMiaRnYDH->jN>9!zTwacLOs}CKX zU^2?eD*xsX`aQ3@lf#Qjx!fvyqMDL#aZ2U=O8{B-EeSlJ+MRF7#ZIjC{EHTWg~`06 zlF>1~cqH07L@MTBKaZs_%j1P|ycX56}FR?)MwWTE)1M{3B+^Ln~7AUBJ z&@c@!A;(NNO(*@YWP=$fcujtZD%&{dT;cbRS>;$ zGe>Q$eGXXS>GoP*(TJ<>-{&r25tfi(mxi_3AIM1T!^C~r19m{}hVW}l%F>e6(bxy! z{V2Jplf~P{R~|6d=Y2gm%Hs|vAZ7tLcXFJ&>2_hGkMsUtec$v@_g;?uW>!{Y?G)hy z%Nt<>vjo<6y%9QG-SrGEu1zP{=h2CO;V@lhpTX+8K(a?+#3TRC1J|pWWLU zUvgF!ApqPZNmk6ibKgH`X_}dtcUF(LpOy3RQ33lomH9Brmh`Nc?`7mrj5(a=SEh!5 z3&c-Uf4>Jnp5;##Y(tMD?OG8;5yBR4C&vwrGWP_(jI61eJ-H56nsQpM6AO4$#2*(M zX5lfX1t&GE_eG>0#s$~3U+c0u1OFhPA|773dJw*=JZtgdGApaoNG5|K0o77@*ZJ?Z zTk1Zzb#w2TTDXGtB-$twYuB1c`U+022iFy|ZW`7jSc6 zw07wqgSo*LE+s#&*~LYxj3$MFq|GO!>zPt@wXP#o`q@a+A1K({-*mqfQFq_;$azuy zm=~T9NcujtG$$^ArjX}@h;S84DWCN$6b6-`os2*v@ba+_yg6W?+u~y~JIpGOqy}Qm z%*;&8q%#ih_9&txSdfOU6qnQoMU`2D5>-{PERc6QN4yX=l0BPH^^^S~oNq~oYld0n z@N`^PctzZeaZaluLn-|!i|k`paX`MG+4PnGSkFXPLP;(vm4=9boL$`Zj4VwR*Hc+e zc6sGdPkiBb!r|@klYV>QUb>cJ9NbyFTd-P90_X_YTk2@uZ<-& zlWmF5rKr3v5s!~gFqUmuK?a;hxYc*{RH)xSW5uck;i<{gGd_$Z0Dyz2bH@t4+#lbp7{ngfrf@2Fj@T7b&wpUXjoYMmf5jBzx-paU9Ez1$RGq#i<$Ql6WW+M zP_4pM_T$K!u;~@j4f|tRnO}yGdiF~Q>W_g7bq`k8S~EjAFB78jMBwN2$ShR$dyeOz z2pobO(`$Qxp03eew;_2UK(zu=MAJQwdDs2 zkdL*0({&ZHbrebsL{#SOM7T6$aKuXHd$i!)oHp|2DysT^8x_RioP4+5T7&R&2m6PM zWxpn7?Z@}sn_?u4m9 zp0+gPuJo476Yj42%-Vmwy!YW^{T*GvV+exA#iGn}| z-a+P9*L)dot9x!I<5AB&^|G1O$F;-RaS2lv(}_x=FhVuhvBK;3%6;|X)%?V_#B@0m zcRi)`2X62*^JBXRGkdBX4&*`jm8+U^IsMh-Y^}F{%?-6r@ri)MdbFtND>33qh90GN z96CkT(ausE-SlpD#qc?`pH0Iiz~#LEQzOtW*@*sM`~OK;?UDnnzEc$|@BhkK8xXSp zC$~=(mJ`D1zj-SSLmU6+rBonw&E`Sju013z<^ePumZkq*X`((KHtsJF}9BThHrg znfk|y(ZAs#uv|fpUIjlknBhH3{25+_Q>~7?ntnrgzNa6aek&q!bZRF;sn>mfa*57z z=!+s(8-s4cPyqZG1DdfxDm!1v0|2Fj#JoMq=PNr0OgbzoqpU-wxP${M7W!}COdX1) z(Z8Nu3-k8CjWey+a2?)dC%``4W1^T`V3LMTY4_#>l-(FH2$aF_@0q;lTi5S`{<&bW z5!L>wUt6kgSZtQz55o;+<*Z=OcPK49LP?_2gUrTvNkg4*;AjJH>;ODMC~7hY0|bx) zRo2q+PmrI*MYj;A+nr!?;Iz1$8iK;B;G5;3rqj`rqSzvSy&_QYYqipad3)mVNAR*A};7tRiWZ zIFkoUo%^1}S0Nb*c*L9qR2e5dS{nLc5-O zQJA&gCpNheZNn}$GI8AD5q9doBQy08I)(;T6B1U*#4e)qz8rNjXlxt@e^9ToR*TWI zw*@B-zQJ$NM_cZm7tPjG{3)L3NKB<(dmv04{ZhmOVJw|jFmm6+#Q;5svzdxc5d&oc zNP0&0^`&g-xz!*qthg(Bx}Te#^}Jn`iHYg^{X8HA&c3DBtt|r}ZFctzqAXHp(AInG zSM2Kn|CO!pvsO?1@82Vi)&J!z!(94Eq{;MwEqz*7)_ z;?ezH@8u0|QdmlLYvc2qF&}mwS-YZscwKp=@;4c)nHg&}(fiMqd}s9-!M|JQMfrEI z1DpvoC7xPO?S{IsG@VqCyF{WR#-8C;u)wqxPWVExt*c3;zjHJ3hLC&2bYp-5AZN58 zE%o|if7GiOwt4~x{1_rb=%;PX$8j6>hM@Et>~QU{Kfh`x29?+_u^=e1T`4a;}-oJn7cGg>#C}btEdL>w%34+ZU zpeT&E9hLQ;0H_4q8qkhDnLkLOg%j6L!1|$6ceRQzNLE-}2<$MjUwyZG;IwnX)vQY9 z4(A^mM~#Y0XQS`~VyRtk5%+snRVuYO2o4EF+Vk2LKVt^dfI&s~YVImf_-CI+8Swt& z+J;jYFs8i?an#O4QNf6lyoKB(WsNijKo=<~q~GK^Fp8|J0%@+FZ;Pk#fPZ2cyha5Y zGhRXkA7pSlitAWqxZ()w%lHV^zEIN8l=N$V^O;Bx_=iry0tVT(J^q!!)U$l=2QPc+ zwvdHamSO)|rLtGyH{!*RSpFAG1Mu*V$e%l}NO%JfXL6}y094bcG9v@L3_t*86*h|~ z+_RiYy59zYQ{I`e`@ga@aBgp1Fo1a`8W^2E99aCuqU63f3cLwSEs~`|5cis#I&`fl zjeU(UVyi>doW(IIIU+Xmq3jrrbTM zaxB2acua182|k=I;H^q;g*@h}04Aj_PRi=)5>DUOK@k34Sw`g}3{Id?Xezx`7E}*V z$mAPH? zRnrqw4}d0sb~|g_$LFw0@$l)7{`i~QF+^VvZHx27$>QVB*3driOY>xaLydxsgBb17;3di)0!wwp@u$Bq2Vc9b;LF?BZw`7m! zh2{t~qUSen74ORNEP_w+1qQ#f7E&=FXC`j-ZBgBKTVJDP$MtNbD8Bti zcL+pMGWg$*Zb^B06F@u`%fNZb4p5eZS$1I&o+5(BsIIDJ#@P4V*+_x^l5f#YRA5cU z{I~yuYX}GktYp_k8(1O%N(@kYfL?O|2w;GJF)}h*_`{1T0$5L=P+ndhKn$aOLlr+D z2M~G?VRs<|<8Befe#RXY7el+`(r*Cs2$QinOGL9^_p+yPeOOzvP?X8=y8>2v`@2P+ zH_=f<(GUNDKYVxZ_;(b#6LmYOFU|*H+Stb16k*7E&7F1k9sGX#ua9M9nZA6_IkRCL zs5V{D>ObUB3GVbzkIa}UroGmgYsW6uEGDAv&+26OoI4u(wIhI+Wgj~n!wT^mKt^w`(Pzgh0BuS2?Djl;X8x$$g;T0S0yrrEMKxxz z(})OY1P+~c&3m_IQvr@B5;D&EFBbrAT|H_jF#KVQ3?rX9I9@)7`xp0vTZtm~*RJAI zt-X{&oiaw*+pF&tjwWWiBuRRd#%WSy64B0PT5$hnvtwI>@Ea?JeH+K$boTc34xkfR z@cLQn>25DL?!SjV!>eR^hoC5L=lv$Adt%nT z(!|S7!gqFUt^OgBiwPzhu1bR`qv{H{K#b=b%xOLKhIcPx^bWX*K+8WL@$e+Ca20^| z6a~!#mdbPf04m}BJXC{r_Y?J79SQ6ksVw6teyKJdn>a^h{zQU=h)C)JQ}qhIxU{r1 zoJ=;Uf7i#OVlGWZ(1g$(5N;nB7|_>fmX$Z7J=bgK=%z?t_~H{ZhC=FOWl?B&UXl!Y zRfm_=wbJ(wWR%G5I28gh+ujDNv3Mj(Lw1~8@i{~)cc?Jiikp=?n+RwB5_pOcU&NAu zI519g8Ln)I5NmFue21nE9txRnAw0-np(dC22is0mniDBO`v&bvGxVzHx}%;ITU%dA zph8b85naS1*{6gkdGI5oY=6CU`z-TqrWZD}A6?$#&GC?Vuc6?*33TOuG5`lrDH39F zoi7_4&N3lV^J3Lp-Jh?&Yt;;PMZwrkU(!rK#1oiPFzmJrfgwvdHZ9W-C zSJ==8bz0Q%Kyc?B!$ngwt9{VaF*zNc#LzEevdUpwJzLkyud5u(lm+-zmFsn{e#P!sMUs=`4f&8V2k z`Lwcj@@>xooJXwjpJkrl0=~C*>v!o$i7^w8zj=q5geC+Qy$bw?CEhBen9Z8ABnjQnzqSNLn#;Z=P}~9J3$R9UVr;N@&U-}OQW*X7o5Rl zb<#tU?iLC}DYxv>c#h_~g#c#2WibBU&vgHoH8UlZHkT81YPqzYv(;vEGqdcvx}=Q_eV6mK(Eu2vfw3`Q`IiuD*T`R{C)_&|mrJqu z6frFG`?ccE&g@XI$ok-yM;^?Fi*B@pl#~I_^Va@6sUb;V)i0OldQsWm>|_pN@OW+t znEaSnSllirDaFJ6#Ga8YEqrxWi&OqDVJsLE(W@an_>F9sW^736vF!l#G&&t7qo5GE z9~W;%DSUhB<)CGT@uSj08IjBA21vYrD?BV~KJQIP0M-2KA)=si`sBpxZKeu$9De%%7`4J}AWWKJ;a|fkI@-LrN43}@ zAY2WPS7=sE&>AtLF$wesjZnvkMJA3ksde$9EKNwU2qPj+=5qGOW!e5`nTYaCU#iXi zY0;J3EhDTwFL3sO8>Y1CTYq6Q_JJ$6Q=oqx?K7xh5oKOq>C=aR?6~^AF%Pjbw_;2#-o9f=-2ry@W@Y{Dh9Xho8@u+|lzTg@Le1Bl^cder>>v@>Fr| zZ)FZ|;MZC2ACnk3WT1}_rA0+Qh6KR7pZTqRat;{wtrp#h>2HbdMzsUWzul&g`plsx zm7JVdiAR0t6+z>F?-q|oB^5l_?YKSTIQ?t5qNQ22sPDelY5n?`j_Yb~D2dO4P-vaL zC4++lL;hZmx9h`3GKV1~Z-bw8oPa-oq-stc62m%{{GkRpNd%g1AwlMQO2lD*I(fz` zTXN%r!lmg(>}|7+dZHDiDFL<)6pY?vfFkG*kf8q|M`K;Rl*r*6u2sB&T4|`u25HS! z1Vzx;eYX+W)4pXTuQdrg>zuJgLcznaQGpCN4HDqHgWH9 z{A9~ex5q7fVL(<+gH$3Rajj<+c&x!7e2oLSve$;$34c;8k>?l7>Vi&I+_@ei1`+~t z>WR3g**;MC6A)?FL>heIkn#OemXLX9f*|YHeVWsd z|2PLXDNP=qks7?#@X#_a?A$Hep5JL6v!EYyu6rr-<9+;CR##M1l;isbjwEm`kW;gZ zK@>s?*s3>c#C|c(tXUB;a9ZZfi+&3E0|NtSi$6^az4PYVoR(7Q=DC;YwUHL;!`&2e z3_6BNNJOE8-2h;DXY3*sq*V%p9G&4K_8;;@IsV#CX&lSe-U7w8Hsh$p*-K{+(HV9W z4xY_~Ad3F9{Q&O4a32c~W>vV-s?iP@Gu5$&E=EK-lA(33+*;yMH_N7*$O;S|0*Cj) z&caw7i|w6AvbW!q>9j&_xmnOaPfl_L3-5`^?h*Pb!$*=biG2GR<^~oKPjj>Q%Nn%~ zghu*Ov)-&6fB9uk{!zLAhksuJBdoi*hZEdh-RiC0BtAKdU40gW+9?bUYE#IG>;$gk zqZX-PT0O{xxfNW%7_P0PluPeJL`ZmCrR=YfP?WViw#Mao$Dpu-Bc%yR_Ot)x@p`e% zyLstu;TAc?=f7hCDh=PY1xpkFqqi4Lvt}{0S zAug^HFq=Kr=>pD=6@JSczI3fXh^g3_UE2_Yz4ps>-@4T?)A>)}#h%rHFy8`jDN}A7 z!&x;+eHTTp^vPsi3}*gHVt<3O1uL6#3&17YmC>=%=e|&@Uh(}1xE8cM=OYFpS*5S0 zr%4}^^o*__^+JRdn>@f2T4@B~O7~1=H?;CU2wY9&9}Yi-?BYoY>mCbl#;x+b*;=zZ z{fxsNZ~yMTjM;TjZs@$OV>C&Hb%|Mn+|?`E?Lfw1*VeFlyI4*hJM6) zewQhrXIGr(bwEcR!16)BT3TYYJd2uuuw4J$H5qIkpXoDR55!TZR?VlL0d_AJ)4J@e zq@;v5Qb9p#Lm?A!Y-Vc2sJgc6`(3#kw|a$GhM+Y%NrCNoyJXsrGCDyiy6Tnn3}YXUSY)Tj3D|2F%=KV19PiV%*|=w1OUJpcZhCT4G6DIIB5>k3_SyURm?*|pl>{p>>Qbs+?D zUd6Eh09-On1JmX?!hgE(N!+bkiKP&1t<4X{8pC;w(GI2rLFmDM(S+6I=5Pl~F2C%H zYu&<*X==)iPE!2&F4xqP>mf~m=)JAm2|5t7{kMKhReMKv;B1Jbxf;$TcY2!5DfMO7@9#YxAgH$Eo3iI~D0{zjM}8=psOsS4 zm2Y=$LDMomCmRJ*PKZP;-3f0gZ*9%Uc1IM?!+SQ+7LNHD7|Qjr)OV|80hdw~J%Q#b zJn#74tI+dpe|NWNIfTkLUX)eQ%BocJsaLhX_5UL6t;3>3%-Vaez1DrN zwKiXvrR0_blSIm>FKlP9K4{S0U4#j5L4TJ;0q+vC*_{xbyYcvnXkA0W_x$)vGayxj9(h&eo5srf+%sI13)k(R&JPq3ox-pGjuxpdCInldNeU%_=*8 zxYR@p;51M_MPt^D$Ks?a7KA!IyRn*o z?;zRT;1Y@VqT=wU_dlq+Z|n;OfDW%wpS>SRW-vO5FOI4++ZWddWg>Hd@}`+@%%C~! zBW{->jsb2HkNqkODeD{Qxyesmuj_4q_9?1v>J(epcOE8Pw1FJfUG`)Xn>*eLQ%#A+ zYBSNKduJ6-G|=yeW4**Pan};@2Ns`G4J=z|Q@@nXlk@fEi*qYw`RIQcYvhOKTM}1S zZ+@4uo=gOQkUTLiKjZQM^{0O+=oSVvdmFQiN}7GrPccZ8V$POF?O~2T&xtrDzmTw+ z9~Gk1utG=}$8t^e<8d#mK?y%DiXPSjAvK~QJ>UM#U_$EfhSP|j>!QE_32ykl={)*n zZ%M~_<8p!rr;NWny%j+ItPd(ZrmuJ^I*UbRt_eh^QgB5-{XRdm?u3W?SEw8jFM4j$ zpiJ%GAIHX1?JpO-xnGA6e6OzuL|fAF)oS#quUYo3l~Ge$=Wci-qnr+!@DuXCW;0^} zZF;yTn;}@D6XB02zPpn=nVxv%`r$56*`O6YBk}%>@XYI`w=u8$59T8$+uy~A+ig>7 zb7EBj>Z7=%&obi5Emy!sVF^|$+*e4dkk;cpCv330_3`}o!O%eVU@*QHMFG9oY<1}} zA=ya;=A)AJp;;`BLHx_2oOR@n_zDKi$^=hK=}y>W6VVY8^M=pnkT>mf4cA)^bJr@z z8mwJQ$$1Jr7nyN{m}kN*azX%dql#BHZcI?FCRA9->(VCXAGe~(?Z(OQ98~+-TU3* zQ?$K%3%a-s&KSsXn+!_roWc53|JGEjLJw2Ra79oUo|~$c8T+6e~25F9d$P6Sv%>L%+QGb4Wb7SYyTzWP~6sLy9yV^ z>i-aUDALaP|0icBFu$eAalZrlkrkm`UqUq)E*{iv8g=m6xQ$L~jaByYyFj^}{HUg( zJ<~_&)z!rYeBCQ1<;GwW2$8gl^SAOQL3#4xG zZ~SvtJ5tt8!8%qILlm`Tv0f#!aaXfr?%n}kr0x?KZsaunK#*;_NV`?c^!EMT-r4*} zjx4C^RsZ#&M#Mvk7(~8&Z!%NiKOzRFfE@TL>n+2ZW`($)l}Poc`$mpv$*Dqiz?T4g zM*ffDgrVnd1>|Lb9V`TVZOIIOJ;(|u1#dgXeIQyey&g+SVZh{KEd#b|rSS z&pmezbQzb7YE^ux~BdN3xEevX#yv*rt*~yJEA(q@yKj{Fd!?&*;9hU{0 zKbpOJE1tX1_aI@{fP}>%X{}Ly-PcMtw*CHYoQ{~YARpKMx;4Fj%HJxUu&@=pi%Hk>Ds?|Ikqt7wZ68SFux9)A|C~H{iSg($y7H`?oL%*P3jm&eT29fYk@=OF@bp zlGoDyemCndr=4$66&17EH+S{c8q>sxeE4&_Q!_@)=42DDoH~DYMT)l!gWeVO#Y!x> zkD5z*rP3NR8b&gyDj?c*@^f=dKS#fM2F&ZpB8)muc05dve@*3(+mCHT^`9jXn0Sw~ z5(?rZECcAFe)5PYa4hYgv~18Kpl{-aRNNMmS2~0rDohn&eNn{eTQO*II#88vE-jfB z*M|KT*1J!asZ}gRap+=1W98^u!Nd~sC$OBDCOgKIQzod^oHSiYr%!LTU~BD<&RYU? zm-XyYLtfxl{>$lpg$GC){gZJ_wb>gr$k9Qp}Z;s>#=5 zs|r60XttG+dx286z{V>~Dg^>#ifYkSI$?zsFy-IK^gd&sV2W)&7AP|B0W;QrUL=uq zpu6Ao9>w+7egipTq3;+a!Q2281^5|Ix0ooG7^M0YfjH}@(f{ffUHmV1tBgBs(IV8U zgRzSFtcGN9Sj~A##m6r`;CPep3*2Ehdr|p8js4U$d0w? zo01e_hSJ>N%Q;zF|N1k__<=b{IdE`I;Bll68D+j6Iv*dOT;|Kjrpmlt^*lwi|{A=~5h$5-OnLz?H`h7Nyf zU<#!)fpvO$cS%SiG-dPLt&sn=Xs9_tMV}_UkAJfAhLd1+H(iMMmAEeGV5-z+uQcB8 zJiJnryN)Y7!^Y)4pFjEXy>7BRr5J)!!Y^c%IUOutou%QdZO$V86ebObJhysj$*p$) zcU*~4#}4K8JKS&aZ*ma6tDOq~v6;_yv!1;N1{K&$n16q^YWG*1e#HH7-V@-MccFwS zpCtN($N*8_w{TcZZ@wUG^ULR7J6>k@Gbh2iN)R{}O-@D(*x*X5U;uq;l@CTm?Ed?= zT4#5fubiJ{ryjQk_|c48DH$6nf`YDK!gkk{&N3rc=p`5$!ua2kZa=QvBQHZlBf^_< zdD`~|X-IK3)sti0r)(5IyRmcIdPy4Qi3uk*HW=kt?>skzH{~AD6)ifa6Kg{lGfR+S z9W)4&;-|-G3FYG6BWCv_?^ft84u59Qn+t2i!s5jJ)BZkO@RQaqCC0akd`MySR!NCJ zfx}xSQ^@sKq4^A-_S0*OfB{}VuJ~nB{15nf1Mn;0F?>8(a+iYy5YN=OUvw?%s%!ob zMvbq*?xj&xb4%rWVBw#rbNOh8ri!NwRxZQeUDCpmz95ArgBe3dB1XKd)|q0BqOjZ_ zXjd9?M<2;%Cvn_sZ>lDFh`xmfy?VKIqHYJ01}3B|_geNud$Qm+lwQ4VQFr9|q5G%_ zot2G$?wr&0yT`B3lhzI3(ZQ%64UV*8u7A^&u6??0$)n9BSlDoh3(iU!#CavdB7IgC zhig5`%x`4il@WV&*-W^(=!NSmiZ+Y!P|A1|0;AaC%*fUWL~G`D_VaTKh*9chFUx;3 zA}1I4Bj-Xw+R{PvXH0A6j$VUpn0xWFg}v&;62tFm!lUazXgctl-4MeDH_FLoMEzro z0=p++fqeDi!Bq1}x3e>9nZ7q4%XoLgt8PDM(BBiZD@g;3(*3Vr)aGUxg95Jbo^SOM zKi7*lwD~K*!ybZK)(p2N7eBWcpaO>g?MX(Fmt5mzpi|%ebBA8=*0&VZo{Z1gEt`CL3*GQkhtsSJ&L-p;PL9QUT#t;FZ`w*^g)HVwVn+G(j*`o zCy9idTn3JV?DwexNK)&4X}=?;H&}(eezo}SZNICL!1TGdSb|EH*nNqyq$NIP z%!5bxFdr<|N7t{f5n#=H`EXbqh=D14>$1!bdOEHgf7O4-H)D$Hjw%d^E zE-nx~ZOd~8^kwH)%A8W1%z4S4vTXv9xSu6zCdUQGj4Ym=ZOxW-WnD49tARkI6k} zG3ksCJWyRF-_ZYNc^jWXsQYR5)23>Je^Lmrw1N&gJb%t3{_Pnwqck+euupEjWE|}_ z&tPfrbiF5NPj7JB>&|uX>&}k#uc9JX{{={)z;2K6&cMyC*wr$|xt^@)YqPH+ANn7) zqm!T1ETy-d?&59X_WX@8LwE*CY1j+Hidkg-%!MXg0C{V0Ld|@ts_4;NZw*N%EAVE5 zxh@h|h0vufALI;gpJWN_nV7yUSKb7BeDjjL|4Adv8S9Q2RJA&Prh!rlFX8Vh_9zo? z>*}AWk_Eh+!rQA{b3jS;YM$HNF8rSUFlihX*3(gtulh6)O3b3N9Y6P`hho3H2fDQW zJXeJa2TUAcV&mOW9tevHjqH|2k-qwC!{nB%DsEYt7NafS8W1e>%mQ#~jz0gNR7m=N zOTdXDo_t~10VGaiP=_MtKtOJUYh3833`=wKGq2nChnt59cSvRdJWWzQvs_2O`CBjiRC1EikiV42y*&Z9&3&l($nEq1OPA zrj~&Sv{RW&-ar5VIh_?YE-$Jfuk>ZmcANAJ#i7AZ6L}vz;`=~w;f7~Z z>0iZNKZt%;)y0DRoV@mRrX@KL=#^IKIYHJ+jILP>lhYZdfhSeNTCPqZs|Ob#DKg!YJz+ ze(#-?jqw~U*)zSoQ0E2O6k1XhV^wQ`j*c#MBejo?!S8#p$s@WE4~2;Lz31-moA%JL zpPo8SAMMs|7(=m_Q#?9u1XNEQntn<$_`%XRJH!`ngexj5Q*MrpHXnOZ{bzB#ABg-; zDxx~y3gK6}ca0&Gp5=B#9@^6aba6DLJ4-eTX-i{4|G49ip3w^-6Ika6FGuhZZ^C@E+cKjpTb<%2C3?PVD>fV${0Qf2gX>7p8xe z_|X`LW;URt{L0d=9Y=Kv*OuTnr z5FW@&H2cVU(pvCHe(<5|tjrvFX{O_0cq0ncXb^{!eSfWQCr#zwaFBsLoL}*w2GmIC zNU+MzqI|7@01m;g)0MoYlgAG&a#3l!?dPB6@(yD7y;C`ExXqAn{@&G&Uk@#gg1-AnCL*RC-8XX@z(kF!qFs}RJxuI!|Ff6g?lHXZZm zef+JYY=z?wJZ2_VN9)ZAM>_?6B6onqq^5n)o>XWk^|&7FY`m=f0>lD}<81Gadn zN6n$_as=~(U#lO9YZPVj|9*e8i}%T_#e!qpIW=Gu;K^qo=7e|kz#Qm`y#f!3V|4HA zvjU%^WyuUICSdM~*w4SxBHny~T;rx7N}x>yv0~9Lx%yIXBZuy!XkS>VhEl${x%Wmf zj{Y&a&4UDDjMzW8^c>pN96Ba!Xs6vzqRalVS32csU3~~ z8NkZ!kMMUH+oD3~9YH=Jb~dS`8U~SSPnOk_?)ch8k~@UpFlh~7C*OhK>I(WA#`M2h z^I2A7bD(I&Sv?kUYr=)MC-Ot^(|)ScEb3p~`GaTA;Z2=9-_Lm@LpCXG6ix0{TF{8y z)WZ}e0^sNGufmQeWx z+sq#uHyszE-s%FXT3}T~MMY^rwX4u+#pW$ZrAoEF0-15Kv29EE;Sf@XJqf(v#z6sY zliVLnkH_L91WHAM6c%O~t!xx;?x6~B0EDcN*#|;^^$YzDuh3yRp)TVsfhP!@Opm*A z#g6^M;R4w*qYZA*?(%fW^M&>~;gzqPdZNWQEHOfC`BKB#&Z=Q@$^F#CT>e13n zk-l5UlsGH!eJ?QC$l#wz^iFW@jeIM66UQRM_LIA{pMTNo?ablVR>021jG?rd;gz&pYD zkddVt<~}HB^|q3D6R;FaHURBh^5cwi2kxoMpw_C`7m$t{_pMjayr{I+Ps6G7E$yS+ zJ>mN3Qe2yp{DIPgzM!7*JrslY^O+m<3okNFX=%(zS}fTplK*Dy0hQ0gf9Yla%aBAz ztuSu>0JvN|!$$j&v~CQ3C?Z5`w$T_HcN?YyiJqbf8n%v_TIiG&|GKK7fKHd8$>HbD zb*-M&lmflCXvm;|+_!PWI21Hz@D9LSXx5-OuS@+OSj5D~w{<^beQhkGtW1cZYCeP{BrVmRbaj;ws1nb* zA+~Q+9y!-1Vw?H9l-bJcCW@yf>CW$b$b+_TN44=0vi!!&jg;V(s1E68Y$30d?XeusQ+sh7WMC=fvXv?X9wvy1XFF30O*Ijt_;*a00iG)shW&69u= zuMtWdKyYnNEjVcRN7$-6A=j9jH{OshCB-9feb(4s>x|gN9#aw<*H(VHzRV{I`H9-c zOTD5w5FviHSzoq9I-MX9!;m$$nf+6@?y%CnhRJ&^y-fRnbIcpEOM2Lzxr(pc)9S@5+ zb>^>npHn6jkM+5t!JFfmsUkazLay)%c>QE@3`TlRP4H2vca_1K`R-e{bvyW|+*y!C zhsw)%8u9$C_c}koFjA^6zx@UPr4s2!1bcA#d+c{=ia6JHQw$eto6+p-3nfwOP$-Ap?9n{35Z|x^RqOqRP!Gs2DF)Ca-75y^Q5U(Fz z0}K|lYd!w8`of$&sZaEy7ybtA{@@0D4fK}nB7W(s%MyO<{lr|-0omwb4A%EZ@s@o( zock#i?N{)%(#+iEuPBdT5-TeQ*t45ATYbCok}>rt{6bnfc<|&&SPWlXfHV>)+2qH@ zx_RSiyA0QJzze+v>i9_V!-gg=T-NfHfT-py>SWjmD+&=19qj-W7Cr)-&54}+WD4MB zg)kK=_oY4(3CssXi+xw&3a)RgfcZ)XYfetzp)yTgy_wbr&b$Oj^VGfE@-$kfJ^$v% zN_09`o)s^oBIuizaq}UWiTE8^#BeqQ_auZIFF<5@&P6x%=;!BPn$-Ur3&5oPGN6XQ zmGjdg^#kb;{8+Tg+sh8Aj~Fiuf=1m6=9v{t`IrPpF>W#FN9n`_-#2&uIf(!;MmPr0 z)F*tG>~n$}%OMUbtff6C_YE)Mx8`!q?+I?Zn7GfUzo_W5@v}%vA2@w?tnnW$>}?{Z z#8$}HbvbI8DcKX87sVrlO2q}2qA{mp$QU7uSE~#ozf;-YYMfcvj7@xL7GeIu@jp1} zS3;4#*c+<}bmog-@9~-5W)~c_-VG3^(NcfFkuSeRj~ww72+AV@tq8vR$q{i7Bmj2reqh1y zwlr+C5MZnFv92Q-1t&-cw`ZG0_02DD@#GL~MKnFegKQQYw%;3ge^YdB`Z9>Cdi|DN zy^+{f3mq^T*54}J6R&D&8ligA_ONS#oNH4T?0R5vQUh2M5H5!5U*JPNIlo!^4U*e- z_9#F^7RY2#EfL(_LzR!3>_r@hTcw>qeWYL*-aSjZHeVwM>l<+Ae)!M5jRM34G&RRl>62R*Zd+(e-olwMynARe6a<2oo z8m|KjgqvJLivD~)0DRahiZ=sNHUwCxC?ZsBmT+H;YZ6m(>G0HgO*H=W|59j?Vi;5G zwf_%=CR1~ToD;sRE!eq5ipz3Ib>Fdn@e5!~?$J0hDk^gOvuCqYs+X6vG;8ZR_tF}E z;oLW0&8gQ=J2R=Z_;QS2fX}f{v4NF6d)qJI3pxWX0R$ch^2I&@`+?;%6<`hnl$|2aenlpxkt|2@ul z{@)w6#&ef94$c#OPyev4H*pSJ+&QbN++0QD5S@-NVGLgyUi}4W2JoeGr-{Gm=Hi=Q*9i`#$94k|oQ>tiquc-{GSj4E4B??=IF9 zN49ML8AGlxIdiDALJ&S-pws;3F~2pLxT3zvm|Jx+n(&lD zC=p%WVK0BiLA3HVI=L@W9XqTGsWitddX4S4TuX$wVtb5^1UWSGeN@?pfyX~YCs8jVUDSVi3>Rs6 znUa<|=r)of?O=Cv89g3rA9}`0zJZWUc4M!1H$X;stw(7yFKsF%rmq&}3*W6PsK|SI zdV179j6d!kcxmI^bE=Sgbo7alkumJ+S0*m5C>Zoyq35nmAQ$z94V>uiehaSR5)o;) z|0wzNuUv36hT%1;v6xsU2+&Oi_$V9lpy|@+-|A}k*RST?F%0P*woytmu#LYbPvf$( z=mZ4?38w3eNbNqGUX!L(%}|@#p#CjNy5Q2)^|fvXPDTZJ88KhyKSrNBj4&#}fS*5^ z@?OY&#gaj~=f`33kyG$ap0fHQ?JElN1OFPI$HhGhdG-nY^9-!MSA$^Fl$xG zB%}|?AJN$qmdI#oLG@}>K3pFU+bHd1SAYg=RiGzgS)gA~AEn@1~cj|i}TEY8mF?`uD4U!rmUefH@y z;(D{Twsv`QGqkG0BqO}rHz^?jl<;tl@)1Zfvg>(e3OMEiF!rxM+QRk!$b_A%#xQp&_=Ix`}jFjSy$K)Vau& zm}IL7})Z>ky^aTNrl-0w_v?zb1w^WFsE5vXK=&X+tG|F^9T z3`h-Ni$_Dv$2ud|GQ@{+6_UG!p_xil0u|<$5gfWs=zd^;gO)u8LNI-}R9Fk3aQ`hY zXNR>2#1m*}Yv+t@dpMq=Eh;`gy6uFa>C(%{%C2s2e^gJAa6We58D~Sq+pP7(gCbrg zAYbO|Bi_GxeEt+k+_5rWAN>J4op*x^Cu==>i%t4$Xtk?R!a|}CrrFSkfqqsW66p*7 zNiw@k4MwFTolf5l-H7+z8FB5gTZ}WR!ksq9C|bW?ozP9 zkgmtyK;Hu5$sH^yef|G!MUJ^7&~*2fu#<*x^E)h6gv`?4=}g=dthtvt%bZEgMd z?d*C--)XN>wPl99rjH5F>}0`FnJTNxH_Yx75D0E5h2F|*MT!zOh>M-N4mnV;wq{5D z86_Eyiw6NMl8`p!^l&DQ@m>}WjP1%5{+_wHG$26{QBe?dL$vD95Q#(1`J*37a5?Wx z1VR0>K)m42UN`x2#f0sjDf z9u9+5*P+ovDw`F@o;Ek@k<>%fMn=BSNsxy{kaI!wd?pRm@UvyL&;L=pCYahgt-+au za0c)&L40}JTXTxM*bW=`;6*Lw6QzQUu}l%KV)3w8Vcoo*4^ve91ma}Mt*59jw4pQG zoAV>>{S_=uduZt)l+#r<$p)v}JmLNVnh!`J_%g_e+5Bl!jz@ReVDv95O^^vG{&PPL zovE^+P;Mi56D2CqU#v_MKlL3o;(@vb($=l9r&)p`MIp~BpVYdTKQqp7$6PKtjq3Ft zxnFO;AOxD=5fOpv&CXhtE1RlnYLcp|#Prc8+}z1@C%)d6FYZT1zToFKb#NHk6^^d7 z?z+6aP`(z^F*1t!V?r+^l$xDQ&(6+X{Nc4M$OOb*Ka8N@MvuwN9E?&wpLgox1pTPD zJ1#`6qM~A7w@&Vs{)-1{gL1FVLDk+PcIbG&Gj>eHiAriH^1>iYVNdaxKkb{lgf_ z8=H6&#l=Ub8!eyMxVPqK03Tb-P<+esrjbneR-u8VUD+YbOLXzD{MwmpLV`muWHxn1!`roR3Ap* zTV?@PR8$ABJbz9G|K7m@QF6N|j;3O466Po{6tj2GcX@^!Wr6 z1}>{%D@0OK^6KVBZ?oNj7@%CtFM~kF36;9;iwqk?Qxoq5)9Uu_ZbVK_&cng_)q;W( zZ3OvD<~lM}+CKJ{>XrLURn=>|5a(pWL?@h)yJtRVd15<*Kq}4~{gi`Q;xK}vtFtkc zy4^vx1ZwYy99W~IM;Sid{w<68=jM%4;ryfR{4Dh4y}kbH(@jArqA~o@o-(*yT~$>= zQWA~tLw{>W2UZLWPw8FX`pp0n2JBEIswsm80+RY)nnLw|g0PPlkI{G@5f}(nB#J%x z5YHoeBP8nvCC!r^vkbazeb3X~WG0gn`}_BcqI8vp=YBRJ!EcvJe(_%K4KsX;;1FTv zsO(y27O*Zg`qNQf)8ktiGFdJ-76or?qMTzY|2q|Wb#-O)++Pa!%YmxC^tf2+T(i{* zIvDUCrE-ijb7@3^ED#qkF*n zGqqlR7*3lvexmK7f7Tp|RtFc@P2fO)CQ*Tbfjzz(V%FRO6&d!JzC*A{3$6^7`*d7H zTXPi__y|NrZ4=aq>^<{sYT%OHpIvLN_sos0%^3L!`>UOi@2`$lK%{!`_aXt;zAGY+ z70wPsj%+k~Oj??Pj?SYyQLuT=m+#HZnM;e51JJmsimkye0L2mwyY6Kn+AhhV>f9{M z&jIhT-Xs){_1kk0-}W$L#D(@^<(; z6lAk6*1_7WgjqIAkz_Sc6G~V`Kuc`LfLg0LY!Tum+X^f!EE1)5x-V#)BIMV-1m5Wi z@h9%3CykUxh;!0Mf=iNH2b)RBi7SY^lk)12biT6kAKm8ZyHEzxH=}oD=`5VQ)rC~Z;>yrd*~Qj=oU60Aiw-qCULb1^b9 zk}Tndn3w6d#V}5xhM|25-OwlHMOa0}=+9Tx!s@!Zc&$az##$9nvr=)Mj2oFn-;@^H z0`;g$Z0lpoMNTT67H!Jk-v><&1aafLe&Z(i9=jzZ^H*#jO?r%5+j1yyrmD@?B1a z;nick_NBVMQu(<8N{@JvZ?<*3$`v8F#f2s7jejKM`ZovKb4 zFy_{Cb59(#BsdYu<{$LtS**8ICCC}XL%{0AZa9mYi=UPugoK1=3(j%w-dHC`nepia zmm97A7?|_+`Z)na)UP0|VdLcbLvOHIv+#ZUKdW3BiW>2m*Zu&)B2&0-rU*R-OJ3 zbrigXO-`xS;eOZ@(PC`OW%!HtxbkX_)LS7iJUSXj^?A|c(KbFBVO&NA&7~sM->j?v z`krjuP^nP4gv?omdCn8KPe!I_*5j+YC9l3fy84fouv7|k>YoBx)+QroNnFOj{LUp; zC4i_+$&@aj^%<4de7W2Br$U=OA~yacML%utv5Dl5Or(z&>2ZS&?@~5(4ZT_^T2&QZ zY{#wd?t`^@I<>=_?LqYyFJC$xipKUMC84k}d@;GmceC$nN)6me!p6auM z_iRKz`q7dCtZwB@ksh`-#}ECnmBv!HpRd=G7pmdfN*kk|aryZyzy?uFe-&F+#sl<% zPUVNlilMlt3czV(0jWoy;TJ3W`%2Q%()n`^T!?W>W@nD@mg)=OL*6Am)BeU|iq6Z+ zdwVw^P-pk=4J6Hw(Y|%?oU~N{esMf!(T9qGZ8&Vsad)V*Ep2+z3@t{@`MfX*o&n5i zc1VW{lbLyG_qeW^=}&{DAA@fNqxF8^K03cgVLh_Bx%>Y4ad~&tOzPExf(CyyQe)#t z0Bo5<-fFnK02ZQjBOcu(t$m%z*RWXQsf^$0Y-&^QezkPz`95?;4-i>Ot7X6|f6^Yi zb+5YWAy4}|4|GQiit50RQ`=N>ImOkq6~ul(_P9jno*y`h&1)!XDD}h zA8J-yF$gd%kH~QnahR1w6GQ(^Z@!#ew0;!uRn|U9t6zYX(&0Qi|KX{Ao}8CAj6!I+ z>9R^*jTZkfm@a6m z2SV`stmK5v{JSuE_OT{LlRSN)YA4R5(Cu9Gw4vwDkBo`Xe{b zL%*r7=+#UJOvfj(I=3f5(1w^J2MXzLVcPt_hP+9+e?r{%7kEUe?Ni#I4(|KPe?;b{ zyPLZ?(^LXZK|S4;z>&J)k0yL6yRX0Epzy6G)~Zb!pMn*AJhh<1SpVFt`i-Y2=aAj_ z>AZ|6w{1#aphNdelt!iEpG8!$MlaI6-+nsP*w0bke-I`ZLM=b1%P9GtDtf#3dy?2Gj z?2IUk-W|jxvE+Glbq<5tF<$ld_L8lzRO7|IJsd3Y*NPB#MippS{u4-9?-g&qwWB0- zzKr24A|jGNplJgmAt6!B5PInD?k;_so0~h+c!eR@kdl-n^X3gEtoerh;NSpUPYesg z&34UFN_%;qh$vdCWvcNrM^&tqzH45MVUAxgy`!&B@WIRFRkkO&a$=re9+3p_nl5;e zLZ3#Hmx?xqv>X44ZL`sNgdzKQr5qV7j9|?dzVrE<00uuK2J}zOrb|6P<0>0=fJ9%| zGVpbiV88zCW)XXO-j^L!^La}!b>(eW*%A%nqMCa#XLlzR%z_-Xmv_~@B$~_i6=FB* z^_L7P>#geN_b($D3Yp<^qd}0IPOjzfhL-{@eH-%@+T^#=LpMPhz)=qW7X=FioJEcMuNC>07@rhpvd)7WTID?#C0y?cIPP7hntzZM9$19M zzhNGJXJ=x`7-R@KOhZ$X?cdPh^+Y`i{HouQpp~}G9pmd^zE3Ois3CVKEnPuQE}W64ztZm?pMPBpT6b?RV@+LT@Rg0i z{Pbh6p$Kprc%9bXy4fxfN-Rti^|~qi;|9yw#o>~}iKw-Bazesz&9%dbQJ}UscR0zc zu=~O9X;&XZG}iVkAwGfKz84EOwG5;0k@|#4`x$M51Kd@viI-yRzkc%I&xZf4*ybFezq-<$PS@ z+W519`!M<4XwT!5Nbkh;okiat;Tc)^>vTGLf%`yDaB5V7z1>KuVmG$r2oPp-=+?Voh4Yk?uclH7c6&qd~>B@>}U3^{x zRYho!6a02B8X`y9GkQSU3Gl4Ju40H@%TPj^zeJutHo>`PyI6++I7@liG1;ww_f&1S z#$ic}SvlRRqNK<~?iTILuui6C>91Fn6mE0+x9JZVsSOPc&+lR%F+D=eVyCrS;{P?C z%T_RaVaU$Kl^2~RqAq`UP+@hJ91?XMEcTO?8=Tahp9OT0v1Nu*S0= zCq|+VqeMc@l!}_wpHzf8Q5kHDVECf*<7W^7KsD1qp$ImhiRX|M#twj+iag23U#UBe=koPWbWSU z8=i$D3s$N^-x#i%rq91mxz!hF6g~6f&_I8t)WCZALd7}JQ7mbSR_N;r_18~=iaX^- zYZQw!3@=@z)6>(#4qBq8O_fwJBCu&UE)S#4h9qaQ;=8`N9SYTTRh*t`ygZmXy-^mp zxNZ89#O6VG3Wt7WEK8g)^WDpir5YHXNOMV1*p&12_4NUavSOx)E;-cqicf2Rk%04ij&F`8SPn}a`QsC3>` zZfpWrPJ(RZl8`C7_vQYRSFgU^-ue`!S5{H-m_Ptyp_uwAwh5RlU@M1=48yc$VUHvF z#l=PP1`p^xJ3@34#w$4fZpYiL8;UyJrR30;i;615etS7`49+1ue!06av~S+xDtB8kd2Lvo!J>o zaKkOY0^YGXDKxa+`ATj)!f;^8TM2mLwrFADU*3tSh&u)ZrL$)|I=;sPZJa;n#%8yr z;ojz;;f`u5pL9_oeZ9a`wSa2!)Fydh-lo~H#b}21ZqPB~Mn|D54QX6?xyz(xDR`7; zT{M6*y-UX}4{(WwG@M)-dAaY~0z*4qcdODLUD6F69O=Fz1$fPiyA9nmI1P$vA)}!g z_{Mv3D~igVdGZ89AxpZcYKHwn1-araXP)SGFhBDPx5b13&a&0u6j@rbPp{%8=2k4i zJ0A=R*7f(B4=+v57^Ky7%!qR&gb>omFEu-L**Q6#xF+8zB{`$CwCn=`C(NZil{`kzr_t%O5W0XY z*nadqo~r&8TL^>a1K`)mAMxO;wa0>aGn*7JL-EQho(EPCgD7*1nB;t!GR@3mamp zn3o>cpU-^8R>z6%^Qx)sUwrpse`Mnb->)%tZzyp?0_2|0qL&P1flX|9!3t_#?s~w7 zP^J<9w-i&JV?k^#=JbDU^W~S+?c9vk6Qk*h+`!?hhleV!Ut_Q+r?)O5So&h@Bbu5- z*VotI$jZKVaENYc5tqp+S6cdW{&|U9?SpIHaIapgLe%=s>=RZ1+aJS(<)u&L8GFfV zyp?8+JR9E5RmXilut znZ&{L#*fA+D+XoE!>|`MO1=(P1%-ye9;bal z_9ka0a2Yke1)e1EgvY0*(rjTcSbllAnl9FllU$Y(vzBfGUDA6SVfJs254&zd_V@Sk zaB;JNn(t2&AaZbUILS2PSQl-Y&YN8z{i_U40Qg=O6j&kY%dMs$A|iUQRAbp>rJ&v_ zK}9JsvS20ms=XE=FF|sSugK#~@rBdROT#qJLtIM6<6aTu9AhWFO7#n8ZZq ze@z%aJpqHV@@}@SjFYi`ou&A}SPQ{26uaj4>#xBFM#Gp{~$&Re{1L!#eTJ>4Ptx6!wmejtvf(;_K5yfi0uDHV=vY(iWl8sdvkP z3CW4E$TlKsVP9%U&PbSms;X)$aEk@qZeImr6Eaz~LK+*JbdiW>qwArWI~Ofjp-_Zo z{b4h_dtd-dHOYg6m6g8idSYry``QN}DFCZJ>JUe=PaqHJgclGr81^GdKo4wt@qYt7 zBtJmcU6l?LHHzu3HzF@8F8)d*>_$Hsp2_8S?6~*ip+^HXO@38B?N7=+2#pvi$+vxU6uN1FJEalRRpe!-4@_tfZLPRi zR1@*u7ER$I(6-V;Qw3d5TYKv1o`V8UK?8&I+}*GbuMIZ^x6y4+mz(?eMSVj9vS2++ zPq>74KQHv<~S#>-JXKJ0$7hWVyTuubIy;v#V65@QfpNsE&$dlr8^mktPrvVgB%gbO| z+S2s<373JBtJ|OaX#CPauDvk)Lz0X9CDA_{cDHrY_0hktrv4e{xW1tK=)#=A{GZ2k zI*yF?`*N+l)NnFApozOmo>T1sf4_)|sGh<9US`|~D=lF--_!kNqp#IoW&xM1)@^95 zQodPuz;u52Cu#VfaRihTG1r;2YMf&;%J$5^fZN)lrc*7(vRz zYgRCsz_en`+tpetw$hhbc3AwF!O}4r&|p<0#KK$Ik>r@Lsb^@=?1MPPyY#>^;TTiC z3;g!`JmSLmkk_ABA!7C?Qk|l?&p13!KH+8mmN&Y1o0W_qp{j%FH&E3?j?}viBu566 zk|Ag1=|$6&`ydF{Y;it#9ZzxDmz2splm2I#hz`QXL6uC-|)qYAF zA_M|X4r;O{i6N$vF|ZSJ7NJtL{9=p6iBMW?sjrr~#?iaAId+&khK=xVlc9NBcB`d_ zKWb}jZSJ)!55#6e%5(RqbduCR@BN%p=e<@i_^L$NLf_x#JB8S{J86u{t|-e3iu=r2 z5qGwDj;7+;9{yyT^rY&QyqKZ?RyX989b=ss&K#ZBcekI|UHrQ|KZ}j)b_)WOzq&zC zblS6!WmV8v&XMq+!3q{6t)9~Q7;1OhAk@H$9M7^jhINQfYu(zo7z!CcXj4SBZaDUN z{7zP}S(`L+ZXcM-Ekb;f+`c^lcK;g)>Wltb?KHt9d@3#+G4Rl-b4UcEw(f7{?H&ig zpYIx7k>!Q>60;b0y0NYSpl82CirJR}QLV0Se6i`3lxSx2QWzxTN;BoF#=n<55Yzb7 zay{fQ)oHjL=ig;{Np{FXU6!}r*)54fSDo1%E$deTLy%dgTX=1q)AWp51k$Y&X=*8( zt8ef+=gIc)M-!*J{ipVkIeU|@+_DDIH|gVcV69!o=uYJHV5mZzAY58;S#IAd^j8yB z8=N_ZL2t>4Y^U(SBe1W`M26|-N~J^|9)j3VrN8 z7?~yoEkEW7nvOs2?$&dHB%bUt+_wS}Ul-SyAw1r;5W$YkmH$(f^-ZmfQS)Lloo>&2}n1TAVrWCBnU!`Jn7Qm zl8Cgt!MomvmoLdW=VaEN|Lp(XznQg8^?)G*4wA08jV8v^dl{xwTDc~{dNuRn%!zI1 z$6Py42?Fhqa3b6$#sd=7ba-i7kAKnE{^Y^wkMB(MAs#(1a&cR0HSbjsMr}MS)rC;eKNS-@vf?|U3e<6_j}T# zubM06QDhgjT;(+e+3EW0pv#z77aAHz+GhcT4dd}-{9$;N-gaOIk z6B7IlS@H=&WJ$HH5_PCG!@-u8>gmCV0L8%(^ghLH)j~|5GRa&}vpfq1-+IYNmKgbd{DTG8fda zVCl7E!}jGxU}x6^+1^pwsbv>QQd?VhrE?q2{8x5!TBMQxyOhmHDd;iLH1jX$i67DX zGQBCgplr5%=GxW2h^6yP=@f9!4~E(8N12#}z`-{K-xWOy=IQjAj*o~4dG6Au zOy44=MaiZkl;OM^Ww}c{%*}Z+zMFA=&z?CL|ImOQuh*725_7fp&goZCr!@q(I;8); zCHO9t=KNfiq?aW=m7S!OO#p=uf&2&QTkKvVTT#v1z)O)4_F9-77$z6>_uK-rp`BH; z-}GAcwY*L>4JB`YSq$bi^Is43KZx(fQ`#a!49vyH57}VCEsF{R1MI~2MD`ggwoFg( zIKtgQ4lujEn~eK2nFc{&91pAH*F{mi?26cbhs@U zSKv4vWz!#wdYlTQePdxMnpxcy-&T7Lps#~QQgxue-SMej@a)*+@JwBxhJH1(F(Bn_ zkYevB*J-C4(%!V}1Zd_B5&n=P8EN(`DB2b8U>wZhQR z`)27t8FwSF`l8|ur_6TRhUzo&gy)HcjhFQ<*n_+ix$4PTej3VpaRgdTZ^3N%KDTBI z>uwLAagucLT-Cf!+}>su`A_K|%}cuy#-ChnGUJo;yqkqj4Hn8ft?yYmD6h0xMy8!Q zaf;xq7sB|t-TyBSJqakEjRn2b#ZMGAM}+{m{@6IzwMB zzd_290ovbv4R_fzt#aYpeoQVx@_|Slem?|*PbkUX-bebymkVn)E_xyc&$Es+(k#_j zpZo$5F)~tBP(C1wXC#eSjt{G z{cAw~jx*pJot$9#Vd;Gn3^h6$peW`aJ32W)4QiQkJL5gf-Kt|A36s+xFhP1Mvrd9i z2P{|=Jn$XX(KF7u{@qp zxx}fQu?yXS0^V2 z8+pI0N60+3L4hj|tr}+Ec)CU)5#$Bg%Mv{?;`-Bjx*0w=_dj$Af`NlzVnpZ=sNS`& zH+G9SsQUx_11L)p56x1m3s*RK<)>1qE`Tb{wsO;gU6xjK?LZmHuh)j&6eWk{kiFkj z6iU52?qG2*%JvjKf?Dh598pJ&C@Lqk4n9R^DiJ;qF1oP;4V3uDs^W*QviI2mPrY1S zxy=Y*LNP>&Y-Maaz2`Ef6*TwH1;?H^ROje^{x{Pe`T*0|7*1dwj(d^SM@G1p3a!G_bHHW&0Ts~?au-DKivX?K zds1rUUL4c9gOIShe@B>7f#ZS%I)2cYscoqhfKIxo*VtEfeKIy9d^&o+n#CjBk^xux zk3`w6VRS-RB8A`}Ta8UvvE%#%(7uY}GpFDBzFuJ^((6dPVyFW6aB0eQvD;48&$f9$A?pS>`PMReUjx%_^$t41Ksqf8MZ5yf4nwm7a(_Sr_E~V z5}-;PQ03yAen|YWk0}4NK*bpkKrz^%PkX~VZIfDzRwonlGltv)hHi#AyMi`+MMmG; zaZyW4H-i-Y7bHolkNCa>Kt_HNoN;uH=FZTkj`sPTJsc$j)u|Vc^T_}U`m_?seE9wS zHfLwkqa@KlaSOPh7z*S0(aE9wRt-L~sUB*tWaYEV)HUMKIe~z2Woez!gS}HU_tNq1FOI`wMLv;@YmFK2yfoVNg(+J9rj(o_t!qhjl31Rs3YuS0nCd zQ_IV{z{IHGg)G9_3FQ40>|r-35#Y}Ka=A}WW2`XTLLqB?0Oa#2p^TmEw(?pY(H(Wk z*iH3hsGu6_H`aB`*xv)ZPC6s9JVcgmv(F2N%5=$+>a-h+LUUFHC`jdn1p8U>mdIZa zzL=(oCT|YdS40NU)D!ZxKAa7Z{d-|jr%g;c{v^6y^-=ND8v`E!T@tHEO#69zEH~Bv v((*CTjfU64b{Oi!VLRY_Q$zv~sgo;6VYV*cN^v>|0iTQKZO>88UXT1Q9)jzQ literal 128671 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 R3Q{28p@03>HKMkCI>30st_dHZiaU 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

>iPW`7tWon6+=*xeG+t+=UG0X{+zu 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 diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm index c7fd84bd80..4b9dd131ca 100644 --- a/modular_citadel/code/modules/clothing/suits/suits.dm +++ b/modular_citadel/code/modules/clothing/suits/suits.dm @@ -11,7 +11,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' icon_state = "hostrench" item_state = "hostrench" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE body_parts_covered = CHEST|ARMS|LEGS /obj/item/clothing/suit/hooded/cloak/david @@ -20,11 +20,11 @@ desc = "Ever wanted to look like a badass without ANY effort? Try this nanotrasen brand red cloak, perfect for kids" hoodtype = /obj/item/clothing/head/hooded/cloakhood/david body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/hooded/cloakhood/david name = "red cloak hood" icon_state = "golhood" desc = "conceal your face in shame with this nanotrasen brand hood" flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm b/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm index c0f7a5d639..19b0eb686e 100644 --- a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm +++ b/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm @@ -27,8 +27,7 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION // because I'm too lazy to port these to digi-compatible and to prove a point from /tg/ whining - Pooj - suit_style = NORMAL_SUIT_STYLE + mutantrace_variation = NONE // because I'm too lazy to port these to digi-compatible and to prove a point from /tg/ whining - Pooj /obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon . = ..() diff --git a/modular_citadel/code/modules/clothing/under/trek_under.dm b/modular_citadel/code/modules/clothing/under/trek_under.dm index 5cd0620a9d..683167f325 100644 --- a/modular_citadel/code/modules/clothing/under/trek_under.dm +++ b/modular_citadel/code/modules/clothing/under/trek_under.dm @@ -14,7 +14,7 @@ desc = "Oooh... right." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE + mutantrace_variation = NONE item_state = "" can_adjust = FALSE //to prevent you from "wearing it casually" @@ -95,10 +95,9 @@ icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "trek_ds9_coat" alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE item_state = "trek_ds9_coat" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE permeability_coefficient = 0.50 allowed = list( /obj/item/flashlight, /obj/item/analyzer, @@ -140,11 +139,9 @@ desc = "A uniform jacket from the United Federation. Set phasers to awesome." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE icon_state = "fedcoat" item_state = "fedcoat" - mutantrace_variation = NO_MUTANTRACE_VARIATION - + mutantrace_variation = NONE blood_overlay_type = "coat" body_parts_covered = CHEST|GROIN|ARMS allowed = list( @@ -207,7 +204,6 @@ desc = "A modern uniform jacket from the United Federation." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE icon_state = "fedmodern" item_state = "fedmodern" body_parts_covered = CHEST|GROIN|ARMS @@ -240,7 +236,6 @@ icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "fedcapofficer" alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE item_state = "fedcapofficer" //Variants diff --git a/modular_citadel/code/modules/clothing/under/turtlenecks.dm b/modular_citadel/code/modules/clothing/under/turtlenecks.dm index fd13da11e9..84cfa97a59 100644 --- a/modular_citadel/code/modules/clothing/under/turtlenecks.dm +++ b/modular_citadel/code/modules/clothing/under/turtlenecks.dm @@ -16,7 +16,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) can_adjust = TRUE alt_covers_chest = TRUE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/structure/closet/secure_closet/CMO/PopulateContents() //This is placed here because it's a very specific addition for a very specific niche ..() @@ -29,7 +29,7 @@ item_state = "bl_suit" item_color = "tactifool" has_sensor = TRUE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/syndicate/tacticool @@ -47,7 +47,7 @@ can_adjust = TRUE icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/bb_sweater/black name = "black sweater" diff --git a/modular_citadel/code/modules/clothing/under/under.dm b/modular_citadel/code/modules/clothing/under/under.dm index dcc6323f62..40db06ba56 100644 --- a/modular_citadel/code/modules/clothing/under/under.dm +++ b/modular_citadel/code/modules/clothing/under/under.dm @@ -13,7 +13,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' item_state = "r_suit" can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/captain/femformal name ="captain's female formal outfit" @@ -26,4 +26,4 @@ can_adjust = FALSE sensor_mode = SENSOR_COORDS //it's still a captain's suit nerd random_sensor = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 274a345369..ff32e9681e 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -1,7 +1,7 @@ //For custom items. -// Unless there's a digitigrade version make sure you add mutantrace_variation = NO_MUTANTRACE_VARIATION to all clothing/under and shoes - Pooj +// Unless there's a digitigrade version make sure you add mutantrace_variation = NONE to all clothing/under and shoes - Pooj // Digitigrade stuff is uniform_digi.dmi and digishoes.dmi in icons/mob /obj/item/custom/ceb_soap @@ -85,7 +85,7 @@ item_state = "darkcarapace" blood_overlay_type = "armor" dog_fashion = /datum/dog_fashion/back - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) @@ -118,7 +118,7 @@ icon_state = "labred" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "labred" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/toggle/labcoat/labredblack name = "Black and Red Coat" @@ -127,7 +127,7 @@ icon_state = "labredblack" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "labredblack" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/toy/plush/carrot name = "carrot plushie" @@ -233,7 +233,7 @@ alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "hos-g" body_parts_covered = CHEST|GROIN|ARMS|LEGS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/reagent_containers/food/drinks/flask/russian name = "russian flask" @@ -277,14 +277,14 @@ fitted = NO_FEMALE_UNIFORM alternate_worn_layer = ABOVE_SHOES_LAYER can_adjust = 0 - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/sneakers/pink icon = 'icons/obj/custom.dmi' icon_state = "pink" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "pink" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/neck/tie/bloodred name = "Blood Red Tie" @@ -301,7 +301,7 @@ icon_state = "puffydress" item_state = "puffydress" body_parts_covered = CHEST|GROIN|LEGS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/vermillion name = "vermillion clothing" @@ -311,11 +311,11 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/bb_sweater/black/naomi name = "worn black sweater" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE desc = "A well-loved sweater, showing signs of several cleanings and re-stitchings. And a few stains. Is that cat fur?" /obj/item/clothing/neck/petcollar/naomi @@ -345,7 +345,7 @@ icon_state = "rdcoat" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "rdcoat" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/custom/leechjar name = "Jar of Leeches" @@ -379,7 +379,7 @@ desc = "Comfy Lucky Jackboots with the word Luck on them." item_state = "luckyjack" icon_state = "luckyjack" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/lunasune name = "Divine Robes" @@ -388,7 +388,7 @@ desc = "Heavenly robes of the kitsune Luna Pumpkin,you can feel radiance coming from them." item_state = "Divine_robes" icon_state = "Divine_robes" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/leoskimpy name = "Leon's Skimpy Outfit" @@ -397,7 +397,7 @@ desc = "A rather skimpy outfit." item_state = "shark_cloth" icon_state = "shark_cloth" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/mimeoveralls name = "Mime's Overalls" @@ -406,7 +406,7 @@ desc = "A less-than-traditional mime's attire, completed by a set of dorky-looking overalls." item_state = "moveralls" icon_state = "moveralls" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/hooded/cloak/zuliecloak name = "Project: Zul-E" @@ -418,7 +418,7 @@ hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak body_parts_covered = CHEST|GROIN|ARMS slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong? - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/hooded/cloakhood/zuliecloak name = "NT Special Issue" @@ -428,7 +428,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' flags_inv = HIDEEARS|HIDEHAIR - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/blackredgold name = "Multicolor Coat" @@ -438,7 +438,7 @@ icon_state = "redgoldjacket" item_state = "redgoldjacket" body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/kimono name = "Blue Kimono" @@ -448,7 +448,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/commjacket name = "Dusty Commisar's Cloak" @@ -458,7 +458,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/mw2_russian_para name = "Russian Paratrooper Jumper" @@ -467,7 +467,7 @@ item_state = "mw2_russian_para" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/gloves/longblackgloves name = "Luna's Gauntlets" @@ -484,7 +484,7 @@ item_state = "trendy_fit" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/blueberet name = "Atmos Beret" From 3fcb7808fdbb1e066ecfe0ac21e07abc9a5d5435 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 8 Dec 2019 09:18:17 +0100 Subject: [PATCH 02/78] args --- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/melee/energy.dm | 2 +- code/game/objects/items/storage/belt.dm | 2 +- code/game/objects/items/tanks/watertank.dm | 2 +- code/game/objects/items/tools/screwdriver.dm | 2 +- code/game/objects/items/toys.dm | 2 +- code/game/objects/items/twohanded.dm | 2 +- code/game/objects/structures/bedsheet_bin.dm | 2 +- .../antagonists/clockcult/clock_items/clockwork_slab.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 2 +- code/modules/clothing/glasses/_glasses.dm | 2 +- code/modules/clothing/gloves/_gloves.dm | 2 +- code/modules/clothing/head/_head.dm | 2 +- code/modules/clothing/head/hardhat.dm | 2 +- code/modules/clothing/head/misc_special.dm | 2 +- code/modules/clothing/masks/_masks.dm | 2 +- code/modules/clothing/neck/_neck.dm | 4 ++-- code/modules/clothing/shoes/_shoes.dm | 2 +- code/modules/clothing/spacesuits/hardsuit.dm | 6 +++--- code/modules/clothing/spacesuits/plasmamen.dm | 2 +- code/modules/clothing/under/_under.dm | 2 +- code/modules/food_and_drinks/pizzabox.dm | 2 +- code/modules/mining/equipment/explorer_gear.dm | 2 +- code/modules/mob/living/carbon/update_icons.dm | 2 +- modular_citadel/code/modules/clothing/clothing.dm | 2 +- .../code/modules/clothing/suits/polychromic_cloaks.dm | 2 +- .../code/modules/clothing/under/polychromic_clothes.dm | 2 +- .../code/modules/projectiles/guns/energy/energy_gun.dm | 2 +- modular_citadel/code/modules/projectiles/guns/pumpenergy.dm | 2 +- 29 files changed, 32 insertions(+), 32 deletions(-) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 7a83893f8b..d697092565 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -308,7 +308,7 @@ block_chance = 50 var/shield_icon = "shield-red" -/obj/item/nullrod/staff/worn_overlays(isinhands) +/obj/item/nullrod/staff/worn_overlays(isinhands, icon_file, style_flags = NONE) . = list() if(isinhands) . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 16262d61c3..d6d4eb2d95 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -339,7 +339,7 @@ . = ..() . += "Alt-click to recolor it." -/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) +/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(active) if(isinhands) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 3a4579d3f8..b9f915f2be 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -24,7 +24,7 @@ add_overlay(M) ..() -/obj/item/storage/belt/worn_overlays(isinhands, icon_file) +/obj/item/storage/belt/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands && worn_overlays) for(var/obj/item/I in contents) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index f3be8cefc8..4d74ad6ef0 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -376,7 +376,7 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) add_overlay(filling) -/obj/item/reagent_containers/chemtank/worn_overlays(var/isinhands = FALSE) //apply chemcolor and level +/obj/item/reagent_containers/chemtank/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) //apply chemcolor and level . = list() //inhands + reagent_filling if(!isinhands && reagents.total_volume) diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 91a94e05c3..599577a85b 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -53,7 +53,7 @@ base_overlay.appearance_flags = RESET_COLOR add_overlay(base_overlay) -/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(isinhands && random_color) var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head") diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 08c43f0437..cf891f5a47 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -353,7 +353,7 @@ update_light() return TRUE -/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) +/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(active) if(isinhands) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index dd7d46d0d7..970c63281e 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -556,7 +556,7 @@ update_light() return TRUE -/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file) +/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(isinhands) var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem") diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 82a0c4d32f..9935fc8ec5 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -252,7 +252,7 @@ LINEN BINS add_overlay(g_mouth) add_overlay(g_eyes) -/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = ..() if(!isinhands) . += mutable_appearance(icon_file, g_mouth) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index d4d5349c70..b12c72b4af 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -103,7 +103,7 @@ . = ..() addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later -/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(isinhands && item_state && inhand_overlay) var/mutable_appearance/M = mutable_appearance(icon_file, "slab_[inhand_overlay]") diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 20d571707d..402de2eb78 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -424,7 +424,7 @@ return 1 return 0 -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands, icon_file, style_flags = NONE) . = list() if(!isinhands && current_charges) . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 206165a495..473aabb3e0 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -300,7 +300,7 @@ add_atom_colour("#[user.eye_color]", FIXED_COLOUR_PRIORITY) colored_before = TRUE -/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, file2use) +/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands && ishuman(loc) && !colored_before) var/mob/living/carbon/human/H = loc diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index ac491c2bc5..87d9f359eb 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -24,7 +24,7 @@ user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!") return OXYLOSS -/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE) +/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 9849405f24..a875561056 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -48,7 +48,7 @@ -/obj/item/clothing/head/worn_overlays(isinhands = FALSE) +/obj/item/clothing/head/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 2be10050db..51822cab77 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -125,7 +125,7 @@ playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing update_icon() -/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands) +/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands) . += mutable_appearance('icons/mob/head.dmi', "weldhelmet") diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 331bd02a1e..ffa96cb69a 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -206,7 +206,7 @@ M.color = hair_color add_overlay(M) -/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, file2use) +/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style] diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 5931a7d1ce..3b2edce795 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -28,7 +28,7 @@ /obj/item/clothing/mask/proc/handle_speech() -/obj/item/clothing/mask/worn_overlays(isinhands = FALSE) +/obj/item/clothing/mask/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(body_parts_covered & HEAD) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 2356bb16eb..47ee5cdb9f 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -6,7 +6,7 @@ strip_delay = 40 equip_delay_other = 40 -/obj/item/clothing/neck/worn_overlays(isinhands = FALSE) +/obj/item/clothing/neck/worn_overlays(isinhands = FALSE, icon_flag, style_flags = NONE) . = list() if(!isinhands) if(body_parts_covered & HEAD) @@ -190,7 +190,7 @@ tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) name = "[initial(name)] - [tagname]" -/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file) +/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 9d370ff522..eaaf4b90ce 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -49,7 +49,7 @@ last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works last_blood_DNA = blood_dna[blood_dna.len] -/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, style_flags) +/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) var/bloody = FALSE diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 113b8bdd4d..dd3dd70a0c 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -748,7 +748,7 @@ var/mob/living/carbon/human/C = loc C.update_inv_wear_suit() -/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, style_flags) +/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/file2use = style_flags & STYLE_ALL_TAURIC ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/effects.dmi' @@ -911,7 +911,7 @@ add_overlay(helm_overlay) -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) @@ -948,7 +948,7 @@ add_overlay(suit_overlay) -/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 7aa51155fb..fee8dbce33 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -67,7 +67,7 @@ var/datum/action/A=X A.UpdateButtonIcon() -/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file) +/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands && on) . += mutable_appearance(icon_file, light_overlay) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 980a98786d..0322613c11 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -16,7 +16,7 @@ var/mutable_appearance/accessory_overlay mutantrace_variation = STYLE_DIGITIGRADE -/obj/item/clothing/under/worn_overlays(isinhands = FALSE) +/obj/item/clothing/under/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index 355660ecec..da67eaa9cf 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -86,7 +86,7 @@ tag_overlay.pixel_y = boxes.len * 3 add_overlay(tag_overlay) -/obj/item/pizzabox/worn_overlays(isinhands, icon_file) +/obj/item/pizzabox/worn_overlays(isinhands, icon_file, style_flags = NONE) . = list() var/current_offset = 2 if(isinhands) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index c83c7cc873..86889c5d00 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -116,7 +116,7 @@ glass_overlay.appearance_flags = RESET_COLOR add_overlay(glass_overlay) -/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands) +/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/mutable_appearance/M = mutable_appearance('icons/mob/head.dmi', "hostile_env_glass") diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 66be8058f1..5e3eccce4a 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -228,7 +228,7 @@ //Overlays for the worn overlay so you can overlay while you overlay //eg: ammo counters, primed grenade flashing, etc. //"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file -/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() diff --git a/modular_citadel/code/modules/clothing/clothing.dm b/modular_citadel/code/modules/clothing/clothing.dm index 843b7a84c9..59cf26d370 100644 --- a/modular_citadel/code/modules/clothing/clothing.dm +++ b/modular_citadel/code/modules/clothing/clothing.dm @@ -12,7 +12,7 @@ // Don't forget to append the appropriate typepath! Also, refer to polychromic_clothes.dm for example implementations /* -/obj/item/clothing/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon +/obj/item/clothing/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm index c6b153fd36..ade6cee3ba 100644 --- a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm +++ b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm @@ -13,7 +13,7 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" -/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon +/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm b/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm index 19b0eb686e..52229ea0af 100644 --- a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm +++ b/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm @@ -29,7 +29,7 @@ can_adjust = FALSE mutantrace_variation = NONE // because I'm too lazy to port these to digi-compatible and to prove a point from /tg/ whining - Pooj -/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon +/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index 89e086687a..2c527ac713 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -43,7 +43,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user) body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1) update_icon() -obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file) +obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(isinhands) var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body") diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm index 735c0890af..47de736c3b 100644 --- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm +++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm @@ -99,7 +99,7 @@ . = ..() . += "Alt-click to change firing modes." -/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file) //ammo counter for inhands +/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file, style_flags = NONE) //ammo counter for inhands . = ..() var/ratio = CEILING((cell.charge / cell.maxcharge) * charge_sections, 1) var/obj/item/ammo_casing/energy/shot = ammo_type[select] From 7d7bcc7c3448341ae2aba7ba0afaad70636d5f10 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 13 Dec 2019 02:26:59 +0100 Subject: [PATCH 03/78] Fixes and ready up. --- code/__DEFINES/inventory.dm | 15 ++--- code/modules/client/preferences.dm | 4 +- .../mob/living/carbon/human/species.dm | 24 ++++---- .../human/species_types/lizardpeople.dm | 10 --- .../mob/living/carbon/human/update_icons.dm | 61 ++++++++++--------- code/modules/surgery/bodyparts/helpers.dm | 9 +-- 6 files changed, 54 insertions(+), 69 deletions(-) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 8611a22df5..2756be76fb 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -130,21 +130,16 @@ #define NECK (1<<11) #define FULL_BODY (~0) +//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in +#define NORMAL_STYLE 0 +#define ALT_STYLE 1 + //flags for female outfits: How much the game can safely "take off" the uniform without it looking weird #define NO_FEMALE_UNIFORM 0 #define FEMALE_UNIFORM_FULL 1 #define FEMALE_UNIFORM_TOP 2 -//Helmets/masks for muzzles or beaks -#define NORMAL_FACED 0 -#define MUZZLE_FACED 1 -#define BEAKED_FACED 2 - -//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in -#define NORMAL_STYLE 0 -#define ALT_STYLE 1 - -//flags for outfits that have mutantrace variants +//flags for outfits that have mutantrace variants: These are hard sprited too. #define STYLE_DIGITIGRADE (1<<0) //jumpsuits, suits and shoes #define STYLE_MUZZLE (1<<1) //hats or masks #define STYLE_SNEK_TAURIC (1<<2) //taur-friendly suits diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8a3cdbbb2e..c476e5a310 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2319,9 +2319,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) pref_species.species_traits -= DIGITIGRADE if(DIGITIGRADE in pref_species.species_traits) - character.Digitigrade_Leg_Swap(FALSE, TRUE) + character.Digitigrade_Leg_Swap(FALSE) else - character.Digitigrade_Leg_Swap(TRUE, TRUE) + character.Digitigrade_Leg_Swap(TRUE) //let's be sure the character updates if(icon_updates) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1c81198d85..98bdfbf36b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -290,7 +290,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) // this needs to be FIRST because qdel calls update_body which checks if we have DIGITIGRADE legs or not and if not then removes DIGITIGRADE from species_traits if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) - species_traits += DIGITIGRADE + species_traits |= DIGITIGRADE if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) @@ -608,34 +608,34 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + var/tauric = H.dna.features["taur"] && H.dna.features["taur"] != "None" if("tail_lizard" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "tail_lizard" if("waggingtail_lizard" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "waggingtail_lizard" else if ("tail_lizard" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_lizard" if("tail_human" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "tail_human" - if("waggingtail_human" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "waggingtail_human" else if ("tail_human" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_human" if("spines" in mutant_bodyparts) - if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) + if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) bodyparts_to_add -= "spines" if("waggingspines" in mutant_bodyparts) - if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) + if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) bodyparts_to_add -= "waggingspines" else if ("tail" in mutant_bodyparts) bodyparts_to_add -= "waggingspines" @@ -685,11 +685,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Other Races if("mam_tail" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || (H.dna.features["taur"] && H.dna.features["taur"] != "None")) bodyparts_to_add -= "mam_tail" if("mam_waggingtail" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || !H.dna.features["taur"] || H.dna.features["taur"] == "None") + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || (H.dna.features["taur"] && H.dna.features["taur"] != "None")) bodyparts_to_add -= "mam_waggingtail" else if ("mam_tail" in mutant_bodyparts) bodyparts_to_add -= "mam_waggingtail" @@ -703,7 +703,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) bodyparts_to_add -= "mam_snouts" if("taur" in mutant_bodyparts) - if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) + if(!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) bodyparts_to_add -= "taur" //END EDIT @@ -720,7 +720,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) species_traits += DIGITIGRADE var/should_be_squished = FALSE if(H.wear_suit) - if(!(H.wear_suit.mutantrace_variation & STYLE_DIGITIGRADE)) //we got digitigrade suits now fam + if(!(H.wear_suit.mutantrace_variation & STYLE_DIGITIGRADE) || (tauric && (H.wear_suit.mutantrace_variation & STYLE_ALL_TAURIC))) //digitigrade/taur suits should_be_squished = TRUE if(H.w_uniform && !H.wear_suit) if(!(H.w_uniform.mutantrace_variation & STYLE_DIGITIGRADE)) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 82096dd725..d849f58cb8 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -73,16 +73,6 @@ mutant_bodyparts |= "spines" H.update_body() -/datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) - if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) - species_traits += DIGITIGRADE - return ..() - -/datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) - if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") - species_traits -= DIGITIGRADE - return ..() - /* Lizard subspecies: ASHWALKERS */ diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 439428d979..a6132eb0e4 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -104,45 +104,46 @@ There are several things that need to be remembered: var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM] inv.update_icon() - var/obj/item/clothing/under/U = w_uniform - U.screen_loc = ui_iclothing - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += w_uniform - update_observer_view(w_uniform,1) + if(istype(w_uniform, /obj/item/clothing/under)) + var/obj/item/clothing/under/U = w_uniform + U.screen_loc = ui_iclothing + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += w_uniform + update_observer_view(w_uniform,1) - if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) - return + if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) + return - var/t_color = U.item_color - if(!t_color) - t_color = U.icon_state - if(U.adjusted == ALT_STYLE) - t_color = "[t_color]_d" + var/t_color = U.item_color + if(!t_color) + t_color = U.icon_state + if(U.adjusted == ALT_STYLE) + t_color = "[t_color]_d" - var/alt_worn = U.alternate_worn_icon - var/variant_flag = NONE + var/alt_worn = U.alternate_worn_icon + var/variant_flag = NONE - if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE) - alt_worn = 'icons/mob/uniform_digi.dmi' - variant_flag |= STYLE_DIGITIGRADE + if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE) + alt_worn = 'icons/mob/uniform_digi.dmi' + variant_flag |= STYLE_DIGITIGRADE - var/mutable_appearance/uniform_overlay + var/mutable_appearance/uniform_overlay - if(dna && dna.species.sexes) - var/G = (gender == FEMALE) ? "f" : "m" - if(G == "f" && U.fitted != NO_FEMALE_UNIFORM) - uniform_overlay = U.build_worn_icon("[t_color]", UNIFORM_LAYER, alt_worn ? alt_worn : 'icons/mob/uniform.dmi', FALSE, U.fitted, variant_flag) + if(dna && dna.species.sexes) + var/G = (gender == FEMALE) ? "f" : "m" + if(G == "f" && U.fitted != NO_FEMALE_UNIFORM) + uniform_overlay = U.build_worn_icon("[t_color]", UNIFORM_LAYER, alt_worn ? alt_worn : 'icons/mob/uniform.dmi', FALSE, U.fitted, variant_flag) - if(!uniform_overlay) - uniform_overlay = U.build_worn_icon("[t_color]", UNIFORM_LAYER, alt_worn ? alt_worn : 'icons/mob/uniform.dmi', FALSE, style_flags = variant_flag) + if(!uniform_overlay) + uniform_overlay = U.build_worn_icon("[t_color]", UNIFORM_LAYER, alt_worn ? alt_worn : 'icons/mob/uniform.dmi', FALSE, style_flags = variant_flag) - if(OFFSET_UNIFORM in dna.species.offset_features) - uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] - uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2] - overlays_standing[UNIFORM_LAYER] = uniform_overlay + if(OFFSET_UNIFORM in dna.species.offset_features) + uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] + uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2] + overlays_standing[UNIFORM_LAYER] = uniform_overlay apply_overlay(UNIFORM_LAYER) update_mutant_bodyparts() @@ -671,6 +672,8 @@ generate/load female uniform sprites matching all previously decided variables . += "-robotic" if(BP.use_digitigrade) . += "-digitigrade[BP.use_digitigrade]" + if(BP.digitigrade_type) + . += "-[BP.digitigrade_type]" if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" if(BP.body_markings) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 7cedfc80d7..3dc337f754 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -286,15 +286,12 @@ if("orange") . = "ffc905" -/mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back, update = FALSE) - var/body_plan_changed = FALSE +/mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back) for(var/X in bodyparts) var/obj/item/bodypart/O = X if((O.body_part == LEG_LEFT || O.body_part == LEG_RIGHT) && ((!O.use_digitigrade && !swap_back) || (O.use_digitigrade && swap_back))) - O.use_digitigrade = FULL_DIGITIGRADE - body_plan_changed = TRUE - if(update && body_plan_changed) // most times this proc is called on on_species_gain and on_species_loss, so set_species() already handles the update. - update_body() + O.use_digitigrade = swap_back ? FULL_DIGITIGRADE : NOT_DIGITIGRADE + O.update_limb() if(ishuman(src)) var/mob/living/carbon/human/H = src From 284202a0929c67946a01d27b5b0ae97768bd4cbe Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 13 Dec 2019 02:37:51 +0100 Subject: [PATCH 04/78] two lines. --- code/modules/mob/living/carbon/human/species.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 98bdfbf36b..abe76b122d 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -685,11 +685,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Other Races if("mam_tail" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || (H.dna.features["taur"] && H.dna.features["taur"] != "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "mam_tail" if("mam_waggingtail" in mutant_bodyparts) - if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || (H.dna.features["taur"] && H.dna.features["taur"] != "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "mam_waggingtail" else if ("mam_tail" in mutant_bodyparts) bodyparts_to_add -= "mam_waggingtail" From e74339ce8b7733ee6da97251079264ffa566b5ad Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 23 Dec 2019 04:24:13 +0100 Subject: [PATCH 05/78] Jfc that's a lot of work! --- code/__HELPERS/cmp.dm | 3 + code/datums/datumvars.dm | 24 +- code/datums/diseases/_disease.dm | 2 +- code/datums/diseases/advance/advance.dm | 26 +- .../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 | 15 +- .../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/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/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/rhumba_beat.dm | 2 +- code/datums/diseases/transformation.dm | 20 +- code/datums/diseases/tuberculosis.dm | 2 +- code/datums/diseases/wizarditis.dm | 2 +- code/datums/recipe.dm | 2 +- code/datums/status_effects/debuffs.dm | 2 +- code/datums/traits/negative.dm | 2 +- code/game/machinery/Sleeper.dm | 24 +- code/game/machinery/bloodbankgen.dm | 4 +- code/game/machinery/computer/dna_console.dm | 4 +- code/game/machinery/limbgrower.dm | 16 +- .../mecha/equipment/tools/medical_tools.dm | 17 +- code/game/mecha/equipment/tools/work_tools.dm | 2 +- code/game/mecha/mecha_defense.dm | 6 +- .../effects/decals/cleanable/aliens.dm | 2 +- .../objects/effects/decals/cleanable/gibs.dm | 9 +- .../objects/effects/decals/cleanable/misc.dm | 14 +- .../effects/decals/cleanable/robots.dm | 6 +- .../effects/effect_system/effects_foam.dm | 2 +- code/game/objects/effects/mines.dm | 2 +- code/game/objects/items/RSF.dm | 2 +- code/game/objects/items/airlock_painter.dm | 4 +- code/game/objects/items/cigs_lighters.dm | 24 +- code/game/objects/items/crayons.dm | 30 +- .../objects/items/devices/dogborg_sleeper.dm | 7 +- code/game/objects/items/devices/scanners.dm | 27 +- code/game/objects/items/extinguisher.dm | 2 +- .../objects/items/grenades/chem_grenade.dm | 114 +++--- .../objects/items/grenades/clusterbuster.dm | 6 +- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/hot_potato.dm | 2 +- .../objects/items/implants/implant_misc.dm | 2 +- code/game/objects/items/kitchen.dm | 4 +- code/game/objects/items/mop.dm | 4 +- code/game/objects/items/religion.dm | 2 +- .../objects/items/robot/robot_upgrades.dm | 8 +- 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/structures/divine.dm | 2 +- code/game/objects/structures/watercloset.dm | 6 +- code/game/turfs/turf.dm | 8 +- .../abductor/equipment/abduction_gear.dm | 2 +- .../antagonists/blob/blob/blobs/blob_mobs.dm | 4 +- .../changeling/powers/adrenaline.dm | 2 +- .../antagonists/changeling/powers/linglink.dm | 2 +- .../changeling/powers/mutations.dm | 2 +- .../antagonists/changeling/powers/panacea.dm | 8 +- .../changeling/powers/tiny_prick.dm | 12 +- .../clockcult/clock_helpers/slab_abilities.dm | 6 +- code/modules/antagonists/cult/cult_items.dm | 4 +- code/modules/antagonists/cult/ritual.dm | 8 +- code/modules/antagonists/devil/devil.dm | 4 +- .../nukeop/equipment/nuclearbomb.dm | 2 +- .../revenant/revenant_abilities.dm | 2 +- .../awaymissions/mission_code/snowdin.dm | 2 +- code/modules/cargo/bounties/reagent.dm | 6 +- code/modules/clothing/glasses/phantomthief.dm | 2 +- code/modules/clothing/outfits/standard.dm | 2 +- code/modules/events/vent_clog.dm | 88 +++-- code/modules/events/wizard/invincible.dm | 2 +- .../drinks/drinks/drinkingglass.dm | 2 +- .../modules/food_and_drinks/food/condiment.dm | 4 +- .../food_and_drinks/food/customizables.dm | 2 +- code/modules/food_and_drinks/food/snacks.dm | 14 +- .../food_and_drinks/food/snacks_bread.dm | 12 +- .../food_and_drinks/food/snacks_egg.dm | 2 +- .../food_and_drinks/food/snacks_pastry.dm | 15 +- .../food_and_drinks/food/snacks_pie.dm | 4 +- .../food_and_drinks/food/snacks_soup.dm | 12 +- .../kitchen_machinery/deep_fryer.dm | 8 +- .../kitchen_machinery/food_cart.dm | 10 +- .../kitchen_machinery/gibber.dm | 2 +- .../kitchen_machinery/icecream_vat.dm | 40 +-- .../kitchen_machinery/microwave.dm | 4 +- .../food_and_drinks/recipes/drinks_recipes.dm | 4 +- code/modules/holiday/halloween/jacqueen.dm | 6 +- .../hydroponics/beekeeping/honeycomb.dm | 6 +- code/modules/hydroponics/fermenting_barrel.dm | 2 +- code/modules/hydroponics/grown.dm | 10 +- .../hydroponics/grown/cocoa_vanilla.dm | 4 +- code/modules/hydroponics/grown/kudzu.dm | 14 +- code/modules/hydroponics/grown/replicapod.dm | 4 +- code/modules/hydroponics/hydroponics.dm | 204 +++++------ code/modules/hydroponics/plant_genes.dm | 4 +- code/modules/hydroponics/seeds.dm | 2 +- .../integrated_electronics/passive/power.dm | 7 +- code/modules/mining/lavaland/ash_flora.dm | 2 +- code/modules/mob/living/blood.dm | 2 +- code/modules/mob/living/bloodcrawl.dm | 4 +- code/modules/mob/living/brain/brain_item.dm | 16 +- .../modules/mob/living/carbon/alien/organs.dm | 4 +- .../carbon/alien/special/alien_embryo.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 4 +- .../mob/living/carbon/carbon_defense.dm | 8 +- .../mob/living/carbon/human/examine.dm | 4 +- .../mob/living/carbon/human/species.dm | 2 +- .../carbon/human/species_types/dwarves.dm | 14 +- .../carbon/human/species_types/flypeople.dm | 4 +- .../carbon/human/species_types/golems.dm | 12 +- .../carbon/human/species_types/mushpeople.dm | 4 +- .../carbon/human/species_types/podpeople.dm | 4 +- .../carbon/human/species_types/synths.dm | 4 +- code/modules/mob/living/carbon/life.dm | 6 +- .../mob/living/carbon/monkey/monkey.dm | 2 +- code/modules/mob/living/living.dm | 6 +- code/modules/mob/living/living_defense.dm | 2 +- .../mob/living/silicon/robot/robot_modules.dm | 6 +- .../mob/living/simple_animal/astral.dm | 2 +- .../mob/living/simple_animal/bot/medbot.dm | 42 +-- .../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/snake.dm | 2 +- .../mob/living/simple_animal/hostile/bees.dm | 17 +- .../simple_animal/hostile/giant_spider.dm | 10 +- .../simple_animal/hostile/jungle/leaper.dm | 4 +- .../hostile/mining_mobs/gutlunch.dm | 4 +- .../living/simple_animal/hostile/mushroom.dm | 6 +- .../mob/living/simple_animal/slime/slime.dm | 4 +- .../suit/n_suit_verbs/ninja_adrenaline.dm | 4 +- code/modules/ninja/suit/suit_attackby.dm | 8 +- code/modules/paperwork/pen.dm | 6 +- code/modules/power/cell.dm | 2 +- code/modules/power/lighting.dm | 2 +- .../ammunition/ballistic/shotgun.dm | 10 +- .../projectile/bullets/dart_syringe.dm | 31 +- code/modules/reagents/chem_wiki_render.dm | 4 +- code/modules/reagents/chemistry/holder.dm | 106 +++--- .../chemistry/machinery/chem_dispenser.dm | 333 +++++++++--------- .../chemistry/machinery/chem_master.dm | 26 +- .../chemistry/machinery/chem_synthesizer.dm | 10 +- .../reagents/chemistry/machinery/pandemic.dm | 10 +- .../chemistry/machinery/reagentgrinder.dm | 22 +- code/modules/reagents/chemistry/reagents.dm | 27 +- .../chemistry/reagents/alcohol_reagents.dm | 20 +- .../chemistry/reagents/blob_reagents.dm | 10 +- .../chemistry/reagents/drink_reagents.dm | 12 +- .../chemistry/reagents/food_reagents.dm | 20 +- .../chemistry/reagents/medicine_reagents.dm | 49 +-- .../chemistry/reagents/other_reagents.dm | 28 +- .../reagents/pyrotechnic_reagents.dm | 8 +- .../chemistry/reagents/toxin_reagents.dm | 26 +- .../reagents/chemistry/recipes/medicine.dm | 14 +- .../chemistry/recipes/pyrotechnics.dm | 28 +- code/modules/reagents/reagent_containers.dm | 2 +- .../reagents/reagent_containers/blood_pack.dm | 4 +- .../reagents/reagent_containers/borghydro.dm | 30 +- .../reagents/reagent_containers/bottle.dm | 5 +- .../reagents/reagent_containers/hypovial.dm | 37 +- .../reagents/reagent_containers/rags.dm | 4 +- .../reagents/reagent_containers/spray.dm | 14 +- code/modules/reagents/reagent_dispenser.dm | 29 +- .../research/designs/biogenerator_designs.dm | 6 +- code/modules/research/experimentor.dm | 14 +- .../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 +- .../crossbreeding/_status_effects.dm | 4 +- .../xenobiology/crossbreeding/burning.dm | 14 +- .../xenobiology/crossbreeding/charged.dm | 4 +- .../xenobiology/crossbreeding/chilling.dm | 6 +- .../xenobiology/crossbreeding/consuming.dm | 6 +- .../xenobiology/crossbreeding/industrial.dm | 8 +- .../xenobiology/crossbreeding/regenerative.dm | 8 +- .../crossbreeding/selfsustaining.dm | 6 +- .../research/xenobiology/xenobiology.dm | 50 +-- .../surgery/advanced/necrotic_revival.dm | 2 +- .../modules/surgery/advanced/viral_bonding.dm | 2 +- code/modules/surgery/embalming.dm | 2 +- code/modules/surgery/graft_synthtissue.dm | 6 +- code/modules/surgery/organs/appendix.dm | 2 +- code/modules/surgery/organs/augments_chest.dm | 2 +- code/modules/surgery/organs/heart.dm | 4 +- code/modules/surgery/organs/liver.dm | 16 +- code/modules/surgery/organs/lungs.dm | 12 +- code/modules/vehicles/cars/clowncar.dm | 2 +- code/modules/vore/resizing/sizechemicals.dm | 16 +- .../code/datums/status_effects/chems.dm | 22 +- .../code/modules/arousal/genitals.dm | 2 +- .../code/modules/arousal/organs/breasts.dm | 4 +- .../code/modules/arousal/organs/testicles.dm | 2 +- .../code/modules/arousal/organs/womb.dm | 2 +- .../reagents/chemistry/reagents/MKUltra.dm | 2 +- .../reagents/chemistry/reagents/SDGF.dm | 10 +- .../reagents/chemistry/reagents/astrogen.dm | 4 +- .../chemistry/reagents/eigentstasium.dm | 2 +- .../chemistry/reagents/enlargement.dm | 16 +- .../chemistry/reagents/fermi_reagents.dm | 18 +- .../reagents/chemistry/reagents/healing.dm | 14 +- .../reagents/chemistry/recipes/fermi.dm | 27 +- 217 files changed, 1329 insertions(+), 1288 deletions(-) diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 4a86f57fcd..c95896d853 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -97,6 +97,9 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B) return sorttext(B.sample_object.name, A.sample_object.name) +/proc/cmp_reagents_asc(datum/reagent/a, datum/reagent/b) + return sorttext(initial(b.name),initial(a.name)) + /proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B) var/a_sign = num2sign(initial(A.value) * -1) var/b_sign = num2sign(initial(B.value) * -1) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index feac1de972..dfaa6f061d 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -947,21 +947,25 @@ if(A.reagents) var/chosen_id - var/list/reagent_options = sortList(GLOB.chemical_reagents_list) - switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID")) - if("Enter ID") + switch(alert(usr, "Choose a method.", "Add Reagents", "Search", "Choose from a list", "I'm feeling lucky")) + if("Search") var/valid_id while(!valid_id) - chosen_id = stripped_input(usr, "Enter the ID of the reagent you want to add.") - if(!chosen_id) //Get me out of here! + chosen_id = input(usr, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text + if(isnull(chosen_id)) //Get me out of here! break - for(var/ID in reagent_options) - if(ID == chosen_id) - valid_id = 1 + if(!ispath(text2path(chosen_id))) + chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent))) + if(ispath(chosen_id)) + valid_id = TRUE + else + valid_id = TRUE if(!valid_id) to_chat(usr, "A reagent with that ID doesn't exist!") - if("Choose ID") - chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_options + if("Choose from a list") + chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent) + if("I'm feeling lucky") + chosen_id = pick(subtypesof(/datum/reagent)) if(chosen_id) var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num if(amount) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 8a6966666e..056f99c7a4 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 8d5e915b31..a844254ef9 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -36,37 +36,41 @@ // The order goes from easy to cure to hard to cure. Keep in mind that sentient diseases pick two cures from tier 6 and up, ensure they wont react away in bodies. var/static/list/advance_cures = list( list( // level 1 - "copper", "silver", "iodine", "iron", "carbon" + /datum/reagent/copper, /datum/reagent/silver, /datum/reagent/iodine, /datum/reagent/iron, /datum/reagent/carbon ), list( // level 2 - "potassium", "ethanol", "lithium", "silicon", "bromine" + /datum/reagent/potassium, /datum/reagent/consumable/ethanol, /datum/reagent/lithium, + /datum/reagent/silicon, /datum/reagent/bromine ), list( // level 3 - "sodiumchloride", "sugar", "orangejuice", "tomatojuice", "milk" + /datum/reagent/consumable/sodiumchloride, /datum/reagent/consumable/sugar, /datum/reagent/consumable/orangejuice, + /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/milk ), list( //level 4 - "spaceacillin", "salglu_solution", "epinephrine", "charcoal" + /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, + /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/charcoal ), list( //level 5 - "oil", "synaptizine", "mannitol", "space_drugs", "cryptobiolin" + /datum/reagent/oil, /datum/reagent/medicine/synaptizine, /datum/reagent/medicine/mannitol, + /datum/reagent/drug/space_drugs, /datum/reagent/cryptobiolin ), list( // level 6 - "phenol", "inacusiate", "oculine", "antihol" + /datum/reagent/phenol, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/oculine, /datum/reagent/medicine/antihol ), list( // level 7 - "leporazine", "mindbreaker", "corazone" + /datum/reagent/medicine/leporazine, /datum/reagent/toxin/mindbreaker, /datum/reagent/medicine/corazone ), list( // level 8 - "pax", "happiness", "ephedrine" + /datum/reagent/pax, /datum/reagent/drug/happiness, /datum/reagent/medicine/ephedrine ), list( // level 9 - "lipolicide", "sal_acid" + /datum/reagent/toxin/lipolicide, /datum/reagent/medicine/sal_acid ), list( // level 10 - "haloperidol", "aranesp", "diphenhydramine" + /datum/reagent/medicine/haloperidol, /datum/reagent/drug/aranesp, /datum/reagent/medicine/diphenhydramine ), list( //level 11 - "modafinil", "anacea" + /datum/reagent/medicine/modafinil, /datum/reagent/toxin/anacea ) ) diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index a54b132de1..069c62cf3f 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 f85024a7a9..6429db9439 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.adjustFireLoss(get_stacks/2) 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.adjustFireLoss(get_stacks) 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 c38acc8e9e..d1e9d3fdca 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.adjustBruteLoss(get_damage) 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 8b205db756..d41e0bf225 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -117,8 +117,9 @@ power = 2 /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) + for(var/E in M.reagents.reagent_list) //Not just toxins! + var/datum/reagent/R = E + M.reagents.remove_reagent(R.type, actual_power) if(food_conversion) M.nutrition += 0.3 if(prob(2)) @@ -329,11 +330,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) @@ -392,7 +393,7 @@ plasmamount = environment.gases[/datum/gas/plasma] if(plasmamount && plasmamount > GLOB.meta_gas_visibility[/datum/gas/plasma]) //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 2705e0b168..1f8cc8d7af 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 2d96157bb0..20ecceb224 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 ab64fd515c..edd6f151c9 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 98ae74270b..1028d1fff4 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 22d45ffb29..8bbb05e17c 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -2,7 +2,7 @@ name = "The Cold" max_stages = 3 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 da5e67a4fb..eea3147107 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/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 267dd711a3..972a7f4e18 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 add60c73f1..70bcc67d21 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 e1943937ba..4fc646a590 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 9577ca43d0..1557ddfbd8 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/gbs.dm b/code/datums/diseases/gbs.dm index 0487b1c815..8a6eab6048 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 2389052a54..196cd95f69 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -58,7 +58,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 diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 7c5f05c440..cb00f571aa 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 d9c4b324f6..68e962055a 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 b2241d59ba..392e1bc85f 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 fe099e495b..5854249e54 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/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 52e9c2e19f..da6e7da8df 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Chick Chicky Boom!" - cures = list("plasma") + cures = list(/datum/reagent/toxin/plasma) agent = "Unknown" viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 083a1f9c6c..1c214c8516 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 @@ -272,7 +272,7 @@ /datum/disease/transformation/morph name = "Gluttony's Blessing" cure_text = "nothing" - cures = list("adminordrazine") + 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(/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(/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(/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 788107c4b6..23902603ce 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 b288046380..244cc819d8 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 0ceb4443de..c4d0d6f9c6 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -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/debuffs.dm b/code/datums/status_effects/debuffs.dm index f5f012e7f9..6e8dec4179 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -302,7 +302,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 3319259381..c5217d8e4b 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -289,7 +289,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 diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 520721560a..2b043822f3 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -18,10 +18,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 @@ -106,7 +106,7 @@ return if(is_operational() && occupant) var/datum/reagent/R = pick(reagents.reagent_list) - inject_chem(R.id, occupant) + inject_chem(R.type, occupant) open_machine() //Is this too much? if(severity == EMP_HEAVY) @@ -219,7 +219,7 @@ R = GLOB.chemical_reagents_list[chem] data["synthchems"] += list(list("name" = R.name, "id" = R.id, "synth_allowed" = synth_allowed(chem))) for(var/datum/reagent/R in reagents.reagent_list) - data["chems"] += list(list("name" = R.name, "id" = R.id, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.id))) + data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type))) data["occupant"] = list() var/mob/living/mob_occupant = occupant @@ -289,23 +289,23 @@ open_machine() . = TRUE if("inject") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) var/amount = text2num(params["volume"]) - if(!is_operational() || !mob_occupant) + if(!is_operational() || !mob_occupant || isnull(chem)) 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, amount)) . = TRUE if(scrambled_chems && prob(5)) to_chat(usr, "Chemical system re-route detected, results may not be as expected!") if("synth") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) if(!is_operational()) return reagents.add_reagent(chem_buttons[chem], 10) //other_purity = 0.75 for when the mechanics are in if("purge") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) if(allowed(usr)) if(!is_operational()) return @@ -342,7 +342,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/synth_allowed(chem) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index c92e55084d..39992c59dd 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -130,8 +130,8 @@ beep_stop_pumping() return var/bonus = bag.blood_type == "SY" ? 0 : 5 * efficiency //no infinite loops using synthetics. - reagents.add_reagent("syntheticblood", amount + bonus) - bag.reagents.remove_reagent("blood", amount) + reagents.add_reagent(/datum/reagent/blood/synthetics, amount + bonus) + bag.reagents.remove_reagent(/datum/reagent/blood, amount) update_icon() if(filling) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 394cc4593d..044775fb6b 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -342,9 +342,9 @@ current_screen = href_list["text"] if("rejuv") if(viable_occupant && viable_occupant.reagents) - var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount("potass_iodide") + var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) var/can_add = max(min(REJUVENATORS_MAX - potassiodide_amount, REJUVENATORS_INJECT), 0) - viable_occupant.reagents.add_reagent("potass_iodide", can_add) + viable_occupant.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, can_add) if("setbufferlabel") var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null) if(num && text) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 794509801b..bf9400219b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -89,7 +89,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"]) @@ -100,10 +100,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) @@ -117,8 +117,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) @@ -198,7 +198,7 @@ for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
" + dat += "Purge
" dat += "" return dat @@ -208,12 +208,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 " + 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 ae3fdb15b4..4d6c94ac88 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -191,11 +191,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_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 @@ -228,8 +228,8 @@ M.AdjustStun(-80) M.AdjustKnockdown(-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() @@ -259,7 +259,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() @@ -330,8 +330,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) @@ -445,7 +444,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" @@ -481,7 +480,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 36708fcf90..d4b0be4946 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -171,7 +171,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 62a62b569d..b702f871fc 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -287,9 +287,9 @@ 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) + 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/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index a4d0da1bbe..0c52f57ae9 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -9,7 +9,7 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO - gibs_reagent_id = "liquidxenogibs" + gibs_reagent_id = /datum/reagent/liquidgibs/xeno gibs_bloodtype = "X*" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 03eeca7d0b..9680dc2034 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,7 +6,7 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/body_colors = "#e3ba84" //a default color just in case. - var/gibs_reagent_id = "liquidgibs" + var/gibs_reagent_id = /datum/reagent/liquidgibs var/gibs_bloodtype = "A+" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) @@ -120,7 +120,6 @@ //Lizards /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" - gibs_reagent_id = "liquidgibs" gibs_bloodtype = "L" /obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) @@ -148,7 +147,7 @@ // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." - gibs_reagent_id = "liquidslimegibs" + gibs_reagent_id = /datum/reagent/liquidgibs/slime gibs_bloodtype = "GEL" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) @@ -187,7 +186,7 @@ /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." - gibs_reagent_id = "liquidsyntheticgibs" + gibs_reagent_id = /datum/reagent/liquidgibs/synth gibs_bloodtype = "SY" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) @@ -198,7 +197,7 @@ /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." body_colors = "00ff00" - gibs_reagent_id = "liquidoilgibs" + gibs_reagent_id = /datum/reagent/liquidgibs/oil gibs_bloodtype = "HF" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 9f072c48b6..5395f361ba 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" @@ -126,12 +126,10 @@ playsound(get_turf(src), 'sound/items/drink.ogg', 50, 1) //slurp H.visible_message("[H] extends a small proboscis into the vomit pool, sucking it with a slurping sound.") if(reagents) - for(var/datum/reagent/R in reagents.reagent_list) - if (istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - H.nutrition += nutri_check.nutriment_factor * nutri_check.volume - reagents.remove_reagent(nutri_check.id,nutri_check.volume) + for(var/datum/reagent/consumable/R in reagents.reagent_list) + if(R.nutriment_factor > 0) + H.nutrition += R.nutriment_factor * R.volume + reagents.del_reagent(R.type) reagents.trans_to(H, reagents.total_volume) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 02bf51bdd9..3e94abbf93 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidoilgibs", 5) + reagents.add_reagent(/datum/reagent/liquidgibs, 5) /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 @@ -53,8 +53,8 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() - reagents.add_reagent("oil", 30) - reagents.add_reagent("liquidoilgibs", 5) + reagents.add_reagent(/datum/reagent/oil, 30) + reagents.add_reagent(/datum/reagent/liquidgibs/oil, 5) /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 10ee73915c..5c809a35f7 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -55,7 +55,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 08f698e018..91133234d6 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -136,7 +136,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/items/RSF.dm b/code/game/objects/items/RSF.dm index a68f2ecff6..ba0766de00 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -182,7 +182,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("chloralhydrate", 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 d8a21de35a..083246396b 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/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index cf8d38d9c9..fac79ae414 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -113,7 +113,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lastHolder = null var/smoketime = 300 var/chem_volume = 30 - var/list/list_reagents = list("nicotine" = 15) + var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15) heat = 1000 /obj/item/clothing/mask/cigarette/suicide_act(mob/user) @@ -268,29 +268,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/uplift desc = "An Uplift Smooth brand cigarette." - list_reagents = list("nicotine" = 7.5, "menthol" = 7.5) + list_reagents = list(/datum/reagent/drug/nicotine = 7.5, /datum/reagent/consumable/menthol = 7.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" = 1) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/gold = 1) /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, "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. @@ -313,17 +313,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM src.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" @@ -377,7 +377,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" @@ -719,7 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/Initialize(mapload, param_color) . = ..() create_reagents(chem_volume, NO_REACT) // so it doesn't react until you light it - 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") diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 41ab418cf2..143354b496 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -59,7 +59,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 @@ -485,63 +485,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 @@ -621,7 +621,7 @@ can_change_colour = TRUE gang = TRUE //Gang check is true for all things upon the honored hierarchy of spraycans, except those that are FALSE. - 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 @@ -778,7 +778,7 @@ volume_multiplier = 25 charges = 100 - reagent_contents = list("clf3" = 1) + reagent_contents = list(/datum/reagent/clf3 = 1) actually_paints = FALSE paint_color = "#000000" @@ -791,7 +791,7 @@ use_overlays = FALSE gang = 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) @@ -811,7 +811,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) /obj/item/toy/crayon/spraycan/gang charges = 20 // Charges back to 20, which is the default value for them. diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 9b4842b291..db2b03f2e8 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -12,7 +12,8 @@ var/cleaning = FALSE var/cleaning_cycles = 10 var/patient_laststat = null - var/list/injection_chems = list("antitoxin", "epinephrine", "salbutamol", "bicaridine", "kelotane") + var/list/injection_chems = list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/epinephrine, + /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane) var/eject_port = "ingestion" var/escape_in_progress = FALSE var/message_cooldown @@ -227,8 +228,8 @@ go_out(null, usr) . = TRUE if("inject") - var/chem = params["chem"] - if(!patient) + var/chem = text2path(params["chem"]) + if(!patient || !chem) return inject_chem(chem, usr) . = TRUE diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 00381b9838..12a6d6e96f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -262,7 +262,7 @@ SLIME SCANNER temp_message += " Subject has abnormal brain fuctions." //Astrogen shenanigans - if(H.reagents.has_reagent("astral")) + if(H.reagents.has_reagent(/datum/reagent/fermi/astral)) if(H.mind) temp_message += " Warning: subject may be possesed." else @@ -465,19 +465,18 @@ SLIME SCANNER else msg += "Subject is not addicted to any reagents.\n" - if(M.reagents.has_reagent("fermiTox")) - var/datum/reagent/fermiTox = M.reagents.has_reagent("fermiTox") - switch(fermiTox.volume) - if(5 to 10) - msg += "Subject contains a low amount of toxic isomers.\n" - if(10 to 25) - msg += "Subject contains toxic isomers.\n" - if(25 to 50) - msg += "Subject contains a substantial amount of toxic isomers.\n" - if(50 to 95) - msg += "Subject contains a high amount of toxic isomers.\n" - if(95 to INFINITY) - msg += "Subject contains a extremely dangerous amount of toxic isomers.\n" + var/datum/reagent/impure/fermiTox/F = M.reagents.has_reagent(/datum/reagent/impure/fermiTox) + switch(F?.volume) + if(5 to 10) + msg += "Subject contains a low amount of toxic isomers.\n" + if(10 to 25) + msg += "Subject contains toxic isomers.\n" + if(25 to 50) + msg += "Subject contains a substantial amount of toxic isomers.\n" + if(50 to 95) + msg += "Subject contains a high amount of toxic isomers.\n" + if(95 to INFINITY) + msg += "Subject contains a extremely dangerous amount of toxic isomers.\n" msg += "*---------*" to_chat(user, msg) diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index b69d32617f..4585685cde 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 diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 76d3a9fbf5..b5fee4e8d7 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -332,9 +332,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 @@ -350,9 +350,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 @@ -368,9 +368,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 @@ -386,10 +386,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 @@ -405,9 +405,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 @@ -423,9 +423,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 @@ -442,10 +442,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 @@ -461,11 +461,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 @@ -481,10 +481,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 @@ -493,7 +493,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() . = ..() @@ -501,9 +501,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 @@ -511,17 +511,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" @@ -533,10 +533,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 @@ -551,13 +551,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 @@ -571,11 +571,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 @@ -591,8 +591,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 923361de3c..c16b4a30a1 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/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 7a83893f8b..f2591a6839 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -789,7 +789,7 @@ praying = TRUE if(do_after(user, 20, target = M)) - M.reagents?.add_reagent("holywater", 5) + M.reagents?.add_reagent(/datum/reagent/water/holywater, 5) to_chat(M, "[user]'s prayer to [deity_name] has eased your pain!") M.adjustToxLoss(-5, TRUE, TRUE) M.adjustOxyLoss(-5) diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 40f2741a17..16ac2ad692 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -75,7 +75,7 @@ L.SetKnockdown(0) L.SetSleeping(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 75b0c67798..6cdc5ee824 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -33,7 +33,7 @@ /obj/item/implant/adrenalin/activate() . = ..() uses-- - imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), "You feel a sudden surge of energy!") + imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), "You feel a sudden surge of energy!") to_chat(imp_in, "You feel a sudden surge of energy!") if(!uses) qdel(src) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index ef2aa825e7..6665d91c2b 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -41,10 +41,10 @@ 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] 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 5d384a9346..a8b28f2544 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) A.clean_blood() for(var/obj/effect/O in A) @@ -98,7 +98,7 @@ stamusage = 1 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 ddc49a456c..5fd9600a97 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -98,7 +98,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_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index bf363f959c..85f509a6b3 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -434,15 +434,15 @@ 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") + additional_reagents = list(/datum/reagent/medicine/mannitol, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, + /datum/reagent/medicine/mutadone, /datum/reagent/medicine/haloperidol) /obj/item/borg/upgrade/hypospray/high_strength name = "medical cyborg high-strength hypospray" desc = "An upgrade to the Medical module's hypospray, containing \ stronger versions of existing chemicals." - additional_reagents = list("oxandrolone", "sal_acid", "rezadone", - "pen_acid") + additional_reagents = list(/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/storage/book.dm b/code/game/objects/items/storage/book.dm index c658eee3d5..e47021c1f6 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -163,16 +163,16 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", 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/twohanded/required/cult_bastard) && !iscultist(user)) var/obj/item/twohanded/required/cult_bastard/sword = A to_chat(user, "You begin to exorcise [sword].") diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index f3be8cefc8..a77b47ae41 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -148,7 +148,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" @@ -184,7 +184,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) @@ -436,13 +436,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 65b240c528..f9160b81f5 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() @@ -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 @@ -333,7 +333,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 @@ -377,7 +377,7 @@ ..() 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) /obj/item/weldingtool/advanced name = "advanced welding tool" @@ -390,7 +390,7 @@ /obj/item/weldingtool/advanced/process() if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) ..() #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index b8137d831b..580f961d0b 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/watercloset.dm b/code/game/objects/structures/watercloset.dm index 76c8f7f11f..343b33f964 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 ..() @@ -461,7 +461,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) @@ -536,7 +536,7 @@ return if(istype(O, /obj/item/mop)) - O.reagents.add_reagent("[dispensedreagent]", 5) + O.reagents.add_reagent(dispensedreagent, 5) to_chat(user, "You wet [O] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d618e457b0..ff7e61ad5d 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -554,12 +554,10 @@ clear_reagents_to_vomit_pool(C,V) /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) + for(var/datum/reagent/consumable/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food + if(R.nutriment_factor > 0) + M.reagents.del_reagent(R.type) M.reagents.trans_to(V, M.reagents.total_volume / 10) - for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - 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) //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 433f52306b..aeb803b96a 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -797,7 +797,7 @@ 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/blob/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 3cb90d64bb..182fcea0c2 100644 --- a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -143,9 +143,9 @@ create_reagents(10) if(overmind && overmind.blob_reagent_datum) - reagents.add_reagent(overmind.blob_reagent_datum.id, 10) + reagents.add_reagent(overmind.blob_reagent_datum.type, 10) 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/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm index 256d3e89e3..ba40388844 100644 --- a/code/modules/antagonists/changeling/powers/adrenaline.dm +++ b/code/modules/antagonists/changeling/powers/adrenaline.dm @@ -13,5 +13,5 @@ //Recover from stuns. /obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user) - user.do_adrenaline(0, FALSE, 70, 0, TRUE, list("epinephrine" = 3, "changelingmeth" = 10, "mannitol" = 10, "regen_jelly" = 10, "changelingadrenaline" = 5), "Energy rushes through us.", 0, 0.75, 0) + user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/mannitol = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/changelingadrenaline = 5), "Energy rushes through us.", 0, 0.75, 0) return TRUE \ No newline at end of file diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 971c811074..332f543545 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -58,7 +58,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 92a4f28308..b2ab5caef8 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -500,7 +500,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 8d571d21e3..2a0451bc76 100644 --- a/code/modules/antagonists/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -28,10 +28,10 @@ C.vomit(0, toxic = TRUE) O.forceMove(get_turf(user)) - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("pen_jelly", 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/pen_jelly, 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 c58d934d6d..dc7887eee3 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -104,11 +104,11 @@ var/mob/living/carbon/C = target . = TRUE if(istype(C)) - if(C.reagents.has_reagent("changeling_sting_real")) - C.reagents.add_reagent("changeling_sting_real",120) + if(C.reagents.has_reagent(/datum/reagent/changeling_string)) + C.reagents.add_reagent(/datum/reagent/changeling_string,120) log_combat(user, target, "stung", "transformation sting", ", extending the duration.") else - C.reagents.add_reagent("changeling_sting_real",120,list("desired_dna" = selected_dna.dna)) + C.reagents.add_reagent(/datum/reagent/changeling_string,120,list("desired_dna" = selected_dna.dna)) log_combat(user, target, "stung", "transformation sting", " new identity is '[selected_dna.dna.real_name]'") @@ -243,8 +243,8 @@ /obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "LSD sting") if(target.reagents) - target.reagents.add_reagent("regenerative_materia", 5) - target.reagents.add_reagent("mindbreaker", 5) + target.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 5) + target.reagents.add_reagent(/datum/reagent/toxin/mindbreaker, 5) return TRUE /obj/effect/proc_holder/changeling/sting/cryo @@ -262,5 +262,5 @@ /obj/effect/proc_holder/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 1f616b7dbc..9f2ddfda47 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -100,7 +100,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 @@ -108,7 +108,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") @@ -129,7 +129,7 @@ playsound(targetturf, 'sound/magic/staff_healing.ogg', 50, 1) if(has_holy_water) - L.reagents.remove_reagent("holywater", 1000) + L.reagents.del_reagent(/datum/reagent/water/holywater) remove_ranged_ability() diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index b4ddb9dbff..219186da7f 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -797,7 +797,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) @@ -898,7 +898,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 ff12a835ef..ba2a96289d 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 2e38734b6f..951fe4e18a 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -384,14 +384,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(BANISH_WATER) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent("holy water") + return H.reagents.has_reagent(/datum/reagent/water/holywater) return 0 if(BANISH_COFFIN) return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) 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 e1c50a7cf5..2186e8b49e 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -513,7 +513,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 d6582a294f..d2e71615e3 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -353,7 +353,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/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index aa1abe56b4..34deb4ab3b 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -175,7 +175,7 @@ if(C.reagents.total_volume >= C.volume) to_chat(user, "[C] is full.") return - C.reagents.add_reagent("plasma", rand(5, 10)) + C.reagents.add_reagent(/datum/reagent/toxin/plasma, rand(5, 10)) user.visible_message("[user] scoops some plasma from the [src] with \the [C].", "You scoop out some plasma from the [src] using \the [C].") /turf/open/lava/plasma/burn_stuff(AM) diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 5137d0a6f3..ca76c80df7 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" diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm index f5a15f7900..96f5cfc201 100644 --- a/code/modules/clothing/glasses/phantomthief.dm +++ b/code/modules/clothing/glasses/phantomthief.dm @@ -26,7 +26,7 @@ /obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate) if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) nextadrenalinepop = world.time + 5 MINUTES - user.reagents.add_reagent("syndicateadrenals", 5) + user.reagents.add_reagent(/datum/reagent/syndicateadrenals, 5) user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) /obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 29fd06dcaf..4c8f9bdab2 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/vent_clog.dm b/code/modules/events/vent_clog.dm index 79487a024c..9075f693db 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -15,48 +15,46 @@ 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", - "cornoil", - "uranium", - "carpet", - "firefighting_foam", - "semen", - "femcum", - "tearjuice", - "strange_reagent" + /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, + /datum/reagent/consumable/cornoil, + /datum/reagent/uranium, + /datum/reagent/carpet, + /datum/reagent/firefighting_foam, + /datum/reagent/consumable/tearjuice, + /datum/reagent/medicine/strange_reagent ) //needs to be chemid unit checked at some point @@ -165,7 +163,7 @@ if(vent && vent.loc && !vent.welded) 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) @@ -180,7 +178,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("semen", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/semen, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -195,7 +193,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("femcum", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/femcum, 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 209bdd26c1..6ba9b44ee1 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/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 1e5c2eaf60..a5703c4671 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -103,7 +103,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 1d0b626d98..25d7d72085 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -153,11 +153,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/salt(target) return diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 8724841643..072c14aea3 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -304,7 +304,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 b8a63afb7f..4fd8ad2366 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -19,11 +19,9 @@ Here is an example of the new formatting for anyone who wants to add more food i name = "Xenoburger" //Name that displays in the UI. desc = "Smells caustic. Tastes like heresy." //Duh 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. - bitesize = 3 //This is the amount each bite consumes. + list_reagents = list(/datum/reagent/xenomicrobes = 10, + /datum/reagent/consumable/nutriment = 2) //What's inside the snack. + bitesize = 3 //This is the amount each bite consumes. ``` All foods are distributed among various categories. Use common sense. @@ -60,7 +58,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 +204,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 +283,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_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index 0f11fc8ed2..73f6231960 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -188,12 +188,12 @@ GLOBAL_VAR_INIT(frying_hardmode, TRUE) GLOBAL_VAR_INIT(frying_bad_chem_add_volume, TRUE) GLOBAL_LIST_INIT(frying_bad_chems, list( -"bad_food" = 10, -"clf3" = 2, -"aranesp" = 2, -"blackpowder" = 10, -"phlogiston" = 3, -"cyanide" = 3, +/datum/reagent/toxin/bad_food = 10, +/datum/reagent/clf3 = 2, +/datum/reagent/drug/aranesp = 2, +/datum/reagent/blackpowder = 10, +/datum/reagent/phlogiston = 3, +/datum/reagent/toxin/cyanide = 3, )) /obj/item/reagent_containers/food/snacks/deepfryholder/Initialize(mapload, obj/item/fried) diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index 510783479e..83e447a308 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -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) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index baf8e150c5..87ba994022 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -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 @@ -51,8 +51,11 @@ /obj/item/reagent_containers/food/snacks/donut/chaos/Initialize() . = ..() - extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine") - reagents.add_reagent("[extra_reagent]", 3) + 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 name = "jelly donut" @@ -67,7 +70,7 @@ /obj/item/reagent_containers/food/snacks/donut/jelly/Initialize() . = ..() if(extra_reagent) - reagents.add_reagent("[extra_reagent]", 3) + reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly name = "jelly donut" @@ -260,10 +263,10 @@ 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" diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index bc66d353e1..f30c4e8a7c 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -148,9 +148,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 diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 5f01d3170e..93b1c083d9 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -26,8 +26,8 @@ desc = "A wish come true!" bonus_reagents = list("nutriment" = 9, "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 @@ -101,9 +101,11 @@ /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) - reagents.add_reagent("[extra_reagent]", 5) + 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/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" 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 1bc2e4bb89..27ee54815f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -52,7 +52,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) @@ -81,9 +81,9 @@ God bless America. qdel(I) return if(istype(I,/obj/item/clothing/head/mob_holder)) - to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. + to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. 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 4dda9dd773..68cc84c639 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 e02c3c1334..e5c5a4f933 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -176,7 +176,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(sourcejob) newmeat.subjectjob = sourcejob allmeat[i] = newmeat 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 8db6956da9..1a33ce26db 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -39,23 +39,23 @@ /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_CUSTOM) - return list("milk", "ice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice) if(ICECREAM_PEACH) - return list("milk", "ice", "peachjuice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/peachjuice) if(ICECREAM_GRAPE) - return list("milk", "ice", "grapejuice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/grapejuice) 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) @@ -113,7 +113,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) @@ -132,7 +132,7 @@ else 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) updateDialog() else to_chat(user, "There is not enough ice cream left!") @@ -244,9 +244,9 @@ 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." @@ -256,31 +256,31 @@ switch (flavour_name) // adding the actual reagents advertised in the ingredient list if ("vanilla") desc = "A delicious [cone_type] cone filled with vanilla ice cream. All the other ice creams take content from it." - reagents.add_reagent("vanilla", 3) + reagents.add_reagent(/datum/reagent/consumable/vanilla, 3) filling_color = "#ECE1C1" if ("chocolate") desc = "A delicious [cone_type] cone filled with chocolate ice cream. Surprisingly, made with real cocoa." - reagents.add_reagent("cocoa", 3) + reagents.add_reagent(/datum/reagent/consumable/coco, 3) filling_color = "#93673B" if ("strawberry") desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries." - reagents.add_reagent("berryjuice", 3) + reagents.add_reagent(/datum/reagent/consumable/berryjuice, 3) filling_color = "#EFB4B4" if ("peach") desc = "A delicious [cone_type] cone filled with peach ice cream. Definitely made with real peaches!" - reagents.add_reagent("peachjuice", 3) + reagents.add_reagent(/datum/reagent/consumable/peachjuice, 3) filling_color = "#E78108" if ("grape") desc = "A delicious [cone_type] cone filled with grape ice cream. Surprisingly, made with real pink grape, likely not real sugarcanes used." - reagents.add_reagent("grapejuice", 3) + reagents.add_reagent(/datum/reagent/consumable/grapejuice, 3) filling_color = "#FF1493" if ("blue") desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?" - reagents.add_reagent("singulo", 3) + reagents.add_reagent(/datum/reagent/consumable/ethanol/singulo, 3) filling_color = "#ACBCED" if ("mob") desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..." - reagents.add_reagent("liquidgibs", 3) + reagents.add_reagent(/datum/reagent/liquidgibs, 3) filling_color = "#EFB4B4" if ("custom") if(R && R.total_volume >= 4) //consumable reagents have stronger taste so higher volume will allow non-food flavourings to break through better. diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 4efac6f508..e4d36b29d2 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -134,8 +134,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 9dbddfb519..73d4a4f514 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -404,8 +404,8 @@ var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list var/cached_volume = Nt.volume if(Nt.purity < 0.5) - holder.remove_reagent(src.id, cached_volume) - holder.add_reagent("neuroweak", cached_volume) + holder.remove_reagent(type, cached_volume) + holder.add_reagent(/datum/reagent/consumable/ethanol/neuroweak, cached_volume) */ /datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index d71e7c0f6a..f7294ff87a 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -95,7 +95,7 @@ last_poof = world.realtime var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case. var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent("secretcatchem", 10) + R.add_reagent(/datum/reagent/fermi/secretcatchem, 10) s.set_up(R, 0, loc) s.start() visible_message("[src] disappears in a puff of smoke!") @@ -181,7 +181,7 @@ visible_message("[src] raises an eyebrown, \"It's 4 candies for that [gender]! Thems the rules!\"") return visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"") - C.reagents.add_reagent("pumpkinmutationtoxin", 5) + C.reagents.add_reagent(/datum/reagent/mutationtoxin/pumpkinhead, 5) sleep(20) poof() return @@ -340,7 +340,7 @@ C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1) if(4) visible_message("[src] waves their arms around, \"In your body there's something amiss, you'll find it's a chem made by my sis!\"") - C.reagents.add_reagent("eigenstate", 30) + C.reagents.add_reagent(/datum/reagent/fermi/eigenstate, 30) if(5) visible_message("[src] waves their arms around, \"A new familiar for me, and you'll see it's thee!\"") C.reagents.add_reagent("secretcatchem", 30) diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index e7faff0209..5bb2936c1e 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 = "" @@ -31,10 +31,10 @@ /obj/item/reagent_containers/honeycomb/proc/set_reagent(reagent) var/datum/reagent/R = GLOB.chemical_reagents_list[reagent] - if(istype(R)) + if(R) name = "honeycomb ([R.name])" honey_color = R.color - reagents.add_reagent(R.id,5) + reagents.add_reagent(reagent,5) else honey_color = "" update_icon() \ No newline at end of file diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index e9001322d3..ab6625b46d 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -33,7 +33,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 660f1e17e4..bfd4204912 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -148,16 +148,16 @@ 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/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 44373515c6..7e8baa9487 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -97,7 +97,7 @@ /obj/item/reagent_containers/food/snacks/grown/bungopit/Initialize() . =..() reagents.clear_reagents() - reagents.add_reagent("bungotoxin", seed.potency * 0.10) //More than this will kill at too low potency - reagents.add_reagent("nutriment", seed.potency * 0.04) + reagents.add_reagent(/datum/reagent/toxin/bungotoxin, seed.potency * 0.10) //More than this will kill at too low potency + reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 6ceb69536d..7325dc5b5c 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -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/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index bac480bee6..3769f9eacc 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"] @@ -47,7 +47,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/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 59a9725383..0b6834c408 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -470,7 +470,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/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10)) switch(rand(100)) if(91 to 100) adjustHealth(-10) @@ -491,214 +491,214 @@ 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/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/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/radium, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/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)) // Toxins, not good for anything - 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)) // Fluorine one of the most corrosive and deadly gasses - 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)) // Chlorine one of the most corrosive and deadly gasses - 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)) // Sulphuric Acid - 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)) // Acid - 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)) // Napalm, not known for being good for anything organic - 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) // Diethylamine 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)) // Nutriment 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)) // Virusfood 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/toxin/mutagen/mutagenvirusfood, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5)) // Blood - 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)) // Strange reagent - if(S.has_reagent("strangereagent", 1)) + if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1)) spawnplant() // Honey, Pests are dieing of sugar, so is the plant - if(S.has_reagent("honey", 1)) + if(S.has_reagent(/datum/reagent/consumable/honey, 1)) adjustPests(-rand(2,5)) - adjustHealth(-round(S.get_reagent_amount("honey") * 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/honey) * 1)) // Buzz Fuzz, a drink seemingly made for plants... - if(S.has_reagent("buzz_fuzz", 1)) + if(S.has_reagent(/datum/reagent/consumable/buzz_fuzz, 1)) adjustPests(-rand(2,5)) - adjustHealth(round(S.get_reagent_amount("buzz_fuzz") * 0.1)) - adjustNutri(round(S.get_reagent_amount("buzz_fuzz") * 0.5)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.5)) // Adminordrazine 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 3597ed5be6..65230d1f21 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -228,7 +228,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)) @@ -412,7 +412,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) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 4132719389..1105a23ea5 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -195,7 +195,7 @@ var/list/data = null if(rid == "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. data = T.tastes diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 40ed235863..4b6b8723dd 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -96,7 +96,8 @@ activators = list("push ref" = IC_PINTYPE_PULSE_IN) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH var/volume = 60 - var/list/fuel = list("plasma" = 50000, "welding_fuel" = 15000, "carbon" = 10000, "ethanol" = 10000, "nutriment" = 8000) + var/list/fuel = list(/datum/reagent/toxin/plasma = 50000, /datum/reagent/fuel = 15000, /datum/reagent/carbon = 10000, + /datum/reagent/consumable/ethanol = 10000, /datum/reagent/consumable/nutriment = 8000) var/multi = 1 var/lfwb =TRUE @@ -119,7 +120,7 @@ if(assembly) if(assembly.battery) var/bp = 5000 - if(reagents.get_reagent_amount("blood")) //only blood is powerful enough to power the station(c) + if(reagents.get_reagent_amount(/datum/reagent/blood)) //only blood is powerful enough to power the station(c) var/datum/reagent/blood/B = locate() in reagents.reagent_list if(lfwb) if(B && B.data["cloneable"]) @@ -127,7 +128,7 @@ if(M && (M.stat != DEAD) && (M.client)) bp = 500000 if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > bp) - if(reagents.remove_reagent("blood", 1)) + if(reagents.remove_reagent(/datum/reagent/blood, 1)) assembly.give_power(bp) for(var/I in fuel) if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > fuel[I]) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 4077f21ea9..34b1fa392f 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -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/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 8195b3d84b..89c438f419 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -155,7 +155,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" || blood_id == "jellyblood") //normal blood + if(blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) //normal blood if(blood_data["viruses"]) for(var/thing in blood_data["viruses"]) var/datum/disease/D = thing diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index d1ace36b8c..4ed539adc2 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -73,7 +73,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) @@ -104,7 +104,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 48e79a9050..f2ea4f2b01 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -102,16 +102,16 @@ if(istype(O, /obj/item/organ_storage)) //BUG_PROBABLE_CAUSE return //Borg organ bags shouldn't be killing brains - if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("neurine")) //Neurine fixes dead brains + if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/neurine)) //Neurine fixes dead brains . = TRUE //don't do attack animation. var/cached_Bdamage = brainmob?.health - var/datum/reagent/medicine/neurine/N = reagents.has_reagent("neurine") - var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent("mannitol") + var/datum/reagent/medicine/neurine/N = reagents.has_reagent(/datum/reagent/medicine/neurine) + var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent(/datum/reagent/medicine/mannitol) - if(O.reagents.has_reagent("mannitol"))//Just a quick way to bolster the effects if someone mixes up a batch. + if(O.reagents.has_reagent(/datum/reagent/medicine/mannitol))//Just a quick way to bolster the effects if someone mixes up a batch. N.volume *= (M1.volume*0.5) - if(!O.reagents.has_reagent("neurine", 10)) + if(!O.reagents.has_reagent(/datum/reagent/medicine/neurine, 10)) to_chat(user, "There's not enough neurine in [O] to restore [src]!") return @@ -134,14 +134,14 @@ gain_trauma_type(BRAIN_TRAUMA_SPECIAL) return - if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("mannitol")) //attempt to heal the brain + if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/mannitol)) //attempt to heal the brain . = TRUE //don't do attack animation. - var/datum/reagent/medicine/mannitol/M = reagents.has_reagent("mannitol") + var/datum/reagent/medicine/mannitol/M = reagents.has_reagent(/datum/reagent/medicine/mannitol) if(brain_death || brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing to_chat(user, "[src] is far too damaged, you'll have to use neurine on 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 e4e8f06cfa..35751e4b86 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -27,7 +27,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 @@ -46,7 +46,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 0bfd23cbff..4b9383eadf 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.dm b/code/modules/mob/living/carbon/carbon.dm index 6ecedba3be..b83bbb65f0 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -181,7 +181,7 @@ if(HAS_TRAIT(src, TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") return - + adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -517,7 +517,7 @@ add_splatter_floor(T) if(stun) adjustBruteLoss(3) - else if(src.reagents.has_reagent("blazaam")) + else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam)) if(T) T.add_vomit_floor(src, VOMIT_PURPLE) else diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 9dcc5276e5..45e7637741 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -240,7 +240,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) @@ -316,18 +316,18 @@ else return - + else if(check_zone(M.zone_selected) == "r_arm" || check_zone(M.zone_selected) == "l_arm") M.visible_message( \ "[M] shakes [src]'s hand.", \ "You shake [src]'s hand.", ) - + else if(check_zone(M.zone_selected) == "mouth") // I ADDED BOOP-EH-DEH-NOSEH - Jon M.visible_message( \ "[M] boops [src]'s nose.", \ "You boop [src] on the nose.", ) playsound(src, 'sound/items/Nose_boop.ogg', 50, 0) - + else M.visible_message("[M] hugs [src] to make [p_them()] feel better!", \ "You hug [src] to make [p_them()] feel better!") diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 310ab6beeb..d1a483bb1d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -255,7 +255,7 @@ 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)) @@ -278,7 +278,7 @@ if(91.01 to INFINITY) msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n" - if(reagents.has_reagent("astral")) + if(reagents.has_reagent(/datum/reagent/fermi/astral)) if(mind) msg += "[t_He] has wild, spacey eyes and they have a strange, abnormal look to them.\n" else diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 67d7cb585e..e24f734a13 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1267,7 +1267,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) /datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == 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/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm index 946bffbdbc..9c28b8a0b7 100644 --- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm +++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm @@ -7,18 +7,18 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // id = "dwarf" //Also called Homo sapiens pumilionis default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR) - inherent_traits = list() + inherent_traits = list() default_features = list("mcolor" = "FFF", "wings" = "None") limbs_id = "human" use_skintones = 1 say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL - damage_overlay_type = "human" + damage_overlay_type = "human" skinned_type = /obj/item/stack/sheet/animalhide/human liked_food = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products. disliked_food = JUNKFOOD | FRIED //Dwarves hate foods that have no nutrition other than alcohol. mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed) - + /mob/living/carbon/human/species/dwarf //species admin spawn path race = /datum/species/dwarf //and the race the path is set to. @@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette - var/mob/living/carbon/human/H = C + var/mob/living/carbon/human/H = C H.facial_hair_style = dwarf_hair H.update_hair() H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM. @@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /obj/item/organ/dwarfgland/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("ethanol", stored_alcohol/10) + S.reagents.add_reagent(/datum/reagent/consumable/ethanol, stored_alcohol/10) return S /obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops.. @@ -108,8 +108,8 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // return //We make sure they are not dead, so they don't increment any tickers. dwarf_eth_ticker++ dwarf_filth_ticker++ - - if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds. + + if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds. dwarf_filth_cycle() //On_life will adjust regarding other factors, so we are along for the ride. dwarf_filth_ticker = 0 //We set the ticker back to 0 to go again. if(dwarf_eth_ticker >= 1) //Alcohol reagent check should be around 2 seconds, since a tick is around 2 seconds. 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 0c3bcc2b00..426213161e 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 @@ exotic_bloodtype = "BUG" /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 3d6c5092e1..1f681cda9f 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -305,9 +305,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 @@ -619,14 +619,14 @@ C.RemoveSpell(dominate) /datum/species/golem/runic/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "holywater") + if(chem.type == /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.id == /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/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index ceadb28115..f42c36fe32 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -47,9 +47,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 f0dd48c6c1..66eb207670 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -47,9 +47,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/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 5cd1a599ad..0335e08922 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -36,9 +36,9 @@ UnregisterSignal(H, COMSIG_MOB_SAY) /datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - 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 ..() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 0061c7ed70..9e9d440574 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -80,7 +80,7 @@ //Second link in a breath chain, calls check_breath() /mob/living/carbon/proc/breathe() var/obj/item/organ/lungs = getorganslot(ORGAN_SLOT_LUNGS) - 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 @@ -156,7 +156,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) @@ -357,7 +357,7 @@ return // No decay if formaldehyde in corpse or when the corpse is charred - if(reagents.has_reagent("formaldehyde", 15) || HAS_TRAIT(src, TRAIT_HUSK)) + if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(src, TRAIT_HUSK)) return // Also no decay if corpse chilled or not organic/undead diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index fe041dd0a6..14c3a76307 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -66,7 +66,7 @@ . = ..() 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(amount) add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 78542ab052..c2a307950c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1225,7 +1225,7 @@ clamp_unconscious_to = 0, clamp_immobility_to = 0, reset_misc = TRUE, - healing_chems = list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), + healing_chems = list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), message = "You feel a surge of energy!", stamina_buffer_boost = 0, //restores stamina buffer rather than just health scale_stamina_loss_recovery, //defaults to null. if this is set, restores loss * this stamina. make sure it's a fraction. @@ -1252,5 +1252,5 @@ updatehealth() update_stamina() update_canmove() - for(var/chem in healing_chems) - reagents.add_reagent(chem, healing_chems[chem]) + if(healing_chems) + reagents.add_reagent_list(healing_chems) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 722c984309..ab32f4d66e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -369,7 +369,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/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ece7fe9ecb..d934550149 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -751,17 +751,17 @@ var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules if(O) - O.reagents.add_reagent("enzyme", 2 * coeff) + O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) if(LR) for(var/i in 1 to coeff) LR.Charge(R) 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/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/astral.dm b/code/modules/mob/living/simple_animal/astral.dm index 3d0c335989..472cbd7414 100644 --- a/code/modules/mob/living/simple_animal/astral.dm +++ b/code/modules/mob/living/simple_animal/astral.dm @@ -44,7 +44,7 @@ if(isliving(A)) if(ishuman(A)) var/mob/living/carbon/human/H = A - if(H.reagents.has_reagent("astral") && !H.mind) + if(H.reagents.has_reagent(/datum/reagent/fermi/astral) && !H.mind) var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in H.reagents.reagent_list if(As.originalmind == src.mind && As.current_cycle < 10 && H.stat != DEAD) //So you can return to your body. to_chat(src, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!") diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index fed770d0b0..13e9299b1d 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -43,17 +43,17 @@ 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_tox_toxlover = "toxin" + 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_tox_toxlover = /datum/reagent/toxin 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 :) @@ -61,9 +61,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" @@ -71,13 +71,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,8 +369,9 @@ //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)) + for(var/A in reagent_glass.reagents.reagent_list) + var/datum/reagent/R = A + if(!C.reagents.has_reagent(R.type)) return TRUE //They're injured enough for it! @@ -477,8 +478,9 @@ //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)) + for(var/A in reagent_glass.reagents.reagent_list) + var/datum/reagent/R = A + if(!C.reagents.has_reagent(R.type)) 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 c0a9a2082f..b033d4ecc0 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 3cbf036270..53ec3a64d3 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -292,8 +292,8 @@ /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) //Cat made /mob/living/simple_animal/pet/cat/custom_cat 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 b2971e8d01..76f8093e38 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -455,12 +455,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/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index 2f37857902..95838c9acb 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 89c4f70f69..d0497bf6ce 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -140,7 +140,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) @@ -225,7 +225,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 @@ -236,7 +236,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 @@ -253,9 +253,10 @@ /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) + var/jelly_amount = S.reagents.get_reagent_amount(/datum/reagent/royal_bee_jelly) + if(jelly_amount) + if(jelly_amount >= 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) @@ -266,8 +267,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 it's DNA!","You inject [src]'s genome with [R.name], mutating it's DNA!") name = queen.name 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 69209f7266..2e7c0ff455 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() . = ..() @@ -158,7 +158,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 @@ -217,7 +217,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 @@ -226,7 +226,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 @@ -235,7 +235,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 d1e8f1f49e..68b5c123d7 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -42,7 +42,7 @@ ..() if(iscarbon(target)) var/mob/living/carbon/C = target - C.reagents.add_reagent("leaper_venom", 5) + C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5) return if(isanimal(target)) var/mob/living/simple_animal/L = target @@ -96,7 +96,7 @@ L.Knockdown(50) if(iscarbon(L)) var/mob/living/carbon/C = L - C.reagents.add_reagent("leaper_venom", 5) + C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5) if(isanimal(L)) var/mob/living/simple_animal/A = L A.adjustHealth(25) 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 910e9c3c4a..9e9fbaeab8 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 @@ -131,7 +131,7 @@ /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 514edf896b..47ad018b67 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -185,6 +185,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/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index d1e10ea693..333428b406 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -141,9 +141,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/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index 816ae58749..89f5d20e70 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -4,7 +4,7 @@ if(!ninjacost(0,N_ADRENALINE)) var/mob/living/carbon/human/H = affecting - H.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "omnizine" = 10), "You feel a sudden surge of energy!") + H.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/omnizine = 10), "You feel a sudden surge of energy!") H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost") @@ -15,5 +15,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/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 0496a2f1c3..ed920a57d1 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/radium, a_transfer) && a_boost < a_maxamount) + I.reagents.remove_reagent(/datum/reagent/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 7567fc1a52..d4d63b2e66 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -165,9 +165,9 @@ /obj/item/pen/sleepy/Initialize() . = ..() create_reagents(45, OPENCONTAINER) - reagents.add_reagent("chloralhydrate", 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/power/cell.dm b/code/modules/power/cell.dm index ded99d6fa6..4692a1a598 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -106,7 +106,7 @@ /obj/item/stock_parts/cell/on_reagent_change(changetype) ..() - rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum + rigged = reagents?.has_reagent(/datum/reagent/toxin/plasma, 5) ? TRUE : FALSE //has_reagent returns the reagent datum /obj/item/stock_parts/cell/proc/explode() var/turf/T = get_turf(src.loc) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index cdbaa29a3b..fbe262c5e3 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -789,7 +789,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 = 1 diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index ab463163f0..a8d3934208 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -134,8 +134,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/toxin/fentanyl, 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/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index bdbf706448..5e32401645 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -31,9 +31,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, 5) /obj/item/projectile/bullet/dart/syringe name = "syringe" @@ -52,20 +52,19 @@ if(blocked != 100) if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. ..(target, blocked, TRUE) - for(var/datum/reagent/R in reagents.reagent_list) //OD prevention time! - if(istype(R, /datum/reagent/medicine)) //Is this a medicine? - if(M.reagents.has_reagent(R.id)) - if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? - M.reagents.add_reagent(R.id, R.volume) - else - var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1) - M.reagents.add_reagent(R.id, transVol) + for(var/datum/reagent/medicine/R in reagents.reagent_list) //OD prevention time! + if(M.reagents.has_reagent(R.type)) + if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? + M.reagents.add_reagent(R.type, R.volume) else - if(!R.overdose_threshold == 0) - var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) - M.reagents.add_reagent(R.id, transVol) - else - M.reagents.add_reagent(R.id, R.volume) + var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1) + M.reagents.add_reagent(R.type, transVol) + else + if(!R.overdose_threshold == 0) + var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) + M.reagents.add_reagent(R.type, transVol) + else + M.reagents.add_reagent(R.type, R.volume) diff --git a/code/modules/reagents/chem_wiki_render.dm b/code/modules/reagents/chem_wiki_render.dm index efb6bdecfd..15a62825e7 100644 --- a/code/modules/reagents/chem_wiki_render.dm +++ b/code/modules/reagents/chem_wiki_render.dm @@ -332,11 +332,11 @@ //Description, OD, Addict, Meta outstring += "[R.description] |
  • Metabolism rate: [R.metabolization_rate/2]u/s
  • [(R.overdose_threshold?"
  • Overdose: [R.overdose_threshold]u
  • ":"")] [(R.addiction_threshold?"
  • Addiction: [R.addiction_threshold]u
  • ":"")] " - if(R.impure_chem && R.impure_chem != "fermiTox") + if(R.impure_chem && R.impure_chem != /datum/reagent/impure/fermiTox) R3 = GLOB.chemical_reagents_list[R.impure_chem] outstring += "
  • Impure chem:[R3.name]
  • " - if(R.inverse_chem && R.impure_chem != "fermiTox") + if(R.inverse_chem && R.impure_chem != /datum/reagent/impure/fermiTox) R3 = GLOB.chemical_reagents_list[R.inverse_chem] outstring += "
  • Inverse chem:[R3.name]
  • [(R3.inverse_chem_val?"
  • Inverse purity: [R3.inverse_chem_val]
  • ":"")] " diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index d540cd02fe..bf3c4220b4 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 @@ -32,14 +32,11 @@ var/datum/chemical_reaction/D = new path() var/list/reaction_ids = list() - if(!D.id) - continue - if(D.required_reagents && D.required_reagents.len) for(var/reaction in D.required_reagents) reaction_ids += reaction - // Create filters based on each reagent id in the required reagents list + // Create filters based on each reagent type in the required reagents list for(var/id in reaction_ids) if(!GLOB.chemical_reactions_list[id]) GLOB.chemical_reactions_list[id] = list() @@ -63,7 +60,7 @@ var/targetVol = 0 //the target volume, i.e. the total amount that can be created during a fermichem reaction. var/reactedVol = 0 //how much of the reagent is reacted during a fermireaction var/fermiIsReacting = FALSE //that prevents multiple reactions from occurring (i.e. add_reagent calls to process_reactions(), this stops any extra reactions.) - var/fermiReactID //ID of the chem being made during a fermireaction, kept here so it's cache isn't lost between loops/procs. + var/fermiReactID //instance of the chem reaction used during a fermireaction, kept here so it's cache isn't lost between loops/procs. /datum/reagents/New(maximum=100, new_flags) maximum_volume = maximum @@ -96,7 +93,7 @@ var/list/data = list() for(var/r in reagent_list) //no reagents will be left behind var/datum/reagent/R = r - data += "[R.id] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)" + data += "[R.type] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)" //Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. return english_list(data) @@ -117,7 +114,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++ @@ -132,7 +129,7 @@ var/part = amount / total_volume for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - remove_reagent(R.id, R.volume * part, ignore_pH = TRUE) + remove_reagent(R.type, R.volume * part, ignore_pH = TRUE) pH = REAGENT_NORMAL_PH update_total() handle_reactions() @@ -152,15 +149,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 @@ -198,9 +195,9 @@ trans_data = copy_data(T) - R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered. + R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered. - remove_reagent(T.id, transfer_amount, ignore_pH = TRUE) + remove_reagent(T.type, transfer_amount, ignore_pH = TRUE) update_total() R.update_total() @@ -232,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() @@ -256,12 +253,12 @@ 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, chem_temp, current_reagent.purity, pH, no_react = TRUE) + R.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE) - remove_reagent(current_reagent.id, amount, 1) + remove_reagent(current_reagent.type, amount, 1) break src.update_total() @@ -313,18 +310,21 @@ var/datum/reagent/R = addiction if(C && R) R.addiction_stage++ - if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end) - need_mob_update += R.addiction_act_stage1(C) - else if(R.addiction_stage1_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end) - need_mob_update += R.addiction_act_stage2(C) - else if(R.addiction_stage2_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end) - need_mob_update += R.addiction_act_stage3(C) - else if(R.addiction_stage3_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end) - need_mob_update += R.addiction_act_stage4(C) - else if(R.addiction_stage4_end <= R.addiction_stage) - to_chat(C, "You feel like you've gotten over your need for [R.name].") - SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction") - cached_addictions.Remove(R) + switch(R.addiction_stage) + if(1 to R.addiction_stage1_end) + need_mob_update += R.addiction_act_stage1(C) + if(R.addiction_stage1_end to R.addiction_stage2_end) + need_mob_update += R.addiction_act_stage2(C) + if(R.addiction_stage2_end to R.addiction_stage3_end) + need_mob_update += R.addiction_act_stage3(C) + if(R.addiction_stage3_end to R.addiction_stage4_end) + need_mob_update += R.addiction_act_stage4(C) + if(R.addiction_stage4_end 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.type]_addiction") + cached_addictions.Remove(R) + else + 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() @@ -381,7 +381,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 type if(!reaction) continue @@ -630,7 +630,7 @@ deltapH = 1 //This should never proc: else - WARNING("[my_atom] attempted to determine FermiChem pH for '[C.id]' which broke for some reason! ([usr])") + WARNING("[my_atom] attempted to determine FermiChem pH for '[C.type]' which broke for some reason! ([usr])") //Calculate DeltaT (Deviation of T from optimal) if (cached_temp < C.OptimalTempMax && cached_temp >= C.OptimalTempMin) @@ -679,7 +679,7 @@ //Above should reduce yeild based on holder purity. //Purity Check for(var/datum/reagent/R in my_atom.reagents.reagent_list) - if(P == R.id) + if(P == R.type) if (R.purity < C.PurityMin)//If purity is below the min, blow it up. fermiIsReacting = FALSE SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[P] explosion")) @@ -724,7 +724,7 @@ return cachedPurity/i /datum/reagents/proc/uncache_purity(id) - var/datum/reagent/R = has_reagent("[id]") + var/datum/reagent/R = has_reagent(id) if(!R) return if(R.cached_purity == 1) @@ -735,15 +735,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 if(R.metabolizing) @@ -763,9 +763,9 @@ for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume <= 0)//For clarity - del_reagent(R.id) + del_reagent(R.type) if((R.volume < 0.01) && !fermiIsReacting) - del_reagent(R.id) + del_reagent(R.type) else total_volume += R.volume if(!reagent_list || !total_volume) @@ -776,7 +776,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) pH = REAGENT_NORMAL_PH return 0 @@ -842,13 +842,13 @@ WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") return FALSE - if (D.id == "water" && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany. + if (D.type == /datum/reagent/water && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany. if (pH < 2) SSblackbox.record_feedback("tally", "fermi_chem", 1, "water-acid explosions") var/datum/effect_system/smoke_spread/chem/s = new var/turf/T = get_turf(my_atom) var/datum/reagents/R = new/datum/reagents(3000) - R.add_reagent("fermiAcid", amount) + R.add_reagent(/datum/reagent/fermi/fermiAcid, amount) for (var/datum/reagent/reagentgas in reagent_list) R.add_reagent(reagentgas, amount/5) remove_reagent(reagentgas, amount/5) @@ -895,7 +895,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 MERGING + if (R.type == reagent) //IF MERGING //Add amount and equalize purity R.volume += round(amount, CHEMICAL_QUANTISATION_LEVEL) R.purity = ((R.purity * R.volume) + (other_purity * amount)) /((R.volume + amount)) //This should add the purity to the product @@ -937,7 +937,7 @@ 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, /datum/reagent/consumable/ethanol/beer = 15) for(var/r_id in list_reagents) var/amt = list_reagents[r_id] add_reagent(r_id, amt, data) @@ -959,7 +959,7 @@ for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.id == reagent) + if (R.type == reagent) if((total_volume - amount) <= 0)//Because this can result in 0, I don't want it to crash. pH = REAGENT_NORMAL_PH //In practice this is really confusing and players feel like it randomly melts their beakers, but I'm not sure how else to handle it. We'll see how it goes and I can remove this if it confuses people. @@ -986,7 +986,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 @@ -1001,7 +1001,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 @@ -1034,7 +1034,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 @@ -1043,14 +1043,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) @@ -1143,12 +1143,12 @@ reagents = new/datum/reagents(max_vol, flags) reagents.my_atom = src -/proc/get_random_reagent_id() // Returns a random reagent ID minus blacklisted reagents +/proc/get_random_reagent_id() // Returns a random reagent type minus blacklisted reagents var/static/list/random_reagents = list() if(!random_reagents.len) 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 2c5d7aa3e2..256f86bb53 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,65 +34,66 @@ var/macrotier = 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/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 upgraded. var/list/upgrade_reagents = list( - "oil", - "ammonia", - "ash" + /datum/reagent/oil, + /datum/reagent/ammonia, + /datum/reagent/ash ) var/list/upgrade_reagents2 = list( - "acetone", - "phenol", - "diethylamine" + /datum/reagent/acetone, + /datum/reagent/phenol, + /datum/reagent/diethylamine ) var/list/upgrade_reagents3 = list( - "mine_salve", - "toxin" + /datum/reagent/medicine/mine_salve, + /datum/reagent/toxin ) var/list/emagged_reagents = list( - "space_drugs", - "plasma", - "frostoil", - "carpotoxin", - "histamine", - "morphine" + /datum/reagent/drug/space_drugs, + /datum/reagent/toxin/plasma, + /datum/reagent/consumable/frostoil, + /datum/reagent/toxin/carpotoxin, + /datum/reagent/toxin/histamine, + /datum/reagent/medicine/morphine ) var/list/saved_recipes = list() /obj/machinery/chem_dispenser/Initialize() . = ..() - dispensable_reagents = sortList(dispensable_reagents) + for(var/list/L in list(dispensable_reagents, emagged_reagents, upgrade_reagents, upgrade_reagents2, upgrade_reagents3)) + L = sortList(L, /proc/cmp_reagents_asc) update_icon() /obj/machinery/chem_dispenser/Destroy() @@ -235,7 +249,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 @@ -267,7 +281,7 @@ var/res = get_macro_resolution() 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 @@ -299,7 +313,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 @@ -475,45 +490,45 @@ 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 = list( - "mushroomhallucinogen", - "nothing", - "cryoxadone" + /datum/reagent/drug/mushroomhallucinogen, + /datum/reagent/consumable/nothing, + /datum/reagent/medicine/cryoxadone ) upgrade_reagents2 = list( - "banana", - "berryjuice" + /datum/reagent/consumable/banana, + /datum/reagent/consumable/berryjuice ) upgrade_reagents3 = null emagged_reagents = list( - "thirteenloko", - "changelingsting", - "whiskeycola", - "mindbreaker", - "tirizene" + /datum/reagent/consumable/ethanol/thirteenloko, + /datum/reagent/consumable/ethanol/changelingsting, + /datum/reagent/consumable/ethanol/whiskey_cola, + /datum/reagent/toxin/mindbreaker, + /datum/reagent/toxin/staminatoxin ) @@ -542,39 +557,39 @@ 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", - "applejack" + /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 = list( - "ethanol", - "fernet" + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/ethanol/fernet ) upgrade_reagents2 = null upgrade_reagents3 = null emagged_reagents = list( - "iron", - "alexander", - "clownstears", - "minttoxin", - "atomicbomb", - "aphro", - "aphro+" + /datum/reagent/iron, + /datum/reagent/consumable/ethanol/alexander, + /datum/reagent/consumable/clownstears, + /datum/reagent/toxin/minttoxin, + /datum/reagent/consumable/ethanol/atomicbomb, + /datum/reagent/drug/aphrodisiac, + /datum/reagent/drug/aphrodisiacplus ) /obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged @@ -598,9 +613,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 @@ -609,19 +624,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) //same as above. upgrade_reagents = null upgrade_reagents2 = null @@ -667,46 +682,46 @@ working_state = null nopower_state = null 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", - "oil", - "ammonia", - "ash", - "acetone", - "phenol", - "diethylamine", - "mine_salve", - "toxin", - "space_drugs", - "plasma", - "frostoil", - "uranium", - "histamine", - "morphine" + /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/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, + /datum/reagent/oil, + /datum/reagent/ammonia, + /datum/reagent/ash, + /datum/reagent/acetone, + /datum/reagent/phenol, + /datum/reagent/diethylamine, + /datum/reagent/medicine/mine_salve, + /datum/reagent/toxin, + /datum/reagent/drug/space_drugs, + /datum/reagent/toxin/plasma, + /datum/reagent/consumable/frostoil, + /datum/reagent/uranium, + /datum/reagent/toxin/histamine, + /datum/reagent/medicine/morphine ) /obj/machinery/chem_dispenser/abductor/Initialize() @@ -719,4 +734,4 @@ component_parts += new /obj/item/stock_parts/manipulator/femto(null) component_parts += new /obj/item/stack/sheet/glass(null) component_parts += new /obj/item/stock_parts/cell/bluespace(null) - RefreshParts() \ No newline at end of file + RefreshParts() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 1ac62ba651..4770e392cf 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -214,34 +214,34 @@ if("transferToBuffer") if(beaker) - var/id = params["id"] + var/reagent = GLOB.name2reagent[params["id"]] var/amount = text2num(params["amount"]) if (amount > 0) end_fermi_reaction() - 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) end_fermi_reaction() - 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 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) end_fermi_reaction() - reagents.trans_id_to(beaker, id, useramount) + reagents.trans_id_to(beaker, reagent, useramount) . = TRUE if("toggleMode") @@ -423,7 +423,7 @@ //END CITADEL ADDITIONS if("analyzeBeak") - 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) @@ -434,11 +434,11 @@ state = "Gas" var/const/P = 3 //The number of seconds between life ticks var/T = initial(R.metabolization_rate) * (60 / P) - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type) if(Rcr && Rcr.FermiChem) fermianalyze = TRUE var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 - var/datum/reagent/targetReagent = beaker.reagents.has_reagent("[R.id]") + var/datum/reagent/targetReagent = beaker.reagents.has_reagent(R.type) if(!targetReagent) CRASH("Tried to find a reagent that doesn't exist in the chem_master!") @@ -450,7 +450,7 @@ return if("analyzeBuff") - 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) @@ -463,9 +463,9 @@ var/T = initial(R.metabolization_rate) * (60 / P) if(istype(R, /datum/reagent/fermi)) fermianalyze = TRUE - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type) var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 - var/datum/reagent/targetReagent = reagents.has_reagent("[R.id]") + var/datum/reagent/targetReagent = reagents.has_reagent(R.type) if(!targetReagent) CRASH("Tried to find a reagent that doesn't exist in the chem_master!") diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm index daac5a5d1c..5e0bc39368 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, \ @@ -31,13 +31,13 @@ beaker = null . = TRUE if("input") - var/input_reagent = replacetext(lowertext(input("Enter the name of any liquid", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name + var/input_reagent = replacetext(lowertext(input("Enter the name of any reagent", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name if(shortcuts[input_reagent]) input_reagent = shortcuts[input_reagent] else input_reagent = find_reagent(input_reagent) - if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent]) - say("OUT OF RANGE") + if(!input_reagent) + say("REAGENT NOT FOUND") return else if(!beaker) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 6ae0a682d8..68ce6e490f 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -144,9 +144,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) @@ -192,7 +192,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) @@ -204,7 +204,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 98cfd877b2..7e1b7ec018 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -299,18 +299,18 @@ /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) //Moonsugar for skooma - if(beaker.reagents.has_reagent("sugar") && beaker.reagents.has_reagent("moonshine")) - var/amount = min(beaker.reagents.get_reagent_amount("sugar"), beaker.reagents.get_reagent_amount("moonshine")) - beaker.reagents.remove_reagent("sugar", amount) - beaker.reagents.remove_reagent("moonshine", amount) - beaker.reagents.add_reagent("moonsugar", amount*2) + if(beaker.reagents.has_reagent(/datum/reagent/consumable/sugar) && beaker.reagents.has_reagent(/datum/reagent/consumable/ethanol/moonshine)) + var/amount = min(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/sugar), beaker.reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/moonshine)) + beaker.reagents.remove_reagent(/datum/reagent/consumable/sugar, amount) + beaker.reagents.remove_reagent(/datum/reagent/consumable/ethanol/moonshine, amount) + beaker.reagents.add_reagent(/datum/reagent/moonsugar, amount*2) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index da41ac9dc4..007bcb145d 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,5 +1,14 @@ #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 @@ -58,7 +67,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) @@ -70,7 +79,7 @@ /datum/reagent/proc/on_mob_life(mob/living/carbon/M) current_cycle++ if(holder) - 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 a mob processes chems when dead. @@ -79,7 +88,7 @@ return current_cycle++ if(holder) - 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 @@ -98,9 +107,9 @@ return if ((inverse_chem_val > purity) && (inverse_chem))//Turns all of a added reagent into the inverse chem - M.reagents.remove_reagent(id, amount, FALSE) + M.reagents.remove_reagent(type, amount, FALSE) M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity) - var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]") + var/datum/reagent/R = M.reagents.has_reagent(inverse_chem) if(R.chemical_flags & REAGENT_SNEAKYNAME) R.name = name//Negative effects are hidden if(R.chemical_flags & REAGENT_INVISIBLE) @@ -110,7 +119,7 @@ else if (impure_chem) var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem if(!(chemical_flags & REAGENT_SPLITRETAINVOL)) - M.reagents.remove_reagent(id, (impureVol), FALSE) + M.reagents.remove_reagent(type, (impureVol), FALSE) M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity) log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]") log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [impure_chem]") @@ -149,9 +158,9 @@ return if ((inverse_chem_val > purity) && (inverse_chem)) //INVERT - M.reagents.remove_reagent(id, amount, FALSE) + M.reagents.remove_reagent(type, amount, FALSE) M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity) - var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]") + var/datum/reagent/R = M.reagents.has_reagent(inverse_chem) if(R.chemical_flags & REAGENT_SNEAKYNAME) R.name = name//Negative effects are hidden if(R.chemical_flags & REAGENT_INVISIBLE) @@ -161,7 +170,7 @@ else if (impure_chem) //SPLIT var/impureVol = amount * (1 - purity) if(!(chemical_flags & REAGENT_SPLITRETAINVOL)) - M.reagents.remove_reagent(id, impureVol, FALSE) + M.reagents.remove_reagent(type, impureVol, FALSE) M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity) log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]") log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [impure_chem]") diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index fd28ff9c47..5d24508b9e 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -662,7 +662,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(type) //If we lost our light object somehow, remove the reagent else if(light_holder.loc != M) light_holder.forceMove(M) return ..() @@ -1456,9 +1456,9 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Neurotoxin" glass_desc = "A drink that is guaranteed to knock you silly." //SplitChem = TRUE - impure_chem = "neuroweak" + impure_chem = /datum/reagent/consumable/ethanol/neuroweak inverse_chem_val = 0.5 //Clear conversion - inverse_chem = "neuroweak" + inverse_chem = /datum/reagent/consumable/ethanol/neuroweak value = 4 /datum/reagent/consumable/ethanol/neurotoxin/proc/pickt() @@ -1468,12 +1468,12 @@ All effects don't start immediately, but rather get worse over time; the rate is M.set_drugginess(50) M.dizziness +=2 M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150) - if(prob(20) && !holder.has_reagent("neuroweak")) + if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) M.adjustStaminaLoss(10) M.drop_all_held_items() to_chat(M, "You cant feel your hands!") if(current_cycle > 5) - if(prob(20) && !holder.has_reagent("neuroweak")) + if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) var/t = pickt() ADD_TRAIT(M, t, type) M.adjustStaminaLoss(10) @@ -1504,12 +1504,12 @@ All effects don't start immediately, but rather get worse over time; the rate is value = 3 /datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) - if(holder.has_reagent("neurotoxin")) + if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) - M.reagents.remove_reagent("neurotoxin", 1.5 * REAGENTS_METABOLISM, FALSE) - if(holder.has_reagent("fentanyl")) + M.reagents.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 1.5 * REAGENTS_METABOLISM, FALSE) + else if(holder.has_reagent(/datum/reagent/toxin/fentanyl)) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) - M.reagents.remove_reagent("fentanyl", 0.75 * REAGENTS_METABOLISM, FALSE) + M.reagents.remove_reagent(/datum/reagent/toxin/fentanyl, 0.75 * REAGENTS_METABOLISM, FALSE) else M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REM, 150) M.dizziness +=2 @@ -1862,7 +1862,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L) ..() if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink. - L.reagents.del_reagent("alexander") + L.reagents.del_reagent(type) /datum/reagent/consumable/ethanol/alexander/on_mob_end_metabolize(mob/living/L) if(mighty_shield) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index ada4cd8d8e..b5993a8783 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -195,8 +195,8 @@ reac_volume = ..() M.adjust_drugginess(reac_volume) if(M.reagents) - M.reagents.add_reagent("regenerative_materia", 0.2*reac_volume) - M.reagents.add_reagent("spore", 0.2*reac_volume) + M.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 0.2*reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin/spore, 0.2*reac_volume) M.apply_damage(0.7*reac_volume, TOX) /datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/C) @@ -339,9 +339,9 @@ /datum/reagent/blob/cryogenic_poison/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) - M.reagents.add_reagent("frostoil", 0.3*reac_volume) - M.reagents.add_reagent("ice", 0.3*reac_volume) - M.reagents.add_reagent("cryogenic_poison", 0.3*reac_volume) + M.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume) + M.reagents.add_reagent(/datum/reagent/consumable/ice, 0.3*reac_volume) + M.reagents.add_reagent(/datum/reagent/blob/cryogenic_poison, 0.3*reac_volume) M.apply_damage(0.2*reac_volume, BRUTE) /datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 957ea1b986..f852e84914 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -227,8 +227,8 @@ if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) . = 1 - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 2) + if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) + holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2) ..() /datum/reagent/consumable/soymilk @@ -285,8 +285,8 @@ M.AdjustSleeping(-40, FALSE) //310.15 is the normal bodytemp. M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) - if(holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 5) + if(holder.has_reagent(/datum/reagent/consumable/frostoil)) + holder.remove_reagent(/datum/reagent/consumable/frostoil, 5) ..() . = 1 @@ -523,9 +523,9 @@ glass_desc = "Stinging with flavour." /datum/reagent/consumable/buzz_fuzz/on_mob_life(mob/living/carbon/M) - M.reagents.add_reagent("sugar",1) + M.reagents.add_reagent(/datum/reagent/consumable/sugar,1) if(prob(5)) - M.reagents.add_reagent("honey",1) + M.reagents.add_reagent(/datum/reagent/consumable/honey,1) ..() /datum/reagent/consumable/buzz_fuzz/reaction_mob(mob/living/M, method=TOUCH, reac_volume) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 4d02706a3c..3da430b16d 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -19,7 +19,7 @@ /datum/reagent/consumable/on_mob_life(mob/living/carbon/M) current_cycle++ M.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) @@ -121,7 +121,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)) @@ -216,8 +216,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) @@ -249,8 +249,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) @@ -538,7 +538,7 @@ var/obj/effect/decal/cleanable/flour/reagentdecal = new/obj/effect/decal/cleanable/flour(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" @@ -603,7 +603,7 @@ 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 @@ -617,7 +617,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) @@ -767,7 +767,7 @@ /* //We don't have ethereals here, so I'll just comment it out. /datum/reagent/consumable/liquidelectricity/reaction_mob(mob/living/M, method=TOUCH, reac_volume) //can't be on life because of the way blood works. if((method == INGEST || method == INJECT || method == PATCH) && iscarbon(M)) - + var/mob/living/carbon/C = M var/obj/item/organ/stomach/ethereal/stomach = C.getorganslot(ORGAN_SLOT_STOMACH) if(istype(stomach)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d8ff084227..2e2cdf2bf1 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -13,7 +13,7 @@ /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" @@ -95,8 +95,8 @@ M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) - 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) @@ -112,10 +112,10 @@ /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) @@ -374,12 +374,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /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, 0) M.adjustFireLoss(0.5*REM, 0) @@ -473,9 +473,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) . = 1 - for(var/datum/reagent/R in M.reagents.reagent_list) + for(var/A in M.reagents.reagent_list) + var/datum/reagent/R = A if(R != src) - M.reagents.remove_reagent(R.id,1) + M.reagents.remove_reagent(R.type,1) ..() /datum/reagent/medicine/omnizine @@ -516,9 +517,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 1.5 /datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M) - for(var/datum/reagent/R in M.reagents.reagent_list) + for(var/A in M.reagents.reagent_list) + var/datum/reagent/R = A 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 @@ -565,9 +567,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M) M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50 M.adjustToxLoss(-2*REM, 0, healtoxinlover) - for(var/datum/reagent/R in M.reagents.reagent_list) + for(var/A in M.reagents.reagent_list) + var/datum/reagent/R = A if(R != src) - M.reagents.remove_reagent(R.id,2) + M.reagents.remove_reagent(R.type,2) ..() . = 1 @@ -708,7 +711,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) 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 @@ -966,8 +969,8 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /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) ..() @@ -1058,7 +1061,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /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. @@ -1132,7 +1135,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /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 @@ -1302,7 +1305,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /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 diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 512b8a21a1..648435ba4d 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -62,7 +62,7 @@ if(data["blood_DNA"]) B.blood_DNA[data["blood_DNA"]] = data["blood_type"] if(!B.reagents) - B.reagents.add_reagent(id, reac_volume) + B.reagents.add_reagent(type, reac_volume) B.update_icon() /datum/reagent/blood/on_new(list/data) @@ -392,9 +392,9 @@ 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.del_reagent(type) // maybe this is a little too perfect and a max() cap on the statuses would be better?? return - 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) ..() @@ -414,7 +414,7 @@ /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 ..() @@ -437,7 +437,7 @@ 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 @@ -452,7 +452,7 @@ M.adjustToxLoss(1, 0) M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard? M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) pH = 0.1 /datum/reagent/fuel/holyoil //Its oil @@ -481,7 +481,7 @@ M.adjustToxLoss(3, 0) M.adjustOxyLoss(2, 0) M.adjustStaminaLoss(10, 0) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) return TRUE //We only get 30u to start with... @@ -815,7 +815,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) @@ -830,7 +830,7 @@ 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 @@ -1089,7 +1089,7 @@ 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("radium", reac_volume) + GG.reagents.add_reagent(/datum/reagent/radium, reac_volume) /datum/reagent/space_cleaner/sterilizine name = "Sterilizine" @@ -1127,7 +1127,7 @@ /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/iron/overdose_start(mob/living/M) @@ -1159,7 +1159,7 @@ /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 @@ -1181,7 +1181,7 @@ 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("uranium", reac_volume) + GG.reagents.add_reagent(/datum/reagent/uranium, reac_volume) /datum/reagent/bluespace name = "Bluespace Dust" @@ -1527,7 +1527,7 @@ /datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) M.adjustStaminaLoss(-2*REM, 0) current_cycle++ - holder.remove_reagent(id, 0.99) //Gives time for the next tick of life(). + holder.remove_reagent(type, 0.99) //Gives time for the next tick of life(). . = TRUE //Update status effects. /datum/reagent/nitryl diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index c170858d98..758db841f2 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -190,8 +190,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) ..() @@ -209,8 +209,8 @@ 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) ..() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index f97204b45e..c839326f78 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -66,8 +66,8 @@ pH = 4 /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 ..() @@ -437,8 +437,8 @@ /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(type, 1.2) else return ..() @@ -456,8 +456,8 @@ 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(type, 1.1) else ..() @@ -518,7 +518,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)) @@ -534,8 +534,8 @@ 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(type,1.2) return ..() @@ -680,7 +680,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) . = ..() @@ -799,10 +799,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") || holder.has_reagent("pen_jelly")) + if(holder.has_reagent(/datum/reagent/medicine/calomel) || holder.has_reagent(/datum/reagent/medicine/pen_acid) || holder.has_reagent(/datum/reagent/medicine/pen_acid/pen_jelly)) 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 @@ -869,7 +869,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.Knockdown(20, 0) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 607e0b5a4e..f5e12426e1 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -70,10 +70,10 @@ /datum/chemical_reaction/synthtissue name = "Synthtissue" - id = "synthtissue" - results = list("synthtissue" = 5) - required_reagents = list("synthflesh" = 1) - required_catalysts = list("sugar" = 0.1) + id = /datum/reagent/synthtissue + results = list(/datum/reagent/synthtissue = 5) + required_reagents = list(/datum/reagent/medicine/synthflesh = 1) + required_catalysts = list(/datum/reagent/consumable/sugar = 0.1) //FermiChem vars: OptimalTempMin = 305 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 315 // Upper end for above @@ -91,13 +91,13 @@ PurityMin = 0 /datum/chemical_reaction/synthtissue/FermiCreate(datum/reagents/holder, added_volume, added_purity) - var/datum/reagent/synthtissue/St = holder.has_reagent("synthtissue") - var/datum/reagent/N = holder.has_reagent("sugar") + var/datum/reagent/synthtissue/St = holder.has_reagent(/datum/reagent/synthtissue) + var/datum/reagent/N = holder.has_reagent(/datum/reagent/consumable/sugar) if(!St) return if(holder.chem_temp > 320) var/temp_ratio = 1-(330 - holder.chem_temp)/10 - holder.remove_reagent(src.id, added_volume*temp_ratio) + holder.remove_reagent(id, added_volume*temp_ratio) if(St.purity < 1) St.volume *= St.purity St.purity = 1 diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index ad1efc1da7..cda27505aa 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -33,9 +33,9 @@ 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 @@ -191,9 +191,9 @@ required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "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) @@ -216,9 +216,9 @@ required_reagents = list("stable_plasma" = 1, "radium" = 1, "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) @@ -241,7 +241,7 @@ required_reagents = list("aluminium" = 1, "potassium" = 1, "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) @@ -255,7 +255,7 @@ C.Knockdown(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" @@ -284,9 +284,9 @@ required_reagents = list("potassium" = 1, "sugar" = 1, "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 @@ -301,7 +301,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 @@ -324,9 +324,9 @@ required_reagents = list("oxygen" = 1, "cola" = 1, "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)) @@ -351,7 +351,7 @@ required_reagents = list("phosphorus" = 1, "sacid" = 1, "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)) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 618b74fffb..83fe560638 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -27,7 +27,7 @@ if(spawned_disease) var/datum/disease/F = new spawned_disease() var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F)) - reagents.add_reagent("blood", disease_amount, data) + reagents.add_reagent(/datum/reagent/blood, disease_amount, data) add_initial_reagents() diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 61449fc153..2f5fb067ea 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -13,12 +13,12 @@ /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) - reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "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"] color_to_apply = bloodtype_to_color(blood_type) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 2bd5fb2d9f..b1443534d6 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -26,7 +26,8 @@ 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. @@ -141,19 +142,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, /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 @@ -162,7 +163,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 @@ -179,7 +180,14 @@ 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 @@ -235,22 +243,24 @@ 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 0ee131bc14..cb7addb95d 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -142,8 +142,9 @@ /obj/item/reagent_containers/glass/bottle/traitor/Initialize() . = ..() - extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "fentanyl", "cyanide") - reagents.add_reagent("[extra_reagent]", 3) + 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" diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm index ba5ce48a4a..73557d9b14 100644 --- a/code/modules/reagents/reagent_containers/hypovial.dm +++ b/code/modules/reagents/reagent_containers/hypovial.dm @@ -5,7 +5,6 @@ desc = "A hypovial compatible with most hyposprays." icon_state = "hypovial" spillable = FALSE - var/comes_with = list() //Easy way of doing this. volume = 10 possible_transfer_amounts = list(1,2,5,10) obj_flags = UNIQUE_RENAME @@ -24,8 +23,6 @@ . = ..() if(!icon_state) icon_state = "hypovial" - for(var/R in comes_with) - reagents.add_reagent(R,comes_with[R]) update_icon() @@ -116,84 +113,84 @@ /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine name = "red hypovial (bicaridine)" icon_state = "hypovial-b" - comes_with = list("bicaridine" = 30) + list_reagents = list("bicaridine" = 30) /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin name = "green hypovial (Anti-Tox)" icon_state = "hypovial-a" - comes_with = list("antitoxin" = 30) + list_reagents = list("antitoxin" = 30) /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane name = "orange hypovial (kelotane)" icon_state = "hypovial-k" - comes_with = list("kelotane" = 30) + list_reagents = list("kelotane" = 30) /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin name = "blue hypovial (dexalin)" icon_state = "hypovial-d" - comes_with = list("dexalin" = 30) + list_reagents = list("dexalin" = 30) /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord name = "hypovial (tricordrazine)" icon_state = "hypovial" - comes_with = list("tricordrazine" = 30) + list_reagents = list("tricordrazine" = 30) /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction name = "pink hypovial (breast treatment)" icon_state = "hypovial-pink" - comes_with = list("BEsmaller_hypo" = 30) + list_reagents = list("BEsmaller_hypo" = 30) /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction name = "pink hypovial (penis treatment)" icon_state = "hypovial-pink" - comes_with = list("PEsmaller_hypo" = 30) + list_reagents = list("PEsmaller_hypo" = 30) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO name = "deluxe hypovial" icon_state = "hypoviallarge-cmos" - comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20) + list_reagents = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine name = "large red hypovial (bicaridine)" icon_state = "hypoviallarge-b" - comes_with = list("bicaridine" = 60) + list_reagents = list("bicaridine" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin name = "large green hypovial (anti-tox)" icon_state = "hypoviallarge-a" - comes_with = list("antitoxin" = 60) + list_reagents = list("antitoxin" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane name = "large orange hypovial (kelotane)" icon_state = "hypoviallarge-k" - comes_with = list("kelotane" = 60) + list_reagents = list("kelotane" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin name = "large blue hypovial (dexalin)" icon_state = "hypoviallarge-d" - comes_with = list("dexalin" = 60) + list_reagents = list("dexalin" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal name = "large black hypovial (charcoal)" icon_state = "hypoviallarge-t" - comes_with = list("charcoal" = 60) + list_reagents = list("charcoal" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord name = "large hypovial (tricord)" icon_state = "hypoviallarge" - comes_with = list("tricordrazine" = 60) + list_reagents = list("tricordrazine" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu name = "large green hypovial (salglu)" icon_state = "hypoviallarge-a" - comes_with = list("salglu_solution" = 60) + list_reagents = list("salglu_solution" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh name = "large orange hypovial (synthflesh)" icon_state = "hypoviallarge-k" - comes_with = list("synthflesh" = 60) + list_reagents = list("synthflesh" = 60) /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat name = "combat hypovial" icon_state = "hypoviallarge-t" - comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine + list_reagents = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm index d09b18f244..696117a0c1 100644 --- a/code/modules/reagents/reagent_containers/rags.dm +++ b/code/modules/reagents/reagent_containers/rags.dm @@ -73,9 +73,9 @@ if(M.fire_stacks) var/minus_plus = M.fire_stacks < 0 ? 1 : -1 var/amount = min(abs(M.fire_stacks), soak_efficiency) - var/r_id = "fuel" + var/r_id = /datum/reagent/fuel if(M.fire_stacks < 0) - r_id = "water" + r_id = /datum/reagent/water reagents.add_reagent(r_id, amount * 0.3) M.adjust_fire_stacks(minus_plus * amount) M.wash_cream() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index ddbc6cf92b..048cebcf3e 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -52,13 +52,13 @@ user.changeNext_move(CLICK_CD_RANGE*2) user.newtonian_move(get_dir(A, user)) var/turf/T = get_turf(src) - if(reagents.has_reagent("sacid")) + if(reagents.has_reagent(/datum/reagent/toxin/acid)) message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].") - if(reagents.has_reagent("facid")) + if(reagents.has_reagent(/datum/reagent/toxin/acid/fluacid)) message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].") - if(reagents.has_reagent("lube")) + if(reagents.has_reagent(/datum/reagent/lube)) message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].") return @@ -235,9 +235,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 @@ -245,9 +245,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 diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 0964b67490..03aaa99477 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) . = ..() @@ -58,7 +58,7 @@ 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/water_cooler @@ -99,7 +99,7 @@ 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/high //Unused - Good for ghost roles name = "high-capacity fuel tank" @@ -136,12 +136,12 @@ /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/weldingtool)) - 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) @@ -171,7 +171,7 @@ icon_state = "pepper" anchored = TRUE density = FALSE - reagent_id = "condensedcapsaicin" + reagent_id = /datum/reagent/consumable/condensedcapsaicin /obj/structure/reagent_dispensers/peppertank/Initialize() . = ..() @@ -191,7 +191,7 @@ 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 //////// //Kegs// @@ -201,7 +201,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) @@ -213,42 +213,41 @@ desc = "A keg." icon = 'modular_citadel/icons/obj/objects.dmi' icon_state = "keg" - reagent_id = "water" /obj/structure/reagent_dispensers/keg/mead name = "keg of mead" desc = "A keg of mead." icon_state = "orangekeg" - reagent_id = "mead" + reagent_id = /datum/reagent/consumable/ethanol/mead /obj/structure/reagent_dispensers/keg/aphro name = "keg of aphrodisiac" desc = "A keg of aphrodisiac." icon_state = "pinkkeg" - reagent_id = "aphro" + reagent_id = /datum/reagent/drug/aphrodisiac tank_volume = 150 /obj/structure/reagent_dispensers/keg/aphro/strong name = "keg of strong aphrodisiac" desc = "A keg of strong and addictive aphrodisiac." - reagent_id = "aphro+" + reagent_id = /datum/reagent/drug/aphrodisiacplus tank_volume = 120 /obj/structure/reagent_dispensers/keg/milk name = "keg of milk" desc = "It's not quite what you were hoping for." icon_state = "whitekeg" - reagent_id = "milk" + reagent_id = /datum/reagent/consumable/milk /obj/structure/reagent_dispensers/keg/semen name = "keg of semen" desc = "Dear lord, where did this even come from?" icon_state = "whitekeg" - reagent_id = "semen" + reagent_id = /datum/reagent/consumable/semen /obj/structure/reagent_dispensers/keg/gargle name = "keg of pan galactic gargleblaster" desc = "A keg of... wow that's a long name." icon_state = "bluekeg" - reagent_id = "gargleblaster" + reagent_id = /datum/reagent/consumable/ethanol/gargle_blaster tank_volume = 100 \ No newline at end of file diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 05e4c667f6..20242c9165 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -7,7 +7,7 @@ id = "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 @@ -15,7 +15,7 @@ id = "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 diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 05c4a7cd93..b25ee9bb2d 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -271,7 +271,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/radium, 7) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -291,7 +291,9 @@ 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/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) @@ -304,7 +306,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,/datum/reagent/nanomachines,/datum/reagent/toxin/acid) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -331,7 +333,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" @@ -380,7 +382,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" @@ -390,7 +392,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 78f636d948..9ba45fb1a3 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -222,7 +222,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 be12d06ede..dde61ec378 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -35,7 +35,7 @@ host_mob.adjustStaminaLoss(-10) //stimulants give stamina heal now host_mob.lying = 0 host_mob.update_canmove() - 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 e2e1661ab7..53da4d65c4 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -64,7 +64,7 @@ if(R.id == "nanite_b_gone") host_mob.adjustToxLoss(4) continue - host_mob.reagents.remove_reagent(R.id,1) + host_mob.reagents.remove_reagent(R.type,1) /datum/nanite_program/brain_heal name = "Neural Regeneration" @@ -164,7 +164,7 @@ /datum/nanite_program/purging_advanced/active_effect() host_mob.adjustToxLoss(-1, forced = TRUE) 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 38a5282aef..6cd54dd941 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -394,7 +394,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 @@ -497,7 +497,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 1146f01f0b..17a6b77bfe 100644 --- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm @@ -114,19 +114,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 @@ -160,7 +160,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 @@ -168,13 +168,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() . = ..() @@ -184,4 +184,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/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 292aba6c05..0838e70bfd 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -910,9 +910,9 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/lightpink/tick() owner.adjustStaminaLoss(-4.5) 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 363331e12d..e5b30962ae 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) @@ -44,7 +44,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)) @@ -113,8 +113,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() @@ -131,7 +131,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!") @@ -268,7 +268,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 7b5fe9e8b8..75a15be9ce 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 ff55a87dfa..1405bbad51 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) @@ -56,7 +56,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 d6536f4fdd..0e8bf1e11f 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!") @@ -73,7 +73,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 @@ -199,7 +199,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 a21fddb6cf..bec2c2c1ae 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 6c7ea102bc..55865d1ae2 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -51,7 +51,7 @@ Regenerative extracts: colour = "purple" /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" @@ -174,7 +174,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" @@ -185,7 +185,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 @@ -193,7 +193,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 a86db788a6..72b4158be6 100644 --- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm +++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm @@ -38,10 +38,10 @@ Self-sustaining extracts: return if(reagentselect == "lesser plasma") amount = 4 - reagentselect = "plasma" + reagentselect = /datum/reagent/toxin/plasma if(reagentselect == "holy water and uranium") - reagentselect = "holywater" - secondary = "uranium" + reagentselect = /datum/reagent/water/holywater + secondary = /datum/reagent/uranium extract.forceMove(user.drop_location()) qdel(src) user.put_in_active_hand(extract) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index ab0db8c4a7..c1d539f3ef 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -193,7 +193,7 @@ 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 @@ -229,13 +229,13 @@ 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 @@ -272,7 +272,7 @@ 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/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) @@ -545,12 +545,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 @@ -565,7 +565,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) @@ -587,7 +587,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/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm index f8fb160a8a..d95d0a3ac7 100644 --- a/code/modules/surgery/advanced/necrotic_revival.dm +++ b/code/modules/surgery/advanced/necrotic_revival.dm @@ -19,7 +19,7 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30) 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 87e6a8a99f..86832602e8 100644 --- a/code/modules/surgery/advanced/viral_bonding.dm +++ b/code/modules/surgery/advanced/viral_bonding.dm @@ -20,7 +20,7 @@ name = "viral bond" implements = list(TOOL_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/embalming.dm b/code/modules/surgery/embalming.dm index 0af3240c5d..c6d2c72caa 100644 --- a/code/modules/surgery/embalming.dm +++ b/code/modules/surgery/embalming.dm @@ -12,7 +12,7 @@ /datum/surgery_step/embalming name = "embalming body" implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35) - chems_needed = list("drying_agent", "sterilizine") + chems_needed = list(/datum/reagent/drying_agent, /datum/reagent/space_cleaner/sterilizine) require_all_chems = FALSE /datum/surgery_step/embalming/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm index 86b2a8e909..afe8c9d1d1 100644 --- a/code/modules/surgery/graft_synthtissue.dm +++ b/code/modules/surgery/graft_synthtissue.dm @@ -22,7 +22,7 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) repeatable = TRUE time = 75 - chems_needed = list("synthtissue") + chems_needed = list(/datum/reagent/synthtissue) var/obj/item/organ/chosen_organ var/health_restored = 10 @@ -41,7 +41,7 @@ chosen_organ = organs[chosen_organ] if(!chosen_organ) return -1 - if(!target.reagents.has_reagent("synthtissue")) + if(!target.reagents.has_reagent(/datum/reagent/synthtissue)) to_chat(user, "There's no synthtissue available for use on [chosen_organ]") return -1 var/datum/reagent/synthtissue/Sf = locate(/datum/reagent/synthtissue) in target.reagents.reagent_list @@ -58,7 +58,7 @@ health_restored += (Sf.data["grown_volume"]/10) user.visible_message("[user] begins to graft synthtissue onto [chosen_organ].") - target.reagents.remove_reagent("synthtissue", 10) + target.reagents.remove_reagent(/datum/reagent/synthtissue, 10) /datum/surgery_step/graft_synthtissue/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] successfully grafts synthtissue to [chosen_organ].", "You succeed in grafting 10u of the synthflesh to the [chosen_organ].") diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm index 0a4bd270a8..8ea4ea855d 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -42,5 +42,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 65172a1545..93ed149a2b 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 5b74b58cd0..51784bdc61 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -247,5 +247,5 @@ obj/item/organ/heart/cybernetic/upgraded/on_life() 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) - 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 01559c83c3..59185ebaaf 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -33,14 +33,12 @@ if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER)) //handle liver toxin filtration - for(var/I in C.reagents.reagent_list) - var/datum/reagent/pickedreagent = I - if(istype(pickedreagent, /datum/reagent/toxin)) - var/thisamount = C.reagents.get_reagent_amount(initial(pickedreagent.id)) - if (thisamount <= toxTolerance && thisamount) - C.reagents.remove_reagent(initial(pickedreagent.id), 1) - else - damage += (thisamount*toxLethality) + for(var/datum/reagent/toxin/T in C.reagents.reagent_list) + var/thisamount = C.reagents.get_reagent_amount(T.type) + if (thisamount && thisamount <= toxTolerance) + C.reagents.remove_reagent(T.type, 1) + else + damage += (thisamount*toxLethality) //metabolize reagents C.reagents.metabolize(C, can_overdose=TRUE) @@ -56,7 +54,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 //Just in case diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 6b0e4f01ae..86d2a9c2f7 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -69,7 +69,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 @@ -301,13 +301,13 @@ var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz]) 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.adjustOrganLoss(ORGAN_SLOT_BRAIN, 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 @@ -331,7 +331,7 @@ H.adjustFireLoss(nitryl_pp/4) gas_breathed = breath_gases[/datum/gas/nitryl] 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]-=gas_breathed @@ -339,7 +339,7 @@ gas_breathed = breath_gases[/datum/gas/stimulum] if (gas_breathed > gas_stimulation_min) var/existing = H.reagents.get_reagent_amount("stimulum") - H.reagents.add_reagent("stimulum", max(0, 5 - existing)) + H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing)) breath_gases[/datum/gas/stimulum]-=gas_breathed // Miasma @@ -459,7 +459,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/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index a2a9c37cfd..58c483491d 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -107,7 +107,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/vore/resizing/sizechemicals.dm b/code/modules/vore/resizing/sizechemicals.dm index f83ba2ce76..5015216230 100644 --- a/code/modules/vore/resizing/sizechemicals.dm +++ b/code/modules/vore/resizing/sizechemicals.dm @@ -5,7 +5,6 @@ /datum/reagent/medicine/macrocillin name = "Macrocillin" - id = "macrocillin" description = "Glowing yellow liquid." reagent_state = LIQUID color = "#FFFF00" // rgb: 255, 255, 0 @@ -17,13 +16,12 @@ M.sizescale(size) M << "You grow!" break - if(M.reagents.has_reagent("macrocillin")) - M.reagents.remove_reagent("macrocillin", 20) + if(M.reagents.has_reagent(/datum/reagent/medicine/macrocillin)) + M.reagents.remove_reagent(/datum/reagent/medicine/macrocillin, 20) ..() /datum/reagent/medicine/microcillin name = "Microcillin" - id = "microcillin" description = "Murky purple liquid." reagent_state = LIQUID color = "#800080" @@ -35,8 +33,8 @@ M.sizescale(size) M << "You shrink!" break; - if(M.reagents.has_reagent("microcillin")) - M.reagents.remove_reagent("microcillin", 20) + if(M.reagents.has_reagent(/datum/reagent/medicine/microcillin)) + M.reagents.remove_reagent(/datum/reagent/medicine/microcillin, 20) ..() @@ -62,14 +60,13 @@ M.sizescale(SIZESCALE_SMALL) M << "You grow!" - if(M.reagents.has_reagent("normalcillin")) - M.reagents.remove_reagent("normalcillin", 20) + if(M.reagents.has_reagent(/datum/reagent/medicine/normalcillin)) + M.reagents.remove_reagent(/datum/reagent/medicine/normalcillin, 20) ..() /datum/reagent/medicine/sizeoxadone name = "Sizeoxadone" - id = "sizeoxadone" description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed." reagent_state = LIQUID color = "#1E90FF" @@ -93,7 +90,6 @@ /datum/reagent/medicine/ickypak name = "Ickypak" - id = "ickypak" description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things." reagent_state = LIQUID color = "#0E900E" diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 5d9010a7bd..2231a1f0bf 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -179,7 +179,7 @@ /datum/status_effect/chem/astral_insurance/tick(mob/living/carbon/M) . = ..() - if(owner.reagents.has_reagent("astral")) + if(owner.reagents.has_reagent(/datum/reagent/fermi/astral)) return if(owner.mind == originalmind) //If they're home, let the chem deal with deletion. return @@ -281,15 +281,15 @@ var/mob/living/carbon/M = owner //chem calculations - if(!owner.reagents.has_reagent("enthrall") && !owner.reagents.has_reagent("enthrallTest")) + if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall/test)) if (phase < 3 && phase != 0) deltaResist += 3//If you've no chem, then you break out quickly if(prob(5)) to_chat(owner, "Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.") if (mental_capacity <= 500 || phase == 4) - if (owner.reagents.has_reagent("mannitol")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol)) mental_capacity += 5 - if (owner.reagents.has_reagent("neurine")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) mental_capacity += 10 //mindshield check @@ -368,7 +368,7 @@ if(owner.client?.prefs.lewdchem && !customEcho) to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (4) //mindbroken - if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra")) + if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall)) phase = 2 mental_capacity = 500 customTriggers = list() @@ -738,18 +738,18 @@ deltaResist*= 0.5-(((2/200)*M.arousalloss)/1)//more aroused you are, the weaker resistance you can give, the less you are, the more you gain. (+/- 0.5) //chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist. - if (owner.reagents.has_reagent("mannitol")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol)) deltaResist *= 1.25 - if (owner.reagents.has_reagent("neurine")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) deltaResist *= 1.5 if (!HAS_TRAIT(owner, TRAIT_CROCRIN_IMMUNE) && M.canbearoused && owner.client?.prefs.lewdchem) - if (owner.reagents.has_reagent("anaphro")) + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac)) deltaResist *= 1.5 - if (owner.reagents.has_reagent("anaphro+")) + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus)) deltaResist *= 2 - if (owner.reagents.has_reagent("aphro")) + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac)) deltaResist *= 0.75 - if (owner.reagents.has_reagent("aphro+")) + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus)) deltaResist *= 0.5 //Antag resistance //cultists are already brainwashed by their god diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index 8d70464a2d..d5daf24f8a 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -8,7 +8,7 @@ var/orgasm_verb = "cumming" //present continous var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? var/size = 2 //can vary between num or text, just used in icon_state strings - var/fluid_id = null + var/datum/reagent/fluid_id = null var/fluid_max_volume = 50 var/fluid_efficiency = 1 var/fluid_rate = CUM_RATE diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 105f5e157d..73d03eff3b 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -6,7 +6,7 @@ zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_BREASTS size = "c" //refer to the breast_values static list below for the cups associated number values - fluid_id = "milk" + fluid_id = /datum/reagent/consumable/milk fluid_rate = MILK_RATE shape = "pair" genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION @@ -44,7 +44,7 @@ desc += " You estimate that they're [uppertext(size)]-cups." if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) - desc += " They're leaking [fluid_id]." + desc += " They're leaking [initial(fluid_id.name)]." var/string if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index 547674a5f1..a911eefe01 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -11,7 +11,7 @@ var/size_name = "average" shape = "Single" var/sack_size = BALLS_SACK_SIZE_DEF - fluid_id = "semen" + fluid_id = /datum/reagent/consumable/semen masturbation_verb = "massage" layer_index = TESTICLES_LAYER_INDEX diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 9dfe811571..7f91310e3e 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -6,5 +6,5 @@ zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_WOMB genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION - fluid_id = "femcum" + fluid_id = /datum/reagent/consumable/femcum linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index 35d13b3aa6..c5b9f16bc9 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -218,7 +218,7 @@ Creating a chem with a low purity will make you permanently fall in love with so if(LAZYLEN(seen)) return - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(type) FallInLove(M, pick(seen)) return diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index c72b702a97..0e53225aff 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -49,9 +49,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING var/list/candies = list() var/pollStarted = FALSE var/startHunger - impure_chem = "SDGFtox" + impure_chem = /datum/reagent/impure/SDGFtox inverse_chem_val = 0.5 - inverse_chem = "SDZF" + inverse_chem = /datum/reagent/impure/SDZF can_synth = TRUE @@ -122,7 +122,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.nutrition = startHunger/2 //Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger. - SM.reagents.add_reagent("SDGFheal", volume) + SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) M.reagents.remove_reagent(id, volume) log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made") @@ -265,7 +265,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.set_species(mutation) //Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger. - SM.reagents.add_reagent("SDGFheal", volume) + SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) M.reagents.remove_reagent(id, volume) SM.updatehealth() @@ -338,7 +338,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustToxLoss(1, 0)// the warning! if(86)//mean clone time! - if (!M.reagents.has_reagent("pen_acid"))//Counterplay is pent.) + if (!M.reagents.has_reagent(/datum/reagent/medicine/pen_acid))//Counterplay is pent.) message_admins("(non-infectious) SDZF: Zombie spawned at [M] [COORD(M)]!") M.nutrition = startHunger - 500//YOU BEST BE RUNNING AWAY AFTER THIS YOU BADDIE M.next_move_modifier = 1 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm index d7ff42a9eb..8f267e58c7 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm @@ -41,7 +41,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die if(origin.mind && origin.mind != originalmind) to_chat(originalmind.current, "There's a foreign presence in your body blocking your return!") return ..() - if(origin.reagents.has_reagent("astral") ) + if(origin.reagents.has_reagent(/datum/reagent/fermi/astral) ) var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in origin.reagents.reagent_list if(As.current_cycle < 10) to_chat(originalmind.current, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!") @@ -90,7 +90,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die if(prob(50)) to_chat(G, "The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!
") do_teleport(G, M.loc) - M.reagents.remove_reagent(id, current_cycle/10, FALSE)//exponent + metabolization_rate = current_cycle/10 //exponential sleepytime+=5 if(G)//This is a mess because of how slow qdel is, so this is all to stop runtimes. if(G.mind) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm index 5f3fc61fa7..91b65af869 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm @@ -69,7 +69,7 @@ /datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location do_sparks(5,FALSE,M) to_chat(M, "You feel your wavefunction collapse!") - if(!M.reagents.has_reagent("stabilizing_agent")) + if(!M.reagents.has_reagent(/datum/reagent/stabilizing_agent)) do_teleport(M, location_return, 0, asoundin = 'sound/effects/phasein.ogg') //Teleports home do_sparks(5,FALSE,M) qdel(Eigenstate) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 7d358b4149..0b686d1a34 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -26,9 +26,9 @@ taste_description = "a milky ice cream like flavour." overdose_threshold = 17 metabolization_rate = 0.25 - impure_chem = "BEsmaller" //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/BEsmaller //If you make an inpure chem, it stalls growth inverse_chem_val = 0.35 - inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse + inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse can_synth = FALSE var/message_spam = FALSE @@ -44,7 +44,7 @@ M.Knockdown(50) M.Stun(50) B.throw_at(T2, 8, 1) - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(type) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call()) @@ -78,7 +78,7 @@ B.cached_size = 0 B.prev_size = 0 to_chat(H, "Your chest feels warm, tingling with newfound sensitivity.
") - H.reagents.remove_reagent(id, 5) + H.reagents.remove_reagent(type, 5) B.Insert(H) //If they have them, increase size. If size is comically big, limit movement and rip clothes. @@ -192,9 +192,9 @@ taste_description = "chinese dragon powder" overdose_threshold = 17 //ODing makes you male and removes female genitals metabolization_rate = 0.5 - impure_chem = "PEsmaller" //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/PEsmaller //If you make an inpure chem, it stalls growth inverse_chem_val = 0.35 - inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead. + inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE var/message_spam = FALSE @@ -210,7 +210,7 @@ M.Knockdown(50) M.Stun(50) P.throw_at(T2, 8, 1) - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(id) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call()) @@ -236,7 +236,7 @@ P.length = 1 to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.") P.prev_length = 1 - H.reagents.remove_reagent(id, 5) + H.reagents.remove_reagent(type, 5) P.Insert(H) P.modify_size(0.1) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index b3ee8f5b7f..36eee1cf33 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -7,9 +7,9 @@ taste_description = "affection and love!" can_synth = FALSE value = 20 - impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction + impure_chem = /datum/reagent/impure/fermiTox // What chemical is metabolised with an inpure reaction inverse_chem_val = 0.25 // If the impurity is below 0.5, replace ALL of the chem with inverse_chemupon metabolising - inverse_chem = "fermiTox" + inverse_chem = /datum/reagent/impure/fermiTox //This should process fermichems to find out how pure they are and what effect to do. @@ -174,9 +174,9 @@ description = "A stablised EMP that is highly volatile, shocking small nano machines that will kill them off at a rapid rate in a patient's system." color = "#708f8f" overdose_threshold = 15 - impure_chem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/nanite_b_goneTox //If you make an inpure chem, it stalls growth inverse_chem_val = 0.25 - inverse_chem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse + inverse_chem = /datum/reagent/fermi/nanite_b_goneTox //At really impure vols, it just becomes 100% inverse taste_description = "what can only be described as licking a battery." pH = 9 value = 90 @@ -290,7 +290,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) if(LAZYLEN(holder.reagent_list) == 1) return else - holder.remove_reagent("fermiTest", volume)//Avoiding recurrsion + holder.del_reagent(type)//Avoiding recurrsion var/location = get_turf(holder.my_atom) if(cached_purity < 0.34 || cached_purity == 1) var/datum/effect_system/foam_spread/s = new() @@ -323,7 +323,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) //Consumes self on addition and shifts pH /datum/reagent/fermi/acidic_buffer/on_new(datapH) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return ..() data = datapH if(LAZYLEN(holder.reagent_list) == 1) @@ -333,7 +333,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) for(var/mob/M in seen) to_chat(M, "The beaker fizzes as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(id, volume, ignore_pH = TRUE) + holder.remove_reagent(type, volume, ignore_pH = TRUE) ..() /datum/reagent/fermi/basic_buffer @@ -345,7 +345,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) can_synth = TRUE /datum/reagent/fermi/basic_buffer/on_new(datapH) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return ..() data = datapH if(LAZYLEN(holder.reagent_list) == 1) @@ -355,7 +355,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) for(var/mob/M in seen) to_chat(M, "The beaker froths as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(id, volume, ignore_pH = TRUE) + holder.remove_reagent(type, volume, ignore_pH = TRUE) ..() //Turns you into a cute catto while it's in your system. diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index fa4f48172b..3e9ed259ac 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -6,9 +6,9 @@ color = "#68e83a" pH = 8.6 overdose_threshold = 35 - impure_chem = "yamerol_tox" + impure_chem = /datum/reagent/impure/yamerol_tox inverse_chem_val = 0.4 - inverse_chem = "yamerol_tox" + inverse_chem = /datum/reagent/impure/yamerol_tox can_synth = TRUE /datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C) @@ -34,7 +34,7 @@ qdel(T) nT.Insert(C) to_chat(C, "You feel your tongue.... unfluffify...?") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) ..() /datum/reagent/fermi/yamerol/overdose_process(mob/living/carbon/C) @@ -50,7 +50,7 @@ T = new() T.Insert(C) to_chat(C, "You feel your tongue reform in your mouth.") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) else if((oT.name == "fluffy tongue") && (purity == 1)) var/obj/item/organ/tongue/T @@ -62,13 +62,13 @@ qdel(oT) T.Insert(C) to_chat(C, "You feel your tongue.... unfluffify...?") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) if(!C.getorganslot(ORGAN_SLOT_LUNGS)) var/obj/item/organ/lungs/yamerol/L = new() L.Insert(C) to_chat(C, "You feel the yamerol merge in your chest.") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) C.adjustOxyLoss(-3) ..() @@ -143,7 +143,7 @@ if(data["grown_volume"] > 175) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u) if(volume >= 14) if(C.regenerate_organs(only_one = TRUE)) - C.reagents.remove_reagent(id, 15) + C.reagents.remove_reagent(type, 15) to_chat(C, "You feel something reform inside of you!") data["injected_vol"] -= metabolization_rate diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index fcde3a8b79..56f793cd66 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -9,19 +9,19 @@ /datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder, var/atom/my_atom, reactVol) if(clear_conversion == REACTION_CLEAR_IMPURE | REACTION_CLEAR_INVERSE) for(var/id in results) - var/datum/reagent/R = my_atom.reagents.has_reagent("[id]") + var/datum/reagent/R = my_atom.reagents.has_reagent(id) if(R.purity == 1) continue var/cached_volume = R.volume if(clear_conversion == REACTION_CLEAR_INVERSE && R.inverse_chem) if(R.inverse_chem_val > R.purity) - my_atom.reagents.remove_reagent(R.id, cached_volume, FALSE) + my_atom.reagents.remove_reagent(R.type, cached_volume, FALSE) my_atom.reagents.add_reagent(R.inverse_chem, cached_volume, FALSE, other_purity = 1) else if (clear_conversion == REACTION_CLEAR_IMPURE && R.impure_chem) var/impureVol = cached_volume * (1 - R.purity) - my_atom.reagents.remove_reagent(R.id, (impureVol), FALSE) + my_atom.reagents.remove_reagent(R.type, (impureVol), FALSE) my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1) R.cached_purity = R.purity R.purity = 1 @@ -76,14 +76,15 @@ var/datum/effect_system/smoke_spread/chem/s = new() R.my_atom = my_atom //Give the gas a fingerprint - for (var/datum/reagent/reagent in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding - R.add_reagent(reagent.id, reagent.volume/3) //Seems fine? I think I fixed the infinite explosion bug. + for (var/A in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding + var/datum/reagent/R2 = A + R.add_reagent(R2.type, R2.volume/3) //Seems fine? I think I fixed the infinite explosion bug. - if (reagent.purity < 0.6) - ImpureTot = (ImpureTot + (1-reagent.purity)) / 2 + if (R2.purity < 0.6) + ImpureTot = (ImpureTot + (1-R2.purity)) / 2 if(pH < 4) //if acidic, make acid spray - R.add_reagent("fermiAcid", (volume/3)) + R.add_reagent(/datum/reagent/impure/fermiTox, (volume/3)) if(R.reagent_list) s.set_up(R, (volume/5), my_atom) s.start() @@ -203,8 +204,8 @@ var/datum/reagent/fermi/breast_enlarger/BE = locate(/datum/reagent/fermi/breast_enlarger) in my_atom.reagents.reagent_list var/cached_volume = BE.volume if(BE.purity < 0.35) - holder.remove_reagent(src.id, cached_volume) - holder.add_reagent("BEsmaller", cached_volume) + holder.remove_reagent(type, cached_volume) + holder.add_reagent(/datum/reagent/fermi/BEsmaller, cached_volume) /datum/chemical_reaction/fermi/breast_enlarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH) @@ -252,8 +253,8 @@ var/datum/reagent/fermi/penis_enlarger/PE = locate(/datum/reagent/fermi/penis_enlarger) in my_atom.reagents.reagent_list var/cached_volume = PE.volume if(PE.purity < 0.35) - holder.remove_reagent(src.id, cached_volume) - holder.add_reagent("PEsmaller", cached_volume) + holder.remove_reagent(type, cached_volume) + holder.add_reagent(/datum/reagent/fermi/PEsmaller, cached_volume) /datum/chemical_reaction/fermi/astral name = "Astrogen" @@ -350,7 +351,7 @@ var/turf/T = get_turf(my_atom) var/datum/reagents/R = new/datum/reagents(1000) var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent("enthrallExplo", volume) + R.add_reagent(/datum/reagent/fermi/enthrallExplo, volume) s.set_up(R, volume/2, T) s.start() my_atom.reagents.clear_reagents() From f3e32641bfe408532669840f25a07ac01c9fc22d Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 23 Dec 2019 14:45:00 +0100 Subject: [PATCH 06/78] fukken donators --- .../code/modules/custom_loadout/custom_items.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 1833211b7d..eaf128626d 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -518,7 +518,7 @@ item_state = "mikubikini" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/mikujacket name = "starlight singer jacket" @@ -527,7 +527,7 @@ item_state = "mikujacket" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/mikuhair name = "starlight singer hair" @@ -536,7 +536,7 @@ item_state = "mikuhair" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE flags_inv = HIDEHAIR /obj/item/clothing/gloves/mikugloves @@ -546,7 +546,7 @@ item_state = "mikugloves" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/sneakers/mikuleggings name = "starlight singer leggings" @@ -555,4 +555,4 @@ item_state = "mikuleggings" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE From 864b768c678d760e47584ebf61c983863503a987 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 23 Dec 2019 19:36:47 +0100 Subject: [PATCH 07/78] Fixes digitigrades. --- code/modules/surgery/bodyparts/helpers.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 3dc337f754..51866b6719 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -290,8 +290,8 @@ for(var/X in bodyparts) var/obj/item/bodypart/O = X if((O.body_part == LEG_LEFT || O.body_part == LEG_RIGHT) && ((!O.use_digitigrade && !swap_back) || (O.use_digitigrade && swap_back))) - O.use_digitigrade = swap_back ? FULL_DIGITIGRADE : NOT_DIGITIGRADE - O.update_limb() + O.use_digitigrade = swap_back ? NOT_DIGITIGRADE : FULL_DIGITIGRADE + O.update_limb(FALSE, src) if(ishuman(src)) var/mob/living/carbon/human/H = src From ab34faa41d2f68774d156cb44d4c4a2233680dea Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 24 Dec 2019 02:01:45 +0100 Subject: [PATCH 08/78] fix taur --- code/modules/client/preferences_savefile.dm | 9 +++++++-- code/modules/mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mob/living/carbon/human/update_icons.dm | 9 +++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f7f49a66af..68d37d2f32 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 24 +#define SAVEFILE_VERSION_MAX 25 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -113,6 +113,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/datum/quirk/exhibitionism/E var/quirk_name = initial(E.name) all_quirks += quirk_name + if(current_version < 25) + var/digi + S["feature_lizard_legs"] >> digi + if(digi == "Digitigrade Legs") + WRITE_FILE(S["feature_lizard_legs"], "Digitigrade") /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) @@ -502,7 +507,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) - features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) + features["legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Plantigrade") features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list, "None") features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index ab3b20ac9f..1d2c889389 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -844,7 +844,7 @@ switch(random) if(1) to_chat(user, "Your appearance morphs to that of a very small humanoid ash dragon! You get to look like a freak without the cool abilities.") - H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade Legs") + H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade") H.eye_color = "fee5a3" H.set_species(/datum/species/lizard) if(2) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index a6132eb0e4..582739a411 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -399,13 +399,10 @@ There are several things that need to be remembered: var/datum/sprite_accessory/taur/T if("taur" in dna.species.mutant_bodyparts) T = GLOB.taur_list[dna.features["taur"]] - if(T) - center = T.center - dimension_x = T.dimension_x - dimension_y = T.dimension_y if(!item_level_support && S.mutantrace_variation) if(T?.taur_mode) + var/init_worn_icon = worn_icon variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode switch(variation_flag) if(STYLE_HOOF_TAURIC) @@ -414,6 +411,10 @@ There are several things that need to be remembered: worn_icon = 'icons/mob/taur_naga.dmi' if(STYLE_PAW_TAURIC) worn_icon = 'icons/mob/taur_canine.dmi' + if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied. + center = T.center + dimension_x = T.dimension_x + dimension_y = T.dimension_y else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) //not a taur, but digitigrade legs. worn_icon = 'icons/mob/suit_digi.dmi' variation_flag |= STYLE_DIGITIGRADE From 53d142b4c0bd1f86d1afa20cc9940b243f840721 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 25 Dec 2019 01:34:33 +0100 Subject: [PATCH 09/78] more work. --- .../game/gamemodes/clown_ops/clown_weapons.dm | 2 +- code/game/objects/items/apc_frame.dm | 2 +- code/game/objects/items/cigs_lighters.dm | 4 +- code/game/objects/items/devices/flashlight.dm | 2 +- code/game/objects/items/devices/scanners.dm | 2 +- .../objects/items/stacks/sheets/mineral.dm | 10 +- .../items/stacks/sheets/sheet_types.dm | 16 +- code/game/objects/structures/watercloset.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/events/holiday/vday.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 2 +- .../modules/food_and_drinks/food/condiment.dm | 36 ++--- .../food_and_drinks/food/customizables.dm | 2 +- .../food_and_drinks/food/snacks/dough.dm | 16 +- .../food_and_drinks/food/snacks/meat.dm | 46 +++--- .../food_and_drinks/food/snacks_bread.dm | 62 ++++---- .../food_and_drinks/food/snacks_burgers.dm | 90 +++++------ .../food_and_drinks/food/snacks_cake.dm | 58 +++---- .../food_and_drinks/food/snacks_egg.dm | 20 +-- .../food_and_drinks/food/snacks_frozen.dm | 76 ++++----- .../food_and_drinks/food/snacks_meat.dm | 100 ++++++------ .../food_and_drinks/food/snacks_other.dm | 150 +++++++++--------- .../food_and_drinks/food/snacks_pastry.dm | 148 ++++++++--------- .../food_and_drinks/food/snacks_pie.dm | 74 ++++----- .../food_and_drinks/food/snacks_pizza.dm | 34 ++-- .../food_and_drinks/food/snacks_salad.dm | 40 ++--- .../food/snacks_sandwichtoast.dm | 54 +++---- .../food_and_drinks/food/snacks_soup.dm | 78 ++++----- .../food_and_drinks/food/snacks_spaghetti.dm | 30 ++-- .../food_and_drinks/food/snacks_sushi.dm | 26 +-- .../food_and_drinks/food/snacks_vend.dm | 18 +-- .../kitchen_machinery/icecream_vat.dm | 2 +- .../food_and_drinks/recipes/drinks_recipes.dm | 72 ++++----- .../food_and_drinks/recipes/food_mixtures.dm | 22 +-- code/modules/holiday/easter.dm | 14 +- code/modules/hydroponics/grown/ambrosia.dm | 6 +- code/modules/hydroponics/grown/apple.dm | 4 +- code/modules/hydroponics/grown/banana.dm | 8 +- code/modules/hydroponics/grown/beans.dm | 4 +- code/modules/hydroponics/grown/berries.dm | 20 +-- code/modules/hydroponics/grown/cannabis.dm | 8 +- code/modules/hydroponics/grown/cereals.dm | 2 +- code/modules/hydroponics/grown/chili.dm | 6 +- code/modules/hydroponics/grown/citrus.dm | 10 +- .../hydroponics/grown/cocoa_vanilla.dm | 6 +- code/modules/hydroponics/grown/corn.dm | 2 +- code/modules/hydroponics/grown/eggplant.dm | 4 +- code/modules/hydroponics/grown/flowers.dm | 12 +- .../modules/hydroponics/grown/grass_carpet.dm | 12 +- code/modules/hydroponics/grown/kudzu.dm | 2 +- code/modules/hydroponics/grown/melon.dm | 4 +- code/modules/hydroponics/grown/misc.dm | 12 +- 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/peach.dm | 2 +- code/modules/hydroponics/grown/peanuts.dm | 4 +- code/modules/hydroponics/grown/pineapple.dm | 2 +- code/modules/hydroponics/grown/potato.dm | 4 +- code/modules/hydroponics/grown/pumpkin.dm | 4 +- code/modules/hydroponics/grown/root.dm | 8 +- code/modules/hydroponics/grown/tea_coffee.dm | 8 +- code/modules/hydroponics/grown/tobacco.dm | 4 +- code/modules/hydroponics/grown/tomato.dm | 8 +- code/modules/mining/lavaland/ash_flora.dm | 8 +- code/modules/mining/ores_coins.dm | 14 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../simple_animal/hostile/banana_spider.dm | 2 +- code/modules/paperwork/pen.dm | 2 +- code/modules/paperwork/photocopier.dm | 2 +- code/modules/power/cell.dm | 2 +- .../reagents/chemistry/recipes/drugs.dm | 14 +- .../reagents/chemistry/recipes/medicine.dm | 64 ++++---- .../reagents/chemistry/recipes/others.dm | 104 ++++++------ .../chemistry/recipes/pyrotechnics.dm | 26 +-- .../chemistry/recipes/slime_extracts.dm | 46 +++--- .../reagents/chemistry/recipes/toxins.dm | 34 ++-- .../reagents/reagent_containers/bottle.dm | 28 ++-- .../reagents/reagent_containers/glass.dm | 6 +- .../reagents/reagent_containers/pill.dm | 12 +- .../reagents/reagent_containers/spray.dm | 2 +- .../reagents/reagent_containers/syringes.dm | 4 +- .../xenobiology/crossbreeding/_misc.dm | 2 +- code/modules/surgery/organs/organ_internal.dm | 2 +- code/modules/vore/eating/voreitems.dm | 2 +- .../reagents/chemistry/recipes/fermi.dm | 24 +-- .../modules/reagents/reagents/cit_reagents.dm | 8 +- 87 files changed, 963 insertions(+), 963 deletions(-) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 9b52ddda1e..40da21d6f2 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -165,7 +165,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/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 25ae182253..ab733637a2 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, "silicon" = 10) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index fac79ae414..8aa3e926a6 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -506,7 +506,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() . = ..() @@ -665,7 +665,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, "pyroxadone" = 5) /////////// diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index c861ac1512..339df0363e 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -430,7 +430,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, "hydrogen" = 10, "oxygen" = 5) //Meth-in-a-stick rad_flags = RAD_NO_CONTAMINATE var/fuel = 0 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 12a6d6e96f..9fcfa61672 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -518,7 +518,7 @@ SLIME 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("mercury" = 5, /datum/reagent/iron = 5, "silicon" = 5) var/cooldown = FALSE var/cooldown_time = 250 var/accuracy // 0 is the best accuracy. diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index fe42f88f56..b15209c615 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -108,7 +108,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 @@ -162,7 +162,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 @@ -203,7 +203,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 @@ -232,7 +232,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 tableVariant = /obj/structure/table/optable @@ -422,7 +422,7 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ icon_state = "slag" singular_name = "coal lump" merge_type = /obj/item/stack/sheet/mineral/coal - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) /obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, params) if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 4fc31ea674..b4cd5fce76 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -106,7 +106,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 tableVariant = /obj/structure/table @@ -168,7 +168,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 tableVariant = /obj/structure/table/reinforced @@ -238,7 +238,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/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there. @@ -296,7 +296,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/bamboo - grind_results = list("carbon" = 5) + grind_results = list(/datum/reagent/carbon = 5) /obj/item/stack/sheet/mineral/bamboo/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.bamboo_recipes @@ -486,7 +486,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, "blood" = 15) /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -562,7 +562,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, "holyoil" = 1) + grind_results = list(/datum/reagent/iron = 5, "teslium" = 15, "holyoil" = 1) merge_type = /obj/item/stack/tile/brass tableVariant = /obj/structure/table/reinforced/brass @@ -615,7 +615,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, "copper" = 3) //we have no "tin" reagent so this is the closest thing merge_type = /obj/item/stack/tile/bronze tableVariant = /obj/structure/table/bronze @@ -669,7 +669,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/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 343b33f964..d867119c9e 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -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("chlorine" = 3, /datum/reagent/ammonia = 1) /obj/item/reagent_containers/food/urinalcake/attack_self(mob/living/user) user.visible_message("[user] squishes [src]!", "You squish [src].", "You hear a squish.") diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index dc9e46c4b4..c1d4b7cea3 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -70,7 +70,7 @@ /obj/item/reagent_containers/food/snacks/clothing name = "oops" 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) /obj/item/clothing/attack(mob/M, mob/user, def_zone) diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index 0f1a7452df..13c516960a 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -157,7 +157,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/New() diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 92f412dd89..28ecb42970 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -236,7 +236,7 @@ /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("hot_coco" = 30, /datum/reagent/consumable/sugar = 5) foodtype = SUGAR resistance_flags = FREEZE_PROOF diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 87b7143d88..614daf4fda 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -15,19 +15,19 @@ 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. var/list/possible_states = list( - "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), - "mustard" = list("mustard", "mustard bottle", "A spice mixed with enzymes and water."), - "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."), - "bbqsauce" = list("condi_bbq", "BBQ sauce", "Hand wipes not included."), - "peanut_butter" = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) + /datum/reagent/consumable/ketchup = list("ketchup", "ketchup bottle", "You feel more American already."), + /datum/reagent/consumable/mustard = list("mustard", "mustard bottle", "A spice mixed with enzymes and water."), + /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."), + /datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included."), + /datum/reagent/consumable/peanut_butter = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. /obj/item/reagent_containers/food/condiment/suicide_act(mob/living/carbon/user) @@ -117,12 +117,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. @@ -131,7 +131,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) @@ -169,7 +169,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) @@ -185,7 +185,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 diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 072c14aea3..059840c84e 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -189,7 +189,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" diff --git a/code/modules/food_and_drinks/food/snacks/dough.dm b/code/modules/food_and_drinks/food/snacks/dough.dm index 6ae8836b28..e071fb3df7 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 8f02cd81b4..3274e0b88a 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, "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 @@ -63,7 +63,7 @@ icon_state = "crabmeatraw" cooked_type = /obj/item/reagent_containers/food/snacks/meat/crab bitesize = 3 - list_reagents = list("nutriment" = 1, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "cooking_oil" = 3) filling_color = "#EAD079" tastes = list("raw crab" = 1) foodtype = RAW | MEAT @@ -72,8 +72,8 @@ name = "crab meat" desc = "Some deliciously cooked crab meat." icon_state = "crabmeat" - list_reagents = list("nutriment" = 2) - bonus_reagents = list("nutriment" = 3, "vitamin" = 2, "cooking_oil" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, "cooking_oil" = 2) filling_color = "#DFB73A" tastes = list("crab" = 1) foodtype = MEAT @@ -88,7 +88,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, "slimejelly" = 3) filling_color = "#00FFFF" tastes = list("slime" = 1, "jelly" = 1) foodtype = MEAT | RAW | TOXIC @@ -96,7 +96,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 @@ -131,7 +131,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, "uranium" = 3) tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtype = MEAT | RAW | GROSS @@ -214,7 +214,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 @@ -225,7 +225,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, "morphine" = 5, /datum/reagent/consumable/nutriment/vitamin = 2, "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 @@ -236,7 +236,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 @@ -248,7 +248,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 @@ -258,7 +258,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, "cooking_oil" = 3) icon_state = "goliathmeat" tastes = list("meat" = 1) foodtype = RAW | MEAT | TOXIC @@ -271,7 +271,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, "blood" = 5, "cooking_oil" = 1) filling_color = rgb(150, 0, 0) icon_state = "meatwheat_clump" bitesize = 4 @@ -281,7 +281,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, "cooking_oil" = 5) //Plenty of fat! /obj/item/reagent_containers/food/snacks/meat/rawbacon name = "raw piece of bacon" @@ -289,7 +289,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, "cooking_oil" = 3) filling_color = "#B22222" tastes = list("bacon" = 1) foodtype = RAW | MEAT @@ -298,8 +298,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, "cooking_oil" = 2) filling_color = "#854817" tastes = list("bacon" = 1) foodtype = MEAT | BREAKFAST @@ -307,7 +307,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, "tranquility" = 5, "cooking_oil" = 3) tastes = list("meat" = 4, "tranquility" = 1) filling_color = "#9A6750" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/gondola @@ -321,8 +321,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 @@ -383,7 +383,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" @@ -447,8 +447,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 741e78d1d2..4f72405c8a 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 @@ -22,8 +22,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) @@ -41,8 +41,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 @@ -57,8 +57,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 @@ -67,7 +67,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 @@ -75,8 +75,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 @@ -85,7 +85,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 @@ -93,8 +93,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 @@ -104,7 +104,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 @@ -112,8 +112,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 @@ -122,7 +122,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 @@ -130,8 +130,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 @@ -140,7 +140,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 @@ -148,8 +148,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, "mutetoxin" = 5, "nothing" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "silence" = 10) foodtype = GRAIN | FRUIT @@ -158,7 +158,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, "mutetoxin" = 1, "nothing" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/breadslice/custom @@ -172,8 +172,8 @@ 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) + 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 tastes = list("bread" = 1) @@ -268,8 +268,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( 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) foodtype = GRAIN | BREAKFAST @@ -279,8 +279,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon = '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) foodtype = GRAIN | BREAKFAST @@ -291,8 +291,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( 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 8b6d6212f1..8346762bc5 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, "nanomachines" = 2, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "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, "nanomachines" = 70, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "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, "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 @@ -139,7 +139,7 @@ name = "ghost burger" desc = "Too Spooky!" icon_state = "ghostburger" - 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 alpha = 170 @@ -188,7 +188,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("redcrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/orange @@ -196,7 +196,7 @@ desc = "Contains 0% juice." icon_state = "cburger" color = "#FF9300FF" - bonus_reagents = list("orangecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list("orangecrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/yellow @@ -204,7 +204,7 @@ desc = "Bright to the last bite." icon_state = "cburger" color = "#FFF200FF" - bonus_reagents = list("yellowcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list("yellowcrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/green @@ -212,7 +212,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("greencrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/blue @@ -220,7 +220,7 @@ desc = "Is this blue rare?" icon_state = "cburger" color = "#00B7EFFF" - bonus_reagents = list("bluecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list("bluecrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/purple @@ -228,7 +228,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("purplecrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/black @@ -236,7 +236,7 @@ desc = "This is overcooked." icon_state = "cburger" color = "#1C1C1C" - bonus_reagents = list("blackcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list("blackcrayonpowder" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/white @@ -244,14 +244,14 @@ desc = "Delicous Titanium!" icon_state = "cburger" color = "#FFFFFF" - bonus_reagents = list("whitecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list("whitecrayonpowder" = 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 @@ -259,8 +259,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 @@ -272,21 +272,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("slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "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("cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "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 @@ -297,29 +297,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, "capsaicin" = 5, "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 @@ -327,7 +327,7 @@ name = "soylent burger" desc = "A eco-friendly burger made using upcycled low value biomass." icon_state = "soylentburger" - bonus_reagents = list("nutriment" = 5, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 2, "assistant" = 4) foodtype = GRAIN | MEAT | DAIRY @@ -335,7 +335,7 @@ name = "mcrib" desc = "An elusive rib shaped burger with limited availablity across the galaxy. Not as good as you remember it." icon_state = "mcrib" - bonus_reagents = list("bbqsauce" = 5, "vitamin" = 3) + bonus_reagents = list("bbqsauce" = 5, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 2, "pork patty" = 4) foodtype = GRAIN | MEAT @@ -344,7 +344,7 @@ desc = "A cheap and greasy imitation of an eggs benedict." icon_state = "mcguffin" tastes = list("muffin" = 2, "bacon" = 3) - bonus_reagents = list("eggyolk" = 3, "nutriment" = 1) + bonus_reagents = list("eggyolk" = 3, /datum/reagent/consumable/nutriment = 1) foodtype = GRAIN | MEAT | BREAKFAST /obj/item/reagent_containers/food/snacks/burger/chicken @@ -352,7 +352,7 @@ desc = "A delicious chicken sandwich, it is said the proceeds from this treat helps criminalize homosexuality on the space frontier." icon_state = "chickenburger" tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1) - bonus_reagents = list("mayonnaise" = 3, "cooking_oil" = 2, "nutriment" = 2) + bonus_reagents = list("mayonnaise" = 3, "cooking_oil" = 2, /datum/reagent/consumable/nutriment = 2) foodtype = GRAIN | MEAT | FRIED /obj/item/reagent_containers/food/snacks/burger/cheese @@ -360,7 +360,7 @@ desc = "This noble burger stands proudly clad in golden cheese." icon_state = "cheeseburger" tastes = list("bun" = 2, "beef patty" = 4, "cheese" = 3) - bonus_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) foodtype = GRAIN | MEAT | DAIRY /obj/item/reagent_containers/food/snacks/burger/cheese/Initialize() diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index dd4dad4d9b..ecdffc0ee9 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("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, "oculine" = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, "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, "oculine" = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -60,8 +60,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 @@ -71,7 +71,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 @@ -81,7 +81,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 @@ -99,7 +99,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 @@ -117,7 +117,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 @@ -135,7 +135,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 @@ -153,7 +153,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 @@ -171,8 +171,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, "sprinkles" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, "sprinkles" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -181,7 +181,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, "sprinkles" = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -191,7 +191,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 @@ -214,7 +214,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 @@ -231,7 +231,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 @@ -248,7 +248,7 @@ desc = "A plain cake, filled with assortment of blackberries and strawberries!" icon_state = "blackbarry_strawberries_cake_vanilla_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc - bonus_reagents = list("nutriment" = 14, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -265,7 +265,7 @@ desc = "A plain cake, filled with assortment of blackberries and strawberries!" icon_state = "blackbarry_strawberries_cake_coco_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc - bonus_reagents = list("nutriment" = 14, "vitamin" = 4, "cocoa" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/coco = 5) tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -282,7 +282,7 @@ desc = "A cake made for angels and chaplains alike! Contains holy water." icon_state = "holy_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice - bonus_reagents = list("nutriment" = 1, "vitamin" = 3, "holy_water" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, "holy_water" = 10) tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -300,7 +300,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake icon_state = "pound_cake" slices_num = 7 //Its ment to feed the party slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice - bonus_reagents = list("nutriment" = 60) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 60) tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1) foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD @@ -317,7 +317,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A cake that is made with electronic boards and leaks acid..." icon_state = "hardware_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice - bonus_reagents = list("sacid" = 15, "oil" = 15) + bonus_reagents = list(/datum/reagent/toxin/acid = 15, /datum/reagent/oil = 15) tastes = list("acid" = 1, "metal" = 1, "regret" = 10) foodtype = GRAIN | GROSS @@ -334,7 +334,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A vanilla frosted cake." icon_state = "vanillacake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice - bonus_reagents = list("sugar" = 15, "vanilla" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/vanilla = 15) tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -351,7 +351,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A funny cake with a clown face on it." icon_state = "clowncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice - bonus_reagents = list("sugar" = 15, "laugher" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 15, "laugher" = 15) tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -368,7 +368,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A peach filled cake." icon_state = "peachcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/peach_slice - bonus_reagents = list("sugar" = 5, "peachjuice" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 5, "peachjuice" = 15) tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -385,7 +385,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A spaceman's trumpet frosted cake." icon_state = "trumpetcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/trumpet - bonus_reagents = list("polypyr" = 15, "cream" = 5, "vitamin" = 5, "berryjuice" = 5) + bonus_reagents = list("polypyr" = 15, "cream" = 5, /datum/reagent/consumable/nutriment/vitamin = 5, "berryjuice" = 5) filling_color = "#7A3D80" tastes = list("cake" = 4, "violets" = 2, "jam" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index 85aed84615..ab52c78e0f 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 @@ -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 | BREAKFAST @@ -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 | BREAKFAST @@ -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) @@ -140,9 +140,9 @@ 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 | BREAKFAST diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 4a4c5ddb88..18df5af657 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -3,8 +3,8 @@ desc = "Portable Ice-cream in its own packaging." icon = '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, "ice" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, "ice" = 2) tastes = list("ice cream" = 1) foodtype = GRAIN | DAIRY @@ -12,8 +12,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 @@ -22,8 +22,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 @@ -33,8 +33,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "A long glass dish filled with ice-cream, chocolate and a banana down the middle. A timeless classic by any standards." icon_state = "banana_split" - bonus_reagents = list("nutriment" = 5, "vitamin" = 3) - list_reagents = list("nutriment" = 3, "banana" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/banana = 10, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -44,8 +44,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "A glass filled with cream, soda and ice-cream with a cherry on top." icon_state = "cola_float" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 3, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "space coal" = 1, "cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -55,8 +55,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "Cherries mixed with ice-cream, known for its filling tastes" icon_state = "cherryshake" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 3, "vitamin" = 2, "cherryshake" = 15) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, "cherryshake" = 15) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -66,8 +66,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "Cherries mixed with ice-cream, known for its filling tastes. This one is a exotic blue!" icon_state = "bluecherryshake" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 3, "vitamin" = 2, "bluecherryshake" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, "bluecherryshake" = 10) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "blue cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -76,8 +76,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, "bluecherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#87CEFA" tastes = list("blue cherries" = 2, "ice cream" = 2) foodtype = FRUIT | DAIRY @@ -91,8 +91,8 @@ icon = 'icons/obj/food/snowcones.dmi' icon_state = "flavorless_sc" trash = /obj/item/reagent_containers/food/drinks/sillycup //We dont eat paper cups - bonus_reagents = list("water" = 10) //Base line will allways give water - list_reagents = list("water" = 1) // We dont get food for water/juices + bonus_reagents = list(/datum/reagent/water = 10) //Base line will allways give water + list_reagents = list(/datum/reagent/water = 1) // We dont get food for water/juices filling_color = "#FFFFFF" //Ice is white tastes = list("ice" = 1, "water" = 1) foodtype = SUGAR //We use SUGAR as a base line to act in as junkfood, other wise we use fruit @@ -101,7 +101,7 @@ name = "lime snowcone" desc = "Lime syrup drizzled over a snowball in a paper cup." icon_state = "lime_sc" - list_reagents = list("nutriment" = 1, "limejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "limejuice" = 5) tastes = list("ice" = 1, "water" = 1, "limes" = 5) foodtype = FRUIT @@ -109,7 +109,7 @@ name = "lemon snowcone" desc = "Lemon syrup drizzled over a snowball in a paper cup." icon_state = "lemon_sc" - list_reagents = list("nutriment" = 1, "lemonjuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "lemonjuice" = 5) tastes = list("ice" = 1, "water" = 1, "lemons" = 5) foodtype = FRUIT @@ -117,7 +117,7 @@ name = "apple snowcone" desc = "Apple syrup drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list("nutriment" = 1, "applejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "applejuice" = 5) tastes = list("ice" = 1, "water" = 1, "apples" = 5) foodtype = FRUIT @@ -125,7 +125,7 @@ name = "grape snowcone" desc = "Grape syrup drizzled over a snowball in a paper cup." icon_state = "grape_sc" - list_reagents = list("nutriment" = 1, "grapejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "grapejuice" = 5) tastes = list("ice" = 1, "water" = 1, "grape" = 5) foodtype = FRUIT @@ -133,7 +133,7 @@ name = "orange snowcone" desc = "Orange syrup drizzled over a snowball in a paper cup." icon_state = "orange_sc" - list_reagents = list("nutriment" = 1, "orangejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "orangejuice" = 5) tastes = list("ice" = 1, "water" = 1, "orange" = 5) foodtype = FRUIT @@ -141,7 +141,7 @@ name = "bluecherry snowcone" desc = "Bluecherry syrup drizzled over a snowball in a paper cup, how rare!" icon_state = "blue_sc" - list_reagents = list("nutriment" = 1, "bluecherryjelly" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "bluecherryjelly" = 5) tastes = list("ice" = 1, "water" = 1, "blue" = 5, "cherries" = 5) foodtype = FRUIT @@ -149,7 +149,7 @@ name = "cherry snowcone" desc = "Cherry syrup drizzled over a snowball in a paper cup." icon_state = "red_sc" - list_reagents = list("nutriment" = 1, "cherryjelly" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "cherryjelly" = 5) tastes = list("ice" = 1, "water" = 1, "red" = 5, "cherries" = 5) foodtype = FRUIT @@ -157,7 +157,7 @@ name = "kiwi snowcone" desc = "A kiwi snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list("nutriment" = 3, "vitamin" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("ice" = 1, "space" = 3, "kiwi" = 5) foodtype = FRUIT @@ -165,7 +165,7 @@ name = "peach snowcone" desc = "A peach snowball in a paper cup." icon_state = "peach_sc" - list_reagents = list("nutriment" = 1, "peachjuice" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "peachjuice" = 10) tastes = list("ice" = 1, "water" = 1, " peach" = 5) foodtype = FRUIT @@ -173,7 +173,7 @@ name = "strawberry snowcone" desc = "A strawberry snowball in a paper cup." icon_state = "blue_sc" - list_reagents = list("nutriment" = 1, "berryjuice" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "berryjuice" = 10) tastes = list("ice" = 1, "water" = 1, " strawberry" = 5) foodtype = FRUIT @@ -181,7 +181,7 @@ name = "berry snowcone" desc = "Berry syrup drizzled over a snowball in a paper cup." icon_state = "berry_sc" - list_reagents = list("nutriment" = 1, "berryjuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "berryjuice" = 5) tastes = list("ice" = 1, "water" = 1, "berries" = 5) foodtype = FRUIT @@ -189,7 +189,7 @@ name = "fruit salad snowcone" desc = "A delightful mix of citrus syrups drizzled over a snowball in a paper cup." icon_state = "fruitsalad_sc" - list_reagents = list("nutriment" = 1, "lemonjuice" = 5, "limejuice" = 5, "orangejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "lemonjuice" = 5, "limejuice" = 5, "orangejuice" = 5) tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5) foodtype = FRUIT @@ -197,7 +197,7 @@ name = "pineapple snowcone" desc = "Pineapple syrup drizzled over a snowball in a paper cup." icon_state = "pineapple_sc" - list_reagents = list("nutriment" = 1, "water" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/water = 10) tastes = list("ice" = 1, "water" = 1, "pineapples" = 5) foodtype = PINEAPPLE //Pineapple to allow all that like pineapple to enjoy @@ -205,47 +205,47 @@ name = "mime snowcone" desc = "..." icon_state = "mime_sc" - list_reagents = list("nutriment" = 1, "nothing" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "nothing" = 5) tastes = list("ice" = 1, "water" = 1, "nothing" = 5) /obj/item/reagent_containers/food/snacks/snowcones/clown name = "clown snowcone" desc = "Laughter drizzled over a snowball in a paper cup." icon_state = "clown_sc" - list_reagents = list("nutriment" = 1, "laughter" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "laughter" = 5) tastes = list("ice" = 1, "water" = 1, "jokes" = 5, "brainfreeze" = 5, "joy" = 5) /obj/item/reagent_containers/food/snacks/snowcones/soda name = "space cola snowcone" desc = "Space Cola drizzled over a snowball in a paper cup." icon_state = "soda_sc" - list_reagents = list("nutriment" = 1, "space_cola" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "space_cola" = 5) tastes = list("ice" = 1, "water" = 1, "cola" = 5) /obj/item/reagent_containers/food/snacks/snowcones/spacemountainwind name = "Space Mountain Wind snowcone" desc = "Space Mountain Wind drizzled over a snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list("nutriment" = 1, "spacemountainwind" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "spacemountainwind" = 5) tastes = list("ice" = 1, "water" = 1, "mountain wind" = 5) /obj/item/reagent_containers/food/snacks/snowcones/pwrgame name = "pwrgame snowcone" desc = "Pwrgame soda drizzled over a snowball in a paper cup." icon_state = "pwrgame_sc" - list_reagents = list("nutriment" = 1, "pwr_game" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "pwr_game" = 5) tastes = list("ice" = 1, "water" = 1, "valid" = 5, "salt" = 5, "wats" = 5) /obj/item/reagent_containers/food/snacks/snowcones/honey name = "honey snowcone" desc = "Honey drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list("nutriment" = 1, "honey" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "honey" = 5) tastes = list("ice" = 1, "water" = 1, "flowers" = 5, "sweetness" = 5, "wax" = 1) /obj/item/reagent_containers/food/snacks/snowcones/rainbow name = "rainbow snowcone" desc = "A very colorful snowball in a paper cup." icon_state = "rainbow_sc" - list_reagents = list("nutriment" = 5, "laughter" = 25) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "laughter" = 25) tastes = list("ice" = 1, "water" = 1, "sunlight" = 5, "light" = 5, "slime" = 5, "paint" = 3, "clouds" = 3) \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index cf499c9d15..60c3dce39b 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, "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, "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 @@ -59,8 +59,8 @@ desc = "A small cylindrical kudzu skin, filled with rice and fish." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 2, "salt" = 1) @@ -71,8 +71,8 @@ desc = "A peace of carp lightly placed on some rice." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 2, "rice" = 2, "salt" = 1) @@ -83,8 +83,8 @@ desc = "A well prepared peace of the best of the carp fillet placed on rice. Looks fancy and fresh!" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "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/nutriment/vitamin = 2) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 3, "rice" = 2, "salt" = 1) @@ -97,7 +97,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 @@ -106,7 +106,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) @@ -117,8 +117,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 @@ -127,8 +127,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, "manlydorf" = 5) tastes = list("meat" = 1, "salmon" = 1) foodtype = MEAT | ALCOHOL @@ -136,7 +136,7 @@ name = "faggot" 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 @@ -146,8 +146,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 | BREAKFAST var/roasted = FALSE @@ -160,35 +160,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 @@ -196,7 +196,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) cooked_type = /obj/item/reagent_containers/food/snacks/khinkali tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) foodtype = MEAT @@ -205,7 +205,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 = 4, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 3 filling_color = "#F0F0F0" tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) @@ -216,7 +216,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 @@ -244,10 +244,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, "capsaicin" = 6) tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) foodtype = MEAT @@ -256,8 +256,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 @@ -271,8 +271,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, "capsaicin" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, "capsaicin" = 2) filling_color = "#000000" tastes = list("hot peppers" = 1, "cobwebs" = 1) foodtype = MEAT @@ -282,8 +282,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) @@ -293,8 +293,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, "capsaicin" = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "capsaicin" = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC @@ -302,8 +302,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 @@ -317,8 +317,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) @@ -328,14 +328,14 @@ icon_state = "dorndog" trash = /obj/item/trash/plate/alt tastes = list("hotdog" = 2, "mustard and ketchup" = 1, "fryed bread" = 1) - bonus_reagents = list("nutriment" = 6, "vitamin" = 2, "mustard" = 5, "ketchup" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2, "mustard" = 5, "ketchup" = 5) /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" 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 @@ -343,20 +343,20 @@ 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) /obj/item/reagent_containers/food/snacks/kebab/fiesta name = "fiesta skewer" icon_state = "fiestaskewer" tastes = list("tex-mex" = 3, "cumin" = 2) - bonus_reagents = list("vitamin" = 5, "capsaicin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5, "capsaicin" = 3) /obj/item/reagent_containers/food/snacks/bbqribs name = "bbq ribs" desc = "BBQ ribs, slathered in a healthy coating of BBQ sauce. The least vegan thing to ever exist." icon_state = "ribs" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 8, "vitamin" = 2, "bbqsauce" = 5) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2, "bbqsauce" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 3, "smokey sauce" = 1) foodtype = MEAT \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 58a0ab4382..2c271ba216 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 @@ -34,7 +34,7 @@ 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 @@ -43,7 +43,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 @@ -53,7 +53,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 @@ -62,7 +62,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) @@ -76,8 +76,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 @@ -87,7 +87,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 @@ -97,7 +97,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 @@ -108,7 +108,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 @@ -119,8 +119,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 @@ -139,7 +139,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, "oculine" = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFA500" tastes = list("carrots" = 3, "salt" = 1) foodtype = VEGETABLES @@ -149,8 +149,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 @@ -169,8 +169,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 @@ -179,8 +179,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 @@ -189,7 +189,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 @@ -198,7 +198,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 @@ -207,7 +207,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, "omnizine" = 2) //lollipop, but vitamins = toxins filling_color = "#00800" tastes = list("cobwebs" = 1, "sugar" = 2) foodtype = JUNKFOOD | SUGAR @@ -217,7 +217,7 @@ desc = "Spider eggs wrapped in a thin salted Kudzu pod" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" - list_reagents = list("nutriment" = 6, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FF3333" // R225 G051 B051 tastes = list("seaweed" = 1, "cobwebs" = 1, "salty" = 2) foodtype = MEAT | VEGETABLES @@ -226,8 +226,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 @@ -236,8 +236,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) @@ -247,8 +247,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 @@ -258,8 +258,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 @@ -269,7 +269,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 @@ -278,8 +278,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 @@ -288,8 +288,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 @@ -298,8 +298,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 @@ -308,8 +308,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, "capsaicin" = 5, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#FF2000" tastes = list("torilla" = 2, "meat" = 3, "hot peppers" = 1) foodtype = GRAIN | MEAT @@ -319,7 +319,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 @@ -329,7 +329,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 @@ -338,8 +338,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) @@ -349,8 +349,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 @@ -359,8 +359,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 @@ -369,8 +369,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, "capsaicin" = 8, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#DC143C" tastes = list("nachos" = 2, "hot pepper" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -379,8 +379,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, "vodka" = 15, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FFD700" volume = 80 bitesize = 5 @@ -391,8 +391,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, "honey" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "honey" = 5) filling_color = "#F2CE91" tastes = list("oats" = 3, "nuts" = 2, "honey" = 1) foodtype = FRUIT | SUGAR @@ -401,8 +401,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, "capsaicin" = 1, "tricordrazine" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, "capsaicin" = 2, "tricordrazine" = 10) tastes = list("death" = 2, "rock" = 1, "meat" = 1, "hot peppers" = 1) foodtype = MEAT @@ -410,8 +410,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, "cherryjelly" = 5) force = 20 throwforce = 10 block_chance = 50 @@ -426,7 +426,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, "omnizine" = 2) //Honk var/mutable_appearance/head var/headcolor = rgb(0, 0, 0) tastes = list("candy" = 1) @@ -468,7 +468,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, "bicaridine" = 2, "kelotane" = 2) //Kek tastes = list("candy") foodtype = JUNKFOOD @@ -495,8 +495,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 @@ -504,8 +504,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 @@ -513,8 +513,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 @@ -522,7 +522,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 @@ -531,7 +531,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) @@ -549,7 +549,7 @@ name = "chocolate" desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!" icon_state = "tiny_chocolate" - list_reagents = list("nutriment" = 1, "sugar" = 1, "cocoa" = 1, "aphro" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, "aphro" = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -559,7 +559,7 @@ desc = "A ball of rice with some light salt and a wrap of Kudzu skin." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" - list_reagents = list("nutriment" = 6, "sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/sodiumchloride = 2) tastes = list("rice" = 3, "salt" = 1) foodtype = GRAIN @@ -567,7 +567,7 @@ name = "Canned Peaches" desc = "Just a nice can of ripe peaches swimming in their own juices." icon_state = "peachcan" - list_reagents = list("peachjuice" = 20, "sugar" = 8, "nutriment" = 2) + list_reagents = list("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) @@ -583,7 +583,7 @@ name = "Chocolate dipped strawberries" desc = "A strawberry dipped in a bit of chocolate." icon_state = "chocolatestrawberry" - list_reagents = list("sugar" = 5, "nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/nutriment = 2) filling_color = "#ffdf26" tastes = list("strawberries" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR @@ -593,7 +593,7 @@ name = "Chocolate dipped banana" desc = "A banana dipped in a bit of chocolate and held on a stick." icon_state = "banana_coco" - list_reagents = list("sugar" = 5, "nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#ffdf26" tastes = list("banana" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR @@ -605,7 +605,7 @@ icon_state = "boritos" trash = /obj/item/trash/boritos bitesize = 2 - list_reagents = list("nutriment" = 3, "cooking_oil" = 2, "sodiumchloride" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, "cooking_oil" = 2, /datum/reagent/consumable/sodiumchloride = 3) filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index fbd311fde3..ce129ef994 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -8,8 +8,8 @@ icon = 'icons/obj/food/donut.dmi' icon_state = "donut" 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, "sprinkles" = 1, /datum/reagent/consumable/sugar = 2) filling_color = "#D2691E" tastes = list("donut" = 1) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR | BREAKFAST @@ -69,7 +69,7 @@ desc = "Tastes as gross as it looks." icon_state = "donut_meat" bonus_reagents = list("ketchup" = 1) - list_reagents = list("nutriment" = 3, "ketchup" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, "ketchup" = 2) tastes = list("meat" = 1) foodtype = JUNKFOOD | MEAT | GROSS | FRIED | BREAKFAST @@ -151,7 +151,7 @@ desc = "You jelly?" icon_state = "jelly" decorated_icon = "jelly_homer" - bonus_reagents = list("sugar" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/nutriment/vitamin = 1) extra_reagent = "berryjuice" tastes = list("jelly" = 1, "donut" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR | BREAKFAST @@ -167,7 +167,7 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, "vitamin" = 1) //Extra sprinkles to reward frosting. + bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. filling_color = "#E57d9A" decorated_icon = "jelly_homer" @@ -175,7 +175,7 @@ name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -184,7 +184,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -193,7 +193,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("caramel" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -202,7 +202,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, "vitamin" = 1) //the coco reagent is just bitter. + bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -211,7 +211,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -220,7 +220,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -229,7 +229,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -249,14 +249,14 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, "vitamin" = 1) //Extra sprinkles to reward frosting + bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -265,7 +265,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -274,7 +274,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("caramel" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -283,7 +283,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, "vitamin" = 1) //the coco reagent is just bitter. + bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -292,7 +292,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -301,7 +301,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -310,7 +310,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -320,8 +320,8 @@ desc = "A sugar glazed donut." icon_state = "donut_glaze" bitesize = 10 - bonus_reagents = list("sugar" = 3) - list_reagents = list("nutriment" = 3, "sugar" = 8) + bonus_reagents = list(/datum/reagent/consumable/sugar = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 8) filling_color = "#FFFFFF" tastes = list("donut" = 1, "salt" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR @@ -332,8 +332,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 | BREAKFAST @@ -357,8 +357,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 @@ -370,8 +370,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 | BREAKFAST @@ -381,8 +381,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 | MEAT @@ -392,8 +392,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 @@ -404,8 +404,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, "mushroomhallucinogen" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#00BFFF" tastes = list("waffle" = 1, "mushrooms" = 1) foodtype = GRAIN | VEGETABLES | SUGAR | BREAKFAST @@ -417,8 +417,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 @@ -428,7 +428,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) @@ -438,7 +438,7 @@ 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) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, "omnizine" = 3) cooked_type = null tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) foodtype = GRAIN @@ -447,7 +447,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("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 @@ -456,8 +456,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 @@ -466,8 +466,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 @@ -476,8 +476,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 @@ -497,8 +497,8 @@ 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 @@ -508,8 +508,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, "ketchup" = 3, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -518,8 +518,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 @@ -528,7 +528,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 @@ -537,8 +537,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 @@ -548,8 +548,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 @@ -558,8 +558,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 @@ -569,8 +569,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 @@ -580,8 +580,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 @@ -590,8 +590,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 @@ -600,8 +600,8 @@ name = "strawberry cupcake" desc = "Strawberry inside a delicious cupcake." icon_state = "strawberrycupcake" - 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" = 2, "strawberry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -610,8 +610,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, "honey" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "honey" = 5) filling_color = "#F2CE91" tastes = list("pastry" = 1, "sweetness" = 1) foodtype = GRAIN | SUGAR @@ -623,8 +623,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 | BREAKFAST @@ -634,8 +634,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 @@ -643,8 +643,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 f30c4e8a7c..6346fba036 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 @@ -90,8 +90,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, "berryjuice" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1, "blackberries" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -99,8 +99,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 @@ -108,7 +108,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 @@ -117,7 +117,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 @@ -127,8 +127,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, "amatoxin" = 3, "mushroomhallucinogen" = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | TOXIC | GROSS @@ -137,7 +137,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 @@ -158,7 +158,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 @@ -167,7 +167,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 @@ -175,7 +175,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 @@ -186,7 +186,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 @@ -197,7 +197,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 @@ -205,8 +205,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 @@ -214,8 +214,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 @@ -223,8 +223,8 @@ name = "mime tart" desc = "..." icon_state = "mimetart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4, "nothing" = 10) - list_reagents = list("nutriment" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4, "nothing" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "nothing" = 1) foodtype = GRAIN @@ -232,8 +232,8 @@ name = "berry tart" desc = "A tasty dessert of many different small barries on a thin pie crust." icon_state = "berrytart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 3, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "berries" = 2) foodtype = GRAIN | FRUIT @@ -241,8 +241,8 @@ name = "chocolate lava tart" desc = "A tasty dessert made of chocaloate, with a liquid core." icon_state = "cocolavatart" - 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 | SUGAR @@ -252,7 +252,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 @@ -263,7 +263,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 @@ -273,7 +273,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 @@ -284,7 +284,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 @@ -292,7 +292,7 @@ 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 @@ -302,7 +302,7 @@ icon_state = "baklava" slice_path = /obj/item/reagent_containers/food/snacks/baklavaslice slices_num = 6 - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("nuts" = 1, "pie" = 1) foodtype = GRAIN @@ -313,7 +313,7 @@ icon_state = "baklavaslice" trash = /obj/item/trash/plate filling_color = "#1E90FF" - list_reagents = list("nutriment" = 2, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("nuts" = 1, "pie" = 1) foodtype = GRAIN @@ -321,7 +321,7 @@ name = "strawberry pie" desc = "A strawberry pie." icon_state = "strawberrypie" - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("strawberry" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -329,6 +329,6 @@ name = "peach pie" desc = "A pie with peach filling." icon_state = "strawberrypie" - bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "peachjuice" = 15) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, "peachjuice" = 15) tastes = list("peach" = 1, "pie" = 1) foodtype = GRAIN | FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index 74fd7dda65..8dc1c1b1a4 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, "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,7 +20,7 @@ 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 @@ -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, "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, "tomatojuice" = 6, "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, "tomatojuice" = 6, "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, "doctorsdelight" = 5, "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" = 6, "ham" = 2) foodtype = PINEAPPLE //Over powering tast of gods fruit @@ -162,7 +162,7 @@ /obj/item/reagent_containers/food/snacks/pizza/pineapple/anomaly desc = "A anomaly made pizza with pineapple..." - bonus_reagents = list("nutriment" = 16, "vitamin" = 16) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 16, /datum/reagent/consumable/nutriment/vitamin = 16) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 6, "ham" = 2, "good" = 10) /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple/anomaly @@ -174,7 +174,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, "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 f5fcec0ac5..c8539ee380 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("omnizine" = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, "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("doctorsdelight" = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, "doctorsdelight" = 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 | BREAKFAST @@ -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 | BREAKFAST @@ -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 | BREAKFAST @@ -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 | BREAKFAST @@ -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 | BREAKFAST @@ -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 17a710ada2..2ab36805a8 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" = 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) 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" = 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) 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("slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, "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("cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, "cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj @@ -59,13 +59,13 @@ tastes = list("bread" = 1, "jelly" = 1, "peanuts" = 1) /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/cherry - bonus_reagents = list("cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list("cherryjelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, "cherryjelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime - bonus_reagents = list("slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list("slimejelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, "slimejelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/peanutbutter_sandwich @@ -75,8 +75,8 @@ icon_state = "peanutbuttersandwich" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list("peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/notasandwich @@ -85,8 +85,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 @@ -101,13 +101,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("cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "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("slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC | SUGAR /obj/item/reagent_containers/food/snacks/peanut_buttertoast @@ -117,8 +117,8 @@ icon_state = "peanutbuttertoast" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 1, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list("peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("toast" = 1, "peanuts" = 1) foodtype = GRAIN @@ -128,8 +128,8 @@ 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 @@ -139,6 +139,6 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tunasandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("tuna" = 4, "mayonnaise" = 2, "bread" = 2) foodtype = GRAIN | MEAT diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 867a9c401f..ef83e7d0e0 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,7 +24,7 @@ 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(/datum/reagent/consumable/nutriment, 9) reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 1) @@ -34,7 +34,7 @@ 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, "slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "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, "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, "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, "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, "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, "omnizine" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("nettles" = 1) foodtype = VEGETABLES @@ -96,7 +96,7 @@ 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() @@ -111,8 +111,8 @@ 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, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "capsaicin" = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("hot peppers" = 1) foodtype = VEGETABLES @@ -120,8 +120,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, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "frostoil" = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("tomato" = 1, "mint" = 1) foodtype = VEGETABLES @@ -129,8 +129,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 @@ -138,8 +138,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, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("tomato" = 1) foodtype = VEGETABLES @@ -147,7 +147,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, "liquidgibs" = 3) tastes = list("tomato" = 1, "squirming" = 1) foodtype = MEAT | GROSS @@ -155,7 +155,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 @@ -163,8 +163,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 @@ -172,7 +172,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() @@ -186,8 +186,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, "mushroomhallucinogen" = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES @@ -196,8 +196,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, "mushroomhallucinogen" = 3, "amatoxin" = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES | TOXIC @@ -205,8 +205,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, "tomatojuice" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, "oculine" = 5, "tomatojuice" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) bitesize = 7 volume = 100 tastes = list("tomato" = 1, "carrot" = 1) @@ -216,7 +216,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 @@ -224,7 +224,7 @@ 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 @@ -232,7 +232,7 @@ name = "electron soup" desc = "A gastronomic curiosity of ethereal origin. It is famed for the minature weather system formed over a properly prepared soup." icon_state = "electronsoup" - list_reagents = list("nutriment" = 3, "liquidelectricity" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, "liquidelectricity" = 5) tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good") filling_color = "#CC2B52" foodtype = VEGETABLES | TOXIC @@ -241,8 +241,8 @@ name = "bungo curry" desc = "A spicy vegetable curry made with the humble bungo fruit, Exotic!" icon_state = "bungocurry" - bonus_reagents = list("vitamin" = 11) - list_reagents = list("nutriment" = 6, "capsaicin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 11) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "capsaicin" = 5) tastes = list("bungo" = 2, "hot curry" = 4, "tropical sweetness" = 1) filling_color = "#E6A625" foodtype = VEGETABLES | FRUIT | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_spaghetti.dm b/code/modules/food_and_drinks/food/snacks_spaghetti.dm index 70a1922050..28a48c8730 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/boiledspaghetti filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -16,8 +16,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' 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) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pasta filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -30,8 +30,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, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -43,8 +43,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, "tomatojuice" = 20, /datum/reagent/consumable/nutriment/vitamin = 8) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -55,8 +55,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' 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) filling_color = "#F0E68C" tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -67,8 +67,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' 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) filling_color = "#F0E68C" tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN @@ -79,8 +79,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' 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) tastes = list("noodle" = 1, "tomato" = 1) foodtype = GRAIN @@ -90,7 +90,7 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' 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, "liquidgibs" = 3) tastes = list("noodle" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -100,6 +100,6 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' 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) tastes = list("noodle" = 1, "butter" = 1) foodtype = GRAIN | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm index a4cbc5e344..f011018e8b 100644 --- a/code/modules/food_and_drinks/food/snacks_sushi.dm +++ b/code/modules/food_and_drinks/food/snacks_sushi.dm @@ -5,7 +5,7 @@ desc = "A bowl of sticky rice for making sushi." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushi_rice" - list_reagents = list("sodiumchloride" = 5) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5) tastes = list("rice" = 5, "salt" = 1) foodtype = GRAIN @@ -14,7 +14,7 @@ desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sea_weed" - list_reagents = list("sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 2) tastes = list("plants" = 2, "salt" = 1) foodtype = VEGETABLES @@ -24,7 +24,7 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tuna_can" //trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat - list_reagents = list("sodiumchloride" = 5, "mercury" = 2) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5, "mercury" = 2) tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) foodtype = MEAT @@ -34,8 +34,8 @@ desc = "A small cylindrical filled with rice and fish." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -46,8 +46,8 @@ desc = "A pice of carp lightly placed on some rice." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -58,8 +58,8 @@ desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" - 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 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -70,7 +70,7 @@ desc = "Spider eggs wrapped in a thin salted Kudzu pod" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FF3333" // R225 G051 B051 tastes = list("seaweed" = 1, "salty" = 2) foodtype = MEAT | VEGETABLES @@ -80,7 +80,7 @@ desc = "A ball of rice with some light salt and a wrap of Kudzu skin." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" - list_reagents = list("nutriment" = 5, "sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sodiumchloride = 2) tastes = list("rice" = 4, "salt" = 1) foodtype = GRAIN @@ -88,8 +88,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, "capsaicin" = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, "capsaicin" = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC \ 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 8f661b868e..6427a5eefc 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, "cocoa" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/coco = 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) @@ -56,7 +56,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 @@ -64,7 +64,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 @@ -74,7 +74,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) @@ -85,7 +85,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, "doctorsdelight" = 5) filling_color = "#F5F5DC" tastes = list("sweetness" = 3, "cake" = 1) foodtype = GRAIN | FRUIT | VEGETABLES 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 1a33ce26db..f320b18b63 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -228,7 +228,7 @@ desc = "Delicious waffle cone, but no ice cream." icon = 'icons/obj/kitchen.dmi' icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) tastes = list("cream" = 2, "waffle" = 1) var/ice_creamed = 0 var/cone_type diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 73d4a4f514..bf3ed0e869 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -4,19 +4,19 @@ name = "Goldschlager" id = "goldschlager" results = list("goldschlager" = 10) - required_reagents = list("vodka" = 10, "gold" = 1) + required_reagents = list("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) + required_reagents = list("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) + required_reagents = list(/datum/reagent/consumable/milk = 1, "beer" = 1) /datum/chemical_reaction/icetea name = "Iced Tea" @@ -40,36 +40,36 @@ name = "Moonshine" id = "moonshine" results = list("moonshine" = 10) - required_reagents = list("nutriment" = 5, "sugar" = 5) - required_catalysts = list("enzyme" = 5) + 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) + 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) + 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) + 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) + required_reagents = list("coffee" = 5, /datum/reagent/consumable/sugar = 5) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/gin_tonic name = "Gin and Tonic" @@ -147,13 +147,13 @@ name = "Toxins Special" id = "toxinsspecial" results = list("toxinsspecial" = 5) - required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2) + required_reagents = list("rum" = 2, "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) + required_reagents = list("limejuice" = 2, "quadruple_sec" = 2, /datum/reagent/iron = 1) /datum/chemical_reaction/doctor_delight name = "The Doctor's Delight" @@ -184,7 +184,7 @@ id = "hooch" results = list("hooch" = 3) required_reagents = list ("ethanol" = 2, "welding_fuel" = 1) - required_catalysts = list("enzyme" = 1) + required_catalysts = list(/datum/reagent/consumable/enzyme = 1) /datum/chemical_reaction/irish_coffee name = "Irish Coffee" @@ -268,7 +268,7 @@ name = "Singulo" id = "singulo" results = list("singulo" = 10) - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + required_reagents = list("vodka" = 5, /datum/reagent/radium = 1, "wine" = 5) /datum/chemical_reaction/alliescocktail name = "Allies Cocktail" @@ -320,7 +320,7 @@ id = "mead" results = list("mead" = 2) required_reagents = list("honey" = 2) - required_catalysts = list("enzyme" = 5) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/iced_beer name = "Iced Beer" @@ -344,19 +344,19 @@ name = "Cafe Latte" id = "cafe_latte" results = list("cafe_latte" = 2) - required_reagents = list("coffee" = 1, "milk" = 1) + required_reagents = list("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) + required_reagents = list(/datum/reagent/toxin/acid = 1, "wine" = 5) /datum/chemical_reaction/amasec name = "Amasec" id = "amasec" results = list("amasec" = 10) - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + required_reagents = list(/datum/reagent/iron = 1, "wine" = 5, "vodka" = 5) /datum/chemical_reaction/changelingsting name = "Changeling Sting" @@ -458,7 +458,7 @@ name = "Silencer" id = "silencer" results = list("silencer" = 3) - required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) + required_reagents = list("nothing" = 1, "cream" = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/driestmartini name = "Driest Martini" @@ -482,7 +482,7 @@ name = "Vanilla Pudding" id = "vanillapudding" results = list("vanillapudding" = 20) - required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5) + required_reagents = list(/datum/reagent/consumable/vanilla = 5, /datum/reagent/consumable/milk = 5, "eggyolk" = 5) /datum/chemical_reaction/drunkenblumpkin name = "Drunken Blumpkin" @@ -525,14 +525,14 @@ name = "Whiskey Sour" id = "whiskey_sour" results = list("whiskey_sour" = 3) - required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1) + required_reagents = list("whiskey" = 1, "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 + required_reagents = list("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 @@ -554,7 +554,7 @@ name = "Lemonade" id = "lemonade" results = list("lemonade" = 5) - required_reagents = list("lemonjuice" = 2, "water" = 2, "sugar" = 1, "ice" = 1) + required_reagents = list("lemonjuice" = 2, "water" = 2, /datum/reagent/consumable/sugar = 1, "ice" = 1) mix_message = "You're suddenly reminded of home." /datum/chemical_reaction/arnold_palmer @@ -568,7 +568,7 @@ name = "chocolate milk" id = "chocolate_milk" results = list("chocolate_milk" = 2) - required_reagents = list("milk" = 1, "cocoa" = 1) + required_reagents = list(/datum/reagent/consumable/milk = 1, "cocoa" = 1) mix_message = "The color changes as the mixture blends smoothly." /datum/chemical_reaction/eggnog @@ -625,21 +625,21 @@ name = "Squirt Cider" id = "squirt_cider" results = list("squirt_cider" = 1) - required_reagents = list("water" = 1, "tomatojuice" = 1, "nutriment" = 1) + required_reagents = list("water" = 1, "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 + 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) + required_reagents = list(/datum/reagent/consumable/sugar = 2, "lemonjuice" = 1, "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 @@ -654,7 +654,7 @@ id = "sake" results = list("sake" = 10) required_reagents = list("rice" = 10) - required_catalysts = list("enzyme" = 5) + 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 @@ -692,7 +692,7 @@ name = "Mojito" id = "mojito" results = list("mojito" = 5) - required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1) + required_reagents = list("rum" = 1, /datum/reagent/consumable/sugar = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1) /datum/chemical_reaction/fernet_cola name = "Fernet Cola" @@ -716,19 +716,19 @@ name = "Power Gamer" id = "pwr_game" results = list("pwr_game" = 5) - required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, "sodiumchloride" = 1) + required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, /datum/reagent/consumable/sodiumchloride = 1) /datum/chemical_reaction/pinkmilk name = "Strawberry Milk" id = "pinkmilk" results = list("pinkmilk" = 5) - required_reagents = list("aphro+" = 1, "milk" = 1) + required_reagents = list("aphro+" = 1, /datum/reagent/consumable/milk = 1) /datum/chemical_reaction/pinktea name = "Strawberry Tea" id = "pinktea" results = list("pinktea" = 5) - required_reagents = list("aphro" = 1, "arnold_palmer" = 1, "sugar" = 1) + required_reagents = list("aphro" = 1, "arnold_palmer" = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/blank_paper name = "Blank Paper" @@ -775,7 +775,7 @@ name = "Rubberneck" id = "rubberneck" results = list("rubberneck" = 10) - required_reagents = list("ethanol" = 4, "grey_bull" = 5, "astrotame" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 4, "grey_bull" = 5, "astrotame" = 1) /datum/chemical_reaction/duplex name = "Duplex" @@ -787,13 +787,13 @@ name = "Trappist" id = "trappist" results = list("trappist" = 5) - required_reagents = list("ale" = 2, "holywater" = 2, "sugar" = 1) + required_reagents = list("ale" = 2, "holywater" = 2, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/cream_soda name = "Cream Soda" id = "cream_soda" results = list("cream_soda" = 4) - required_reagents = list("sugar" = 2, "sodawater" = 2, "vanilla" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 2, "sodawater" = 2, /datum/reagent/consumable/vanilla = 1) /datum/chemical_reaction/blazaam name = "Blazaam" @@ -805,7 +805,7 @@ name = "Planet Cracker" id = "planet_cracker" results = list("planet_cracker" = 4) - required_reagents = list("champagne" = 2, "lizardwine" = 2, "eggyolk" = 1, "gold" = 1) + required_reagents = list("champagne" = 2, "lizardwine" = 2, "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 diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 404f3a6061..eb3f0d7353 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -12,7 +12,7 @@ name = "Tofu" id = "tofu" required_reagents = list("soymilk" = 10) - required_catalysts = list("enzyme" = 5) + 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("soymilk" = 2, "cocoa" = 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("chocolate_milk" = 4, /datum/reagent/consumable/sugar = 2) mob_react = FALSE /datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume) @@ -67,27 +67,27 @@ name = "Soy Sauce" id = "soysauce" results = list("soysauce" = 5) - required_reagents = list("soymilk" = 4, "sacid" = 1) + required_reagents = list("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) + required_reagents = list("corn_starch" = 1, /datum/reagent/toxin/acid = 1) required_temp = 374 /datum/chemical_reaction/caramel name = "Caramel" id = "caramel" results = list("caramel" = 1) - required_reagents = list("sugar" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1) required_temp = 413 mob_react = FALSE /datum/chemical_reaction/caramel_burned name = "Caramel burned" id = "caramel_burned" - results = list("carbon" = 1) + results = list(/datum/reagent/carbon = 1) required_reagents = list("caramel" = 1) required_temp = 483 mob_react = FALSE @@ -95,8 +95,8 @@ /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) @@ -153,7 +153,7 @@ /datum/chemical_reaction/cakebatter name = "Cake Batter" id = "cakebatter" - required_reagents = list("eggyolk" = 15, "flour" = 15, "sugar" = 5) + required_reagents = list("eggyolk" = 15, "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) @@ -163,7 +163,7 @@ /datum/chemical_reaction/cakebatter/vegan id = "vegancakebatter" - required_reagents = list("soymilk" = 15, "flour" = 15, "sugar" = 5) + required_reagents = list("soymilk" = 15, "flour" = 15, /datum/reagent/consumable/sugar = 5) /datum/chemical_reaction/ricebowl name = "Rice Bowl" diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 3cb05a8f7e..1898fe4b01 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/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index a3b93db1ea..07a15098b4 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, "bicaridine" = 0.1, "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("omnizine" = 0.15, "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("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 007c0b2454..6e9350aff3 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 @@ -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 b25f76c1c8..d1af80b4f4 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, /obj/item/seeds/banana/exotic_banana) - reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/banana = 0.1, "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 @@ -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("nothing" = 0.1, "mutetoxin" = 0.1, /datum/reagent/consumable/nutriment = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/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("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 @@ -137,7 +137,7 @@ name = "banana spider" desc = "You do not know what it is, but you can bet the clown would love it." icon_state = "exoticbanana" - 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 | FRUIT grind_results = list("blood" = 20, "liquidgibs" = 5) var/awakening = 0 diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm index 4338e3b070..006f4a3f4d 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, "cooking_oil" = 0.03) //Vegetable oil! /obj/item/reagent_containers/food/snacks/grown/soybeans seed = /obj/item/seeds/soya @@ -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("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 94dbc74499..718b594bca 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 @@ -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, "tirizene" = 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 @@ -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("coniine" = 0.08, "tirizene" = 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/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list("uranium" = 0.25, "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 @@ -124,7 +124,7 @@ icon_harvest = "cherry-harvest" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cherry/blue, /obj/item/seeds/cherry/bulb) - 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 @@ -148,7 +148,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 @@ -173,7 +173,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/cherrybulbs genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/pink) 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/cherrybulbs @@ -207,7 +207,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 @@ -230,7 +230,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("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() @@ -254,7 +254,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "strawberry-grow" icon_dead = "berry-dead" - reagents_add = list("vitamin" = 0.07, "nutriment" = 0.1, "sugar" = 0.2) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.07, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.2) mutatelist = list() /obj/item/reagent_containers/food/snacks/grown/strawberry diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 6ce3558bc3..207415f3a8 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, "lipolicide" = 0.35) // gives u the munchies /obj/item/seeds/cannabis/rainbow @@ -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, "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("omnizine" = 0.35, /datum/reagent/drug/space_drugs = 0.15, "lipolicide" = 0.15) rarity = 40 @@ -63,7 +63,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green) mutatelist = list() - reagents_add = list("space_drugs" = 0.3, + reagents_add = list(/datum/reagent/drug/space_drugs = 0.3, "mindbreaker" = 0.3, "mercury" = 0.15, "lithium" = 0.15, diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index c53cd6718a..3cc3897b52 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 diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 6325daacdc..51453e51ae 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("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("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("condensedcapsaicin" = 0.3, "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 66d03c777c..142e77e97f 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 @@ -70,7 +70,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 @@ -98,7 +98,7 @@ 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, "haloperidol" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, "haloperidol" = 0.15) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d seed = /obj/item/seeds/orange_3d @@ -134,7 +134,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 @@ -159,7 +159,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 diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 7e8baa9487..1e96df5657 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, /obj/item/seeds/cocoapod/bungotree) - 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 @@ -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 @@ -64,7 +64,7 @@ production = 7 genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list() - reagents_add = list("enzyme" = 0.1, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/enzyme = 0.1, /datum/reagent/consumable/nutriment = 0.1) growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "bungotree-grow" diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index 0e5b5272ed..ecce122203 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("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 diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm index 7c01a68f0a..3184dac5af 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 diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index beecb258a7..9e5306014d 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("bicaridine" = 0.2, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/poppy seed = /obj/item/seeds/poppy @@ -68,7 +68,7 @@ icon_dead = "spacemanstrumpet-dead" mutatelist = list() genes = list(/datum/plant_gene/reagent/polypyr) - reagents_add = list("nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) rarity = 30 /obj/item/seeds/poppy/lily/trumpet/Initialize() @@ -119,7 +119,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 @@ -148,7 +148,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("cornoil" = 0.08, /datum/reagent/consumable/nutriment = 0.04) /obj/item/grown/sunflower // FLOWER POWER! seed = /obj/item/seeds/sunflower @@ -184,7 +184,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/moonflower genes = list(/datum/plant_gene/trait/glow/purple) mutatelist = list() - reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "nutriment" = 0.02) + reagents_add = list("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 @@ -209,7 +209,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("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, /datum/reagent/consumable/nutriment = 0) rarity = 20 /obj/item/grown/novaflower diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 8fc141e152..f120ee7397 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, /obj/item/seeds/grass/fairy) - reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, "hydrogen" = 0.05) /obj/item/reagent_containers/food/snacks/grown/grass seed = /obj/item/seeds/grass @@ -51,7 +51,7 @@ icon_grow = "fairygrass-grow" icon_dead = "fairygrass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue) - reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05, "space_drugs" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, "hydrogen" = 0.05, /datum/reagent/drug/space_drugs = 0.15) /obj/item/reagent_containers/food/snacks/grown/grass/fairy seed = /obj/item/seeds/grass/fairy @@ -66,9 +66,9 @@ for(var/datum/plant_gene/trait/glow/gene in seed.genes) G = gene break - + stacktype = initial(stacktype) - + if(G) switch(G.type) if(/datum/plant_gene/trait/glow/white) @@ -85,10 +85,10 @@ stacktype = /obj/item/stack/tile/fairygrass/purple if(/datum/plant_gene/trait/glow/pink) stacktype = /obj/item/stack/tile/fairygrass/pink - + . = ..() - + // Carpet diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 7325dc5b5c..e46b5b4a22 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("charcoal" = 0.04, /datum/reagent/consumable/nutriment = 0.02) /obj/item/seeds/kudzu/Copy() var/obj/item/seeds/kudzu/S = ..() diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index e85a36f4b6..6a86ac8b76 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("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!") @@ -46,7 +46,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/holymelon genes = list(/datum/plant_gene/trait/glow/yellow) mutatelist = list() - reagents_add = list("holywater" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list("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 b37e494233..62122d0a74 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -80,7 +80,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/invasive) mutatelist = list() - reagents_add = list("nutriment" = 0.05, "silibinin" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, "silibinin" = 0.1) /obj/item/seeds/galaxythistle/Initialize() ..() @@ -116,7 +116,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 @@ -142,7 +142,7 @@ maturation = 3 yield = 4 growthstages = 2 - reagents_add = list("sugar" = 0.25) + reagents_add = list(/datum/reagent/consumable/sugar = 0.25) mutatelist = list(/obj/item/seeds/bamboo) /obj/item/reagent_containers/food/snacks/grown/sugarcane @@ -173,7 +173,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("sulfur" = 0.1, /datum/reagent/carbon = 0.1, "nitrogen" = 0.07, "potassium" = 0.05) /obj/item/reagent_containers/food/snacks/grown/shell/gatfruit seed = /obj/item/seeds/gatfruit @@ -195,7 +195,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, "blackpowder" = 0.7) rarity = 60 //See above /obj/item/reagent_containers/food/snacks/grown/cherry_bomb @@ -232,7 +232,7 @@ /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate() reagents.chem_temp = 1000 //Sets off the black powder reagents.handle_reactions() - + // Lavaland cactus /obj/item/seeds/lavaland/cactus diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index c8e97c78de..7353674fe2 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("morphine" = 0.35, "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("mushroomhallucinogen" = 0.04, "amatoxin" = 0.35, /datum/reagent/consumable/nutriment = 0, "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("mushroomhallucinogen" = 0.04, "amatoxin" = 0.1, /datum/reagent/consumable/nutriment = 0, "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("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 @@ -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) mutatelist = list(/obj/item/seeds/chanterelle/jupitercup) /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle @@ -215,7 +215,7 @@ growthstages = 2 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/liquidelectricity, /datum/plant_gene/trait/plant_type/carnivory) 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/seeds/chanterelle/jupitercup/Initialize() ..() @@ -248,7 +248,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/radium = 0.1, "phosphorus" = 0.1, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom seed = /obj/item/seeds/glowshroom @@ -293,7 +293,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("teslium" = 0.1, /datum/reagent/consumable/nutriment = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap @@ -318,7 +318,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/radium = 0.2, /datum/reagent/consumable/nutriment = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom @@ -350,7 +350,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 dbcce2830b..c3bd82c624 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 9cb8d1a63c..c0bd8c3bc8 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, "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, "tearjuice" = 2.5) diff --git a/code/modules/hydroponics/grown/peach.dm b/code/modules/hydroponics/grown/peach.dm index 6fbf933bd1..0f085af610 100644 --- a/code/modules/hydroponics/grown/peach.dm +++ b/code/modules/hydroponics/grown/peach.dm @@ -13,7 +13,7 @@ icon_grow = "peach-grow" icon_dead = "peach-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - 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/peach seed = /obj/item/seeds/peach diff --git a/code/modules/hydroponics/grown/peanuts.dm b/code/modules/hydroponics/grown/peanuts.dm index 2423300cc4..533b033453 100644 --- a/code/modules/hydroponics/grown/peanuts.dm +++ b/code/modules/hydroponics/grown/peanuts.dm @@ -8,7 +8,7 @@ yield = 6 growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list("vitamin" = 0.02, "nutriment" = 0.15, "cooking_oil" = 0.03) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.15, "cooking_oil" = 0.03) /obj/item/reagent_containers/food/snacks/grown/peanut seed = /obj/item/seeds/peanutseed @@ -26,5 +26,5 @@ desc = "A handful of roasted peanuts, with or without salt." icon_state = "roasted_peanuts" foodtype = VEGETABLES - list_reagents = list("nutriment" = 6, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) juice_results = list("peanut_butter" = 3) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index e52c261217..a430d5655b 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, "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 50341dfa3a..92fbb86735 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 @@ -57,7 +57,7 @@ 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 diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 46dc49a169..e489c8434e 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 @@ -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, "chlorine" = 0.1, /datum/reagent/consumable/nutriment = 0.2) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/blumpkin diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index e28043e4b1..244d1b6d0c 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("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 @@ -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 @@ -72,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 @@ -98,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 bdb5bdb3f9..abdd8a1995 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -34,7 +34,7 @@ plantname = "Tea Astra Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/astra mutatelist = list(/obj/item/seeds/tea/catnip) - reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1) + reagents_add = list("synaptizine" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, "teapowder" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tea/astra @@ -52,7 +52,7 @@ species = "catnip" plantname = "Catnip Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip - reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3) + reagents_add = list("catnip" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, "teapowder" = 0.3) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tea/catnip @@ -79,7 +79,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, "coffeepowder" = 0.1) /obj/item/reagent_containers/food/snacks/grown/coffee seed = /obj/item/seeds/coffee @@ -101,7 +101,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("ephedrine" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, "coffeepowder" = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/coffee/robusta diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 684271fa6b..9f2df69278 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("nicotine" = 0.03, /datum/reagent/consumable/nutriment = 0.03) /obj/item/reagent_containers/food/snacks/grown/tobacco seed = /obj/item/seeds/tobacco @@ -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("salbutamol" = 0.05, "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 d07f5d4d08..f42639cf26 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 @@ -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("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 @@ -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("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 @@ -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("lube" = 0.2, "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 diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 34b1fa392f..0d7ead0dbc 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, "stabilizing_agent" = 3, "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, "vitfro" = 2, "nicotine" = 2) icon_state = "mushroom_leaf" seed = /obj/item/seeds/lavaland/porcini wine_power = 40 @@ -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("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" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, "vitfro" = 6) desc = "A cactus fruit covered in a thick, reddish skin. And some ash." icon_state = "cactus_fruit" seed = /obj/item/seeds/lavaland/cactus diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index c3a33f36f5..42eb75f192 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -358,7 +358,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_gold_heads" value = 50 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" @@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_silver_heads" value = 20 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" @@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_diamond_heads" value = 500 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" @@ -382,7 +382,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" @@ -390,7 +390,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_plasma_heads" value = 100 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" @@ -427,7 +427,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" @@ -436,7 +436,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/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index fec75e4a36..4c4d47cc05 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -117,7 +117,7 @@ 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) diff --git a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm index 81dc9d3e24..50c5af4dd3 100644 --- a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm @@ -96,7 +96,7 @@ icon_state = "bananaspider" bitesize = 3 eatverb = "devours" - 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) juice_results = list("banana" = 0) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index d4d63b2e66..ac79485ab1 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, "iodine" = 1) var/colour = "black" //what colour the ink is! var/degrees = 0 var/font = PEN_FONT diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 4e74ccc44b..095f57b4d0 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -335,6 +335,6 @@ name = "toner cartridge" icon = 'icons/obj/device.dmi' icon_state = "tonercartridge" - grind_results = list("iodine" = 40, "iron" = 10) + grind_results = list("iodine" = 40, /datum/reagent/iron = 10) var/charges = 5 var/max_charges = 5 diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 4692a1a598..fa8b28ed50 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("lithium" = 15, /datum/reagent/iron = 5, "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? diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 27b1fe12ee..1b0a691339 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -1,14 +1,14 @@ /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) + results = list(/datum/reagent/drug/space_drugs = 3) + required_reagents = list("mercury" = 1, /datum/reagent/consumable/sugar = 1, "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) + required_reagents = list("diphenhydramine" = 1, /datum/reagent/ammonia = 1, "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 @@ -17,7 +17,7 @@ name = "Krokodil" id = "krokodil" results = list("krokodil" = 6) - required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "welding_fuel" = 1) + required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, /datum/reagent/fuel = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 @@ -32,7 +32,7 @@ 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) + required_reagents = list("bad_food" = 1, "saltpetre" = 1, /datum/reagent/consumable/nutriment = 1, "cleaner" = 1, /datum/reagent/consumable/enzyme = 1, "tea" = 1, "mercury" = 1) required_temp = 374 /datum/chemical_reaction/aranesp @@ -45,8 +45,8 @@ name = "Happiness" id = "happiness" results = list("happiness" = 4) - required_reagents = list("nitrous_oxide" = 2, "epinephrine" = 1, "ethanol" = 1) - required_catalysts = list("plasma" = 5) + required_reagents = list("nitrous_oxide" = 2, "epinephrine" = 1, /datum/reagent/consumable/ethanol = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/skooma name = "skooma" diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index f5e12426e1..ffc03c1d02 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -4,7 +4,7 @@ id = "leporazine" results = list("leporazine" = 2) required_reagents = list("silicon" = 1, "copper" = 1) - required_catalysts = list("plasma" = 5) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/rezadone name = "Rezadone" @@ -22,19 +22,19 @@ name = "inacusiate" id = "inacusiate" results = list("inacusiate" = 2) - required_reagents = list("water" = 1, "carbon" = 1, "charcoal" = 1) + required_reagents = list("water" = 1, /datum/reagent/carbon = 1, "charcoal" = 1) /datum/chemical_reaction/synaptizine name = "Synaptizine" id = "synaptizine" results = list("synaptizine" = 3) - required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, "lithium" = 1, "water" = 1) /datum/chemical_reaction/charcoal name = "Charcoal" id = "charcoal" results = list("charcoal" = 2) - required_reagents = list("ash" = 1, "sodiumchloride" = 1) + required_reagents = list("ash" = 1, /datum/reagent/consumable/sodiumchloride = 1) mix_message = "The mixture yields a fine black powder." required_temp = 380 @@ -42,31 +42,31 @@ name = "Silver Sulfadiazine" id = "silver_sulfadiazine" results = list("silver_sulfadiazine" = 5) - required_reagents = list("ammonia" = 1, "silver" = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1) + required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, "sulfur" = 1, "oxygen" = 1, "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) + required_reagents = list(/datum/reagent/consumable/sodiumchloride = 1, "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) + required_reagents = list(/datum/reagent/oil = 1, "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 + 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) + required_reagents = list("blood" = 1, /datum/reagent/carbon = 1, "styptic_powder" = 1) /datum/chemical_reaction/synthtissue name = "Synthtissue" @@ -110,7 +110,7 @@ name = "Styptic Powder" id = "styptic_powder" results = list("styptic_powder" = 4) - required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, "sacid" = 1) + required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, /datum/reagent/toxin/acid = 1) mix_message = "The solution yields an astringent powder." /datum/chemical_reaction/calomel @@ -130,7 +130,7 @@ 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) + required_reagents = list(/datum/reagent/fuel = 1, "chlorine" = 1, /datum/reagent/ammonia = 1, "formaldehyde" = 1, "sodium" = 1, /datum/reagent/toxin/cyanide = 1) /datum/chemical_reaction/pen_jelly name = "Pentetic Jelly" @@ -142,25 +142,25 @@ name = "Salicyclic Acid" id = "sal_acid" results = list("sal_acid" = 5) - required_reagents = list("sodium" = 1, "phenol" = 1, "carbon" = 1, "oxygen" = 1, "sacid" = 1) + required_reagents = list("sodium" = 1, /datum/reagent/phenol = 1, /datum/reagent/carbon = 1, "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) + required_reagents = list(/datum/reagent/carbon = 3, /datum/reagent/phenol = 1, "hydrogen" = 1, "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) + required_reagents = list("sal_acid" = 1, "lithium" = 1, "aluminium" = 1, "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) + required_reagents = list("hydrogen" = 1, "fluorine" = 1, /datum/reagent/oil = 1) required_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." @@ -168,34 +168,34 @@ name = "Ephedrine" id = "ephedrine" results = list("ephedrine" = 4) - required_reagents = list("sugar" = 1, "oil" = 1, "hydrogen" = 1, "diethylamine" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, "hydrogen" = 1, "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) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/carbon = 1, "bromine" = 1, "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) + required_reagents = list("charcoal" = 1, /datum/reagent/carbon = 1, "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) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/acetone = 1, "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) + required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1) /datum/chemical_reaction/strange_reagent name = "Strange Reagent" @@ -207,32 +207,32 @@ name = "Mannitol" id = "mannitol" results = list("mannitol" = 3) - required_reagents = list("sugar" = 1, "hydrogen" = 1, "water" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, "hydrogen" = 1, "water" = 1) mix_message = "The solution slightly bubbles, becoming thicker." /datum/chemical_reaction/mutadone name = "Mutadone" id = "mutadone" results = list("mutadone" = 3) - required_reagents = list("mutagen" = 1, "acetone" = 1, "bromine" = 1) + required_reagents = list("mutagen" = 1, /datum/reagent/acetone = 1, "bromine" = 1) /datum/chemical_reaction/neurine name = "Neurine" id = "neurine" results = list("neurine" = 3) - required_reagents = list("mannitol" = 1, "acetone" = 1, "oxygen" = 1) + required_reagents = list("mannitol" = 1, /datum/reagent/acetone = 1, "oxygen" = 1) /datum/chemical_reaction/antihol name = "antihol" id = "antihol" results = list("antihol" = 3) - required_reagents = list("ethanol" = 1, "charcoal" = 1, "copper" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, "charcoal" = 1, "copper" = 1) /datum/chemical_reaction/cryoxadone name = "Cryoxadone" id = "cryoxadone" results = list("cryoxadone" = 3) - required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) + required_reagents = list("stable_plasma" = 1, /datum/reagent/acetone = 1, "mutagen" = 1) /datum/chemical_reaction/pyroxadone name = "Pyroxadone" @@ -245,25 +245,25 @@ id = "clonexadone" results = list("clonexadone" = 2) required_reagents = list("cryoxadone" = 1, "sodium" = 1) - required_catalysts = list("plasma" = 5) + 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) + required_reagents = list("chlorine" = 1, "fluorine" = 1, "aluminium" = 1, "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) + required_reagents = list(/datum/reagent/carbon = 1, "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) + required_reagents = list(/datum/reagent/carbon = 1, "silicon" = 1) /datum/chemical_reaction/antitoxin name = "Antitoxin" @@ -293,20 +293,20 @@ name = "Corazone" id = "corazone" results = list("corazone" = 3) - required_reagents = list("phenol" = 2, "lithium" = 1) + required_reagents = list(/datum/reagent/phenol = 2, "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) + required_reagents = list(/datum/reagent/carbon = 2, "hydrogen" = 2, /datum/reagent/consumable/ethanol = 1, "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_reagents = list("diethylamine" = 1, /datum/reagent/ammonia = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid = 1) required_catalysts = list("bromine" = 1) // as close to the real world synthesis as possible /datum/chemical_reaction/psicodine diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index eaae548d68..8adbed8c9d 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -3,7 +3,7 @@ name = "Sterilizine" id = "sterilizine" results = list("sterilizine" = 3) - required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, "charcoal" = 1, "chlorine" = 1) /datum/chemical_reaction/lube name = "Space Lube" @@ -15,7 +15,7 @@ name = "Spray Tan" id = "spraytan" results = list("spraytan" = 2) - required_reagents = list("orangejuice" = 1, "oil" = 1) + required_reagents = list("orangejuice" = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/spraytan2 name = "Spray Tan" @@ -27,30 +27,30 @@ name = "Impedrezene" id = "impedrezene" results = list("impedrezene" = 2) - required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) + required_reagents = list("mercury" = 1, "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) + required_reagents = list("potassium" = 1, "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) + required_reagents = list("cornoil" = 3, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/sodiumchloride name = "Sodium Chloride" id = "sodiumchloride" - results = list("sodiumchloride" = 3) + results = list(/datum/reagent/consumable/sodiumchloride = 3) required_reagents = list("water" = 1, "sodium" = 1, "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, "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("frostoil" = 5, /datum/reagent/gold = 20, /datum/reagent/iron = 1) mob_react = FALSE /datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, created_volume) @@ -73,7 +73,7 @@ name = "Capsaicincondensation" id = "capsaicincondensation" results = list("condensedcapsaicin" = 5) - required_reagents = list("capsaicin" = 1, "ethanol" = 5) + required_reagents = list("capsaicin" = 1, /datum/reagent/consumable/ethanol = 5) /datum/chemical_reaction/soapification name = "Soapification" @@ -86,7 +86,7 @@ name = "Mustard" id = "mustard" results = list("mustard" = 5) - required_reagents = list("mustardgrind" = 1, "water" = 10, "enzyme"= 1) + required_reagents = list("mustardgrind" = 1, "water" = 10, /datum/reagent/consumable/enzyme= 1) /datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -108,7 +108,7 @@ /datum/chemical_reaction/meatification name = "Meatification" id = "meatification" - required_reagents = list("liquidgibs" = 10, "nutriment" = 10, "carbon" = 10) + required_reagents = list("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) @@ -121,14 +121,14 @@ name = "Direct Carbon Oxidation" id = "burningcarbon" results = list("co2" = 3) - required_reagents = list("carbon" = 1, "oxygen" = 2) + required_reagents = list(/datum/reagent/carbon = 1, "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) + required_reagents = list(/datum/reagent/ammonia = 2, "nitrogen" = 1, "oxygen" = 2) required_temp = 525 //Technically a mutation toxin @@ -142,7 +142,7 @@ /datum/chemical_reaction/fermis_plush name = "Fermis plush" id = "fermis_plush" - required_reagents = list("sugar" = 10, "blood" = 10, "stable_plasma" = 10) + required_reagents = list(/datum/reagent/consumable/sugar = 10, "blood" = 10, "stable_plasma" = 10) mob_react = FALSE required_temp = 400 @@ -157,7 +157,7 @@ name = "Virus Food" id = "virusfood" results = list("virusfood" = 15) - required_reagents = list("water" = 5, "milk" = 5) + required_reagents = list("water" = 5, /datum/reagent/consumable/milk = 5) /datum/chemical_reaction/virus_food_mutagen name = "mutagenic agar" @@ -175,7 +175,7 @@ name = "virus plasma" id = "plasmavirusfood" results = list("plasmavirusfood" = 1) - required_reagents = list("plasma" = 1, "virusfood" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1, "virusfood" = 1) /datum/chemical_reaction/virus_food_plasma_synaptizine name = "weakened virus plasma" @@ -187,7 +187,7 @@ name = "sucrose agar" id = "sugarvirusfood" results = list("sugarvirusfood" = 2) - required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, "mutagenvirusfood" = 1) /datum/chemical_reaction/virus_food_mutagen_salineglucose name = "sucrose agar" @@ -211,13 +211,13 @@ name = "Stable uranium gel" id = "uraniumvirusfood_gold" results = list("uraniumplasmavirusfood_stable" = 1) - required_reagents = list("uranium" = 10, "gold" = 10, "plasma" = 1) + required_reagents = list("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) + required_reagents = list("uranium" = 10, /datum/reagent/silver = 10, /datum/reagent/toxin/plasma = 1) /datum/chemical_reaction/mix_virus name = "Mix Virus" @@ -249,7 +249,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 @@ -363,7 +363,7 @@ name = "Foam surfactant" id = "foam surfactant" results = list("fluorosurfactant" = 5) - required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) + required_reagents = list("fluorine" = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/foam name = "Foam" @@ -385,7 +385,7 @@ /datum/chemical_reaction/metalfoam name = "Metal Foam" id = "metalfoam" - required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "facid" = 1) + required_reagents = list("aluminium" = 3, "foaming_agent" = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE /datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume) @@ -402,7 +402,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("aluminium" = 3, "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) @@ -416,7 +416,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, "foaming_agent" = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE /datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) @@ -438,7 +438,7 @@ name = "Smart foaming Agent" id = "smart_foaming_agent" results = list("smart_foaming_agent" = 3) - required_reagents = list("foaming_agent" = 3, "acetone" = 1, "iron" = 1) + required_reagents = list("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." @@ -447,7 +447,7 @@ /datum/chemical_reaction/ammonia name = "Ammonia" id = "ammonia" - results = list("ammonia" = 3) + results = list(/datum/reagent/ammonia = 3) required_reagents = list("hydrogen" = 3, "nitrogen" = 1) /datum/chemical_reaction/diethylamine @@ -460,7 +460,7 @@ name = "Space cleaner" id = "cleaner" results = list("cleaner" = 2) - required_reagents = list("ammonia" = 1, "water" = 1) + required_reagents = list(/datum/reagent/ammonia = 1, "water" = 1) /datum/chemical_reaction/plantbgone name = "Plant-B-Gone" @@ -472,52 +472,52 @@ name = "Weed Killer" id = "weedkiller" results = list("weedkiller" = 5) - required_reagents = list("toxin" = 1, "ammonia" = 4) + required_reagents = list("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) + required_reagents = list("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) + required_reagents = list("stable_plasma" = 2, /datum/reagent/consumable/ethanol = 1, "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) + results = list(/datum/reagent/acetone = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, "oxygen" = 1) /datum/chemical_reaction/oil name = "Oil" id = "oil" - results = list("oil" = 3) - required_reagents = list("welding_fuel" = 1, "carbon" = 1, "hydrogen" = 1) + results = list(/datum/reagent/oil = 3) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, "hydrogen" = 1) /datum/chemical_reaction/phenol name = "phenol" id = "phenol" - results = list("phenol" = 3) - required_reagents = list("water" = 1, "chlorine" = 1, "oil" = 1) + results = list(/datum/reagent/phenol = 3) + required_reagents = list("water" = 1, "chlorine" = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/ash name = "Ash" id = "ash" results = list("ash" = 1) - required_reagents = list("oil" = 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) + required_reagents = list("stable_plasma" = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1, "cryoxadone" = 1, "triple_citrus" = 1) /datum/chemical_reaction/life name = "Life" @@ -532,7 +532,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("strange_reagent" = 1, "synthflesh" = 1, /datum/reagent/consumable/sugar = 1) required_temp = 374 /datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume) @@ -541,7 +541,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, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1) required_temp = 374 /datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) @@ -554,13 +554,13 @@ name = "hair_dye" id = "hair_dye" results = list("hair_dye" = 5) - required_reagents = list("colorful_reagent" = 1, "radium" = 1, "space_drugs" = 1) + required_reagents = list("colorful_reagent" = 1, /datum/reagent/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) + required_reagents = list("carpet" = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) /datum/chemical_reaction/concentrated_barbers_aid name = "concentrated_barbers_aid" @@ -584,7 +584,7 @@ name = "lye" id = "lye" results = list("lye" = 2) - required_reagents = list("ash" = 1, "water" = 1, "carbon" = 1) + required_reagents = list("ash" = 1, "water" = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" @@ -596,12 +596,12 @@ name = "laughter" id = "laughter" results = list("laughter" = 10) // Fuck it. I'm not touching this one. - required_reagents = list("sugar" = 1, "banana" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, "banana" = 1) /datum/chemical_reaction/plastic_polymers name = "plastic polymers" id = "plastic_polymers" - required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3) + required_reagents = list(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, "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) @@ -619,14 +619,14 @@ name = "felined mutation toxic" id = "cats" results = list("felinidmutationtoxin" = 1) - required_reagents = list("mindbreaker" = 1, "ammonia" = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme + required_reagents = list("mindbreaker" = 1, /datum/reagent/ammonia = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme required_temp = 450 /datum/chemical_reaction/moff name = "insect mutation toxic" id = "moffs" results = list("mothmutationtoxin" = 1) - required_reagents = list("liquid_dark_matter" = 2, "ammonia" = 5, "lithium" = 1, "stablemutationtoxin" = 1) + required_reagents = list("liquid_dark_matter" = 2, /datum/reagent/ammonia = 5, "lithium" = 1, "stablemutationtoxin" = 1) required_temp = 320 /datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play @@ -642,13 +642,13 @@ name = "carpet" id = "carpet" results = list("carpet" = 2) - required_reagents = list("space_drugs" = 1, "blood" = 1) + required_reagents = list(/datum/reagent/drug/space_drugs = 1, "blood" = 1) /datum/chemical_reaction/carpet/black name = "liquid black carpet" id = "blackcarpet" results = list("blackcarpet" = 2) - required_reagents = list("carpet" = 1, "carbon" = 1) + required_reagents = list("carpet" = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/carpet/blackred name = "liquid red black carpet" @@ -660,7 +660,7 @@ name = "liquid monochrome carpet" id = "monochromecarpet" results = list("monochromecarpet" = 2) - required_reagents = list("carpet" = 1, "oil" = 1) + required_reagents = list("carpet" = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/carpet/blue name = "liquid blue carpet" @@ -678,7 +678,7 @@ name = "liquid green carpet" id = "greencarpet" results = list("greencarpet" = 2) - required_reagents = list("carpet" = 1, "sacid" = 1) + required_reagents = list("carpet" = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/carpet/orange name = "liquid orange carpet" @@ -696,7 +696,7 @@ name = "liquid red carpet" id = "redcarpet" results = list("redcarpet" = 2) - required_reagents = list("carpet" = 1, "welding_fuel" = 1) + required_reagents = list("carpet" = 1, /datum/reagent/fuel = 1) /datum/chemical_reaction/carpet/royalblack name = "liquid royal black carpet" diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index cda27505aa..93b19fb19e 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -29,7 +29,7 @@ name = "Nitroglycerin" id = "nitroglycerin" results = list("nitroglycerin" = 2) - required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1) + required_reagents = list("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) @@ -105,12 +105,12 @@ name = "Thermite" id = "thermite" results = list("thermite" = 3) - required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1) + required_reagents = list("aluminium" = 1, /datum/reagent/iron = 1, "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("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) @@ -123,7 +123,7 @@ /datum/chemical_reaction/beesplosion name = "Bee Explosion" id = "beesplosion" - required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1) + required_reagents = list("honey" = 1, "strange_reagent" = 1, /datum/reagent/radium = 1) /datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) var/location = holder.my_atom.drop_location() @@ -148,7 +148,7 @@ name = "stabilizing_agent" id = "stabilizing_agent" results = list("stabilizing_agent" = 3) - required_reagents = list("iron" = 1, "oxygen" = 1, "hydrogen" = 1) + required_reagents = list(/datum/reagent/iron = 1, "oxygen" = 1, "hydrogen" = 1) /datum/chemical_reaction/clf3 name = "Chlorine Trifluoride" @@ -188,7 +188,7 @@ name = "Sorium" id = "sorium" results = list("sorium" = 4) - required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1) + required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -213,7 +213,7 @@ name = "Liquid Dark Matter" id = "liquid_dark_matter" results = list("liquid_dark_matter" = 3) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1) + required_reagents = list("stable_plasma" = 1, /datum/reagent/radium = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -281,7 +281,7 @@ name = "smoke_powder" id = "smoke_powder" results = list("smoke_powder" = 3) - required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) + required_reagents = list("potassium" = 1, /datum/reagent/consumable/sugar = 1, "phosphorus" = 1) /datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -348,7 +348,7 @@ name = "phlogiston" id = "phlogiston" results = list("phlogiston" = 3) - required_reagents = list("phosphorus" = 1, "sacid" = 1, "stable_plasma" = 1) + required_reagents = list("phosphorus" = 1, /datum/reagent/toxin/acid = 1, "stable_plasma" = 1) /datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -363,7 +363,7 @@ name = "Napalm" id = "napalm" results = list("napalm" = 3) - required_reagents = list("oil" = 1, "welding_fuel" = 1, "ethanol" = 1 ) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1 ) /datum/chemical_reaction/cryostylane name = "cryostylane" @@ -399,7 +399,7 @@ name = "pyrosium" id = "pyrosium" results = list("pyrosium" = 3) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "phosphorus" = 1) + required_reagents = list("stable_plasma" = 1, /datum/reagent/radium = 1, "phosphorus" = 1) /datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // also cools the fuck down @@ -409,7 +409,7 @@ name = "Teslium" id = "teslium" results = list("teslium" = 3) - required_reagents = list("stable_plasma" = 1, "silver" = 1, "blackpowder" = 1) + required_reagents = list("stable_plasma" = 1, /datum/reagent/silver = 1, "blackpowder" = 1) mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 @@ -466,7 +466,7 @@ name = "Firefighting Foam" id = "firefighting_foam" results = list("firefighting_foam" = 3) - required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1) + required_reagents = list("stabilizing_agent" = 1,"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 8edca91a91..9c737af5c0 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 @@ -50,7 +50,7 @@ name = "Mutation Toxin" id = "slimetoxin" results = list("slime_toxin" = 1) - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/green @@ -66,7 +66,7 @@ name = "Lizard Mutation Toxin" id = "lizardmuttoxin" results = list("lizardmutationtoxin" = 1) - required_reagents = list("radium" = 1) + required_reagents = list(/datum/reagent/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 @@ -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 @@ -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 @@ -182,7 +182,7 @@ name = "Slime Frost Oil" id = "m_frostoil" results = list("frostoil" = 10) - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) 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 @@ -253,7 +253,7 @@ /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 @@ -297,7 +297,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 @@ -322,7 +322,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 @@ -342,7 +342,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 @@ -354,7 +354,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 @@ -395,7 +395,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 @@ -419,7 +419,7 @@ name = "Advanced Mutation Toxin" id = "mutationtoxin2" results = list("amutationtoxin" = 1) - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/black @@ -427,7 +427,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 @@ -466,7 +466,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) @@ -489,7 +489,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 @@ -513,7 +513,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 @@ -537,7 +537,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 @@ -560,7 +560,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 @@ -597,7 +597,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 @@ -622,7 +622,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 diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 726175a6c6..b0c0f715c7 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -3,41 +3,41 @@ name = "formaldehyde" id = "Formaldehyde" results = list("formaldehyde" = 3) - required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, "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) + 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) + results = list(/datum/reagent/toxin/cyanide = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, "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) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/ammonia = 1, "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) + results = list(/datum/reagent/toxin/acid/fluacid = 4) + required_reagents = list(/datum/reagent/toxin/acid = 1, "fluorine" = 1, "hydrogen" = 1, "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) + required_reagents = list(/datum/reagent/acetone = 1, "diethylamine" = 1, "sulfur" = 1) /datum/chemical_reaction/lipolicide name = "lipolicide" @@ -49,32 +49,32 @@ name = "Unstable mutagen" id = "mutagen" results = list("mutagen" = 3) - required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) + required_reagents = list(/datum/reagent/radium = 1, "phosphorus" = 1, "chlorine" = 1) /datum/chemical_reaction/lexorin name = "Lexorin" id = "lexorin" results = list("lexorin" = 3) - required_reagents = list("plasma" = 1, "hydrogen" = 1, "oxygen" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1, "hydrogen" = 1, "oxygen" = 1) /datum/chemical_reaction/chloralhydrate name = "Chloral Hydrate" id = "chloralhydrate" results = list("chloralhydrate" = 1) - required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, "chlorine" = 3, "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) + required_reagents = list("uranium" = 2, "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) - + /datum/chemical_reaction/ghoulpowder name = "Ghoul Powder" id = "ghoulpowder" @@ -105,24 +105,24 @@ name = "Skewium" id = "Skewium" results = list("skewium" = 5) - required_reagents = list("rotatium" = 2, "plasma" = 2, "sacid" = 1) + required_reagents = list("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) + required_reagents = list("haloperidol" = 1, "impedrezene" = 1, /datum/reagent/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) + required_reagents = list(/datum/reagent/radium = 1, "mutetoxin" = 1, "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) + required_reagents = list("mutagen" = 1, "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/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index cb7addb95d..dc0d4a3ef8 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -48,12 +48,12 @@ /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" @@ -90,7 +90,7 @@ /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" @@ -105,7 +105,7 @@ /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" @@ -115,7 +115,7 @@ /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" @@ -321,7 +321,7 @@ /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" @@ -365,7 +365,7 @@ /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" @@ -377,31 +377,31 @@ /obj/item/reagent_containers/glass/bottle/radium name = "radium bottle" - list_reagents = list("radium" = 30) + list_reagents = list(/datum/reagent/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" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 3ed505c360..345b63c72b 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -234,7 +234,7 @@ list_reagents = list("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) @@ -335,7 +335,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, "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 @@ -352,7 +352,7 @@ 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 container_HP = 1 diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index d4880aa085..d0ca7466b7 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -82,14 +82,14 @@ name = "toxins pill" desc = "Highly toxic." icon_state = "pill5" - list_reagents = list("toxin" = 50) + list_reagents = list(/datum/reagent/toxin = 50) roundstart = 1 /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) roundstart = 1 /obj/item/reagent_containers/pill/adminordrazine @@ -138,7 +138,7 @@ 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) roundstart = 1 /obj/item/reagent_containers/pill/mutadone @@ -187,14 +187,14 @@ name = "prussian blue pill" desc = "Used to treat heavy radition poisoning." icon_state = "prussian_blue" - list_reagents = list("prussian_blue" = 25, "water" = 10) + list_reagents = list("prussian_blue" = 25, /datum/reagent/water = 10) roundstart = 1 /obj/item/reagent_containers/pill/mutarad name = "radiation treatment deluxe pill" desc = "Used to treat heavy radition poisoning and genetic defects." icon_state = "anit_rad_fixgene" - list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5) + list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, /datum/reagent/water = 5) roundstart = 1 ///////////////////////////////////////// this pill is used only in a legion mob drop @@ -212,7 +212,7 @@ /obj/item/reagent_containers/pill/happy name = "happy pill" - list_reagents = list("sugar" = 10, "space_drugs" = 10) + list_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/drug/space_drugs = 10) /obj/item/reagent_containers/pill/lsd diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 048cebcf3e..88165f5b98 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -218,7 +218,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 diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 6bdae6225a..ceefc9348d 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -211,7 +211,7 @@ /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" @@ -223,7 +223,7 @@ list_reagents = list("chloralhydrate" = 50) /obj/item/reagent_containers/syringe/lethal/execution - list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10) //Citadel edit, changing out plasma from lethals + list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) //Citadel edit, changing out plasma from lethals /obj/item/reagent_containers/syringe/mulligan name = "Mulligan" diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 0099fe143d..da376ad930 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -50,7 +50,7 @@ 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("stabilizednutriment" = 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/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index a180bd947e..fcbed13d94 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -173,7 +173,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/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm index 741782545a..1c016db69c 100644 --- a/code/modules/vore/eating/voreitems.dm +++ b/code/modules/vore/eating/voreitems.dm @@ -59,4 +59,4 @@ name = "Ickypak" id = "ickypak" results = list("ickypak" = 2) - required_reagents = list("chlorine" = 2 , "oil" = 1) */ \ No newline at end of file + required_reagents = list("chlorine" = 2 , /datum/reagent/oil = 1) */ \ No newline at end of file diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 56f793cd66..902e5bf298 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -106,7 +106,7 @@ name = "Eigenstasium" id = "eigenstate" results = list("eigenstate" = 1) - required_reagents = list("bluespace" = 1, "stable_plasma" = 1, "sugar" = 1) + required_reagents = list("bluespace" = 1, "stable_plasma" = 1, /datum/reagent/consumable/sugar = 1) mix_message = "the reaction zaps suddenly!" //FermiChem vars: OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions @@ -181,7 +181,7 @@ name = "Sucubus milk" id = "breast_enlarger" results = list("breast_enlarger" = 8) - required_reagents = list("salglu_solution" = 1, "milk" = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3) + required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/milk = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -221,7 +221,7 @@ name = "Incubus draft" id = "penis_enlarger" results = list("penis_enlarger" = 8) - required_reagents = list("blood" = 5, "synthflesh" = 2, "carbon" = 2, "aphro" = 2, "salglu_solution" = 1) + required_reagents = list("blood" = 5, "synthflesh" = 2, /datum/reagent/carbon = 2, "aphro" = 2, "salglu_solution" = 1) mix_message = "the reaction gives off a spicy mist." //FermiChem vars: OptimalTempMin = 200 @@ -260,7 +260,7 @@ name = "Astrogen" id = "astral" results = list("astral" = 5) - required_reagents = list("eigenstate" = 1, "plasma" = 3, "synaptizine" = 1, "aluminium" = 5) + required_reagents = list("eigenstate" = 1, /datum/reagent/toxin/plasma = 3, "synaptizine" = 1, "aluminium" = 5) //FermiChem vars: OptimalTempMin = 700 OptimalTempMax = 800 @@ -360,7 +360,7 @@ name = "Hat growth serum" id = "hatmium" results = list("hatmium" = 5) - required_reagents = list("ethanol" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "gold" = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/consumable/nutriment = 3, "cooking_oil" = 2, /datum/reagent/iron = 1, /datum/reagent/gold = 3) //mix_message = "" //FermiChem vars: OptimalTempMin = 500 @@ -395,7 +395,7 @@ name = "Furranium" id = "furranium" results = list("furranium" = 5) - required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1) + required_reagents = list("aphro" = 1, "moonsugar" = 1, /datum/reagent/silver = 2, "salglu_solution" = 1) mix_message = "You think you can hear a howl come from the beaker." //FermiChem vars: OptimalTempMin = 350 @@ -414,7 +414,7 @@ PurityMin = 0.3 /datum/chemical_reaction/fermi/furranium/organic - required_reagents = list("aphro" = 1, "catnip" = 1, "silver" = 2, "salglu_solution" = 1) + required_reagents = list("aphro" = 1, "catnip" = 1, /datum/reagent/silver = 2, "salglu_solution" = 1) //FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. //There's a weird rounding error or something ugh. @@ -424,7 +424,7 @@ name = "Naninte bain" id = "nanite_b_gone" results = list("nanite_b_gone" = 4) - required_reagents = list("synthflesh" = 1, "uranium" = 1, "iron" = 1, "salglu_solution" = 1) + required_reagents = list("synthflesh" = 1, "uranium" = 1, /datum/reagent/iron = 1, "salglu_solution" = 1) mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off." required_temp = 450//To force fermireactions before EMP. //FermiChem vars: @@ -446,7 +446,7 @@ name = "Acetic acid buffer" id = "acidic_buffer" results = list("acidic_buffer" = 10) //acetic acid - required_reagents = list("salglu_solution" = 1, "ethanol" = 3, "oxygen" = 3, "water" = 3) + required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/ethanol = 3, "oxygen" = 3, "water" = 3) //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -473,8 +473,8 @@ name = "Ethyl Ethanoate buffer" id = "basic_buffer" results = list("basic_buffer" = 5) - required_reagents = list("lye" = 1, "ethanol" = 2, "water" = 2) - required_catalysts = list("sacid" = 1) //vagely acetic + required_reagents = list("lye" = 1, /datum/reagent/consumable/ethanol = 2, "water" = 2) + required_catalysts = list(/datum/reagent/toxin/acid = 1) //vagely acetic //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -505,7 +505,7 @@ name = "secretcatchem" id = "secretcatchem" results = list("secretcatchem" = 5) - required_reagents = list("stable_plasma" = 1, "sugar" = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. + required_reagents = list("stable_plasma" = 1, /datum/reagent/consumable/sugar = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. required_catalysts = list("SDGF" = 1) required_temp = 500 mix_message = "the reaction gives off a meow!" diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index aa4c65c3bb..8fe2b72ae7 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -208,7 +208,7 @@ name = "crocin" id = "aphro" results = list("aphro" = 6) - required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) + required_reagents = list(/datum/reagent/carbon = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) required_temp = 400 mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin @@ -216,7 +216,7 @@ name = "hexacrocin" id = "aphro+" results = list("aphro+" = 1) - required_reagents = list("aphro" = 6, "phenol" = 1) + required_reagents = list("aphro" = 6, /datum/reagent/phenol = 1) required_temp = 400 mix_message = "The mixture rapidly condenses and darkens in color..." @@ -224,7 +224,7 @@ name = "camphor" id = "anaphro" results = list("anaphro" = 6) - required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1) + required_reagents = list(/datum/reagent/carbon = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1) required_temp = 400 mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor @@ -232,6 +232,6 @@ name = "pentacamphor" id = "anaphro+" results = list("anaphro+" = 1) - required_reagents = list("anaphro" = 5, "acetone" = 1) + required_reagents = list("anaphro" = 5, /datum/reagent/acetone = 1) required_temp = 300 mix_message = "The mixture thickens and heats up slighty..." From cd6bf768033dd1250297be5d85bcc6399368addf Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 25 Dec 2019 01:41:35 +0100 Subject: [PATCH 10/78] f --- code/modules/mob/living/carbon/human/update_icons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 582739a411..989823cf7f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -469,7 +469,7 @@ There are several things that need to be remembered: if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") muzzled = TRUE if(muzzled && M.mutantrace_variation & STYLE_MUZZLE) - alt_icon = 'icons/mob/head_muzzled.dmi' + alt_icon = 'icons/mob/mask_muzzled.dmi' variation_flag |= STYLE_MUZZLE overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(wear_mask.icon_state, FACEMASK_LAYER, alt_icon ? alt_icon : 'icons/mob/mask.dmi', style_flags = variation_flag) From 57cecd24994af08d6af45de0a935e80743143952 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 25 Dec 2019 06:54:44 +0100 Subject: [PATCH 11/78] work --- .../game/gamemodes/clown_ops/clown_weapons.dm | 2 +- code/game/objects/items/apc_frame.dm | 2 +- .../items/circuitboards/circuitboard.dm | 2 +- code/game/objects/items/devices/flashlight.dm | 2 +- code/game/objects/items/devices/scanners.dm | 2 +- code/game/objects/items/stacks/bscrystal.dm | 2 +- .../game/objects/items/stacks/sheets/light.dm | 2 +- code/game/objects/structures/watercloset.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 6 +-- .../drinks/drinks/drinkingglass.dm | 2 +- .../modules/food_and_drinks/food/condiment.dm | 2 +- .../food_and_drinks/food/snacks_burgers.dm | 2 +- .../food_and_drinks/food/snacks_meat.dm | 14 +++---- .../food_and_drinks/food/snacks_other.dm | 8 ++-- .../food_and_drinks/food/snacks_soup.dm | 6 +-- .../food_and_drinks/food/snacks_sushi.dm | 6 +-- .../food_and_drinks/recipes/drinks_recipes.dm | 14 +++---- .../food_and_drinks/recipes/food_mixtures.dm | 2 +- code/modules/hydroponics/grown/banana.dm | 2 +- code/modules/hydroponics/grown/berries.dm | 2 +- code/modules/hydroponics/grown/chili.dm | 6 +-- code/modules/hydroponics/grown/flowers.dm | 4 +- .../modules/hydroponics/grown/grass_carpet.dm | 4 +- code/modules/hydroponics/grown/misc.dm | 2 +- code/modules/hydroponics/grown/pumpkin.dm | 2 +- code/modules/hydroponics/grown/tomato.dm | 4 +- .../mob/living/silicon/robot/robot_modules.dm | 2 +- code/modules/paperwork/pen.dm | 2 +- code/modules/paperwork/photocopier.dm | 2 +- code/modules/photography/photos/photo.dm | 2 +- code/modules/power/cell.dm | 2 +- code/modules/power/lighting.dm | 2 +- .../reagents/chemistry/recipes/drugs.dm | 8 ++-- .../reagents/chemistry/recipes/medicine.dm | 40 +++++++++---------- .../reagents/chemistry/recipes/others.dm | 40 +++++++++---------- .../chemistry/recipes/pyrotechnics.dm | 26 ++++++------ .../reagents/chemistry/recipes/toxins.dm | 18 ++++----- .../reagents/reagent_containers/bottle.dm | 24 +++++------ .../reagents/reagent_containers/glass.dm | 2 +- code/modules/vore/eating/voreitems.dm | 2 +- .../reagents/chemistry/recipes/fermi.dm | 4 +- .../modules/reagents/reagents/cit_reagents.dm | 4 +- 42 files changed, 142 insertions(+), 142 deletions(-) diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 40da21d6f2..0945875ac9 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. diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index ab733637a2..c725148d9a 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(/datum/reagent/iron = 10, "silicon" = 10) + grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 8106733ac6..5f87f9ffd9 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/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 339df0363e..bb0624d89f 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -430,7 +430,7 @@ color = LIGHT_COLOR_GREEN icon_state = "glowstick" item_state = "glowstick" - grind_results = list(/datum/reagent/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 rad_flags = RAD_NO_CONTAMINATE var/fuel = 0 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9fcfa61672..ee41307960 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -518,7 +518,7 @@ SLIME SCANNER throw_range = 7 tool_behaviour = TOOL_ANALYZER materials = list(MAT_METAL=30, MAT_GLASS=20) - grind_results = list("mercury" = 5, /datum/reagent/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/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 49a735af9c..70dc2e6b23 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -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("bluespace" = 10, /datum/reagent/silicon = 20) //Polycrystals, aka stacks /obj/item/stack/sheet/bluespace_crystal diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index c2c6015747..b7c266a0f0 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, "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/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index d867119c9e..e868d58730 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -199,7 +199,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "urinalcake" w_class = WEIGHT_CLASS_TINY - list_reagents = list("chlorine" = 3, /datum/reagent/ammonia = 1) + list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1) /obj/item/reagent_containers/food/urinalcake/attack_self(mob/living/user) user.visible_message("[user] squishes [src]!", "You squish [src].", "You hear a squish.") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 28ecb42970..97bf22fb78 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -431,7 +431,7 @@ name = "Space Cola" desc = "Cola. in space." 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 @@ -469,7 +469,7 @@ 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, "orangejuice" = 15) foodtype = SUGAR | FRUIT | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind @@ -524,7 +524,7 @@ 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) /obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy name = "Monkey Energy" diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index a5703c4671..9c6fddac5d 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -85,7 +85,7 @@ /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" diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 614daf4fda..9a69c1b3d1 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -294,7 +294,7 @@ /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" diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 8346762bc5..c4701a40c3 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -298,7 +298,7 @@ desc = "HOT! HOT!" icon_state = "fivealarmburger" bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "capsaicin" = 5, "condensedcapsaicin" = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5, "condensedcapsaicin" = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/rat diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 60c3dce39b..a32180798d 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -11,7 +11,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) bitesize = 3 filling_color = "#CD853F" - list_reagents = list(/datum/reagent/consumable/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 @@ -247,7 +247,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 4 filling_color = "#FFA07A" - list_reagents = list(/datum/reagent/consumable/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 @@ -271,8 +271,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(/datum/reagent/consumable/nutriment = 1, "capsaicin" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/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 @@ -293,8 +293,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "capsaicin" = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/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 @@ -349,7 +349,7 @@ name = "fiesta skewer" icon_state = "fiestaskewer" tastes = list("tex-mex" = 3, "cumin" = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5, "capsaicin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 3) /obj/item/reagent_containers/food/snacks/bbqribs name = "bbq ribs" diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 2c271ba216..ac11b80cab 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -309,7 +309,7 @@ desc = "A super spicy burrito." icon_state = "fuegoburrito" bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 4, "capsaicin" = 5, /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 @@ -370,7 +370,7 @@ desc = "That's some dangerously spicy nachos." icon_state = "cubannachos" bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 7, "capsaicin" = 8, /datum/reagent/consumable/nutriment/vitamin = 4) + 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 @@ -401,8 +401,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(/datum/reagent/consumable/nutriment/vitamin = 3, "capsaicin" = 1, "tricordrazine" = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, "capsaicin" = 2, "tricordrazine" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1, "tricordrazine" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 2, "tricordrazine" = 10) tastes = list("death" = 2, "rock" = 1, "meat" = 1, "hot peppers" = 1) foodtype = MEAT diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index ef83e7d0e0..129d41c51f 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -112,7 +112,7 @@ desc = "A five alarm Texan Chili!" icon_state = "hotchili" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, "capsaicin" = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/capsaicin = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("hot peppers" = 1) foodtype = VEGETABLES @@ -121,7 +121,7 @@ desc = "This slush is barely a liquid!" icon_state = "coldchili" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, "frostoil" = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/frostoil = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("tomato" = 1, "mint" = 1) foodtype = VEGETABLES @@ -242,7 +242,7 @@ desc = "A spicy vegetable curry made with the humble bungo fruit, Exotic!" icon_state = "bungocurry" bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 11) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "capsaicin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) tastes = list("bungo" = 2, "hot curry" = 4, "tropical sweetness" = 1) filling_color = "#E6A625" foodtype = VEGETABLES | FRUIT | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm index f011018e8b..d16ca79001 100644 --- a/code/modules/food_and_drinks/food/snacks_sushi.dm +++ b/code/modules/food_and_drinks/food/snacks_sushi.dm @@ -24,7 +24,7 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tuna_can" //trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat - list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5, "mercury" = 2) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5, /datum/reagent/mercury = 2) tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) foodtype = MEAT @@ -88,8 +88,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "capsaicin" = 4, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/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 \ No newline at end of file diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index bf3ed0e869..f3c5cf8cdf 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -34,7 +34,7 @@ name = "Nuka Cola" id = "nuka_cola" results = list("nuka_cola" = 6) - required_reagents = list("uranium" = 1, "cola" = 6) + required_reagents = list("uranium" = 1, /datum/reagent/consumable/space_cola = 6) /datum/chemical_reaction/moonshine name = "Moonshine" @@ -81,7 +81,7 @@ name = "Rum and Coke" id = "rumcoke" results = list("rumcoke" = 3) - required_reagents = list("rum" = 2, "cola" = 1) + required_reagents = list("rum" = 2, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/cuba_libre name = "Cuba Libre" @@ -111,7 +111,7 @@ name = "Whiskey Cola" id = "whiskeycola" results = list("whiskeycola" = 3) - required_reagents = list("whiskey" = 2, "cola" = 1) + required_reagents = list("whiskey" = 2, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/screwdriver name = "Screwdriver" @@ -307,7 +307,7 @@ name = "Sbiten" id = "sbiten" results = list("sbiten" = 10) - required_reagents = list("vodka" = 10, "capsaicin" = 1) + required_reagents = list("vodka" = 10, /datum/reagent/consumable/capsaicin = 1) /datum/chemical_reaction/red_mead name = "Red Mead" @@ -646,7 +646,7 @@ 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) + required_reagents = list("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 @@ -698,7 +698,7 @@ name = "Fernet Cola" id = "fernet_cola" results = list("fernet_cola" = 2) - required_reagents = list("fernet" = 1, "cola" = 1) + required_reagents = list("fernet" = 1, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/fanciulli name = "Fanciulli" @@ -812,7 +812,7 @@ name = "Red Queen" id = "red_queen" results = list("red_queen" = 10) - required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) + required_reagents = list("tea" = 6, /datum/reagent/mercury = 2, "blackpepper" = 1, "growthserum" = 1) /datum/chemical_reaction/catnip_tea name = "Catnip Tea" diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index eb3f0d7353..9123712d71 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -124,7 +124,7 @@ name = "Hell Ramen" id = "hell_ramen" results = list("hell_ramen" = 6) - required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) + required_reagents = list(/datum/reagent/consumable/capsaicin = 1, "hot_ramen" = 6) /datum/chemical_reaction/imitationcarpmeat name = "Imitation Carpmeat" diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index d1af80b4f4..7b78e11688 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, /obj/item/seeds/banana/exotic_banana) - reagents_add = list(/datum/reagent/consumable/banana = 0.1, "potassium" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index 718b594bca..7e78c0e1a8 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -91,7 +91,7 @@ endurance = 25 mutatelist = list() genes = list(/datum/plant_gene/trait/glow/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("uranium" = 0.25, "iodine" = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list("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 diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 51453e51ae..1cc61a3b9e 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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/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, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list("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/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 9e5306014d..c6a53e58b8 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -209,7 +209,7 @@ icon_dead = "sunflower-dead" product = /obj/item/grown/novaflower mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, /datum/reagent/consumable/nutriment = 0) + reagents_add = list("condensedcapsaicin" = 0.25, /datum/reagent/consumable/capsaicin = 0.3, /datum/reagent/consumable/nutriment = 0) rarity = 20 /obj/item/grown/novaflower @@ -227,7 +227,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, "condensedcapsaicin" = 0) tastes = list("cooked sunflower" = 1) /obj/item/grown/novaflower/add_juice() diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index f120ee7397..9ee55c2b6e 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, /obj/item/seeds/grass/fairy) - reagents_add = list(/datum/reagent/consumable/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 @@ -51,7 +51,7 @@ icon_grow = "fairygrass-grow" icon_dead = "fairygrass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue) - reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, "hydrogen" = 0.05, /datum/reagent/drug/space_drugs = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15) /obj/item/reagent_containers/food/snacks/grown/grass/fairy seed = /obj/item/seeds/grass/fairy diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 62122d0a74..8ee541a469 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -173,7 +173,7 @@ growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' - reagents_add = list("sulfur" = 0.1, /datum/reagent/carbon = 0.1, "nitrogen" = 0.07, "potassium" = 0.05) + reagents_add = list("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 diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index e489c8434e..10009cad7c 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -45,7 +45,7 @@ plantname = "Blumpkin Vines" product = /obj/item/reagent_containers/food/snacks/grown/blumpkin mutatelist = list() - reagents_add = list(/datum/reagent/ammonia = 0.2, "chlorine" = 0.1, /datum/reagent/consumable/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 diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index f42639cf26..06eea003cc 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 @@ -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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) + reagents_add = list(/datum/reagent/lube = 0.2, "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 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d934550149..38dbdae8bb 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -677,7 +677,7 @@ /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/clown name = "Clown" diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index ac79485ab1..8172a57399 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(/datum/reagent/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 diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 095f57b4d0..e8d318697c 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -335,6 +335,6 @@ name = "toner cartridge" icon = 'icons/obj/device.dmi' icon_state = "tonercartridge" - grind_results = list("iodine" = 40, /datum/reagent/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 5682c333c7..49f315d998 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/cell.dm b/code/modules/power/cell.dm index fa8b28ed50..a030daae72 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, /datum/reagent/iron = 5, "silicon" = 5) + grind_results = list("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? diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index fbe262c5e3..e50b11ea35 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -719,7 +719,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 = 0 // true if rigged to explode var/brightness = 2 //how much light it gives off diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 1b0a691339..f9842bdc85 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -2,7 +2,7 @@ name = "Space Drugs" id = "space_drugs" results = list(/datum/reagent/drug/space_drugs = 3) - required_reagents = list("mercury" = 1, /datum/reagent/consumable/sugar = 1, "lithium" = 1) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/consumable/sugar = 1, "lithium" = 1) /datum/chemical_reaction/crank name = "Crank" @@ -17,7 +17,7 @@ name = "Krokodil" id = "krokodil" results = list("krokodil" = 6) - required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, /datum/reagent/fuel = 1) + required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, /datum/reagent/potassium = 1, "phosphorus" = 1, /datum/reagent/fuel = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 @@ -25,14 +25,14 @@ name = "methamphetamine" id = "methamphetamine" results = list("methamphetamine" = 4) - required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) + required_reagents = list("ephedrine" = 1, /datum/reagent/iodine = 1, "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, /datum/reagent/consumable/nutriment = 1, "cleaner" = 1, /datum/reagent/consumable/enzyme = 1, "tea" = 1, "mercury" = 1) + required_reagents = list("bad_food" = 1, "saltpetre" = 1, /datum/reagent/consumable/nutriment = 1, "cleaner" = 1, /datum/reagent/consumable/enzyme = 1, "tea" = 1, /datum/reagent/mercury = 1) required_temp = 374 /datum/chemical_reaction/aranesp diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index ffc03c1d02..8dca3d62a7 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -3,7 +3,7 @@ name = "Leporazine" id = "leporazine" results = list("leporazine" = 2) - required_reagents = list("silicon" = 1, "copper" = 1) + required_reagents = list(/datum/reagent/silicon = 1, "copper" = 1) required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/rezadone @@ -42,7 +42,7 @@ name = "Silver Sulfadiazine" id = "silver_sulfadiazine" results = list("silver_sulfadiazine" = 5) - required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1) + required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, "sulfur" = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/salglu_solution name = "Saline-Glucose Solution" @@ -110,27 +110,27 @@ name = "Styptic Powder" id = "styptic_powder" results = list("styptic_powder" = 4) - required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, /datum/reagent/toxin/acid = 1) + required_reagents = list("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) + 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) + 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(/datum/reagent/fuel = 1, "chlorine" = 1, /datum/reagent/ammonia = 1, "formaldehyde" = 1, "sodium" = 1, /datum/reagent/toxin/cyanide = 1) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/chlorine = 1, /datum/reagent/ammonia = 1, "formaldehyde" = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/cyanide = 1) /datum/chemical_reaction/pen_jelly name = "Pentetic Jelly" @@ -142,13 +142,13 @@ name = "Salicyclic Acid" id = "sal_acid" results = list("sal_acid" = 5) - required_reagents = list("sodium" = 1, /datum/reagent/phenol = 1, /datum/reagent/carbon = 1, "oxygen" = 1, /datum/reagent/toxin/acid = 1) + 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(/datum/reagent/carbon = 3, /datum/reagent/phenol = 1, "hydrogen" = 1, "oxygen" = 1) + 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" @@ -160,7 +160,7 @@ name = "Perfluorodecalin" id = "perfluorodecalin" results = list("perfluorodecalin" = 3) - required_reagents = list("hydrogen" = 1, "fluorine" = 1, /datum/reagent/oil = 1) + 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." @@ -168,7 +168,7 @@ name = "Ephedrine" id = "ephedrine" results = list("ephedrine" = 4) - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, "hydrogen" = 1, "diethylamine" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, /datum/reagent/hydrogen = 1, "diethylamine" = 1) mix_message = "The solution fizzes and gives off toxic fumes." /datum/chemical_reaction/diphenhydramine @@ -182,7 +182,7 @@ name = "Oculine" id = "oculine" results = list("oculine" = 3) - required_reagents = list("charcoal" = 1, /datum/reagent/carbon = 1, "hydrogen" = 1) + required_reagents = list("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 @@ -195,7 +195,7 @@ name = "Epinephrine" id = "epinephrine" results = list("epinephrine" = 6) - required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1) + required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, "diethylamine" = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/strange_reagent name = "Strange Reagent" @@ -207,7 +207,7 @@ name = "Mannitol" id = "mannitol" results = list("mannitol" = 3) - required_reagents = list(/datum/reagent/consumable/sugar = 1, "hydrogen" = 1, "water" = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, "water" = 1) mix_message = "The solution slightly bubbles, becoming thicker." /datum/chemical_reaction/mutadone @@ -220,7 +220,7 @@ name = "Neurine" id = "neurine" results = list("neurine" = 3) - required_reagents = list("mannitol" = 1, /datum/reagent/acetone = 1, "oxygen" = 1) + required_reagents = list("mannitol" = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/antihol name = "antihol" @@ -244,32 +244,32 @@ name = "Clonexadone" id = "clonexadone" results = list("clonexadone" = 2) - required_reagents = list("cryoxadone" = 1, "sodium" = 1) + required_reagents = list("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, /datum/reagent/oil = 1) + required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 1, "aluminium" = 1, "potass_iodide" = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/bicaridine name = "Bicaridine" id = "bicaridine" results = list("bicaridine" = 3) - required_reagents = list(/datum/reagent/carbon = 1, "oxygen" = 1, /datum/reagent/consumable/sugar = 1) + 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(/datum/reagent/carbon = 1, "silicon" = 1) + 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) + required_reagents = list(/datum/reagent/nitrogen = 1, /datum/reagent/silicon = 1, /datum/reagent/potassium = 1) /datum/chemical_reaction/tricordrazine name = "Tricordrazine" @@ -299,7 +299,7 @@ name = "Morphine" id = "morphine" results = list("morphine" = 2) - required_reagents = list(/datum/reagent/carbon = 2, "hydrogen" = 2, /datum/reagent/consumable/ethanol = 1, "oxygen" = 1) + 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 diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 8adbed8c9d..cbf1f6594e 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -3,13 +3,13 @@ name = "Sterilizine" id = "sterilizine" results = list("sterilizine" = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, "charcoal" = 1, "chlorine" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, "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) + required_reagents = list("water" = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/spraytan name = "Spray Tan" @@ -27,13 +27,13 @@ name = "Impedrezene" id = "impedrezene" results = list("impedrezene" = 2) - required_reagents = list("mercury" = 1, "oxygen" = 1, /datum/reagent/consumable/sugar = 1) + 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, /datum/reagent/consumable/sugar = 1) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/glycerol name = "Glycerol" @@ -45,12 +45,12 @@ name = "Sodium Chloride" id = "sodiumchloride" results = list(/datum/reagent/consumable/sodiumchloride = 3) - required_reagents = list("water" = 1, "sodium" = 1, "chlorine" = 1) + required_reagents = list("water" = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/plasmasolidification name = "Solid Plasma" id = "solidplasma" - required_reagents = list(/datum/reagent/iron = 5, "frostoil" = 5, /datum/reagent/toxin/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, /datum/reagent/gold = 20, /datum/reagent/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) @@ -73,7 +73,7 @@ name = "Capsaicincondensation" id = "capsaicincondensation" results = list("condensedcapsaicin" = 5) - required_reagents = list("capsaicin" = 1, /datum/reagent/consumable/ethanol = 5) + required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/ethanol = 5) /datum/chemical_reaction/soapification name = "Soapification" @@ -96,7 +96,7 @@ /datum/chemical_reaction/candlefication name = "Candlefication" id = "candlefication" - required_reagents = list("liquidgibs" = 5, "oxygen" = 5) // + required_reagents = list("liquidgibs" = 5, /datum/reagent/oxygen = 5) // required_temp = 374 mob_react = FALSE @@ -121,14 +121,14 @@ name = "Direct Carbon Oxidation" id = "burningcarbon" results = list("co2" = 3) - required_reagents = list(/datum/reagent/carbon = 1, "oxygen" = 2) + 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(/datum/reagent/ammonia = 2, "nitrogen" = 1, "oxygen" = 2) + required_reagents = list(/datum/reagent/ammonia = 2, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 2) required_temp = 525 //Technically a mutation toxin @@ -363,7 +363,7 @@ name = "Foam surfactant" id = "foam surfactant" results = list("fluorosurfactant" = 5) - required_reagents = list("fluorine" = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) + required_reagents = list(/datum/reagent/fluorine = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/foam name = "Foam" @@ -432,7 +432,7 @@ name = "Foaming Agent" id = "foaming_agent" results = list("foaming_agent" = 1) - required_reagents = list("lithium" = 1, "hydrogen" = 1) + required_reagents = list("lithium" = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/smart_foaming_agent name = "Smart foaming Agent" @@ -448,7 +448,7 @@ name = "Ammonia" id = "ammonia" results = list(/datum/reagent/ammonia = 3) - required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + required_reagents = list(/datum/reagent/hydrogen = 3, /datum/reagent/nitrogen = 1) /datum/chemical_reaction/diethylamine name = "Diethylamine" @@ -484,7 +484,7 @@ name = "Drying agent" id = "drying_agent" results = list("drying_agent" = 3) - required_reagents = list("stable_plasma" = 2, /datum/reagent/consumable/ethanol = 1, "sodium" = 1) + required_reagents = list("stable_plasma" = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/sodium = 1) //////////////////////////////////// Other goon stuff /////////////////////////////////////////// @@ -492,19 +492,19 @@ name = "acetone" id = "acetone" results = list(/datum/reagent/acetone = 3) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, "oxygen" = 1) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/oil name = "Oil" id = "oil" results = list(/datum/reagent/oil = 3) - required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, "hydrogen" = 1) + 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(/datum/reagent/phenol = 3) - required_reagents = list("water" = 1, "chlorine" = 1, /datum/reagent/oil = 1) + required_reagents = list("water" = 1, /datum/reagent/chlorine = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/ash name = "Ash" @@ -572,13 +572,13 @@ name = "saltpetre" id = "saltpetre" results = list("saltpetre" = 3) - required_reagents = list("potassium" = 1, "nitrogen" = 1, "oxygen" = 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) + required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/lye2 name = "lye" diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 93b19fb19e..3cc4c9b7eb 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -49,13 +49,13 @@ /datum/chemical_reaction/reagent_explosion/potassium_explosion name = "Explosion" id = "potassium_explosion" - required_reagents = list("water" = 1, "potassium" = 1) + required_reagents = list("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("holywater" = 1, /datum/reagent/potassium = 1) /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) @@ -105,7 +105,7 @@ name = "Thermite" id = "thermite" results = list("thermite" = 3) - required_reagents = list("aluminium" = 1, /datum/reagent/iron = 1, "oxygen" = 1) + required_reagents = list("aluminium" = 1, /datum/reagent/iron = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/emp_pulse name = "EMP Pulse" @@ -148,13 +148,13 @@ name = "stabilizing_agent" id = "stabilizing_agent" results = list("stabilizing_agent" = 3) - required_reagents = list(/datum/reagent/iron = 1, "oxygen" = 1, "hydrogen" = 1) + 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) + 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) @@ -181,14 +181,14 @@ /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("diethylamine" = 1, /datum/reagent/iodine = 1, "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, /datum/reagent/carbon = 1) + 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(/datum/reagent/stabilizing_agent)) @@ -238,7 +238,7 @@ name = "Flash powder" id = "flash_powder" results = list("flash_powder" = 3) - required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 ) + required_reagents = list("aluminium" = 1, /datum/reagent/potassium = 1, "sulfur" = 1 ) /datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -281,7 +281,7 @@ name = "smoke_powder" id = "smoke_powder" results = list("smoke_powder" = 3) - required_reagents = list("potassium" = 1, /datum/reagent/consumable/sugar = 1, "phosphorus" = 1) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, "phosphorus" = 1) /datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -321,7 +321,7 @@ name = "sonic_powder" id = "sonic_powder" results = list("sonic_powder" = 3) - required_reagents = list("oxygen" = 1, "cola" = 1, "phosphorus" = 1) + required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, "phosphorus" = 1) /datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -369,7 +369,7 @@ name = "cryostylane" id = "cryostylane" results = list("cryostylane" = 3) - required_reagents = list("water" = 1, "stable_plasma" = 1, "nitrogen" = 1) + required_reagents = list("water" = 1, "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 @@ -379,7 +379,7 @@ name = "ephemeral cryostylane reaction" id = "cryostylane_oxygen" results = list("cryostylane" = 1) - required_reagents = list("cryostylane" = 1, "oxygen" = 1) + required_reagents = list("cryostylane" = 1, /datum/reagent/oxygen = 1) mob_react = FALSE /datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume) @@ -389,7 +389,7 @@ name = "ephemeral pyrosium reaction" id = "pyrosium_oxygen" results = list("pyrosium" = 1) - required_reagents = list("pyrosium" = 1, "oxygen" = 1) + required_reagents = list("pyrosium" = 1, /datum/reagent/oxygen = 1) mob_react = FALSE /datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume) diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index b0c0f715c7..5c2b8ec28c 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -3,7 +3,7 @@ name = "formaldehyde" id = "Formaldehyde" results = list("formaldehyde" = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, "oxygen" = 1, /datum/reagent/silver = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1, /datum/reagent/silver = 1) required_temp = 420 /datum/chemical_reaction/fentanyl @@ -17,7 +17,7 @@ name = "Cyanide" id = "cyanide" results = list(/datum/reagent/toxin/cyanide = 3) - required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, "oxygen" = 1) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, /datum/reagent/oxygen = 1) required_temp = 380 /datum/chemical_reaction/itching_powder @@ -30,7 +30,7 @@ name = "Fluorosulfuric acid" id = "facid" results = list(/datum/reagent/toxin/acid/fluacid = 4) - required_reagents = list(/datum/reagent/toxin/acid = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) + 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 @@ -43,25 +43,25 @@ name = "lipolicide" id = "lipolicide" results = list("lipolicide" = 3) - required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1) + required_reagents = list(/datum/reagent/mercury = 1, "diethylamine" = 1, "ephedrine" = 1) /datum/chemical_reaction/mutagen name = "Unstable mutagen" id = "mutagen" results = list("mutagen" = 3) - required_reagents = list(/datum/reagent/radium = 1, "phosphorus" = 1, "chlorine" = 1) + required_reagents = list(/datum/reagent/radium = 1, "phosphorus" = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/lexorin name = "Lexorin" id = "lexorin" results = list("lexorin" = 3) - required_reagents = list(/datum/reagent/toxin/plasma = 1, "hydrogen" = 1, "oxygen" = 1) + 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(/datum/reagent/consumable/ethanol = 1, "chlorine" = 3, "water" = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 3, "water" = 1) /datum/chemical_reaction/mutetoxin //i'll just fit this in here snugly between other unfun chemicals :v name = "Mute Toxin" @@ -85,13 +85,13 @@ name = "Mindbreaker Toxin" id = "mindbreaker" results = list("mindbreaker" = 5) - required_reagents = list("silicon" = 1, "hydrogen" = 1, "charcoal" = 1) + required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/hydrogen = 1, "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) + required_reagents = list("formaldehyde" = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1, "lithium" = 1) mix_message = "The mixture thins and loses all color." /datum/chemical_reaction/rotatium diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index dc0d4a3ef8..ada964d3a0 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -127,12 +127,12 @@ /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" @@ -313,7 +313,7 @@ /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" @@ -325,19 +325,19 @@ /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" @@ -345,7 +345,7 @@ /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" @@ -357,11 +357,11 @@ /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" @@ -373,7 +373,7 @@ /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" @@ -405,7 +405,7 @@ /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" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 345b63c72b..615d73a7da 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -335,7 +335,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "smallbottle" item_state = "bottle" - list_reagents = list(/datum/reagent/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 diff --git a/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm index 1c016db69c..41fcda4355 100644 --- a/code/modules/vore/eating/voreitems.dm +++ b/code/modules/vore/eating/voreitems.dm @@ -59,4 +59,4 @@ name = "Ickypak" id = "ickypak" results = list("ickypak" = 2) - required_reagents = list("chlorine" = 2 , /datum/reagent/oil = 1) */ \ No newline at end of file + required_reagents = list(/datum/reagent/chlorine = 2 , /datum/reagent/oil = 1) */ \ No newline at end of file diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 902e5bf298..b96099abe2 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -181,7 +181,7 @@ name = "Sucubus milk" id = "breast_enlarger" results = list("breast_enlarger" = 8) - required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/milk = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3) + required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/milk = 1, "synthflesh" = 2, /datum/reagent/silicon = 3, "aphro" = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -446,7 +446,7 @@ name = "Acetic acid buffer" id = "acidic_buffer" results = list("acidic_buffer" = 10) //acetic acid - required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/ethanol = 3, "oxygen" = 3, "water" = 3) + required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/ethanol = 3, /datum/reagent/oxygen = 3, "water" = 3) //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 8fe2b72ae7..e654e9d98f 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -208,7 +208,7 @@ name = "crocin" id = "aphro" results = list("aphro" = 6) - required_reagents = list(/datum/reagent/carbon = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, "water" = 1) required_temp = 400 mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin @@ -224,7 +224,7 @@ name = "camphor" id = "anaphro" results = list("anaphro" = 6) - required_reagents = list(/datum/reagent/carbon = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, "sulfur" = 1) required_temp = 400 mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor From b4c0433d6de42ed92123370f73d26a966fbd116c Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 27 Dec 2019 17:45:19 +0100 Subject: [PATCH 12/78] more work. --- code/game/machinery/bloodbankgen.dm | 2 +- code/game/machinery/computer/dna_console.dm | 2 +- code/game/mecha/mecha_defense.dm | 2 +- code/game/objects/items/cigs_lighters.dm | 20 +- code/game/objects/items/clown_items.dm | 4 +- code/game/objects/items/devices/flashlight.dm | 2 +- code/game/objects/items/stacks/bscrystal.dm | 6 +- code/game/objects/items/stacks/medical.dm | 4 +- .../game/objects/items/stacks/sheets/light.dm | 2 +- .../objects/items/stacks/sheets/mineral.dm | 6 +- .../items/stacks/sheets/sheet_types.dm | 6 +- code/game/objects/items/storage/firstaid.dm | 48 +-- code/game/objects/items/tools/weldingtool.dm | 2 +- code/game/objects/items/trash.dm | 4 +- code/modules/antagonists/cult/cult_items.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 2 +- .../food_and_drinks/food/snacks/meat.dm | 8 +- .../food_and_drinks/food/snacks_burgers.dm | 4 +- .../food_and_drinks/food/snacks_cake.dm | 2 +- .../food_and_drinks/food/snacks_frozen.dm | 4 +- .../food_and_drinks/food/snacks_other.dm | 4 +- .../food_and_drinks/food/snacks_pastry.dm | 10 +- .../food_and_drinks/food/snacks_pie.dm | 2 +- .../food_and_drinks/food/snacks_pizza.dm | 4 +- .../food_and_drinks/food/snacks_salad.dm | 4 +- .../food/snacks_sandwichtoast.dm | 12 +- .../food_and_drinks/food/snacks_soup.dm | 8 +- .../kitchen_machinery/grill.dm | 6 +- .../food_and_drinks/recipes/drinks_recipes.dm | 30 +- .../food_and_drinks/recipes/food_mixtures.dm | 14 +- code/modules/hydroponics/biogenerator.dm | 4 +- code/modules/hydroponics/grown.dm | 2 +- code/modules/hydroponics/grown/ambrosia.dm | 2 +- code/modules/hydroponics/grown/banana.dm | 2 +- code/modules/hydroponics/grown/berries.dm | 16 +- code/modules/hydroponics/grown/cannabis.dm | 36 +- code/modules/hydroponics/grown/cereals.dm | 8 +- code/modules/hydroponics/grown/chili.dm | 2 +- code/modules/hydroponics/grown/citrus.dm | 10 +- code/modules/hydroponics/grown/corn.dm | 4 +- code/modules/hydroponics/grown/flowers.dm | 14 +- code/modules/hydroponics/grown/kudzu.dm | 2 +- code/modules/hydroponics/grown/melon.dm | 6 +- code/modules/hydroponics/grown/misc.dm | 8 +- code/modules/hydroponics/grown/mushrooms.dm | 12 +- code/modules/hydroponics/grown/onion.dm | 4 +- code/modules/hydroponics/grown/peach.dm | 2 +- code/modules/hydroponics/grown/peanuts.dm | 4 +- code/modules/hydroponics/grown/pineapple.dm | 2 +- code/modules/hydroponics/grown/potato.dm | 2 +- code/modules/hydroponics/grown/pumpkin.dm | 4 +- code/modules/hydroponics/grown/root.dm | 6 +- code/modules/hydroponics/grown/tea_coffee.dm | 20 +- code/modules/hydroponics/grown/tobacco.dm | 4 +- code/modules/hydroponics/grown/tomato.dm | 10 +- code/modules/mining/lavaland/ash_flora.dm | 10 +- .../mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mining/ores_coins.dm | 4 +- .../mob/living/silicon/robot/robot_modules.dm | 2 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../simple_animal/hostile/banana_spider.dm | 4 +- code/modules/power/cable.dm | 2 +- code/modules/power/cell.dm | 2 +- .../projectile/bullets/dart_syringe.dm | 2 +- .../reagents/chemistry/recipes/drugs.dm | 50 +-- .../reagents/chemistry/recipes/medicine.dm | 244 ++++++------ .../reagents/chemistry/recipes/others.dm | 372 +++++++++--------- .../chemistry/recipes/pyrotechnics.dm | 136 +++---- .../chemistry/recipes/slime_extracts.dm | 88 ++--- .../reagents/chemistry/recipes/special.dm | 4 +- .../reagents/chemistry/recipes/toxins.dm | 106 ++--- .../reagents/reagent_containers/bottle.dm | 78 ++-- .../reagents/reagent_containers/glass.dm | 14 +- .../reagents/reagent_containers/hypospray.dm | 52 ++- .../reagents/reagent_containers/hypovial.dm | 68 ++-- .../reagents/reagent_containers/medspray.dm | 10 +- .../reagents/reagent_containers/patch.dm | 4 +- .../reagents/reagent_containers/pill.dm | 42 +- .../reagents/reagent_containers/spray.dm | 14 +- .../reagents/reagent_containers/syringes.dm | 20 +- code/modules/research/designs.dm | 4 +- .../research/designs/autobotter_designs.dm | 52 +-- .../research/designs/limbgrower_designs.dm | 10 +- .../research/designs/weapon_designs.dm | 4 +- .../xenobiology/crossbreeding/_misc.dm | 2 +- .../research/xenobiology/xenobiology.dm | 20 +- .../ruins/lavalandruin_code/alien_nest.dm | 2 +- code/modules/surgery/organs/lungs.dm | 2 +- code/modules/vore/eating/voreitems.dm | 4 +- .../boxes_magazines/external/pistol.dm | 4 +- .../reagents/chemistry/recipes/fermi.dm | 90 ++--- .../modules/reagents/reagents/cit_reagents.dm | 24 +- 92 files changed, 978 insertions(+), 984 deletions(-) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index 39992c59dd..948e9b98f9 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -123,7 +123,7 @@ if(reagents.total_volume >= reagents.maximum_volume || !bag || !bag.reagents.total_volume) beep_stop_pumping() return - var/blood_amount = bag.reagents.get_reagent_amount("blood") + var/blood_amount = bag.reagents.get_reagent_amount(/datum/reagent/blood) //monitor the machine and blood bag's reagents storage. var/amount = min(blood_amount, min(transfer_amount, reagents.maximum_volume - reagents.total_volume)) if(!amount) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 044775fb6b..7330ae26e7 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -88,7 +88,7 @@ occupant_status += "" occupant_status += "
Health:
[viable_occupant.health] %
" occupant_status += "
Radiation Level:
[viable_occupant.radiation/(RAD_MOB_SAFE/100)] %
" - var/rejuvenators = viable_occupant.reagents.get_reagent_amount("potass_iodide") + var/rejuvenators = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) occupant_status += "
Rejuvenators:
[rejuvenators] units
" occupant_status += "
Unique Enzymes :
[viable_occupant.dna.unique_enzymes]
" occupant_status += "
Last Operation:
[last_change ? last_change : "----"]
" diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index b702f871fc..dd335e8b37 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -286,7 +286,7 @@ /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) + 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) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 8aa3e926a6..73c6c8684c 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 w_class = WEIGHT_CLASS_TINY heat = 1000 - grind_results = list("phosphorus" = 2) + grind_results = list(/datum/reagent/phosphorus = 2) /obj/item/match/process() smoketime-- @@ -169,15 +169,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 @@ -282,7 +282,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." - list_reagents = list(/datum/reagent/drug/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." @@ -665,7 +665,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 3000 //Blue flame! light_color = LIGHT_COLOR_CYAN overlay_state = "slime" - grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, "pyroxadone" = 5) + grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/medicine/pyroxadone = 5) /////////// @@ -810,14 +810,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/clown_items.dm b/code/game/objects/items/clown_items.dm index 0ff54d884f..26c992b0bc 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -23,7 +23,7 @@ throwforce = 0 throw_speed = 3 throw_range = 7 - grind_results = list("lye" = 10) + grind_results = list(/datum/reagent/lye = 10) var/cleanspeed = 50 //slower than mop force_string = "robust... against germs" @@ -180,4 +180,4 @@ 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 + list_reagents = list(/datum/reagent/consumable/laughter = 50) \ No newline at end of file diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index bb0624d89f..7313ba8ff2 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -267,7 +267,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/New() fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds. diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 70dc2e6b23..a660e76da1 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, /datum/reagent/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 178bdd8a5e..14c20af6b3 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -57,7 +57,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' var/heal_brute = 20 self_delay = 20 - grind_results = list("styptic_powder" = 10) + grind_results = list(/datum/reagent/medicine/styptic_powder = 10) /obj/item/stack/medical/bruise_pack/heal(mob/living/M, mob/user) if(M.stat == DEAD) @@ -140,7 +140,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' var/heal_burn = 20 self_delay = 20 - grind_results = list("silver_sulfadiazine" = 10) + grind_results = list(/datum/reagent/medicine/silver_sulfadiazine = 10) /obj/item/stack/medical/ointment/heal(mob/living/M, mob/user) if(M.stat == DEAD) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index b7c266a0f0..c42cfbe571 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(/datum/reagent/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 b15209c615..d89793f08e 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -135,7 +135,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 @@ -262,7 +262,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 @@ -342,7 +342,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 b4cd5fce76..c27a8cd98d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -486,7 +486,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal novariants = TRUE - grind_results = list(/datum/reagent/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) @@ -562,7 +562,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/clockwork novariants = FALSE - grind_results = list(/datum/reagent/iron = 5, "teslium" = 15, "holyoil" = 1) + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/teslium = 15, /datum/reagent/fuel/holyoil = 1) merge_type = /obj/item/stack/tile/brass tableVariant = /obj/structure/table/reinforced/brass @@ -615,7 +615,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/bronze novariants = FALSE - grind_results = list(/datum/reagent/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 tableVariant = /obj/structure/table/bronze diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 8c96e567d1..0ff20f16c5 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -205,7 +205,7 @@ new /obj/item/healthanalyzer/advanced(src) new /obj/item/reagent_containers/syringe/lethal/choral(src) // what the fuck does anyone use this piece of shit for new /obj/item/clothing/glasses/hud/health/night(src) - + /* * Pill Bottles */ @@ -439,8 +439,8 @@ if(empty) return new /obj/item/hypospray/mkii/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) /obj/item/storage/hypospraykit/fire name = "burn treatment hypospray kit" @@ -452,8 +452,8 @@ if(empty) return new /obj/item/hypospray/mkii/burn(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/kelotane(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/kelotane(src) /obj/item/storage/hypospraykit/toxin name = "toxin treatment hypospray kit" @@ -464,8 +464,8 @@ if(empty) return new /obj/item/hypospray/mkii/toxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin(src) /obj/item/storage/hypospraykit/o2 name = "oxygen deprivation hypospray kit" @@ -476,8 +476,8 @@ if(empty) return new /obj/item/hypospray/mkii/oxygen(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/dexalin(src) /obj/item/storage/hypospraykit/enlarge name = "organomegaly trauma hypospray kit" @@ -488,12 +488,12 @@ if(empty) return new /obj/item/hypospray/mkii/enlarge(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) /obj/item/storage/hypospraykit/brute name = "brute trauma hypospray kit" @@ -504,8 +504,8 @@ if(empty) return new /obj/item/hypospray/mkii/brute(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine(src) /obj/item/storage/hypospraykit/tactical name = "combat hypospray kit" @@ -517,8 +517,8 @@ return new /obj/item/defibrillator/compact/combat/loaded(src) new /obj/item/hypospray/mkii/CMO/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/combat(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/combat(src) /obj/item/storage/hypospraykit/cmo name = "deluxe hypospray kit" @@ -537,11 +537,11 @@ if(empty) return new /obj/item/hypospray/mkii/CMO(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/charcoal(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/salglu(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/synthflesh(src) /obj/item/storage/box/vials name = "box of hypovials" diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index f9160b81f5..a74ce67128 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -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) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index b2158eb1c8..97f53d3ca7 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -70,12 +70,12 @@ name = "crushed can" icon_state = "cola" resistance_flags = NONE - grind_results = list("aluminium" = 10) + grind_results = list(/datum/reagent/aluminium = 10) /obj/item/trash/boritos name = "boritos bag" icon_state = "boritos" - grind_results = list("aluminium" = 1) //from the mylar bag + grind_results = list(/datum/reagent/aluminium = 1) //from the mylar bag /obj/item/trash/attack(mob/M, mob/living/user) return diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 219186da7f..16796b70a6 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -487,7 +487,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" diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 97bf22fb78..ef39115ccd 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -194,7 +194,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 diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 3274e0b88a..59a9141ca8 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -88,7 +88,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(/datum/reagent/consumable/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 @@ -131,7 +131,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(/datum/reagent/consumable/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 @@ -225,7 +225,7 @@ name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 12, "morphine" = 5, /datum/reagent/consumable/nutriment/vitamin = 2, "cooking_oil" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/medicine/morphine = 5, /datum/reagent/consumable/nutriment/vitamin = 2, "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 @@ -271,7 +271,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(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/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, "cooking_oil" = 1) filling_color = rgb(150, 0, 0) icon_state = "meatwheat_clump" bitesize = 4 diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index c4701a40c3..073162da96 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -272,8 +272,8 @@ foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/jelly/slime - bonus_reagents = list("slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "slimejelly" = 5, /datum/reagent/consumable/nutriment/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 diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index ecdffc0ee9..0ecc5e07a7 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -385,7 +385,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A spaceman's trumpet frosted cake." icon_state = "trumpetcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/trumpet - bonus_reagents = list("polypyr" = 15, "cream" = 5, /datum/reagent/consumable/nutriment/vitamin = 5, "berryjuice" = 5) + bonus_reagents = list("polypyr" = 15, "cream" = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5) filling_color = "#7A3D80" tastes = list("cake" = 4, "violets" = 2, "jam" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 18df5af657..d68e88c116 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -173,7 +173,7 @@ name = "strawberry snowcone" desc = "A strawberry snowball in a paper cup." icon_state = "blue_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "berryjuice" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/berryjuice = 10) tastes = list("ice" = 1, "water" = 1, " strawberry" = 5) foodtype = FRUIT @@ -181,7 +181,7 @@ name = "berry snowcone" desc = "Berry syrup drizzled over a snowball in a paper cup." icon_state = "berry_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "berryjuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/berryjuice = 5) tastes = list("ice" = 1, "water" = 1, "berries" = 5) foodtype = FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index ac11b80cab..da4d329239 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -207,7 +207,7 @@ name = "spider lollipop" desc = "Still gross, but at least it has a mountain of sugar on it." icon_state = "spiderlollipop" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/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 @@ -426,7 +426,7 @@ desc = "A delicious lollipop. Makes for a great Valentine's present." icon = 'icons/obj/lollipop.dmi' icon_state = "lollipop_stick" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/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) diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index ce129ef994..3e27d5fcb4 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -77,7 +77,7 @@ name = "pink donut" desc = "Goes great with a soy latte." icon_state = "donut_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1) //Extra sprinkles to reward frosting + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, "sprinkles" = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" decorated_icon = "donut_homer" @@ -167,7 +167,7 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. filling_color = "#E57d9A" decorated_icon = "jelly_homer" @@ -249,7 +249,7 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet @@ -437,8 +437,8 @@ /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(/datum/reagent/consumable/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 diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 6346fba036..3cc30ba9b7 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -91,7 +91,7 @@ desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, "berryjuice" = 5, /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 diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index 8dc1c1b1a4..ebb6393e0b 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -96,7 +96,7 @@ icon_state = "donkpocketpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, "tomatojuice" = 6, "omnizine" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, "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 @@ -174,7 +174,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(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/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 c8539ee380..59c4022507 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -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, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, "omnizine" = 8, /datum/reagent/consumable/nutriment/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 diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 2ab36805a8..276c085b54 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -43,8 +43,8 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jellysandwich/slime - bonus_reagents = list("slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "slimejelly" = 5, /datum/reagent/consumable/nutriment/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 @@ -64,8 +64,8 @@ foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime - bonus_reagents = list("slimejelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "slimejelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/peanutbutter_sandwich @@ -106,8 +106,8 @@ foodtype = GRAIN | FRUIT | SUGAR /obj/item/reagent_containers/food/snacks/jelliedtoast/slime - bonus_reagents = list("slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "slimejelly" = 5, /datum/reagent/consumable/nutriment/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/peanut_buttertoast diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 129d41c51f..8049a5813f 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -42,8 +42,8 @@ name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "slimejelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, "slimejelly" = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/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 @@ -52,7 +52,7 @@ desc = "Smells like copper." icon_state = "tomatosoup" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "blood" = 10, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + 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 @@ -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(/datum/reagent/consumable/nutriment = 1, "omnizine" = 5, /datum/reagent/consumable/nutriment/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 diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index 449da2afe3..c52389cd56 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -52,10 +52,10 @@ grill_loop.start() return else - if(I.reagents.has_reagent("monkey_energy")) - grill_fuel += (20 * (I.reagents.get_reagent_amount("monkey_energy"))) + if(I.reagents.has_reagent(/datum/reagent/consumable/monkey_energy)) + grill_fuel += (20 * (I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy))) to_chat(user, "You pour the Monkey Energy in [src].") - I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount("monkey_energy")) + I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy)) update_icon() return ..() diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index f3c5cf8cdf..5c54f63a2f 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -34,7 +34,7 @@ name = "Nuka Cola" id = "nuka_cola" results = list("nuka_cola" = 6) - required_reagents = list("uranium" = 1, /datum/reagent/consumable/space_cola = 6) + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/space_cola = 6) /datum/chemical_reaction/moonshine name = "Moonshine" @@ -202,7 +202,7 @@ name = "Atomic Bomb" id = "atomicbomb" results = list("atomicbomb" = 10) - required_reagents = list("b52" = 10, "uranium" = 1) + required_reagents = list("b52" = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/margarita name = "Margarita" @@ -220,7 +220,7 @@ name = "Three Mile Island Iced Tea" id = "threemileisland" results = list("threemileisland" = 10) - required_reagents = list("longislandicedtea" = 10, "uranium" = 1) + required_reagents = list("longislandicedtea" = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/whiskeysoda name = "Whiskey Soda" @@ -244,7 +244,7 @@ name = "Manhattan Project" id = "manhattan_proj" results = list("manhattan_proj" = 10) - required_reagents = list("manhattan" = 10, "uranium" = 1) + required_reagents = list("manhattan" = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/vodka_tonic name = "Vodka and Tonic" @@ -280,7 +280,7 @@ name = "Demons Blood" id = "demonsblood" results = list("demonsblood" = 4) - required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) + required_reagents = list("rum" = 1, "spacemountainwind" = 1, /datum/reagent/blood = 1, "dr_gibb" = 1) /datum/chemical_reaction/booger name = "Booger" @@ -298,7 +298,7 @@ name = "Barefoot" id = "barefoot" results = list("barefoot" = 3) - required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) + required_reagents = list(/datum/reagent/consumable/berryjuice = 1, "cream" = 1, "vermouth" = 1) ////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// @@ -313,7 +313,7 @@ name = "Red Mead" id = "red_mead" results = list("red_mead" = 2) - required_reagents = list("blood" = 1, "mead" = 1) + required_reagents = list(/datum/reagent/blood = 1, "mead" = 1) /datum/chemical_reaction/mead name = "Mead" @@ -332,7 +332,7 @@ name = "Grog" id = "grog" results = list("grog" = 2) - required_reagents = list("rum" = 1, "water" = 1) + required_reagents = list("rum" = 1, /datum/reagent/water = 1) /datum/chemical_reaction/soy_latte name = "Soy Latte" @@ -380,7 +380,7 @@ name = "Neurotoxin" id = "neurotoxin" results = list("neurotoxin" = 2) - required_reagents = list("gargleblaster" = 1, "morphine" = 1) + required_reagents = list("gargleblaster" = 1, /datum/reagent/medicine/morphine = 1) //FermiChem vars: Easy to make, but hard to make potent OptimalTempMin = 100 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 950 // Upper end for above @@ -440,7 +440,7 @@ name = "Devils Kiss" id = "devilskiss" results = list("devilskiss" = 3) - required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) + required_reagents = list(/datum/reagent/blood = 1, "kahlua" = 1, "rum" = 1) /datum/chemical_reaction/hippiesdelight name = "Hippies Delight" @@ -554,7 +554,7 @@ name = "Lemonade" id = "lemonade" results = list("lemonade" = 5) - required_reagents = list("lemonjuice" = 2, "water" = 2, /datum/reagent/consumable/sugar = 1, "ice" = 1) + required_reagents = list("lemonjuice" = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, "ice" = 1) mix_message = "You're suddenly reminded of home." /datum/chemical_reaction/arnold_palmer @@ -581,7 +581,7 @@ name = "Nar'sour" id = "narsour" results = list("narsour" = 1) - required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1) + required_reagents = list(/datum/reagent/blood = 1, "lemonjuice" = 1, "demonsblood" = 1) mix_message = "The mixture develops a sinister glow." mix_sound = 'sound/effects/singlebeat.ogg' @@ -618,14 +618,14 @@ 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 + required_reagents = list("tea" = 1, "creme_de_menthe" = 1, "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, /datum/reagent/consumable/nutriment = 1) + required_reagents = list(/datum/reagent/water = 1, "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 @@ -781,7 +781,7 @@ name = "Duplex" id = "duplex" results = list("duplex" = 4) - required_reagents = list("hcider" = 2, "applejuice" = 1, "berryjuice" = 1) + required_reagents = list("hcider" = 2, "applejuice" = 1, /datum/reagent/consumable/berryjuice = 1) /datum/chemical_reaction/trappist name = "Trappist" diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 9123712d71..746f6fe8fb 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -49,19 +49,19 @@ name = "Hot Coco" id = "hot_coco" results = list("hot_coco" = 5) - required_reagents = list("water" = 5, "cocoa" = 1) + required_reagents = list(/datum/reagent/water = 5, "cocoa" = 1) /datum/chemical_reaction/coffee name = "Coffee" id = "coffee" results = list("coffee" = 5) - required_reagents = list("coffeepowder" = 1, "water" = 5) + required_reagents = list("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) + required_reagents = list("teapowder" = 1, /datum/reagent/water = 5) /datum/chemical_reaction/soysauce name = "Soy Sauce" @@ -106,7 +106,7 @@ /datum/chemical_reaction/synthmeat name = "synthmeat" id = "synthmeat" - required_reagents = list("blood" = 5, "cryoxadone" = 1) + required_reagents = list(/datum/reagent/blood = 5, "cryoxadone" = 1) mob_react = FALSE /datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume) @@ -118,7 +118,7 @@ name = "Hot Ramen" id = "hot_ramen" results = list("hot_ramen" = 3) - required_reagents = list("water" = 1, "dry_ramen" = 3) + required_reagents = list(/datum/reagent/water = 1, "dry_ramen" = 3) /datum/chemical_reaction/hell_ramen name = "Hell Ramen" @@ -142,7 +142,7 @@ /datum/chemical_reaction/dough name = "Dough" id = "dough" - required_reagents = list("water" = 10, "flour" = 15) + required_reagents = list(/datum/reagent/water = 10, "flour" = 15) mix_message = "The ingredients form a dough." /datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume) @@ -168,7 +168,7 @@ /datum/chemical_reaction/ricebowl name = "Rice Bowl" id = "ricebowl" - required_reagents = list("rice" = 10, "water" = 10) + required_reagents = list("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/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index fb40e4eebd..ac750a0492 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -210,9 +210,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/grown.dm b/code/modules/hydroponics/grown.dm index bfd4204912..91ccce7cfd 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -144,7 +144,7 @@ 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 diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index 07a15098b4..44291fa6ba 100644 --- a/code/modules/hydroponics/grown/ambrosia.dm +++ b/code/modules/hydroponics/grown/ambrosia.dm @@ -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, /datum/reagent/drug/space_drugs = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) + reagents_add = list(/datum/reagent/medicine/omnizine = 0.15, "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 diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 7b78e11688..6072bae79b 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -139,7 +139,7 @@ icon_state = "exoticbanana" list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list("blood" = 20, "liquidgibs" = 5) + grind_results = list(/datum/reagent/blood = 20, "liquidgibs" = 5) var/awakening = 0 /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index 7e78c0e1a8..db885e373c 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -26,7 +26,7 @@ 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" @@ -65,7 +65,7 @@ lifespan = 30 potency = 50 mutatelist = list() - reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("uranium" = 0.25, /datum/reagent/iodine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 @@ -135,7 +135,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 @@ -159,7 +159,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 @@ -184,7 +184,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 = 50 @@ -218,7 +218,7 @@ 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" @@ -230,7 +230,7 @@ species = "greengrape" plantname = "Green-Grape Vine" product = /obj/item/reagent_containers/food/snacks/grown/grapes/green - reagents_add = list("kelotane" = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/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() diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 207415f3a8..621e79fb77 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(/datum/reagent/drug/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(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/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, /datum/reagent/drug/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 @@ -64,20 +64,20 @@ genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green) mutatelist = list() reagents_add = list(/datum/reagent/drug/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) + /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 3cc3897b52..c64061698d 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -22,7 +22,7 @@ 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" @@ -45,7 +45,7 @@ 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" @@ -69,7 +69,7 @@ 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" @@ -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 1cc61a3b9e..0522b5fd45 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -67,7 +67,7 @@ yield = 3 rarity = 20 mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.3, /datum/reagent/consumable/capsaicin = 0.55, /datum/reagent/consumable/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 142e77e97f..8c2ed3da23 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -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) // Electric Lime /obj/item/seeds/lime/electric @@ -78,7 +78,7 @@ desc = "It's a tangy fruit." icon_state = "orange" filling_color = "#FFA500" - juice_results = list("orangejuice" = 0) + juice_results = list(/datum/reagent/consumable/orangejuice = 0) distill_reagent = "triple_sec" @@ -98,7 +98,7 @@ icon_grow = "lime-grow" icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, "haloperidol" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/haloperidol = 0.15) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d seed = /obj/item/seeds/orange_3d @@ -106,7 +106,7 @@ desc = "You can hardly wrap your head around this thing." icon_state = "orang" filling_color = "#FFA500" - juice_results = list("orangejuice" = 0) + juice_results = list(/datum/reagent/consumable/orangejuice = 0) distill_reagent = "triple_sec" tastes = list("polygons" = 1, "oranges" = 1) @@ -142,7 +142,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 diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index ecce122203..7ee0ec8dad 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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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,7 +25,7 @@ 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" diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index c6a53e58b8..9d4f9be4e6 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, /datum/reagent/consumable/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 @@ -148,7 +148,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, /datum/reagent/consumable/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 @@ -184,7 +184,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/moonflower genes = list(/datum/plant_gene/trait/glow/purple) mutatelist = list() - reagents_add = list("moonshine" = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/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 @@ -209,7 +209,7 @@ icon_dead = "sunflower-dead" product = /obj/item/grown/novaflower mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.25, /datum/reagent/consumable/capsaicin = 0.3, /datum/reagent/consumable/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 @@ -227,7 +227,7 @@ throw_speed = 1 throw_range = 3 attack_verb = list("roasted", "scorched", "burned") - grind_results = list(/datum/reagent/consumable/capsaicin = 0, "condensedcapsaicin" = 0) + grind_results = list(/datum/reagent/consumable/capsaicin = 0, /datum/reagent/consumable/condensedcapsaicin = 0) tastes = list("cooked sunflower" = 1) /obj/item/grown/novaflower/add_juice() @@ -277,7 +277,7 @@ icon_grow = "bee_balm-grow" icon_dead = "bee_balm-dead" mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/bee_balm/honey) //Lower odds of becoming honey - reagents_add = list("spaceacillin" = 0.1, "sterilizine" = 0.05) + reagents_add = list(/datum/reagent/medicine/spaceacillin = 0.1, /datum/reagent/space_cleaner/sterilizine = 0.05) /obj/item/reagent_containers/food/snacks/grown/bee_balm seed = /obj/item/seeds/bee_balm @@ -305,7 +305,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' icon_grow = "bee_balmalt-grow" icon_dead = "bee_balmalt-dead" - reagents_add = list("honey" = 0.1, "lye" = 0.3) //To make wax + reagents_add = list(/datum/reagent/consumable/honey = 0.1, /datum/reagent/lye = 0.3) //To make wax rarity = 30 /obj/item/reagent_containers/food/snacks/grown/bee_balm/honey diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index e46b5b4a22..5f1fdcdaa9 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, /datum/reagent/consumable/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 = ..() diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 6a86ac8b76..940508f66b 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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 @@ -46,7 +46,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/holymelon genes = list(/datum/plant_gene/trait/glow/yellow) mutatelist = list() - reagents_add = list("holywater" = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 8ee541a469..1a9247dc39 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -12,7 +12,7 @@ yield = 6 potency = 10 growthstages = 3 - grind_results = list("mustardgrind" = 1) + grind_results = list(/datum/reagent/mustardgrind = 1) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/starthistle/corpse_flower, /obj/item/seeds/galaxythistle) @@ -80,7 +80,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/invasive) mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, "silibinin" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/silibinin = 0.1) /obj/item/seeds/galaxythistle/Initialize() ..() @@ -173,7 +173,7 @@ growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' - reagents_add = list("sulfur" = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/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 @@ -195,7 +195,7 @@ plantname = "Cherry Bomb Tree" product = /obj/item/reagent_containers/food/snacks/grown/cherry_bomb mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/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 7353674fe2..77057688ae 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, /datum/reagent/consumable/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, /datum/reagent/consumable/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, /datum/reagent/consumable/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, /datum/reagent/consumable/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 @@ -248,7 +248,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(/datum/reagent/radium = 0.1, "phosphorus" = 0.1, /datum/reagent/consumable/nutriment = 0.04) + reagents_add = list(/datum/reagent/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 @@ -293,7 +293,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, /datum/reagent/consumable/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 diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index c0bd8c3bc8..2ebaa6d5e2 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -36,7 +36,7 @@ plantname = "Red Onion Sprouts" weed_chance = 1 product = /obj/item/reagent_containers/food/snacks/grown/onion/red - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 @@ -71,4 +71,4 @@ desc = "They shine like exceptionally low quality amethyst." icon_state = "onionslice_red" filling_color = "#C29ACF" - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/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/peach.dm b/code/modules/hydroponics/grown/peach.dm index 0f085af610..1f48ab5512 100644 --- a/code/modules/hydroponics/grown/peach.dm +++ b/code/modules/hydroponics/grown/peach.dm @@ -23,5 +23,5 @@ filling_color = "#FF4500" bitesize = 25 foodtype = FRUIT - juice_results = list("peachjuice" = 0) + juice_results = list(/datum/reagent/consumable/peachjuice = 0) tastes = list("peach" = 1) diff --git a/code/modules/hydroponics/grown/peanuts.dm b/code/modules/hydroponics/grown/peanuts.dm index 533b033453..3ac1497148 100644 --- a/code/modules/hydroponics/grown/peanuts.dm +++ b/code/modules/hydroponics/grown/peanuts.dm @@ -8,7 +8,7 @@ yield = 6 growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.15, "cooking_oil" = 0.03) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.15, /datum/reagent/consumable/cooking_oil = 0.03) /obj/item/reagent_containers/food/snacks/grown/peanut seed = /obj/item/seeds/peanutseed @@ -27,4 +27,4 @@ icon_state = "roasted_peanuts" foodtype = VEGETABLES list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) - juice_results = list("peanut_butter" = 3) \ No newline at end of file + juice_results = list(/datum/reagent/consumable/peanut_butter = 3) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index a430d5655b..40b3a67573 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(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/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 92fbb86735..89f1dbdf2b 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -26,7 +26,7 @@ filling_color = "#E9967A" bitesize = 100 foodtype = VEGETABLES - juice_results = list("potato" = 0) + juice_results = list(/datum/reagent/consumable/potato_juice = 0) distill_reagent = "vodka" /obj/item/reagent_containers/food/snacks/grown/potato/wedges diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 10009cad7c..6254fb5bcc 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -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) @@ -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/root.dm b/code/modules/hydroponics/grown/root.dm index 244d1b6d0c..ac171b4e45 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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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) @@ -54,7 +54,7 @@ icon_state = "parsnip" bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list("parsnipjuice" = 0) + juice_results = list(/datum/reagent/consumable/parsnipjuice = 0) wine_power = 35 diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index abdd8a1995..359d216271 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -14,7 +14,7 @@ icon_dead = "tea-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tea/astra) - reagents_add = list("teapowder" = 0.1) + reagents_add = list(/datum/reagent/toxin/teapowder = 0.1) /obj/item/reagent_containers/food/snacks/grown/tea seed = /obj/item/seeds/tea @@ -22,7 +22,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 @@ -34,7 +34,7 @@ plantname = "Tea Astra Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/astra mutatelist = list(/obj/item/seeds/tea/catnip) - reagents_add = list("synaptizine" = 0.1, /datum/reagent/consumable/nutriment/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 @@ -42,7 +42,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) // Kitty drugs /obj/item/seeds/tea/catnip @@ -52,7 +52,7 @@ species = "catnip" plantname = "Catnip Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip - reagents_add = list("catnip" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, "teapowder" = 0.3) + reagents_add = list(/datum/reagent/pax/catnip = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, /datum/reagent/toxin/teapowder = 0.3) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tea/catnip @@ -60,7 +60,7 @@ name = "Catnip buds" icon_state = "catnip" filling_color = "#4582B4" - grind_results = list("catnp" = 2, "water" = 1) + grind_results = list(/datum/reagent/pax/catnip = 2, /datum/reagent/water = 1) // Coffee /obj/item/seeds/coffee @@ -79,7 +79,7 @@ icon_dead = "coffee-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/coffee/robusta) - reagents_add = list(/datum/reagent/consumable/nutriment/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 @@ -89,7 +89,7 @@ filling_color = "#DC143C" bitesize_mod = 2 dry_grind = TRUE - grind_results = list("coffeepowder" = 0) + grind_results = list(/datum/reagent/toxin/coffeepowder = 0) distill_reagent = "kahlua" // Coffee Robusta @@ -101,7 +101,7 @@ plantname = "Coffee Robusta Bush" product = /obj/item/reagent_containers/food/snacks/grown/coffee/robusta mutatelist = list() - reagents_add = list("ephedrine" = 0.1, /datum/reagent/consumable/nutriment/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 @@ -109,4 +109,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 9f2df69278..aa4da49562 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, /datum/reagent/consumable/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 @@ -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, /datum/reagent/consumable/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 06eea003cc..dde657e10d 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -23,8 +23,8 @@ filling_color = "#FF6347" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("ketchup" = 0) - juice_results = list("tomatojuice" = 0) + grind_results = list(/datum/reagent/consumable/ketchup = 0) + juice_results = list(/datum/reagent/consumable/tomatojuice = 0) distill_reagent = "enzyme" // Blood Tomato @@ -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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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,7 +47,7 @@ splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" foodtype = FRUIT | GROSS - grind_results = list("ketchup" = 0, "blood" = 0) + grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) distill_reagent = "bloodymary" // Blue Tomato @@ -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(/datum/reagent/lube = 0.2, "bluespace" = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 0d7ead0dbc..ea0174d2a5 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(/datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/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(/datum/reagent/consumable/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, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/drug/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(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, "vitfro" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/vitfro = 6) desc = "A cactus fruit covered in a thick, reddish skin. And some ash." icon_state = "cactus_fruit" seed = /obj/item/seeds/lavaland/cactus diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index ab3b20ac9f..0a1bfc7d84 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -559,7 +559,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) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 42eb75f192..291664ce3e 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -398,7 +398,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_uranium_heads" value = 80 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" @@ -406,7 +406,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_bananium_heads" value = 1000 //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" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 38dbdae8bb..880a7ffd7d 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -673,7 +673,7 @@ /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" diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4c4d47cc05..69d9a0eef3 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -119,7 +119,7 @@ eatverb = "devour" 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/on_grind() reagents.clear_reagents() diff --git a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm index 50c5af4dd3..f3ce343bfd 100644 --- a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm @@ -98,8 +98,8 @@ eatverb = "devours" 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) - juice_results = list("banana" = 0) + grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) + juice_results = list(/datum/reagent/consumable/banana = 0) /obj/item/reagent_containers/food/snacks/deadbanana_spider/Initialize() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index cc03976f79..fde2ce4178 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -490,7 +490,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 a030daae72..5f9e7038f3 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, /datum/reagent/iron = 5, /datum/reagent/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? diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 5e32401645..29e6c39c31 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -57,7 +57,7 @@ if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? M.reagents.add_reagent(R.type, R.volume) else - var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1) + var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.type)) -1) M.reagents.add_reagent(R.type, transVol) else if(!R.overdose_threshold == 0) diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index f9842bdc85..468d29c052 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -1,64 +1,64 @@ /datum/chemical_reaction/space_drugs name = "Space Drugs" - id = "space_drugs" + 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, "lithium" = 1) + 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, /datum/reagent/ammonia = 1, "lithium" = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/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, /datum/reagent/potassium = 1, "phosphorus" = 1, /datum/reagent/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, /datum/reagent/iodine = 1, "phosphorus" = 1, /datum/reagent/hydrogen = 1) + 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, /datum/reagent/consumable/nutriment = 1, "cleaner" = 1, /datum/reagent/consumable/enzyme = 1, "tea" = 1, /datum/reagent/mercury = 1) + 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) + 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, /datum/reagent/consumable/ethanol = 1) + 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) /datum/chemical_reaction/skooma name = "skooma" - id = "skooma" - results = list("skooma" = 2, "moonshine" = 4, "sugar" = 4) + id = /datum/reagent/drug/skooma + results = list(/datum/reagent/drug/skooma = 2, /datum/reagent/consumable/ethanol/moonshine = 4, /datum/reagent/consumable/sugar = 4) required_temp = 280 is_cold_recipe = TRUE - required_reagents = list("moonsugar" = 10, "morphine" = 5) + required_reagents = list(/datum/reagent/moonsugar = 10, /datum/reagent/medicine/morphine = 5) /datum/chemical_reaction/skoomarevert name = "skoomarevert" id = "skoomarevert" - results = list("moonsugar" = 1, "morphine" = 2.5) + results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5) required_temp = 315 //a little above normal body temperature - required_reagents = list("skooma" = 1) + required_reagents = list(/datum/reagent/drug/skooma = 1) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 8dca3d62a7..b8aa6d155e 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -1,72 +1,72 @@ /datum/chemical_reaction/leporazine name = "Leporazine" - id = "leporazine" - results = list("leporazine" = 2) - required_reagents = list(/datum/reagent/silicon = 1, "copper" = 1) + 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("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) + 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" + id = /datum/reagent/medicine/inacusiate results = list("inacusiate" = 2) - required_reagents = list("water" = 1, /datum/reagent/carbon = 1, "charcoal" = 1) + 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(/datum/reagent/consumable/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, /datum/reagent/consumable/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(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, "sulfur" = 1, /datum/reagent/oxygen = 1, /datum/reagent/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(/datum/reagent/consumable/sodiumchloride = 1, "water" = 1, /datum/reagent/consumable/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(/datum/reagent/oil = 1, "water" = 1, /datum/reagent/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) + id = "mine_salve_2" + 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, /datum/reagent/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/synthtissue name = "Synthtissue" @@ -108,209 +108,209 @@ /datum/chemical_reaction/styptic_powder name = "Styptic Powder" - id = "styptic_powder" - results = list("styptic_powder" = 4) - required_reagents = list("aluminium" = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 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) + 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) + 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(/datum/reagent/fuel = 1, /datum/reagent/chlorine = 1, /datum/reagent/ammonia = 1, "formaldehyde" = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/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/pen_jelly name = "Pentetic Jelly" - id = "pen_jelly" - results = list("pen_jelly" = 2) - required_reagents = list("pen_acid" = 1, "slimejelly" = 1) + id = /datum/reagent/medicine/pen_acid/pen_jelly + results = list(/datum/reagent/medicine/pen_acid/pen_jelly = 2) + required_reagents = list(/datum/reagent/medicine/pen_acid = 1, /datum/reagent/toxin/slimejelly = 1) /datum/chemical_reaction/sal_acid name = "Salicyclic Acid" - id = "sal_acid" - results = list("sal_acid" = 5) + 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) + 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, /datum/reagent/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) + 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(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, /datum/reagent/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(/datum/reagent/oil = 1, /datum/reagent/carbon = 1, "bromine" = 1, "diethylamine" = 1, /datum/reagent/consumable/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, /datum/reagent/carbon = 1, /datum/reagent/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(/datum/reagent/consumable/ethanol = 1, /datum/reagent/acetone = 1, "diethylamine" = 1, /datum/reagent/phenol = 1, /datum/reagent/toxin/acid = 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(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, "diethylamine" = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1, /datum/reagent/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(/datum/reagent/consumable/sugar = 1, /datum/reagent/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/mutadone name = "Mutadone" - id = "mutadone" - results = list("mutadone" = 3) - required_reagents = list("mutagen" = 1, /datum/reagent/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/neurine name = "Neurine" - id = "neurine" - results = list("neurine" = 3) - required_reagents = list("mannitol" = 1, /datum/reagent/acetone = 1, /datum/reagent/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/antihol name = "antihol" - id = "antihol" - results = list("antihol" = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, "charcoal" = 1, "copper" = 1) + 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, /datum/reagent/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, /datum/reagent/sodium = 1) + 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(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 1, "aluminium" = 1, "potass_iodide" = 1, /datum/reagent/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) + 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) + 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) + 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/jelly_convert name = "Blood Jelly Conversion" - id = "blood_jelly" - results = list("slimejelly" = 1) - required_reagents = list("toxin" = 1, "jellyblood" = 1) + id = /datum/reagent/toxin/slimejelly + results = list(/datum/reagent/toxin/slimejelly = 1) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/blood/jellyblood = 1) /datum/chemical_reaction/corazone name = "Corazone" - id = "corazone" - results = list("corazone" = 3) - required_reagents = list(/datum/reagent/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) + 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, /datum/reagent/ammonia = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid = 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 cbf1f6594e..f7363971d1 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -2,50 +2,50 @@ /datum/chemical_reaction/sterilizine name = "Sterilizine" id = "sterilizine" - results = list("sterilizine" = 3) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, "charcoal" = 1, /datum/reagent/chlorine = 1) + 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, /datum/reagent/silicon = 1, /datum/reagent/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, /datum/reagent/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 = "spraytan2" + 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) + 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) + 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, /datum/reagent/toxin/acid = 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(/datum/reagent/consumable/sodiumchloride = 3) - required_reagents = list("water" = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/plasmasolidification name = "Solid Plasma" @@ -71,22 +71,22 @@ /datum/chemical_reaction/capsaicincondensation name = "Capsaicincondensation" - id = "capsaicincondensation" - results = list("condensedcapsaicin" = 5) + id = /datum/reagent/consumable/condensedcapsaicin + 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 /datum/chemical_reaction/mustard name = "Mustard" - id = "mustard" - results = list("mustard" = 5) - required_reagents = list("mustardgrind" = 1, "water" = 10, /datum/reagent/consumable/enzyme= 1) + id = /datum/reagent/consumable/mustard + results = list(/datum/reagent/consumable/mustard = 5) + required_reagents = list(/datum/reagent/mustardgrind = 1, /datum/reagent/water = 10, /datum/reagent/consumable/enzyme= 1) /datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -96,7 +96,7 @@ /datum/chemical_reaction/candlefication name = "Candlefication" id = "candlefication" - required_reagents = list("liquidgibs" = 5, /datum/reagent/oxygen = 5) // + required_reagents = list(/datum/reagent/liquidgibs = 5, /datum/reagent/oxygen = 5) required_temp = 374 mob_react = FALSE @@ -108,7 +108,7 @@ /datum/chemical_reaction/meatification name = "Meatification" id = "meatification" - required_reagents = list("liquidgibs" = 10, /datum/reagent/consumable/nutriment = 10, /datum/reagent/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) @@ -119,15 +119,15 @@ /datum/chemical_reaction/carbondioxide name = "Direct Carbon Oxidation" - id = "burningcarbon" - results = list("co2" = 3) + id = /datum/reagent/carbondioxide + 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) + 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 @@ -135,14 +135,14 @@ /datum/chemical_reaction/mulligan name = "Mulligan" id = "mulligan" - results = list("mulligan" = 1) - required_reagents = list("slime_toxin" = 1, "mutagen" = 1) + results = list(/datum/reagent/mulligan = 1) + required_reagents = list(/datum/reagent/slime_toxin = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/fermis_plush name = "Fermis plush" id = "fermis_plush" - required_reagents = list(/datum/reagent/consumable/sugar = 10, "blood" = 10, "stable_plasma" = 10) + required_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/blood = 10, /datum/reagent/stable_plasma = 10) mob_react = FALSE required_temp = 400 @@ -156,75 +156,75 @@ /datum/chemical_reaction/virus_food name = "Virus Food" id = "virusfood" - results = list("virusfood" = 15) - required_reagents = list("water" = 5, /datum/reagent/consumable/milk = 5) + 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) + 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) + 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(/datum/reagent/toxin/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(/datum/reagent/consumable/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) + 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) + id = /datum/reagent/uranium/uraniumvirusfood/unstable + 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, /datum/reagent/gold = 10, /datum/reagent/toxin/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, /datum/reagent/silver = 10, /datum/reagent/toxin/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 @@ -241,7 +241,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 @@ -257,7 +257,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 @@ -265,7 +265,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 @@ -273,7 +273,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 @@ -281,7 +281,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 @@ -289,7 +289,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 @@ -297,7 +297,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 @@ -305,7 +305,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 @@ -313,7 +313,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 @@ -321,7 +321,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 @@ -329,8 +329,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) @@ -343,8 +343,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) @@ -362,13 +362,13 @@ /datum/chemical_reaction/surfactant name = "Foam surfactant" id = "foam surfactant" - results = list("fluorosurfactant" = 5) + 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) @@ -385,7 +385,7 @@ /datum/chemical_reaction/metalfoam name = "Metal Foam" id = "metalfoam" - required_reagents = list("aluminium" = 3, "foaming_agent" = 1, /datum/reagent/toxin/acid/fluacid = 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) @@ -402,7 +402,7 @@ /datum/chemical_reaction/smart_foam name = "Smart Metal Foam" id = "smart_metal_foam" - required_reagents = list("aluminium" = 3, "smart_foaming_agent" = 1, /datum/reagent/toxin/acid/fluacid = 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) @@ -416,7 +416,7 @@ /datum/chemical_reaction/ironfoam name = "Iron Foam" id = "ironlfoam" - required_reagents = list(/datum/reagent/iron = 3, "foaming_agent" = 1, /datum/reagent/toxin/acid/fluacid = 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) @@ -432,13 +432,13 @@ name = "Foaming Agent" id = "foaming_agent" results = list("foaming_agent" = 1) - required_reagents = list("lithium" = 1, /datum/reagent/hydrogen = 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, /datum/reagent/acetone = 1, /datum/reagent/iron = 1) + 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." @@ -446,83 +446,83 @@ /datum/chemical_reaction/ammonia name = "Ammonia" - id = "ammonia" + 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(/datum/reagent/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, /datum/reagent/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, /datum/reagent/consumable/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, /datum/reagent/consumable/ethanol = 1, /datum/reagent/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" + 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/oil name = "Oil" - id = "oil" + 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" + id = /datum/reagent/phenol results = list(/datum/reagent/phenol = 3) - required_reagents = list("water" = 1, /datum/reagent/chlorine = 1, /datum/reagent/oil = 1) + 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) + 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, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1, "cryoxadone" = 1, "triple_citrus" = 1) + id = /datum/reagent/colorful_reagent + results = list(/datum/reagent/colorful_reagent = 5) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/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) @@ -532,7 +532,7 @@ /datum/chemical_reaction/life_friendly name = "Life (Friendly)" id = "life_friendly" - required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, /datum/reagent/consumable/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) @@ -541,7 +541,7 @@ /datum/chemical_reaction/corgium name = "corgium" id = "corgium" - required_reagents = list(/datum/reagent/consumable/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) @@ -552,56 +552,56 @@ /datum/chemical_reaction/hair_dye name = "hair_dye" - id = "hair_dye" - results = list("hair_dye" = 5) - required_reagents = list("colorful_reagent" = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) + id = /datum/reagent/hair_dye + results = list(/datum/reagent/hair_dye = 5) + required_reagents = list(/datum/reagent/colorful_reagent = 1, /datum/reagent/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, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) + id = /datum/reagent/barbers_aid + results = list(/datum/reagent/barbers_aid = 5) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/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) + 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) + 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) + 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, /datum/reagent/carbon = 1) + id = "lye2" + 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(/datum/reagent/consumable/sugar = 1, "banana" = 1) + 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(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, "ash" = 3) + 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) @@ -611,101 +611,101 @@ /datum/chemical_reaction/pax name = "pax" - id = "pax" - results = list("pax" = 3) - required_reagents = list("mindbreaker" = 1, "synaptizine" = 1, "water" = 1) + 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) /datum/chemical_reaction/cat name = "felined mutation toxic" - id = "cats" - results = list("felinidmutationtoxin" = 1) - required_reagents = list("mindbreaker" = 1, /datum/reagent/ammonia = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme + id = /datum/reagent/mutationtoxin/felinid + results = list(/datum/reagent/mutationtoxin/felinid = 1) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/drug/aphrodisiac = 10, /datum/reagent/mutationtoxin = 1) // Maybe aphro+ if it becomes a shitty meme required_temp = 450 /datum/chemical_reaction/moff name = "insect mutation toxic" - id = "moffs" - results = list("mothmutationtoxin" = 1) - required_reagents = list("liquid_dark_matter" = 2, /datum/reagent/ammonia = 5, "lithium" = 1, "stablemutationtoxin" = 1) + id = /datum/reagent/mutationtoxin/insect + results = list(/datum/reagent/mutationtoxin/insect = 1) + required_reagents = list(/datum/reagent/liquid_dark_matter = 2, /datum/reagent/ammonia = 5, /datum/reagent/lithium = 1, /datum/reagent/mutationtoxin = 1) required_temp = 320 /datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play name = "shadow muatatuin toxic" - id = "notlight" - results = list("shadowmutationtoxin" = 1) - required_reagents = list("liquid_dark_matter" = 5, "synaptizine" = 10, "oculine" = 10, "stablemutationtoxin" = 1) + id = /datum/reagent/mutationtoxin/shadow + results = list(/datum/reagent/mutationtoxin/shadow = 1) + required_reagents = list(/datum/reagent/liquid_dark_matter = 5, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/oculine = 10, /datum/reagent/mutationtoxin = 1) required_temp = 600 // Liquid Carpets /datum/chemical_reaction/carpet name = "carpet" - id = "carpet" - results = list("carpet" = 2) - required_reagents = list(/datum/reagent/drug/space_drugs = 1, "blood" = 1) + 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/carpet/black name = "liquid black carpet" - id = "blackcarpet" - results = list("blackcarpet" = 2) - required_reagents = list("carpet" = 1, /datum/reagent/carbon = 1) + id = /datum/reagent/carpet/black + results = list(/datum/reagent/carpet/black = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/carpet/blackred name = "liquid red black carpet" - id = "blackredcarpet" - results = list("blackredcarpet" = 2) - required_reagents = list("carpet" = 1, "charcoal" = 1) + id = /datum/reagent/carpet/blackred + results = list(/datum/reagent/carpet/blackred = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/carpet/monochrome name = "liquid monochrome carpet" - id = "monochromecarpet" - results = list("monochromecarpet" = 2) - required_reagents = list("carpet" = 1, /datum/reagent/oil = 1) + id = /datum/reagent/carpet/monochrome + results = list(/datum/reagent/carpet/monochrome = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/carpet/blue name = "liquid blue carpet" - id = "bluecarpet" - results = list("bluecarpet" = 2) - required_reagents = list("carpet" = 1, "tonic" = 1) + id = /datum/reagent/carpet/blue + results = list(/datum/reagent/carpet/blue = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tonic = 1) /datum/chemical_reaction/carpet/cyan name = "liquid cyan carpet" - id = "cyancarpet" - results = list("cyancarpet" = 2) - required_reagents = list("carpet" = 1, "ice" = 1) + id = /datum/reagent/carpet/cyan + results = list(/datum/reagent/carpet/cyan = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/carpet/green name = "liquid green carpet" - id = "greencarpet" - results = list("greencarpet" = 2) - required_reagents = list("carpet" = 1, /datum/reagent/toxin/acid = 1) + id = /datum/reagent/carpet/green + results = list(/datum/reagent/carpet/green = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/carpet/orange name = "liquid orange carpet" - id = "orangecarpet" - results = list("orangecarpet" = 2) - required_reagents = list("carpet" = 1, "orangejuice" = 1) + id = /datum/reagent/carpet/orange + results = list(/datum/reagent/carpet/orange = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/orangejuice = 1) /datum/chemical_reaction/carpet/purple name = "liquid purple carpet" - id = "purplecarpet" - results = list("purplecarpet" = 2) - required_reagents = list("carpet" = 1, "stable_plasma" = 1) + id = /datum/reagent/carpet/purple + results = list(/datum/reagent/carpet/purple = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/stable_plasma = 1) /datum/chemical_reaction/carpet/red name = "liquid red carpet" - id = "redcarpet" - results = list("redcarpet" = 2) - required_reagents = list("carpet" = 1, /datum/reagent/fuel = 1) + id = /datum/reagent/carpet/red + results = list(/datum/reagent/carpet/red = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/fuel = 1) /datum/chemical_reaction/carpet/royalblack name = "liquid royal black carpet" - id = "royalblackcarpet" - results = list("royalblackcarpet" = 2) - required_reagents = list("carpet" = 1, "blackpepper" = 1) + id = /datum/reagent/carpet/royalblack + results = list(/datum/reagent/carpet/royalblack = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/blackpepper = 1) /datum/chemical_reaction/carpet/royalblue name = "liquid royal blue carpet" - id = "royalbluecarpet" - results = list("royalbluecarpet" = 2) - required_reagents = list("carpet" = 1, "clonexadone" = 1) + id = /datum/reagent/carpet/royalblue + results = list(/datum/reagent/carpet/royalblue = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/clonexadone = 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 3cc4c9b7eb..07fb19b278 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -27,9 +27,9 @@ /datum/chemical_reaction/reagent_explosion/nitroglycerin name = "Nitroglycerin" - id = "nitroglycerin" - results = list("nitroglycerin" = 2) - required_reagents = list("glycerol" = 1, /datum/reagent/toxin/acid/fluacid = 1, /datum/reagent/toxin/acid = 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) @@ -41,7 +41,7 @@ /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 @@ -49,13 +49,13 @@ /datum/chemical_reaction/reagent_explosion/potassium_explosion name = "Explosion" id = "potassium_explosion" - required_reagents = list("water" = 1, /datum/reagent/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, /datum/reagent/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) var/turf/T = get_turf(holder.my_atom) @@ -84,14 +84,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 @@ -103,14 +103,14 @@ /datum/chemical_reaction/thermite name = "Thermite" - id = "thermite" - results = list("thermite" = 3) - required_reagents = list("aluminium" = 1, /datum/reagent/iron = 1, /datum/reagent/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, /datum/reagent/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) @@ -123,7 +123,7 @@ /datum/chemical_reaction/beesplosion name = "Bee Explosion" id = "beesplosion" - required_reagents = list("honey" = 1, "strange_reagent" = 1, /datum/reagent/radium = 1) + required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/radium = 1) /datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) var/location = holder.my_atom.drop_location() @@ -146,14 +146,14 @@ /datum/chemical_reaction/stabilizing_agent name = "stabilizing_agent" - id = "stabilizing_agent" - results = list("stabilizing_agent" = 3) + 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) + id = /datum/reagent/clf3 + results = list(/datum/reagent/clf3 = 4) required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 3) required_temp = 424 @@ -167,7 +167,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 @@ -181,13 +181,13 @@ /datum/chemical_reaction/reagent_explosion/methsplosion/methboom2 id = "methboom2" - required_reagents = list("diethylamine" = 1, /datum/reagent/iodine = 1, "phosphorus" = 1, /datum/reagent/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) + 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) @@ -201,7 +201,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) @@ -211,9 +211,9 @@ /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, /datum/reagent/radium = 1, /datum/reagent/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/radium = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) if(holder.has_reagent(/datum/reagent/stabilizing_agent)) @@ -226,7 +226,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) @@ -236,9 +236,9 @@ /datum/chemical_reaction/flash_powder name = "Flash powder" - id = "flash_powder" - results = list("flash_powder" = 3) - required_reagents = list("aluminium" = 1, /datum/reagent/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(/datum/reagent/stabilizing_agent)) @@ -260,7 +260,7 @@ /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) @@ -279,9 +279,9 @@ /datum/chemical_reaction/smoke_powder name = "smoke_powder" - id = "smoke_powder" - results = list("smoke_powder" = 3) - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, "phosphorus" = 1) + 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(/datum/reagent/stabilizing_agent)) @@ -319,9 +319,9 @@ /datum/chemical_reaction/sonic_powder name = "sonic_powder" - id = "sonic_powder" - results = list("sonic_powder" = 3) - required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, "phosphorus" = 1) + 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(/datum/reagent/stabilizing_agent)) @@ -335,7 +335,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) @@ -346,9 +346,9 @@ /datum/chemical_reaction/phlogiston name = "phlogiston" - id = "phlogiston" - results = list("phlogiston" = 3) - required_reagents = list("phosphorus" = 1, /datum/reagent/toxin/acid = 1, "stable_plasma" = 1) + 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(/datum/reagent/stabilizing_agent)) @@ -361,15 +361,15 @@ /datum/chemical_reaction/napalm name = "Napalm" - id = "napalm" - results = list("napalm" = 3) + 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, /datum/reagent/nitrogen = 1) + 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 @@ -378,8 +378,8 @@ /datum/chemical_reaction/cryostylane_oxygen name = "ephemeral cryostylane reaction" id = "cryostylane_oxygen" - results = list("cryostylane" = 1) - required_reagents = list("cryostylane" = 1, /datum/reagent/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) @@ -388,8 +388,8 @@ /datum/chemical_reaction/pyrosium_oxygen name = "ephemeral pyrosium reaction" id = "pyrosium_oxygen" - results = list("pyrosium" = 1) - required_reagents = list("pyrosium" = 1, /datum/reagent/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) @@ -397,9 +397,9 @@ /datum/chemical_reaction/pyrosium name = "pyrosium" - id = "pyrosium" - results = list("pyrosium" = 3) - required_reagents = list("stable_plasma" = 1, /datum/reagent/radium = 1, "phosphorus" = 1) + id = /datum/reagent/pyrosium + results = list(/datum/reagent/pyrosium = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/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 @@ -407,23 +407,23 @@ /datum/chemical_reaction/teslium name = "Teslium" - id = "teslium" - results = list("teslium" = 3) - required_reagents = list("stable_plasma" = 1, /datum/reagent/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 noexplosion = TRUE @@ -452,29 +452,29 @@ /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,/datum/reagent/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 /datum/chemical_reaction/reagent_explosion/lingblood name = "Changeling Blood Reaction" id = "ling_blood_reaction" - results = list("ash" = 1) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/ash = 1) + required_reagents = list(/datum/reagent/blood = 1) strengthdiv = 4 //The explosion should be somewhat strong if a full 15u is heated within a syringe. !!fun!! required_temp = 666 special_react = TRUE diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 9c737af5c0..5228d4a281 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -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 @@ -48,24 +48,24 @@ //Green /datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" - id = "slimetoxin" - results = list("slime_toxin" = 1) + id = /datum/reagent/slime_toxin + 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) + id = /datum/reagent/mutationtoxin + 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) + id = /datum/reagent/mutationtoxin/lizard + results = list(/datum/reagent/mutationtoxin/lizard = 1) required_reagents = list(/datum/reagent/radium = 1) required_other = TRUE required_container = /obj/item/slime_extract/green @@ -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 @@ -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!") @@ -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,7 +181,7 @@ /datum/chemical_reaction/slime/slimefrost name = "Slime Frost Oil" id = "m_frostoil" - results = list("frostoil" = 10) + 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 @@ -189,7 +189,7 @@ /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 @@ -233,7 +233,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 @@ -245,8 +245,8 @@ /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 @@ -277,8 +277,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 @@ -286,7 +286,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 @@ -308,7 +308,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 @@ -333,8 +333,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 @@ -365,7 +365,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 @@ -383,7 +383,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 @@ -406,7 +406,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 @@ -417,8 +417,8 @@ //Black /datum/chemical_reaction/slime/slimemutate2 name = "Advanced Mutation Toxin" - id = "mutationtoxin2" - results = list("amutationtoxin" = 1) + id = /datum/reagent/aslimetoxin + results = list(/datum/reagent/aslimetoxin = 1) required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/black @@ -456,8 +456,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 @@ -477,7 +477,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) @@ -501,7 +501,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 @@ -525,7 +525,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 @@ -548,7 +548,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 @@ -573,7 +573,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 @@ -585,7 +585,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 @@ -609,7 +609,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 @@ -642,7 +642,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 @@ -658,7 +658,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 @@ -669,7 +669,7 @@ /datum/chemical_reaction/slime/flight_potion name = "Flight Potion" id = "flightpotion" - required_reagents = list("holywater" = 5, "uranium" = 5) + 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/special.dm b/code/modules/reagents/chemistry/recipes/special.dm index 59394e6e4b..507e186810 100644 --- a/code/modules/reagents/chemistry/recipes/special.dm +++ b/code/modules/reagents/chemistry/recipes/special.dm @@ -149,13 +149,13 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related /datum/chemical_reaction/randomized/secret_sauce name = "secret sauce creation" - id = "secretsauce" + id = /datum/reagent/consumable/secretsauce persistent = TRUE persistence_period = 7 //Reset every week randomize_container = TRUE possible_containers = list(/obj/item/reagent_containers/glass/bucket) //easy way to ensure no common conflicts randomize_req_temperature = TRUE - results = list("secret_sauce" =1) + results = list(/datum/reagent/consumable/secretsauce =1) /datum/chemical_reaction/randomized/secret_sauce/GetPossibleReagents(kind) switch(kind) diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 5c2b8ec28c..7ed48e3c51 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" - id = "Formaldehyde" - results = list("formaldehyde" = 3) + id = /datum/reagent/toxin/formaldehyde + 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) + 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" + 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(/datum/reagent/fuel = 1, /datum/reagent/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" + 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(/datum/reagent/acetone = 1, "diethylamine" = 1, "sulfur" = 1) + 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(/datum/reagent/mercury = 1, "diethylamine" = 1, "ephedrine" = 1) + 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(/datum/reagent/radium = 1, "phosphorus" = 1, /datum/reagent/chlorine = 1) + id = /datum/reagent/toxin/mutagen + results = list(/datum/reagent/toxin/mutagen = 3) + required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/lexorin name = "Lexorin" - id = "lexorin" - results = list("lexorin" = 3) + 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(/datum/reagent/consumable/ethanol = 1, /datum/reagent/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, /datum/reagent/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(/datum/reagent/silicon = 1, /datum/reagent/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, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1, "lithium" = 1) + id = /datum/reagent/toxin/heparin + 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) + id = /datum/reagent/toxin/rotatium + 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, /datum/reagent/toxin/plasma = 2, /datum/reagent/toxin/acid = 1) + id = /datum/reagent/toxin/skewium + 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, /datum/reagent/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/radium = 1) /datum/chemical_reaction/mimesbane name = "Mime's Bane" - id = "mimesbane" - results = list("mimesbane" = 3) - required_reagents = list(/datum/reagent/radium = 1, "mutetoxin" = 1, "nothing" = 1) + id = /datum/reagent/toxin/mimesbane + results = list(/datum/reagent/toxin/mimesbane = 3) + required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/nothing = 1) /datum/chemical_reaction/bonehurtingjuice name = "Bone Hurting Juice" - id = "bonehurtingjuice" - results = list("bonehurtingjuice" = 5) - required_reagents = list("mutagen" = 1, "itching_powder" = 3, /datum/reagent/consumable/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/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index ada964d3a0..c05f4f3e78 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -43,7 +43,7 @@ /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" @@ -58,34 +58,34 @@ /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/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/cryoxadone name = "cryoxadone bottle" desc = "A small bottle of cryoxadone, heals most types of damage when used in extremely cold enviornments." - list_reagents = list("cryoxadone" = 30) + list_reagents = list(/datum/reagent/medicine/cryoxadone = 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" @@ -95,12 +95,12 @@ /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" @@ -110,7 +110,7 @@ /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" @@ -122,7 +122,7 @@ 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" @@ -149,88 +149,88 @@ /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" @@ -307,7 +307,7 @@ /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 @@ -317,7 +317,7 @@ /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" @@ -341,7 +341,7 @@ /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" @@ -349,11 +349,11 @@ /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" @@ -369,7 +369,7 @@ /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" @@ -409,26 +409,26 @@ /obj/item/reagent_containers/glass/bottle/bromine name = "bromine bottle" - list_reagents = list("bromine" = 30) + list_reagents = list(/datum/reagent/bromine = 30) //Lewd Stuff /obj/item/reagent_containers/glass/bottle/crocin name = "Crocin bottle" desc = "A bottle of mild aphrodisiac. Increases libido." - list_reagents = list("aphro" = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac = 30) /obj/item/reagent_containers/glass/bottle/hexacrocin name = "Hexacrocin bottle" desc = "A bottle of strong aphrodisiac. Increases libido." - list_reagents = list("aphro+" = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiacplus = 30) /obj/item/reagent_containers/glass/bottle/camphor name = "Camphor bottle" desc = "A bottle of mild anaphrodisiac. Reduces libido." - list_reagents = list("anaphro" = 30) + list_reagents = list(/datum/reagent/drug/anaphrodisiac = 30) /obj/item/reagent_containers/glass/bottle/hexacamphor name = "Hexacamphor bottle" desc = "A bottle of strong anaphrodisiac. Reduces libido." - list_reagents = list("anaphro+" = 30) \ No newline at end of file + list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 615d73a7da..9065f57786 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -231,32 +231,32 @@ container_HP = 4 /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(/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" diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 9232bb69b3..664ba81f9e 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -51,7 +51,7 @@ log_combat(user, M, "injected", src, "([contained])") /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 @@ -61,17 +61,17 @@ icon_state = "combat_hypo" volume = 100 ignore_flags = 1 // So they can heal their comrades. - list_reagents = list("epinephrine" = 30, "lesser_syndicate_nanites" = 40, "leporazine" = 15, "atropine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/lesser_syndicate_nanites = 40, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) /obj/item/reagent_containers/hypospray/combat/omnizine // owned idiot desc = "A modified air-needle autoinjector, used by underfunded support operatives to slowly heal injuries in combat and limp away from a fight." volume = 90 - 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" @@ -79,7 +79,7 @@ icon_state = "combat_hypo" volume = 5 reagent_flags = NONE - list_reagents = list("magillitis" = 5) + list_reagents = list(/datum/reagent/magillitis = 5) //MediPens @@ -95,7 +95,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) /obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -137,7 +137,7 @@ desc = "A highly illegal medipen due to its load and small injections, allow for five uses before being drained" volume = 50 amount_per_transfer_from_this = 10 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/hypospray/medipen/stimulants/baseball name = "the reason the syndicate major league team wins" @@ -145,7 +145,7 @@ icon_state = "baseballstim" volume = 50 amount_per_transfer_from_this = 50 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting name = "stimpack medipen" @@ -153,16 +153,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" @@ -170,7 +170,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" @@ -178,28 +178,20 @@ icon_state = "stimpen" volume = 52 amount_per_transfer_from_this = 52 - list_reagents = list("salbutamol" = 10, "leporazine" = 15, "neo_jelly" = 15, "epinephrine" = 10, "lavaland_extract" = 2) - -/obj/item/reagent_containers/hypospray/medipen/species_mutator - name = "species mutator medipen" - desc = "Embark on a whirlwind tour of racial insensitivity by \ - literally appropriating other races." - volume = 1 - amount_per_transfer_from_this = 1 - list_reagents = list("unstablemutationtoxin" = 1) + list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/neo_jelly = 15, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2) /obj/item/reagent_containers/hypospray/medipen/firelocker name = "fire treatment medipen" desc = "A medipen that has been fulled with burn healing chemicals for personnel without advanced medical knowledge." volume = 15 amount_per_transfer_from_this = 15 - list_reagents = list("oxandrolone" = 5, "kelotane" = 10) + list_reagents = list(/datum/reagent/medicine/oxandrolone = 5, /datum/reagent/medicine/kelotane = 10) /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 #define HYPO_SPRAY 0 @@ -240,19 +232,19 @@ var/penetrates = FALSE /obj/item/hypospray/mkii/brute - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine /obj/item/hypospray/mkii/toxin - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin /obj/item/hypospray/mkii/oxygen - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/dexalin /obj/item/hypospray/mkii/burn - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/kelotane /obj/item/hypospray/mkii/tricord - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/tricord /obj/item/hypospray/mkii/enlarge spawnwithvial = FALSE @@ -263,7 +255,7 @@ icon_state = "cmo2" desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/CMO inject_wait = DELUXE_WAIT_INJECT spray_wait = DELUXE_WAIT_SPRAY spray_self = DELUXE_SELF_SPRAY @@ -273,7 +265,7 @@ name = "combat hypospray mk.II" desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it." icon_state = "combat2" - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/combat inject_wait = COMBAT_WAIT_INJECT spray_wait = COMBAT_WAIT_SPRAY spray_self = COMBAT_SELF_SPRAY diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm index 73557d9b14..31a664a839 100644 --- a/code/modules/reagents/reagent_containers/hypovial.dm +++ b/code/modules/reagents/reagent_containers/hypovial.dm @@ -110,87 +110,87 @@ unique_reskin = null -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine +/obj/item/reagent_containers/glass/bottle/vial/small/bicaridine name = "red hypovial (bicaridine)" icon_state = "hypovial-b" - list_reagents = list("bicaridine" = 30) + list_reagents = list(/datum/reagent/medicine/bicaridine = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin +/obj/item/reagent_containers/glass/bottle/vial/small/antitoxin name = "green hypovial (Anti-Tox)" icon_state = "hypovial-a" - list_reagents = list("antitoxin" = 30) + list_reagents = list(/datum/reagent/medicine/antitoxin = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane +/obj/item/reagent_containers/glass/bottle/vial/small/kelotane name = "orange hypovial (kelotane)" icon_state = "hypovial-k" - list_reagents = list("kelotane" = 30) + list_reagents = list(/datum/reagent/medicine/kelotane = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin +/obj/item/reagent_containers/glass/bottle/vial/small/dexalin name = "blue hypovial (dexalin)" icon_state = "hypovial-d" - list_reagents = list("dexalin" = 30) + list_reagents = list(/datum/reagent/medicine/dexalin = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord +/obj/item/reagent_containers/glass/bottle/vial/small/tricord name = "hypovial (tricordrazine)" icon_state = "hypovial" - list_reagents = list("tricordrazine" = 30) + list_reagents = list(/datum/reagent/medicine/tricordrazine = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction +/obj/item/reagent_containers/glass/bottle/vial/small/breastreduction name = "pink hypovial (breast treatment)" icon_state = "hypovial-pink" - list_reagents = list("BEsmaller_hypo" = 30) + list_reagents = list(/datum/reagent/fermi/BEsmaller_hypo = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction +/obj/item/reagent_containers/glass/bottle/vial/small/penisreduction name = "pink hypovial (penis treatment)" icon_state = "hypovial-pink" - list_reagents = list("PEsmaller_hypo" = 30) + list_reagents = list(/datum/reagent/fermi/PEsmaller_hypo = 30) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO +/obj/item/reagent_containers/glass/bottle/vial/large/CMO name = "deluxe hypovial" icon_state = "hypoviallarge-cmos" - list_reagents = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20) + list_reagents = list(/datum/reagent/medicine/omnizine = 20, /datum/reagent/medicine/leporazine = 20, /datum/reagent/medicine/atropine = 20) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine +/obj/item/reagent_containers/glass/bottle/vial/large/bicaridine name = "large red hypovial (bicaridine)" icon_state = "hypoviallarge-b" - list_reagents = list("bicaridine" = 60) + list_reagents = list(/datum/reagent/medicine/bicaridine = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin +/obj/item/reagent_containers/glass/bottle/vial/large/antitoxin name = "large green hypovial (anti-tox)" icon_state = "hypoviallarge-a" - list_reagents = list("antitoxin" = 60) + list_reagents = list(/datum/reagent/medicine/antitoxin = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane +/obj/item/reagent_containers/glass/bottle/vial/large/kelotane name = "large orange hypovial (kelotane)" icon_state = "hypoviallarge-k" - list_reagents = list("kelotane" = 60) + list_reagents = list(/datum/reagent/medicine/kelotane = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin +/obj/item/reagent_containers/glass/bottle/vial/large/dexalin name = "large blue hypovial (dexalin)" icon_state = "hypoviallarge-d" - list_reagents = list("dexalin" = 60) + list_reagents = list(/datum/reagent/medicine/dexalin = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal +/obj/item/reagent_containers/glass/bottle/vial/large/charcoal name = "large black hypovial (charcoal)" icon_state = "hypoviallarge-t" - list_reagents = list("charcoal" = 60) + list_reagents = list(/datum/reagent/medicine/charcoal = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord +/obj/item/reagent_containers/glass/bottle/vial/large/tricord name = "large hypovial (tricord)" icon_state = "hypoviallarge" - list_reagents = list("tricordrazine" = 60) + list_reagents = list(/datum/reagent/medicine/tricordrazine = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu +/obj/item/reagent_containers/glass/bottle/vial/large/salglu name = "large green hypovial (salglu)" icon_state = "hypoviallarge-a" - list_reagents = list("salglu_solution" = 60) + list_reagents = list(/datum/reagent/medicine/salglu_solution = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh +/obj/item/reagent_containers/glass/bottle/vial/large/synthflesh name = "large orange hypovial (synthflesh)" icon_state = "hypoviallarge-k" - list_reagents = list("synthflesh" = 60) + list_reagents = list(/datum/reagent/medicine/synthflesh = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat +/obj/item/reagent_containers/glass/bottle/vial/large/combat name = "combat hypovial" icon_state = "hypoviallarge-t" - list_reagents = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine + list_reagents = list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/medicine/omnizine = 19, /datum/reagent/medicine/leporazine = 19, /datum/reagent/medicine/atropine = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index b445c38ad9..02a3f987bc 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -82,26 +82,26 @@ 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) /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) /obj/item/reagent_containers/medspray/synthtissue name = "Synthtissue young culture spray" desc = "Spray bottle loaded with synthtissue. Useful in synthtissue grafting surgeries." - list_reagents = list("synthtissue" = 60) + list_reagents = list(/datum/reagent/synthtissue = 60) diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 02852f2218..1e23f46d9f 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -32,13 +32,13 @@ /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/get_belt_overlay() diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index d0ca7466b7..e6fa18ba9c 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -96,42 +96,42 @@ 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) roundstart = 1 /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) roundstart = 1 /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) roundstart = 1 /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) roundstart = 1 /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) roundstart = 1 /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) roundstart = 1 /obj/item/reagent_containers/pill/mannitol @@ -145,34 +145,34 @@ 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) roundstart = 1 /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) roundstart = 1 /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) roundstart = 1 /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) roundstart = 1 /obj/item/reagent_containers/pill/psicodine name = "psicodine pill" desc = "Used to treat mental instability and traumas." - list_reagents = list("psicodine" = 10) + list_reagents = list(/datum/reagent/medicine/psicodine = 10) icon_state = "pill22" roundstart = 1 @@ -180,21 +180,21 @@ name = "potassium iodide pill" desc = "Used to treat radition used to counter radiation poisoning." icon_state = "pill18" - list_reagents = list("potass_iodide" = 50) + list_reagents = list(/datum/reagent/medicine/potass_iodide = 50) roundstart = 1 /obj/item/reagent_containers/pill/antirad_plus name = "prussian blue pill" desc = "Used to treat heavy radition poisoning." icon_state = "prussian_blue" - list_reagents = list("prussian_blue" = 25, /datum/reagent/water = 10) + list_reagents = list(/datum/reagent/medicine/prussian_blue = 25, /datum/reagent/water = 10) roundstart = 1 /obj/item/reagent_containers/pill/mutarad name = "radiation treatment deluxe pill" desc = "Used to treat heavy radition poisoning and genetic defects." icon_state = "anit_rad_fixgene" - list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, /datum/reagent/water = 5) + list_reagents = list(/datum/reagent/medicine/prussian_blue = 15, /datum/reagent/medicine/potass_iodide = 15, /datum/reagent/medicine/mutadone = 15, /datum/reagent/water = 5) roundstart = 1 ///////////////////////////////////////// this pill is used only in a legion mob drop @@ -203,11 +203,11 @@ 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 = "zoom pill" - 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) /obj/item/reagent_containers/pill/happy @@ -217,18 +217,18 @@ /obj/item/reagent_containers/pill/lsd name = "hallucinogen pill" - list_reagents = list("mushroomhallucinogen" = 15, "mindbreaker" = 15) + list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15) /obj/item/reagent_containers/pill/aranesp name = "speedy pill" - list_reagents = list("aranesp" = 10) + list_reagents = list(/datum/reagent/drug/aranesp = 10) /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" @@ -250,8 +250,8 @@ /obj/item/reagent_containers/pill/penis_enlargement name = "penis enlargement pill" - list_reagents = list("penis_enlarger" = 10) + list_reagents = list(/datum/reagent/fermi/penis_enlarger = 10) /obj/item/reagent_containers/pill/breast_enlargement name = "breast enlargement pill" - list_reagents = list("breast_enlarger" = 10) + list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 88165f5b98..ad8eb871e1 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -149,7 +149,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 @@ -172,7 +172,7 @@ name = "drying agent spray" desc = "A spray bottle for drying agent." volume = 100 - list_reagents = list("drying_agent" = 100) + list_reagents = list(/datum/reagent/drying_agent = 100) amount_per_transfer_from_this = 2 stream_amount = 5 @@ -181,7 +181,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 @@ -197,7 +197,7 @@ stream_range = 4 spray_delay = 1 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/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins huffing \the [src]! It looks like [user.p_theyre()] getting a dirty high!") @@ -230,7 +230,7 @@ icon = 'icons/obj/chemical.dmi' icon_state = "clownflower" volume = 30 - list_reagents = list("superlube" = 30) + list_reagents = list(/datum/reagent/lube/superlube = 30) /obj/item/reagent_containers/spray/waterflower/cyborg reagent_flags = NONE @@ -309,7 +309,7 @@ ..(the_targets[i]) /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) // Plant-B-Gone /obj/item/reagent_containers/spray/plantbgone // -- Skie @@ -321,4 +321,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 ceefc9348d..7fafbc319c 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -179,34 +179,34 @@ /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)" @@ -220,24 +220,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("amatoxin" = 15, "formaldehyde" = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) //Citadel edit, changing out plasma from lethals + list_reagents = list(/datum/reagent/toxin/amatoxin = 15, /datum/reagent/toxin/formaldehyde = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) //Citadel edit, changing out plasma from lethals /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/research/designs.dm b/code/modules/research/designs.dm index cdb9ea4120..516ae5bddd 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -37,9 +37,9 @@ other types of metals and chemistry for reagents). var/list/materials = list() //List of materials. Format: "id" = amount. var/construction_time //Amount of time required for building the object var/build_path = null //The file path of the object that gets created - var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator. + var/list/make_reagents = list() //Reagents produced. Format: type = amount. Currently only supported by the biogenerator. var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything - var/list/reagents_list = list() //List of reagents. Format: "id" = amount. + var/list/reagents_list = list() //List of reagents. Format: type = amount. var/maxstack = 1 var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed. diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm index 7b56beaf77..d2a38a29f9 100644 --- a/code/modules/research/designs/autobotter_designs.dm +++ b/code/modules/research/designs/autobotter_designs.dm @@ -151,97 +151,97 @@ name = "Export Design (Wine)" desc = "Allows for the blowing, and bottling of Wine bottles." id = "wine_export" - reagents_list = list("wine" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/wine = 100) build_path = /obj/item/export/bottle/wine /datum/design/bottle/export/rum name = "Export Design (Rum)" desc = "Allows for the blowing, and bottling of Rum bottles." id = "rum_export" - reagents_list = list("rum" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/rum = 100) build_path = /obj/item/export/bottle/rum /datum/design/bottle/export/gin name = "Export Design (Gin)" desc = "Allows for the blowing, and bottling of Gin bottles." id = "gin_export" - reagents_list = list("gin" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/gin = 100) build_path = /obj/item/export/bottle/gin /datum/design/bottle/export/whiskey name = "Export Design (Whiskey)" desc = "Allows for the blowing, and bottling of Whiskey bottles." id = "whiskey_export" - reagents_list = list("whiskey" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/whiskey = 100) build_path = /obj/item/export/bottle/whiskey /datum/design/bottle/export/vodka name = "Export Design (Vodka)" desc = "Allows for the blowing, and bottling of 99% Vodka bottles." id = "vodka_export" - reagents_list = list("vodka" = 99, "water" = 1) + reagents_list = list(/datum/reagent/consumable/ethanol/vodka = 99, /datum/reagent/water = 1) build_path = /obj/item/export/bottle/vodka /datum/design/bottle/export/tequila name = "Export Design (Tequila)" desc = "Allows for the blowing, and bottling of Tequila bottles." id = "tequila_export" - reagents_list = list("tequila" = 80, "lemon_juice" = 20) + reagents_list = list(/datum/reagent/consumable/ethanol/tequila = 80, /datum/reagent/consumable/lemonjuice = 20) build_path = /obj/item/export/bottle/tequila /datum/design/bottle/export/patron name = "Export Design (Patron)" desc = "Allows for the blowing, and bottling of Patron bottles." id = "patron_export" - reagents_list = list("patron" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/patron = 100) build_path = /obj/item/export/bottle/patron /datum/design/bottle/export/kahlua name = "Export Design (Kahlua)" desc = "Allows for the blowing, and bottling of Kahlua bottles." id = "kahlua_export" - reagents_list = list("kahlua" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/kahlua = 100) build_path = /obj/item/export/bottle/kahlua /datum/design/bottle/export/sake name = "Export Design (Sake)" desc = "Allows for the blowing, and bottling of Sake bottles." id = "sake_export" - reagents_list = list("sake" = 80, "rice" = 10, "sugar" = 10) + reagents_list = list(/datum/reagent/consumable/ethanol/sake = 80, /datum/reagent/consumable/rice = 10, /datum/reagent/consumable/sugar = 10) build_path = /obj/item/export/bottle/sake /datum/design/bottle/export/vermouth name = "Export Design (Vermouth)" desc = "Allows for the blowing, and bottling of Vermouth bottles." id = "vermouth_export" - reagents_list = list("vermouth" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/vermouth = 100) build_path = /obj/item/export/bottle/vermouth /datum/design/bottle/export/goldschlager name = "Export Design (Goldschlager)" desc = "Allows for the blowing, and bottling of Goldschlager bottles." id = "goldschlager_export" - reagents_list = list("goldschlager" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/goldschlager = 100) build_path = /obj/item/export/bottle/goldschlager /datum/design/bottle/export/hcider name = "Export Design (Cider)" desc = "Allows for the blowing, and bottling of Cider bottles." id = "hcider_export" - reagents_list = list("hcider" = 30, "water" = 20) + reagents_list = list(/datum/reagent/consumable/ethanol/hcider = 30, /datum/reagent/water = 20) build_path = /obj/item/export/bottle/hcider /datum/design/bottle/export/cognac name = "Export Design (Cognac)" desc = "Allows for the blowing, and bottling of Cognac bottles." id = "cognac_export" - reagents_list = list("cognac" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/cognac = 100) build_path = /obj/item/export/bottle/cognac /datum/design/bottle/export/absinthe name = "Export Design (Absinthe)" desc = "Allows for the blowing, and bottling of Absinthe bottles." - reagents_list = list("absinthe" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/absinthe = 100) id = "absinthe_export" build_path = /obj/item/export/bottle/absinthe @@ -249,49 +249,49 @@ name = "Export Design (Grappa)" desc = "Allows for the blowing, and bottling of Grappa bottles." id = "grappa_export" - reagents_list = list("grappa" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/grappa = 100) build_path = /obj/item/export/bottle/grappa /datum/design/bottle/export/fernet name = "Export Design (Fernet)" desc = "Allows for the blowing, and bottling of Fernet bottles." id = "fernet_export" - reagents_list = list("fernet" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/fernet = 100) build_path = /obj/item/export/bottle/fernet /datum/design/bottle/export/applejack name = "Export Design (Applejack)" desc = "Allows for the blowing, and bottling of Applejack bottles." id = "applejack_export" - reagents_list = list("applejack" = 50, "gin" = 10) + reagents_list = list(/datum/reagent/consumable/ethanol/applejack = 50, /datum/reagent/consumable/ethanol/gin = 10) build_path = /obj/item/export/bottle/applejack /datum/design/bottle/export/champagne name = "Export Design (Champagne)" desc = "Allows for the blowing, and bottling of Champagne bottles." id = "champagne_export" - reagents_list = list("champagne" = 90, "co2" = 10) + reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 90, /datum/reagent/carbondioxide = 10) build_path = /obj/item/export/bottle/champagne /datum/design/bottle/export/blazaam name = "Export Design (Blazaam)" desc = "Allows for the blowing, and bottling of Blazaam bottles." id = "blazaam_export" - reagents_list = list("blazaam" = 80, "holywater" = 20) + reagents_list = list(/datum/reagent/consumable/ethanol/blazaam = 80, /datum/reagent/water/holywater = 20) build_path = /obj/item/export/bottle/blazaam /datum/design/bottle/export/trappist name = "Export Design (Trappist)" desc = "Allows for the blowing, and bottling of Trappist bottles." id = "trappist_export" - reagents_list = list("trappist" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/trappist = 100) build_path = /obj/item/export/bottle/trappist /datum/design/bottle/export/grenadine name = "Export Design (Grenadine)" desc = "Allows for the blowing, and bottling of Grenadine bottles." id = "grenadine_export" - reagents_list = list("grenadine" = 100) + reagents_list = list(/datum/reagent/consumable/grenadine = 100) build_path = /obj/item/export/bottle/grenadine /datum/design/bottle/export/minikeg @@ -299,7 +299,7 @@ desc = "Allows for the fabication, and bottling of Minikeg of craft beer." id = "minikeg" category = list("Beers") - reagents_list = list("light_beer" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/beer/light = 100) build_path = /obj/item/export/bottle/minikeg /datum/design/bottle/export/blooddrop @@ -307,7 +307,7 @@ desc = "Allows for the blowing, and bottling of Blooddrop bottles." id = "blooddrop" category = list("Wines") - reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grape_juice" = 30) + reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 30, /datum/reagent/carbondioxide = 30, /datum/reagent/consumable/ethanol/wine = 10, /datum/reagent/consumable/grapejuice = 30) build_path = /obj/item/export/bottle/blooddrop /datum/design/bottle/export/slim_gold @@ -315,7 +315,7 @@ desc = "Allows for the blowing, and bottling of Slim Gold bottles." id = "slim_gold" category = list("Beers") - reagents_list = list("gold" = 10, "co2" = 10, "rum" = 30, "beer" = 40) + reagents_list = list(/datum/reagent/gold = 10, /datum/reagent/carbondioxide = 10, /datum/reagent/consumable/ethanol/rum = 30, /datum/reagent/consumable/ethanol/beer = 40) build_path = /obj/item/export/bottle/slim_gold /datum/design/bottle/export/white_bloodmoon @@ -323,13 +323,13 @@ desc = "Allows for the blowing, and bottling of White Bloodmoon bottles." id = "white_bloodmoon" category = list("Wines") - reagents_list = list("synthflesh" = 50, "blood" = 50, "gib" = 10) + reagents_list = list(/datum/reagent/medicine/synthflesh = 50, /datum/reagent/blood = 50, /datum/reagent/liquidgibs = 10) build_path = /obj/item/export/bottle/white_bloodmoon /datum/design/bottle/export/greenroad name = "Export Design (Greenroad)" desc = "Allows for the blowing, and bottling of Greenroad bottles." id = "greenroad" - reagents_list = list("vitfro" = 50, "rum" = 50, "ash" = 10) + reagents_list = list(/datum/reagent/consumable/vitfro = 50, /datum/reagent/consumable/ethanol/rum = 50, /datum/reagent/ash = 10) category = list("Beers") build_path = /obj/item/export/bottle/greenroad \ No newline at end of file diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index dae59408c8..d002c84c5f 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","insect","plasmaman","mammal","xeno") @@ -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","insect","plasmaman","mammal","xeno") @@ -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","insect","plasmaman","mammal","xeno") @@ -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","insect","plasmaman","mammal","xeno") @@ -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 fde795d87c..e6f4670f87 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -237,7 +237,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 @@ -268,7 +268,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/radium = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index da376ad930..4684352ef5 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -50,7 +50,7 @@ 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, /datum/reagent/consumable/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/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index c1d539f3ef..8eecf1f635 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) @@ -200,7 +200,7 @@ 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,7 +223,7 @@ 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) @@ -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,7 +266,7 @@ 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) diff --git a/code/modules/ruins/lavalandruin_code/alien_nest.dm b/code/modules/ruins/lavalandruin_code/alien_nest.dm index ca33324a90..d98a6bf5c1 100644 --- a/code/modules/ruins/lavalandruin_code/alien_nest.dm +++ b/code/modules/ruins/lavalandruin_code/alien_nest.dm @@ -16,4 +16,4 @@ desc = "A syringe filled with a strange viscous liquid. It might be best to leave it alone." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list("xenomicrobes" = 1) + list_reagents = list(/datum/reagent/xenomicrobes = 1) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 86d2a9c2f7..91153655d3 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -338,7 +338,7 @@ // Stimulum gas_breathed = breath_gases[/datum/gas/stimulum] if (gas_breathed > gas_stimulation_min) - var/existing = H.reagents.get_reagent_amount("stimulum") + var/existing = H.reagents.get_reagent_amount(/datum/reagent/stimulum) H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing)) breath_gases[/datum/gas/stimulum]-=gas_breathed diff --git a/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm index 41fcda4355..cacf081e7d 100644 --- a/code/modules/vore/eating/voreitems.dm +++ b/code/modules/vore/eating/voreitems.dm @@ -57,6 +57,6 @@ /datum/chemical_reaction/ickypak name = "Ickypak" - id = "ickypak" - results = list("ickypak" = 2) + id = /datum/reagent/medicine/ickypak + results = list(/datum/reagent/medicine/ickypak = 2) required_reagents = list(/datum/reagent/chlorine = 2 , /datum/reagent/oil = 1) */ \ No newline at end of file diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm index b039eb9b42..4d6f8551f8 100644 --- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -4,7 +4,7 @@ id = "10mminc" build_type = PROTOLATHE materials = list(MAT_PLASMA = 50000, MAT_METAL = 18000) - reagents_list = list("plasma" = 120, "napalm" = 240) + reagents_list = list(/datum/reagent/toxin/plasma = 120, /datum/reagent/napalm = 240) build_path = /obj/item/ammo_box/magazine/m10mm/fire category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -25,7 +25,7 @@ id = "10mmhp" build_type = PROTOLATHE materials = list(MAT_METAL = 40000, MAT_GLASS = 50000) - reagents_list = list("sonic_powder" = 280) + reagents_list = list(/datum/reagent/sonic_powder = 280) build_path = /obj/item/ammo_box/magazine/m10mm/hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index b96099abe2..9d504ed679 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -104,9 +104,9 @@ /datum/chemical_reaction/fermi/eigenstate name = "Eigenstasium" - id = "eigenstate" - results = list("eigenstate" = 1) - required_reagents = list("bluespace" = 1, "stable_plasma" = 1, /datum/reagent/consumable/sugar = 1) + id = /datum/reagent/fermi/eigenstate + results = list(/datum/reagent/fermi/eigenstate = 1) + required_reagents = list(/datum/reagent/bluespace = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/consumable/sugar = 1) mix_message = "the reaction zaps suddenly!" //FermiChem vars: OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions @@ -138,9 +138,9 @@ //serum /datum/chemical_reaction/fermi/SDGF name = "Synthetic-derived growth factor" - id = "SDGF" - results = list("SDGF" = 3) - required_reagents = list("stable_plasma" = 1.5, "clonexadone" = 1.5, "uranium" = 1.5, "synthflesh" = 1.5) + id = /datum/reagent/fermi/SDGF + results = list(/datum/reagent/fermi/SDGF = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1.5, /datum/reagent/medicine/clonexadone = 1.5, /datum/reagent/uranium = 1.5, /datum/reagent/medicine/synthflesh = 1.5) mix_message = "the reaction gives off a blorble!" required_temp = 1 //FermiChem vars: @@ -179,9 +179,9 @@ /datum/chemical_reaction/fermi/breast_enlarger name = "Sucubus milk" - id = "breast_enlarger" - results = list("breast_enlarger" = 8) - required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/milk = 1, "synthflesh" = 2, /datum/reagent/silicon = 3, "aphro" = 3) + id = /datum/reagent/fermi/breast_enlarger + results = list(/datum/reagent/fermi/breast_enlarger = 8) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -219,9 +219,9 @@ /datum/chemical_reaction/fermi/penis_enlarger name = "Incubus draft" - id = "penis_enlarger" - results = list("penis_enlarger" = 8) - required_reagents = list("blood" = 5, "synthflesh" = 2, /datum/reagent/carbon = 2, "aphro" = 2, "salglu_solution" = 1) + id = /datum/reagent/fermi/penis_enlarger + results = list(/datum/reagent/fermi/penis_enlarger = 8) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gives off a spicy mist." //FermiChem vars: OptimalTempMin = 200 @@ -258,9 +258,9 @@ /datum/chemical_reaction/fermi/astral name = "Astrogen" - id = "astral" - results = list("astral" = 5) - required_reagents = list("eigenstate" = 1, /datum/reagent/toxin/plasma = 3, "synaptizine" = 1, "aluminium" = 5) + id = /datum/reagent/fermi/astral + results = list(/datum/reagent/fermi/astral = 5) + required_reagents = list(/datum/reagent/fermi/eigenstate = 1, /datum/reagent/toxin/plasma = 3, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/aluminium = 5) //FermiChem vars: OptimalTempMin = 700 OptimalTempMax = 800 @@ -279,12 +279,12 @@ PurityMin = 0.25 -/datum/chemical_reaction/fermi/enthrall/ //check this +/datum/chemical_reaction/fermi/enthrall //check this name = "MKUltra" - id = "enthrall" - results = list("enthrall" = 5) - required_reagents = list("cocoa" = 1, "bluespace" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1) - required_catalysts = list("blood" = 1) + id = /datum/reagent/fermi/enthrall + results = list(/datum/reagent/fermi/enthrall = 5) + required_reagents = list(/datum/reagent/consumable/coco = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/psicodine = 1, /datum/reagent/drug/happiness = 1) + required_catalysts = list(/datum/reagent/blood = 1) mix_message = "the reaction gives off a burgundy plume of smoke!" //FermiChem vars: OptimalTempMin = 780 @@ -326,7 +326,8 @@ //So slimes can play too. /datum/chemical_reaction/fermi/enthrall/slime - required_catalysts = list("jellyblood" = 1) + id = "enthrall2" + required_catalysts = list(/datum/reagent/blood/jellyblood = 1) /datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom) var/datum/reagent/blood/jellyblood/B = locate(/datum/reagent/blood/jellyblood) in my_atom.reagents.reagent_list//The one line change. @@ -358,9 +359,9 @@ /datum/chemical_reaction/fermi/hatmium // done name = "Hat growth serum" - id = "hatmium" - results = list("hatmium" = 5) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/consumable/nutriment = 3, "cooking_oil" = 2, /datum/reagent/iron = 1, /datum/reagent/gold = 3) + id = /datum/reagent/fermi/hatmium + results = list(/datum/reagent/fermi/hatmium = 5) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/iron = 1, /datum/reagent/gold = 3) //mix_message = "" //FermiChem vars: OptimalTempMin = 500 @@ -393,9 +394,9 @@ /datum/chemical_reaction/fermi/furranium name = "Furranium" - id = "furranium" - results = list("furranium" = 5) - required_reagents = list("aphro" = 1, "moonsugar" = 1, /datum/reagent/silver = 2, "salglu_solution" = 1) + id = /datum/reagent/fermi/furranium + results = list(/datum/reagent/fermi/furranium = 5) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/moonsugar = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "You think you can hear a howl come from the beaker." //FermiChem vars: OptimalTempMin = 350 @@ -414,7 +415,8 @@ PurityMin = 0.3 /datum/chemical_reaction/fermi/furranium/organic - required_reagents = list("aphro" = 1, "catnip" = 1, /datum/reagent/silver = 2, "salglu_solution" = 1) + id = "furranium_organic" + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) //FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. //There's a weird rounding error or something ugh. @@ -422,9 +424,9 @@ //Nano-b-gone /datum/chemical_reaction/fermi/nanite_b_gone//done test name = "Naninte bain" - id = "nanite_b_gone" - results = list("nanite_b_gone" = 4) - required_reagents = list("synthflesh" = 1, "uranium" = 1, /datum/reagent/iron = 1, "salglu_solution" = 1) + id = /datum/reagent/fermi/nanite_b_gone + results = list(/datum/reagent/fermi/nanite_b_gone = 4) + required_reagents = list(/datum/reagent/medicine/synthflesh = 1, /datum/reagent/uranium = 1, /datum/reagent/iron = 1, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off." required_temp = 450//To force fermireactions before EMP. //FermiChem vars: @@ -444,9 +446,9 @@ /datum/chemical_reaction/fermi/acidic_buffer//done test name = "Acetic acid buffer" - id = "acidic_buffer" - results = list("acidic_buffer" = 10) //acetic acid - required_reagents = list("salglu_solution" = 1, /datum/reagent/consumable/ethanol = 3, /datum/reagent/oxygen = 3, "water" = 3) + id = /datum/reagent/fermi/acidic_buffer + results = list(/datum/reagent/fermi/acidic_buffer = 10) //acetic acid + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/ethanol = 3, /datum/reagent/oxygen = 3, /datum/reagent/water = 3) //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -471,9 +473,9 @@ /datum/chemical_reaction/fermi/basic_buffer//done test name = "Ethyl Ethanoate buffer" - id = "basic_buffer" - results = list("basic_buffer" = 5) - required_reagents = list("lye" = 1, /datum/reagent/consumable/ethanol = 2, "water" = 2) + id = /datum/reagent/fermi/basic_buffer + results = list(/datum/reagent/fermi/basic_buffer = 5) + required_reagents = list(/datum/reagent/lye = 1, /datum/reagent/consumable/ethanol = 2, /datum/reagent/water = 2) required_catalysts = list(/datum/reagent/toxin/acid = 1) //vagely acetic //FermiChem vars: OptimalTempMin = 250 @@ -503,10 +505,10 @@ //ChemReactionVars: /datum/chemical_reaction/fermi/secretcatchem //DONE name = "secretcatchem" - id = "secretcatchem" - results = list("secretcatchem" = 5) - required_reagents = list("stable_plasma" = 1, /datum/reagent/consumable/sugar = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. - required_catalysts = list("SDGF" = 1) + id = /datum/reagent/fermi/secretcatchem + results = list(/datum/reagent/fermi/secretcatchem = 5) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/clonexadone = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. + required_catalysts = list(/datum/reagent/fermi/SDGF = 1) required_temp = 500 mix_message = "the reaction gives off a meow!" mix_sound = "modular_citadel/sound/voice/merowr.ogg" @@ -556,9 +558,9 @@ /datum/chemical_reaction/fermi/yamerol//done test name = "Yamerol" - id = "yamerol" - results = list("yamerol" = 3) - required_reagents = list("perfluorodecalin" = 1, "salbutamol" = 1, "water" = 1) + id = /datum/reagent/fermi/yamerol + results = list(/datum/reagent/fermi/yamerol = 3) + required_reagents = list(/datum/reagent/medicine/perfluorodecalin = 1, /datum/reagent/medicine/salbutamol = 1, /datum/reagent/water = 1) //FermiChem vars: OptimalTempMin = 300 OptimalTempMax = 500 diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index e654e9d98f..a98b2011db 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -206,32 +206,32 @@ //recipes /datum/chemical_reaction/aphro name = "crocin" - id = "aphro" - results = list("aphro" = 6) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, "water" = 1) + id = /datum/reagent/drug/aphrodisiac + results = list(/datum/reagent/drug/aphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1) required_temp = 400 mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin /datum/chemical_reaction/aphroplus name = "hexacrocin" - id = "aphro+" - results = list("aphro+" = 1) - required_reagents = list("aphro" = 6, /datum/reagent/phenol = 1) + id = /datum/reagent/drug/aphrodisiacplus + results = list(/datum/reagent/drug/aphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) required_temp = 400 mix_message = "The mixture rapidly condenses and darkens in color..." /datum/chemical_reaction/anaphro name = "camphor" - id = "anaphro" - results = list("anaphro" = 6) - required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, "sulfur" = 1) + id = /datum/reagent/drug/anaphrodisiac + results = list(/datum/reagent/drug/anaphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1) required_temp = 400 mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor /datum/chemical_reaction/anaphroplus name = "pentacamphor" - id = "anaphro+" - results = list("anaphro+" = 1) - required_reagents = list("anaphro" = 5, /datum/reagent/acetone = 1) + id = /datum/reagent/drug/anaphrodisiacplus + results = list(/datum/reagent/drug/anaphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) required_temp = 300 mix_message = "The mixture thickens and heats up slighty..." From 37441437d14518ef951e44a3022402a366575502 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 28 Dec 2019 23:02:28 +0100 Subject: [PATCH 13/78] a --- code/game/machinery/Sleeper.dm | 2 +- .../objects/items/devices/dogborg_sleeper.dm | 2 +- code/modules/food_and_drinks/drinks/drinks.dm | 42 +- .../food_and_drinks/drinks/drinks/bottle.dm | 109 ++- .../drinks/drinks/drinkingglass.dm | 6 +- .../modules/food_and_drinks/food/condiment.dm | 33 +- .../food_and_drinks/food/snacks/meat.dm | 20 +- .../food_and_drinks/food/snacks_bread.dm | 4 +- .../food_and_drinks/food/snacks_burgers.dm | 38 +- .../food_and_drinks/food/snacks_cake.dm | 20 +- .../food_and_drinks/food/snacks_egg.dm | 2 +- .../food_and_drinks/food/snacks_frozen.dm | 42 +- .../food_and_drinks/food/snacks_meat.dm | 8 +- .../food_and_drinks/food/snacks_other.dm | 28 +- .../food_and_drinks/food/snacks_pastry.dm | 64 +- .../food_and_drinks/food/snacks_pie.dm | 8 +- .../food_and_drinks/food/snacks_pizza.dm | 10 +- .../food_and_drinks/food/snacks_salad.dm | 4 +- .../food/snacks_sandwichtoast.dm | 24 +- .../food_and_drinks/food/snacks_soup.dm | 32 +- .../food_and_drinks/food/snacks_spaghetti.dm | 8 +- .../food_and_drinks/food/snacks_vend.dm | 2 +- .../food_and_drinks/recipes/drinks_recipes.dm | 752 +++++++++--------- .../food_and_drinks/recipes/food_mixtures.dm | 72 +- .../recipes/tablecraft/recipes_pastry.dm | 6 +- code/modules/holiday/halloween/jacqueen.dm | 1 - code/modules/hydroponics/beekeeping/beebox.dm | 4 +- code/modules/hydroponics/grown/ambrosia.dm | 6 +- code/modules/hydroponics/grown/apple.dm | 4 +- code/modules/hydroponics/grown/banana.dm | 12 +- code/modules/hydroponics/grown/beans.dm | 6 +- code/modules/hydroponics/grown/berries.dm | 10 +- code/modules/hydroponics/grown/cereals.dm | 6 +- code/modules/hydroponics/grown/citrus.dm | 4 +- .../hydroponics/grown/cocoa_vanilla.dm | 5 +- code/modules/hydroponics/grown/corn.dm | 2 +- code/modules/hydroponics/grown/eggplant.dm | 2 +- code/modules/hydroponics/grown/flowers.dm | 6 +- code/modules/hydroponics/grown/misc.dm | 2 +- code/modules/hydroponics/grown/mushrooms.dm | 2 +- code/modules/hydroponics/grown/potato.dm | 4 +- code/modules/hydroponics/grown/tea_coffee.dm | 2 +- code/modules/hydroponics/grown/tobacco.dm | 2 +- code/modules/hydroponics/grown/tomato.dm | 8 +- code/modules/hydroponics/hydroitemdefines.dm | 14 +- code/modules/hydroponics/plant_genes.dm | 2 +- .../subtypes/reagents.dm | 10 +- .../mining/lavaland/necropolis_chests.dm | 1 - code/modules/mob/living/blood.dm | 12 +- .../mob/living/carbon/human/species.dm | 2 +- .../carbon/human/species_types/golems.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 2 +- .../mob/living/simple_animal/hostile/bees.dm | 2 +- .../simple_animal/hostile/jungle/leaper.dm | 1 - code/modules/projectiles/projectile.dm | 2 +- code/modules/reagents/chem_wiki_render.dm | 138 +--- .../chemistry/machinery/chem_dispenser.dm | 2 +- .../chemistry/machinery/chem_master.dm | 4 +- .../chemistry/machinery/chem_synthesizer.dm | 2 +- code/modules/reagents/chemistry/reagents.dm | 23 +- .../chemistry/reagents/alcohol_reagents.dm | 127 +-- .../chemistry/reagents/blob_reagents.dm | 21 +- .../chemistry/reagents/drink_reagents.dm | 78 +- .../chemistry/reagents/drug_reagents.dm | 35 +- .../chemistry/reagents/food_reagents.dm | 46 -- .../chemistry/reagents/impure_reagents.dm | 1 - .../chemistry/reagents/medicine_reagents.dm | 86 +- .../chemistry/reagents/other_reagents.dm | 183 +---- .../reagents/pyrotechnic_reagents.dm | 17 - .../chemistry/reagents/toxin_reagents.dm | 62 +- .../reagents/chemistry/recipes/medicine.dm | 2 +- .../reagents/chemistry/recipes/others.dm | 10 +- .../chemistry/recipes/pyrotechnics.dm | 2 +- .../reagents/chemistry/recipes/toxins.dm | 2 +- code/modules/reagents/reagent_containers.dm | 2 +- .../reagents/reagent_containers/dropper.dm | 2 +- .../reagents/reagent_containers/glass.dm | 2 +- .../nanites/nanite_programs/healing.dm | 2 +- code/modules/vore/eating/voreitems.dm | 1 - code/modules/vore/resizing/sizechemicals.dm | 1 - icons/obj/food/containers.dmi | Bin 11417 -> 11617 bytes .../reagents/chemistry/reagents/MKUltra.dm | 6 +- .../reagents/chemistry/reagents/SDGF.dm | 22 +- .../reagents/chemistry/reagents/astrogen.dm | 1 - .../chemistry/reagents/eigentstasium.dm | 3 +- .../chemistry/reagents/enlargement.dm | 8 +- .../chemistry/reagents/fermi_reagents.dm | 14 +- .../reagents/chemistry/reagents/healing.dm | 3 - .../chemistry/reagents/other_reagents.dm | 1 - .../reagents/chemistry/recipes/fermi.dm | 4 +- .../modules/reagents/reagents/cit_reagents.dm | 6 - 91 files changed, 873 insertions(+), 1522 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 2b043822f3..fa9b515a81 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -217,7 +217,7 @@ for(var/chem in available_chems) var/datum/reagent/R = reagents.has_reagent(chem) R = GLOB.chemical_reagents_list[chem] - data["synthchems"] += list(list("name" = R.name, "id" = R.id, "synth_allowed" = synth_allowed(chem))) + data["synthchems"] += list(list("name" = R.name, "id" = R.type, "synth_allowed" = synth_allowed(chem))) for(var/datum/reagent/R in reagents.reagent_list) data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type))) diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index db2b03f2e8..748c494737 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -184,7 +184,7 @@ data["chem"] = list() for(var/chem in injection_chems) var/datum/reagent/R = GLOB.chemical_reagents_list[chem] - data["chem"] += list(list("name" = R.name, "id" = R.id)) + data["chem"] += list(list("name" = R.name, "id" = R.type)) data["occupant"] = list() var/mob/living/mob_occupant = patient diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index ef39115ccd..bf070a9e59 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -211,7 +211,7 @@ name = "ice cup" desc = "Careful, cold ice, do not chew." icon_state = "coffee" - list_reagents = list("ice" = 30) + list_reagents = list(/datum/reagent/consumable/ice = 30) spillable = TRUE isGlass = FALSE @@ -231,12 +231,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, /datum/reagent/consumable/sugar = 5) + list_reagents = list(/datum/reagent/consumable/hot_coco = 30, /datum/reagent/consumable/sugar = 5) foodtype = SUGAR resistance_flags = FREEZE_PROOF @@ -244,7 +244,7 @@ name = "cup ramen" desc = "Just add 10ml of water, self heats! A taste that reminds you of your school years." icon_state = "ramen" - list_reagents = list("dry_ramen" = 30) + list_reagents = list(/datum/reagent/consumable/dry_ramen = 30) foodtype = GRAIN isGlass = FALSE @@ -252,20 +252,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 @@ -382,7 +382,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" @@ -438,20 +438,20 @@ name = "T-Borg's tonic water" desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." 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 name = "soda water" desc = "A can of soda water. Why not make a scotch and soda?" 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() @@ -462,62 +462,62 @@ 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(/datum/reagent/consumable/space_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/buzz_fuzz name = "Buzz Fuzz" desc = "The sister drink of Shambler's Juice! Uses real honey, making it a sweet tooth's dream drink. The slogan reads ''A Hive of Flavour'', there's also a label about how it is adddicting." icon_state = "honeysoda_can" - list_reagents = list("buzz_fuzz" = 25, "honey" = 5) + list_reagents = list(/datum/reagent/consumable/buzz_fuzz = 25, /datum/reagent/consumable/honey = 5) 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 @@ -530,5 +530,5 @@ name = "Monkey Energy" desc = "Unleash the ape!" icon_state = "monkey_energy" - list_reagents = list("monkey_energy" = 50) + list_reagents = list(/datum/reagent/consumable/monkey_energy = 50) foodtype = SUGAR | JUNKFOOD diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 271ff93b15..757af11b62 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -131,88 +131,87 @@ 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/gin/empty - list_reagents = list("gin" = 0) + list_reagents = null /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/whiskey/empty - list_reagents = list("whiskey" = 0) + list_reagents = null /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/empty - list_reagents = list("vodka" = 0) + list_reagents = null /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) /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/tequila/empty - list_reagents = list("tequila" = 0) + list_reagents = null /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/bottleofnothing/empty - list_reagents = list("nothing" = 0) + list_reagents = null /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/patron/empty - list_reagents = list("patron" = 0) + list_reagents = null /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/rum/empty - list_reagents = list("rum" = 0) + list_reagents = null /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/holyoil name = "flask of zelus oil" desc = "A brass flask of Zelus oil, a viscous fluid scenting of brass. Can be thrown to deal damage from afar." icon_state = "zelusflask" - list_reagents = list("holyoil" = 30) + list_reagents = list(/datum/reagent/fuel/holyoil = 30) volume = 30 foodtype = NONE force = 18 @@ -220,63 +219,63 @@ knockdown_duration = 18 /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty - list_reagents = list("holyoil" = 0) + list_reagents = null /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/vermouth/empty - list_reagents = list("vermouth" = 0) + list_reagents = null /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/kahlua/empty - list_reagents = list("kahlua" = 0) + list_reagents = null /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/goldschlager/empty - list_reagents = list("goldschlager" = 0) + list_reagents = null /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/cognac/empty - list_reagents = list("cognac" = 0) + list_reagents = null /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/wine/empty - list_reagents = list("wine" = 0) + list_reagents = null /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/empty - list_reagents = list("absinthe" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize() . = ..() @@ -329,7 +328,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 @@ -337,28 +336,28 @@ 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/hcider/empty - list_reagents = list("hcider" = 0) + list_reagents = null /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/grappa/empty - list_reagents = list("grappa" = 0) + list_reagents = null /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/empty - list_reagents = list("sake" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/sake/Initialize() . = ..() @@ -375,48 +374,48 @@ 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) /obj/item/reagent_containers/food/drinks/bottle/fernet/empty - list_reagents = list("fernet" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/applejack name = "Buckin' Bronco's Applejack" desc = "Kicks like a horse, tastes like an apple!" icon_state = "applejack_bottle" - list_reagents = list("applejack" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/applejack = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/applejack/empty - list_reagents = list("applejack" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Eau d' Dandy Brut Champagne" desc = "Finely sourced from only the most pretentious French vineyards." icon_state = "champagne_bottle" - list_reagents = list("champagne" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100) /obj/item/reagent_containers/food/drinks/bottle/champagne/empty - list_reagents = list("champagne" = 0) + list_reagents = null /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("blazaam" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/blazaam = 100) /obj/item/reagent_containers/food/drinks/bottle/blazaam/empty - list_reagents = list("blazaam" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/trappist name = "Mont de Requin Trappistes Bleu" desc = "Brewed in space-Belgium. Fancy!" icon_state = "trappistbottle" volume = 50 - list_reagents = list("trappist" = 50) + list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50) /obj/item/reagent_containers/food/drinks/bottle/trappist/empty - list_reagents = list("trappist" = 0) + list_reagents = null //////////////////////////JUICES AND STUFF /////////////////////// @@ -428,7 +427,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| BREAKFAST /obj/item/reagent_containers/food/drinks/bottle/cream @@ -439,7 +438,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 @@ -450,7 +449,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 @@ -461,7 +460,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 @@ -472,18 +471,18 @@ 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" desc = "Contains 0% real cherries!" 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/grenadine/empty - list_reagents = list("grenadine" = 0) + list_reagents = null ////////////////////////// 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 9c6fddac5d..0d769932db 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -81,7 +81,7 @@ /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" @@ -89,11 +89,11 @@ /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/filled/syndicatebomb name = "Syndicat Bomb" - list_reagents = list("syndicatebomb" = 50) + list_reagents = list(/datum/reagent/consumable/ethanol/syndicatebomb = 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 diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 9a69c1b3d1..d8dafb7b8e 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -16,7 +16,6 @@ //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. var/list/possible_states = list( /datum/reagent/consumable/ketchup = list("ketchup", "ketchup bottle", "You feel more American already."), - /datum/reagent/consumable/mustard = list("mustard", "mustard bottle", "A spice mixed with enzymes and water."), /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"), @@ -26,7 +25,7 @@ /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."), - /datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included."), + /datum/reagent/consumable/bbqsauce = list("bbqsauce", "BBQ sauce", "Hand wipes not included."), /datum/reagent/consumable/peanut_butter = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. @@ -193,7 +192,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 @@ -203,7 +202,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 @@ -211,21 +210,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() @@ -239,7 +238,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!"), "astrotame" = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories.")) + 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."), + /datum/reagent/consumable/mustard = list("condi_mustard", "Mustard", "A spice mixed with enzymes and water."), + /datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included.")) /obj/item/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. return @@ -282,13 +291,13 @@ /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) //Mustard /obj/item/reagent_containers/food/condiment/pack/mustard name = "mustard pack" originalname = "mustard" - list_reagents = list("mustard" = 10) + list_reagents = list(/datum/reagent/consumable/mustard = 10) //Hot sauce /obj/item/reagent_containers/food/condiment/pack/hotsauce @@ -299,9 +308,9 @@ /obj/item/reagent_containers/food/condiment/pack/astrotame name = "astrotame pack" originalname = "astrotame" - list_reagents = list("astrotame" = 5) + list_reagents = list(/datum/reagent/consumable/astrotame = 5) /obj/item/reagent_containers/food/condiment/pack/bbqsauce name = "bbq sauce pack" originalname = "bbq sauce" - list_reagents = list("bbqsauce" = 10) + list_reagents = list(/datum/reagent/consumable/bbqsauce = 10) diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 59a9141ca8..28fb2edf61 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(/datum/reagent/consumable/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 @@ -63,7 +63,7 @@ icon_state = "crabmeatraw" cooked_type = /obj/item/reagent_containers/food/snacks/meat/crab bitesize = 3 - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cooking_oil = 3) filling_color = "#EAD079" tastes = list("raw crab" = 1) foodtype = RAW | MEAT @@ -73,7 +73,7 @@ desc = "Some deliciously cooked crab meat." icon_state = "crabmeat" list_reagents = list(/datum/reagent/consumable/nutriment = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, "cooking_oil" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 2) filling_color = "#DFB73A" tastes = list("crab" = 1) foodtype = MEAT @@ -225,7 +225,7 @@ name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" - list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/medicine/morphine = 5, /datum/reagent/consumable/nutriment/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 @@ -258,7 +258,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(/datum/reagent/consumable/nutriment = 3, /datum/reagent/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 @@ -271,7 +271,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(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/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 @@ -281,7 +281,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gorilla name = "gorilla meat" desc = "Much meatier than monkey meat." - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/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" @@ -289,7 +289,7 @@ icon_state = "bacon" cooked_type = /obj/item/reagent_containers/food/snacks/meat/bacon bitesize = 2 - list_reagents = list(/datum/reagent/consumable/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 @@ -299,7 +299,7 @@ desc = "A delicious piece of bacon." icon_state = "baconcooked" list_reagents = list(/datum/reagent/consumable/nutriment = 2) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, "cooking_oil" = 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 | BREAKFAST @@ -307,7 +307,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(/datum/reagent/consumable/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 diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index 4f72405c8a..b18dfc7968 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -149,7 +149,7 @@ icon_state = "mimanabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/mimana bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, "mutetoxin" = 5, "nothing" = 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 @@ -158,7 +158,7 @@ desc = "A slice of silence!" icon_state = "mimanabreadslice" filling_color = "#C0C0C0" - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "mutetoxin" = 1, "nothing" = 1, /datum/reagent/consumable/nutriment/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 diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 073162da96..35b17e67f0 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -81,8 +81,8 @@ name = "roburger" desc = "The lettuce is the only organic component. Beep." icon_state = "roburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, "nanomachines" = 2, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "nanomachines" = 5, /datum/reagent/consumable/nutriment/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(/datum/reagent/consumable/nutriment = 5, "nanomachines" = 70, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "nanomachines" = 70, /datum/reagent/consumable/nutriment/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 @@ -122,7 +122,7 @@ name = "mime burger" desc = "Its taste defies language." icon_state = "mimeburger" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/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 @@ -188,7 +188,7 @@ desc = "Perfect for hiding the fact it's burnt to a crisp." icon_state = "cburger" color = "#DA0000FF" - bonus_reagents = list("redcrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -196,7 +196,7 @@ desc = "Contains 0% juice." icon_state = "cburger" color = "#FF9300FF" - bonus_reagents = list("orangecrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -204,7 +204,7 @@ desc = "Bright to the last bite." icon_state = "cburger" color = "#FFF200FF" - bonus_reagents = list("yellowcrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -212,7 +212,7 @@ desc = "It's not tainted meat, it's painted meat!" icon_state = "cburger" color = "#A8E61DFF" - bonus_reagents = list("greencrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -220,7 +220,7 @@ desc = "Is this blue rare?" icon_state = "cburger" color = "#00B7EFFF" - bonus_reagents = list("bluecrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -228,7 +228,7 @@ desc = "Regal and low class at the same time." icon_state = "cburger" color = "#DA00FFFF" - bonus_reagents = list("purplecrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -236,7 +236,7 @@ desc = "This is overcooked." icon_state = "cburger" color = "#1C1C1C" - bonus_reagents = list("blackcrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -244,7 +244,7 @@ desc = "Delicous Titanium!" icon_state = "cburger" color = "#FFFFFF" - bonus_reagents = list("whitecrayonpowder" = 10, /datum/reagent/consumable/nutriment/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 @@ -277,8 +277,8 @@ foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/burger/jelly/cherry - bonus_reagents = list("cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "cherryjelly" = 5, /datum/reagent/consumable/nutriment/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 @@ -298,7 +298,7 @@ desc = "HOT! HOT!" icon_state = "fivealarmburger" 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, "condensedcapsaicin" = 5, /datum/reagent/consumable/nutriment/vitamin = 1) + 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 @@ -335,7 +335,7 @@ name = "mcrib" desc = "An elusive rib shaped burger with limited availablity across the galaxy. Not as good as you remember it." icon_state = "mcrib" - bonus_reagents = list("bbqsauce" = 5, /datum/reagent/consumable/nutriment/vitamin = 3) + bonus_reagents = list(/datum/reagent/consumable/bbqsauce = 5, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 2, "pork patty" = 4) foodtype = GRAIN | MEAT @@ -344,7 +344,7 @@ desc = "A cheap and greasy imitation of an eggs benedict." icon_state = "mcguffin" tastes = list("muffin" = 2, "bacon" = 3) - bonus_reagents = list("eggyolk" = 3, /datum/reagent/consumable/nutriment = 1) + bonus_reagents = list(/datum/reagent/consumable/eggyolk = 3, /datum/reagent/consumable/nutriment = 1) foodtype = GRAIN | MEAT | BREAKFAST /obj/item/reagent_containers/food/snacks/burger/chicken @@ -352,7 +352,7 @@ desc = "A delicious chicken sandwich, it is said the proceeds from this treat helps criminalize homosexuality on the space frontier." icon_state = "chickenburger" tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1) - bonus_reagents = list("mayonnaise" = 3, "cooking_oil" = 2, /datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/mayonnaise = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/nutriment = 2) foodtype = GRAIN | MEAT | FRIED /obj/item/reagent_containers/food/snacks/burger/cheese diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 0ecc5e07a7..bb37ec9b5d 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -40,8 +40,8 @@ icon_state = "carrotcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/carrot slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, "oculine" = 5, /datum/reagent/consumable/nutriment/vitamin = 10) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, "oculine" = 10, /datum/reagent/consumable/nutriment/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(/datum/reagent/consumable/nutriment = 4, "oculine" = 2, /datum/reagent/consumable/nutriment/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 @@ -171,8 +171,8 @@ icon_state = "birthdaycake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday slices_num = 5 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 7, "sprinkles" = 10, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 20, "sprinkles" = 10, /datum/reagent/consumable/nutriment/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 @@ -181,7 +181,7 @@ desc = "A slice of your birthday." icon_state = "birthdaycakeslice" filling_color = "#DC143C" - list_reagents = list(/datum/reagent/consumable/nutriment = 4, "sprinkles" = 2, /datum/reagent/consumable/nutriment/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 @@ -282,7 +282,7 @@ desc = "A cake made for angels and chaplains alike! Contains holy water." icon_state = "holy_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, "holy_water" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/water/holywater = 10) tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -351,7 +351,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A funny cake with a clown face on it." icon_state = "clowncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice - bonus_reagents = list(/datum/reagent/consumable/sugar = 15, "laugher" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/laughter = 15) tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -368,7 +368,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A peach filled cake." icon_state = "peachcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/peach_slice - bonus_reagents = list(/datum/reagent/consumable/sugar = 5, "peachjuice" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/peachjuice = 15) tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -385,7 +385,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A spaceman's trumpet frosted cake." icon_state = "trumpetcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/trumpet - bonus_reagents = list("polypyr" = 15, "cream" = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 15, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5) filling_color = "#7A3D80" tastes = list("cake" = 4, "violets" = 2, "jam" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index ab52c78e0f..183e64ff7e 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -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 diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index d68e88c116..96f173f58c 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -3,8 +3,8 @@ desc = "Portable Ice-cream in its own packaging." icon = 'icons/obj/food/food.dmi' icon_state = "icecreamsandwich" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "ice" = 2) - list_reagents = list(/datum/reagent/consumable/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 @@ -56,7 +56,7 @@ desc = "Cherries mixed with ice-cream, known for its filling tastes" icon_state = "cherryshake" bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, "cherryshake" = 15) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cherryshake = 15) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -67,7 +67,7 @@ desc = "Cherries mixed with ice-cream, known for its filling tastes. This one is a exotic blue!" icon_state = "bluecherryshake" bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, "bluecherryshake" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bluecherryshake = 10) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "blue cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -77,7 +77,7 @@ desc = "The best icecream in space." icon_state = "spacefreezy" bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "bluecherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + 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 @@ -101,7 +101,7 @@ name = "lime snowcone" desc = "Lime syrup drizzled over a snowball in a paper cup." icon_state = "lime_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "limejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5) tastes = list("ice" = 1, "water" = 1, "limes" = 5) foodtype = FRUIT @@ -109,7 +109,7 @@ name = "lemon snowcone" desc = "Lemon syrup drizzled over a snowball in a paper cup." icon_state = "lemon_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "lemonjuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5) tastes = list("ice" = 1, "water" = 1, "lemons" = 5) foodtype = FRUIT @@ -117,7 +117,7 @@ name = "apple snowcone" desc = "Apple syrup drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "applejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/applejuice = 5) tastes = list("ice" = 1, "water" = 1, "apples" = 5) foodtype = FRUIT @@ -125,7 +125,7 @@ name = "grape snowcone" desc = "Grape syrup drizzled over a snowball in a paper cup." icon_state = "grape_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "grapejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/grapejuice = 5) tastes = list("ice" = 1, "water" = 1, "grape" = 5) foodtype = FRUIT @@ -133,7 +133,7 @@ name = "orange snowcone" desc = "Orange syrup drizzled over a snowball in a paper cup." icon_state = "orange_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "orangejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/orangejuice = 5) tastes = list("ice" = 1, "water" = 1, "orange" = 5) foodtype = FRUIT @@ -141,7 +141,7 @@ name = "bluecherry snowcone" desc = "Bluecherry syrup drizzled over a snowball in a paper cup, how rare!" icon_state = "blue_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "bluecherryjelly" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/bluecherryjelly = 5) tastes = list("ice" = 1, "water" = 1, "blue" = 5, "cherries" = 5) foodtype = FRUIT @@ -149,7 +149,7 @@ name = "cherry snowcone" desc = "Cherry syrup drizzled over a snowball in a paper cup." icon_state = "red_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "cherryjelly" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 5) tastes = list("ice" = 1, "water" = 1, "red" = 5, "cherries" = 5) foodtype = FRUIT @@ -165,7 +165,7 @@ name = "peach snowcone" desc = "A peach snowball in a paper cup." icon_state = "peach_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "peachjuice" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/peachjuice = 10) tastes = list("ice" = 1, "water" = 1, " peach" = 5) foodtype = FRUIT @@ -189,7 +189,7 @@ name = "fruit salad snowcone" desc = "A delightful mix of citrus syrups drizzled over a snowball in a paper cup." icon_state = "fruitsalad_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "lemonjuice" = 5, "limejuice" = 5, "orangejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5, /datum/reagent/consumable/limejuice = 5, /datum/reagent/consumable/orangejuice = 5) tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5) foodtype = FRUIT @@ -205,47 +205,47 @@ name = "mime snowcone" desc = "..." icon_state = "mime_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "nothing" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nothing = 5) tastes = list("ice" = 1, "water" = 1, "nothing" = 5) /obj/item/reagent_containers/food/snacks/snowcones/clown name = "clown snowcone" desc = "Laughter drizzled over a snowball in a paper cup." icon_state = "clown_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "laughter" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/laughter = 5) tastes = list("ice" = 1, "water" = 1, "jokes" = 5, "brainfreeze" = 5, "joy" = 5) /obj/item/reagent_containers/food/snacks/snowcones/soda name = "space cola snowcone" desc = "Space Cola drizzled over a snowball in a paper cup." icon_state = "soda_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "space_cola" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/space_cola = 5) tastes = list("ice" = 1, "water" = 1, "cola" = 5) /obj/item/reagent_containers/food/snacks/snowcones/spacemountainwind name = "Space Mountain Wind snowcone" desc = "Space Mountain Wind drizzled over a snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "spacemountainwind" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/spacemountainwind = 5) tastes = list("ice" = 1, "water" = 1, "mountain wind" = 5) /obj/item/reagent_containers/food/snacks/snowcones/pwrgame name = "pwrgame snowcone" desc = "Pwrgame soda drizzled over a snowball in a paper cup." icon_state = "pwrgame_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "pwr_game" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/pwr_game = 5) tastes = list("ice" = 1, "water" = 1, "valid" = 5, "salt" = 5, "wats" = 5) /obj/item/reagent_containers/food/snacks/snowcones/honey name = "honey snowcone" desc = "Honey drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "honey" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/honey = 5) tastes = list("ice" = 1, "water" = 1, "flowers" = 5, "sweetness" = 5, "wax" = 1) /obj/item/reagent_containers/food/snacks/snowcones/rainbow name = "rainbow snowcone" desc = "A very colorful snowball in a paper cup." icon_state = "rainbow_sc" - list_reagents = list(/datum/reagent/consumable/nutriment = 5, "laughter" = 25) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/laughter = 25) tastes = list("ice" = 1, "water" = 1, "sunlight" = 5, "light" = 5, "slime" = 5, "paint" = 3, "clouds" = 3) \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index a32180798d..5103418e6b 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -19,7 +19,7 @@ name = "carp fillet" desc = "A fillet of spess carp meat." icon_state = "fishfillet" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, "carpotoxin" = 2, /datum/reagent/consumable/nutriment/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) @@ -128,7 +128,7 @@ icon_state = "bearsteak" trash = /obj/item/trash/plate 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, "manlydorf" = 5) + 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 @@ -328,7 +328,7 @@ icon_state = "dorndog" trash = /obj/item/trash/plate/alt tastes = list("hotdog" = 2, "mustard and ketchup" = 1, "fryed bread" = 1) - bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2, "mustard" = 5, "ketchup" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/mustard = 5, /datum/reagent/consumable/ketchup = 5) /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" @@ -356,7 +356,7 @@ desc = "BBQ ribs, slathered in a healthy coating of BBQ sauce. The least vegan thing to ever exist." icon_state = "ribs" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2, "bbqsauce" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bbqsauce = 5) bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 3, "smokey sauce" = 1) foodtype = MEAT \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index da4d329239..b269ab16a3 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -28,7 +28,7 @@ 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" @@ -129,7 +129,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 dunkable = TRUE @@ -139,7 +139,7 @@ desc = "Tasty fries from fresh Carrots." icon_state = "carrotfries" trash = /obj/item/trash/plate - list_reagents = list(/datum/reagent/consumable/nutriment = 3, "oculine" = 3, /datum/reagent/consumable/nutriment/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 @@ -161,7 +161,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 @@ -380,7 +380,7 @@ desc = "Who knew vodka was a fruit?" icon_state = "melonkeg" bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 9, "vodka" = 15, /datum/reagent/consumable/nutriment/vitamin = 4) + 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 @@ -391,8 +391,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(/datum/reagent/consumable/nutriment = 2, "honey" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/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 @@ -401,8 +401,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(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1, "tricordrazine" = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/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 @@ -411,7 +411,7 @@ 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(/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, "cherryjelly" = 5) + 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 @@ -468,7 +468,7 @@ desc = "A colorful, sugary gumball." icon = 'icons/obj/lollipop.dmi' icon_state = "gumball" - list_reagents = list(/datum/reagent/consumable/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 @@ -549,7 +549,7 @@ name = "chocolate" desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!" icon_state = "tiny_chocolate" - list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, "aphro" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/drug/aphrodisiac = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -567,7 +567,7 @@ name = "Canned Peaches" desc = "Just a nice can of ripe peaches swimming in their own juices." icon_state = "peachcan" - list_reagents = list("peachjuice" = 20, /datum/reagent/consumable/sugar = 8, /datum/reagent/consumable/nutriment = 2) + 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) @@ -605,7 +605,7 @@ icon_state = "boritos" trash = /obj/item/trash/boritos bitesize = 2 - list_reagents = list(/datum/reagent/consumable/nutriment = 3, "cooking_oil" = 2, /datum/reagent/consumable/sodiumchloride = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/sodiumchloride = 3) filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 3e27d5fcb4..be406f6399 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -9,7 +9,7 @@ icon_state = "donut" bitesize = 5 bonus_reagents = list(/datum/reagent/consumable/sugar = 1) - list_reagents = list(/datum/reagent/consumable/nutriment = 3, "sprinkles" = 1, /datum/reagent/consumable/sugar = 2) + 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 | BREAKFAST @@ -68,8 +68,8 @@ name = "Meat Donut" desc = "Tastes as gross as it looks." icon_state = "donut_meat" - bonus_reagents = list("ketchup" = 1) - list_reagents = list(/datum/reagent/consumable/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 | BREAKFAST @@ -77,7 +77,7 @@ name = "pink donut" desc = "Goes great with a soy latte." icon_state = "donut_pink" - bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, "sprinkles" = 1) //Extra sprinkles to reward frosting + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" decorated_icon = "donut_homer" @@ -85,7 +85,7 @@ name = "spaceman's donut" desc = "Goes great with a cold beaker of malk." icon_state = "donut_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -94,7 +94,7 @@ name = "apple donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "donut_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -103,7 +103,7 @@ name = "caramel donut" desc = "Goes great with a mug of hot coco." icon_state = "donut_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -112,7 +112,7 @@ name = "chocolate donut" desc = "Goes great with a glass of warm milk." icon_state = "donut_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1) //the coco reagent is just bitter. + bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1) //the coco reagent is just bitter. tastes = list("donut" = 4, "bitterness" = 1) decorated_icon = "donut_choc_sprinkles" filling_color = "#4F230D" @@ -121,7 +121,7 @@ name = "blumpkin donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "donut_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -130,7 +130,7 @@ name = "bungo donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "donut_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -139,7 +139,7 @@ name = "matcha donut" desc = "Goes great with a cup of tea." icon_state = "donut_olive" - bonus_reagents = list("teapowder = 3", "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -167,7 +167,7 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. filling_color = "#E57d9A" decorated_icon = "jelly_homer" @@ -175,7 +175,7 @@ name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -184,7 +184,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -193,7 +193,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -202,7 +202,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. + bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -211,7 +211,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -220,7 +220,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -229,7 +229,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -249,14 +249,14 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -265,7 +265,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -274,7 +274,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -283,7 +283,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. + bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -292,7 +292,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -301,7 +301,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -310,7 +310,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -405,7 +405,7 @@ trash = /obj/item/trash/waffles bitesize = 4 bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, "mushroomhallucinogen" = 2, /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 | SUGAR | BREAKFAST @@ -447,7 +447,7 @@ name = "\improper Dank-pocket" desc = "The food of choice for the seasoned botanist." icon_state = "dankpocket" - list_reagents = list("lipolicide" = 3, /datum/reagent/drug/space_drugs = 3, /datum/reagent/consumable/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 @@ -509,7 +509,7 @@ icon_state = "hotdog" bitesize = 3 bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "ketchup" = 3, /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 @@ -610,8 +610,8 @@ name = "honey bun" desc = "A sticky pastry bun glazed with honey." icon_state = "honeybun" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "honey" = 1) - list_reagents = list(/datum/reagent/consumable/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 | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 3cc30ba9b7..357a921c66 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -61,7 +61,7 @@ qdel(src) /obj/item/reagent_containers/food/snacks/pie/cream/nostun - list_reagents = list("laughter" = 15) + list_reagents = list(/datum/reagent/consumable/laughter = 15) stunning = FALSE /obj/item/reagent_containers/food/snacks/pie/cream/body @@ -128,7 +128,7 @@ icon_state = "amanita_pie" bitesize = 4 bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "amatoxin" = 3, "mushroomhallucinogen" = 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 @@ -223,7 +223,7 @@ name = "mime tart" desc = "..." icon_state = "mimetart" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4, "nothing" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/nothing = 10) list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "nothing" = 1) foodtype = GRAIN @@ -329,6 +329,6 @@ name = "peach pie" desc = "A pie with peach filling." icon_state = "strawberrypie" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, "peachjuice" = 15) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/peachjuice = 15) tastes = list("peach" = 1, "pie" = 1) foodtype = GRAIN | FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index ebb6393e0b..ebc67a28c1 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -6,7 +6,7 @@ w_class = WEIGHT_CLASS_NORMAL slices_num = 6 volume = 80 - list_reagents = list(/datum/reagent/consumable/nutriment = 30, "tomatojuice" = 6, /datum/reagent/consumable/nutriment/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 @@ -42,7 +42,7 @@ icon_state = "meatpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/meat bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 8) - list_reagents = list(/datum/reagent/consumable/nutriment = 30, "tomatojuice" = 6, /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 @@ -78,7 +78,7 @@ icon_state = "vegetablepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/vegetable bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, "tomatojuice" = 6, "oculine" = 12, /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 @@ -96,7 +96,7 @@ icon_state = "donkpocketpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, "tomatojuice" = 6, /datum/reagent/medicine/omnizine = 10, /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 @@ -114,7 +114,7 @@ icon_state = "dankpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/dank bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) - list_reagents = list(/datum/reagent/consumable/nutriment = 25, "doctorsdelight" = 5, "tomatojuice" = 6, /datum/reagent/consumable/nutriment/vitamin = 5) + 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 diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index 59c4022507..e272733235 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -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, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 8, "doctorsdelight" = 5, /datum/reagent/consumable/nutriment/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 diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 276c085b54..3cc4cfe63f 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -48,8 +48,8 @@ foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/jellysandwich/cherry - bonus_reagents = list("cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "cherryjelly" = 5, /datum/reagent/consumable/nutriment/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/jellysandwich/pbj @@ -59,13 +59,13 @@ tastes = list("bread" = 1, "jelly" = 1, "peanuts" = 1) /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/cherry - bonus_reagents = list("cherryjelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "cherryjelly" = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime - bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/peanutbutter_sandwich @@ -75,8 +75,8 @@ icon_state = "peanutbuttersandwich" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list("peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 2, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/notasandwich @@ -101,8 +101,8 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jelliedtoast/cherry - bonus_reagents = list("cherryjelly" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "cherryjelly" = 5, /datum/reagent/consumable/nutriment/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 @@ -117,8 +117,8 @@ icon_state = "peanutbuttertoast" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list("peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 1, "peanut_butter" = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + bonus_reagents = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("toast" = 1, "peanuts" = 1) 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 8049a5813f..a0e1ebcb39 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -62,7 +62,7 @@ icon_state = "wingfangchu" trash = /obj/item/reagent_containers/glass/bowl bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "soysauce" = 5, /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(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 8, "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, "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 @@ -111,8 +111,8 @@ name = "hot chili" desc = "A five alarm Texan Chili!" icon_state = "hotchili" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/capsaicin = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/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 @@ -120,8 +120,8 @@ name = "cold chili" desc = "This slush is barely a liquid!" icon_state = "coldchili" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/vitamin = 2) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/frostoil = 1, "tomatojuice" = 2, /datum/reagent/consumable/nutriment/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 @@ -138,8 +138,8 @@ name = "tomato soup" desc = "Drinking this feels like being a vampire! A tomato vampire..." icon_state = "tomatosoup" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/vitamin = 3) - list_reagents = list(/datum/reagent/consumable/nutriment = 5, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/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 @@ -147,7 +147,7 @@ name = "eyeball soup" desc = "It looks back at you..." icon_state = "eyeballsoup" - bonus_reagents = list(/datum/reagent/consumable/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 @@ -187,7 +187,7 @@ icon_state = "spacylibertyduff" bitesize = 3 bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "mushroomhallucinogen" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES @@ -197,7 +197,7 @@ icon_state = "amanitajelly" bitesize = 3 bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "mushroomhallucinogen" = 3, "amatoxin" = 6) + 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 @@ -205,8 +205,8 @@ name = "stew" desc = "A nice and warm stew. Healthy and strong." icon_state = "stew" - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 5, /datum/reagent/consumable/nutriment/vitamin = 5) - list_reagents = list(/datum/reagent/consumable/nutriment = 10, "oculine" = 5, "tomatojuice" = 5, /datum/reagent/consumable/nutriment/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) @@ -232,8 +232,8 @@ name = "electron soup" desc = "A gastronomic curiosity of ethereal origin. It is famed for the minature weather system formed over a properly prepared soup." icon_state = "electronsoup" - list_reagents = list(/datum/reagent/consumable/nutriment = 3, "liquidelectricity" = 5) - tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good") + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/liquidelectricity = 5) + tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good" = 1) filling_color = "#CC2B52" foodtype = VEGETABLES | TOXIC diff --git a/code/modules/food_and_drinks/food/snacks_spaghetti.dm b/code/modules/food_and_drinks/food/snacks_spaghetti.dm index 28a48c8730..d54ba6f030 100644 --- a/code/modules/food_and_drinks/food/snacks_spaghetti.dm +++ b/code/modules/food_and_drinks/food/snacks_spaghetti.dm @@ -30,8 +30,8 @@ icon_state = "pastatomato" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 6, "tomatojuice" = 10, /datum/reagent/consumable/nutriment/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) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -44,7 +44,7 @@ trash = /obj/item/trash/plate bitesize = 4 bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) - list_reagents = list(/datum/reagent/consumable/nutriment = 12, "tomatojuice" = 20, /datum/reagent/consumable/nutriment/vitamin = 8) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/tomatojuice = 20, /datum/reagent/consumable/nutriment/vitamin = 8) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -90,7 +90,7 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "beefnoodle" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, "liquidgibs" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/liquidgibs = 3) tastes = list("noodle" = 1, "meat" = 1) foodtype = GRAIN | MEAT diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 6427a5eefc..239dd433b0 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -85,7 +85,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(/datum/reagent/consumable/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 diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 5c54f63a2f..9df650500a 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -2,385 +2,385 @@ /datum/chemical_reaction/goldschlager name = "Goldschlager" - id = "goldschlager" - results = list("goldschlager" = 10) - required_reagents = list("vodka" = 10, /datum/reagent/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, /datum/reagent/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(/datum/reagent/consumable/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) + 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) + 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) + 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) + id = /datum/reagent/consumable/ethanol/beer + 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) + 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, /datum/reagent/consumable/sugar = 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, /datum/reagent/consumable/space_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, /datum/reagent/consumable/space_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, /datum/reagent/toxin/plasma = 2) + id = /datum/reagent/consumable/ethanol/toxins_special + results = list(/datum/reagent/consumable/ethanol/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, /datum/reagent/iron = 1) + id = /datum/reagent/consumable/ethanol/beepsky_smash + 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) + id = /datum/reagent/consumable/doctor_delight + 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) + 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, /datum/reagent/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, /datum/reagent/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, /datum/reagent/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, /datum/reagent/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/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, /datum/reagent/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(/datum/reagent/consumable/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, /datum/reagent/consumable/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(/datum/reagent/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) + 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, /datum/reagent/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, /datum/reagent/consumable/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(/datum/reagent/toxin/acid = 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(/datum/reagent/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, /datum/reagent/medicine/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) //FermiChem vars: Easy to make, but hard to make potent OptimalTempMin = 100 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 950 // Upper end for above @@ -414,415 +414,415 @@ /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(/datum/reagent/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, /datum/reagent/consumable/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(/datum/reagent/consumable/vanilla = 5, /datum/reagent/consumable/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/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) + 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) + 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, /datum/reagent/consumable/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, /datum/reagent/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, /datum/reagent/water = 2, /datum/reagent/consumable/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(/datum/reagent/consumable/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) + 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(/datum/reagent/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_message = '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, /datum/reagent/consumable/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(/datum/reagent/water = 1, "tomatojuice" = 1, /datum/reagent/consumable/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) + 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(/datum/reagent/consumable/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, /datum/reagent/consumable/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) + 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, /datum/reagent/consumable/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, /datum/reagent/consumable/space_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/pwrgame name = "Power Gamer" - id = "pwr_game" - results = list("pwr_game" = 5) - required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, /datum/reagent/consumable/sodiumchloride = 1) + id = /datum/reagent/consumable/pwr_game + results = list(/datum/reagent/consumable/pwr_game = 5) + required_reagents = list(/datum/reagent/consumable/sodawater = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1, /datum/reagent/consumable/sodiumchloride = 1) /datum/chemical_reaction/pinkmilk name = "Strawberry Milk" - id = "pinkmilk" - results = list("pinkmilk" = 5) - required_reagents = list("aphro+" = 1, /datum/reagent/consumable/milk = 1) + id = /datum/reagent/consumable/pinkmilk + results = list(/datum/reagent/consumable/pinkmilk = 5) + required_reagents = list(/datum/reagent/drug/aphrodisiacplus = 1, /datum/reagent/consumable/milk = 1) /datum/chemical_reaction/pinktea name = "Strawberry Tea" - id = "pinktea" - results = list("pinktea" = 5) - required_reagents = list("aphro" = 1, "arnold_palmer" = 1, /datum/reagent/consumable/sugar = 1) + id = /datum/reagent/consumable/pinktea + results = list(/datum/reagent/consumable/pinktea = 5) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 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 = "wizz_fizz" - results = list("wizz_fizz" = 3) - required_reagents = list("triple_sec" = 1, "sodawater" = 1, "champagne" = 1) + 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 = "bug_spray" - results = list("bug_spray" = 5) - required_reagents = list("triple_sec" = 2, "lemon_lime" = 1, "rum" = 2, "vodka" = 1) + 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 = "jack_rose" - results = list("jack_rose" = 4) - required_reagents = list("grenadine" = 1, "applejack" = 2, "limejuice" = 1) + 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 = "turbo" - results = list("turbo" = 5) - required_reagents = list("moonshine" = 2, "nitrous_oxide" = 1, "sugar_rush" = 1, "pwr_game" = 1) + 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 = "old_timer" - results = list("old_timer" = 6) - required_reagents = list("whiskeysoda" = 3, "parsnipjuice" = 2, "alexander" = 1) + 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 = "rubberneck" - results = list("rubberneck" = 10) - required_reagents = list(/datum/reagent/consumable/ethanol = 4, "grey_bull" = 5, "astrotame" = 1) + 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 = "duplex" - results = list("duplex" = 4) - required_reagents = list("hcider" = 2, "applejuice" = 1, /datum/reagent/consumable/berryjuice = 1) + 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 = "trappist" - results = list("trappist" = 5) - required_reagents = list("ale" = 2, "holywater" = 2, /datum/reagent/consumable/sugar = 1) + 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 = "cream_soda" - results = list("cream_soda" = 4) - required_reagents = list(/datum/reagent/consumable/sugar = 2, "sodawater" = 2, /datum/reagent/consumable/vanilla = 1) + 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 = "blazaam" - results = list("blazaam" = 3) - required_reagents = list("gin" = 2, "peachjuice" = 1, "bluespace" = 1) + 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 = "planet_cracker" - results = list("planet_cracker" = 4) - required_reagents = list("champagne" = 2, "lizardwine" = 2, "eggyolk" = 1, /datum/reagent/gold = 1) + 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 = "red_queen" - results = list("red_queen" = 10) - required_reagents = list("tea" = 6, /datum/reagent/mercury = 2, "blackpepper" = 1, "growthserum" = 1) + 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) /datum/chemical_reaction/catnip_tea name = "Catnip Tea" - id = "catnip_tea" - results = list("catnip_tea" = 3) - required_reagents = list("tea" = 5, "catnip" = 2) + id = /datum/reagent/consumable/catnip_tea + results = list(/datum/reagent/consumable/catnip_tea = 3) + required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2) /datum/chemical_reaction/commander_and_chief name = "Commander and Chief" - id = "commander_and_chief" - results = list("commander_and_chief" = 50) - required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10) + id = /datum/reagent/consumable/ethanol/commander_and_chief + results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50) + required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10) mix_message = "When your powers combine, I am Captain Pl-..." diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 746f6fe8fb..4486bfbcba 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -11,7 +11,7 @@ /datum/chemical_reaction/tofu name = "Tofu" id = "tofu" - required_reagents = list("soymilk" = 10) + required_reagents = list(/datum/reagent/consumable/soymilk = 10) required_catalysts = list(/datum/reagent/consumable/enzyme = 5) mob_react = FALSE @@ -24,7 +24,7 @@ /datum/chemical_reaction/chocolate_bar name = "Chocolate Bar" id = "chocolate_bar" - required_reagents = list("soymilk" = 2, "cocoa" = 2, /datum/reagent/consumable/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) @@ -35,8 +35,8 @@ /datum/chemical_reaction/chocolate_bar2 name = "Chocolate Bar" - id = "chocolate_bar" - required_reagents = list("chocolate_milk" = 4, /datum/reagent/consumable/sugar = 2) + id = "chocolate_bar2" + 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,39 +47,39 @@ /datum/chemical_reaction/hot_coco name = "Hot Coco" - id = "hot_coco" - results = list("hot_coco" = 5) - required_reagents = list(/datum/reagent/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, /datum/reagent/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, /datum/reagent/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, /datum/reagent/toxin/acid = 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, /datum/reagent/toxin/acid = 1) + 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/caramel name = "Caramel" - id = "caramel" - results = list("caramel" = 1) + id = /datum/reagent/consumable/caramel + results = list(/datum/reagent/consumable/caramel = 1) required_reagents = list(/datum/reagent/consumable/sugar = 1) required_temp = 413 mob_react = FALSE @@ -88,7 +88,7 @@ name = "Caramel burned" id = "caramel_burned" results = list(/datum/reagent/carbon = 1) - required_reagents = list("caramel" = 1) + required_reagents = list(/datum/reagent/consumable/caramel = 1) required_temp = 483 mob_react = FALSE @@ -106,7 +106,7 @@ /datum/chemical_reaction/synthmeat name = "synthmeat" id = "synthmeat" - required_reagents = list(/datum/reagent/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) @@ -116,15 +116,15 @@ /datum/chemical_reaction/hot_ramen name = "Hot Ramen" - id = "hot_ramen" - results = list("hot_ramen" = 3) - required_reagents = list(/datum/reagent/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(/datum/reagent/consumable/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" @@ -142,7 +142,7 @@ /datum/chemical_reaction/dough name = "Dough" id = "dough" - required_reagents = list(/datum/reagent/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) @@ -153,7 +153,7 @@ /datum/chemical_reaction/cakebatter name = "Cake Batter" id = "cakebatter" - required_reagents = list("eggyolk" = 15, "flour" = 15, /datum/reagent/consumable/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) @@ -163,12 +163,12 @@ /datum/chemical_reaction/cakebatter/vegan id = "vegancakebatter" - required_reagents = list("soymilk" = 15, "flour" = 15, /datum/reagent/consumable/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, /datum/reagent/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." @@ -180,6 +180,6 @@ /datum/chemical_reaction/bbqsauce name = "BBQ Sauce" - id = "bbqsauce" - results = list("bbqsauce" = 5) - required_reagents = list("ash" = 1, "tomatojuice" = 1, "salglu_solution" = 3, "blackpepper" = 1) \ No newline at end of file + id = /datum/reagent/consumable/bbqsauce + results = list(/datum/reagent/consumable/bbqsauce = 5) + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/medicine/salglu_solution = 3, /datum/reagent/consumable/blackpepper = 1) \ No newline at end of file diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 7977a715d8..f0fe936d05 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -108,7 +108,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/bungo name = "Bungo Donut" reqs = list( - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /datum/reagent/consumable/bungojuice = 3, /obj/item/reagent_containers/food/snacks/donut/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/bungo @@ -175,7 +175,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/jelly/bungo name = "Bungo Jelly Donut" reqs = list( - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /datum/reagent/consumable/bungojuice = 3, /obj/item/reagent_containers/food/snacks/donut/jelly/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/jelly/bungo @@ -242,7 +242,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/slimejelly/bungo name = "Bungo Slime Donut" reqs = list( - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /datum/reagent/consumable/bungojuice = 3, /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/bungo diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index f7294ff87a..bd4c26e0f2 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -411,7 +411,6 @@ /datum/reagent/mutationtoxin/pumpkinhead name = "Pumpkin head mutation toxin" - id = "pumpkinmutationtoxin" race = /datum/species/dullahan/pumpkin mutationtext = "The pain subsides. You feel your head roll off your shoulders... and you smell pumpkin." //I couldn't get the replace head sprite with a pumpkin to work so, it is what it is. diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 3c4ed776b7..a058601c39 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/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index 44291fa6ba..e84025208a 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(/datum/reagent/drug/space_drugs = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/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(/datum/reagent/medicine/omnizine = 0.15, "synaptizine" = 0.15, /datum/reagent/drug/space_drugs = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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, /datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/nutriment/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 6e9350aff3..f8e58aee1b 100644 --- a/code/modules/hydroponics/grown/apple.dm +++ b/code/modules/hydroponics/grown/apple.dm @@ -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 diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 6072bae79b..7668d17ac1 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -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!") @@ -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, /datum/reagent/consumable/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, /datum/reagent/consumable/banana = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 @@ -139,7 +139,7 @@ icon_state = "exoticbanana" list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list(/datum/reagent/blood = 20, "liquidgibs" = 5) + grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) var/awakening = 0 /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm index 006f4a3f4d..3e5fee411f 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(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 db885e373c..0646ae1a8c 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -28,7 +28,7 @@ foodtype = FRUIT 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(/datum/reagent/toxin/cyanide = 0.15, "tirizene" = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/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 @@ -220,7 +220,7 @@ foodtype = FRUIT 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 @@ -240,7 +240,7 @@ icon_state = "greengrapes" filling_color = "#7FFF00" tastes = list("green grape" = 1) - distill_reagent = "cognac" + distill_reagent = /datum/reagent/consumable/ethanol/cognac // Strawberry /obj/item/seeds/strawberry diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index c64061698d..c5a7e0797a 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -24,7 +24,7 @@ foodtype = GRAIN 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 @@ -47,7 +47,7 @@ foodtype = GRAIN 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 @@ -71,7 +71,7 @@ foodtype = GRAIN 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 diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 8c2ed3da23..851753da46 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -79,7 +79,7 @@ icon_state = "orange" filling_color = "#FFA500" juice_results = list(/datum/reagent/consumable/orangejuice = 0) - distill_reagent = "triple_sec" + distill_reagent = /datum/reagent/consumable/ethanol/triple_sec //3D Orange @@ -107,7 +107,7 @@ icon_state = "orang" filling_color = "#FFA500" juice_results = list(/datum/reagent/consumable/orangejuice = 0) - distill_reagent = "triple_sec" + 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) diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 1e96df5657..9ac705aa83 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -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 @@ -49,7 +49,7 @@ 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. /obj/item/seeds/cocoapod/bungotree name = "pack of bungo tree seeds" @@ -79,6 +79,7 @@ trash = /obj/item/reagent_containers/food/snacks/grown/bungopit filling_color = "#E8C22F" foodtype = FRUIT + juice_results = list(/datum/reagent/consumable/bungojuice = 0) tastes = list("bungo" = 2, "tropical fruitiness" = 1) distill_reagent = null diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index 7ee0ec8dad..6c852c426d 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -27,7 +27,7 @@ foodtype = VEGETABLES 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 3184dac5af..f893ad9e57 100644 --- a/code/modules/hydroponics/grown/eggplant.dm +++ b/code/modules/hydroponics/grown/eggplant.dm @@ -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 9d4f9be4e6..1f2baa59e6 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -27,7 +27,7 @@ bitesize_mod = 3 tastes = list("sesame seeds" = 1) foodtype = VEGETABLES | GROSS - distill_reagent = "vermouth" + distill_reagent = /datum/reagent/consumable/ethanol/vermouth // Lily /obj/item/seeds/poppy/lily @@ -130,7 +130,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 @@ -195,7 +195,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. tastes = list("glowbugs" = 1) // Novaflower diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 1a9247dc39..3b6833d2c1 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -153,7 +153,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 diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 77057688ae..7e43911c5c 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -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 diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index 89f1dbdf2b..fad916030d 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -27,7 +27,7 @@ bitesize = 100 foodtype = VEGETABLES juice_results = list(/datum/reagent/consumable/potato_juice = 0) - distill_reagent = "vodka" + distill_reagent = /datum/reagent/consumable/ethanol/vodka /obj/item/reagent_containers/food/snacks/grown/potato/wedges name = "potato wedges" @@ -64,4 +64,4 @@ 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/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index 359d216271..44e11c372d 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -90,7 +90,7 @@ bitesize_mod = 2 dry_grind = TRUE grind_results = list(/datum/reagent/toxin/coffeepowder = 0) - distill_reagent = "kahlua" + distill_reagent = /datum/reagent/consumable/ethanol/kahlua // Coffee Robusta /obj/item/seeds/coffee/robusta diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index aa4da49562..1e2d25d825 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -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 diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index dde657e10d..53c3389695 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -25,7 +25,7 @@ foodtype = FRUIT grind_results = list(/datum/reagent/consumable/ketchup = 0) juice_results = list(/datum/reagent/consumable/tomatojuice = 0) - distill_reagent = "enzyme" + distill_reagent = /datum/reagent/consumable/enzyme // Blood Tomato /obj/item/seeds/tomato/blood @@ -48,7 +48,7 @@ filling_color = "#FF0000" foodtype = FRUIT | GROSS grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) - distill_reagent = "bloodymary" + distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary // Blue Tomato /obj/item/seeds/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 @@ -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 1ea0068a1a..9655b13862 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!") @@ -164,17 +164,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" @@ -187,9 +187,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) \ No newline at end of file + list_reagents = list(/datum/reagent/toxin/pestkiller = 50) \ No newline at end of file diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 65230d1f21..99fd873995 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -129,7 +129,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) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 027a03650a..0fc9f58db8 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -424,7 +424,7 @@ if(1) var/cont[0] for(var/datum/reagent/RE in reagents.reagent_list) - cont += RE.id + cont += RE.type set_pin_data(IC_OUTPUT, 3, cont) push_data() if(2) @@ -492,11 +492,11 @@ for(var/datum/reagent/G in source.reagents.reagent_list) if(!direction_mode) - if(G.id in demand) - source.reagents.trans_id_to(target, G.id, transfer_amount) + if(G.type in demand) + source.reagents.trans_id_to(target, G.type, transfer_amount) else - if(!(G.id in demand)) - source.reagents.trans_id_to(target, G.id, transfer_amount) + if(!(G.type in demand)) + source.reagents.trans_id_to(target, G.type, transfer_amount) activate_pin(2) push_data() diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 0a1bfc7d84..4067bf0928 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -569,7 +569,6 @@ /datum/reagent/flightpotion name = "Flight Potion" - id = "flightpotion" description = "Strange mutagenic compound of unknown origins." reagent_state = LIQUID color = "#FFEBEB" diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 89c438f419..ade8158e02 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -175,7 +175,7 @@ return /mob/living/carbon/get_blood_data(blood_id) - if(blood_id == "blood" || blood_id == "jellyblood") //actual blood reagent + if(blood_id == /datum/reagent/blood || /datum/reagent/blood/jellyblood) //actual blood reagent var/blood_data = list() //set the blood data blood_data["donor"] = src @@ -191,7 +191,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 @@ -226,21 +226,21 @@ /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_NOCLONE))) - return "blood" + return /datum/reagent/blood /mob/living/carbon/get_blood_id() if(isjellyperson(src)) - return "jellyblood" + return /datum/reagent/blood/jellyblood if(dna?.species?.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (HAS_TRAIT(src, TRAIT_NOCLONE))) return else - 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) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index fc87752bdf..0ec8cd5f87 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1267,7 +1267,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) 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.type) 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 1f681cda9f..c247d14589 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -623,7 +623,7 @@ H.adjustFireLoss(4) H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) - if(chem.id == /datum/reagent/fuel/unholywater) + if(chem.type == /datum/reagent/fuel/unholywater) H.adjustBruteLoss(-4) H.adjustFireLoss(-4) H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) 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 5f91e3ae66..b63cd59173 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -12,7 +12,7 @@ inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless) - exotic_blood = "jellyblood" + exotic_blood = /datum/reagent/blood/jellyblood exotic_bloodtype = "GEL" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index d0497bf6ce..bb1f1284b5 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -205,7 +205,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" 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 68b5c123d7..34903a477b 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/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9141a6d299..04fffaf431 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -210,7 +210,7 @@ if(reagents && reagents.reagent_list) reagent_note = " REAGENTS:" for(var/datum/reagent/R in reagents.reagent_list) - reagent_note += R.id + " (" + reagent_note += R.type + " (" reagent_note += num2text(R.volume) + ") " if(ismob(firer)) diff --git a/code/modules/reagents/chem_wiki_render.dm b/code/modules/reagents/chem_wiki_render.dm index 15a62825e7..e24da70d47 100644 --- a/code/modules/reagents/chem_wiki_render.dm +++ b/code/modules/reagents/chem_wiki_render.dm @@ -1,18 +1,11 @@ //Generates a markdown txt file for use with the wiki /proc/find_reagent(input) - . = FALSE - if(GLOB.chemical_reagents_list[input]) //prefer IDs! - var/datum/reagent/R = GLOB.chemical_reagents_list[input] - return R - else - for(var/X in GLOB.chemical_reagents_list) - var/datum/reagent/R = GLOB.chemical_reagents_list[X] - if(input == replacetext(lowertext(R.name), " ", "")) - return R - if(input == replacetext(lowertext(R.id), " ", "")) - return R - + //prefer types! + . = GLOB.chemical_reagents_list[text2path(input)] + if(.) + return + . = GLOB.name2reagent[ckey(input)] @@ -24,7 +17,7 @@ var/prefix = "|Name | Reagents | Reaction vars | Description | Chem properties |\n|---|---|---|-----------|---|\n" - var/input_reagent = replacetext(lowertext(input("Input the name/id of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name + var/input_reagent = replacetext(lowertext(input("Input the name/type of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent type is a lowercase, no spaces / underscored version of the name if(input_reagent) var/input_reagent2 = find_reagent(input_reagent) if(!input_reagent2) @@ -68,98 +61,23 @@ var/impure = "" //Chem_dispencer - 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" - ) - var/list/components = list( - "oil", - "ammonia", - "ash", - "acetone", - "phenol", - "diethylamine", - "saltpetre", - "sodiumchloride", - "lye" - ) + var/obj/machinery/chem_dispenser/C + var/list/dispensable_reagents = initial(C.dispensable_reagents) + var/list/components = initial(C.upgrade_reagents) + initial(C.upgrade_reagents2) + initial(C.upgrade_reagents3) var/list/grind = list( - "bluespace", - "gold", - "plasma", - "uranium" + /datum/reagent/bluespace, + /datum/reagent/gold, + /datum/reagent/toxin/plasma, + /datum/reagent/uranium ) //Bartender - var/dispence_drinks = 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" - ) - var/dispence_alco = list( - "beer", - "kahlua", - "whiskey", - "wine", - "vodka", - "gin", - "rum", - "tequila", - "vermouth", - "cognac", - "ale", - "absinthe", - "hcider", - "creme_de_menthe", - "creme_de_cacao", - "triple_sec", - "sake", - "applejack" - ) + var/obj/machinery/chem_dispenser/drinks/D + var/dispence_drinks = initial(D.dispensable_reagents) + + var/obj/machinery/chem_dispenser/drinks/beer/B + var/dispence_alco = initial(B.dispensable_reagents) var/breakout = FALSE for(var/i = 1, i <= 2, i+=1) @@ -169,31 +87,31 @@ continue for(var/Y in dispensable_reagents) //Why do you have to do this - if(R.id == Y) + if(R.type == Y) basic += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in components) - if(R.id == Y) + if(R.type == Y) upgraded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_drinks) - if(R.id == Y) + if(R.type == Y) drinks += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_alco) - if(R.id == Y) + if(R.type == Y) alco += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in grind) - if(R.id == Y) + if(R.type == Y) grinded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue @@ -273,7 +191,7 @@ /proc/generate_chemwiki_line(datum/reagent/R, X, processCR) //name | Reagent pH | reagents | reaction temp | explosion temp | pH range | Kinetics | description | OD level | Addiction level | Metabolism rate | impure chem | inverse chem - var/datum/chemical_reaction/CR = get_chemical_reaction(R.id) + var/datum/chemical_reaction/CR = get_chemical_reaction(R.type) if((!CR && processCR) || (CR && !processCR)) // Do reactions first. return "" @@ -284,11 +202,11 @@ outstring += "
    " for(var/R2 in CR.required_reagents) R3 = GLOB.chemical_reagents_list[R2]//What a convoluted mess - outstring += "
  • [R3.name]: [CR.required_reagents[R3.id]]u
  • " + outstring += "
  • [R3.name]: [CR.required_reagents[R3.type]]u
  • " if(CR.required_catalysts) for(var/R2 in CR.required_catalysts) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
  • " + outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
  • " outstring += "
| " else outstring += "N/A | " @@ -361,11 +279,11 @@ var/datum/reagent/R3 for(var/R2 in CR.required_reagents) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
  • [R3.name]: [CR.required_reagents[R3.id]]u
  • " + outstring += "
  • [R3.name]: [CR.required_reagents[R3.type]]u
  • " if(CR.required_catalysts) for(var/R2 in CR.required_catalysts) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
  • " + outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
  • " outstring += " |