Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds more reagents #398

Merged
merged 4 commits into from
Jul 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2903,7 +2903,9 @@
#include "code\modules\reagents\addiction\_addiction.dm"
#include "code\modules\reagents\addiction\alcohol.dm"
#include "code\modules\reagents\addiction\gottheit.dm"
#include "code\modules\reagents\addiction\hallucinogens.dm"
#include "code\modules\reagents\addiction\opiate.dm"
#include "code\modules\reagents\addiction\psionics.dm"
#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Core.dm"
#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Dispenser.dm"
#include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents-Drinks.dm"
Expand Down
18 changes: 17 additions & 1 deletion code/datums/supplypacks/medical.dm
Original file line number Diff line number Diff line change
Expand Up @@ -354,4 +354,20 @@
cost = 50
containername = "\improper Auto-Compressor crate"
containertype = /obj/structure/closet/crate/secure
access = access_medical_equip
access = access_medical_equip

/decl/hierarchy/supply_pack/medical/carpotoxin
name = "Chemical Bottle - Carpotoxin"
contains = list(/obj/item/reagent_containers/glass/bottle/carpotoxin)
cost = 50
containertype = /obj/structure/closet/crate/secure
containername = "carpotoxin crate"
access = access_chemistry

/decl/hierarchy/supply_pack/medical/spider_venom
name = "Chemical Bottle - Spider Venom"
contains = list(/obj/item/reagent_containers/glass/bottle/spider_venom)
cost = 30
containertype = /obj/structure/closet/crate/secure
containername = "spider venom crate"
access = access_chemistry
Original file line number Diff line number Diff line change
Expand Up @@ -323,3 +323,29 @@
M.immunity = max(M.immunity - 0.75, 0)
if (M.chem_doses[type] > M.species.blood_volume / 8) // half of blood was replaced with us, rip white bodies
M.immunity = max(M.immunity - 3, 0)

// Fixes broken bones at the cost of dealing brute damage
/datum/reagent/medicine/ossarepantes
name = "Ossarepantes"
description = "Used to mend bones when normal means are unavailable. As the process is rather forceful, patient experiences tissue damage and extreme pain."
taste_description = "powdery milk"
color = "#939e9e"

/datum/reagent/medicine/ossarepantes/affect_blood(mob/living/carbon/human/M, alien, removed)
if(!ishuman(M))
return

// Minor brute damage all the time it is in the system
M.take_organ_damage(removed * 0.2, 0)

if(prob(33))
return

var/mob/living/carbon/human/H = M
for(var/obj/item/organ/external/E in H.organs)
if(E.status & ORGAN_BROKEN)
E.status &= ~ORGAN_BROKEN
playsound(H, 'sound/effects/wounds/bonebreak1.ogg', 25, TRUE)
E.take_external_damage(35)
H.custom_pain(SPAN_WARNING("You feel bones in your [E.name] move!"), 50, TRUE, E)
break
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,20 @@
value = 3.1

/datum/reagent/medicine/ethylredoxrazine/affect_blood(mob/living/carbon/M, alien, removed)
if (alien == IS_DIONA)
if(alien == IS_DIONA)
return
M.dizziness = 0
M.drowsyness = 0
M.stuttering = 0
M.confused = 0

M.dizziness = max(M.dizziness - 10, 0)
M.drowsyness = max(M.drowsyness - 10, 0)
M.stuttering = max(M.stuttering - 10, 0)
M.confused = max(M.confused - 10, 0)
var/datum/reagents/ingested = M.get_ingested_reagents()
if (ingested)
for (var/datum/reagent/R in ingested.reagent_list)
if (istype(R, /datum/reagent/ethanol))
if(ingested)
for(var/datum/reagent/R in ingested.reagent_list)
if(istype(R, /datum/reagent/ethanol))
M.chem_doses[R.type] = max(M.chem_doses[R.type] - removed * 5, 0)

// Helps with alcohol addiction slightly
M.RemoveAddictionPoints(/datum/addiction/alcohol, removed * 3)


/datum/reagent/medicine/imidazoline
Expand Down
31 changes: 28 additions & 3 deletions code/modules/reagents/Chemistry-Reagents/toxins/toxins_drugs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
overdose = REAGENTS_OVERDOSE
value = 2.8
should_admin_log = TRUE
addiction_types = list(/datum/addiction/hallucinogens = 2)

