diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index f17e0289a49..cc7ee692edb 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -70,6 +70,7 @@ #define CE_CLEARSIGHT "clearsight" // prevents the blurry eye chem side effect #define CE_STRAIGHTWALK "straightwalk" // prevents the confused walking chem side effect #define CE_NOSTUTTER "nostutter" // helps alleviate stuttering +#define CE_HAUNTED "haunted" // Spectrocybin's ghost vision // Apply healing effects #define CE_ANTIBIOTIC "antibiotic" // Thetamycin diff --git a/code/game/machinery/vending_types.dm b/code/game/machinery/vending_types.dm index 2a156309c49..30a2b52e17b 100644 --- a/code/game/machinery/vending_types.dm +++ b/code/game/machinery/vending_types.dm @@ -595,6 +595,7 @@ /obj/item/stack/medical/bruise_pack = 2, /obj/item/stack/medical/ointment = 2, /obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 4, + /obj/item/reagent_containers/hypospray/autoinjector/dylovene = 4, /obj/item/device/healthanalyzer = 1, /obj/item/device/breath_analyzer = 1 ) diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 906a813bc70..ff4821bdae5 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -11,10 +11,15 @@ desc = "Highly illegal drug. Trade brain for speed." starts_with = list(/obj/item/reagent_containers/pill/zoom = 7) -/obj/item/storage/pill_bottle/tranquility - name = "bottle of Tranquility pills" +/obj/item/storage/pill_bottle/joy + name = "bottle of Joy pills" desc = "Highly illegal drug. Bang - and your stress is gone." - starts_with = list(/obj/item/reagent_containers/pill/tranquility = 7) + starts_with = list(/obj/item/reagent_containers/pill/joy = 3) + +/obj/item/storage/pill_bottle/smart + name = "bottle of Smart pills" + desc = "Highly illegal drug. For exam season." + starts_with = list(/obj/item/reagent_containers/pill/skrell_nootropic = 7) /obj/item/reagent_containers/glass/beaker/vial/random flags = 0 @@ -27,8 +32,9 @@ list(/decl/reagent/toxin/carpotoxin = 15) = 2, list(/decl/reagent/impedrezene = 15) = 2, list(/decl/reagent/toxin/dextrotoxin = 10) = 1, - list(/decl/reagent/mental/neurapan = 15) = 2, - list(/decl/reagent/toxin/spectrocybin = 15) = 1) + list(/decl/reagent/toxin/spectrocybin = 15) = 1, + list(/decl/reagent/joy = 10, /decl/reagent/water = 20) = 1, + list(/decl/reagent/ammonia = 15) = 3) /obj/item/reagent_containers/glass/beaker/vial/random/Initialize() . = ..() diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 8d39e8a6326..ffcac4ebf7e 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -45,10 +45,11 @@ /obj/item/storage/firstaid/regular icon_state = "firstaid" starts_with = list( - /obj/item/stack/medical/bruise_pack = 3, + /obj/item/stack/medical/bruise_pack = 2, /obj/item/stack/medical/ointment = 2, /obj/item/device/healthanalyzer = 1, - /obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 1 + /obj/item/reagent_containers/hypospray/autoinjector/inaprovaline = 1, + /obj/item/reagent_containers/hypospray/autoinjector/dylovene = 1 ) /obj/item/storage/firstaid/toxin diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 53b5335299f..022b9cc7cce 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -168,7 +168,8 @@ /decl/reagent/night_juice, /decl/reagent/toxin/cardox, /decl/reagent/toxin/lean, - /decl/reagent/toxin/stimm) + /decl/reagent/toxin/stimm, + /decl/reagent/ambrosia_extract) var/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index c7c009aa985..61d2222b60e 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -41,7 +41,10 @@ /decl/reagent/nutriment/protein/egg = 2, /decl/reagent/serotrotium = 1, /decl/reagent/psilocybin = 0.5, - /decl/reagent/toxin/spectrocybin = 0.1 + /decl/reagent/toxin/spectrocybin = 0.1, + /decl/reagent/ambrosia_extract = 0.3, + /decl/reagent/skrell_nootropic = 0.5, + /decl/reagent/xuxigas = 2 ) /datum/event/vent_clog/setup() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index f6d4548b6cb..9f18723b33d 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -92,7 +92,7 @@ descriptors |= "radioactive" if(reagents.has_reagent(/decl/reagent/toxin/amatoxin) || reagents.has_reagent(/decl/reagent/toxin)) descriptors |= "poisonous" - if(reagents.has_reagent(/decl/reagent/psilocybin) || reagents.has_reagent(/decl/reagent/space_drugs)) + if(reagents.has_reagent(/decl/reagent/psilocybin) || reagents.has_reagent(/decl/reagent/ambrosia_extract) || reagents.has_reagent(/decl/reagent/space_drugs) || reagents.has_reagent(/decl/reagent/mindbreaker)) descriptors |= "hallucinogenic" if(reagents.has_reagent(/decl/reagent/bicaridine) || reagents.has_reagent(/decl/reagent/dylovene)) descriptors |= "medicinal" diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 6f9a6c2ea3f..8f981cd0d9c 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -456,6 +456,8 @@ /decl/reagent/mortaphenyl, /decl/reagent/water, /decl/reagent/woodpulp, + /decl/reagent/ambrosia_extract, + /decl/reagent/skrell_nootropic ) for(var/x=1;x<=additional_chems;x++) diff --git a/code/modules/hydroponics/seed_datums/mushrooms.dm b/code/modules/hydroponics/seed_datums/mushrooms.dm index 880bb4f2c5f..38ece6e6115 100644 --- a/code/modules/hydroponics/seed_datums/mushrooms.dm +++ b/code/modules/hydroponics/seed_datums/mushrooms.dm @@ -168,7 +168,7 @@ seed_name = "liberty cap" display_name = "liberty cap mushrooms" mutants = list("ghostmushroom") - chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/soporific = list(3,3), /decl/reagent/space_drugs = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/soporific = list(3,3), /decl/reagent/psilocybin = list(1,25)) /datum/seed/mushroom/hallucinogenic/strong/setup_traits() ..() diff --git a/code/modules/hydroponics/seed_datums/smokables.dm b/code/modules/hydroponics/seed_datums/smokables.dm index 4cd866d54af..ea1bb3de777 100644 --- a/code/modules/hydroponics/seed_datums/smokables.dm +++ b/code/modules/hydroponics/seed_datums/smokables.dm @@ -70,7 +70,7 @@ seed_name = "ambrosia vulgaris" display_name = "ambrosia vulgaris" mutants = list("ambrosiadeus") - chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/space_drugs = list(1,8), /decl/reagent/kelotane = list(1,8,1), /decl/reagent/bicaridine = list(1,10,1), /decl/reagent/toxin = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/ambrosia_extract = list(4,8), /decl/reagent/kelotane = list(1,8,1), /decl/reagent/bicaridine = list(1,10,1), /decl/reagent/toxin = list(1,10)) kitchen_tag = "ambrosia" /datum/seed/ambrosia/setup_traits() @@ -93,7 +93,7 @@ seed_name = "ambrosia deus" display_name = "ambrosia deus" mutants = null - chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/bicaridine = list(1,8), /decl/reagent/synaptizine = list(1,8,1), /decl/reagent/hyperzine = list(1,10,1), /decl/reagent/space_drugs = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/bicaridine = list(1,8), /decl/reagent/synaptizine = list(1,8,1), /decl/reagent/ambrosia_extract = list(4,10)) kitchen_tag = "ambrosiadeus" /datum/seed/ambrosia/deus/setup_traits() diff --git a/code/modules/item_worth/reagents.dm b/code/modules/item_worth/reagents.dm index b74b266095f..b22771f060f 100644 --- a/code/modules/item_worth/reagents.dm +++ b/code/modules/item_worth/reagents.dm @@ -806,3 +806,6 @@ /decl/reagent/toxin/undead value = 300 + +/decl/reagent/ambrosia_extract + value = 2.8 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index e73dc5a0292..87dbb3b5f61 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -626,6 +626,25 @@ if(prob(2)) to_chat(src, SPAN_WARNING(pick("The itch is becoming progressively worse.", "You need to scratch that itch!", "The itch isn't going!"))) + if(CE_HAUNTED in chem_effects) + var/haunted = chem_effects[CE_HAUNTED] + if(haunted < 5) + if(prob(20)) + set_see_invisible(SEE_INVISIBLE_CULT) + if(prob(5)) + emote("shiver") + to_chat(src, SPAN_GOOD(pick("You hear the clinking of dinner plates and laughter.", "You hear a distant voice of someone you know talking to you.", "Fond memories of a departed loved one flocks to your mind.", "You feel the reassuring presence of a departed loved one.", "You feel a hand squeezing yours."))) + if(haunted >= 5) + set_see_invisible(SEE_INVISIBLE_CULT) + make_jittery(5) + if(prob(5)) + visible_message("[src] trembles uncontrollably.", "You tremble uncontrollably.") + to_chat(src, SPAN_CULT(pick("You feel fingers tracing up your back.", "You hear the distant wailing and sobbing of a departed loved one.", "You feel like you are being closely watched.", "You hear the hysterical laughter of a departed loved one.", "You no longer feel the reassuring presence of a departed loved one.", "You feel a hand taking hold of yours, digging its nails into you as it clings on."))) + if(haunted >= 10) + if(prob(5)) + emote(pick("shiver", "twitch")) + to_chat(src, SPAN_CULT(pick("You feel a cold and threatening air wrapping around you.", "Whispering shadows, ceaseless in their demands, twist your thoughts...", "The whispering, anything to make them stop!", "Your head spins amid the cacophony of screaming, wailing and maniacal laughter of distant loved ones.", "You feel vestiges of decaying souls cling to you, trying to re-enter the world of the living."))) + sprint_speed_factor = species.sprint_speed_factor max_stamina = species.stamina stamina_recovery = species.stamina_recovery diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2b411ed85b6..b38b960526f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -956,7 +956,7 @@ default behaviour is: /mob/living/proc/seizure() if(!paralysis && stat == CONSCIOUS) visible_message("\The [src] starts having a seizure!") - Paralyse(rand(8,16)) + Paralyse(rand(16,24)) make_jittery(rand(150,200)) adjustHalLoss(rand(50,60)) diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index f00288ab3a7..1dad9e4ed41 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -105,7 +105,7 @@ if(!oxygen_reserve) //(hardcrit) owner.Paralyse(10) - var/can_heal = damage && damage < max_damage && (damage % damage_threshold_value || owner.chem_effects[CE_BRAIN_REGEN] || (!past_damage_threshold(3) && owner.chem_effects[CE_STABLE])) + var/can_heal = (damage && damage < max_damage && (damage % damage_threshold_value || owner.chem_effects[CE_BRAIN_REGEN] || (!past_damage_threshold(3) && owner.chem_effects[CE_STABLE]))) && (!(owner.chem_effects[CE_NEUROTOXIC]) || owner.chem_effects[CE_ANTITOXIN]) var/damprob var/brain_regen_amount = owner.chem_effects[CE_BRAIN_REGEN] / 10 //Effects of bloodloss diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index 18270c2216a..3b8e3107b0b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -49,7 +49,30 @@ fallback_specific_heat = 1.048 /decl/reagent/ammonia/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - M.adjustToxLoss(removed * 1.5) + if(alien == IS_DIONA) + M.adjustNutritionLoss(-removed*3) + else + if(prob(15)) + M.add_chemical_effect(CE_NEPHROTOXIC, 1) + +/decl/reagent/ammonia/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(alien == IS_DIONA) + M.adjustNutritionLoss(-removed*3) + else if(REAGENT_VOLUME(holder, type) > 15) + M.adjustOxyLoss(2 * removed) + if(M.losebreath < 15) + M.losebreath++ + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat burns!", "Your insides are on fire!", "Your feel a burning pain in your chest!"))) + else + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something really digusting.", "Your chest doesn't feel so great."))) + +/decl/reagent/ammonia/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(!(alien == IS_DIONA)) + M.adjustFireLoss(20) + to_chat(M, SPAN_WARNING(pick("Your skin burns!", "The chemical is melting your skin!", "Wash it off, wash it off!"))) + remove_self(REAGENT_VOLUME(holder, type), holder) /decl/reagent/carbon name = "Carbon" @@ -286,7 +309,7 @@ /decl/reagent/lithium name = "Lithium" - description = "A chemical element, used as antidepressant." + description = "A chemical element, used as an antidepressant." reagent_state = SOLID color = "#808080" taste_description = "metal" @@ -315,7 +338,7 @@ fallback_specific_heat = 0.631 /decl/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) + M.add_chemical_effect(CE_NEUROTOXIC, 1*removed) var/dose = M.chem_doses[type] if(dose > 1) if(prob(dose/2)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm index 4e601a0e993..140db20322b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm @@ -1,6 +1,6 @@ /decl/reagent/space_drugs - name = "Space Drugs" - description = "Mercury Monolithium Sucrose, or space drugs, is a potent relaxant commonly found in Ambrosia plants. Lasts twice as long when inhaled." + name = "Mercury Monolithium Sucrose" + description = "Mercury Monolithium Sucrose, or MMS, is a synthetic relaxant. It's both abused and used as a chemical precursor. Lasts twice as long when inhaled." reagent_state = LIQUID color = "#60A584" metabolism = REM * 0.5 @@ -9,6 +9,9 @@ taste_mult = 0.4 breathe_met = REM * 0.5 * 0.5 +/decl/reagent/space_drugs/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made."))) + /decl/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) @@ -20,15 +23,15 @@ M.druggy = max(M.druggy, power) M.add_chemical_effect(CE_PAINKILLER, 5 + round(power,5)) - if(power > 5) + if(power < 10) M.drowsiness = min(20,max(M.drowsiness,power - 5)) + if(prob(5)) + to_chat(M, SPAN_GOOD(pick("Your anxieties fade away.","Just be yourself - stop caring about what others think.","Everything will be alright...","The world feels so much more vibrant!","You feel relaxed."))) if(power > 10) - var/nutrition_percent = M.nutrition/M.max_nutrition - M.adjustNutritionLoss(power*removed*nutrition_percent) - var/hunger_strength = 1 - nutrition_percent - if(prob( round(hunger_strength*removed) )) - to_chat(M, SPAN_NOTICE(pick("You could really go for some munchies.","You feel the need to eat more.","You crave chips for some reason.","You kind of really want pizza."))) + M.drowsiness = min(20,max(M.drowsiness,power - 5)) + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("It's difficult to focus.","You feel... really... lethargic.","It's difficult to pay attention to what you're meant to be doing.", "Am I forgetting something?", "What was I doing again?"))) if(power > 20) var/probmod = 5 + (power-20) @@ -89,8 +92,7 @@ /decl/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.jitteriness = max(M.jitteriness - 5, 0) M.confused = max(M.confused, 10) - if(prob(80)) - M.add_chemical_effect(CE_NEUROTOXIC, 3*removed) + M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) if(prob(50)) M.drowsiness = max(M.drowsiness, 3) if(prob(10) && ishuman(M)) @@ -108,8 +110,13 @@ /decl/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 100) M.add_chemical_effect(CE_HALLUCINATE, 2) - if(prob(10)) - M.add_chemical_effect(CE_NEUROTOXIC, 5*removed) + M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) + +/decl/reagent/mindbreaker/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.add_chemical_effect(CE_NEUROTOXIC, 4*removed) + if(prob(5)) + to_chat(M, SPAN_DANGER(pick("You feel the strongest of pains deeply rooted beneath your skull.", "Your head feels like it's going to burst!", "Your head stings!"))) + M.adjustHalLoss(20) /decl/reagent/psilocybin name = "Psilocybin" @@ -120,6 +127,9 @@ taste_description = "mushroom" fallback_specific_heat = 1.2 +/decl/reagent/psilocybin/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "Your eyes open wide and you look upon this new world you now see.", "You close your eyes, and when they open, everything appears so much more vibrant.", "You feel a wave of pleasure suddenly rush over you.", "This is already the best decision you've ever made."))) + /decl/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) @@ -130,47 +140,78 @@ if(dose < 1) M.apply_effect(3, STUTTER) M.make_dizzy(5) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel giddy.", "You can't put your finger on it, but whatever it is, it's really funny.", "You feel full of energy.", "Your anxieties no longer cloud your mind."))) else if(dose < 2) M.apply_effect(3, STUTTER) M.make_jittery(5) M.dizziness = max(150, M.dizziness) M.make_dizzy(5) M.druggy = max(M.druggy, 35) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Everything is so vibrant...", "Look at all those colours...", "Shapes dance across your vision.", "You feel like you're looking through a kaleidoscope.", "That's so funny!"))) else M.apply_effect(3, STUTTER) M.make_jittery(10) M.dizziness = max(150, M.dizziness) M.make_dizzy(10) M.druggy = max(M.druggy, 40) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Everything is so vibrant...", "Look at all those colours...", "Shapes dance across your vision.", "You feel like you're looking through a kaleidoscope.", "That's so funny!"))) if(ishuman(M) && prob(min(15, dose*5))) M.emote(pick("twitch", "giggle")) +/decl/reagent/psilocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "You are dying... but that's okay, right?", "You are at peace with the universe.", "The stars are beckoning you to them."))) + if(prob(5)) + M.custom_pain("You feel a sharp pain in your stomach!", 10) + /decl/reagent/raskara_dust name = "Raskara Dust" description = "A powdery narcotic found in the gang-ridden slums of Biesel and Sol. Known for it's relaxing poperties that cause trance-like states when inhaled. Casual users tend to snort or inhale, while hardcore users inject." reagent_state = SOLID color = "#AABBAA" - overdose = REAGENTS_OVERDOSE + overdose = 10 taste_description = "baking soda" metabolism = REM * 0.1 breathe_met = REM * 0.2 ingest_met = REM * 0.3 +/decl/reagent/raskara_dust/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You gradually begin to slow down, and so does everything around you.", "You lean back and begin to fall... and fall... and fall.", "This is already the best decision you've ever made."))) + /decl/reagent/raskara_dust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) M.drowsiness += 1 * removed + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today."))) /decl/reagent/raskara_dust/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) M.drowsiness += 2 * removed if(prob(5) && ishuman(M)) M.emote("cough") + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today."))) /decl/reagent/raskara_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 30) M.drowsiness += 3 * removed if(prob(5)) M.emote("twitch") + if(prob(5)) + to_chat(M, SPAN_GOOD(pick("You feel so relaxed...", "Nothing's really bothering you right now...", "You should lay down and just... take it easy.", "You deserve a break from all your hard work today."))) + +/decl/reagent/raskara_dust/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You feel... disconnected from your body - is it your body?", "Are you ascending to another plane of existence... that's so cool?", "You are dying... but that's okay, right?", "You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual."))) + if(prob(M.chem_doses[type] / 3)) + if(prob(85)) + M.emote(pick("twitch", "shiver")) + else + M.seizure() /decl/reagent/night_juice name = "Nightlife" @@ -178,6 +219,7 @@ reagent_state = LIQUID color = "#FFFF44" taste_description = "salted sugar" + overdose = 10 metabolism = REM * 0.2 breathe_met = REM * 0.1 breathe_mul = 0.5 @@ -187,6 +229,9 @@ . = ..() LAZYSET(., "special", 0) +/decl/reagent/night_juice/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You feel a wave of pleasure smash into you and liven you up!", "You're startled by the sheer strength and speed of this drug!", "You already feel so damn good!", "This is the best decision you've ever made!"))) + /decl/reagent/night_juice/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return @@ -199,16 +244,26 @@ M.add_chemical_effect(CE_SPEEDBOOST, 1) M.apply_effect(1 + holder.reagent_data[type]["special"]*0.25, STUTTER) M.druggy = max(M.druggy, holder.reagent_data[type]["special"]*0.25) - M.hallucination = max(M.hallucination, holder.reagent_data[type]["special"]*5 - 100) M.make_jittery(holder.reagent_data[type]["special"]) if(prob(holder.reagent_data[type]["special"])) M.emote("twitch") + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You begin to notice a rhythm to all the sounds around you.", "You feel euphoric!", "Your sense of hearing seems heightened.", "You can't sit still, you gotta move!", "You could start a party right now!", "Live in the moment!", "All your anxieties seem to fade away."))) var/obj/item/organ/H = M.internal_organs_by_name[BP_HEART] H.take_damage(holder.reagent_data[type]["special"] * removed * 0.025) +/decl/reagent/night_juice/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) + M.bodytemperature = max(M.bodytemperature + 1 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) + if(prob(2)) + M.emote("shiver") + if(prob(2)) + to_chat(M, SPAN_WARNING(pick("You feel so hot...", "Why is it so hot!?"))) + if(prob(25)) + M.add_chemical_effect(CE_NEPHROTOXIC, 1) + /decl/reagent/guwan_painkillers name = "Tremble" - description = "An ancient tribal Unathi narcotic based on the outer gel layer of the seeds of a poisonous flower. The chemical itself acts as a very potent omni-healer when consumed, however as the chemical metabolizes, it causes immense and cripling pain." + description = "An ancient tribal Unathi narcotic based on the outer gel layer of the seeds of a poisonous flower. The chemical itself acts as a very potent omni-healer when consumed, however as the chemical metabolizes, it causes immense and crippling pain." reagent_state = LIQUID color = "#FFFF44" taste_description = "sunflower seeds" @@ -247,6 +302,8 @@ ..() if(prob(15)) M.emote(pick("twitch", "blink_r", "shiver")) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel pumped!", "Energy, energy, energy - so much energy!", "You could run a marathon!", "You can't sit still!", "It's difficult to focus right now... but that's not important!"))) if(prob(5)) // average of 6 brute every 20 seconds. M.visible_message("[M] shudders violently.", "You shudder uncontrollably, it hurts.") M.take_organ_damage(6 * removed, 0) @@ -305,6 +362,13 @@ H.drop_r_hand() if(robo) H.add_chemical_effect(CE_PAINKILLER, 30) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel a pleasant tingling sensation in your cybernetics.", "You feel a jolt of pain in your cybernetic limb, but it feels oddly nice.", "The sensations in your cybernetics feel heightened.", "Your cybernetics feel magnitudes better than your organic body parts."))) + else + H.add_chemical_effect(CE_PAINKILLER, 10) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel a little bit more comfortable.", "You feel alright.", "Your joints feel warm and tingly.", "You feel soothed and at ease."))) + var/obj/item/organ/internal/eyes/eyes = H.internal_organs_by_name[H.species.vision_organ || BP_EYES] if(eyes.status & ORGAN_ROBOT) M.hallucination = max(M.hallucination, 40) @@ -317,10 +381,149 @@ fallback_specific_heat = 1 overdose = 10 +/decl/reagent/wulumunusha/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("Your eyes open wide and you look upon this new world you now see.", "You close your eyes, and when they open, everything appears so much more vibrant."))) + /decl/reagent/wulumunusha/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.druggy = max(M.druggy, 100) M.silent = max(M.silent, 5) + if(prob(3) && !isskrell(M)) + to_chat(M, SPAN_GOOD(pick("You can almost see the currents of air as they dance around you.", "You see the colours around you beginning to bleed together.", "You feel safe and comfortable."))) + if(prob(3) && isskrell(M)) + to_chat(M, SPAN_ALIEN(pick("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?", "You feel safe and comfortable."))) /decl/reagent/wulumunusha/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) if(isskrell(M)) M.hallucination = max(M.hallucination, 10 * scale) //light hallucinations that afflict skrell + +/decl/reagent/ambrosia_extract + name = "Ambrosia Extract" + description = "Ambrosia Extract is a fairly strong relaxant commonly found in Ambrosia plants. It's one of the most widely available drugs in human space." + reagent_state = LIQUID + color = "#60A584" + metabolism = REM / 3.33 + overdose = 30 + taste_description = "spicy earth" + taste_mult = 0.4 + +/decl/reagent/ambrosia_extract/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + var/mob/living/carbon/human/H = M + if(istype(H) && (H.species.flags & NO_BLOOD)) + return + M.add_chemical_effect(CE_PULSE, -1) + + var/power = (M.chem_doses[type] + REAGENT_VOLUME(holder, type))/2 //Larger the dose and volume, the more affected you are by the chemical. + + M.add_chemical_effect(CE_PAINKILLER, 5 + round(power,5)) + + if(power < 15) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Your anxieties fade away.","Just be yourself - stop caring about what others think.","Everything will be alright...","The world feels so much more vibrant!","You feel relaxed."))) + + if(power > 15) + M.drowsiness = min(20,max(M.drowsiness,power - 5)) + var/nutrition_percent = M.nutrition/M.max_nutrition + M.adjustNutritionLoss(power*removed*nutrition_percent) + var/hunger_strength = 1 - nutrition_percent + if(prob( round(hunger_strength*removed) )) + to_chat(M, SPAN_NOTICE(pick("You could really go for some munchies.","You feel the need to eat more.","You crave chips for some reason.","You kind of really want pizza.","Some cosmic brownies would be nice."))) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("It's a little bit difficult to focus.","You feel a bit lethargic."," It's kinda hard to pay attention to what you're doing.", "Am I forgetting something?", "What was I doing again?"))) + +/decl/reagent/ambrosia_extract/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) + . = ..() + M.hallucination = max(M.hallucination, 30 * scale) + +/decl/reagent/joy + name = "Joy" + description = "An expensive and illegal drug often abused by those who find no other means to numb their physical and mental pains. A Joy addict is a truly sad sight." + reagent_state = LIQUID + color = "#FFFFFF" + metabolism = REM*0.1 + overdose = 5 + od_minimum_dose = 2 + taste_description = "tranquility" + +/decl/reagent/joy/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You feel a numbing sensation spread from within you.", "A numbing sensation builds within you.", "Everything will be okay... just relax."))) + +/decl/reagent/joy/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.add_chemical_effect(CE_PAINKILLER, 100) + M.add_chemical_effect(CE_NEUROTOXIC, 4*removed) + M.add_chemical_effect(CE_PACIFIED, 1) + M.eye_blurry = max(M.eye_blurry, 30) + M.drowsiness = max(M.drowsiness, 10) + M.make_dizzy(15) + if(M.chem_doses[type] < 1) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You feel somewhat dettached from reality.", "You can feel time passing by and it no longer bothers you.", "You feel so incredibly relaxed.", "You haven't felt this care-free since you were a child...", "Why can't it always be like this?", "You're watching yourself from afar - detached from your physical body."))) + if(M.chem_doses[type] >= 1) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You lose all sense of connection to the real world.", "Everything is so tranquil.", "You feel totaly detached from reality.", "Your feel disconnected from your body.", "You are aware of nothing but your conscious thoughts.", "You keep falling... and falling... and falling - never stopping.", "Is this what it feels like to be dead?", "Your memories are hazy... all you have ever known is this feeling.", "You're watching yourself from afar - detached from your physical body."))) + +/decl/reagent/joy/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/datum/reagents/holder) + M.ear_deaf = 20 + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]) + M.adjustOxyLoss(2 * removed) + if(M.losebreath < 15) + M.losebreath++ + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You're dying... but you don't care.", "The numbing sensation continues to build and build.", "One more hit... and maybe even death will cease to exist."))) + +/decl/reagent/joy/final_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD("You feel grounded in the real world again... for better or worse.")) + +/decl/reagent/xuxigas + name = "Xu'Xi Gas" + description = "A recreational drug hailing from Qerr'Malic that must be inhaled. It produces a mild high similar to Wulumunusha and is known to make users susceptible to persuasion. Most forms of Xu'Xi Gas found outside of the Jargon Federation are cheap, synthetic substitutes. Only works when inhaled." + color = "#58D373" + taste_description = "algae" + reagent_state = GAS + overdose = REAGENTS_OVERDOSE + breathe_met = REM*0.2 + +/decl/reagent/xuxigas/affect_breathe(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) + M.druggy = max(M.druggy, M.chem_doses[type]/2) + M.add_chemical_effect(CE_PULSE, -1) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "You feel like you're floating off the ground.", "You don't want this feeling to end.", "You wish to please all those around you.", "You feel particularly susceptible to persuasion.", "Everyone is so trustworthy nowadays."))) + if(prob(2) && !isskrell(M)) + to_chat(M, SPAN_GOOD(pick("You can almost see the currents of air as they dance around you.", "You see the colours around you beginning to bleed together.", "You feel safe and comfortable."))) + if(prob(2) && isskrell(M)) + to_chat(M, SPAN_ALIEN(pick("You can see the thoughts of those around you dancing in the air.", "You feel as if your mind has opened even further, your thought-field expanding.", "It's difficult to contain your thoughts - but why hide them anyway?"))) + +/decl/reagent/xuxigas/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You feel particularly vulnerable to being swayed by those around you...", "You have an urge to please those around you.", "This high cannot end... where can you get more?", "You don't want this feeling to end."))) + +/decl/reagent/skrell_nootropic + name = "Co'qnixq Wuxi" + description = "Co'qnixq Wuxi, or Co'qnixq Nootropic, has existed since before Glorsh, and was developed as a cognitive enhancer for Skrell with on-set dementia. When taken, one's consciousness is heightened greatly alongside receiving mild energy boost. Frequently used as a 'smart drug' by students and scientists." + color = "#E3B0E5" + taste_description = "concentration" + reagent_state = LIQUID + overdose = 10 + od_minimum_dose = 2 + metabolism = REM*0.05 + var/psi_boosted = FALSE + var/initial_stamina + +/decl/reagent/skrell_nootropic/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(M.psi && !psi_boosted) + initial_stamina = M.psi.max_stamina + M.psi.max_stamina = M.psi.max_stamina*1.25 + psi_boosted = TRUE + if(prob(2)) + to_chat(M, SPAN_GOOD(pick("You have a renewed sense of focus.", "You feel more determined to get things done.", "You feel more confident in your own abilities.", "Your head-space feels tidy and organised - now's the time to get to work.", "You could climb a mountain right now!"))) + +/decl/reagent/skrell_nootropic/final_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(M.psi && psi_boosted) + M.psi.max_stamina = initial_stamina + psi_boosted = FALSE + +/decl/reagent/skrell_nootropic/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.add_chemical_effect(CE_SPEEDBOOST, 0.5) + if(prob(25)) + M.add_chemical_effect(CE_NEPHROTOXIC, 0.5) + if(prob(2)) + to_chat(M, SPAN_WARNING(pick("You can't allow anyone to get between you and your tasks.", "You feel like screaming at the next person who interrupts you.", "No one can stop you!", "You can power through this..."))) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index d765becb7fb..c8805f39959 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -587,7 +587,7 @@ description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID color = "#FFFFFF" - overdose = REAGENTS_OVERDOSE + overdose = 30 taste_description = "salt" condiment_name = "salt shaker" condiment_desc = "Salt. From space oceans, presumably." @@ -599,9 +599,17 @@ M.adjustHydrationLoss(2*removed) /decl/reagent/sodiumchloride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + overdose(M, alien, holder) + +/decl/reagent/sodiumchloride/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.intoxication -= min(M.intoxication,removed*20) M.adjustHydrationLoss(20*removed) M.adjustToxLoss(removed*2) + M.confused = max(M.confused, 20) + if(prob(2)) + M.emote("twitch") + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("You're beginning to lose your appetite.","Your mouth is so incredibly dry.","You feel really confused.","What was I just thinking of?","Where am I?","Your muscles are tingling."))) /decl/reagent/blackpepper name = "Black Pepper" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 72add7f686f..7bbd68005f9 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -176,7 +176,7 @@ //Hyperoxia causes brain and eye damage /decl/reagent/dexalin/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - M.add_chemical_effect(CE_NEUROTOXIC, removed * (strength / 6)) + M.add_chemical_effect(CE_NEUROTOXIC, removed*0.5) if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/internal/eyes/E = H.get_eyes(no_synthetic = TRUE) @@ -294,7 +294,13 @@ metabolism_min = 0.005 breathe_mul = 0 +/decl/reagent/mortaphenyl/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel."))) + /decl/reagent/mortaphenyl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end."))) + if(check_min_dose(M)) M.add_chemical_effect(CE_PAINKILLER, 50) if(!M.chem_effects[CE_CLEARSIGHT]) @@ -314,10 +320,7 @@ M.losebreath++ if(REAGENT_VOLUME(M.reagents, /decl/reagent/oxycomorphine)) //Straight to overdose. - M.hallucination = max(M.hallucination, 40) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) - if(M.losebreath < 15) - M.losebreath++ + overdose(M, alien, holder) /decl/reagent/mortaphenyl/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) ..() @@ -357,7 +360,13 @@ metabolism_min = 0.005 breathe_mul = 0 +/decl/reagent/oxycomorphine/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder) + to_chat(M, SPAN_GOOD(pick("You lean back and begin to fall... and fall... and fall.", "A feeling of ecstasy builds within you.", "You're startled by just how amazing you suddenly feel."))) + /decl/reagent/oxycomorphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You feel soothed and at ease.", "You feel content and at peace.", "You feel a pleasant emptiness.", "You feel like sharing the wonderful memories and feelings you're experiencing.", "All your anxieties fade away.", "You feel like you're floating off the ground.", "You don't want this feeling to end."))) + if(check_min_dose(M)) M.add_chemical_effect(CE_PAINKILLER, 200) if(!M.chem_effects[CE_CLEARSIGHT]) @@ -576,6 +585,7 @@ /decl/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(5)) M.emote(pick("twitch", "blink_r", "shiver")) + to_chat(M, SPAN_GOOD(pick("You feel pumped!", "Energy, energy, energy - so much energy!", "You could run a marathon!", "You can't sit still!", "It's difficult to focus right now... but that's not important!"))) if(check_min_dose(M, 0.5)) M.add_chemical_effect(CE_SPEEDBOOST, 1) M.add_chemical_effect(CE_PULSE, 1) @@ -584,7 +594,7 @@ M.adjustNutritionLoss(5*removed) M.add_chemical_effect(CE_PULSE, 2) if(prob(5)) - to_chat(M, SPAN_DANGER(pick("Your heart is beating rapidly!", "Your chest hurts!"))) + to_chat(M, SPAN_DANGER(pick("Your heart is beating rapidly!", "Your chest hurts!", "You've totally over-exerted yourself!"))) if(prob(M.chem_doses[type] / 3)) M.visible_message("[M] twitches violently, grimacing.", "You twitch violently and feel yourself sprain a joint.") M.take_organ_damage(5 * removed, 0) @@ -799,7 +809,7 @@ if(prob(7)) M.emote(pick("twitch", "drool", "moan", "giggle")) if(prob(7)) - M.add_chemical_effect(CE_NEUROTOXIC, 3 * removed) + M.add_chemical_effect(CE_NEUROTOXIC, 5) if(prob(50)) M.drowsiness = max(M.drowsiness, 3) @@ -854,6 +864,34 @@ for(var/obj/effect/decal/cleanable/blood/B in T) qdel(B) +/decl/reagent/sterilizine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 15) + M.add_chemical_effect(CE_EMETIC, 5) + if(M.losebreath < 15) + M.losebreath++ + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat burns!", "All you can taste is blood!", "Your insides are on fire!", "Your feel a burning pain in your gut!"))) + else + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something chemical."))) + +/decl/reagent/sterilizine/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 15) + M.add_chemical_effect(CE_EMETIC, 5) + if(M.losebreath < 15) + M.losebreath++ + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat burns!", "All you can taste is blood!", "Your insides are on fire!", "Your feel a burning pain in your gut!"))) + else + if(prob(5)) + to_chat(M, SPAN_NOTICE(pick("You get a strong whiff of sterilizine fumes - careful."))) + +/decl/reagent/sterilizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 15) + M.add_chemical_effect(CE_EMETIC, 5) + if(prob(25)) + M.add_chemical_effect(CE_NEPHROTOXIC, 1) + /decl/reagent/leporazine name = "Leporazine" description = "Leporazine is a complex medication which improves thermal homeostasis, stabilising and regulating the body's core temperature. Leporazine often results in hyperventilation which should be monitored." @@ -1048,15 +1086,8 @@ /decl/reagent/mental/neurapan/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.add_chemical_effect(CE_PACIFIED, 1) M.eye_blurry = max(M.eye_blurry, 30) - if(REAGENT_VOLUME(M.reagents, /decl/reagent/oxycomorphine)) - M.ear_deaf = 20 - M.drowsiness = max(M.drowsiness, 10) - M.make_dizzy(15) - if(prob(3)) - to_chat(M, SPAN_GOOD(pick("You lose all sense of connection to the real world.", "Everything is so tranquil.", "You feel dettached from reality.", "Your feel disconnected from your body.", "You are aware of nothing but your conscious thoughts."))) - else - if(prob(3)) - to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You feel somewhat dettached from reality.", "You can feel time passing by and it no longer bothers you."))) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You feel somewhat dettached from reality.", "You can feel time passing by and it no longer bothers you."))) /decl/reagent/mental/nerospectan name = "Nerospectan" @@ -1400,6 +1431,8 @@ M.make_jittery(5) if(prob(2)) M.emote("twitch") + if(prob(2)) + to_chat(M, SPAN_WARNING(pick("You're beginning to lose your appetite.","Your mouth is so incredibly dry.","You feel really confused.","What was I just thinking of?","Where am I?","Your muscles are tingling."))) /decl/reagent/adrenaline name = "Adrenaline" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index a50abf6432d..9923c4ff65d 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -299,7 +299,6 @@ return M.clean_blood() - if(istype(M,/mob/living/carbon/slime)) var/mob/living/carbon/slime/S = M S.adjustToxLoss( REAGENT_VOLUME(holder, type) * (removed/REM) * 0.5 ) @@ -309,6 +308,34 @@ ++S.discipline if(M.chem_doses[type] == removed) S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the space cleaner touches it!"), SPAN_DANGER("Your flesh burns in the space cleaner!")) + +/decl/reagent/spacecleaner/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 15) + M.add_chemical_effect(CE_EMETIC, 5) + if(M.losebreath < 15) + M.losebreath++ + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat burns!", "All you can taste is blood!", "Your insides are on fire!", "Your feel a burning pain in your gut!"))) + else + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something sour."))) + +/decl/reagent/spacecleaner/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 15) + M.add_chemical_effect(CE_EMETIC, 5) + if(M.losebreath < 15) + M.losebreath++ + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat burns!", "All you can taste is blood!", "Your insides are on fire!", "Your feel a burning pain in your gut!"))) + else + if(prob(5)) + to_chat(M, SPAN_NOTICE(pick("You get a strong whiff of space cleaner fumes - careful."))) + +/decl/reagent/spacecleaner/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 15) + M.add_chemical_effect(CE_EMETIC, 5) + if(prob(25)) + M.add_chemical_effect(CE_NEPHROTOXIC, 1) /decl/reagent/lube name = "Space Lube" @@ -329,6 +356,7 @@ reagent_state = LIQUID color = "#C7FFFF" taste_description = "plastic" + ingest_mul = 0 /decl/reagent/silicate/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) if(istype(O, /obj/structure/window)) @@ -337,6 +365,19 @@ remove_self(amount, holder) return +/decl/reagent/silicate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.adjustToxLoss(2 * removed) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type]) + +/decl/reagent/silicate/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) + if(check_min_dose(H, 5)) + if(prob(50)) + H.visible_message("[H] splutters.", "You cough up a bunch of silicate.") + remove_self(5, holder) + else + H.adjustOxyLoss(2) + H.add_chemical_effect(CE_PNEUMOTOXIC, 0.2) + /decl/reagent/glycerol name = "Glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index a175bbf77f2..5c1114824c3 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -285,6 +285,7 @@ color = "#664330" taste_description = "plant food" taste_mult = 0.5 + touch_mul = 0 unaffected_species = IS_MACHINE /decl/reagent/toxin/fertilizer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) @@ -292,7 +293,27 @@ M.adjustNutritionLoss(-removed*3) //Fertilizer is good for plants else - ..() + if(prob(15)) + M.add_chemical_effect(CE_NEPHROTOXIC, 1) + +/decl/reagent/toxin/fertilizer/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(alien == IS_DIONA) + M.adjustNutritionLoss(-removed*3) + else if(REAGENT_VOLUME(holder, type) > 15) + M.adjustOxyLoss(2 * removed) + if(M.losebreath < 15) + M.losebreath++ + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat burns!", "Your insides are on fire!", "Your feel a burning pain in your chest!"))) + else + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("Your throat stings a bit.", "You can taste something really digusting.", "Your chest doesn't feel so great."))) + +/decl/reagent/toxin/fertilizer/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(!(alien == IS_DIONA)) + M.adjustFireLoss(10) + to_chat(M, SPAN_WARNING(pick("Your skin burns!", "The chemical is melting your skin!", "Wash it off, wash it off!"))) + remove_self(REAGENT_VOLUME(holder, type), holder) /decl/reagent/toxin/fertilizer/eznutrient name = "EZ Nutrient" @@ -677,48 +698,31 @@ color = "#800080" strength = 5 overdose = 5 //5 units per ghostmushroom. - od_minimum_dose = 1 + od_minimum_dose = 11 taste_description = "acid" metabolism = REM * 0.5 unaffected_species = IS_DIONA | IS_MACHINE + var/berserked = FALSE /decl/reagent/toxin/spectrocybin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) - ..() - if(!(REAGENT_VOLUME(holder, type) > 5)) - M.hallucination = max(M.hallucination, 20) - if(prob(20)) - M.see_invisible = SEE_INVISIBLE_CULT - if(M.chem_doses[type] < 5) - if(prob(10)) - M.emote("shiver") - to_chat(M, SPAN_GOOD(pick("You hear the clinking of dinner plates and laughter.", "You hear a distant voice of someone you know talking to you.", "Fond memories of a departed loved one flocks to your mind.", "You feel the reassuring presence of a departed loved one.", "You feel a hand squeezing yours."))) + M.add_chemical_effect(CE_HAUNTED, M.chem_doses[type]) /decl/reagent/toxin/spectrocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder) - M.see_invisible = SEE_INVISIBLE_CULT - M.make_jittery(5) - if(M.chem_doses[type] < 5) - if(prob(5)) - M.visible_message("[M] trembles uncontrollably.", "You tremble uncontrollably.") - to_chat(M, SPAN_CULT(pick("You feel fingers tracing up your back.", "You hear the distant wailing and sobbing of a departed loved one.", "You feel like you are being closely watched.", "You hear the hysterical laughter of a departed loved one.", "You no longer feel the reassuring presence of a departed loved one.", "You feel a hand taking hold of yours, digging its nails into you as it clings on."))) - else - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(M.chem_doses[type] <= (get_overdose(H, holder = holder) + metabolism)) - H.berserk_start() - else - H.berserk_process() - M.hallucination = 0 //Brings down hallucination quickly to prevent message spam from being switched between harm and help by hallucinoatory pacification and berserk. - M.add_chemical_effect(CE_BERSERK, 1) - if(M.a_intent != I_HURT) - M.a_intent_change(I_HURT) - if(prob(10)) - M.emote(pick("shiver", "twitch")) - to_chat(M, SPAN_CULT(pick("You feel a cold and threatening air wrapping around you.", "Whispering shadows, ceaseless in their demands, twist your thoughts...", "The whispering, anything to make them stop!", "Your head spins amid the cacophony of screaming, wailing and maniacal laughter of distant loved ones.", "You feel vestiges of decaying souls cling to you, trying to re-enter the world of the living."))) - + var/mob/living/carbon/human/H = M + if(ishuman(M) && !berserked) + H.berserk_start() + berserked = TRUE + else if(ishuman(M) && berserked) + H.berserk_process() + M.add_chemical_effect(CE_BERSERK, 1) + if(M.a_intent != I_HURT) + M.a_intent_change(I_HURT) + /decl/reagent/toxin/spectrocybin/final_effect(mob/living/carbon/human/H, datum/reagents/holder) . = ..() if(istype(H) && H.chem_doses[type] >= get_overdose(H, holder = holder)) H.berserk_stop() + berserked = FALSE /decl/reagent/toxin/trioxin name = "Trioxin" @@ -764,8 +768,6 @@ playsound(H.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) to_chat(H,"You return back to life as the undead, all that is left is the hunger to consume the living and the will to spread the infection.") - - /decl/reagent/toxin/dextrotoxin name = "Dextrotoxin" description = "A complicated to make and highly illegal drug that cause paralysis mostly focused on the limbs." diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 34f3a2da51d..36bf4766735 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -208,7 +208,7 @@ result_amount = 3 /datum/chemical_reaction/space_drugs - name = "Space Drugs" + name = "Mercury Monolithium Sucrose" id = "space_drugs" result = /decl/reagent/space_drugs required_reagents = list(/decl/reagent/mercury = 1, /decl/reagent/sugar = 1, /decl/reagent/lithium = 1) @@ -757,6 +757,28 @@ required_reagents = list(/decl/reagent/psilocybin = 1, /decl/reagent/alcohol/moonshine = 1) result_amount = 1 +/datum/chemical_reaction/joy + name = "Joy" + id = "joy" + result = /decl/reagent/joy + required_reagents = list(/decl/reagent/mental/neurapan = 1, /decl/reagent/oxycomorphine = 2) + result_amount = 1 + +/datum/chemical_reaction/xuxigas + name = "Xu'Xi Gas" + id = "xuxigas" + result = /decl/reagent/xuxigas + required_reagents = list(/decl/reagent/dexalin = 2, /decl/reagent/space_drugs = 2, /decl/reagent/mental/truthserum = 1) + required_temperature_min = T0C + 134 + result_amount = 5 + +/datum/chemical_reaction/skrell_nootropic + name = "Co'qnixq Wuxi" + id = "skrell_nootropic" + result = /decl/reagent/skrell_nootropic + required_reagents = list(/decl/reagent/wulumunusha = 1, /decl/reagent/synaptizine = 1, /decl/reagent/mental/emoxanyl = 1) + result_amount = 3 + /* Makeshift Chemicals and Drugs */ /datum/chemical_reaction/stimm diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 14c516befdf..304a9ad9a7b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -3175,7 +3175,7 @@ trash = /obj/item/trash/brownies filling_color = "#301301" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/browniemix = 4, /decl/reagent/space_drugs = 4, /decl/reagent/bicaridine = 2, /decl/reagent/kelotane = 2, /decl/reagent/toxin = 2) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/browniemix = 4, /decl/reagent/ambrosia_extract = 4, /decl/reagent/bicaridine = 2, /decl/reagent/kelotane = 2, /decl/reagent/toxin = 2) reagent_data = list(/decl/reagent/nutriment = list("brownies" = 5)) bitesize = 3 @@ -3189,7 +3189,7 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/cosmicbrowniesslice/filled - reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/browniemix = 1, /decl/reagent/space_drugs = 1, /decl/reagent/bicaridine = 1, /decl/reagent/kelotane = 1, /decl/reagent/toxin = 1) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/browniemix = 1, /decl/reagent/ambrosia_extract = 1, /decl/reagent/bicaridine = 1, /decl/reagent/kelotane = 1, /decl/reagent/toxin = 1) reagent_data = list(/decl/reagent/nutriment = list("brownies" = 2)) /////////////////////////////////////////////////PIZZA//////////////////////////////////////// diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 10501aef855..5a1f16a53ab 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -28,16 +28,22 @@ if(!..(user, 2)) return if(LAZYLEN(reagents.reagent_volumes)) - to_chat(user, "It contains [round(reagents.total_volume, accuracy)] units of liquid.") + to_chat(user, SPAN_NOTICE("It contains [round(reagents.total_volume, accuracy)] units of a reagent.")) for(var/_T in reagents.reagent_volumes) var/decl/reagent/T = decls_repository.get_decl(_T) - if(T.reagent_state == SOLID) - to_chat(user, "You see something solid in the beaker.") + if(T.reagent_state == LIQUID) + to_chat(user, SPAN_NOTICE("You see something liquid in the beaker.")) break // to stop multiple messages of this + if(T.reagent_state == GAS) + to_chat(user, SPAN_NOTICE("You see something gaseous in the beaker.")) + break + if(T.reagent_state == SOLID) + to_chat(user, SPAN_NOTICE("You see something solid in the beaker.")) + break else - to_chat(user, "It is empty.") + to_chat(user, SPAN_NOTICE("It is empty.")) if(!is_open_container()) - to_chat(user, "Airtight lid seals it completely.") + to_chat(user, SPAN_NOTICE("An airtight lid seals it completely.")) /obj/item/reagent_containers/glass/get_additional_forensics_swab_info() var/list/additional_evidence = ..() diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index e7bd4ac648c..58c8e952d7d 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -194,6 +194,10 @@ name_label = "inaprovaline" reagents_to_add = list(/decl/reagent/inaprovaline = 5) +/obj/item/reagent_containers/hypospray/autoinjector/dylovene + name_label = "dylovene" + reagents_to_add = list(/decl/reagent/dylovene = 5) + /obj/item/reagent_containers/hypospray/autoinjector/emergency name_label = "emergency" reagents_to_add = list(/decl/reagent/inaprovaline = 2.5, /decl/reagent/dexalin = 2.5) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 231a6903ee3..1597ea56bb2 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -233,13 +233,13 @@ name = "Zoom Pill" desc = "Zoooom!" icon_state = "pill18" - reagents_to_add = list(/decl/reagent/impedrezene = 10, /decl/reagent/synaptizine = 5, /decl/reagent/hyperzine = 5) + reagents_to_add = list(/decl/reagent/impedrezene = 5, /decl/reagent/synaptizine = 5, /decl/reagent/hyperzine = 5) -obj/item/reagent_containers/pill/tranquility - name = "Tranquility Pill" +obj/item/reagent_containers/pill/joy + name = "Joy Pill" desc = "Peace, at last." icon_state = "pill8" - reagents_to_add = list(/decl/reagent/mental/neurapan = 15, /decl/reagent/impedrezene = 10) + reagents_to_add = list(/decl/reagent/joy = 5) /obj/item/reagent_containers/pill/thetamycin name = "15u Thetamycin Pill" @@ -269,3 +269,9 @@ obj/item/reagent_containers/pill/tranquility desc = "Used to treat coughing, sneezing and itching." icon_state = "pill19" reagents_to_add = list(/decl/reagent/cetahydramine = 5) + +/obj/item/reagent_containers/pill/skrell_nootropic + name = "5u Co'qnixq Wuxi Pill" + desc = "Used to treat dementia." + icon_state = "pill8" + reagents_to_add = list(/decl/reagent/skrell_nootropic = 5) diff --git a/html/changelogs/kermit_chemistrystuff.yml b/html/changelogs/kermit_chemistrystuff.yml new file mode 100644 index 00000000000..7fb247a5e2d --- /dev/null +++ b/html/changelogs/kermit_chemistrystuff.yml @@ -0,0 +1,51 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: kermit + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Fixed neurotoxic chemicals doing no damage. Neurotoxic chemicals will prevent Alkysine from working unless Dylovene is also in the system." + - tweak: "All neurotoxic chemicals have had their numbers tweaked to ensure they don't nuke the brain." + - tweak: "Tweaked effects and added flavour messages for many, if not all, the recreational drugs. Affected drugs include Psilocybin, Raskara Dust, Krok Juice, Nightlife, Space Drugs (now Mercury Monolithium Sucrose & Ambrosia Extract) Mortaphenyl, Oxycomorphine, Hyperzine, Stimm, Mindbreaker Toxin, and Wulumunusha." + - rscadd: "Split Space Drugs into Mercury Monolithium Sucrose and Ambrosia Extract. MMS remains the chemical precursor for various mental reagents; Ambrosia Extract is a lite version of MMS found in Ambrosia." + - rscadd: "Added another recreational drug: Joy (1 part Neurapan, 2 parts Oxycomorphine). Also available on the Traitor Uplink in the Random Toxin Vial." + - tweak: "Ammonia/fertilisers can be tossed onto people to deal minor burn damage. A cheap tool for traitors or an accident waiting to happen in Hydroponics." + - tweak: "Space Cleaner and Sterilisine now have toxic properties if ingested in large doses. Another cheap tool for traitors. Accidentally spraying someone (even multiple times) isn't going to hurt them, don't worry." + - rscadd: "Added Xu'xi Gas, a recreational drug hailing from Qerr'Malic that must be inhaled. It produces a mild high similar to Wulumunusha and is known to make users susceptible to persuasion. Recipe: 2 parts Dexalin, 2 parts Mercury Monolithium Sucrose, 1 part Truth Serum (reagents heated to 137'C)." + - rscadd: "Added Co'qnixq Wuxi, a skrell nootropic/'smart drug' which enhances cognitive function & memory recollection/gain. It increases psionic stamina by 25% while metabolising. Recipe: 1 part Wulumunusha, 1 part Synaptizine, 1 part Emoxanyl." + - tweak: "Tweaked glass bottle/beaker examine code to show whether the reagent is a gas/liquid/solid (before it only showed solids)." + - tweak: "Wall Nano-Meds now also have dylovene autoinjectors alongside the inaprovaline autoinjectors."