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