diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 0a98818683..02f95e20f1 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -47,7 +47,7 @@ // Chemistry lists. var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglycerin", "thirteenloko", "nicotine") // Increase heart rate. -var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") // Decrease heart rate. +var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "bliss", "stoxin", "ambrosia_extract") // Decrease heart rate. var/list/heartstopper = list("potassium_chlorophoride", "zombie_powder") // This stops the heart. var/list/cheartstopper = list("potassium_chloride") // This stops the heart when overdose is met. -- c = conditional diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 4639f57138..c52e51d5b5 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -1081,8 +1081,8 @@ datum return 0 drugs - steal_target = /datum/reagent/space_drugs - explanation_text = "Steal some space drugs." + steal_target = /datum/reagent/drugs/bliss + explanation_text = "Steal some bliss." weight = 40 get_points(var/job) diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index a6e1ef3c2d..b9895428b7 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -1,6 +1,8 @@ -//Let's get some REAL contraband stuff in here. Because come on, getting brigged for LIPSTICK is no fun. - -//Illicit drugs~ +// Let's get some REAL contraband stuff in here. Because come on, getting brigged for LIPSTICK is no fun. +// +// Includes drug powder. +// +// Illicit drugs~ /obj/item/weapon/storage/pill_bottle/happy name = "bottle of Happy pills" desc = "Highly illegal drug. When you want to see the rainbow." @@ -19,7 +21,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/vial/random/toxin random_reagent_list = list( - list("mindbreaker" = 10, "space_drugs" = 20) = 3, + list("mindbreaker" = 10, "bliss" = 20) = 3, list("carpotoxin" = 15) = 2, list("impedrezene" = 15) = 2, list("zombiepowder" = 10) = 1) @@ -39,3 +41,56 @@ desc = "Contains [english_list(names)]." update_icon() + +// +// Drug Powder +// +/obj/item/weapon/reagent_containers/powder + name = "powder" + desc = "A powdered form of... something." + icon = 'icons/obj/chemical.dmi' + icon_state = "powder" + item_state = "powder" + amount_per_transfer_from_this = 2 + possible_transfer_amounts = 2 + w_class = ITEMSIZE_TINY + volume = 50 + +/obj/item/weapon/reagent_containers/powder/examine(mob/user) + if(reagents) + var/datum/reagent/R = reagents.get_master_reagent() + desc = "A powdered form of what appears to be [R.name]. There's about [reagents.total_volume] units here." + return ..() + +/obj/item/weapon/reagent_containers/powder/Initialize() + ..() + get_appearance() + +/obj/item/weapon/reagent_containers/powder/proc/get_appearance() + /// Names and colors based on dominant reagent. + if (reagents.reagent_list.len > 0) + color = reagents.get_color() + var/datum/reagent/R = reagents.get_master_reagent() + var/new_name = lowertext(R) + name = "powdered [new_name]" + +/// Snorting. + +/obj/item/weapon/reagent_containers/powder/attackby(var/obj/item/weapon/W, var/mob/living/user) + + if(!ishuman(user)) /// You gotta be fleshy to snort the naughty drugs. + return ..() + + if(!istype(W, /obj/item/weapon/glass_extra/straw) && !istype(W, /obj/item/weapon/reagent_containers/rollingpaper)) + return ..() + + user.visible_message("[user] snorts [src] with [W]!") + playsound(loc, 'sound/effects/snort.ogg', 50, 1) + + if(reagents) + reagents.trans_to_mob(user, amount_per_transfer_from_this, CHEM_BLOOD) + + if(!reagents.total_volume) /// Did we use all of it? + qdel(src) + +////// End powder. ///////// \ No newline at end of file diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index f0ff01c05a..4a800e9292 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -144,7 +144,7 @@ to_chat(user, "There's visible lag between left and right pupils' reactions.") var/list/pinpoint = list("oxycodone"=1,"tramadol"=5) - var/list/dilating = list("space_drugs"=5,"mindbreaker"=1) + var/list/dilating = list("bliss"=5,"ambrosia_extract"=5,"mindbreaker"=1) if(M.reagents.has_any_reagent(pinpoint) || H.ingested.has_any_reagent(pinpoint)) to_chat(user, "\The [M]'s pupils are already pinpoint and cannot narrow any more.") else if(M.reagents.has_any_reagent(dilating) || H.ingested.has_any_reagent(dilating)) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 7f7bdbca03..d85e21ae1c 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -116,7 +116,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(ishuman(loc)) var/mob/living/carbon/human/C = loc if (src == C.wear_mask && C.check_has_mouth()) // if it's in the human/monkey mouth, transfer reagents to the mob - reagents.trans_to_mob(C, REM, CHEM_INGEST, 0.2) // Most of it is not inhaled... balance reasons. + reagents.trans_to_mob(C, amount, CHEM_INGEST, 1.5) // I don't predict significant balance issues by letting blunts actually WORK. else // else just remove some of the reagents reagents.remove_any(REM) diff --git a/code/game/objects/random/unidentified/medicine.dm b/code/game/objects/random/unidentified/medicine.dm index ffd134384a..3bd10ba4f2 100644 --- a/code/game/objects/random/unidentified/medicine.dm +++ b/code/game/objects/random/unidentified/medicine.dm @@ -32,7 +32,7 @@ much more likely to show up. This is done for several purposes; /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified, /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/healing_nanites/unidentified, /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm/unidentified, - /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bliss/unidentified, /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired/unidentified, /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/serotrotium/unidentified, /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin/unidentified, @@ -108,7 +108,7 @@ much more likely to show up. This is done for several purposes; prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified, prob(40);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified, prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm/unidentified, - prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bliss/unidentified, prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/serotrotium/unidentified, prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin/unidentified, prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mindbreaker/unidentified, diff --git a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm index 9b72d27aba..dd8ae771b0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm @@ -90,4 +90,13 @@ /datum/gear/textmug display_name = "mug with text" description = "A mug with something written on it." - path = /obj/item/weapon/reagent_containers/food/drinks/textmug \ No newline at end of file +<<<<<<< HEAD + path = /obj/item/weapon/reagent_containers/food/drinks/textmug +======= + path = /obj/item/weapon/reagent_containers/food/drinks/textmug + +/datum/gear/schnapsen + display_name = "schnapsen playing cards" + description = "French-suit playing cards! Pre-picked for 2-player mode." + path = /obj/item/weapon/deck/schnapsen +>>>>>>> b042467fe4... Merge pull request #12767 from GhostActual/powder_drugs diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index b33e19759f..bdade9c50b 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -1089,7 +1089,7 @@ icon_state = "dankpocket" nutriment_amt = 2 nutriment_desc = list("heartiness" = 1, "dough" = 2) - heated_reagents = list("space_drugs" = 5) + heated_reagents = list("bliss" = 5) /obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket name = "\improper Sin-pocket" @@ -3289,7 +3289,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/cosmicbrownies/Initialize() . = ..() reagents.add_reagent("protein", 2) - reagents.add_reagent("space_drugs", 2) + reagents.add_reagent("ambrosia_extract", 2) reagents.add_reagent("bicaridine", 1) reagents.add_reagent("kelotane", 1) reagents.add_reagent("toxin", 1) @@ -4092,7 +4092,7 @@ reagents.add_reagent("oxycodone", 1) reagents.add_reagent("sifsap", 5) - reagents.add_reagent("space_drugs", 5) + reagents.add_reagent("bliss", 5) /obj/item/weapon/reagent_containers/food/snacks/bellefritter name = "frostbelle fritters" diff --git a/code/modules/food/food/thecake.dm b/code/modules/food/food/thecake.dm index 9716a75f25..598040aaf1 100644 --- a/code/modules/food/food/thecake.dm +++ b/code/modules/food/food/thecake.dm @@ -202,7 +202,7 @@ desc = "A mysterious slice, coated in purple frosting that smells like grapes." nutriment_desc = list("The desire to show off an party" = 10) reagents.add_reagent("stoxin", 2) - reagents.add_reagent("space_drugs", 10) + reagents.add_reagent("bliss", 10) reagents.add_reagent("serotrotium", 4) reagents.add_reagent("cryptobiolin", 8) reagents.add_reagent("mindbreaker", 10) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index bc2bfaffb8..288e66bb1b 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -88,7 +88,7 @@ descriptors |= "radioactive" if(reagents.has_reagent("amatoxin") || reagents.has_reagent("toxin")) descriptors |= "poisonous" - if(reagents.has_reagent("psilocybin") || reagents.has_reagent("space_drugs") || reagents.has_reagent("earthsblood")) + if(reagents.has_reagent("psilocybin") || reagents.has_reagent("bliss") || reagents.has_reagent("earthsblood")) descriptors |= "hallucinogenic" if(reagents.has_reagent("bicaridine") || reagents.has_reagent("earthsblood")) descriptors |= "medicinal" @@ -185,7 +185,7 @@ pocell.charge = pocell.maxcharge qdel(src) return - + if(W.sharp) if(seed.kitchen_tag == "pumpkin") // Ugggh these checks are awful. @@ -213,7 +213,7 @@ to_chat(user, "You add the newly-formed wood to the stack. It now contains [NG.get_amount()] planks.") qdel(src) return - + if(seed.kitchen_tag == "sunflower") new /obj/item/weapon/reagent_containers/food/snacks/rawsunflower(get_turf(src)) to_chat(user, SPAN_NOTICE("You remove the seeds from the flower, slightly damaging them.")) @@ -225,25 +225,25 @@ new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) qdel(src) return - + if(!isnull(seed.chems["carrotjuice"])) to_chat(user, "You slice \the [src] into sticks.") new /obj/item/weapon/reagent_containers/food/snacks/carrotfries(get_turf(src)) qdel(src) return - + if(!isnull(seed.chems["pineapplejuice"])) to_chat(user, "You slice \the [src] into rings.") new /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring(get_turf(src)) qdel(src) return - + if(!isnull(seed.chems["soymilk"])) to_chat(user, "You roughly chop up \the [src].") new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src)) qdel(src) return - + if(seed.get_trait(TRAIT_FLESH_COLOUR)) to_chat(user, "You slice up \the [src].") var/slices = rand(3,5) diff --git a/code/modules/hydroponics/seedtypes/ambrosia.dm b/code/modules/hydroponics/seedtypes/ambrosia.dm index 6a6dda8a14..289b182d9a 100644 --- a/code/modules/hydroponics/seedtypes/ambrosia.dm +++ b/code/modules/hydroponics/seedtypes/ambrosia.dm @@ -5,7 +5,7 @@ display_name = "ambrosia vulgaris" kitchen_tag = "ambrosia" mutants = list("ambrosiadeus") - chems = list("nutriment" = list(1), "space_drugs" = list(1,8), "kelotane" = list(1,8,1), "bicaridine" = list(1,10,1), "toxin" = list(1,10)) + chems = list("nutriment" = list(1), "ambrosia_extract" = list(1,8), "kelotane" = list(1,8,1), "bicaridine" = list(1,10,1)) /datum/seed/ambrosia/New() ..() @@ -25,7 +25,7 @@ display_name = "ambrosia deus" kitchen_tag = "ambrosiadeus" mutants = list("ambrosiainfernus", "ambrosiagaia") - chems = list("nutriment" = list(1), "bicaridine" = list(1,8), "synaptizine" = list(1,8,1), "hyperzine" = list(1,10,1), "space_drugs" = list(1,10)) + chems = list("nutriment" = list(1), "bicaridine" = list(1,8), "synaptizine" = list(1,8,1), "hyperzine" = list(1,10,1), "ambrosia_extract" = list(1,10)) /datum/seed/ambrosia/deus/New() ..() @@ -38,7 +38,7 @@ display_name = "ambrosia infernus" kitchen_tag = "ambrosiainfernus" mutants = null - chems = list("nutriment" = list(1,3), "oxycodone" = list(1,8), "impedrezene" = list(1,10), "mindbreaker" = list(1,10)) + chems = list("nutriment" = list(1,3), "oxycodone" = list(1,8), "impedrezene" = list(1,10), "mindbreaker" = list(1,10), "ambrosia_extract" = list(1,10)) /datum/seed/ambrosia/infernus/New() ..() diff --git a/code/modules/hydroponics/seedtypes/mushrooms.dm b/code/modules/hydroponics/seedtypes/mushrooms.dm index 6f3b36c806..4be5e0fb31 100644 --- a/code/modules/hydroponics/seedtypes/mushrooms.dm +++ b/code/modules/hydroponics/seedtypes/mushrooms.dm @@ -80,7 +80,7 @@ seed_name = "liberty cap" display_name = "liberty cap mushrooms" mutants = null - chems = list("nutriment" = list(1), "stoxin" = list(3,3), "space_drugs" = list(1,25)) + chems = list("nutriment" = list(1), "stoxin" = list(3,3), "bliss" = list(1,25)) /datum/seed/mushroom/hallucinogenic/strong/New() ..() diff --git a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm index 6946f26a80..b37dff23ac 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("space_drugs" = 10) + triggers = list("bliss" = 10) cures = list("inaprovaline") cure_message = "The itching stops..." diff --git a/code/modules/reagents/reactions/instant/instant.dm b/code/modules/reagents/reactions/instant/instant.dm index fdfd0a0df9..2bb809ccef 100644 --- a/code/modules/reagents/reactions/instant/instant.dm +++ b/code/modules/reagents/reactions/instant/instant.dm @@ -82,10 +82,10 @@ required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) result_amount = 3 -/decl/chemical_reaction/instant/space_drugs - name = "Space Drugs" - id = "space_drugs" - result = "space_drugs" +/decl/chemical_reaction/instant/bliss + name = "Bliss" + id = "bliss" + result = "bliss" required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) result_amount = 3 @@ -1185,7 +1185,7 @@ name = "Talum-quem" id = "talum_quem" result = "talum_quem" - required_reagents = list("space_drugs" = 2, "sugar" = 1, "amatoxin" = 1) + required_reagents = list("bliss" = 2, "sugar" = 1, "amatoxin" = 1) result_amount = 4 /decl/chemical_reaction/instant/qerr_quem diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 5fdc6a50af..cee7ed4133 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -308,11 +308,11 @@ This one is filled with serotrotium, which causes concentrated production of the serotonin neurotransmitter in humans." filled_reagents = list("serotrotium" = 15) -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bliss name = "illicit injector" desc = "A refined version of the standard autoinjector, allowing greater capacity. \ This one contains various illicit drugs, held inside a hypospray to make smuggling easier." - filled_reagents = list("space_drugs" = 15) + filled_reagents = list("bliss" = 15) /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin name = "cryptobiolin injector" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index de4871c6c1..b3b0a637cd 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -91,6 +91,29 @@ return +/obj/item/weapon/reagent_containers/pill/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(is_sharp(W)) + var/obj/item/weapon/reagent_containers/powder/J = new /obj/item/weapon/reagent_containers/powder(src.loc) + user.visible_message("[user] gently cuts up [src] with [W]!") + playsound(src.loc, 'sound/effects/chop.ogg', 50, 1) + + if(reagents) + reagents.trans_to_obj(J, reagents.total_volume) + J.get_appearance() + qdel(src) + + if(istype(W, /obj/item/weapon/card/id)) + var/obj/item/weapon/reagent_containers/powder/J = new /obj/item/weapon/reagent_containers/powder(src.loc) + user.visible_message("[user] clumsily chops up [src] with [W]!") + playsound(src.loc, 'sound/effects/chop.ogg', 50, 1) + + if(reagents) + reagents.trans_to_obj(J, reagents.total_volume) + J.get_appearance() + qdel(src) + + return ..() + //////////////////////////////////////////////////////////////////////////////// /// Pills. END //////////////////////////////////////////////////////////////////////////////// @@ -294,7 +317,7 @@ /obj/item/weapon/reagent_containers/pill/happy/Initialize() . = ..() - reagents.add_reagent("space_drugs", 15) + reagents.add_reagent("bliss", 15) reagents.add_reagent("sugar", 15) color = reagents.get_color() diff --git a/code/modules/reagents/reagent_containers/unidentified_hypospray.dm b/code/modules/reagents/reagent_containers/unidentified_hypospray.dm index 1a3412dbe7..cf57cb4b34 100644 --- a/code/modules/reagents/reagent_containers/unidentified_hypospray.dm +++ b/code/modules/reagents/reagent_containers/unidentified_hypospray.dm @@ -58,7 +58,7 @@ init_hide_identity = TRUE flags = 0 -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs/unidentified +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bliss/unidentified init_hide_identity = TRUE flags = 0 diff --git a/code/modules/reagents/reagents/drugs.dm b/code/modules/reagents/reagents/drugs.dm new file mode 100644 index 0000000000..3dba29d6f7 --- /dev/null +++ b/code/modules/reagents/reagents/drugs.dm @@ -0,0 +1,255 @@ +/* +/// Recreational and psychiatric drugs go here! Please keep them separated in the file. +/// Due to concerns and safety for our repo, illegal real-world drug names should generally be avoided. +*/ + +/datum/reagent/drugs + name = "generic drugs" + id = "drugs" + description = "Some generic drugs." + taste_description = "a bad investment" + taste_mult = 1.2 /// The overwhelming flavor of a good(?) time! + color = "#f2f2f2" + var/high_messages = TRUE + var/list/high_message_list = list("You feel great! For now...", "You feel a wave of happiness!") + var/list/sober_message_list = list("You feel like garbage...", "Your head aches.") + data = 0 + + var/prob_proc = FALSE /// ANY probabilities in specific drugs should check for this to be TRUE + the desired probability AND set this back to false. + + reagent_state = LIQUID + metabolism = REM * 0.5 + ingest_met = REM * 1.5 /// Be very careful with this, ingestion is weird and will spam high/sober messages horribly! + mrate_static = TRUE + overdose = REAGENTS_OVERDOSE + +/datum/reagent/drugs/affect_blood(mob/living/carbon/M, var/alien, var/removed) + if(alien == IS_DIONA) + return + + if(high_messages == TRUE) + if(world.time > data + 90 SECONDS && volume > 0.5) /// Spam prevention. + data = world.time + var/msg = pick(high_message_list) + to_chat(M, "[msg]") + else if(volume <= 0.2 && data != -1) + data = -1 + var/msg = pick(sober_message_list) + to_chat(M, "[msg]") + if(prob(5) && prob_proc == FALSE) /// Enables procs to activate, remains true until THAT PROC sets it to false again. + prob_proc = TRUE + +/datum/reagent/drugs/bliss /// Replaces Space Drugs. + name = "Bliss" + id = "bliss" + description = "Known for providing a euphoric high, this psychoactive drug is often used recreationally." + taste_description = "unpleasant bitterness" + taste_mult = 0.4 + high_message_list = list("You don't quite know what up or down is anymore...", + "Colors just seem much more amazing.", + "You feel incredibly confident. No one can stop you.", + "You clench your jaw involuntarily.", + "You feel... unsteady.", + "You really feel like talking about your feelings!") + sober_message_list = list("Everything feels a little more grounded.", + "Colors seem... flatter.", + "Everything feels a little dull, now.") + +/datum/reagent/drugs/bliss/affect_blood(mob/living/carbon/M, var/alien, var/removed) + ..() + var/drug_strength = 15 + if(alien == IS_SKRELL) + drug_strength = drug_strength * 0.8 + if(alien == IS_SLIME) + drug_strength = drug_strength * 1.2 + + M.druggy = max(M.druggy, drug_strength) + if(prob_proc == TRUE && prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained()) + step(M, pick(cardinal)) + prob_proc = FALSE + if(prob_proc == TRUE && prob(7)) + M.emote(pick("twitch", "drool", "moan", "giggle")) + prob_proc = FALSE + +/datum/reagent/drugs/bliss/overdose(var/mob/living/M as mob) + if(prob_proc == TRUE && prob(20)) + M.hallucination = max(M.hallucination, 5) + prob_proc = FALSE + M.adjustBrainLoss(0.25*REM) + M.adjustToxLoss(0.25*REM) + ..() + +/datum/reagent/drugs/ambrosia_extract + name = "Ambrosia extract" + id = "ambrosia_extract" + description = "The extract from the plant family ambrosia, responsible for the more \"recreational\" effects." + taste_description = "a strong-tasting plant" + color = "#358f49" + high_message_list = list("You feel so much more relaxed.", + "You can't quite focus on anything.", + "Colors around you seem much more intense.", + "You could snack on something right now...", + "You feel lightheaded and giggly.", + "Everything seems so hilarious.", + "You really could go for some takeout right now.", + "You momentarily forget where you are.", + "You have a mild urge to look over your shoulder.") + sober_message_list = list("You feel the urge to just sit there and do nothing.", + "Reality seems like a real pain in the ass to deal with right now.", + "Things feel really colourless to you all of a sudden.", + "You feel the urge to lie down and nap.") + +/datum/reagent/drugs/ambrosia_extract/affect_blood(mob/living/carbon/M, var/alien, var/removed) + ..() + var/drug_strength = 3 + if(alien == IS_SKRELL) + drug_strength = drug_strength * 0.8 + if(alien == IS_SLIME) + drug_strength = drug_strength * 1.2 + + M.adjustToxLoss(-2) + M.druggy = max(M.druggy, drug_strength) + M.heal_organ_damage(6) + M.adjustOxyLoss(-3) + M.AdjustStunned(-1) + if(prob(5) && prob_proc == TRUE) + M.emote("giggle") + prob_proc = FALSE + if(prob(10) && prob_proc == TRUE) + M.adjust_nutrition(-10) + prob_proc = FALSE + +/datum/reagent/drugs/psilocybin + name = "Psilocybin" + id = "psilocybin" + description = "A strong psycotropic derived from certain species of mushroom." + taste_description = "mushroom" + color = "#E700E7" + high_message_list = list("The world distorts around you...!", + "The walls look like they're moving...", + "Nothing really makes sense right now.", + "It feels like you've melded with the world around you...") + sober_message_list = list("Everything feels... flat.", "You feel almost TOO grounded in your surroundings.") + +/datum/reagent/drugs/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + ..() + + var/threshold = 1 * M.species.chem_strength_tox + if(alien == IS_SKRELL) + threshold = 1.2 + + if(alien == IS_SLIME) + threshold = 0.8 + + M.druggy = max(M.druggy, 30) + + var/effective_dose = dose + if(issmall(M)) effective_dose *= 2 + if(effective_dose < 1 * threshold) + M.apply_effect(3, STUTTER) + M.make_dizzy(5) + if(prob(3) && prob_proc == TRUE) + M.emote(pick("twitch", "giggle")) + prob_proc = FALSE + else if(effective_dose < 2 * threshold) + M.apply_effect(3, STUTTER) + M.make_jittery(5) + M.make_dizzy(5) + M.druggy = max(M.druggy, 35) + if(prob(5) && prob_proc == TRUE) + M.emote(pick("twitch", "giggle")) + prob_proc = FALSE + else + M.apply_effect(3, STUTTER) + M.make_jittery(10) + M.make_dizzy(10) + M.druggy = max(M.druggy, 40) + if(prob(10) && prob_proc == TRUE) + M.emote(pick("twitch", "giggle")) + prob_proc = FALSE + +/datum/reagent/drugs/talum_quem + name = "Talum-quem" + id = "talum_quem" + description = " A very carefully tailored hallucinogen, for use of the Talum-Katish." + taste_description = "bubblegum" + taste_mult = 1.6 + color = "#db2ed8" + high_message_list = list("The world distorts around you...!", + "The walls look like they're moving...", + "Nothing really makes sense right now.", + "It feels like you've melded with the world around you...") + sober_message_list = list("Everything feels... flat.", "You feel almost TOO grounded in your surroundings.") + +/datum/reagent/drugs/talum_quem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + ..() + + var/drug_strength = 29 * M.species.chem_strength_tox + if(alien == IS_SKRELL) + drug_strength = drug_strength * 0.8 + else + M.adjustToxLoss(10 * removed) //Given incorporations of other toxins with similiar damage, this seems right. + + M.druggy = max(M.druggy, drug_strength) + if(prob(10) && prob_proc == TRUE && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained()) + step(M, pick(cardinal)) + prob_proc = FALSE + if(prob(7) && prob_proc == TRUE) + M.emote(pick("twitch", "drool", "moan", "giggle")) + prob_proc = FALSE + +/datum/reagent/drugs/nicotine + name = "Nicotine" + id = "nicotine" + description = "A highly addictive stimulant extracted from the tobacco plant." + taste_description = "sour staleness" + color = "#181818" + high_messages = FALSE + +/*/////////////////////////////////////////////////////////////////////////// +/// PSYCHIATRIC DRUGS ///// +/// ///// +/// Psychiatric drugs use similar mechanics and will go under "drugs". ///// +*//////////////////////////////////////////////////////////////////////////// +/datum/reagent/drugs/methylphenidate + name = "Methylphenidate" + id = "methylphenidate" + description = "Improves the ability to concentrate." + taste_description = "mild grape" ///Referencing real life oral solutions for these meds. + color = "#BF80BF" + high_message_list = list("You feel focused.", "Your attention is undivided.") + sober_message_list = list("It becomes harder to focus...", "You feel distractible.") + +/datum/reagent/drugs/citalopram + name = "Citalopram" + id = "citalopram" + description = "Stabilizes the mind a little." + taste_description = "mild peppermint" + color = "#FF80FF" + high_message_list = list("Everything feels a bit more steady.", "Your mind feels stable.") + sober_message_list = list("You feel a little tired.", "You feel a little more listless...") + +/datum/reagent/drugs/paroxetine + name = "Paroxetine" + id = "paroxetine" + description = "Stabilizes the mind greatly, but has a chance of adverse effects." + taste_description = "mild oranges" + color = "#FF80BF" + high_message_list = list("Everything feels good, stable.", "You feel grounded.") + sober_message_list = list("The stability is gone...", "Everything is much less stable.") + +/datum/reagent/drugs/paroxetine/affect_blood(mob/living/carbon/M, var/alien, var/removed) + ..() + if(prob(5) && prob_proc == TRUE) + to_chat(M, "Everything feels out of control...") + M.hallucination += 200 + prob_proc = FALSE + +/datum/reagent/drugs/qerr_quem + name = "Qerr-quem" + id = "qerr_quem" + description = "A potent sedative and anti-anxiety medication, made for the Qerr-Katish." + taste_description = "mint" + color = "#e6efe3" + high_message_list = list("You feel sluggish...", "You feel calm and collected.") + sober_message_list = list("You feel so much more antsy...", "Your concentration wavers.") \ No newline at end of file diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm index 5387a74e60..f837719ee0 100644 --- a/code/modules/reagents/reagents/medicine.dm +++ b/code/modules/reagents/reagents/medicine.dm @@ -1334,8 +1334,8 @@ //VOREstation edit. Floor polishing. if(istype(T, /turf/simulated)) var/turf/simulated/S = T - S.dirt = -50 - //VOREstation edit end + S.dirt = -50 + //VOREstation edit end /datum/reagent/sterilizine/touch_mob(var/mob/living/L, var/amount) ..() @@ -1411,106 +1411,6 @@ M.make_dizzy(5) M.make_jittery(5) -/* Antidepressants */ - -#define ANTIDEPRESSANT_MESSAGE_DELAY 5*60*10 - -/datum/reagent/methylphenidate - name = "Methylphenidate" - id = "methylphenidate" - description = "Improves the ability to concentrate." - taste_description = "bitterness" - reagent_state = LIQUID - color = "#BF80BF" - metabolism = 0.01 - ingest_met = 0.25 - mrate_static = TRUE - data = 0 - -/datum/reagent/methylphenidate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - if(volume <= 0.1 && data != -1) - data = -1 - to_chat(M, "You lose focus...") - else - if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY) - data = world.time - to_chat(M, "Your mind feels focused and undivided.") - -/datum/reagent/citalopram - name = "Citalopram" - id = "citalopram" - description = "Stabilizes the mind a little." - taste_description = "bitterness" - reagent_state = LIQUID - color = "#FF80FF" - metabolism = 0.01 - ingest_met = 0.25 - mrate_static = TRUE - data = 0 - -/datum/reagent/citalopram/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - if(volume <= 0.1 && data != -1) - data = -1 - to_chat(M, "Your mind feels a little less stable...") - else - if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY) - data = world.time - to_chat(M, "Your mind feels stable... a little stable.") - -/datum/reagent/paroxetine - name = "Paroxetine" - id = "paroxetine" - description = "Stabilizes the mind greatly, but has a chance of adverse effects." - taste_description = "bitterness" - reagent_state = LIQUID - color = "#FF80BF" - metabolism = 0.01 - ingest_met = 0.25 - mrate_static = TRUE - data = 0 - -/datum/reagent/paroxetine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - if(volume <= 0.1 && data != -1) - data = -1 - to_chat(M, "Your mind feels much less stable...") - else - if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY) - data = world.time - if(prob(90)) - to_chat(M, "Your mind feels much more stable.") - else - to_chat(M, "Your mind breaks apart...") - M.hallucination += 200 - -/datum/reagent/qerr_quem - name = "Qerr-quem" - id = "qerr_quem" - description = "A potent stimulant and anti-anxiety medication, made for the Qerr-Katish." - taste_description = "mint" - reagent_state = LIQUID - color = "#e6efe3" - metabolism = 0.01 - ingest_met = 0.25 - mrate_static = TRUE - data = 0 - -/datum/reagent/qerr_quem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - if(volume <= 0.1 && data != -1) - data = -1 - to_chat(M, "You feel antsy, your concentration wavers...") - else - if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY) - data = world.time - to_chat(M, "You feel invigorated and calm.") - // This exists to cut the number of chemicals a merc borg has to juggle on their hypo. /datum/reagent/healing_nanites name = "Restorative Nanites" @@ -1548,7 +1448,7 @@ reagent_state = LIQUID color = "#ffb500" overdose = REAGENTS_OVERDOSE * 0.50 - + /datum/reagent/earthsblood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.heal_organ_damage (4 * removed, 4 * removed) diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm index 6b7c2c66fe..003ba3e74f 100644 --- a/code/modules/reagents/reagents/toxins.dm +++ b/code/modules/reagents/reagents/toxins.dm @@ -762,34 +762,6 @@ /* Drugs */ -/datum/reagent/space_drugs - name = "Space drugs" - id = "space_drugs" - description = "An illegal chemical compound used as drug." - taste_description = "bitterness" - taste_mult = 0.4 - reagent_state = LIQUID - color = "#60A584" - metabolism = REM * 0.5 - overdose = REAGENTS_OVERDOSE - -/datum/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - - var/drug_strength = 15 * M.species.chem_strength_tox - if(alien == IS_SKRELL) - drug_strength = drug_strength * 0.8 - - if(alien == IS_SLIME) - drug_strength = drug_strength * 1.2 - - M.druggy = max(M.druggy, drug_strength) - if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained()) - step(M, pick(cardinal)) - if(prob(7)) - M.emote(pick("twitch", "drool", "moan", "giggle")) - /datum/reagent/serotrotium name = "Serotrotium" id = "serotrotium" @@ -892,85 +864,6 @@ M.hallucination = max(M.hallucination, drug_strength) -/datum/reagent/psilocybin - name = "Psilocybin" - id = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." - taste_description = "mushroom" - color = "#E700E7" - overdose = REAGENTS_OVERDOSE - metabolism = REM * 0.5 - -/datum/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - - var/threshold = 1 * M.species.chem_strength_tox - if(alien == IS_SKRELL) - threshold = 1.2 - - if(alien == IS_SLIME) - threshold = 0.8 - - M.druggy = max(M.druggy, 30) - - var/effective_dose = dose - if(issmall(M)) effective_dose *= 2 - if(effective_dose < 1 * threshold) - M.apply_effect(3, STUTTER) - M.make_dizzy(5) - if(prob(5)) - M.emote(pick("twitch", "giggle")) - else if(effective_dose < 2 * threshold) - M.apply_effect(3, STUTTER) - M.make_jittery(5) - M.make_dizzy(5) - M.druggy = max(M.druggy, 35) - if(prob(10)) - M.emote(pick("twitch", "giggle")) - else - M.apply_effect(3, STUTTER) - M.make_jittery(10) - M.make_dizzy(10) - M.druggy = max(M.druggy, 40) - if(prob(15)) - M.emote(pick("twitch", "giggle")) - -/datum/reagent/nicotine - name = "Nicotine" - id = "nicotine" - description = "A highly addictive stimulant extracted from the tobacco plant." - taste_description = "bitterness" - reagent_state = LIQUID - color = "#181818" - -/datum/reagent/talum_quem - name = "Talum-quem" - id = "talum_quem" - description = " A very carefully tailored hallucinogen, for use of the Talum-Katish." - taste_description = "bubblegum" - taste_mult = 1.6 - reagent_state = LIQUID - color = "#db2ed8" - metabolism = REM * 0.5 - overdose = REAGENTS_OVERDOSE - -/datum/reagent/talum_quem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(alien == IS_DIONA) - return - - var/drug_strength = 29 * M.species.chem_strength_tox - if(alien == IS_SKRELL) - drug_strength = drug_strength * 0.8 - else - M.adjustToxLoss(10 * removed) //Given incorporations of other toxins with similiar damage, this seems right. - - M.druggy = max(M.druggy, drug_strength) - if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained()) - step(M, pick(cardinal)) - if(prob(7)) - M.emote(pick("twitch", "drool", "moan", "giggle")) - /* Transformations */ /datum/reagent/slimetoxin diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index df3cf32347..6045284b4c 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -337,7 +337,7 @@ if(c_data) data = c_data else - data = pick("bicaridine", "kelotane", "anti_toxin", "inaprovaline", "space_drugs", "sugar", + data = pick("bicaridine", "kelotane", "anti_toxin", "inaprovaline", "bliss", "sugar", "tramadol", "dexalin", "cryptobiolin", "impedrezene", "hyperzine", "ethylredoxrazine", "mindbreaker", "glucose") var/datum/reagent/R = SSchemistry.chemical_reagents[data] diff --git a/code/modules/xenobio2/_xeno_setup.dm b/code/modules/xenobio2/_xeno_setup.dm index e77230b3e5..7d2d2a2e80 100644 --- a/code/modules/xenobio2/_xeno_setup.dm +++ b/code/modules/xenobio2/_xeno_setup.dm @@ -48,57 +48,57 @@ #define MINOR_MALEABLE 1 #define MIN_MALEABLE 0 -var/global/list/xenoChemList = list("mutationtoxin", - "psilocybin", - "mindbreaker", - "impedrezene", +var/global/list/xenoChemList = list("mutationtoxin", + "psilocybin", + "mindbreaker", + "impedrezene", "cryptobiolin", - "space_drugs", - "chloralhydrate", - "stoxin", - "mutagen", - "lexorin", - "pacid", - "cyanide", - "phoron", - "plasticide", - "amatoxin", - "carbon", - "radium", - "sacid", - "sugar", - "kelotane", - "dermaline", - "anti_toxin", - "dexalin", - "synaptizine", - "alkysine", - "imidazoline", - "peridaxon", + "bliss", + "chloralhydrate", + "stoxin", + "mutagen", + "lexorin", + "pacid", + "cyanide", + "phoron", + "plasticide", + "amatoxin", + "carbon", + "radium", + "sacid", + "sugar", + "kelotane", + "dermaline", + "anti_toxin", + "dexalin", + "synaptizine", + "alkysine", + "imidazoline", + "peridaxon", "rezadone", "mutationtoxin", "docilitytoxin") - + /datum/xeno/traits var/list/traits = list() var/list/chemlist = list() var/list/chems = list() var/source = "unknown" - + /datum/xeno/traits/proc/set_trait(var/trait, var/newval) traits["[trait]"] = newval return - + /datum/xeno/traits/proc/get_trait(var/trait) var/val = traits["[trait]"] return val - + /datum/xeno/traits/proc/copy_traits(var/datum/xeno/traits/target) target.traits = traits target.chemlist = chemlist target.chems = chems target.source = source - + /datum/xeno/traits/New() ..() set_trait(TRAIT_XENO_COLOR, "#CACACA") @@ -122,15 +122,15 @@ var/global/list/xenoChemList = list("mutationtoxin", set_trait(TRAIT_XENO_CANSPEAK, 1) set_trait(TRAIT_XENO_STRENGTH, 0) set_trait(TRAIT_XENO_STR_RANGE, 0) - + /datum/xeno/traits/proc/get_gene(var/genetype) - + if(!genetype) return 0 - + var/datum/xeno/genes/G = new() G.genetype = genetype G.values = list() - + switch(genetype) if(GENE_XENO_BIOCHEMISTRY) G.values["[TRAIT_XENO_CHEMVOL]"] = get_trait(TRAIT_XENO_CHEMVOL) @@ -165,18 +165,18 @@ var/global/list/xenoChemList = list("mutationtoxin", if(GENE_XENO_SPECIAL) G.values["[TRAIT_XENO_HOSTILE]"] = get_trait(TRAIT_XENO_HOSTILE) G.values["[TRAIT_XENO_CHROMATIC]"] = get_trait(TRAIT_XENO_CHROMATIC) - + return G - + /datum/xeno/traits/proc/apply_gene(var/datum/xeno/genes/genes) if(!genes.genetype) return 0 - + switch(genes.genetype) if(GENE_XENO_BIOCHEMISTRY) set_trait(TRAIT_XENO_CHEMVOL, genes.values["[TRAIT_XENO_CHEMVOL]"]) for(var/reagent in genes.chems) chems[reagent] = genes[reagent] - + if(GENE_XENO_HEALTH) set_trait(TRAIT_XENO_HEALTH, genes.values["[TRAIT_XENO_HEALTH]"]) set_trait(TRAIT_XENO_STRENGTH, genes.values["[TRAIT_XENO_STRENGTH]"]) @@ -207,11 +207,10 @@ var/global/list/xenoChemList = list("mutationtoxin", if(GENE_XENO_SPECIAL) set_trait(TRAIT_XENO_HOSTILE, genes.values["[TRAIT_XENO_HOSTILE]"]) set_trait(TRAIT_XENO_CHROMATIC, genes.values["[TRAIT_XENO_CHROMATIC]"]) - + /datum/xeno/genes var/genetype //Label for specifying what gene is used. var/list/values //What's going to be put into specific traits var/list/chems - - \ No newline at end of file + diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index ddba37210a..7c024763bf 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/sound/effects/chop.ogg b/sound/effects/chop.ogg new file mode 100644 index 0000000000..59c6d99267 Binary files /dev/null and b/sound/effects/chop.ogg differ diff --git a/sound/effects/snort.ogg b/sound/effects/snort.ogg new file mode 100644 index 0000000000..6cb5de712a Binary files /dev/null and b/sound/effects/snort.ogg differ