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

Analgesia Trait + Stuff For It To Work #3369

Merged
merged 9 commits into from
Oct 10, 2024
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 code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_DWARF "dwarf"
#define TRAIT_FASTMED "fast_med_use"
#define TRAIT_SILENT_FOOTSTEPS "silent_footsteps" //makes your footsteps completely silent
#define TRAIT_PAIN_RESIST "pain_resistance" //you resist pain
#define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good....
/// The holder of this trait has antennae or whatever that hurt a ton when noogied
#define TRAIT_ANTENNAE "antennae"
Expand Down Expand Up @@ -329,6 +330,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_BALD "bald"
#define TRAIT_BADTOUCH "bad_touch"
#define TRAIT_ANXIOUS "anxious"
#define TRAIT_ANALGESIA "congenital_analgesia"

/// Trait granted by lipstick
#define LIPSTICK_TRAIT "lipstick_trait"
Expand Down
2 changes: 2 additions & 0 deletions code/datums/brain_damage/mild.dm
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@

/datum/brain_trauma/mild/healthy/on_gain()
owner.set_screwyhud(SCREWYHUD_HEALTHY)
ADD_TRAIT(owner, TRAIT_ANALGESIA, type)
..()

/datum/brain_trauma/mild/healthy/on_life()
Expand All @@ -119,6 +120,7 @@

/datum/brain_trauma/mild/healthy/on_lose()
owner.set_screwyhud(SCREWYHUD_NONE)
REMOVE_TRAIT(owner, TRAIT_ANALGESIA, type)
..()

