From 4e2b58f02a9cc3f73ce9e667ab73fa0485c63b63 Mon Sep 17 00:00:00 2001 From: Cody Brittain Date: Fri, 20 Oct 2023 13:55:13 -0400 Subject: [PATCH] Added new drugs from lore and otherwise (#16773) * Initial commit of new drugs Start on caromeg and oracle Further work on caromeg Fix nicotine and caromeg Begin populating map Designer cocaine effects Weaken heroin, Joy now causes genetic damage Added an artificial alternative to morphine, tramarine, that can be used in its place. Nerf new opioids, fix tramaline recipe Added special mentholated adhomian cigarettes, for NKA cigarettes General fixes Fix recipe pathing Add coca leaves, cocaine recipes, and coca drinks Update Chemistry-Reagents-Medicine.dm Null name for abstract drug class Remove abstract_class from reagents (shouldn't be used there) * Oracle sprites by Wezzy * . * Begin resolving issues from code review * Remove all per-player data from drug singletons * Resolve Arrow's code review * Apply suggestions from code review Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com> Update code/modules/hydroponics/seed_datums/smokables.dm Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com> * Removed coca plants from the standard garden and hydroponics vendors (they remain as contraband and in the xenobotany garden) * Fix merge conflict errors caused by snack PR --------- Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com> Co-authored-by: Cody Brittain --- .../changeling/implements/powers/stings.dm | 2 +- code/game/machinery/vending_types.dm | 6 + code/game/objects/items/contraband.dm | 31 +- .../items/devices/lighting/flashlight.dm | 2 +- code/game/objects/items/tajara.dm | 2 +- code/game/objects/items/weapons/chewables.dm | 5 + .../objects/items/weapons/cigs_lighters.dm | 46 ++- code/game/objects/items/weapons/ecigs.dm | 10 + .../objects/items/weapons/storage/fancy.dm | 7 + .../objects/items/weapons/storage/misc.dm | 21 ++ code/modules/cargo/bounties/reagent.dm | 8 +- .../preference_setup/loadout/items/smoking.dm | 7 +- code/modules/cooking/recipes/recipes_baked.dm | 2 +- .../cooking/recipes/recipes_pastries.dm | 2 +- code/modules/events/vent_clog.dm | 14 +- code/modules/hydroponics/grown.dm | 2 +- code/modules/hydroponics/seed.dm | 12 +- .../hydroponics/seed_datums/flowers.dm | 3 +- code/modules/hydroponics/seed_datums/herbs.dm | 23 +- .../hydroponics/seed_datums/mushrooms.dm | 10 +- .../hydroponics/seed_datums/smokables.dm | 45 ++- code/modules/hydroponics/seed_storage.dm | 3 + code/modules/hydroponics/trays/tray.dm | 2 +- code/modules/item_worth/reagents.dm | 14 +- .../living/carbon/human/MedicalSideEffects.dm | 2 +- .../living/simple_animal/hostile/sarlacc.dm | 2 +- code/modules/paperwork/pen.dm | 2 +- .../Chemistry-Reagents-Drugs.dm | 354 ++++++++++++------ .../Chemistry-Reagents-Food-Drinks.dm | 40 ++ .../Chemistry-Reagents-Medicine.dm | 150 +++++++- .../Chemistry-Reagents-Toxins.dm | 27 ++ code/modules/reagents/Chemistry-Recipes.dm | 124 ++++-- .../reagent_containers/food/snacks/baked.dm | 2 +- .../reagent_containers/food/snacks/meat.dm | 4 +- .../food/snacks/pastries.dm | 8 +- .../food/snacks/processed.dm | 2 +- .../reagents/reagent_containers/inhaler.dm | 6 +- .../reagents/reagent_containers/pill.dm | 38 +- .../reagents/reagent_containers/syringes.dm | 2 +- .../artifact/artifact_unknown.dm | 2 +- .../GeneralCamo - Drug Expansion.yml | 52 +++ icons/obj/cigs_lighters.dmi | Bin 33022 -> 33786 bytes icons/obj/smokables.dmi | Bin 10849 -> 12186 bytes 43 files changed, 893 insertions(+), 203 deletions(-) create mode 100644 html/changelogs/GeneralCamo - Drug Expansion.yml diff --git a/code/game/gamemodes/changeling/implements/powers/stings.dm b/code/game/gamemodes/changeling/implements/powers/stings.dm index 8de4e59df84..77df5fb358c 100644 --- a/code/game/gamemodes/changeling/implements/powers/stings.dm +++ b/code/game/gamemodes/changeling/implements/powers/stings.dm @@ -86,7 +86,7 @@ /datum/changeling_sting/hallucinate/do_sting(mob/living/target) ..() if(target.reagents) - addtimer(target.reagents.add_reagent(/singleton/reagent/mindbreaker, 3), rand(5 SECONDS, 15 SECONDS)) + addtimer(target.reagents.add_reagent(/singleton/reagent/drugs/mindbreaker, 3), rand(5 SECONDS, 15 SECONDS)) /mob/proc/changeling_silence_sting() set category = "Changeling" diff --git a/code/game/machinery/vending_types.dm b/code/game/machinery/vending_types.dm index 12ce9d1a5df..fe19a6d1982 100644 --- a/code/game/machinery/vending_types.dm +++ b/code/game/machinery/vending_types.dm @@ -510,11 +510,14 @@ /obj/item/storage/chewables/rollable/unathi = 6, /obj/item/storage/chewables/rollable/fine = 5, /obj/item/storage/chewables/rollable/nico = 3, + /obj/item/storage/chewables/rollable/oracle = 5, + /obj/item/storage/chewables/rollable/vedamor = 3, /obj/item/storage/chewables/tobacco/bad = 6, /obj/item/storage/chewables/tobacco = 8, /obj/item/storage/chewables/tobacco/fine = 5, /obj/item/storage/chewables/tobacco/federation = 2, /obj/item/storage/chewables/tobacco/dyn = 2, + /obj/item/storage/chewables/oracle = 4, /obj/item/storage/box/fancy/chewables/tobacco/nico = 3, /obj/item/storage/cigfilters = 6, /obj/item/storage/box/fancy/cigpaper = 6, @@ -858,6 +861,7 @@ /obj/item/seeds/mintseed = 3, /obj/item/seeds/nifberries = 2, /obj/item/seeds/onionseed = 3, + /obj/item/seeds/oracleseed = 3, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/peppercornseed = 3, @@ -896,6 +900,7 @@ ) contraband = list( /obj/item/seeds/amanitamycelium = 3, + /obj/item/seeds/cocaseed = 3, /obj/item/seeds/glowshroom = 3, /obj/item/seeds/libertymycelium = 3, /obj/item/seeds/nettleseed = 3 @@ -937,6 +942,7 @@ /obj/item/seeds/mintseed = 70, /obj/item/seeds/nifberries = 70, /obj/item/seeds/onionseed = 30, + /obj/item/seeds/oracleseed = 50, /obj/item/seeds/orangeseed = 40, /obj/item/seeds/peanutseed = 30, /obj/item/seeds/peppercornseed = 30, diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index bc983a4c866..5689618be67 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -16,6 +16,31 @@ desc = "Highly illegal drug. Bang - and your stress is gone." starts_with = list(/obj/item/reagent_containers/pill/joy = 3) +/obj/item/storage/pill_bottle/heroin + name = "bottle of heroin pills" + desc = "Highly illegal drug. For quick pain removal." + starts_with = list(/obj/item/reagent_containers/pill/heroin = 3) + +/obj/item/storage/pill_bottle/cocaine + name = "bottle of cocaine tablets" + desc = "Supposedly a highly illegal drug... yet the labeling on the bottle is suspiciously perfect..." + starts_with = list(/obj/item/reagent_containers/pill/cocaine = 5) + +/obj/item/storage/pill_bottle/contemplus + name = "bottle of Contemplus tablets" + desc = "A Yomi Genetics bottle clearly marked as 'for animal testing only.' You doubt this is followed often on Venus..." + starts_with = list(/obj/item/reagent_containers/pill/contemplus = 5) + +/obj/item/storage/pill_bottle/spotlight + name = "bottle of Spotlight tablets" + desc = "A Zavodskoi bottle with a conspicuous 'defective' stamp on it. You doubt this was actually defective." + starts_with = list(/obj/item/reagent_containers/pill/spotlight = 5) + +/obj/item/storage/pill_bottle/sparkle + name = "bottle of Sparkle tablets" + desc = "A Zeng-Hu bottle clearly marked as being for 'medical testing purposes only.' As if..." + starts_with = list(/obj/item/reagent_containers/pill/sparkle = 5) + /obj/item/storage/pill_bottle/smart name = "bottle of Smart pills" desc = "Highly illegal drug. For exam season." @@ -27,13 +52,13 @@ /obj/item/reagent_containers/glass/beaker/vial/random/toxin random_reagent_list = list( - list(/singleton/reagent/mindbreaker = 10, /singleton/reagent/space_drugs = 20) = 3, + list(/singleton/reagent/drugs/mindbreaker = 10, /singleton/reagent/drugs/mms = 20) = 3, list(/singleton/reagent/mercury = 15) = 3, list(/singleton/reagent/toxin/carpotoxin = 15) = 2, - list(/singleton/reagent/impedrezene = 15) = 2, + list(/singleton/reagent/drugs/impedrezene = 15) = 2, list(/singleton/reagent/toxin/dextrotoxin = 10) = 1, list(/singleton/reagent/toxin/spectrocybin = 15) = 1, - list(/singleton/reagent/joy = 10, /singleton/reagent/water = 20) = 1, + list(/singleton/reagent/drugs/joy = 10, /singleton/reagent/water = 20) = 1, list(/singleton/reagent/toxin/berserk = 10) = 1, list(/singleton/reagent/ammonia = 15) = 3) diff --git a/code/game/objects/items/devices/lighting/flashlight.dm b/code/game/objects/items/devices/lighting/flashlight.dm index 3e3d97b36a0..20485f9eeed 100644 --- a/code/game/objects/items/devices/lighting/flashlight.dm +++ b/code/game/objects/items/devices/lighting/flashlight.dm @@ -279,7 +279,7 @@ to_chat(user, SPAN_NOTICE("There's visible lag between the left and right pupils' reactions.")) var/list/pinpoint = list(/singleton/reagent/oxycomorphine=1,/singleton/reagent/mortaphenyl=5) - var/list/dilating = list(/singleton/reagent/space_drugs=5,/singleton/reagent/mindbreaker=1) + var/list/dilating = list(/singleton/reagent/drugs/mms=5,/singleton/reagent/drugs/mindbreaker=1) var/datum/reagents/ingested = H.get_ingested_reagents() if(H.reagents.has_any_reagent(pinpoint) || ingested.has_any_reagent(pinpoint)) to_chat(user, SPAN_NOTICE("\The [H]'s pupils are already pinpoint and cannot narrow any more.")) diff --git a/code/game/objects/items/tajara.dm b/code/game/objects/items/tajara.dm index 54d0e0ad5eb..26d6969cba6 100644 --- a/code/game/objects/items/tajara.dm +++ b/code/game/objects/items/tajara.dm @@ -32,7 +32,7 @@ desc_extended = "Imported from the New Kingdom of Adhomai." icon_state = "nkapacket" item_state = "Fpacket" - cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/adhomai + cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/adhomai/menthol /obj/item/tajcard name = "collectable tajaran card" diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm index dca14d184e5..b043ccc8443 100644 --- a/code/game/objects/items/weapons/chewables.dm +++ b/code/game/objects/items/weapons/chewables.dm @@ -159,6 +159,11 @@ /singleton/reagent/drink/dynjuice = 1 ) +/obj/item/clothing/mask/chewable/oracle + name = "chewing oracle" + desc = "A chewy wad of oracle. Cut in long strands." + reagents_to_add = list(/singleton/reagent/toxin/oracle = 2) + /obj/item/clothing/mask/chewable/candy name = "wad" desc = "A chewy wad of wadding material." diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 23b05ad3cdd..c1dffc97735 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -143,6 +143,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM //FINE SMOKABLES// ////////////////// /obj/item/clothing/mask/smokable + abstract_type = /obj/item/clothing/mask/smokable name = "smokable item" desc = "You're not sure what this is. You should probably ahelp it." icon = 'icons/obj/smokables.dmi' @@ -382,7 +383,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /singleton/reagent/toxin/tobacco = 5, /singleton/reagent/mental/nicotine = 5, /singleton/reagent/lexorin = 2, - /singleton/reagent/serotrotium = 3 + /singleton/reagent/drugs/serotrotium = 3 ) /obj/item/clothing/mask/smokable/cigarette/blank @@ -416,6 +417,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM /singleton/reagent/mental/nicotine = 5 ) +/obj/item/clothing/mask/smokable/cigarette/adhomai/menthol + name = "adhomian menthol cigarette" + desc = "An adhomian cigarette made from processed S'rendarr's Hand, with menthol added." + reagents_to_add = list( + /singleton/reagent/toxin/tobacco = 5, + /singleton/reagent/mental/nicotine = 5, + /singleton/reagent/menthol = 5 + ) + /obj/item/clothing/mask/smokable/cigarette/sweet reagents_to_add = list( /singleton/reagent/toxin/tobacco/sweet = 10, @@ -436,6 +446,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A wulumunusha cigarette commonly smoked by Skrell for religious purposes." reagents_to_add = list(/singleton/reagent/wulumunusha = 15) +/obj/item/clothing/mask/smokable/cigarette/oracle + name = "oracle cigarette" + desc = "A roll of oracle and caromeg." + reagents_to_add = list( + /singleton/reagent/toxin/oracle = 10, + /singleton/reagent/mental/caromeg = 5 + ) + //////////// // CIGARS // //////////// @@ -499,6 +517,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM /singleton/reagent/fuel = 5 ) +/obj/item/clothing/mask/smokable/cigarette/cigar/oracle + name = "\improper Vedamor cigar" + desc = "A premium oracle cigar, originating from Vedamor." + icon_state = "vedamor_cigaroff" + icon_on = "vedamor_cigaron" + icon_off = "vedamor_cigaroff" + item_state = "vedamor_cigaroff" + reagents_to_add = list( + /singleton/reagent/toxin/oracle/rich = 25, + /singleton/reagent/mental/caromeg = 5 + ) + /obj/item/trash/cigbutt name = "cigarette butt" desc = "A manky old cigarette butt." @@ -1064,6 +1094,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/reagent_containers/food/snacks/grown/dried_tobacco/pure plantname = "puretobacco" +//oracle sold seperately if you're too snobby to grow it yourself. +/obj/item/reagent_containers/food/snacks/grown/dried_oracle + plantname = "oracle" + w_class = ITEMSIZE_TINY + +/obj/item/reagent_containers/food/snacks/grown/dried_oracle/Initialize() + . = ..() + dry = TRUE + name = "dried [name]" + color = "#ff6f6f" + +/obj/item/reagent_containers/food/snacks/grown/dried_oracle/fine + plantname = "vedamororacle" + /obj/item/clothing/mask/smokable/cigarette/rolled/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/cigarette_filter)) if(filter) diff --git a/code/game/objects/items/weapons/ecigs.dm b/code/game/objects/items/weapons/ecigs.dm index 84d1738afbe..aa77fbc0d53 100644 --- a/code/game/objects/items/weapons/ecigs.dm +++ b/code/game/objects/items/weapons/ecigs.dm @@ -272,6 +272,11 @@ desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its tobacco flavored, with extra nicotine." reagents_to_add = list(/singleton/reagent/toxin/tobacco/liquid = 10, /singleton/reagent/water = 10) +/obj/item/reagent_containers/ecig_cartridge/menthol + name = "menthol flavour cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says it's menthol flavored." + reagents_to_add = list(/singleton/reagent/toxin/tobacco/liquid = 5, /singleton/reagent/water = 10, /singleton/reagent/menthol = 5) + /obj/item/reagent_containers/ecig_cartridge/orange name = "orange flavour cartridge" desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its orange flavored." @@ -296,3 +301,8 @@ name = "coffee flavour cartridge" desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says its coffee flavored." reagents_to_add = list(/singleton/reagent/toxin/tobacco/liquid = 10, /singleton/reagent/water = 10, /singleton/reagent/drink/coffee = 5) + +/obj/item/reagent_containers/ecig_cartridge/caromeg + name = "flavorless caromeg cartridge" + desc = "A small metal cartridge which contains an atomizing coil and a solution to be atomized. The label says you can add whatever flavoring agents you want." + reagents_to_add = list(/singleton/reagent/toxin/oracle/liquid = 5, /singleton/reagent/water = 10) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index f515240be50..6e49dfc6f3c 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -425,6 +425,13 @@ /obj/item/storage/box/fancy/cigarettes/cigar/prank cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/cigar/prank +/obj/item/storage/box/fancy/cigarettes/oracle + name = "\improper Natural Vysokan Soothsayer oracle cigarette packet" + desc = "Featuring an illustration of a soothsayer from Vysoka on its packaging, these cigarettes are advertised as containing oracle instead of the normal tobacco. A warning box stating \"These oracle cigarettes are not healthier than tobacco alternatives\" appears to have been haphazardly placed on the packet." + icon_state = "Opacket" + item_state = "Fpacket" + cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/oracle + /* * Vial Box */ diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index 9c8c564b77a..56f75a48feb 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -163,6 +163,13 @@ item_state = "Dpacket" starts_with = list(/obj/item/clothing/mask/chewable/tobacco/fine = 6) +/obj/item/storage/chewables/oracle + name = "can of Natural Vysokan Fields chewing oracle" + desc = "A can of chewing oracle, advertising Vysoka's natural beauty. A warning box stating \"This chewing oracle is not healthier than tobacco alternatives\" appears to have been haphazardly placed on the can." + icon_state = "oracle_chew" + item_state = "Fpacket" + starts_with = list(/obj/item/clothing/mask/chewable/oracle = 6) + /obj/item/storage/box/fancy/chewables/tobacco/nico name = "box of Nico-Tine gum" desc = "A Sol-approved brand of nicotine gum. Cut out the middleman for your addiction fix." @@ -223,3 +230,17 @@ starts_with = list(/obj/item/reagent_containers/food/snacks/grown/dried_tobacco/pure = 8) icon_state = "roll_nico" item_state = "Epacket" + +/obj/item/storage/chewables/rollable/oracle + name = "box of Vysokan Plains oracle leaves" + desc = "This box gives a large list of potential sources for the oracle inside of it, reflecting the unstable and volatile state of Vysokan politics." + starts_with = list(/obj/item/reagent_containers/food/snacks/grown/dried_oracle = 8) + icon_state = "roll_oracle" + item_state = "Dpacket" + +/obj/item/storage/chewables/rollable/vedamor + name = "box of Velhalktai Marathon oracle leaves" + desc = "Packaged by a major sponsor of the Velhalktai races, and exported by NanoTrasen, this box promises quality oracle grown directly in the city-state of Vedamor." + starts_with = list(/obj/item/reagent_containers/food/snacks/grown/dried_oracle/fine = 8) + icon_state = "roll_vedamor" + item_state = "Epacket" diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index a4868157ea9..62bc4fe68f3 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -142,7 +142,7 @@ var/list/possible_reagents = list( /singleton/reagent/leporazine, /singleton/reagent/clonexadone, - /singleton/reagent/space_drugs, + /singleton/reagent/drugs/mms, /singleton/reagent/thermite, /singleton/reagent/cetahydramine, /singleton/reagent/sterilizine, @@ -164,11 +164,11 @@ /singleton/reagent/pneumalin, /singleton/reagent/acid/polyacid, /singleton/reagent/mutagen, - /singleton/reagent/impedrezene, - /singleton/reagent/night_juice, + /singleton/reagent/drugs/impedrezene, + /singleton/reagent/drugs/night_juice, /singleton/reagent/toxin/cardox, /singleton/reagent/toxin/stimm, - /singleton/reagent/ambrosia_extract) + /singleton/reagent/drugs/ambrosia_extract) var/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type diff --git a/code/modules/client/preference_setup/loadout/items/smoking.dm b/code/modules/client/preference_setup/loadout/items/smoking.dm index ff1d88fe7ed..c656e5f2f91 100644 --- a/code/modules/client/preference_setup/loadout/items/smoking.dm +++ b/code/modules/client/preference_setup/loadout/items/smoking.dm @@ -58,6 +58,7 @@ cigarettes["Royal Choice cigarette packet"] = /obj/item/storage/box/fancy/cigarettes/nka cigarettes["Eriuyushi Sunset cigarette packet"] = /obj/item/storage/box/fancy/cigarettes/federation cigarettes["Xaqixal Dyn Fields cigarette packet"] = /obj/item/storage/box/fancy/cigarettes/dyn + cigarettes["Natural Vysokan Soothsayer oracle cigarette packet"] = /obj/item/storage/box/fancy/cigarettes/oracle gear_tweaks += new /datum/gear_tweak/path(cigarettes) /datum/gear/smoking/chew @@ -79,8 +80,8 @@ gear_tweaks += new /datum/gear_tweak/path(chews) /datum/gear/smoking/leaves - display_name = "tobacco leaf selection" - description = "A selection of tobacco leaves." + display_name = "smokable leaf selection" + description = "A selection of smokable leaves." path = /obj/item/storage/chewables/rollable cost = 2 flags = GEAR_HAS_DESC_SELECTION @@ -92,6 +93,8 @@ leaves["Agyre Lake tobacco leaves"] = /obj/item/storage/chewables/rollable leaves["Excelsior Epsilon tobacco leaves"] = /obj/item/storage/chewables/rollable/fine leaves["Golden Sol tobacco leaves"] = /obj/item/storage/chewables/rollable/nico + leaves["Vysokan Plains oracle leaves"] = /obj/item/storage/chewables/rollable/oracle + leaves["Velhalktai Marathon oracle leaves"] = /obj/item/storage/chewables/rollable/vedamor gear_tweaks += new /datum/gear_tweak/path(leaves) /datum/gear/smoking/pipe diff --git a/code/modules/cooking/recipes/recipes_baked.dm b/code/modules/cooking/recipes/recipes_baked.dm index 80c10099564..f3525f4b168 100644 --- a/code/modules/cooking/recipes/recipes_baked.dm +++ b/code/modules/cooking/recipes/recipes_baked.dm @@ -47,7 +47,7 @@ /singleton/recipe/spacylibertyduff appliance = OVEN - reagents = list(/singleton/reagent/water = 5, /singleton/reagent/alcohol/vodka = 5, /singleton/reagent/psilocybin = 5) + reagents = list(/singleton/reagent/water = 5, /singleton/reagent/alcohol/vodka = 5, /singleton/reagent/drugs/psilocybin = 5) result = /obj/item/reagent_containers/food/snacks/spacylibertyduff /singleton/recipe/hotdiggitydonk //heated donk, in lieu of a microwave diff --git a/code/modules/cooking/recipes/recipes_pastries.dm b/code/modules/cooking/recipes/recipes_pastries.dm index 656f0c67048..1496622f4ef 100644 --- a/code/modules/cooking/recipes/recipes_pastries.dm +++ b/code/modules/cooking/recipes/recipes_pastries.dm @@ -55,7 +55,7 @@ /singleton/recipe/rofflewaffles appliance = OVEN - reagents = list(/singleton/reagent/psilocybin = 5, /singleton/reagent/sugar = 10) + reagents = list(/singleton/reagent/drugs/psilocybin = 5, /singleton/reagent/sugar = 10) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 9b16482b77a..6fbc249e65f 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -11,10 +11,10 @@ /singleton/reagent/spacecleaner = 6, /singleton/reagent/nutriment = 6, /singleton/reagent/capsaicin/condensed = 2, - /singleton/reagent/mindbreaker = 0.5, + /singleton/reagent/drugs/mindbreaker = 0.5, /singleton/reagent/lube = 4, /singleton/reagent/drink/banana = 3, - /singleton/reagent/space_drugs = 3, + /singleton/reagent/drugs/mms = 3, /singleton/reagent/water/holywater = 1, /singleton/reagent/drink/hot_coco = 3, /singleton/reagent/hyperzine = 0.75, @@ -38,12 +38,12 @@ /singleton/reagent/sodiumchloride = 2, /singleton/reagent/drink/zorasoda/venomgrass = 1, /singleton/reagent/nutriment/protein/egg = 2, - /singleton/reagent/serotrotium = 1, - /singleton/reagent/psilocybin = 0.5, + /singleton/reagent/drugs/serotrotium = 1, + /singleton/reagent/drugs/psilocybin = 0.5, /singleton/reagent/toxin/spectrocybin = 0.1, - /singleton/reagent/ambrosia_extract = 0.3, - /singleton/reagent/skrell_nootropic = 0.5, - /singleton/reagent/xuxigas = 2 + /singleton/reagent/drugs/ambrosia_extract = 0.3, + /singleton/reagent/drugs/skrell_nootropic = 0.5, + /singleton/reagent/drugs/xuxigas = 2 ) /datum/event/vent_clog/setup() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 25bdeea2c2d..aa8ea3a0647 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -92,7 +92,7 @@ descriptors |= "radioactive" if(reagents.has_reagent(/singleton/reagent/toxin/amatoxin) || reagents.has_reagent(/singleton/reagent/toxin)) descriptors |= "poisonous" - if(reagents.has_reagent(/singleton/reagent/psilocybin) || reagents.has_reagent(/singleton/reagent/ambrosia_extract) || reagents.has_reagent(/singleton/reagent/space_drugs) || reagents.has_reagent(/singleton/reagent/mindbreaker)) + if(reagents.has_reagent(/singleton/reagent/drugs/psilocybin) || reagents.has_reagent(/singleton/reagent/drugs/ambrosia_extract) || reagents.has_reagent(/singleton/reagent/drugs/mms) || reagents.has_reagent(/singleton/reagent/drugs/mindbreaker)) descriptors |= "hallucinogenic" if(reagents.has_reagent(/singleton/reagent/bicaridine) || reagents.has_reagent(/singleton/reagent/dylovene)) descriptors |= "medicinal" diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 7ced923b1a8..74f94c602e1 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -426,7 +426,7 @@ /singleton/reagent/butazoline, /singleton/reagent/blood, /singleton/reagent/cryoxadone, - /singleton/reagent/cryptobiolin, + /singleton/reagent/drugs/cryptobiolin, /singleton/reagent/toxin/cyanide, /singleton/reagent/dermaline, /singleton/reagent/dexalin, @@ -434,9 +434,9 @@ /singleton/reagent/hydrazine, /singleton/reagent/hyperzine, /singleton/reagent/hyronalin, - /singleton/reagent/impedrezene, + /singleton/reagent/drugs/impedrezene, /singleton/reagent/mercury, - /singleton/reagent/mindbreaker, + /singleton/reagent/drugs/mindbreaker, /singleton/reagent/inaprovaline, /singleton/reagent/peridaxon, /singleton/reagent/toxin/phoron, @@ -446,7 +446,7 @@ /singleton/reagent/rezadone, /singleton/reagent/ryetalyn, /singleton/reagent/slimejelly, - /singleton/reagent/space_drugs, + /singleton/reagent/drugs/mms, /singleton/reagent/soporific, /singleton/reagent/sugar, /singleton/reagent/synaptizine, @@ -455,8 +455,8 @@ /singleton/reagent/mortaphenyl, /singleton/reagent/water, /singleton/reagent/woodpulp, - /singleton/reagent/ambrosia_extract, - /singleton/reagent/skrell_nootropic, + /singleton/reagent/drugs/ambrosia_extract, + /singleton/reagent/drugs/skrell_nootropic, /singleton/reagent/toxin/berserk ) diff --git a/code/modules/hydroponics/seed_datums/flowers.dm b/code/modules/hydroponics/seed_datums/flowers.dm index d42a4f36c3d..a62f70b4fdd 100644 --- a/code/modules/hydroponics/seed_datums/flowers.dm +++ b/code/modules/hydroponics/seed_datums/flowers.dm @@ -23,7 +23,7 @@ name = "poppies" seed_name = "poppy" display_name = "poppies" - chems = list(/singleton/reagent/nutriment = list(1,20), /singleton/reagent/bicaridine = list(1,10)) + chems = list(/singleton/reagent/nutriment = list(1,20), /singleton/reagent/morphine = list(1,10)) kitchen_tag = "poppy" /datum/seed/flower/poppy/setup_traits() @@ -79,3 +79,4 @@ set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E") set_trait(TRAIT_PLANT_ICON,"flower") set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15) + diff --git a/code/modules/hydroponics/seed_datums/herbs.dm b/code/modules/hydroponics/seed_datums/herbs.dm index b68b2086d1f..b48615c5b3e 100644 --- a/code/modules/hydroponics/seed_datums/herbs.dm +++ b/code/modules/hydroponics/seed_datums/herbs.dm @@ -41,4 +41,25 @@ set_trait(TRAIT_IDEAL_LIGHT, 6) /obj/item/seeds/teaseed - seed_type = "tea" \ No newline at end of file + seed_type = "tea" + +/datum/seed/coca + name = "coca" + seed_name = "coca leaf" + display_name = "coca plant" + chems = list(/singleton/reagent/nutriment/cocagrounds = list(2,10)) + kitchen_tag = "coca" + +/datum/seed/coca/setup_traits() + ..() + set_trait(TRAIT_MATURATION, 3) + set_trait(TRAIT_PRODUCTION, 3) + set_trait(TRAIT_YIELD, 3) + set_trait(TRAIT_POTENCY, 2) + set_trait(TRAIT_PRODUCT_ICON, "herb") + set_trait(TRAIT_PRODUCT_COLOUR, "#056608") + set_trait(TRAIT_PLANT_ICON, "herb") + set_trait(TRAIT_IDEAL_LIGHT, 6) + +/obj/item/seeds/cocaseed + seed_type = "coca" diff --git a/code/modules/hydroponics/seed_datums/mushrooms.dm b/code/modules/hydroponics/seed_datums/mushrooms.dm index 8405108b983..cb179eecc71 100644 --- a/code/modules/hydroponics/seed_datums/mushrooms.dm +++ b/code/modules/hydroponics/seed_datums/mushrooms.dm @@ -147,7 +147,7 @@ seed_name = "reishi" display_name = "reishi" mutants = list("libertycap","glowshroom") - chems = list(/singleton/reagent/nutriment = list(1,50), /singleton/reagent/psilocybin = list(3,5)) + chems = list(/singleton/reagent/nutriment = list(1,50), /singleton/reagent/drugs/psilocybin = list(3,5)) /datum/seed/mushroom/hallucinogenic/setup_traits() ..() @@ -168,7 +168,7 @@ seed_name = "liberty cap" display_name = "liberty cap mushrooms" mutants = list("ghostmushroom") - chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/soporific = list(3,3), /singleton/reagent/psilocybin = list(1,25)) + chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/soporific = list(3,3), /singleton/reagent/drugs/psilocybin = list(1,25)) /datum/seed/mushroom/hallucinogenic/strong/setup_traits() ..() @@ -187,7 +187,7 @@ seed_name = "fly amanita" display_name = "fly amanita mushrooms" mutants = list("destroyingangel","plastic","panocelium") - chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/toxin/amatoxin = list(3,3), /singleton/reagent/psilocybin = list(1,25)) + chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/toxin/amatoxin = list(3,3), /singleton/reagent/drugs/psilocybin = list(1,25)) /datum/seed/mushroom/poison/setup_traits() ..() @@ -208,7 +208,7 @@ seed_name = "destroying angel" display_name = "destroying angel mushrooms" mutants = null - chems = list(/singleton/reagent/nutriment = list(1,50), /singleton/reagent/toxin/amatoxin = list(13,3), /singleton/reagent/psilocybin = list(1,25)) + chems = list(/singleton/reagent/nutriment = list(1,50), /singleton/reagent/toxin/amatoxin = list(13,3), /singleton/reagent/drugs/psilocybin = list(1,25)) /datum/seed/mushroom/poison/death/setup_traits() ..() @@ -228,7 +228,7 @@ seed_name = "panocelium" display_name = "panocelium mushrooms" mutants = null - chems = list(/singleton/reagent/nutriment = list(1,50), /singleton/reagent/toxin/panotoxin = list(10,3), /singleton/reagent/psilocybin = list(1,25)) + chems = list(/singleton/reagent/nutriment = list(1,50), /singleton/reagent/toxin/panotoxin = list(10,3), /singleton/reagent/drugs/psilocybin = list(1,25)) /datum/seed/mushroom/poison/panocelium/setup_traits() ..() diff --git a/code/modules/hydroponics/seed_datums/smokables.dm b/code/modules/hydroponics/seed_datums/smokables.dm index 16079ac3405..1ddb25d642c 100644 --- a/code/modules/hydroponics/seed_datums/smokables.dm +++ b/code/modules/hydroponics/seed_datums/smokables.dm @@ -70,7 +70,7 @@ seed_name = "ambrosia vulgaris" display_name = "ambrosia vulgaris" mutants = list("ambrosiadeus") - chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/ambrosia_extract = list(4,8), /singleton/reagent/kelotane = list(1,8,1), /singleton/reagent/bicaridine = list(1,10,1), /singleton/reagent/toxin = list(1,10)) + chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/drugs/ambrosia_extract = list(4,8), /singleton/reagent/kelotane = list(1,8,1), /singleton/reagent/bicaridine = list(1,10,1), /singleton/reagent/toxin = list(1,10)) kitchen_tag = "ambrosia" /datum/seed/ambrosia/setup_traits() @@ -93,7 +93,7 @@ seed_name = "ambrosia deus" display_name = "ambrosia deus" mutants = null - chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/bicaridine = list(1,8), /singleton/reagent/synaptizine = list(1,8,1), /singleton/reagent/ambrosia_extract = list(4,10)) + chems = list(/singleton/reagent/nutriment = list(1), /singleton/reagent/bicaridine = list(1,8), /singleton/reagent/synaptizine = list(1,8,1), /singleton/reagent/drugs/ambrosia_extract = list(4,10)) kitchen_tag = "ambrosiadeus" /datum/seed/ambrosia/deus/setup_traits() @@ -103,3 +103,44 @@ /obj/item/seeds/ambrosiadeusseed seed_type = "ambrosiadeus" + +//////////////// +// Oracle // +//////////////// +/datum/seed/oracle + name = "oracle" + seed_name = "oracle" + display_name = "oracle" + mutants = list("vedamororacle") + chems = list(/singleton/reagent/nutriment = list(1,5), /singleton/reagent/toxin/oracle = list(4,8)) + +/datum/seed/oracle/setup_traits() + ..() + set_trait(TRAIT_HARVEST_REPEAT, 1) + set_trait(TRAIT_MATURATION, 6) + set_trait(TRAIT_PRODUCTION, 6) + set_trait(TRAIT_YIELD, 6) + set_trait(TRAIT_POTENCY, 5) + set_trait(TRAIT_PRODUCT_ICON, "tobacco") + set_trait(TRAIT_PRODUCT_COLOUR, "#ad5555") + set_trait(TRAIT_PLANT_COLOUR, "#ffa2a2") + set_trait(TRAIT_PLANT_ICON, "flower") + set_trait(TRAIT_IDEAL_LIGHT, 6) + +/obj/item/seeds/oracleseed + seed_type = "oracle" + +/datum/seed/oracle/vedamor + name = "vedamororacle" + seed_name = "vedamor oracle" + display_name = "vedamor oracle" + mutants = null + chems = list(/singleton/reagent/nutriment = list(1,5), /singleton/reagent/toxin/oracle/rich = list(4,8)) + +/datum/seed/oracle/vedamor/setup_traits() + ..() + set_trait(TRAIT_PRODUCT_COLOUR,"#ed1c1c") + set_trait(TRAIT_PLANT_COLOUR,"#ad5555") + +/obj/item/seeds/vedamororacleseed + seed_type = "vedamororacle" diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index 3d2d1ba65cb..43c8726a17d 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -80,6 +80,7 @@ /obj/item/seeds/mollusc = 15, /obj/item/seeds/nifberries = 2, /obj/item/seeds/onionseed = 3, + /obj/item/seeds/oracleseed = 3, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/peppercornseed = 3, @@ -137,6 +138,7 @@ /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, + /obj/item/seeds/cocaseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/coffeeseed = 3, /obj/item/seeds/cornseed = 3, @@ -159,6 +161,7 @@ /obj/item/seeds/nettleseed = 2, /obj/item/seeds/nifberries = 2, /obj/item/seeds/onionseed = 3, + /obj/item/seeds/oracleseed = 3, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/peppercornseed = 3, diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index e62e6b213f7..46ccec8ebcd 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -62,7 +62,7 @@ /singleton/reagent/toxin/plantbgone = 3, /singleton/reagent/cryoxadone = -3, /singleton/reagent/radium = 2, - /singleton/reagent/raskara_dust = 2.5 + /singleton/reagent/drugs/raskara_dust = 2.5 ) var/global/list/nutrient_reagents = list( /singleton/reagent/drink/milk = 0.1, diff --git a/code/modules/item_worth/reagents.dm b/code/modules/item_worth/reagents.dm index ef68dd09f81..b6f892d0d9e 100644 --- a/code/modules/item_worth/reagents.dm +++ b/code/modules/item_worth/reagents.dm @@ -765,22 +765,22 @@ /singleton/reagent/polysomnine/beer2 value = 2.2 -/singleton/reagent/space_drugs +/singleton/reagent/drugs/mms value = 2.8 -/singleton/reagent/serotrotium +/singleton/reagent/drugs/serotrotium value = 2.5 -/singleton/reagent/cryptobiolin +/singleton/reagent/drugs/cryptobiolin value = 2 -/singleton/reagent/impedrezene +/singleton/reagent/drugs/impedrezene value = 1.8 -/singleton/reagent/mindbreaker +/singleton/reagent/drugs/mindbreaker value = 0.6 -/singleton/reagent/psilocybin +/singleton/reagent/drugs/psilocybin value = 0.7 /singleton/reagent/aslimetoxin @@ -813,5 +813,5 @@ /singleton/reagent/toxin/undead value = 300 -/singleton/reagent/ambrosia_extract +/singleton/reagent/drugs/ambrosia_extract value = 2.8 diff --git a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm index 05d36071a83..2e3f00023b8 100644 --- a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm +++ b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm @@ -134,7 +134,7 @@ // ==== /datum/medical_effect/itch name = "Itch" - triggers = list(/singleton/reagent/space_drugs = 10) + triggers = list(/singleton/reagent/drugs/mms = 10) cures = list(/singleton/reagent/inaprovaline) cure_message = "The itching stops..." diff --git a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm index edcb54e9f5d..d207d48f54c 100644 --- a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm +++ b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm @@ -396,7 +396,7 @@ if(istype(A, /mob/living)) var/mob/living/L = A if(L.reagents) - var/madhouse = pick(/singleton/reagent/psilocybin,/singleton/reagent/mindbreaker,/singleton/reagent/impedrezene,/singleton/reagent/cryptobiolin,/singleton/reagent/soporific,/singleton/reagent/mutagen) + var/madhouse = pick(/singleton/reagent/drugs/psilocybin,/singleton/reagent/drugs/mindbreaker,/singleton/reagent/drugs/impedrezene,/singleton/reagent/drugs/cryptobiolin,/singleton/reagent/soporific,/singleton/reagent/mutagen) var/madhouse_verbal_component = pick(thoughts) L.reagents.add_reagent(madhouse, 3) to_chat(L, "[madhouse_verbal_component]") diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 85aa7b9baaf..d25123ff979 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -225,7 +225,7 @@ icon_state = "pen_blue" colour = "blue" origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/singleton/reagent/wulumunusha = 2, /singleton/reagent/pacifier = 15, /singleton/reagent/cryptobiolin = 10) + reagents_to_add = list(/singleton/reagent/wulumunusha = 2, /singleton/reagent/pacifier = 15, /singleton/reagent/drugs/cryptobiolin = 10) /obj/item/pen/reagent/hyperzine icon_state = "pen_yellow" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm index 19b4c63e53b..97a893d61bb 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm @@ -1,27 +1,53 @@ -/singleton/reagent/space_drugs - name = "Mercury Monolithium Sucrose" - description = "Mercury Monolithium Sucrose, or MMS, is a synthetic relaxant. It's both abused and used as a chemical precursor. Lasts twice as long when inhaled." +#define DRUG_MESSAGE_DELAY 90 SECONDS +/singleton/reagent/drugs + name = null + description = DESC_PARENT + taste_description = "a bad investment" + taste_mult = 1.2 + color = "#1a1414" + reagent_state = LIQUID - color = "#60A584" metabolism = REM * 0.5 + breathe_met = REM + ingest_met = REM * 1.5 overdose = REAGENTS_OVERDOSE - taste_description = "bitterness" - taste_mult = 0.4 - breathe_met = REM * 0.5 * 0.5 -/singleton/reagent/space_drugs/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) - to_chat(M, SPAN_GOOD(pick("You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made."))) + var/effect_messages = TRUE + var/list/initial_effect_message_list = list("You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made.") + var/list/sober_message_list = list("You feel like garbage now...", "Your head aches.") -/singleton/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + var/power = 0 + var/ignores_drug_resistance = FALSE + +/singleton/reagent/drugs/initial_effect(mob/living/carbon/human/M, alien, datum/reagents/holder) + if (effect_messages) + var/msg = pick(initial_effect_message_list) + to_chat(M, SPAN_GOOD("[msg]")) + +/singleton/reagent/drugs/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return - M.add_chemical_effect(CE_PULSE, -1) - var/power = (M.chem_doses[type] + REAGENT_VOLUME(holder, type))/2 //Larger the dose and volume, the more affected you are by the chemical. - if(HAS_TRAIT(M, TRAIT_ORIGIN_DRUG_RESISTANCE)) + power = (M.chem_doses[type] + REAGENT_VOLUME(holder, type))/2 //Larger the dose and volume, the more affected you are by the chemical. + if(HAS_TRAIT(M, TRAIT_ORIGIN_DRUG_RESISTANCE) && !ignores_drug_resistance) power = max(power - 2, 0) +/singleton/reagent/drugs/final_effect(mob/living/carbon/M, datum/reagents/holder) + if (effect_messages) + var/msg = pick(sober_message_list) + to_chat(M, SPAN_WARNING("[msg]")) + +/singleton/reagent/drugs/mms + name = "Mercury Monolithium Sucrose" + description = "Mercury Monolithium Sucrose, or MMS, is a synthetic relaxant. It's both abused and used as a chemical precursor. Lasts twice as long when inhaled." + color = "#60A584" + taste_description = "bitterness" + taste_mult = 0.4 + +/singleton/reagent/drugs/mms/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() + M.druggy = max(M.druggy, power) M.add_chemical_effect(CE_PAINKILLER, 5 + round(power,5)) @@ -40,14 +66,14 @@ if(prob(probmod) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained()) step(M, pick(cardinal)) - if(prob(3)) + if(prob(7)) M.emote(pick("smile","giggle","moan","yawn","laugh","drool","twitch")) -/singleton/reagent/space_drugs/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) - . = ..() +/singleton/reagent/drugs/mms/overdose(mob/living/carbon/M, alien, removed = 0, scale = 1, datum/reagents/holder) + ..() M.hallucination = max(M.hallucination, 30 * scale) -/singleton/reagent/serotrotium +/singleton/reagent/drugs/serotrotium name = "Serotrotium" description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." reagent_state = LIQUID @@ -56,51 +82,62 @@ overdose = REAGENTS_OVERDOSE taste_description = "bitterness" fallback_specific_heat = 1.2 + effect_messages = FALSE + +/singleton/reagent/drugs/serotrotium/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() -/singleton/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - var/mob/living/carbon/human/H = M - if(!istype(H) || (istype(H) && (H.species.flags & NO_BLOOD))) //If we're not human OR if we're human but don't have blood. - return if(prob(7)) M.emote(pick("twitch", "drool", "moan", "gasp")) return -/singleton/reagent/cryptobiolin +/singleton/reagent/drugs/serotrotium/overdose(mob/living/carbon/M, alien, removed = 0, scale = 1, datum/reagents/holder) + ..() + M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) + M.add_chemical_effect(CE_PULSE, 2) + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?"))) + M.make_jittery(10) + M.dizziness = max(150, M.dizziness) + M.make_dizzy(10) + +/singleton/reagent/drugs/cryptobiolin name = "Cryptobiolin" - description = "Cryptobiolin causes confusion and dizzyness." + description = "Cryptobiolin causes confusion and dizziness." reagent_state = LIQUID color = "#000055" metabolism = REM * 0.5 overdose = REAGENTS_OVERDOSE taste_description = "sourness" + effect_messages = FALSE -/singleton/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - var/mob/living/carbon/human/H = M - if(istype(H) && (H.species.flags & NO_BLOOD)) - return +/singleton/reagent/drugs/cryptobiolin/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() M.dizziness = max(150, M.dizziness)//Setting dizziness directly works as long as the make_dizzy proc is called after to spawn the process M.make_dizzy(4) - M.add_chemical_effect(CE_HALLUCINATE, 1) - M.confused = max(M.confused, 20) + M.add_chemical_effect(CE_HALLUCINATE, power) + M.confused = max(M.confused, power) -/singleton/reagent/impedrezene +/singleton/reagent/drugs/impedrezene name = "Impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." reagent_state = LIQUID color = "#C8A5DC" overdose = REAGENTS_OVERDOSE taste_description = "numbness" + effect_messages = FALSE -/singleton/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/impedrezene/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() M.jitteriness = max(M.jitteriness - 5, 0) - M.confused = max(M.confused, 10) + M.confused = max(M.confused, power) M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) if(prob(50)) M.drowsiness = max(M.drowsiness, 3) if(prob(10) && ishuman(M)) M.emote("drool") -/singleton/reagent/mindbreaker +/singleton/reagent/drugs/mindbreaker name = "Mindbreaker Toxin" description = "An incredibly potent hallucinogen designed to wreak havoc on the brain, resulting in disturbing hallucinations with long-term impacts on those given the drug - this drug is not pleasant, thus the name, and only hardcore addicts use the drug recreationally." reagent_state = LIQUID @@ -108,19 +145,21 @@ metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE taste_description = "sourness" + ignores_drug_resistance = TRUE -/singleton/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/mindbreaker/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() M.hallucination = max(M.hallucination, 100) M.add_chemical_effect(CE_HALLUCINATE, 2) M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) -/singleton/reagent/mindbreaker/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/mindbreaker/overdose(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.add_chemical_effect(CE_NEUROTOXIC, 4*removed) if(prob(5)) - to_chat(M, SPAN_DANGER(pick("You feel the strongest of pains deeply rooted beneath your skull.", "Your head feels like it's going to burst!", "Your head stings!"))) M.adjustHalLoss(20) + to_chat(M, SPAN_DANGER(pick("You feel the strongest of pains deeply rooted beneath your skull.", "Your head feels like it's going to burst!", "Your head stings!"))) -/singleton/reagent/psilocybin +/singleton/reagent/drugs/psilocybin name = "Psilocybin" description = "A strong psychotropic derived from certain species of mushroom." color = "#E700E7" @@ -133,10 +172,9 @@ condiment_icon_state = "psilocybin" condiment_center_of_mass = list("x"=16, "y"=8) -/singleton/reagent/psilocybin/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) - to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "Your eyes open wide and you look upon this new world you now see.", "You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made."))) + initial_effect_message_list = list("You lean back and begin to fall... and fall... and fall.", "Your eyes open wide and you look upon this new world you now see.", "You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made.") -/singleton/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/psilocybin/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return @@ -148,7 +186,7 @@ if(dose < 1) M.apply_effect(3, STUTTER) M.make_dizzy(5) - if(prob(3)) + if(prob(5)) to_chat(M, SPAN_GOOD(pick("You feel giddy.", "You can't put your finger on it, but whatever it is, it's really funny.", "You feel full of energy.", "Your anxieties no longer cloud your mind."))) else if(dose < 2) M.apply_effect(3, STUTTER) @@ -156,7 +194,7 @@ M.dizziness = max(150, M.dizziness) M.make_dizzy(5) M.druggy = max(M.druggy, 35) - if(prob(3)) + if(prob(5)) to_chat(M, SPAN_GOOD(pick("Everything is so vibrant...", "Look at all those colours...", "Shapes dance across your vision.", "You feel like you're looking through a kaleidoscope.", "That's so funny!"))) else M.apply_effect(3, STUTTER) @@ -164,19 +202,18 @@ M.dizziness = max(150, M.dizziness) M.make_dizzy(10) M.druggy = max(M.druggy, 40) - if(prob(3)) + if(prob(5)) to_chat(M, SPAN_GOOD(pick("Everything is so vibrant...", "Look at all those colours...", "Shapes dance across your vision.", "You feel like you're looking through a kaleidoscope.", "That's so funny!"))) if(ishuman(M) && prob(min(15, dose*5))) M.emote(pick("twitch", "giggle")) -/singleton/reagent/psilocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder) +/singleton/reagent/drugs/psilocybin/overdose(mob/living/carbon/M, datum/reagents/holder) M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]) - if(prob(3)) - to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "You are dying... but that's okay, right?", "You are at peace with the universe.", "The stars are beckoning you to them."))) + to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "You are dying... but that's okay, right?", "You are at peace with the universe.", "The stars are beckoning you to them."))) if(prob(5)) M.custom_pain("You feel a sharp pain in your stomach!", 10) -/singleton/reagent/raskara_dust +/singleton/reagent/drugs/raskara_dust name = "Raskara Dust" description = "A powdery narcotic found in the gang-ridden slums of Biesel and Sol. Known for it's relaxing poperties that cause trance-like states when inhaled. Casual users tend to snort or inhale, while hardcore users inject." reagent_state = SOLID @@ -187,32 +224,33 @@ breathe_met = REM * 0.2 ingest_met = REM * 0.3 -/singleton/reagent/raskara_dust/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) - to_chat(M, SPAN_GOOD(pick("You gradually begin to slow down, and so does everything around you.", "You lean back and begin to fall... and fall... and fall.", "This is already the best decision you've ever made."))) + initial_effect_message_list = list("You gradually begin to slow down, and so does everything around you.", "You lean back and begin to fall... and fall... and fall.", "This is already the best decision you've ever made.") -/singleton/reagent/raskara_dust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + var/effect_message_list = list("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today.") + +/singleton/reagent/drugs/raskara_dust/affect_ingest(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) M.drowsiness += 1 * removed if(prob(3)) - to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today."))) + to_chat(M, SPAN_GOOD(pick(effect_message_list))) -/singleton/reagent/raskara_dust/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/raskara_dust/affect_breathe(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) M.drowsiness += 2 * removed if(prob(5) && ishuman(M)) M.emote("cough") if(prob(3)) - to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today."))) + to_chat(M, SPAN_GOOD(pick(effect_message_list))) -/singleton/reagent/raskara_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/raskara_dust/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 30) M.drowsiness += 3 * removed if(prob(5)) M.emote("twitch") - if(prob(5)) - to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today."))) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick(effect_message_list))) -/singleton/reagent/raskara_dust/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/raskara_dust/overdose(mob/living/carbon/M, alien, removed, datum/reagents/holder) if(prob(3)) to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "Are you ascending to another plane of existence... that's so cool?", "You are dying... but that's okay, right?", "You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual."))) if(prob(M.chem_doses[type] / 3)) @@ -221,7 +259,7 @@ else M.seizure() -/singleton/reagent/night_juice +/singleton/reagent/drugs/night_juice name = "Nightlife" description = "A liquid narcotic commonly used by the more wealthy drug-abusing citizens of the Eridani Federation. Works as a potent stimulant that causes extreme awakefulness. Lethal in high doses." reagent_state = LIQUID @@ -233,16 +271,14 @@ breathe_mul = 0.5 ingest_mul = 0.125 -/singleton/reagent/night_juice/initialize_data(newdata, datum/reagents/holder) + initial_effect_message_list = list("You feel a wave of pleasure smash into you and liven you up!", "You're startled by the sheer strength and speed of this drug!", "You already feel so damn good!", "This is the best decision you've ever made!") + +/singleton/reagent/drugs/night_juice/initialize_data(newdata, datum/reagents/holder) . = ..() LAZYSET(., "special", 0) -/singleton/reagent/night_juice/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) - to_chat(M, SPAN_GOOD(pick("You feel a wave of pleasure smash into you and liven you up!", "You're startled by the sheer strength and speed of this drug!", "You already feel so damn good!", "This is the best decision you've ever made!"))) - -/singleton/reagent/night_juice/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) - if(!istype(M)) - return +/singleton/reagent/drugs/night_juice/affect_blood(mob/living/carbon/human/M, alien, removed, datum/reagents/holder) + ..() holder.reagent_data[type]["special"] += (REAGENT_VOLUME(holder, type)/10)*removed @@ -260,16 +296,16 @@ var/obj/item/organ/H = M.internal_organs_by_name[BP_HEART] H.take_damage(holder.reagent_data[type]["special"] * removed * 0.025) -/singleton/reagent/night_juice/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/night_juice/overdose(mob/living/carbon/human/M, alien, removed, datum/reagents/holder) M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) if(prob(2)) M.emote("shiver") - if(prob(2)) to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?"))) if(prob(25)) M.add_chemical_effect(CE_NEPHROTOXIC, 1) -/singleton/reagent/guwan_painkillers + +/singleton/reagent/drugs/guwan_painkillers name = "Tremble" description = "An ancient tribal Unathi narcotic based on the outer gel layer of the seeds of a poisonous flower. The chemical itself acts as a very potent omni-healer when consumed, however as the chemical metabolizes, it causes immense and crippling pain." reagent_state = LIQUID @@ -278,11 +314,13 @@ metabolism = REM * 0.25 overdose = 10 fallback_specific_heat = 1 + ignores_drug_resistance = TRUE + effect_messages = FALSE -/singleton/reagent/guwan_painkillers/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/guwan_painkillers/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) affect_ingest(M, alien, removed*0.5, holder) -/singleton/reagent/guwan_painkillers/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/guwan_painkillers/affect_ingest(mob/living/carbon/M, alien, removed, datum/reagents/holder) var/dose = M.chem_doses[type] if(dose > 5 && REAGENT_VOLUME(holder, type) <= 3) M.adjustHalLoss(removed*300) //So oxycomorphine can't be used with it. @@ -304,7 +342,7 @@ overdose = 10 strength = 3 -/singleton/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/toxin/stimm/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) if(alien == IS_TAJARA) removed *= 1.25 ..() @@ -324,7 +362,7 @@ metabolism = REM overdose = 15 -/singleton/reagent/toxin/krok/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/toxin/krok/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) var/mob/living/carbon/human/H = M if(!istype(H)) return @@ -364,7 +402,7 @@ condiment_desc = "A small dropper bottle full of a stoner's paradise. A warning label warns of muteness as a side effect." condiment_icon_state = "wuluextract" -/singleton/reagent/wulumunusha/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/wulumunusha/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.druggy = max(M.druggy, 100) M.silent = max(M.silent, 5) if(prob(3) && !isskrell(M)) @@ -372,11 +410,11 @@ if(prob(3) && isskrell(M)) to_chat(M, SPAN_ALIEN(pick("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?", "You feel safe and comfortable."))) -/singleton/reagent/wulumunusha/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) +/singleton/reagent/wulumunusha/overdose(mob/living/carbon/M, alien, removed = 0, scale = 1, datum/reagents/holder) if(isskrell(M)) M.hallucination = max(M.hallucination, 10 * scale) //light hallucinations that afflict skrell -/singleton/reagent/ambrosia_extract +/singleton/reagent/drugs/ambrosia_extract name = "Ambrosia Extract" description = "Ambrosia Extract is a fairly strong relaxant commonly found in Ambrosia plants. It's one of the most widely available drugs in human space." reagent_state = LIQUID @@ -392,16 +430,10 @@ condiment_center_of_mass = list("x"=16, "y"=8) -/singleton/reagent/ambrosia_extract/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - var/mob/living/carbon/human/H = M - if(istype(H) && (H.species.flags & NO_BLOOD)) - return +/singleton/reagent/drugs/ambrosia_extract/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() M.add_chemical_effect(CE_PULSE, -1) - var/power = (M.chem_doses[type] + REAGENT_VOLUME(holder, type))/2 //Larger the dose and volume, the more affected you are by the chemical. - if(HAS_TRAIT(M, TRAIT_ORIGIN_DRUG_RESISTANCE)) - power = max(power - 5, 0) - M.add_chemical_effect(CE_PAINKILLER, 5 + round(power,5)) if(power < 15) @@ -418,11 +450,11 @@ if(prob(3)) to_chat(M, SPAN_WARNING(pick("It's a little bit difficult to focus.","You feel a bit lethargic."," It's kinda hard to pay attention to what you're doing.", "Am I forgetting something?", "What was I doing again?"))) -/singleton/reagent/ambrosia_extract/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) - . = ..() +/singleton/reagent/drugs/ambrosia_extract/overdose(mob/living/carbon/M, alien, removed = 0, scale = 1, datum/reagents/holder) + ..() M.hallucination = max(M.hallucination, 30 * scale) -/singleton/reagent/joy +/singleton/reagent/drugs/joy name = "Joy" description = "An expensive and illegal drug often abused by those who find no other means to numb their physical and mental pains. A Joy addict is a truly sad sight." reagent_state = LIQUID @@ -432,12 +464,13 @@ od_minimum_dose = 2 taste_description = "tranquility" -/singleton/reagent/joy/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) - to_chat(M, SPAN_GOOD(pick("You feel a numbing sensation spread from within you.", "A numbing sensation builds within you.", "Everything will be okay... just relax."))) + initial_effect_message_list = list("You feel a numbing sensation spread from within you.", "A numbing sensation builds within you.", "Everything will be okay... just relax.") + sober_message_list = list("You feel grounded in the real world again... for better or worse.") -/singleton/reagent/joy/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/joy/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 100) M.add_chemical_effect(CE_NEUROTOXIC, 4*removed) + M.adjustCloneLoss(6*removed) M.add_chemical_effect(CE_PACIFIED, 1) M.eye_blurry = max(M.eye_blurry, 30) M.drowsiness = max(M.drowsiness, 10) @@ -449,7 +482,7 @@ if(prob(3)) to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You lose all sense of connection to the real world.", "Everything is so tranquil.", "You feel totaly detached from reality.", "Your feel disconnected from your body.", "You are aware of nothing but your conscious thoughts.", "You keep falling... and falling... and falling - never stopping.", "Is this what it feels like to be dead?", "Your memories are hazy... all you have ever known is this feeling.", "You're watching yourself from afar - detached from your physical body."))) -/singleton/reagent/joy/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/datum/reagents/holder) +/singleton/reagent/drugs/joy/overdose(mob/living/carbon/M, alien, removed, scale, datum/reagents/holder) M.ear_deaf = 20 M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]) M.adjustOxyLoss(2 * removed) @@ -458,10 +491,7 @@ if(prob(3)) to_chat(M, SPAN_GOOD(pick("You're dying... but you don't care.", "The numbing sensation continues to build and build.", "One more hit... and maybe even death will cease to exist."))) -/singleton/reagent/joy/final_effect(var/mob/living/carbon/human/M, var/alien, var/holder) - to_chat(M, SPAN_GOOD("You feel grounded in the real world again... for better or worse.")) - -/singleton/reagent/xuxigas +/singleton/reagent/drugs/xuxigas name = "Xu'Xi Gas" description = "A recreational drug hailing from Qerr'Malic that must be inhaled. It produces a mild high similar to Wulumunusha and is known to make users susceptible to persuasion. Most forms of Xu'Xi Gas found outside of the Nralakk Federation are cheap, synthetic substitutes. Only works when inhaled." color = "#58D373" @@ -470,21 +500,26 @@ overdose = REAGENTS_OVERDOSE breathe_met = REM*0.2 -/singleton/reagent/xuxigas/affect_breathe(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/xuxigas/affect_breathe(mob/living/carbon/human/M, alien, removed, datum/reagents/holder) M.druggy = max(M.druggy, M.chem_doses[type]/2) M.add_chemical_effect(CE_PULSE, -1) - if(prob(3)) - to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "You feel like you're floating off the ground.", "You don't want this feeling to end.", "You wish to please all those around you.", "You feel particularly susceptible to persuasion.", "Everyone is so trustworthy nowadays."))) - if(prob(2) && !isskrell(M)) - to_chat(M, SPAN_GOOD(pick("You can almost see the currents of air as they dance around you.", "You see the colours around you beginning to bleed together.", "You feel safe and comfortable."))) - if(prob(2) && isskrell(M)) - to_chat(M, SPAN_ALIEN(pick("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?"))) + var/message_list = list("You feel soothed and at ease.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "You feel like you're floating off the ground.", "You don't want this feeling to end.", "You wish to please all those around you.", "You feel particularly susceptible to persuasion.", "Everyone is so trustworthy nowadays.") + var/message_type = "good" + if(isskrell(M)) + message_list += list("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?") + message_type = "alium" + else + message_list += list("You can almost see the currents of air as they dance around you.", "You see the colours around you beginning to bleed together.", "You feel safe and comfortable.") -/singleton/reagent/xuxigas/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(5)) + to_chat(M, span(message_type, pick(message_list))) + + +/singleton/reagent/drugs/xuxigas/overdose(mob/living/carbon/human/M, alien, removed, scale, datum/reagents/holder) if(prob(3)) to_chat(M, SPAN_WARNING(pick("You feel particularly vulnerable to being swayed by those around you...", "You have an urge to please those around you.", "This high cannot end... where can you get more?", "You don't want this feeling to end."))) -/singleton/reagent/skrell_nootropic +/singleton/reagent/drugs/skrell_nootropic name = "Co'qnixq Wuxi" description = "Co'qnixq Wuxi, or Co'qnixq Nootropic, has existed since before Glorsh, and was developed as a cognitive enhancer for Skrell with on-set dementia. When taken, one's consciousness is heightened greatly alongside receiving mild energy boost. Frequently used as a 'smart drug' by students and scientists." color = "#E3B0E5" @@ -496,7 +531,7 @@ var/psi_boosted = FALSE var/initial_stamina -/singleton/reagent/skrell_nootropic/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/skrell_nootropic/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) if(M.psi && !psi_boosted) initial_stamina = M.psi.max_stamina M.psi.max_stamina = M.psi.max_stamina*1.25 @@ -504,14 +539,121 @@ if(prob(2)) to_chat(M, SPAN_GOOD(pick("You have a renewed sense of focus.", "You feel more determined to get things done.", "You feel more confident in your own abilities.", "Your head-space feels tidy and organised - now's the time to get to work.", "You could climb a mountain right now!"))) -/singleton/reagent/skrell_nootropic/final_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/skrell_nootropic/final_effect(mob/living/carbon/M, alien, removed, datum/reagents/holder) if(M.psi && psi_boosted) M.psi.max_stamina = initial_stamina psi_boosted = FALSE -/singleton/reagent/skrell_nootropic/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) +/singleton/reagent/drugs/skrell_nootropic/overdose(mob/living/carbon/M, alien, removed, datum/reagents/holder) M.add_chemical_effect(CE_SPEEDBOOST, 0.5) if(prob(25)) M.add_chemical_effect(CE_NEPHROTOXIC, 0.5) if(prob(2)) to_chat(M, SPAN_WARNING(pick("You can't allow anyone to get between you and your tasks.", "You feel like screaming at the next person who interrupts you.", "No one can stop you!", "You can power through this..."))) + +/singleton/reagent/drugs/cocaine + name = "Cocaine" + description = "A recreational drug known for its sharp, but short, energy boost. Very commonly used by cytherians on Venus." + taste_description = "numbing powder" + color = "#FFFFFF" + + initial_effect_message_list = list("You feel... happy...", "A numbing sensation comes over you...", "Reality feels... distant now...") + sober_message_list = list("You feel like garbage now...", "Your head aches.") + + overdose = 10 + ingest_met = REM * 0.25 // Stomach acid slows rate of absorption + + var/painkiller_mul = 1 + +/singleton/reagent/drugs/cocaine/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() + M.add_chemical_effect(CE_PAINKILLER, painkiller_mul * power * 40) + if(prob(7)) + M.emote(pick("shiver", "sniff")) + +/singleton/reagent/drugs/cocaine/overdose(mob/living/carbon/M, alien, removed, scale, datum/reagents/holder) + ..() + M.add_chemical_effect(CE_HALLUCINATE, power) + M.apply_effect(1, STUTTER) + M.make_jittery(power - 6) + M.add_chemical_effect(CE_NEUROTOXIC, removed / 3) + M.add_chemical_effect(CE_CARDIOTOXIC, removed * 2) + if(prob(10)) + M.add_chemical_effect(CE_NOPULSE, power) + +/singleton/reagent/drugs/cocaine/contemplus + name = "Contemplus" + description = "A designer varient of cocaine originating from Venus. This is designed to enhance the brain activity to provide enhanced thinking abilities." + color = "#fff200" + + sober_message_list = list("You don't feel quite so knowledgable anymore...") + + painkiller_mul = 0.8 // Not as good a painkiller + +/singleton/reagent/drugs/cocaine/contemplus/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() + if(prob(7)) + to_chat(M, SPAN_GOOD(pick("You've got an idea for something.", "You figured out that problem you were having trouble with.", "You think you know what to do now."))) + + +/singleton/reagent/drugs/cocaine/spotlight + name = "Spotlight" + description = "A designer varient of cocaine originating from Venus. Commonly used by the acting scene, this is designed to increase the user's confidence." + color = "#8dff64" + + sober_message_list = list("Your newfound confidence is gone...", "You don't feel so sure about yourself anymore...") + + painkiller_mul = 1.2 // Actors that do their own stunts will want this + +/singleton/reagent/drugs/cocaine/sparkle + name = "Sparkle" + description = "A designer variant of cocaine originating from Venus. Primarily present in the nightlife scene, this is designed to decrease a user's inhibitions and increase pleasure." + color = "#f704d6" + + painkiller_mul = 1.5 + +/singleton/reagent/drugs/cocaine/sparkle/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() + if(prob(7)) + to_chat(M, SPAN_GOOD(pick("You begin to notice a rhythm to all the sounds around you.", "You feel euphoric!", "You could start a party right now!", "Live in the moment!", "All your anxieties seem to fade away."))) + + M.druggy = max(M.druggy, power) + if(prob(15)) + M.emote(pick("laugh", "chuckle", "giggle")) + +/singleton/reagent/drugs/heroin + name = "Heroin" + description = "An extremely potent but dangerous and addictive opiate refined from morphine, its use is nearly-universally banned across the Orion Spur. The possession and usage of heroin is illegal in the Republic of Biesel." + reagent_state = SOLID + color = "#ffffff" + metabolism_min = 0.5 + overdose = 5 + od_minimum_dose = 2 + +/singleton/reagent/drugs/heroin/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() + if(prob(7)) + to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end."))) + + if(check_min_dose(M)) + M.add_chemical_effect(CE_PAINKILLER, 180) + if(!M.chem_effects[CE_CLEARSIGHT]) + M.eye_blurry = max(M.eye_blurry, 10) + if(!M.chem_effects[CE_STRAIGHTWALK]) + M.confused = max(M.confused, 20) + + var/mob/living/carbon/human/H = M + if(!istype(H)) + return + var/bac = H.get_blood_alcohol() + if(bac >= 0.01) + overdose(M, alien, removed, holder) // Straight to overdose + +/singleton/reagent/drugs/heroin/overdose(mob/living/carbon/M, alien, removed, datum/reagents/holder) + ..() + M.druggy = max(M.druggy, 20) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]) + if(M.losebreath < 15) + M.losebreath++ + +#undef DRUG_MESSAGE_DELAY diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 3fa419ef571..f52f73ca19b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -514,6 +514,18 @@ M.adjustToxLoss(1.5 * removed) //Copied from tea. though i feel it should be stronger as its not diluted with water +/singleton/reagent/nutriment/cocagrounds + name = "Coca Grounds" + description = "Enjoy the great taste of tea." + reagent_state = SOLID + nutriment_factor = 1 + color = "#056608" + taste_description = "potent gritty tea" + taste_mult = 0.4 + condiment_name = "ground tea" + condiment_icon_state = "tea" + condiment_center_of_mass = list("x"=16, "y"=8) + /singleton/reagent/nutriment/soysauce name = "Soy Sauce" description = "A salty sauce made from the soy plant." @@ -1732,6 +1744,18 @@ glass_name = "glass of tropical iced tea" glass_desc = "For maximum enjoyment, drink while at the beach on a warm summer day." +/singleton/reagent/drink/tea/cocatea + name = "Mate de Coca" + description = "An herbal tea made of coca leaves, this tea originated in South America in the Andean countries, and is still consumed there and in Mictlan to this day." + color = "#adff2f" + taste_description = "mildly bitter, but sweet" + + glass_icon_state = "bigteacup" + glass_name = "cup of mate de coca" + glass_desc = "An herbal tea made of coca leaves, this tea originated in South America in the Andean countries, and is still consumed there and in Mictlan to this day." + adj_dizzy = -1 + adj_drowsy = -3 + adj_sleepy = -3 //Coffee //========== @@ -2168,6 +2192,22 @@ glass_desc = "A glass of refreshing Comet Cola" glass_center_of_mass = list("x"=17, "y"=6) +/singleton/reagent/drink/coca_cola + name = "Coca Cola" + description = "A very refreshing beverage, not for children." + reagent_state = LIQUID + color = "#080400" + adj_dizzy = -1 + adj_drowsy = -5 + adj_sleepy = -3 + taste_description = "a very strong cola" + carbonated = TRUE + + glass_icon_state = "spacecola" + glass_name = "glass of coca cola" + glass_desc = "A glass of very refreshing coca cola." + glass_center_of_mass = list("x"=17, "y"=6) + /singleton/reagent/drink/spacemountainwind name = "Stellar Jolt" description = "For those who have a stronger need for caffeine than they have sense." diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 4cf97649c03..c508adb1889 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -345,9 +345,120 @@ if(!M.chem_effects[CE_STRAIGHTWALK]) M.confused = max(M.confused, 6) +/singleton/reagent/morphine + name = "Morphine" + description = "Morphine is a very strong medication derived from the opium plant. It is extremely effective at treating severe pain. The drug is highly addictive and sense-numbing. Unlike other painkillers, morphine can be inhaled." + reagent_state = LIQUID + color = "#5c4033" + overdose = 20 + od_minimum_dose = 2 + specific_heat = 1 + scannable = TRUE + metabolism = REM / 3.33 // 0.06ish units per tick + ingest_met = REM / 1.5 // Should be 0.13 units per tick + breathe_met = REM * 4 // .8 units per tick + specific_heat = 1.2 + +/singleton/reagent/morphine/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel."))) + +/singleton/reagent/morphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end."))) + + if(check_min_dose(M)) + M.add_chemical_effect(CE_PAINKILLER, 120) + M.add_chemical_effect(CE_SLOWDOWN, 1) + if(!M.chem_effects[CE_CLEARSIGHT]) + M.eye_blurry = max(M.eye_blurry, 5) + if(!M.chem_effects[CE_STRAIGHTWALK]) + M.confused = max(M.confused, 15) + + var/mob/living/carbon/human/H = M + if(!istype(H)) + return + var/bac = H.get_blood_alcohol() + if(bac >= 0.02) + M.hallucination = max(M.hallucination, bac * 300) + M.druggy = max(M.druggy, bac * 100) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) + if(bac >= 0.04) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", ""))) + if(M.losebreath < 15) + M.losebreath++ + +/singleton/reagent/morphine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + ..() + M.druggy = max(M.druggy, 20) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) + if(M.losebreath < 15) + M.losebreath++ + +/singleton/reagent/tramarine + name = "Tramarine" + description = "Tramarine is a synthetic form of morphine developed by NanoTrasen early in its history, that can be used in its place for most medical purposes. It is known to be more dangerous however with alcohol, other opiods, or an overdose." + reagent_state = LIQUID + color = "#c4a05d" + overdose = 20 + od_minimum_dose = 2 + scannable = TRUE + metabolism = REM / 3.33 // 0.06ish units per tick + ingest_met = REM / 1.5 // Should be 0.13 units per tick + breathe_met = REM * 4 // .8 units per tick + +/singleton/reagent/tramarine/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel."))) + +/singleton/reagent/tramarine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end."))) + + if(check_min_dose(M)) + M.add_chemical_effect(CE_PAINKILLER, 90) + M.add_chemical_effect(CE_SLOWDOWN, 2) + if(!M.chem_effects[CE_CLEARSIGHT]) + M.eye_blurry = max(M.eye_blurry, 5) + if(!M.chem_effects[CE_STRAIGHTWALK]) + M.confused = max(M.confused, 15) + if(prob(7)) + M.emote(pick("twitch", "drool", "moan", "gasp")) + + var/mob/living/carbon/human/H = M + if(!istype(H)) + return + var/bac = H.get_blood_alcohol() + if(bac >= 0.02) + M.hallucination = max(M.hallucination, bac * 300) + M.druggy = max(M.druggy, bac * 100) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) + if(bac >= 0.04) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", ""))) + if(M.losebreath < 15) + M.losebreath++ + M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) + M.add_chemical_effect(CE_PULSE, 2) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?"))) + +/singleton/reagent/tramarine/overdose(mob/living/carbon/M, alien, datum/reagents/holder) + ..() + M.druggy = max(M.druggy, 20) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) + if(M.losebreath < 15) + M.losebreath++ + M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) + M.add_chemical_effect(CE_PULSE, 2) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?"))) + M.make_jittery(10) + M.dizziness = max(150, M.dizziness) + M.make_dizzy(10) + /singleton/reagent/oxycomorphine name = "Oxycomorphine" - description = "Oxycomorphine is a highly advanced, powerful analgesic medication which is extremely effective at treating severe-agonising pain as a result of injuries usually incompatible with life. The drug is highly addictive and sense-numbing. Oxycomorphine is not effective when inhaled." + description = "Oxycomorphine is a highly advanced, powerful analgesic medication which is extremely effective at treating severe-agonising pain as a result of injuries usually incompatible with life. The drug is highly addictive and sense-numbing. Unlike other painkillers, oxycomorphine can be inhaled." reagent_state = LIQUID color = "#800080" overdose = 10 @@ -358,7 +469,6 @@ breathe_met = REM * 4 // .8 units per tick taste_description = "bitterness" metabolism_min = 0.005 - breathe_mul = 0 /singleton/reagent/oxycomorphine/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel."))) @@ -369,6 +479,7 @@ if(check_min_dose(M)) M.add_chemical_effect(CE_PAINKILLER, 200) + M.add_chemical_effect(CE_SLOWDOWN, 2) if(!M.chem_effects[CE_CLEARSIGHT]) M.eye_blurry = max(M.eye_blurry, 5) if(!M.chem_effects[CE_STRAIGHTWALK]) @@ -416,7 +527,7 @@ M.AdjustParalysis(-1) M.AdjustStunned(-1) M.AdjustWeakened(-1) - holder.remove_reagent(/singleton/reagent/mindbreaker, 5) + holder.remove_reagent(/singleton/reagent/drugs/mindbreaker, 5) M.hallucination = max(0, M.hallucination - 10) M.eye_blurry = max(M.eye_blurry - 5, 0) M.confused = max(M.confused - 10, 0) @@ -1001,7 +1112,6 @@ if(H.chem_doses[type] < overdose && H.shock_stage < 5) //Don't want feel-good messages when we're suffering an OD or particularly hurt/injured to_chat(H, SPAN_GOOD("[pick(goodmessage)]")) - LAZYINITLIST(holder.reagent_data) LAZYSET(holder.reagent_data[type], "last_tick_time", world.time + (messagedelay)) /singleton/reagent/mental/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) @@ -1020,10 +1130,29 @@ goodmessage = list("You feel good.","You feel relaxed.","You feel alert and focused.") /singleton/reagent/mental/nicotine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/scale, var/datum/reagents/holder) - . = ..() + ..() M.adjustOxyLoss(10 * removed * scale) M.add_chemical_effect(CE_PULSE, 0.5) +/singleton/reagent/mental/caromeg + name = "Caromeg" + description = "Caromeg is a stimulant commonly found in oracle products. It encourages sociability and pleasure, but in high doses can promote paranoia, severe fever, and brain damage." + reagent_state = LIQUID + color = "#230101" + metabolism = 0.0016 * REM + overdose = 15 + od_minimum_dose = 3 + taste_description = "sour staleness" + messagedelay = MEDICATION_MESSAGE_DELAY * 0.75 + goodmessage = list("You feel like talking a bit more.", "You feel better than usual.", "Your anxieties disappear.") + +/singleton/reagent/mental/caromeg/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/scale, var/datum/reagents/holder) + ..() + M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) + M.add_chemical_effect(CE_NEUROTOXIC, 1 * removed * scale) + if (prob(3)) + to_chat(M, SPAN_DANGER(pick("Everyone around you is plotting against you...", "They are laughing at you, not with you...", "They'll kill you if you're not careful...", "You can't trust anybody..."))) + /singleton/reagent/mental/corophenidate name = "Corophenidate" description = "Corophenidate is a new generation, psychoactive stimulant used in the treatment of ADHD and ADD. It has far fewer side effects than previous generations of CNS stimulants. Withdrawal symptoms include hallucinations and disruption of focus." @@ -1523,6 +1652,17 @@ var/obj/item/organ/internal/heart = M.internal_organs_by_name[BP_HEART] M.add_chemical_effect(CE_CARDIOTOXIC, heart.max_damage * 0.05) +/singleton/reagent/menthol + name = "Menthol" + description = "Tastes naturally minty, and imparts a very mild numbing sensation." + taste_description = "mint" + reagent_state = LIQUID + color = "#80af9c" + metabolism = REM * 0.002 + overdose = REAGENTS_OVERDOSE + scannable = TRUE + specific_heat = 1.0 + //Secret Chems /singleton/reagent/elixir name = "Elixir of Life" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 1ed62e8b428..9d3454abc90 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -674,6 +674,33 @@ nicotine = REM * 0.1 taste_mult = 2 +/singleton/reagent/toxin/oracle + name = "Oracle" + description = "Oracle originates from Vysoka, where it is often chewed, or dried and smoked or snorted. This is a common variant." + reagent_state = SOLID + color = "#ad5555" + taste_description = "tartness" + strength = 0 + taste_mult = 10 + var/caromeg = 0.2 + +/singleton/reagent/toxin/oracle/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + holder.add_reagent(/singleton/reagent/mental/caromeg, removed * caromeg) + +/singleton/reagent/toxin/oracle/rich + name = "Vedamor Oracle" + color = "#ed1c1c" + description = "Vedamor is a city-state on Vysoka, renown for its high-quality soil. Their oracle is renown for being sweeter and more effective than the common variety." + taste_description = "sweetness" + caromeg = 0.5 + +/singleton/reagent/toxin/oracle/liquid + name = "Caromeg Solution" + description = "A diluted caromeg solution, refined from oracle." + reagent_state = LIQUID + caromeg = REM * 0.1 + taste_mult = 2 + /mob/living/carbon/human/proc/berserk_start() to_chat(src, SPAN_DANGER("An uncontrollable rage courses through your body and overtakes your thoughts - your blood begins to boil with fury!")) add_client_color(/datum/client_color/berserk) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index f8877e44c6b..0bbef8d7e34 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -175,8 +175,30 @@ name = "Oxycomorphine" id = "oxycomorphine" result = /singleton/reagent/oxycomorphine - required_reagents = list(/singleton/reagent/alcohol = 1, /singleton/reagent/mortaphenyl = 1) + required_reagents = list(/singleton/reagent/morphine = 1, /singleton/reagent/mortaphenyl = 1) catalysts = list(/singleton/reagent/toxin/phoron = 5) + result_amount = 2 + +/datum/chemical_reaction/tramarineoxycomorphine + name = "Oxycomorphine (Artificial)" + id = "oxycomorphineartificial" + result = /singleton/reagent/oxycomorphine + required_reagents = list(/singleton/reagent/tramarine = 1, /singleton/reagent/mortaphenyl = 1) + catalysts = list(/singleton/reagent/toxin/phoron = 5) + result_amount = 1 + +/datum/chemical_reaction/heroin + name = "Heroin" + id = "heroin" + result = /singleton/reagent/drugs/heroin + required_reagents = list(/singleton/reagent/morphine = 2, /singleton/reagent/acetone = 2) + result_amount = 1 + +/datum/chemical_reaction/tramarineheroin + name = "Heroin (Artificial)" + id = "heroinartificial" + result = /singleton/reagent/drugs/heroin + required_reagents = list(/singleton/reagent/tramarine = 3, /singleton/reagent/acetone = 2) result_amount = 1 /datum/chemical_reaction/sterilizine @@ -207,13 +229,41 @@ required_reagents = list(/singleton/reagent/aluminum = 1, /singleton/reagent/iron = 1, /singleton/reagent/acetone = 1) result_amount = 3 -/datum/chemical_reaction/space_drugs +/datum/chemical_reaction/mms name = "Mercury Monolithium Sucrose" id = "space_drugs" - result = /singleton/reagent/space_drugs + result = /singleton/reagent/drugs/mms required_reagents = list(/singleton/reagent/mercury = 1, /singleton/reagent/sugar = 1, /singleton/reagent/lithium = 1) result_amount = 3 +/datum/chemical_reaction/cocaine + name = "Cocaine" + id = "cocaine" + result = /singleton/reagent/drugs/cocaine + required_reagents = list(/singleton/reagent/nutriment/cocagrounds = 1, /singleton/reagent/acid/hydrochloric = 1) + result_amount = 1 + +/datum/chemical_reaction/contemplus + name = "Contemplus" + id = "contemplus" + result = /singleton/reagent/drugs/cocaine/contemplus + required_reagents = list(/singleton/reagent/drugs/cocaine = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/mental/emoxanyl = 1) + result_amount = 2 + +/datum/chemical_reaction/spotlight + name = "Spotlight" + id = "spotlight" + result = /singleton/reagent/drugs/cocaine/spotlight + required_reagents = list(/singleton/reagent/drugs/cocaine = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/mental/parvosil = 1) + result_amount = 2 + +/datum/chemical_reaction/sparkle + name = "Sparkle" + id = "sparkle" + result = /singleton/reagent/drugs/cocaine/sparkle + required_reagents = list(/singleton/reagent/drugs/cocaine = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/mental/minaphobin = 1) + result_amount = 2 + /datum/chemical_reaction/lube name = "Space Lube" id = "lube" @@ -252,7 +302,7 @@ /datum/chemical_reaction/impedrezene name = "Impedrezene" id = "impedrezene" - result = /singleton/reagent/impedrezene + result = /singleton/reagent/drugs/impedrezene required_reagents = list(/singleton/reagent/mercury = 1, /singleton/reagent/acetone = 1, /singleton/reagent/sugar = 1) result_amount = 2 @@ -290,7 +340,7 @@ /datum/chemical_reaction/cryptobiolin name = "Cryptobiolin" id = "cryptobiolin" - result = /singleton/reagent/cryptobiolin + result = /singleton/reagent/drugs/cryptobiolin required_reagents = list(/singleton/reagent/potassium = 1, /singleton/reagent/acetone = 1, /singleton/reagent/sugar = 1) result_amount = 3 @@ -379,7 +429,7 @@ name = "Thetamycin" id = "thetamycin" result = /singleton/reagent/thetamycin - required_reagents = list(/singleton/reagent/cryptobiolin = 1, /singleton/reagent/dylovene = 1) + required_reagents = list(/singleton/reagent/drugs/cryptobiolin = 1, /singleton/reagent/dylovene = 1) result_amount = 2 /datum/chemical_reaction/steramycin @@ -407,7 +457,7 @@ name = "Cetahydramine" id = "cetahydramine" result = /singleton/reagent/cetahydramine - required_reagents = list(/singleton/reagent/cryptobiolin = 1, /singleton/reagent/inaprovaline = 1) + required_reagents = list(/singleton/reagent/drugs/cryptobiolin = 1, /singleton/reagent/inaprovaline = 1) result_amount = 2 /datum/chemical_reaction/asinodryl @@ -492,7 +542,7 @@ /datum/chemical_reaction/mindbreaker name = "Mindbreaker Toxin" id = "mindbreaker" - result = /singleton/reagent/mindbreaker + result = /singleton/reagent/drugs/mindbreaker required_reagents = list(/singleton/reagent/silicon = 1, /singleton/reagent/hydrazine = 1, /singleton/reagent/dylovene = 1) result_amount = 3 @@ -603,7 +653,7 @@ name = "Rezadone" id = "rezadone" result = /singleton/reagent/rezadone - required_reagents = list(/singleton/reagent/toxin/carpotoxin = 1, /singleton/reagent/cryptobiolin = 1, /singleton/reagent/copper = 1) + required_reagents = list(/singleton/reagent/toxin/carpotoxin = 1, /singleton/reagent/drugs/cryptobiolin = 1, /singleton/reagent/copper = 1) result_amount = 3 /datum/chemical_reaction/lexorin @@ -693,20 +743,28 @@ required_reagents = list(/singleton/reagent/dylovene = 1, /singleton/reagent/carbon = 1, /singleton/reagent/sulfur = 1) result_amount = 2 +/datum/chemical_reaction/tramarine + name = "Tramarine" + id = "tramarine" + result = /singleton/reagent/tramarine + required_reagents = list(/singleton/reagent/toxin/potassium_chloride = 1, /singleton/reagent/polysomnine = 1) + catalysts = list(/singleton/reagent/sodium = 5) + result_amount = 1 + //Mental Medication /datum/chemical_reaction/corophenidate name = "Corophenidate" id = "corophenidate" result = /singleton/reagent/mental/corophenidate - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/hydrazine = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/hydrazine = 1) result_amount = 2 /datum/chemical_reaction/minaphobin name = "Minaphobin" id = "minaphobin" result = /singleton/reagent/mental/minaphobin - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/carbon = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/carbon = 1) result_amount = 2 /datum/chemical_reaction/adrenaline @@ -719,49 +777,49 @@ name = "Neurostabin" id = "neurostabin" result = /singleton/reagent/mental/neurostabin - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/iron = 1, /singleton/reagent/potassium = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/iron = 1, /singleton/reagent/potassium = 1) result_amount = 3 /datum/chemical_reaction/parvosil name = "Parvosil" id = "parvosil" result = /singleton/reagent/mental/parvosil - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/aluminum = 1, /singleton/reagent/potassium = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/aluminum = 1, /singleton/reagent/potassium = 1) result_amount = 3 /datum/chemical_reaction/emoxanyl name = "Emoxanyl" id = "emoxanyl" result = /singleton/reagent/mental/emoxanyl - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/silicon = 1, /singleton/reagent/alcohol = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/silicon = 1, /singleton/reagent/alcohol = 1) result_amount = 3 /datum/chemical_reaction/orastabin name = "Orastabin" id = "orastabin" result = /singleton/reagent/mental/orastabin - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/sodium = 1, /singleton/reagent/tungsten = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/sodium = 1, /singleton/reagent/tungsten = 1) result_amount = 3 /datum/chemical_reaction/neurapan name = "Neurapan" id = "neurapan" result = /singleton/reagent/mental/neurapan - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/space_drugs = 1, /singleton/reagent/alcohol = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/drugs/mms = 1, /singleton/reagent/alcohol = 1) result_amount = 3 /datum/chemical_reaction/nerospectan name = "Nerospectan" id = "nerospectan" result = /singleton/reagent/mental/nerospectan - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/space_drugs = 1, /singleton/reagent/silicon = 1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/drugs/mms = 1, /singleton/reagent/silicon = 1) result_amount = 3 /datum/chemical_reaction/truthserum name = "Truthserum" id = "truthserum" result = /singleton/reagent/mental/truthserum - required_reagents = list(/singleton/reagent/mindbreaker = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/toxin/phoron = 0.1) + required_reagents = list(/singleton/reagent/drugs/mindbreaker = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/toxin/phoron = 0.1) result_amount = 2 /datum/chemical_reaction/pacifier @@ -781,22 +839,22 @@ /datum/chemical_reaction/joy name = "Joy" id = "joy" - result = /singleton/reagent/joy - required_reagents = list(/singleton/reagent/mental/neurapan = 1, /singleton/reagent/oxycomorphine = 2) + result = /singleton/reagent/drugs/joy + required_reagents = list(/singleton/reagent/mental/neurapan = 1, /singleton/reagent/drugs/heroin = 2) result_amount = 1 /datum/chemical_reaction/xuxigas name = "Xu'Xi Gas" id = "xuxigas" - result = /singleton/reagent/xuxigas - required_reagents = list(/singleton/reagent/dexalin = 2, /singleton/reagent/space_drugs = 2, /singleton/reagent/mental/truthserum = 1) + result = /singleton/reagent/drugs/xuxigas + required_reagents = list(/singleton/reagent/dexalin = 2, /singleton/reagent/drugs/mms = 2, /singleton/reagent/mental/truthserum = 1) required_temperature_min = T0C + 134 result_amount = 5 /datum/chemical_reaction/skrell_nootropic name = "Co'qnixq Wuxi" id = "skrell_nootropic" - result = /singleton/reagent/skrell_nootropic + result = /singleton/reagent/drugs/skrell_nootropic required_reagents = list(/singleton/reagent/wulumunusha = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/mental/emoxanyl = 1) result_amount = 3 @@ -819,7 +877,7 @@ /datum/chemical_reaction/raskara_dust name = "Raskara Dust" id = "raskara_dust" - result = /singleton/reagent/raskara_dust + result = /singleton/reagent/drugs/raskara_dust required_reagents = list(/singleton/reagent/toxin/fertilizer/monoammoniumphosphate = 1, /singleton/reagent/spacecleaner = 1, /singleton/reagent/sodiumchloride = 2) // extinguisher, cleaner, salt required_temperature_min = T0C + 127 // barely over boiling point of water, 400C result_amount = 2 @@ -827,7 +885,7 @@ /datum/chemical_reaction/nightjuice name = "Nightlife" id = "night_juice" - result = /singleton/reagent/night_juice + result = /singleton/reagent/drugs/night_juice required_reagents = list(/singleton/reagent/mental/corophenidate = 1, /singleton/reagent/synaptizine = 1, /singleton/reagent/nitroglycerin = 1) required_temperature_min = T0C + 200 result_amount = 3 @@ -1934,6 +1992,13 @@ required_reagents = list(/singleton/reagent/nutriment/teagrounds = 1, /singleton/reagent/water = 5) result_amount = 5 +/datum/chemical_reaction/drink/cocatea + name = "Mate de Coca" + id = "cocatea" + result = /singleton/reagent/drink/tea/cocatea + required_reagents = list(/singleton/reagent/nutriment/cocagrounds = 1, /singleton/reagent/water = 5) + result_amount = 5 + /datum/chemical_reaction/drink/greentea name = "Green Tea" id = "greentea" @@ -1962,6 +2027,13 @@ required_reagents = list(/singleton/reagent/uranium = 1, /singleton/reagent/drink/space_cola = 5) result_amount = 5 +/datum/chemical_reaction/drink/coca_cola + name = "Coca Cola" + id = "coca_cola" + result = /singleton/reagent/drink/coca_cola + required_reagents = list(/singleton/reagent/nutriment/cocagrounds = 1, /singleton/reagent/drink/space_cola = 5) + result_amount = 5 + /datum/chemical_reaction/moonshine name = "Moonshine" id = "moonshine" @@ -2604,7 +2676,7 @@ name = "Hippies Delight" id = "hippiesdelight" result = /singleton/reagent/alcohol/hippiesdelight - required_reagents = list(/singleton/reagent/psilocybin = 1, /singleton/reagent/alcohol/gargleblaster = 1) + required_reagents = list(/singleton/reagent/drugs/psilocybin = 1, /singleton/reagent/alcohol/gargleblaster = 1) result_amount = 2 /datum/chemical_reaction/drink/bananahonk diff --git a/code/modules/reagents/reagent_containers/food/snacks/baked.dm b/code/modules/reagents/reagent_containers/food/snacks/baked.dm index b61ea87d5e7..af0846a6023 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/baked.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/baked.dm @@ -128,6 +128,6 @@ trash = /obj/item/trash/snack_bowl filling_color = "#42B873" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/psilocybin = 6) + reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/drugs/psilocybin = 6) reagent_data = list(/singleton/reagent/nutriment = list("mushroom" = 6)) bitesize = 3 diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/reagents/reagent_containers/food/snacks/meat.dm index 08290e84a56..05228a7db70 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/meat.dm @@ -203,7 +203,7 @@ icon_state = "vannameat" item_state = "vannameat" contained_sprite = TRUE - reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/mindbreaker = 6) + reagents_to_add = list(/singleton/reagent/nutriment/protein = 6, /singleton/reagent/drugs/mindbreaker = 6) /obj/item/reagent_containers/food/snacks/meat/bat name = "bat wings" @@ -220,7 +220,7 @@ icon_state = "hugemushroomslice" filling_color = "#E0D7C5" - reagents_to_add = list(/singleton/reagent/nutriment = 3, /singleton/reagent/psilocybin = 3) + reagents_to_add = list(/singleton/reagent/nutriment = 3, /singleton/reagent/drugs/psilocybin = 3) reagent_data = list(/singleton/reagent/nutriment = list("raw" = 2, "mushroom" = 2)) bitesize = 6 diff --git a/code/modules/reagents/reagent_containers/food/snacks/pastries.dm b/code/modules/reagents/reagent_containers/food/snacks/pastries.dm index 35dd73d0a22..1fef916c651 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/pastries.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/pastries.dm @@ -82,7 +82,7 @@ drop_sound = /singleton/sound_category/tray_hit_sound filling_color = "#FF00F7" center_of_mass = list("x"=15, "y"=11) - reagents_to_add = list(/singleton/reagent/nutriment = 8, /singleton/reagent/psilocybin = 8) + reagents_to_add = list(/singleton/reagent/nutriment = 8, /singleton/reagent/drugs/psilocybin = 8) reagent_data = list(/singleton/reagent/nutriment = list("waffle" = 7, "sweetness" = 1)) bitesize = 4 @@ -149,7 +149,7 @@ trash = /obj/item/trash/brownies filling_color = "#301301" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/singleton/reagent/nutriment = 8, /singleton/reagent/browniemix = 4, /singleton/reagent/ambrosia_extract = 4, /singleton/reagent/bicaridine = 2, /singleton/reagent/kelotane = 2, /singleton/reagent/toxin = 2) + reagents_to_add = list(/singleton/reagent/nutriment = 8, /singleton/reagent/browniemix = 4, /singleton/reagent/drugs/ambrosia_extract = 4, /singleton/reagent/bicaridine = 2, /singleton/reagent/kelotane = 2, /singleton/reagent/toxin = 2) reagent_data = list(/singleton/reagent/nutriment = list("brownies" = 5)) bitesize = 3 @@ -164,7 +164,7 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/cosmicbrowniesslice/filled - reagents_to_add = list(/singleton/reagent/nutriment = 1, /singleton/reagent/browniemix = 1, /singleton/reagent/ambrosia_extract = 1, /singleton/reagent/bicaridine = 1, /singleton/reagent/kelotane = 1, /singleton/reagent/toxin = 1) + reagents_to_add = list(/singleton/reagent/nutriment = 1, /singleton/reagent/browniemix = 1, /singleton/reagent/drugs/ambrosia_extract = 1, /singleton/reagent/bicaridine = 1, /singleton/reagent/kelotane = 1, /singleton/reagent/toxin = 1) reagent_data = list(/singleton/reagent/nutriment = list("brownies" = 2)) // Cakes. @@ -518,7 +518,7 @@ icon_state = "amanita_pie" filling_color = "#FFCCCC" center_of_mass = list("x"=17, "y"=9) - reagents_to_add = list(/singleton/reagent/nutriment = 5, /singleton/reagent/toxin/amatoxin = 3, /singleton/reagent/psilocybin = 1) + reagents_to_add = list(/singleton/reagent/nutriment = 5, /singleton/reagent/toxin/amatoxin = 3, /singleton/reagent/drugs/psilocybin = 1) reagent_data = list(/singleton/reagent/nutriment = list("sweetness" = 3, "mushroom" = 3, "pie" = 2)) bitesize = 3 diff --git a/code/modules/reagents/reagent_containers/food/snacks/processed.dm b/code/modules/reagents/reagent_containers/food/snacks/processed.dm index 56244a21458..4e37c75bbb1 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/processed.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/processed.dm @@ -617,7 +617,7 @@ trash = /obj/item/trash/snack_bowl filling_color = "#ED0758" center_of_mass = list("x"=16, "y"=5) - reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/toxin/amatoxin = 6, /singleton/reagent/psilocybin = 3) + reagents_to_add = list(/singleton/reagent/nutriment = 6, /singleton/reagent/toxin/amatoxin = 6, /singleton/reagent/drugs/psilocybin = 3) reagent_data = list(/singleton/reagent/nutriment = list("jelly" = 3, "mushroom" = 3)) bitesize = 3 diff --git a/code/modules/reagents/reagent_containers/inhaler.dm b/code/modules/reagents/reagent_containers/inhaler.dm index 9eebbd1ff24..ca99be1178f 100644 --- a/code/modules/reagents/reagent_containers/inhaler.dm +++ b/code/modules/reagents/reagent_containers/inhaler.dm @@ -193,7 +193,7 @@ /obj/item/reagent_containers/inhaler/xuxigas/Initialize() . =..() - reagents.add_reagent(/singleton/reagent/xuxigas, volume) + reagents.add_reagent(/singleton/reagent/drugs/xuxigas, volume) update_icon() return @@ -241,7 +241,7 @@ /obj/item/reagent_containers/inhaler/space_drugs/Initialize() . =..() - reagents.add_reagent(/singleton/reagent/space_drugs, volume) + reagents.add_reagent(/singleton/reagent/drugs/mms, volume) update_icon() return @@ -286,6 +286,6 @@ /obj/item/reagent_containers/inhaler/raskara_dust/Initialize() . =..() - reagents.add_reagent(/singleton/reagent/raskara_dust, volume) + reagents.add_reagent(/singleton/reagent/drugs/raskara_dust, volume) update_icon() return diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 9fb5f1e90c5..44f3ab4fd19 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -243,19 +243,49 @@ name = "Happy Pill" desc = "Happy happy joy joy!" icon_state = "pill_happy" - reagents_to_add = list(/singleton/reagent/space_drugs = 15, /singleton/reagent/sugar = 15) + reagents_to_add = list(/singleton/reagent/drugs/mms = 15, /singleton/reagent/sugar = 15) /obj/item/reagent_containers/pill/zoom name = "Zoom Pill" desc = "Zoooom!" icon_state = "pill18" - reagents_to_add = list(/singleton/reagent/impedrezene = 5, /singleton/reagent/synaptizine = 5, /singleton/reagent/hyperzine = 5) + reagents_to_add = list(/singleton/reagent/drugs/impedrezene = 5, /singleton/reagent/synaptizine = 5, /singleton/reagent/hyperzine = 5) /obj/item/reagent_containers/pill/joy name = "Joy Pill" desc = "Peace, at last." icon_state = "pill8" - reagents_to_add = list(/singleton/reagent/joy = 5) + reagents_to_add = list(/singleton/reagent/drugs/joy = 5) + +/obj/item/reagent_containers/pill/heroin + name = "heroin pill" + desc = "The pain will pass..." + icon_state = "pill7" + reagents_to_add = list(/singleton/reagent/drugs/heroin = 5) + +/obj/item/reagent_containers/pill/cocaine + name = "cocaine tablet" + desc = "For those long nights out." + icon_state = "pill18" + reagents_to_add = list(/singleton/reagent/drugs/cocaine = 10) + +/obj/item/reagent_containers/pill/contemplus + name = "\improper Contemplus tablet" + desc = "For that essay that is due tomorrow." + icon_state = "pill19" + reagents_to_add = list(/singleton/reagent/drugs/cocaine/contemplus = 10) + +/obj/item/reagent_containers/pill/spotlight + name = "\improper Spotlight tablet" + desc = "For that acting audition today." + icon_state = "pill2" + reagents_to_add = list(/singleton/reagent/drugs/cocaine/spotlight = 10) + +/obj/item/reagent_containers/pill/sparkle + name = "\improper Sparkle tablet" + desc = "For those long nights out at the club." + icon_state = "pill20" + reagents_to_add = list(/singleton/reagent/drugs/cocaine/sparkle = 10) /obj/item/reagent_containers/pill/thetamycin name = "15u Thetamycin Pill" @@ -290,7 +320,7 @@ name = "5u Co'qnixq Wuxi Pill" desc = "Used to treat dementia." icon_state = "pill8" - reagents_to_add = list(/singleton/reagent/skrell_nootropic = 5) + reagents_to_add = list(/singleton/reagent/drugs/skrell_nootropic = 5) /obj/item/reagent_containers/pill/hyronalin name = "7u Hyronalin" diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 27cd6337959..00323f83dbf 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -414,7 +414,7 @@ /obj/item/reagent_containers/syringe/drugs name = "Syringe (drugs)" desc = "Contains aggressive drugs meant for torture." - reagents_to_add = list(/singleton/reagent/toxin/panotoxin = 5, /singleton/reagent/mindbreaker = 10) + reagents_to_add = list(/singleton/reagent/toxin/panotoxin = 5, /singleton/reagent/drugs/mindbreaker = 10) /obj/item/reagent_containers/syringe/drugs/Initialize() . = ..() diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm index 2c04e145b5e..8db2a7d44b7 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm @@ -207,7 +207,7 @@ my_effect.ToggleActivate() if(secondary_effect?.trigger == TRIGGER_VOLATILE) secondary_effect.ToggleActivate() - else if(W.reagents.has_reagent(/singleton/reagent/toxin, 1) || W.reagents.has_reagent(/singleton/reagent/toxin/cyanide, 1) || W.reagents.has_reagent(/singleton/reagent/cryptobiolin, 1) || W.reagents.has_reagent(/singleton/reagent/impedrezene, 1) || W.reagents.has_reagent(/singleton/reagent/toxin/amatoxin, 1) || W.reagents.has_reagent(/singleton/reagent/alcohol/neurotoxin, 1)) + else if(W.reagents.has_reagent(/singleton/reagent/toxin, 1) || W.reagents.has_reagent(/singleton/reagent/toxin/cyanide, 1) || W.reagents.has_reagent(/singleton/reagent/drugs/cryptobiolin, 1) || W.reagents.has_reagent(/singleton/reagent/drugs/impedrezene, 1) || W.reagents.has_reagent(/singleton/reagent/toxin/amatoxin, 1) || W.reagents.has_reagent(/singleton/reagent/alcohol/neurotoxin, 1)) if(my_effect.trigger == TRIGGER_TOXIN) my_effect.ToggleActivate() if(secondary_effect?.trigger == TRIGGER_TOXIN) diff --git a/html/changelogs/GeneralCamo - Drug Expansion.yml b/html/changelogs/GeneralCamo - Drug Expansion.yml new file mode 100644 index 00000000000..5c3600d29d7 --- /dev/null +++ b/html/changelogs/GeneralCamo - Drug Expansion.yml @@ -0,0 +1,52 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: GeneralCamo + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added morphine, which replaces bicaridine in poppies. Morphine is an effective but potentially dangerous painkiller." + - tweak: "Oxycomorphine is now created from one unit of mortaphenyl and one unit of morphine, and produces two units." + - rscadd: "Added tramarine, an artificial replacement of morphine. It can be used in the creation of oxycomorphine, but only produces one unit." + - tweak: "Oxycomorphine is now effective when inhaled." + - rscadd: "Added heroin, an extremely potent but dangerous drug." + - rscadd: "Added cocaine, a potent drug that can be refined from coca leaves." + - rscadd: "Added oracle, a plant originating from Vysoka that contains caromeg, and can be used as a tobacco alternative. Sprites by Wezzy." + - rscadd: "Added caromeg, a nicotine alternative that promotes sociability and pleasure." + - tweak: "Joy now causes genetic damage, and requires heroin in its recipe instead of oxycomorphine." + - tweak: "Adhomian cigarettes from the NKA now contain menthol, a minty additive." + - refactor: "Refactored drugs to be more consistent in their effects." + - tweak: "Serotrotium now has unique effects for overdosing." diff --git a/icons/obj/cigs_lighters.dmi b/icons/obj/cigs_lighters.dmi index 0d46fc0bff2bc9044a56b07cd210701ee330b2ad..d163a0657230d432011441342169254e63eed80b 100644 GIT binary patch literal 33786 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¤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 JU$B4ie*hhQ`&R$} diff --git a/icons/obj/smokables.dmi b/icons/obj/smokables.dmi index c4c6d7267050b51200126ad5c858f4f96c55bc3a..2815f2f878a11cffcd94893fe2dd8742807585c2 100644 GIT binary patch literal 12186 zcmb_?2|QHo+y6oFlq{`8=qb`-sfenia4`E#V><)%>c!NEZ&6#B?gi9jGcd-kls z8eqVHL=&+tZ=fp`U|?_QtEoXGB;4HGG!6kOl85vZL`^TAm=51dDb~g2T5XK@@$vD+ zY6H)o9P7s@MQSNmIG8?FldJPE&oa8&{wC$p1lz?oyGm8 z_ANkly3Ymx*pB$>8@sFh;b!e>@8WLn>;wSbaUWxJoCj2S>(T4CjGKxw2PEJ6VpFf{ zPqq7Rzx$9y-BP_+qstk}sIR~kQJ(mG+uj~K|kiKC?cKzC}!kG%%c8 zMtjr9nuV0Fo}^DcgjTgI>lmSz9*nfi2!;C=BUSqbOXejdS1Rm^n!ja|=N$?MqM9z; zhcfI`v~-$AS0{AZbZYLnX&;L!YERX+kUx~JneZy^Y7|YyU*RJ5`+mO9clLW8&%UH+ z*m*;PO{_05d0(5}d9^_Q+mjid&m)3;!$q@Jd9N8730h`G9*ED*`?BN7+seDaspC1e zV(54z4ze*5lT{(3kdBXTr|^YM5PU+Bc6M>%^#X9`p5gf3s3Q|Rc^)>QDddLfc> zct-u)lSsW#%$4>~qrjsY?QfL@b~Cn{`|MXW`nb<@TQaZxMCSHjv1L!<*e6Y@ka971 zxU2oa77x=EFX4TQUfQyASq1$nvfm@la)-TDNM5*Xt$e~7|L8&W-iL4SMf?+flG@&- zJnCT>p+#GP$4}>7ATNa<@1fADjXodU18Zy?9%gOI;6!03jAp;Er&d^v4KJ-bl_Gi@ z++I9=I`gG+L~!8U%iXV6;@$=A|K@X)rRw#ok!yNk#orHHD-9~X8>;ryuTZQ6VBfFp zfAmuIZW)o)wUcV;(hVy9p(o4qo2-_@q<>F+elQ|Lm_LFqm=*{6A(-BhvY`A~V@~10 z0YC;jyFDAB@m#mtXbT$wm`F>iojOmlolb35h*0&)(g} zCt)lPTTQr@UZC%(S`K$Y^SD!nB?H>jpXDNNQ+D-8uK9>SR3Pq*@O2(Bp24ou>dQd@ za2U`~yQuFSw=m4&H`wDNXZiV4ywqU6$MC?p=4!1^N3Xn$b-(+y$Ms}XicnKt_Oaru zY^^m0qe1=K14lsgfvPa?;RmC=`^7IDPFUkr^5@dq(~e^S=0j5mdlAo_WR+PwI~A&= zPK=(|p_!YDIYw%@tWR01{%!VUXzG+3?t1X7VaYWvcloY%SNAi=4V;6ss~97*SHp7C zqr3fXmebg&PFEI?QpXoyf<=vje^fa4!IMdgF(Zp-tV2wE_kHQ;JJ|U|GJCwB7qN0m zBAC$}kNZq4B6iyr7aC7=Qt=o?Mi?Pag2pC+r`cS1o z46kDc>xn^i=AmCx4h30X5;3BFAXYnb*yY|98K%r8b31c@u=(pJF`W6*+Ex|^lZv=K_v9Jv z2{)h76gsOhTkJ6+I%0C_in0<(2q(I%aLMt(sKLgXa46%&DxSYKA#=R79ExX{CTPvK zdl6zTP@OXudqZ@3y9*Mk7$v6^vpm~&d+KUArzxNu*XSIcG3-qTs@6tU7@Yl=K_41H zX$nJ?K7^jumYR?Ky8YTLVS3=J>NbK~lXpbocdzg>=LC>gezkYY2qAebCIP6C(!4~m zi;tJDT6ss$upjYKE9Yn@q09XW8?L-h5N}g=Qj)0R*d2Pk*Xjt zWPEToHe)@G9~{#WjUS*;T4%d4;Z%#1L=|>oZ!Y~I8?RVpWuV-NMC$Y4N|k!0^}7@H z{;o@MIj;VN6o&@&4~(mHF5PPNuhw0;xv=PWgxg(-B_^ol-t@jiHqXq8y2x|u`4qu6 z=cz@n#TNQgOoEEfUL!GB*c{tnNk7@`D>Hm8Nz)Zb;nkOhasGxbE?tULqEr34awb}; zoJL2(R=u=z9_}Bpw^T<4coxpFgp}ltFs?SO=2P=&@+}aRYA<)QAzR5t^|hC7CaKFC z`p987To4M5pN3GaF&N9o@?4HR)d!rbKi%0-wEfz=3XO(V!~3b%i){zo9uPW~m%pLh zPM&!3wgGPt;Mo=|GD1&ZV~~T=(ra(ZI~@|XU^Ir)y}V0D2jAB@4b#b}A$pDNp^qMG z>myYYWR57LIY#=ZHNRA$JI;d6BA*Op7*z>+o(qoiUstd$>gtK7MZVx@W7Xm3_NOt z?y}e@B7gqi^Xbub2>8UZ8|e{)@0*=yYaAkU>mlg&-_vmHp2KzJWkL!IJ?bSYln+>q zyrI}zEjeJW<|dbIO&COJ_)4&2xP`M)-frji7+IL5AQEslp1`9T#Ph@)RM3fTm=wj} z-JYH0&h7E*-wQJ?Tva+>Bs?S9|14^^r)Fh|LA-POWI6;W{$is3j{IOC#M+=a!dtMM zukklnp%<Y>g zODS``hLD-D4_@oo;rYH{9UedRECoL-+vkj2SOh6V=C|L#)Eta_-GW74E>a!H= z4q!gMLD6Ai?_t*5BiZ?jilY62C5A~Xz-_)<#hyOfh!zx3Y{jQ7e0z*!<(ijxYjsf) zir(uRQSKGYX>7$9S@uv$E{Wdoszhi%8~&2-V=4;Nm~yK;TYlw=JTz}f>z#RbW)3BV zn%z~bq-;SWb#@z}nn}%S??yjkhs$I}^IcJhVEuPrVr!gw&`~@ZOo)lif*$)$eU8Bm z(};Oqg+%Gd_TWc~=jViAz9j`D!qjDO5h!hXF6!BN)OVt9W8>P(mqz&gORsjm3|kaJ zMf4O=%2s~I&SmAo+(KaA&gpg%erCx%@0nc$jzt`0DGnbC{?Ed{vBb@ZIyb z`+pqGC#7KH5``j+G28ltOhsyroT;#m50%T17xw%XnkL@P<>#?tjEm3+uTn77O;^T_ zju2FZ3`@QW*(VCzbu2p6QS#p6^l>9UM%5=7liRA=1*wSi^jjWHv|QfC8tN-t*){p@#vF}v zq2LazpB_66_u+R4XfvE0k0QVC^d@!VU1-S@6UnW@x>|Blhn1XY{-(MVMJ9^EZqGZ* z8#PLR)3P)JE_4I1H@Z zSruz2>I$7S)3b&jRhB5u-Q)?uUJwR#aXbu4$UeZw_naeADBa~pVboI(cbSFAuFs~R1G7EjTgzpYBbAAvA!glgf7MLUy;tjGA@(^n2|JCwjr z!ubc>>lWEn{d^Cx+p-;c)So{Kh7Y-3_g46QHHFj-l{s&C-QGWCqTsyv;mUH23vh3#Y8;Lr(r(+J3+{I9>&$NSD&YzRa}~~>i;SGKx%x4=G8hta3+X6 zZHOCvnBBSlp-~)pfOljaM<{1uEUxiHIf}e>gq-N7m)AUBP`$-%3!|bH39Cbk&c+@c z9&8pJ5S{DAQ28-~L3Odgz$ZghjH#$Kd>aEtr&Rbqd?C4eFn41O{2LD5XR!tHz0_?qSn$55X(vRpI81Jc zTXvGp@L#Uy8*s}~7KoQC7qa_`V>e&#;4+;ghP66z2&|M}#G!$Ygz}5>%ACOSMaF6g zMMm{hz`->m(l2pfDWfqX4&-ge5z9p_(?yS0HfYDrPSg}Xc5h7UbgeCV%qF3G8Qsx< zsM6Ju35kmdbx2}Vf6UlmyC06%@ZATlmFG|`u!}bmS58dhLj3&Kc)GOWH(>IOb(hd2lg8=a$5UOS1dasEE* ztW_5!I(E<17wmsc`f-5JKDdk0A4s?46+3@g-0Q?^T*x!W68d??(<7cV4Nps^^V%#= zw{qV&+6@iA<>9lx$F|8kI!TwwHzC}DR+^T88^>7PP`tY zJPyhD^&7v8YFxuOf^w6#1)Sqo%8~SkUr+-t>(=98qr_c+@uU|D-bdUA7^}kB?b11* zVE)`Ej^QA(%G-eh?MRjZ4e)$MFhvIVa!z9Yl|ATR+`QM@7@zfu#o(la96Ed18F>eHz32fx_*%fK!+ zmp!NvPiIVkzD%3Wm-#M~GStC1qoggzoVT!6F)FXj1{@#{<3;3tnmZdi5|m4_MR*E? z#w4%+oG+$rJAlI0Yi?j19WJgN)9@VANYT`gXvz?PzJoTc=RBYq-Cm0SVmxXFnsfq& z4RVM}nStJRZ}I-c7%*f_MdOh`&4FxCU_iu&CoTyn-cJf+8$8e{6nnjSd+!16JXJ1b zbwRe(OUkVhuJ`0}p3ygo(-wJ#^)MUC_Z(Gjgt2-?v+n?aw?vNDPL=Y_SP(EAOX=tD z(3S_Eb-m=aCbwa$rFh5 z9!7}x(}F=*6&nO07$uc=M-d1ymmk|tBc$Bj0HL`kKtEpyQ9sS){RhKeH$R}zgu!kZ z%^^l}({})m$}r({6Y%Ufb1_+k`|gT>W*q%f{{k2u5qeWxfMSx%nOIoLDW7fA`=pMY zbr;*c#U-1=J}r$-Fp>r`BI*3f`g|M$x;nULaTKRGiyiZFTp*)8iRDQeHg@qj1bF$W$%04h(vV3?f%_agwql1%9)d%(|hnhm%2t|prV5YW*>@$P7 z{VyO2mf`?zag&q-Gj)uV;NE7#sBi%eLP3G5UD0dX}=A@hcjopahNOu@3 zK)RjPEjHyRc5(ci+<=-ON3m3*qTIeno*c z9k-0K2i1684LC2h!70S4>TfIxBV1;Y=ZaIyhBWbPADVaG0!5W1o?qXO>bAP)sO>8J zyP{t3Nj>Bh9h2{N^Vo@+uhyd>M!V46C#d<1Z_8&{j81;-K4CU*Id%Tm@BcEQ+SN+# z$QtS9MIe=gXWxU@YI3}nJTNkV%Sw?Q6aI1NevX zVBJ#&#z?V=KmMGswGjMmFJkyC|1RN~Mq!>K!v;?9D@tl)qnZvLUi@K63&w+dW?{EO zaX>eb$Y+Tp5|h9RaLzJOG!(ShG+B@NSb-f>2?0d$LHjoFSycpfCEVpmP%D2^8y=Ur z{Fwaq1zw;LW%817kFz?09~T><>3XtWI>4nhV%y(#Y#t@XhqvhfmYh9U4~-ga4PEb0 zP(*7CybsoYt<`o52P{qaoSaCSI!nck zpltx+I>px3R_~$B1=_jKo7F!XVsX@e&nNob&?WmX6wJBLu`s$8ir&!!saT*^Vh;j& zU&(dp3bLx4@enPMd+opiVcu$Pn?T}YDX9cSut>bO<%{A&$0Te6oI`!9f<~wtL1<~I zm;_E>I|0w50M2;b-$ZDtrBeIXI9LW|yU@KXg=mf3H9L0&2wWJ1YffGBZ286Txa-TB zB4!h!Yg95aLCM!WZ*>Idvi4*RSel(Il*ccLi)*3T5y%%dGi~Yc`BufE)m`lZ$@1{H z7rq?g9H51MhhA`VCj~Tct4eSX@LX*Wp9G|m0|xk*B)OU1|8S~Ags2u8NW4{O4z#tk zJt2P@cg%ZM2FxR>4}d`Z&rgl3{Q#Pqh>^YSVyPW74dUUDC+&f!W#s}TV!lT7Caoq; zHr|FK?e*UoU3p_O$^@BEwG-!7_y3Mm72myt0)DWM+4s(Dv2)eAxH(!)!x8y#uL%;1%G{i`T}&EMk{BCh}2% z`*

3JT6^6eJE+&0NZFJcFBAY~l-7eqjRf()sMY)fk}t#4pj3E0(`NAv0_{ zXJ5~8Os8Of*0o=d=qEA>_JkExZh69g3==WJ$oTjxJ7T6bDcwInY5yo-0X&RHZsO4e z__}^Dn3;rh>}4(iyW|{r0An+0?NSL4j|ydTGbJzjuEI_-213hdreXW*r|JvR#98uc z3LqXE+bGm=LP*Hw7+Y_jj;cn&;q7FZ_N${WwH1evZ2@pzyL3Hgcgp>!jR<5e+We7~M{PGIiwn9i5r}rP5QWV3b zv(0CM9NpMdr6k84vHhOig>wEpzBzjvQo{0qy{eWhjwVFd-WNzTDE#Bki1IYs40(%yc&4!USC|#s zx_bH?IBI)9#zZ{eP%hm&o@iA`siSoMl@)(ZO}y3F4D(EcM{nYUw42e7e)isvepc&8 zKkIwpe`v|9C8htm^^XHYIg@d#(t7TJ)y_iWnkSf(cf$d_EBBR19-l-zeh*xDKI%a{ zV+rZ%Y)uNT=5qYO;V!3l5hBBw6jXToPYQ}OPq^|tM(htK6_Cv_NjJ00?SGgg{%4oF z$?z~Wn+y-^#fC`8vJ+Nc?6z2Be7q`7UqD)>>c*)aq@e)EZ*MJDK`!!~>t1wC9MSci z5dYQ8EzIf13XUe>vdU}-&&*WFRqpP(z^h#t|D?3(I-=%Jj>ec@k+|M2k&YDM{7pp8 z41VYn{rq*_E%zU6N8PwA9BDBPi}pWM46XdD^blQRgx+1vM2U(o}6%r z2Nr2P7ush@GVAAHX7{VXFS(VQgB7M~-j;(BW&dUjbl_R9Gq1;saWhhBXTfHEsQ&J; zO{k123&H-goBt2oQguNXeAD$`qwAG&qys>;nu)hi z>VD5+I!m>ue6IizPPMjx4|@v~@dH3MgIZ$YP~A|fD6RDFA&LUW&%>9g-;=%omF^D};PZ~u685n8&CIV zouWlg`>%b^;N}WZ_FJSzv&Tbdm=HY3@Cq>nAt5sqnNXkAbck{{((1h}NcE%>AP&9) z?%mjW>}3%b)iw|UOX>76LI@`<`iZ}yLVz8)_EIkdHBOCw^1?S6;~WpU+%`W+o*ZjL z=3dfvJ_6Ru{1NE&eGxx2zameg#=>Y5AK_bq`v|`wRdOk-c|3fX{(1Qf#;v(LghS*!4YC62Y+`mz;y4Ag-SJR5Z{{86!v z1lvr+%%Yqf=IAv~?$I*M!&ui}Gxed`9I4!$CBiu9+mRjzWBMyoT-ebb>7j7R!(f93 z8}D&o8OJ;&ah6zc{^m>}%hM>0W{k(T_gv-N+QlNY%gS5KThc_Z*M$Qw7=bwYY*&dn z#Ouu4WhTlVlX)Pvf6M#$Yj}^iGS!@x4%DzpL#upKFS8Y*D>9}+ z%Ou!p>98T+>%5^WLMWC9YD75=-=$!pDBp1;uko@HRd(%pr3LB|jk=IUZO3Cyaj0z&Bv^YMd~j z*@@wF(C(BECO4`xhfE1n`k#k4?GX|%iFZm;=Y)dE2~ zeL+z%WZyZ>Z$ti4$9)emP4NfK`#_SB7kk0awbd2z;c2vaRftydHfDQ!TJiM%xj^zM zl5fkZs^(0^D-q^U1n$)3ii%dWT@^g5f%uRlmp~~u4xfEh<5`bapz!C3+{4;@x;)zI zkVdP{$RuBm>LR=hi;dC3BqQSg+>-gTgQqI9vE^?ze1GZ*qBgY6bLn7Lk3U$-hDKp~ zA#)V;sEmy1=2pW$Y?64B#uN|I>`gz>3p>xNevoa2HmBVQGCg)$T#L}V=b8S0*nS4) zmexUS2Bi5j5AKfxe)IoESc?kI*lUM4K*90A-9Rk71SgL(VC$Ng2q1BcIz9?pcVHe` z(rFiGKty$0+z0|bPR`(ffhMxsDNv%Cw6a%d<9<=M8e#+w7ka0bDe^92GfHmK#4ZE| zPl?+P{EeRf+!_08r%bb7v4p3DC{g^a@fM z&t1XidUKqBuUGxN`17x-cq%p`EuHtuxQ~*?pEOQdvF#;%N8_*FLntpZSUM6Kj+!+R R44L27xT39=bIJ1Ie*veHzEuDK literal 10849 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