Adds carcinisoprojection jelly, a limb regrowth chem that is made from slime mutation toxin & blood (#15053)

* Limb regrowth chem, new disease of crab cancer

* Limb regrowth adjustments

* oops, sorry linters.

* oh right this would probably fuck with dullahans

* woops missed a newline

* Update code/modules/reagents/chemistry/reagents/medicine_reagents.dm

Co-authored-by: DeltaFire <46569814+DeltaFire15@users.noreply.github.com>

* just realized this check is unnecessary.

* let's add a mood debuff while we're at it

* Update medicine_reagents.dm

* add a bounty

* misspelling

* Update crabcancer.dm

Co-authored-by: DeltaFire <46569814+DeltaFire15@users.noreply.github.com>
This commit is contained in:
BlueWildrose
2022-04-14 15:37:08 -07:00
committed by GitHub
parent 85817a734b
commit f235839351
7 changed files with 137 additions and 4 deletions
+1
View File
@@ -139,6 +139,7 @@
/datum/reagent/medicine/atropine,\
/datum/reagent/medicine/strange_reagent,\
/datum/reagent/medicine/regen_jelly,\
/datum/reagent/medicine/limb_regrowth,\
/datum/reagent/drug/space_drugs,\
/datum/reagent/drug/crank,\
/datum/reagent/drug/krokodil,\
@@ -1359,7 +1359,7 @@
/datum/reagent/medicine/neo_jelly
name = "Neo Jelly"
description = "Gradually regenerates all types of damage, without harming slime anatomy.Can OD"
description = "Gradually regenerates all types of damage, without harming slime anatomy. Can overdose."
reagent_state = LIQUID
metabolization_rate = 1 * REAGENTS_METABOLISM
color = "#91D865"
@@ -1797,3 +1797,50 @@
else
M.adjustToxLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
. = 1
/datum/reagent/medicine/limb_regrowth
name = "Carcinisoprojection Jelly"
description = "Also known as \"limb regrowth jelly\", this crabby looking xenobiological jelly will rapidly regrow any missing limbs someone has at the cost of some of their blood. Do not overdose."
taste_description = "salty slime"
color = "#EF5428" //like cooked crab!
reagent_state = LIQUID
overdose_threshold = 65 //it takes more than one bluespace syringe to overdose someone with this given how nasty the OD is.
value = REAGENT_VALUE_RARE
/datum/reagent/medicine/limb_regrowth/reaction_mob(mob/living/carbon/C, method=TOUCH, reac_volume)
. = ..()
if(!.)
return
if(method == TOUCH) //as funny as it would be to have this hurled at someone, nah.
return
var/vol = reac_volume + C.reagents.get_reagent_amount(/datum/reagent/medicine/limb_regrowth)
if(vol < 5) //need at least 5 units.
return
var/list/limbs_to_heal = C.get_missing_limbs(exclude_head = TRUE)
if(limbs_to_heal.len < 1) //nothing happens if they already got all limbs.
return
if(HAS_TRAIT(C, TRAIT_ROBOTIC_ORGANISM)) //sorry synths, consider a visit to the roboticist. dunno how to justify regrowing robolimbs.
return
else if(ishuman(C) && !(HAS_BONE in C.dna?.species?.species_traits)) //boneless have little trouble with the limb chemical.
C.visible_message("<span class='notice'>[C] suddenly regrows \his limbs!</span>",
"<span class='notice'>You suddenly regrow your limbs, sensation and all!</span>")
else //boneful beings get to scream.
C.visible_message("<span class='warning'>[C]'s body lets off a grotesque squelching, bone crunching sound as \his limbs grow back rapidly!</span>",
"<span class='danger'>Your body emits a grotesque squelching, bone crunching sound as your limbs grow back rapidly! \
With the sensation of your regained limbs, also comes pain!</span>",
"<span class='italics'>You hear a grotsque squelching noise and the sound of crunching bones.</span>")
playsound(C, 'sound/magic/demon_consume.ogg', 50, 1)
SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "painful_limb_regrowth", /datum/mood_event/painful_limb_regrowth)
C.emote("scream")
C.regenerate_limbs(excluded_limbs = list(BODY_ZONE_HEAD)) //would be a little funky for dullahans if they suddenly sprouted a head.
C.blood_volume = max(C.blood_volume - 30*limbs_to_heal.len,0)
//lose blood for each limb that was regained.
//10 units less expensive than slime limb regrowth, but doesn't check for low blood like the ability, so it could be dangerous.
to_chat(C,"<span class='warning'>You feel like this ordeal of your limbs regrowing has made you a little paler... as well as made you feel a little thirsty.</span>")
//hint at the blood loss. (paler is a common symptom depicted in-game of low blood, but dehydration is another symptom of low blood.)
/datum/reagent/medicine/limb_regrowth/overdose_start(mob/living/M)
M.ForceContractDisease(new /datum/disease/crabcancer, FALSE, TRUE) //it is now, time for crab.
..()
. = 1
@@ -371,3 +371,9 @@
id = /datum/reagent/medicine/system_cleaner
results = list(/datum/reagent/medicine/system_cleaner = 4)
required_reagents = list(/datum/reagent/iron = 2, /datum/reagent/oil = 2, /datum/reagent/medicine/calomel = 2, /datum/reagent/acetone = 2)
/datum/chemical_reaction/limb_regrowth
name = "Carcinisoprojection Jelly"
id = /datum/reagent/medicine/limb_regrowth
results = list(/datum/reagent/medicine/limb_regrowth = 2)
required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/slime_toxin = 1)
+9 -3
View File
@@ -124,19 +124,25 @@
/mob/living/carbon/alien/larva/get_leg_ignore()
return TRUE
/mob/living/proc/get_missing_limbs()
/mob/living/proc/get_missing_limbs(exclude_head = FALSE)
return list()
/mob/living/carbon/get_missing_limbs()
/mob/living/carbon/get_missing_limbs(exclude_head = FALSE)
var/list/full = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
for(var/zone in full)
if(exclude_head && zone == BODY_ZONE_HEAD) //this is needed in case we don't care for the lack of a dullahan's head or something.
full -= zone
continue
if(get_bodypart(zone))
full -= zone
return full
/mob/living/carbon/alien/larva/get_missing_limbs()
/mob/living/carbon/alien/larva/get_missing_limbs(exclude_head = FALSE)
var/list/full = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST)
for(var/zone in full)
if(exclude_head && zone == BODY_ZONE_HEAD) //I guess????
full -= zone
continue
if(get_bodypart(zone))
full -= zone
return full