Drug Expansion (#8575)

* adds drugs and means to make them

* nutmeg sprite and hallucination changes

* adjustments + sounds courtesy of serithi

* nit nack paddy wack
This commit is contained in:
Sypsoti
2022-04-29 19:24:16 -05:00
committed by GitHub
parent 60c189933a
commit 661b83e61d
21 changed files with 558 additions and 357 deletions

View File

@@ -1,6 +1,6 @@
/obj/machinery/chem_master
name = "ChemMaster 3000"
desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create Space Drugs."
desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create illicit drugs."
density = 1
anchored = 1
icon = 'icons/obj/chemical.dmi'

View File

@@ -1263,3 +1263,10 @@
result = "fusionnaire"
required_reagents = list("lemonjuice" = 3, "vodka" = 2, "schnapps_pep" = 1, "schnapps_lem" = 1, "rum" = 1, "ice" = 1)
result_amount = 9
/decl/chemical_reaction/instant/drinks/ayahuasca
name = "Ayahuasca"
id = "ayahuasca"
result = "ayahuasca"
required_reagents = list("water" = 1, "dmt" = 2, "honey" = 1)
result_amount = 3

View File

@@ -266,11 +266,18 @@
required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1)
result_amount = 2
/decl/chemical_reaction/instant/royale
name = "Royale"
id = "royale"
result = "royale"
required_reagents = list("copper" = 1, "phosphorus" = 1, "sulfur" = 1)
result_amount = 3
/decl/chemical_reaction/instant/hyperzine
name = "Hyperzine"
id = "hyperzine"
result = "hyperzine"
required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1)
required_reagents = list("royale" = 1, "sugar" = 1, "phosphorus" = 1)
result_amount = 3
/decl/chemical_reaction/instant/stimm
@@ -550,6 +557,34 @@
required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2)
result_amount = 6
/decl/chemical_reaction/instant/snowflake
name = "Snowflake"
id = "snowflake"
result = "snowflake"
required_reagents = list("frostoil" = 1, "fuel" = 1, "sulfur" = 1)
result_amount = 1
/decl/chemical_reaction/instant/sinkhole
name = "Sinkhole"
id = "sinkhole"
result = "sinkhole"
required_reagents = list("enzyme" = 1, "bicaridine" = 1, "tramadol" = 1)
result_amount = 1
/decl/chemical_reaction/instant/schnappi
name = "Schnappi"
id = "schnappi"
result = "schnappi"
required_reagents = list("ammonia" = 1, "tramadol" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "fuel" = 1)
result_amount = 6
/decl/chemical_reaction/instant/colorspace
name = "Colorspace"
id = "colorspace"
result = "colorspace"
required_reagents = list("hydrogen" = 1, "ethanol" = 1, "silicon" = 1)
result_amount = 1
/* Solidification */
/decl/chemical_reaction/instant/solidification

View File

@@ -328,9 +328,8 @@
/obj/item/reagent_containers/pill/zoom/Initialize()
. = ..()
reagents.add_reagent("impedrezene", 10)
reagents.add_reagent("royale", 10)
reagents.add_reagent("synaptizine", 5)
reagents.add_reagent("hyperzine", 5)
color = reagents.get_color()
/obj/item/reagent_containers/pill/diet
@@ -342,3 +341,39 @@
. = ..()
reagents.add_reagent("lipozine", 2)
color = reagents.get_color()
//// Recreational drugs for loadout
/obj/item/reagent_containers/pill/unidentified
name = "mysterious pill"
desc = "You're not quite sure what's in this..."
icon_state = "pill1"
/obj/item/reagent_containers/pill/unidentified/bliss/Initialize()
. = ..()
reagents.add_reagent("bliss", 10)
color = reagents.get_color()
/obj/item/reagent_containers/pill/unidentified/snowflake/Initialize()
. = ..()
reagents.add_reagent("snowflake", 10)
color = reagents.get_color()
/obj/item/reagent_containers/pill/unidentified/royale/Initialize()
. = ..()
reagents.add_reagent("royale", 5)
color = reagents.get_color()
/obj/item/reagent_containers/pill/unidentified/sinkhole/Initialize()
. = ..()
reagents.add_reagent("sinkhole", 5)
color = reagents.get_color()
/obj/item/reagent_containers/pill/unidentified/colorspace/Initialize()
. = ..()
reagents.add_reagent("colorspace", 10)
color = reagents.get_color()
/obj/item/reagent_containers/pill/unidentified/schnappi/Initialize()
. = ..()
reagents.add_reagent("schnappi", 5)
color = reagents.get_color()

View File