/datum/reagent/space_drugs/affect_blood(mob/living/carbon/M, alien, removed)
if (alien == IS_DIONA)
Expand Down Expand Up @@ -41,12 +42,16 @@
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
value = 2.5
addiction_types = list(/datum/addiction/hallucinogens = 2)

/datum/reagent/serotrotium/affect_blood(mob/living/carbon/M, alien, removed)
if (alien == IS_DIONA)
if(alien == IS_DIONA)
return
if (prob(7))
M.emote(pick("twitch", "drool", "moan", "gasp"))
M.adjustToxLoss(2 * removed)
M.add_chemical_effect(CE_SPEEDBOOST, 0.3)
M.add_chemical_effect(CE_MIND, 1)
if(prob(7))
M.emote(pick("twitch", "drool", "moan", "smile", "laugh"))
return


Expand All @@ -61,6 +66,7 @@
overdose = REAGENTS_OVERDOSE
value = 0.6
should_admin_log = TRUE
addiction_types = list(/datum/addiction/hallucinogens = 5)

/datum/reagent/mindbreaker_toxin/affect_blood(mob/living/carbon/M, alien, removed)
if (alien == IS_DIONA)
Expand Down Expand Up @@ -130,6 +136,7 @@
metabolism = REM
overdose = 25
should_admin_log = TRUE
addiction_types = list(/datum/addiction/psionics = 5)

