mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Tweaked soporific and new chems a bit more. Added Paracetamol, a lesser drug to tramadol, known to all as tylenol, and implemented it into sleepers! Gave inaprovaline the IB slowing property to keep sleepers in the game and allow EMTs better usage. Oxycodone made easier to craft by making the plasma a catalyst, but decreased it's overdose limit. Applied oxycodone and paracetamol to be able to handle things painkillers should.
150 lines
4.2 KiB
Plaintext
150 lines
4.2 KiB
Plaintext
// MEDICAL SIDE EFFECT BASE
|
|
// ========================
|
|
/datum/medical_effect
|
|
var/name = "None"
|
|
var/strength = 0
|
|
var/start = 0
|
|
var/list/triggers
|
|
var/list/cures
|
|
var/cure_message
|
|
|
|
/datum/medical_effect/proc/manifest(mob/living/carbon/human/H)
|
|
for(var/R in cures)
|
|
if(H.reagents.has_reagent(R))
|
|
return 0
|
|
for(var/R in triggers)
|
|
if(H.reagents.get_reagent_amount(R) >= triggers[R])
|
|
return 1
|
|
return 0
|
|
|
|
/datum/medical_effect/proc/on_life(mob/living/carbon/human/H, strength)
|
|
return
|
|
|
|
/datum/medical_effect/proc/cure(mob/living/carbon/human/H)
|
|
for(var/R in cures)
|
|
if(H.reagents.has_reagent(R))
|
|
if (cure_message)
|
|
H <<"\blue [cure_message]"
|
|
return 1
|
|
return 0
|
|
|
|
|
|
// MOB HELPERS
|
|
// ===========
|
|
/mob/living/carbon/human/var/list/datum/medical_effect/side_effects = list()
|
|
/mob/proc/add_side_effect(name, strength = 0)
|
|
/mob/living/carbon/human/add_side_effect(name, strength = 0)
|
|
for(var/datum/medical_effect/M in src.side_effects)
|
|
if(M.name == name)
|
|
M.strength = max(M.strength, 10)
|
|
M.start = life_tick
|
|
return
|
|
|
|
|
|
var/T = side_effects[name]
|
|
if (!T)
|
|
return
|
|
|
|
var/datum/medical_effect/M = new T
|
|
if(M.name == name)
|
|
M.strength = strength
|
|
M.start = life_tick
|
|
side_effects += M
|
|
|
|
/mob/living/carbon/human/proc/handle_medical_side_effects()
|
|
//Going to handle those things only every few ticks.
|
|
if(life_tick % 15 != 0)
|
|
return 0
|
|
|
|
var/list/L = typesof(/datum/medical_effect)-/datum/medical_effect
|
|
for(var/T in L)
|
|
var/datum/medical_effect/M = new T
|
|
if (M.manifest(src))
|
|
src.add_side_effect(M.name)
|
|
|
|
// One full cycle(in terms of strength) every 10 minutes
|
|
for (var/datum/medical_effect/M in side_effects)
|
|
if (!M) continue
|
|
var/strength_percent = sin((life_tick - M.start) / 2)
|
|
|
|
// Only do anything if the effect is currently strong enough
|
|
if(strength_percent >= 0.4)
|
|
if (M.cure(src) || M.strength > 50)
|
|
side_effects -= M
|
|
M = null
|
|
else
|
|
if(life_tick % 45 == 0)
|
|
M.on_life(src, strength_percent*M.strength)
|
|
// Effect slowly growing stronger
|
|
M.strength+=0.08
|
|
|
|
// HEADACHE
|
|
// ========
|
|
/datum/medical_effect/headache
|
|
name = "Headache"
|
|
triggers = list("cryoxadone" = 10, "bicaridine" = 15, "tricordrazine" = 15)
|
|
cures = list("alkysine", "tramadol", "paracetamol", "oxycodone")
|
|
cure_message = "Your head stops throbbing..."
|
|
|
|
/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength)
|
|
switch(strength)
|
|
if(1 to 10)
|
|
H.custom_pain("You feel a light pain in your head.",0)
|
|
if(11 to 30)
|
|
H.custom_pain("You feel a throbbing pain in your head!",1)
|
|
if(31 to INFINITY)
|
|
H.custom_pain("You feel an excrutiating pain in your head!",1)
|
|
|
|
// BAD STOMACH
|
|
// ===========
|
|
/datum/medical_effect/bad_stomach
|
|
name = "Bad Stomach"
|
|
triggers = list("kelotane" = 30, "dermaline" = 15)
|
|
cures = list("anti_toxin")
|
|
cure_message = "Your stomach feels a little better now..."
|
|
|
|
/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength)
|
|
switch(strength)
|
|
if(1 to 10)
|
|
H.custom_pain("You feel a bit light around the stomach.",0)
|
|
if(11 to 30)
|
|
H.custom_pain("Your stomach hurts.",0)
|
|
if(31 to INFINITY)
|
|
H.custom_pain("You feel sick.",1)
|
|
|
|
// CRAMPS
|
|
// ======
|
|
/datum/medical_effect/cramps
|
|
name = "Cramps"
|
|
triggers = list("anti_toxin" = 30, "tramadol" = 15)
|
|
cures = list("inaprovaline")
|
|
cure_message = "The cramps let up..."
|
|
|
|
/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength)
|
|
switch(strength)
|
|
if(1 to 10)
|
|
H.custom_pain("The muscles in your body hurt a little.",0)
|
|
if(11 to 30)
|
|
H.custom_pain("The muscles in your body cramp up painfully.",0)
|
|
if(31 to INFINITY)
|
|
H.emote("me",1,"flinches as all the muscles in their body cramp up.")
|
|
H.custom_pain("There's pain all over your body.",1)
|
|
|
|
// ITCH
|
|
// ====
|
|
/datum/medical_effect/itch
|
|
name = "Itch"
|
|
triggers = list("space_drugs" = 10)
|
|
cures = list("inaprovaline")
|
|
cure_message = "The itching stops..."
|
|
|
|
/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength)
|
|
switch(strength)
|
|
if(1 to 10)
|
|
H.custom_pain("You feel a slight itch.",0)
|
|
if(11 to 30)
|
|
H.custom_pain("You want to scratch your itch badly.",0)
|
|
if(31 to INFINITY)
|
|
H.emote("me",1,"shivers slightly.")
|
|
H.custom_pain("This itch makes it really hard to concentrate.",1)
|