Adds Sanguine and Osseous Reagent (#21148)

* SR (not strange reagent)

* Osseous Reagent

* i forgor the recipe

* typecasting tweak

* SR tweaks

* bone tumor tweaks

* SR overdose buff

* Update code/modules/surgery/organs/bone_tumor.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* Update code/modules/surgery/organs/bone_tumor.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* makes SR actually work
oops 🤪

* guard clause

---------

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
JimKil3
2023-07-11 14:46:48 +01:00
committed by GitHub
co-authored by Luc Henri215
parent 7e6075a934
commit 083b74ec85
4 changed files with 126 additions and 0 deletions
@@ -818,6 +818,86 @@
SSblackbox.record_feedback("tally", "players_revived", 1, "lazarus_reagent")
..()
/datum/reagent/medicine/sanguine_reagent
name = "Sanguine Reagent"
id = "sanguine_reagent"
description = "A deeply crimson almost-gel that can mimic blood, regardless of type."
color = "#770101"
taste_description = "coppery fuel"
harmless = FALSE
overdose_threshold = 15
/datum/reagent/medicine/sanguine_reagent/on_mob_life(mob/living/M)
if(!ishuman(M))
return
var/mob/living/carbon/human/H = M
if(NO_BLOOD in H.dna.species.species_traits)
return ..()
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
switch(current_cycle)
if(1)
H.blood_volume += 1
if(2 to 25)
H.blood_volume += 3
else
H.blood_volume += 5
return ..()
/datum/reagent/medicine/sanguine_reagent/overdose_process(mob/living/M, severity)
var/update_flags = STATUS_UPDATE_NONE
if(!ishuman(M))
return
var/mob/living/carbon/human/H = M
if(volume < 20)
if(prob(10))
to_chat(H, "<span class='warning>You cough up some congealed blood.</span>")
H.vomit(blood = TRUE, stun = FALSE) //mostly visual
else if(prob(10))
var/overdose_message = pick("Your vision is tinted red for a moment.", "You can hear your heart beating.")
to_chat(H, "<span class='warning'>[overdose_message]</span>")
else
if(prob(10))
to_chat(H, "<span class='danger'>You choke on congealed blood!</span>")
H.AdjustLoseBreath(2 SECONDS)
H.vomit(blood = TRUE, stun = FALSE)
else if(prob(10))
var/overdose_message = pick("You're seeing red!", "Your heartbeat thunders in your ears!", "Your veins writhe under your skin!")
to_chat(H, "<span class='danger'>[overdose_message]</span>")
H.adjustBruteLoss(6)
if(H.client?.prefs.colourblind_mode == COLOURBLIND_MODE_NONE)
H.client.color = "red"
addtimer(VARSET_CALLBACK(H.client, color, ""), 6 SECONDS)
return list(0, update_flags)
/datum/reagent/medicine/osseous_reagent
name = "Osseous Reagent"
id = "osseous_reagent"
description = "A solution of pinkish gel with white shards floating in it, which is supposedly able to be processed into bone gel."
color = "#c9abab"
taste_description = "chunky marrow"
harmless = FALSE
overdose_threshold = 30 //so a single shotgun dart can't cause the tumor effect
/datum/reagent/medicine/osseous_reagent/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
update_flags |= M.adjustToxLoss(1, FALSE)
return ..() | update_flags
/datum/reagent/medicine/osseous_reagent/overdose_process(mob/living/M, severity)
var/update_flags = STATUS_UPDATE_NONE
update_flags |= M.adjustToxLoss(1, FALSE)
if(ishuman(M) && prob(5))
var/mob/living/carbon/human/H = M
if(!H.get_int_organ(/obj/item/organ/internal/bone_tumor))
new/obj/item/organ/internal/bone_tumor(H)
return ..()
/datum/reagent/medicine/mannitol
name = "Mannitol"
id = "mannitol"
@@ -215,6 +215,22 @@
/datum/chemical_reaction/life/friendly/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life (friendly)", FRIENDLY_SPAWN)
/datum/chemical_reaction/sanguine_reagent
name = "Sanguine Reagent"
id = "sanguine_reagent"
result = "sanguine_reagent"
required_reagents = list("omnizine" = 1, "synthflesh" = 2, "iron" = 2)
result_amount = 5
mix_message = "The mixture bubbles furiously for a moment, then condenses into a sanguine gel."
/datum/chemical_reaction/osseous_reagent
name = "Osseous Reagent"
id = "osseous_reagent"
result = "osseous_reagent"
required_reagents = list("milk" = 1, "potassium" = 1, "oxygen" = 4, "phenol" = 3, "formaldehyde" = 3)
result_amount = 12
mix_message = "Shards of a bone-like substance start to form in the liquid."
/datum/chemical_reaction/mannitol
name = "Mannitol"
id = "mannitol"