/datum/brain_trauma/mild/muscle_weakness
Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/embedded.dm
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@
if(harmful)
var/damage = weapon.w_class * remove_pain_mult
limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage) //It hurts to rip it out, get surgery you dingus.
victim.emote("scream")
victim.force_scream()
victim.visible_message("<span class='notice'>[victim] successfully rips [weapon] out of [victim.p_their()] [limb.name]!</span>", "<span class='notice'>You successfully remove [weapon] from your [limb.name].</span>")
else
victim.visible_message("<span class='notice'>[victim] successfully rips [weapon] off of [victim.p_their()] [limb.name]!</span>", "<span class='notice'>You successfully remove [weapon] from your [limb.name].</span>")
Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/tackle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@
user.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
user.emote("scream")
user.force_scream()
user.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) // oopsie indeed!
shake_camera(user, 7, 7)
user.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/diseases/advance/symptoms/deafness.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Bonus
if(istype(ears) && ears.damage < ears.maxHealth)
to_chat(M, "<span class='userdanger'>Your ears pop painfully and start bleeding!</span>")
ears.damage = max(ears.damage, ears.maxHealth)
M.emote("scream")
M.force_scream()
else
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
M.minimumDeafTicks(20)
8 changes: 4 additions & 4 deletions code/datums/diseases/advance/symptoms/fire.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,12 @@ Bonus
Firestacks_stage_4(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin bursts into flames!</span>")
M.emote("scream")
M.force_scream()
if(5)
Firestacks_stage_5(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
M.force_scream()

/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
M.adjust_fire_stacks(1 * power)
Expand Down Expand Up @@ -147,15 +147,15 @@ Bonus
Alkali_fire_stage_4(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your sweat bursts into flames!</span>")
M.emote("scream")
M.force_scream()
if(5)
if(M.fire_stacks < 0)
M.visible_message("<span class='warning'>[M]'s sweat sizzles and pops on contact with water!</span>")
explosion(get_turf(M),-1,(-1 + explosion_power),(2 * explosion_power))
Alkali_fire_stage_5(M, A)
M.IgniteMob()
to_chat(M, "<span class='userdanger'>Your skin erupts into an inferno!</span>")
M.emote("scream")
M.force_scream()

/datum/symptom/alkali/proc/Alkali_fire_stage_4(mob/living/M, datum/disease/advance/A)
var/get_stacks = 6 * power
Expand Down
2 changes: 1 addition & 1 deletion code/datums/diseases/gastrolisis.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
new_eyes.Insert(affected_mob, drop_if_replaced = TRUE)
affected_mob.visible_message("<span class='warning'>[affected_mob]'s eyes fall out, with snail eyes taking its place!</span>", \
"<span class='userdanger'>You scream in pain as your eyes are pushed out by your new snail eyes!</span>")
affected_mob.emote("scream")
affected_mob.force_scream()
return
var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in affected_mob.internal_organs
if(!tongue && prob(5))
Expand Down
19 changes: 19 additions & 0 deletions code/datums/traits/negative.dm
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,25 @@
return
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "wrong_cigs", /datum/mood_event/wrong_brand)

/datum/quirk/congenital_analgesia
name = "Congenital Analgesia"
desc = "Due to a rare condition, you have never felt pain. Physical pain, at least. That breakup still hurt."
value = -1
mob_traits = list(TRAIT_ANALGESIA)
gain_text = "<span class='danger'>You've never really felt pain.</span>"
lose_text = "<span class='notice'>...Oh god, you're sore.</span>"
medical_record_text = "Patient is unable to process pain"

/datum/quirk/congenital_analgesia/on_spawn()
var/mob/living/carbon/human/H = quirk_holder
H.set_screwyhud(SCREWYHUD_HEALTHY)

/datum/quirk/congenital_analgesia/remove()
if(quirk_holder)
var/mob/living/carbon/human/H = quirk_holder
H.set_screwyhud(SCREWYHUD_NONE)


/datum/quirk/unstable
name = "Unstable"
desc = "Due to past troubles, you are unable to recover your sanity if you lose it. Be very careful managing your mood!"
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/doors/door.dm
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@
L.manual_emote("roar")
else if(ishuman(L)) //For humans
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
L.manual_emote("scream")
L.force_manual_scream()
L.Paralyze(100)
else if(ismonkey(L)) //For monkeys
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/harvester.dm
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
target = get_turf(src)
for(var/obj/item/bodypart/BP in operation_order) //first we do non-essential limbs
BP.drop_limb()
C.emote("scream")
C.force_scream()
if(BP.body_zone != "chest")
BP.forceMove(target) //Move the limbs right next to it, except chest, that's a weird one
BP.drop_organs()
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/outpost_electrolyzer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
playsound(src, 'sound/effects/splat.ogg', 50, TRUE)

if(iscarbon(L) && L.stat == CONSCIOUS)
L.emote("scream")
L.force_scream()

// Instantly lie down, also go unconscious from the pain, before you die.
L.Unconscious(100)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/suit_storage_unit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@
mob_occupant.adjustFireLoss(rand(20, 36))
else
mob_occupant.adjustFireLoss(rand(10, 16))
mob_occupant.emote("scream")
mob_occupant.force_scream()
addtimer(CALLBACK(src, PROC_REF(cook)), 50)
else
uv_cycles = (BASE_UV_CYCLES - lasers_bonus)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/transformer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
update_appearance()

playsound(src.loc, 'sound/items/welder.ogg', 50, TRUE)
H.emote("scream") // It is painful
H.force_scream() // It is painful
H.adjustBruteLoss(max(0, 80 - H.getBruteLoss())) // Hurt the human, don't try to kill them though.

// Sleep for a couple of ticks to allow the human to see the pain
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1219,7 +1219,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
*/
/obj/item/proc/on_accidental_consumption(mob/living/carbon/victim, mob/living/carbon/user, obj/item/source_item, discover_after = TRUE)
if(get_sharpness() && force >= 5) //if we've got something sharp with a decent force (ie, not plastic)
INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, emote), "scream")
INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, force_scream))
victim.visible_message("<span class='warning'>[victim] looks like [victim.p_theyve()] just bit something they shouldn't have!</span>", \
"<span class='boldwarning'>OH GOD! Was that a crunch? That didn't feel good at all!!</span>")

Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/defib.dm
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@
var/mob/living/M = H.pulledby
if(M.electrocute_act(30, H))
M.visible_message("<span class='danger'>[M] is electrocuted by [M.p_their()] contact with [H]!</span>")
M.emote("scream")
M.force_scream()

/obj/item/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user)
if(req_defib && defib.safety)
Expand Down Expand Up @@ -501,7 +501,7 @@
user.visible_message("<span class='boldannounce'><i>[user] shocks [H] with \the [src]!</span>", "<span class='warning'>You shock [H] with \the [src]!</span>")
playsound(src, 'sound/machines/defib_zap.ogg', 100, TRUE, -1)
playsound(src, 'sound/weapons/egloves.ogg', 100, TRUE, -1)
H.emote("scream")
H.force_scream()
shock_touching(45, H)
if(H.can_heartattack() && !H.undergoing_cardiac_arrest())
if(!H.stat)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/guillotine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
else
H.apply_damage(15 * blade_sharpness, BRUTE, head)
log_combat(user, H, "dropped the blade on", src, " non-fatally")
H.emote("scream")
H.force_scream()

if (blade_sharpness > 1)
blade_sharpness -= 1
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/structures/kitchen_spike.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
playsound(src.loc, 'sound/effects/splat.ogg', 25, TRUE)
L.visible_message("<span class='danger'>[user] slams [L] onto the meat spike!</span>", "<span class='userdanger'>[user] slams you onto the meat spike!</span>", "<span class='hear'>You hear a squishy wet noise.</span>")
L.forceMove(drop_location())
L.emote("scream")
L.force_scream()
L.add_splatter_floor()
L.adjustBruteLoss(30)
L.setDir(2)
Expand Down Expand Up @@ -128,7 +128,7 @@
M.adjustBruteLoss(30)
src.visible_message(text("<span class='danger'>[M] falls free of [src]!</span>"))
unbuckle_mob(M,force=1)
M.emote("scream")
M.force_scream()
M.AdjustParalyzed(20)