@@ -109,7 +109,6 @@
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)
@@ -144,7 +143,8 @@
M.druggy = max(M.druggy, 30)
var/effective_dose = dose
if(issmall(M)) effective_dose *= 2
if(issmall(M))
effective_dose *= 2
if(effective_dose < 1 * threshold)
M.apply_effect(3, STUTTER)
M.make_dizzy(5)
@@ -206,6 +206,240 @@
color = "#181818"
high_messages = FALSE
/datum/reagent/drugs/snowflake
name = "Snowflake"
id = "snowflake"
description = "A recreational stimulant refined from frostoil found in certain plants."
taste_description = "metallic and bitter"
overdose = 15
color = "#bbd7eb"
high_message_list = list("You feel euphoric!",
"You feel unstoppable.",
"You just can't seem to stop sniffling...",
"You feel impatient...",
"Your eyes feel a bit dry.")
sober_message_list = list("You feel a bit more sluggish.",
"You feel terrible...",
"You feel pretty dehydrated.")
/datum/reagent/drugs/snowflake/affect_blood(mob/living/carbon/M, alien, removed)
..()
M.add_chemical_effect(CE_PAINKILLER,3)
if(prob(12) && prob_proc == TRUE)
M.emote(pick("shiver", "sniff"))
prob_proc = FALSE
/datum/reagent/drugs/snowflake/overdose(mob/living/carbon/M, alien, removed)
if(prob(35) && prob_proc == TRUE)
M.vomit()
M.adjustToxLoss(5)
M.adjustBrainLoss(1)
..()
/datum/reagent/drugs/royale
name = "Royale"
id = "royale"
description = "A drug used in the process of making Hyperzine. A powerful stimulant on its own, it comes with significant drawbacks and potential for misuse."
taste_description = "something faint and odious"
color = "#dbd4ba"
overdose = 10
high_message_list = list("You feel energized!",
"You're just not going fast enough. Faster!",
"You could out-run the world if you tried.",
"It's almost painful to sit still...",
"Is everything going in slow motion?")
sober_message_list = list("Everything is suddenly... sluggish.",
"You feel like trash, but you can finally sit still...")
/datum/reagent/drugs/royale/affect_blood(mob/living/carbon/M, alien, removed)
..()
if(alien == IS_TAJARA) /// Similar to hyperzine...
removed *= 1.25
if(alien == IS_SLIME)
M.make_jittery(4)
if(dose >= 5)
M.adjust_nutrition(-removed * 2)
if(prob(5) && prob_proc == TRUE)
M.emote(pick("twitch", "blink_r", "shiver"))
M.add_chemical_effect(CE_PAINKILLER, 20) /// With chance of pain numbing...
prob_proc = FALSE
M.add_chemical_effect(CE_SPEEDBOOST, 1) /// And less speed boost.
/datum/reagent/drugs/royale/overdose(mob/living/carbon/M, alien, removed)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
for(var/i = 0, i < 4, i++)
step(M, pick(cardinal))
if(prob(5))
M.emote("laugh")
if(prob(5))
M.visible_message("<span class = 'danger'>[M]'s hands flip out and flail everywhere!</span>")
var/obj/item/I = M.get_active_hand()
if(I)
M.drop_item()
M.adjustToxLoss(1)
M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
..()
/datum/reagent/drugs/sinkhole
name = "Sinkhole"
id = "sinkhole"
description = "A painkiller and recreational drug that hampers brain function."
taste_description = "a grainy paste"
color = "#462d35"
high_message_list = list("You feel euphoric!",
"You have a strange sense of calm and excitement all at once.",
"You feel... sleepy.",
"You feel dizzy.")
sober_message_list = list("Your thoughts are in a fog...", "You just need to lay down and rest.")
/datum/reagent/drugs/sinkhole/affect_blood(mob/living/carbon/M, alien, removed)
..()
M.add_chemical_effect(CE_PAINKILLER, 40)
M.adjustBrainLoss(0.25)
if(prob(5) && prob_proc == TRUE)
M.emote(pick("shiver", "twitch"))
prob_proc = FALSE
/datum/reagent/drugs/sinkhole/overdose(mob/living/carbon/M, alien, removed)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
for(var/i = 0, i < 4, i++)
step(M, pick(cardinal))
M.adjustToxLoss(2)
M.drowsyness = max(M.drowsyness, 10)
M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
..()
/datum/reagent/drugs/dmt
name = "Dimethyltryptamine"
id = "dmt"
description = "A psychedelic compound found naturally in certain plants."
taste_description = "plastic"
taste_mult = 1.8
color = "#d4bc8e"
high_message_list = list("You feel a sense of belonging.",
"Are you being watched...?",
"The boundaries of the universe feel limitless...")
sober_message_list = list("You feel painfully grounded again.")
/datum/reagent/drugs/dmt/affect_blood(mob/living/carbon/M, alien, removed)
..()
if(alien == IS_TAJARA)
removed *= 1.25
if(prob(15) && prob_proc == TRUE)
M.emote(pick("deathgasp", "sigh", "smile"))
prob_proc = FALSE
var/drug_strength = 30
if(alien == IS_SKRELL)
drug_strength *= 0.8
if(alien == IS_SLIME)
drug_strength *= 1.2
M.druggy = max(M.druggy, 5)
M.hallucination = max(M.hallucination, drug_strength)
/datum/reagent/drugs/ayahuasca
name = "Ayahuasca"
id = "ayahuasca"
description = "A brew of herbs known for religious use and spiritual experience."
taste_description = "strong and bitter herbs"
color = "#5b5f46"
high_message_list = list("You feel at one with the universe.",
"You feel in tune with the vibrations of the cosmos.",
"The spirits are with you...",
"Everything has a harmony, and you are part of it.")
sober_message_list = list("The presence of the spirits fades.",
"You feel grounded once again.")
/datum/reagent/drugs/ayahuasca/affect_blood(mob/living/carbon/M, alien, removed)
if(alien == IS_TAJARA)
removed *= 1.25
..()
if(prob(15) && prob_proc == TRUE)
M.emote(pick("deathgasp", "moan", "smile", "groan"))
prob_proc = FALSE
var/drug_strength = 60
if(alien == IS_SKRELL)
drug_strength *= 0.8
if(alien == IS_SLIME)
drug_strength *= 1.2
M.druggy = max(M.druggy, 10)
M.hallucination = max(M.hallucination, drug_strength)
/datum/reagent/drugs/colorspace
name = "Colorspace"
id = "colorspace"
description = "A psychedelic drug that alters thought and perception."
taste_description = "flavorless paste"
color = "#a7a6a4"
high_message_list = list("The floor is melting...",
"Everything is so much brighter! Wow!",
"Everything is shifting around you.",
"Your skin tickles.")
sober_message_list = list("The world grows still again.", "Colors seem duller.")
/datum/reagent/drugs/colorspace/affect_blood(mob/living/carbon/M, alien, removed)
..()
var/drug_strength = 80
if(alien == IS_SKRELL)
drug_strength *= 0.8
if(alien == IS_SLIME)
drug_strength *= 1.2
M.druggy = max(M.druggy, 15)
M.hallucination = max(M.hallucination, drug_strength)
/datum/reagent/drugs/schnappi
name = "Schnappi"
id = "schnappi"
description = "A dangerous and impure opiate that can cause necrosis in prolonged use."
color = "#0264B4"
taste_description = "a little crocodile" /// Schnee Schnii Schnappi, das kleiner krokodil...
overdose = 15
high_message_list = list("You feel pretty chill.",
"Your skin feels all rough and dry.",
"You feel too chill...!")
sober_message_list = list("You're full of regret...", "Is it finally over?")
/datum/reagent/drugs/schnappi/affect_blood(mob/living/carbon/M, alien, removed)
..()
M.drowsyness = max(M.drowsyness, 5)
M.add_chemical_effect(CE_PAINKILLER, 1)
if(prob(15) && prob_proc == TRUE)
M.adjustToxLoss(2)
prob_proc = FALSE
if(prob(10) && prob_proc == TRUE)
M.visible_message("<span class='warning'>[M] looks dazed!</span>")
M.Stun(5)
M.emote("drool")
prob_proc = FALSE
/datum/reagent/drugs/schnappi/overdose(mob/living/carbon/M, alien, removed)
M.drowsyness = max(M.drowsyness, 10)
if(prob(10))
M.visible_message("<span class='warning'>[M] looks dazed!</span>")
M.Stun(3)
M.emote("drool")
else if(prob(10))
to_chat(M, "<span class ='warning'>Your skin is cracking and bleeding!</span>")
M.adjustBruteLoss(5)
M.adjustToxLoss(1)
M.emote("cry")
else if(prob(10))
M.visible_message("<span class ='warning'>[M] sways and falls over!</span>")
M.adjustToxLoss(10)
M.Weaken(8)
M.emote("faint")
..()
/*///////////////////////////////////////////////////////////////////////////
/// PSYCHIATRIC DRUGS /////
/// /////

View File

@@ -608,7 +608,7 @@
..()
if(prob(5))
M.emote(pick("twitch", "blink_r", "shiver"))
M.add_chemical_effect(CE_SPEEDBOOST, 1)
M.add_chemical_effect(CE_SPEEDBOOST, 3)
/datum/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()