Fixes and reworks panotoxin (#17813)

* the pr!

* changelog, overdose fiddling

* more overdose fiddling. overdose now kills.

* overdose hello??

* overdose is fine

* associative list? dmdocs?? it still works

* mayhap... you wanted... a space??/

* I... capitalize....?

* dmdoc part final?
This commit is contained in:
Sniblet
2023-12-07 01:56:32 +00:00
committed by GitHub
parent d4170acb6f
commit c982ba7b16
4 changed files with 77 additions and 4 deletions
@@ -73,14 +73,55 @@
/singleton/reagent/toxin/panotoxin
name = "Panotoxin"
description = "A strange poison from the strange panocelium mushroom that causes intense pain when injected."
description = "An insidious poison from the panocelium mushroom that causes mind-shattering pain. Known to cause fatal shock in small doses. Torturers dilute it."
reagent_state = LIQUID
color = "#008844"
strength = 0
overdose = 2
od_minimum_dose = REAGENTS_OVERDOSE * 0.25
taste_description = "stinging needles"
/singleton/reagent/toxin/panotoxin/initial_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
M.chem_tracking[/singleton/reagent/toxin/panotoxin] = 0
/singleton/reagent/toxin/panotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
M.adjustHalLoss(removed*15)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.can_feel_pain())
return
if(prob(40))
M.apply_effect(20, DAMAGE_PAIN) //Third of a stunbaton per proc! This gets really bad.
M.chem_tracking[/singleton/reagent/toxin/panotoxin] += 20
else if(prob(5))
M.Stun(4)
M.custom_pain(SPAN_DANGER("You feel [pick("a spike of horrific pain razing through every cell of your body","your insides bursting into screaming fire","your body trying to turn itself inside out","what death must be like")]!"), 40)
M.chem_tracking[/singleton/reagent/toxin/panotoxin] += 40
M.visible_message(SPAN_WARNING("[M] [pick("writhes in agony!","seizes up!","contorts in pain!")]"))
/singleton/reagent/toxin/panotoxin/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.can_feel_pain())
return
if(prob(5))
M.visible_message(SPAN_WARNING("[M] [pick("twitches faintly...","quivers slightly...")]"), range = 2)
else if(prob(5))
M.add_chemical_effect(CE_CARDIOTOXIC, 1)
M.custom_pain(SPAN_HIGHDANGER("You feel [pick("your innermost being rotting alive as it slides down a slope of sandpaper","death's crushing, scalding grip engulf you","your insides imploding into a horrific singularity","nothing at all but cold scorching agony","the end of everything, pouring into and suffusing you like a waterfall of needles")]!"), 120)
M.chem_tracking[/singleton/reagent/toxin/panotoxin] += 120
M.visible_message(SPAN_WARNING("[M] [pick("tenses all over, and doesn't relax!","convulses violently!")]"))
/singleton/reagent/toxin/panotoxin/final_effect(var/mob/living/carbon/human/M, var/alien, var/holder)
var/pain_to_refund = M.chem_tracking[/singleton/reagent/toxin/panotoxin] //5u does about 1900-2600 pain.
if(pain_to_refund > 80)
M.visible_message("<b>[M]</b> visibly untenses.") //Torturers should microdose. This saves them constant scans while preventing spam if IV'd.
to_chat(M, SPAN_GOOD("You feel the agony start to recede!"))
M.apply_effect(pain_to_refund * -0.5, DAMAGE_PAIN) //Without this, they can easily be trapped in deep pain shock for most of a round with no recourse in the game except for red nightshade. We only do half because a lot of it heals during the dose.
if(pain_to_refund > 4000)
to_chat(M, SPAN_WARNING("You're... free? Was life always so beautiful...?"))
M.apply_effect(pain_to_refund * -0.3, DAMAGE_PAIN) //If it's super bad, reduce further to mitigate OOC agony. We've been through multiple heart failures at this point. Let's be generous.
M.chem_tracking -= /singleton/reagent/toxin/panotoxin
pain_to_refund = null
/singleton/reagent/toxin/phoron
name = "Phoron"
@@ -413,8 +413,8 @@
/obj/item/reagent_containers/syringe/drugs
name = "Syringe (drugs)"
desc = "Contains aggressive drugs meant for torture."
reagents_to_add = list(/singleton/reagent/toxin/panotoxin = 5, /singleton/reagent/drugs/mindbreaker = 10)
desc = "Contains aggressive drugs meant for torture. Markered lines denote points at which to stop injecting."
reagents_to_add = list(/singleton/reagent/toxin/panotoxin = 1, /singleton/reagent/drugs/cryptobiolin = 4, /singleton/reagent/drugs/mindbreaker = 10)
/obj/item/reagent_containers/syringe/drugs/Initialize()
. = ..()