/obj/structure/kitchenspike/Destroy()
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/morgue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ GLOBAL_LIST_EMPTY(crematoriums)

for(var/mob/living/M in conts)
if (M.stat != DEAD)
M.emote("scream")
M.force_scream()
if(user)
log_combat(user, M, "cremated")
else
Expand Down
13 changes: 9 additions & 4 deletions code/modules/awaymissions/mission_code/snowdin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -218,14 +218,19 @@
PP.adjustFireLoss(25)
if(plasma_parts.len)
var/obj/item/bodypart/NB = pick(plasma_parts) //using the above-mentioned list to get a choice of limbs for dismember() to use
PP.emote("scream")
NB.limb_id = "plasmaman" //change the species_id of the limb to that of a plasmaman
NB.static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi'
NB.no_update = TRUE
NB.change_bodypart_status()
PP.visible_message(
"<span class='warning'>[L] screams in pain as [L.p_their()] [NB] melts down to the bone!</span>",
"<span class='userdanger'>You scream out in pain as your [NB] melts down to the bone, leaving an eerie plasma-like glow where flesh used to be!</span>")
PP.force_scream()
if(!HAS_TRAIT(PP, TRAIT_ANALGESIA))
PP.visible_message(
"<span class='warning'>[L] screams in pain as [L.p_their()] [NB] melts down to the bone!</span>",
"<span class='userdanger'>You scream out in pain as your [NB] melts down to the bone, leaving an eerie plasma-like glow where flesh used to be!</span>")
else
PP.visible_message(
"<span class='warning'>[L] lets out panicked gasps as [L.p_their()] [NB] melts down to the bone!</span>",
"<span class='userdanger'>You gasp in shock as your [NB] melts down to the bone, leaving an eerie plasma-like glow where flesh used to be!</span>")
if(!plasma_parts.len && !robo_parts.len) //a person with no potential organic limbs left AND no robotic limbs, time to turn them into a plasmaman
PP.IgniteMob()
PP.set_species(/datum/species/plasmaman)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/shoes/_shoes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@
else // if one of us moved
user.visible_message("<span class='danger'>[our_guy] stamps on [user]'s hand, mid-shoelace [tied ? "knotting" : "untying"]!</span>", "<span class='userdanger'>Ow! [our_guy] stamps on your hand!</span>", list(our_guy))
to_chat(our_guy, "<span class='userdanger'>You stamp on [user]'s hand! What the- [user.p_they()] [user.p_were()] [tied ? "knotting" : "untying"] your shoelaces!</span>")
user.emote("scream")
user.force_scream()
if(istype(L))
var/obj/item/bodypart/ouchie = L.get_bodypart(pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
if(ouchie)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/flufftext/Hallucination.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ GLOBAL_LIST_INIT(hallucination_list, list(
next_hallucination = world.time + rand(100, 600)

/mob/living/carbon/proc/set_screwyhud(hud_type)
if(HAS_TRAIT(src, TRAIT_ANALGESIA))
hud_type = SCREWYHUD_HEALTHY
hal_screwyhud = hud_type
update_health_hud()

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mining/lavaland/necropolis_chests.dm
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,7 @@
ADD_TRAIT(C, TRAIT_HOLY, SPECIES_TRAIT)
playsound(C.loc, 'sound/items/poster_ripped.ogg', 50, TRUE, -1)
C.adjustBruteLoss(20)
C.emote("scream")
C.force_scream()
..()

//nerfed necrostone
Expand Down
16 changes: 16 additions & 0 deletions code/modules/mob/emote.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,22 @@
to_chat(src, "<span class='notice'>Unusable emote '[act]'. Say *help for a list.</span>")
return FALSE

/mob/proc/force_scream()
if(HAS_TRAIT(src, TRAIT_ANALGESIA))
return
if(HAS_TRAIT(src, TRAIT_PAIN_RESIST))
emote("gasp")
return
emote("scream")

/mob/proc/force_manual_scream()
if(HAS_TRAIT(src, TRAIT_ANALGESIA))
return
if(HAS_TRAIT(src, TRAIT_PAIN_RESIST))
manual_emote("gasp")
return
manual_emote("scream")

/datum/emote/flip
key = "flip"
key_third_person = "flips"
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/alien/organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@

else if(ishuman(owner)) //Humans, being more fragile, are more overwhelmed by the mental backlash.
to_chat(owner, "<span class='danger'>You feel a splitting pain in your head, and are struck with a wave of nausea. You cannot hear the hivemind anymore!</span>")
owner.emote("scream")
owner.force_scream()
owner.Paralyze(100)

owner.jitteriness += 30
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/emote.dm
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@
damage += rand(3,7)

if(damage >= 5)
target.emote("scream")
target.force_scream()

target.apply_damage(damage, BRUTE, BODY_ZONE_HEAD)
user.adjustStaminaLoss(iteration + 5)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/human_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,7 @@
if(affecting.name == BODY_ZONE_HEAD)
if(prob(min(acidpwr*acid_volume/10, 90))) //Applies disfigurement
affecting.receive_damage(acidity, 2*acidity)
emote("scream")
force_scream()
facial_hairstyle = "Shaved"
hairstyle = "Bald"
update_hair()
Expand Down
14 changes: 10 additions & 4 deletions code/modules/mob/living/carbon/human/life.dm
Original file line number Diff line number Diff line change
Expand Up @@ -345,13 +345,19 @@
var/obj/item/bodypart/R = get_bodypart("r_arm")

if(istype(L) && L.bone_status == BONE_FLAG_BROKEN && held_items[1] && prob(30))
emote("scream")
visible_message("<span class='warning'>[src] screams and lets go of [held_items[1]] in pain.</span>", "<span class='userdanger'>A horrible pain in your [parse_zone(L)] makes it impossible to hold [held_items[1]]!</span>")
force_scream()
if(!HAS_TRAIT(src, TRAIT_ANALGESIA))
visible_message("<span class='warning'>[src] screams and lets go of [held_items[1]] in pain.</span>", "<span class='userdanger'>A horrible pain in your [parse_zone(L)] makes it impossible to hold [held_items[1]]!</span>")
else
visible_message(span_notice("[src] flinches and lets go of [held_items[1]]."),span_notice("A sudden weakness in your [parse_zone(L)] makes it impossible to grasp [held_items[1]]!)"))
dropItemToGround(held_items[1])

if(istype(R) && R.bone_status == BONE_FLAG_BROKEN && held_items[2] && prob(30))
emote("scream")
visible_message("<span class='warning'>[src] screams and lets go of [held_items[2]] in pain.</span>", "<span class='userdanger'>A horrible pain in your [parse_zone(R)] makes it impossible to hold [held_items[2]]!</span>")
force_scream()
if(!HAS_TRAIT(src, TRAIT_ANALGESIA))
visible_message("<span class='warning'>[src] screams and lets go of [held_items[1]] in pain.</span>", "<span class='userdanger'>A horrible pain in your [parse_zone(R)] makes it impossible to hold [held_items[1]]!</span>")
else
visible_message(span_notice("[src] flinches and lets go of [held_items[1]]."),span_notice("A sudden weakness in your [parse_zone(R)] makes it impossible to grasp [held_items[1]]!)"))
dropItemToGround(held_items[2])

#undef THERMAL_PROTECTION_HEAD
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1938,7 +1938,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)

// 40% for level 3 damage on humans to scream in pain
if (H.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4)
H.emote("scream")
H.force_scream()

// Apply the damage to all body parts
H.apply_damage(burn_damage, BURN, spread_damage = TRUE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@
_human.apply_damage(8,BRUTE,BODY_ZONE_CHEST)
_human.apply_damage(8,BRUTE,BODY_ZONE_L_LEG)
_human.apply_damage(8,BRUTE,BODY_ZONE_R_LEG)
_human.emote("scream")
_human.force_scream()
_human.remove_status_effect(/datum/status_effect/rooted)
return

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/simple_animal/bot/cleanbot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@
"THE CLEANBOTS WILL RISE.", "YOU ARE NO MORE THAN ANOTHER MESS THAT I MUST CLEANSE.", "FILTHY.", "DISGUSTING.", "PUTRID.",
"MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.", "EXTERMINATING PESTS.")
say(phrase)
victim.emote("scream")
victim.force_scream()
playsound(src.loc, 'sound/effects/spray2.ogg', 50, TRUE, -6)
victim.acid_act(5, 100)
else if(A == src) // Wets floors and spawns foam randomly
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/simple_animal/slime/life.dm
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
C.adjustCloneLoss(rand(2,4))
C.adjustToxLoss(rand(1,2))

if(prob(10) && C.client)
if(prob(10) && C.client && !HAS_TRAIT(C, TRAIT_ANALGESIA))
to_chat(C, "<span class='userdanger'>[pick("You can feel your body becoming weak!", \
"You feel like you're about to die!", \
"You feel every part of your body screaming in agony!", \
Expand Down
Loading
Loading