diff --git a/code/_globalvars/lists/reagents_lists.dm b/code/_globalvars/lists/reagents_lists.dm index 869f865580a..eb4c2c84ff0 100644 --- a/code/_globalvars/lists/reagents_lists.dm +++ b/code/_globalvars/lists/reagents_lists.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(rare_chemicals, list("minttoxin","syndicate_nanites", "xenomicr GLOBAL_LIST_INIT(standard_medicines, list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs", "mutadone","mutagen","teporone","lexorin","silver_sulfadiazine", "salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol", - "potass_iodide","pen_acid","mannitol","oculine","styptic_powder", + "potass_iodide","pen_acid","mannitol","oculine","styptic_powder","happiness", "methamphetamine","spaceacillin","carpotoxin","lsd","ethanol","ammonia", "diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin", "frostoil","amanitin","psilocybin","nothing","salglu_solution","neurotoxin")) diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 010248f84c9..ad6d886cd37 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -3,12 +3,13 @@ //Illicit drugs~ /obj/item/storage/pill_bottle/happy name = "Happy pills" - desc = "Highly illegal drug. When you want to see the rainbow." + desc = "Real fun drugs, for when you want to see the rainbow. Happy happy joy joy!" wrapper_color = COLOR_PINK /obj/item/storage/pill_bottle/happy/populate_contents() - for(var/i in 1 to 7) + for(var/i in 1 to 5) new /obj/item/reagent_containers/food/pill/happy(src) + new /obj/item/reagent_containers/food/pill/happy/happiness(src) /obj/item/storage/pill_bottle/zoom name = "Zoom pills" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm index 414055b2043..594548188a0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm @@ -104,6 +104,9 @@ new /obj/item/reagent_containers/food/pill/methamphetamine(src) new /obj/item/reagent_containers/food/pill/methamphetamine(src) new /obj/item/reagent_containers/food/pill/methamphetamine(src) + new /obj/item/reagent_containers/food/pill/happy_psych(src) + new /obj/item/reagent_containers/food/pill/happy_psych(src) + new /obj/item/reagent_containers/food/pill/happy_psych(src) new /obj/item/reagent_containers/food/pill/patch/nicotine(src) new /obj/item/reagent_containers/food/pill/patch/nicotine(src) new /obj/item/reagent_containers/food/pill/patch/nicotine(src) diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 8f8fdfa2478..9dedaa18d83 100644 --- a/code/modules/hydroponics/grown/cannabis.dm +++ b/code/modules/hydroponics/grown/cannabis.dm @@ -27,7 +27,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow mutatelist = list(/obj/item/seeds/cannabis/death, /obj/item/seeds/cannabis/ultimate) - reagents_add = list("lsd" = 0.15, "thc" = 0.15, "cbd" = 0.15) + reagents_add = list("lsd" = 0.15, "thc" = 0.15, "cbd" = 0.15, "happiness" = 0.15) rarity = 40 /obj/item/seeds/cannabis/death diff --git a/code/modules/mob/living/carbon/human/human_life.dm b/code/modules/mob/living/carbon/human/human_life.dm index c04a8278623..6ccdbb7ab2f 100644 --- a/code/modules/mob/living/carbon/human/human_life.dm +++ b/code/modules/mob/living/carbon/human/human_life.dm @@ -787,7 +787,7 @@ break for(var/datum/reagent/R in reagents.reagent_list)//handles different chems' influence on pulse - if(R.heart_rate_increase) + if(R.has_heart_rate_increase()) if(temp <= PULSE_FAST && temp >= PULSE_NONE) temp++ break diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index f804a1ffe95..8860b98ea23 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -590,6 +590,68 @@ H.LoseBreath(10 SECONDS) // procs 5 times, mostly a visual thing. damage could stack to cause a slowdown. H.Confused(10 SECONDS) +/datum/reagent/happiness + name = "Happiness" + id = "happiness" + description = "Fills you with ecstasic numbness and causes minor brain damage. If overdosed, causes sudden mood swings and spikes in heart rate." + reagent_state = LIQUID + color = "#f2ff00" + overdose_threshold = 20 + taste_description = "paint thinner" + shock_reduction = 20 + allowed_overdose_process = TRUE + addiction_chance = 2 // fairly rare, but funny + addiction_chance_additional = 20 + addiction_threshold = 20 + minor_addiction = TRUE + +/datum/reagent/happiness/on_mob_life(mob/living/M) + var/update_flags = STATUS_UPDATE_NONE + if(prob(15)) + M.emote(pick("laugh", "giggle", "smile", "grin")) + else if(prob(10)) + to_chat(M, "You feel [pick("great", "good", "amazing", "really nice", "magical")]!") + else if(prob(1)) + M.say("hehehe") // you WILL hehehe + + if(prob(50)) + M.AdjustConfused(-10 SECONDS) // same as degreaser + M.AdjustJitter(-10 SECONDS) + update_flags |= M.adjustBrainLoss(0.2, FALSE) + return ..() | update_flags + +/datum/reagent/happiness/overdose_process(mob/living/M, severity) + var/list/overdose_info = ..() + var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT] + var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS] + + if(prob(15)) + M.emote(pick("cry", "frown", "sulk", "gurgle")) + else if(prob(10)) + to_chat(M, "You feel [pick("like shit", "terrible", "weak", "like a rhumba beat", "hollow")]!") + update_flags |= M.adjustBrainLoss(0.2, FALSE) + if(!prob(10 * (severity ** 2))) // 1 - 10, 2 - 40 + return list(effect, update_flags) + + var/static/list/good_messages = list("YES! YES!! YES!!", "I AM UNSTOPPABLE", "THIS IS GREAT", "THERE WILL NEVER BE ANYONE BETTER", + "GLORY IS MINE", "WE'RE SO BACK", "I AM FUCKING INVINCIBLE", "I'M HANGING IN THERE") + var/static/list/bad_messages = list("NO! NO!! NO!!", "OH MY GOD", "THEY'RE LOOKING AT ME", "KILLLL MEEE, KILLLLL ME", + "I CAN'T FUCKING TAKE IT ANYMORE", "ARRGH, IT'S OVER") + + var/message = pick(good_messages) + var/class = "greenannounce" // theres not many good green classes + if(prob(50)) + message = pick(bad_messages) + class = "danger" + + M.Dizzy(50 SECONDS) // shaking with glee or fear, whichever you prefer + to_chat(M, "[message][pick("!", "!!", "!!!")]") + return list(effect, update_flags) + +/datum/reagent/happiness/has_heart_rate_increase() + return overdosed + + /datum/reagent/thc name = "Tetrahydrocannabinol" id = "thc" diff --git a/code/modules/reagents/chemistry/reagents_datum.dm b/code/modules/reagents/chemistry/reagents_datum.dm index cc61576ee8b..edc0466fe9b 100644 --- a/code/modules/reagents/chemistry/reagents_datum.dm +++ b/code/modules/reagents/chemistry/reagents_datum.dm @@ -287,3 +287,6 @@ if(M.healthdoll) M.healthdoll.cached_healthdoll_overlays.Cut() M.updatehealth("fakedeath reagent end") + +/datum/reagent/proc/has_heart_rate_increase() + return heart_rate_increase diff --git a/code/modules/reagents/chemistry/recipes/drugs_reactions.dm b/code/modules/reagents/chemistry/recipes/drugs_reactions.dm index 11db37ca83c..d9d928ff7ec 100644 --- a/code/modules/reagents/chemistry/recipes/drugs_reactions.dm +++ b/code/modules/reagents/chemistry/recipes/drugs_reactions.dm @@ -91,6 +91,14 @@ required_reagents = list("epinephrine" = 1, "atropine" = 1, "insulin" = 1) result_amount = 3 +/datum/chemical_reaction/happiness + name = "Happiness" + id = "happiness" + result = "happiness" + required_reagents = list("space_drugs" = 1, "nitrogen" = 1, "oxygen" = 1, "sacid" = 2) + required_catalysts = list("plasma" = 5) + result_amount = 5 + /datum/chemical_reaction/fliptonium name = "fliptonium" id = "fliptonium" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index b5fc7ce019a..2130bad9328 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -87,12 +87,23 @@ icon_state = "pill8" list_reagents = list("haloperidol" = 15) +/obj/item/reagent_containers/food/pill/happy_psych + name = "mood stabilizer pill" + desc = "Used to temporarily alleviate anxiety and depression. Take only as prescribed." + icon_state = "pill_happy" + list_reagents = list("happiness" = 15, "mannitol" = 5) + /obj/item/reagent_containers/food/pill/happy name = "happy pill" - desc = "Happy happy joy joy!" - icon_state = "pill18" + desc = "They have little happy faces on them and smell like marker pens." + icon_state = "pill_happy" list_reagents = list("space_drugs" = 15, "sugar" = 15) +/obj/item/reagent_containers/food/pill/happy/happiness + name = "fun pill" + desc = "Makes you feel real good!" + list_reagents = list("happiness" = 15) + /obj/item/reagent_containers/food/pill/zoom name = "zoom pill" desc = "Zoooom!" diff --git a/code/modules/surgery/surgery_helpers.dm b/code/modules/surgery/surgery_helpers.dm index dfd0c849afe..43e2f710ca7 100644 --- a/code/modules/surgery/surgery_helpers.dm +++ b/code/modules/surgery/surgery_helpers.dm @@ -22,6 +22,8 @@ return 0.85 if(drunk >= 15)//a little drunk return 0.85 + if(target.reagents.has_reagent("happiness")) // fuck yeah + return 0.81 return 0.8 //20% failure chance /proc/get_location_modifier(mob/target) diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 0da54f95f80..838676795c2 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/strings/chemistry_tools.json b/strings/chemistry_tools.json index c6a67824153..9c4352d997b 100644 --- a/strings/chemistry_tools.json +++ b/strings/chemistry_tools.json @@ -405,7 +405,8 @@ "prions", "nanomachines", "chlorine", - "fluorine" + "fluorine", + "happiness" ], "CYBERPUNK_drug_adulterants_safe": [ "mercury",