// M A X I M U M C H E E S E
var/global/list/dose_messages = list(
Expand Down Expand Up @@ -199,6 +206,7 @@
color = "#d0ff00"
metabolism = 1
overdose = 5
addiction_types = list(/datum/addiction/psionics = 20) // You usually only take small amount

var/global/list/dose_messages = list(
"Your name is called. It is your time.",
Expand Down Expand Up @@ -237,3 +245,20 @@
H.seizure()
if(prob(10))
to_chat(M, SPAN_DANGER("<font size = [rand(3,4)]>[pick(overdose_messages)]</font>"))

/datum/reagent/mensvir
name = "Mensvir"
taste_description = "brain liquid"
description = "A somewhat expensive hallucinogenic drug used by psionic users to either get high or keep addictions in check. Has several benefits, but it is still addictive."
reagent_state = LIQUID
color = "#d5f29d"
addiction_types = list(/datum/addiction/psionics = 2, /datum/addiction/hallucinogens = 1)

/datum/reagent/mensvir/affect_blood(mob/living/carbon/M, alien, removed)
if(!M.psi) // Sorry, elitist drug
return

M.hallucination(5, 25)
M.add_chemical_effect(CE_PULSE, 1)
M.add_chemical_effect(CE_THIRDEYE, 1)
M.psi.stamina = min(M.psi.max_stamina, M.psi.stamina + 1)
23 changes: 23 additions & 0 deletions code/modules/reagents/Chemistry-Recipes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,14 @@
minimum_temperature = 50 CELSIUS
maximum_temperature = (50 CELSIUS) + 100

/datum/chemical_reaction/serotrotium
name = "Serotrotium"
result = /datum/reagent/serotrotium
required_reagents = list(/datum/reagent/ethanol = 1, /datum/reagent/sugar = 1, /datum/reagent/lithium = 1)
result_amount = 3
minimum_temperature = 40 CELSIUS
maximum_temperature = (40 CELSIUS) + 100

/datum/chemical_reaction/pacid
name = "Polytrinic acid"
result = /datum/reagent/acid/polytrinic
Expand Down Expand Up @@ -249,6 +257,14 @@
required_reagents = list(/datum/reagent/medicine/inaprovaline = 1, /datum/reagent/medicine/bicaridine = 1, /datum/reagent/iron = 1)
result_amount = 3

/datum/chemical_reaction/ossarepantes
name = "Ossarepantes"
result = /datum/reagent/medicine/ossarepantes
required_reagents = list(/datum/reagent/medicine/bicaridine = 1, /datum/reagent/drink/milk = 1, /datum/reagent/radium = 1)
result_amount = 3
minimum_temperature = 50 CELSIUS
maximum_temperature = (50 CELSIUS) + 100

/datum/chemical_reaction/hyperzine
name = "Hyperzine"
result = /datum/reagent/medicine/stimulant/hyperzine
Expand Down Expand Up @@ -2334,6 +2350,13 @@
/datum/reagent/gold = 10
)

/datum/chemical_reaction/mensvir
name = "Mensvir"
result = /datum/reagent/mensvir
result_amount = 1
minimum_temperature = 40 CELSIUS
required_reagents = list(/datum/reagent/mindbreaker_toxin = 1, /datum/reagent/crystallizing_agent = 1, /datum/reagent/gold = 1)

// tea expansion pack content - black tea drinks
/datum/chemical_reaction/icetea
name = "Iced Tea"
Expand Down
30 changes: 30 additions & 0 deletions code/modules/reagents/addiction/hallucinogens.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Hallucinogens
/datum/addiction/hallucinogens
name = "Hallucinogens"
withdrawal_stage_messages = list("I feel so empty...", "I wonder what the machine elves are up to?..", "I need to see the beautiful colors again!!")

/datum/addiction/hallucinogens/WithdrawalStage1Process(mob/living/carbon/victim, delta_time)
. = ..()
if(prob(15))
victim.emote(pick("twitch", "drool"))

/datum/addiction/hallucinogens/WithdrawalStage2Process(mob/living/carbon/victim, delta_time)
. = ..()
victim.hallucination(20, 20)
if(prob(4))
victim.Weaken(3)
to_chat(victim, SPAN_WARNING("You feel as if your legs fell off..."))
else if(prob(2))
victim.Paralyse(2)
to_chat(victim, SPAN_DANGER(pick("The voices won't stop!!", "Ugh, it's too difficult to stay awake...", "What is going on?!")))

/datum/addiction/hallucinogens/WithdrawalStage3Process(mob/living/carbon/victim, delta_time)
. = ..()
victim.hallucination(50, 50)
victim.eye_blurry = clamp(victim.eye_blurry + 3 * delta_time, victim.eye_blurry, 50)
if(prob(6))
victim.Weaken(6)
to_chat(victim, SPAN_WARNING("Your legs feel unreal..."))
else if(prob(2))
victim.Paralyse(4)
to_chat(victim, SPAN_DANGER(pick("The voices won't stop!!", "Ugh, it's too difficult to stay awake...", "What is going on?!")))
30 changes: 30 additions & 0 deletions code/modules/reagents/addiction/psionics.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Psionics
/datum/addiction/psionics
name = "psionics"
withdrawal_stage_messages = list("My mind aches.", "My mind wants more power...", "My head will explode! I need more power!")

/datum/addiction/psionics/WithdrawalStage1Process(mob/living/carbon/victim, delta_time)
. = ..()
// Deplete the psi stamina
if(victim.psi && victim.psi.stamina > 5)
victim.psi.spend_power(0.5 * delta_time)

/datum/addiction/psionics/WithdrawalStage2Process(mob/living/carbon/victim, delta_time)
. = ..()
if(victim.psi && victim.psi.stamina > 5)
victim.psi.spend_power(1 * delta_time)
victim.adjustBrainLoss(1 * delta_time)
victim.hallucination(10, 50)

/datum/addiction/psionics/WithdrawalStage3Process(mob/living/carbon/victim, delta_time)
. = ..()
if(victim.psi && victim.psi.stamina > 5)
victim.psi.spend_power(2 * delta_time)
victim.adjustBrainLoss(2 * delta_time)
victim.hallucination(30, 100)

/datum/addiction/psionics/LoseAddiction(mob/living/carbon/victim)
// BLAST THEM!!!
if(victim.psi)
victim.psi.spend_power(victim.psi.stamina)
return ..()
18 changes: 18 additions & 0 deletions code/modules/reagents/reagent_containers/glass/bottle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,21 @@
/obj/item/reagent_containers/glass/bottle/dye/polychromic/strong
starting_reagent = /datum/reagent/dye/strong
starting_vol = 15

/obj/item/reagent_containers/glass/bottle/carpotoxin
name = "carpotoxin bottle"
icon_state = "bottle-1"

/obj/item/reagent_containers/glass/bottle/carpotoxin/New()
..()
reagents.add_reagent(/datum/reagent/toxin/carpotoxin, 60)
update_icon()

/obj/item/reagent_containers/glass/bottle/spider_venom
name = "spider venom bottle"
icon_state = "bottle-1"

/obj/item/reagent_containers/glass/bottle/spider_venom/New()
..()
reagents.add_reagent(/datum/reagent/toxin/venom, 60)
update_icon()
Loading