diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 023ac782564..990ef53eedd 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -164,7 +164,7 @@ var/list/sacrificed = list()
target.adjustBrainLoss(rand(1,5), 55)
initial_message = 1
- if (target.species && (target.species.flags & NO_PAIN))
+ if (!target.can_feel_pain())
target.visible_message("The markings below [target] glow a bloody red.")
else
target.visible_message("[target] writhes in pain as the markings below \him glow a bloody red.", "AAAAAAHHHH!", "You hear an anguished scream.")
diff --git a/code/game/machinery/crusher_piston.dm b/code/game/machinery/crusher_piston.dm
index 3c696803053..2dd5015d29a 100644
--- a/code/game/machinery/crusher_piston.dm
+++ b/code/game/machinery/crusher_piston.dm
@@ -501,7 +501,7 @@
return ..()
/mob/living/carbon/piston_move()
- if(!(species && (species.flags & NO_PAIN)))
+ if(can_feel_pain())
emote("scream")
return ..()
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index b6b37f4eb15..0ea76aa81d3 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1197,7 +1197,7 @@ About the new airlock wires panel:
/mob/living/carbon/airlock_crush(var/crush_damage)
. = ..()
- if (!(species && (species.flags & NO_PAIN)))
+ if (can_feel_pain())
emote("scream")
/mob/living/silicon/robot/airlock_crush(var/crush_damage)
diff --git a/code/game/machinery/kitchen/cooking_machines/fryer.dm b/code/game/machinery/kitchen/cooking_machines/fryer.dm
index a5b1fc64bb7..cfc6a798e19 100644
--- a/code/game/machinery/kitchen/cooking_machines/fryer.dm
+++ b/code/game/machinery/kitchen/cooking_machines/fryer.dm
@@ -168,7 +168,7 @@
if(ishuman(victim) && user.zone_sel.selecting != "groin" && user.zone_sel.selecting != "chest")
var/mob/living/carbon/human/H = victim
E = H.get_organ(user.zone_sel.selecting)
- if(!E || E.species.flags & NO_PAIN)
+ if(!E || !H.can_feel_pain())
nopain = 2
else if(E.robotic >= ORGAN_ROBOT)
nopain = 1
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index b5ff3e25ac6..4c3b428fe1e 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -336,12 +336,12 @@
if(src.issuperUV)
var/burndamage = rand(28,35)
OCCUPANT.take_organ_damage(0,burndamage)
- if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
+ if (OCCUPANT.can_feel_pain())
OCCUPANT.emote("scream")
else
var/burndamage = rand(6,10)
OCCUPANT.take_organ_damage(0,burndamage)
- if (!(OCCUPANT.species && (OCCUPANT.species.flags & NO_PAIN)))
+ if (OCCUPANT.can_feel_pain())
OCCUPANT.emote("scream")
if(i==3) //End of the cycle
if(!src.issuperUV)
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index 7d1b392cc71..2c28d234b33 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -84,7 +84,7 @@
if(affecting.take_damage(5, 0))
H.UpdateDamageIcon()
H.updatehealth()
- if(!(H.species.flags & NO_PAIN))
+ if(H.can_feel_pain())
H.Weaken(3)
return
check -= picked
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 0b0b9860258..d816e9dc721 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -334,7 +334,7 @@
M.emote("scream")
else
var/mob/living/carbon/C = M
- if (!(C.species && (C.species.flags & NO_PAIN)))
+ if (C.can_feel_pain())
C.emote("scream")
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index aacaaa461a8..44f1bdb4ace 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -427,4 +427,14 @@
return TRUE
/mob/living/carbon/proc/get_metabolism(metabolism)
- return metabolism
\ No newline at end of file
+ return metabolism
+
+/mob/living/carbon/proc/can_feel_pain()
+ if (species && (species.flags & NO_PAIN))
+ return FALSE
+ if (is_berserk())
+ return FALSE
+ if (analgesic > 100)
+ return FALSE
+
+ return TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/carbon_powers.dm b/code/modules/mob/living/carbon/carbon_powers.dm
index a56b7bf59ba..9a963a8fd81 100644
--- a/code/modules/mob/living/carbon/carbon_powers.dm
+++ b/code/modules/mob/living/carbon/carbon_powers.dm
@@ -33,7 +33,7 @@
if(B.host_brain.ckey)
src << "You send a punishing spike of psychic agony lancing into your host's brain."
- if (species && (species.flags & NO_PAIN))
+ if (!can_feel_pain())
B.host_brain << "You feel a strange sensation as a foreign influence prods your mind."
src << "It doesn't seem to be as effective as you hoped."
else
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 62c74806bcf..1dc38b772e6 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1158,7 +1158,7 @@
for(var/obj/item/O in organ.implants)
if(!istype(O,/obj/item/weapon/implant) && prob(5)) //Moving with things stuck in you could be bad.
// All kinds of embedded objects cause bleeding.
- if(species.flags & NO_PAIN)
+ if(!can_feel_pain())
src << "You feel [O] moving inside your [organ.name]."
else
var/msg = pick( \
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index eb40848edd8..de5274a0ba6 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -248,7 +248,7 @@
/mob/living/carbon/human/adjustHalLoss(var/amount, var/ignoreImmunity = 0)//An inherited version so this doesnt affect cyborgs
if(status_flags & GODMODE) return 0 //godmode
if(!ignoreImmunity)//Adjusting how hallloss works. Species with the NO_PAIN flag will suffer most of the effects of halloss, but will be immune to most conventional sources of accumulating it
- if (species && species.flags & NO_PAIN)//Species with this flag will only gather halloss through species-specific mechanics, which apply it with the ignoreImmunity flag
+ if (!can_feel_pain())//Species with the NO_PAIN flag will only gather halloss through species-specific mechanics, which apply it with the ignoreImmunity flag
return 0
if(wearing_rig) //I don't know if this is the best way, but I'm hard-pressed to think of a different way. Thanks Vaurca.
@@ -397,7 +397,7 @@ This function restores all organs.
//Handle other types of damage
if(damagetype != BRUTE && damagetype != BURN)
- if(!stat && damagetype == HALLOSS && !(species && (species.flags & NO_PAIN)))
+ if(!stat && damagetype == HALLOSS && (can_feel_pain()))
if ((damage > 25 && prob(20)) || (damage > 50 && prob(60)))
emote("scream")
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 5ad64743067..7a294b30bed 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -77,7 +77,7 @@ emp_act
emote("me", 1, "drops what they were holding, their [affected.name] malfunctioning!")
else
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
- emote("me", 1, "[(species && species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [affected.name]!")
+ emote("me", 1, "[(!can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [affected.name]!")
..(stun_amount, agony_amount, def_zone)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index c5240184ccc..610293325e5 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -16,7 +16,7 @@
var/health_deficiency = (100 - health)
if(health_deficiency >= 40) tally += (health_deficiency / 25)
- if (!(species && (species.flags & NO_PAIN)))
+ if (can_feel_pain())
if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it
if(wear_suit)
@@ -44,7 +44,7 @@
else if(E.status & ORGAN_BROKEN)
tally += 1.5
- if (!(species && (species.flags & NO_PAIN)))
+ if (can_feel_pain())
if(shock_stage >= 10) tally += 3
if(aiming && aiming.aiming_at) tally += 5 // Iron sights make you slower, it's a well-known fact.
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index a603e34c8b9..931992ea823 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -99,7 +99,7 @@
// standing is poor
if(stance_damage >= 4 || (stance_damage >= 2 && prob(5)))
if(!(lying || resting))
- if(species && !(species.flags & NO_PAIN))
+ if(can_feel_pain())
emote("scream")
custom_emote(1, "collapses!")
Weaken(5) //can't emote while weakened, apparently.
diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm
index 9febc4fc5c3..aa28e796e5d 100644
--- a/code/modules/mob/living/carbon/human/human_powers.dm
+++ b/code/modules/mob/living/carbon/human/human_powers.dm
@@ -265,7 +265,7 @@
if(prob(10) && !(H.species.flags & NO_BLOOD))
to_chat(H,"Your nose begins to bleed...")
H.drip(3)
- else if(prob(25) && !(H.species.flags & NO_PAIN))
+ else if(prob(25) && (can_feel_pain()))
to_chat(H,"Your head hurts...")
else if(prob(50))
to_chat(H,"Your mind buzzes...")
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index f639bd66193..a493643d3a1 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1331,7 +1331,7 @@
/mob/living/carbon/human/handle_shock()
..()
if(status_flags & GODMODE) return 0 //godmode
- if(species && species.flags & NO_PAIN) return
+ if(!can_feel_pain()) return
if(health < config.health_threshold_softcrit)// health 0 makes you immediately collapse
shock_stage = max(shock_stage, 61)
@@ -1592,7 +1592,7 @@
return slurring
/mob/living/carbon/human/handle_stunned()
- if(species.flags & NO_PAIN)
+ if(!can_feel_pain())
stunned = 0
return 0
if(..())
diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm
index db035478335..0ffe31d8ffa 100644
--- a/code/modules/mob/living/carbon/human/unarmed_attack.dm
+++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm
@@ -49,12 +49,17 @@ var/global/list/sparring_attack_cache = list()
return
var/stun_chance = rand(0, 100)
+ var/pain_message = TRUE
+
+ if(!target.can_feel_pain())
+ pain_message = FALSE
if(attack_damage >= 5 && armour < 100 && !(target == user) && stun_chance <= attack_damage * 5) // 25% standard chance
switch(zone) // strong punches can have effects depending on where they hit
if("head", "mouth", "eyes")
// Induce blurriness
- target.visible_message("[target] looks momentarily disoriented.", "You see stars.")
+ if(pain_message)
+ target.visible_message("[target] looks momentarily disoriented.", "You see stars.")
target.apply_effect(attack_damage*2, EYE_BLUR, armour)
if("l_arm", "l_hand")
if (target.l_hand)
@@ -79,11 +84,13 @@ var/global/list/sparring_attack_cache = list()
target.set_dir(reverse_dir[target.dir])
target.apply_effect(attack_damage * 0.4, WEAKEN, armour)
if("groin")
- target.visible_message("[target] looks like \he is in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]")
+ if(pain_message)
+ target.visible_message("[target] looks like \he is in pain!", "[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]")
target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour)
if("l_leg", "l_foot", "r_leg", "r_foot")
if(!target.lying)
- target.visible_message("[target] gives way slightly.")
+ if(pain_message)
+ target.visible_message("[target] gives way slightly.")
target.apply_effect(attack_damage*3, AGONY, armour)
else if(attack_damage >= 5 && !(target == user) && (stun_chance + attack_damage * 5 >= 100) && armour < 100) // Chance to get the usual throwdown as well (25% standard chance)
if(!target.lying)
@@ -106,7 +113,7 @@ var/global/list/sparring_attack_cache = list()
eyes.take_damage(rand(3,4), 1)
user.visible_message("[user] presses \his [eye_attack_text] into [target]'s [eyes.name]!")
- target << "You experience[(target.species.flags & NO_PAIN)? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(target.species.flags & NO_PAIN)? "." : "!"]"
+ target << "You experience[(!target.can_feel_pain())? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(!target.can_feel_pain())? "." : "!"]"
/datum/unarmed_attack/bite
attack_verb = list("bit")
diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm
index 1abd6d26c9a..c93fc377153 100644
--- a/code/modules/mob/living/carbon/shock.dm
+++ b/code/modules/mob/living/carbon/shock.dm
@@ -3,7 +3,7 @@
// proc to find out in how much pain the mob is at the moment
/mob/living/carbon/proc/updateshock()
- if (species && (species.flags & NO_PAIN))
+ if (!can_feel_pain())
src.traumatic_shock = src.halloss //Nopain species only receive halloss from specific mechanics
return src.traumatic_shock
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 65fd86ddc00..57e224f380e 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -320,7 +320,7 @@ default behaviour is:
/mob/living/carbon/adjustHalLoss(var/amount, var/ignoreImmunity = 0)//An inherited version so this doesnt affect cyborgs
if(status_flags & GODMODE) return 0 //godmode
if(!ignoreImmunity)//Adjusting how hallloss works. Species with the NO_PAIN flag will suffer most of the effects of halloss, but will be immune to most conventional sources of accumulating it
- if (species && species.flags & NO_PAIN)//Species with this flag will only gather halloss through species-specific mechanics, which apply it with the ignoreImmunity flag
+ if (!can_feel_pain())//Species with the NO_PAIN flag will only gather halloss through species-specific mechanics, which apply it with the ignoreImmunity flag
return 0
if(amount > 0)
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 1a6226009dc..af0a20db1a6 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -237,7 +237,7 @@
brute -= brute / 2
if(status & ORGAN_BROKEN && prob(40) && brute)
- if (owner && !(owner.species && (owner.species.flags & NO_PAIN)))
+ if (owner && (owner.can_feel_pain()))
owner.emote("scream") //getting hit on broken hand hurts
if(used_weapon)
add_autopsy_data("[used_weapon]", brute + burn)
@@ -916,7 +916,7 @@ Note that amputating the affected organ does in fact remove the infection from t
"You hear a loud cracking sound coming from \the [owner].",\
"Something feels like it shattered in your [name]!",\
"You hear a sickening crack.")
- if(owner.species && !(owner.species.flags & NO_PAIN))
+ if(owner.species && (owner.can_feel_pain()))
owner.emote("scream")
playsound(src.loc, "fracture", 100, 1, -2)
diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm
index 33731dba805..1780142cf9e 100644
--- a/code/modules/organs/pain.dm
+++ b/code/modules/organs/pain.dm
@@ -10,7 +10,7 @@ mob/var/next_pain_time = 0
mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0)
if(stat >= 1)
return
- if(species && (species.flags & NO_PAIN))
+ if(!can_feel_pain())
return
if(analgesic > 40)
return
@@ -53,7 +53,7 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0
mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength)
if(stat >= 1)
return
- if(species.flags & NO_PAIN)
+ if(!can_feel_pain())
return
if(reagents.has_reagent("tramadol"))
return
@@ -74,7 +74,7 @@ mob/living/carbon/human/proc/custom_pain(var/message, var/flash_strength)
mob/living/carbon/human/proc/handle_pain()
// not when sleeping
- if(species.flags & NO_PAIN) return
+ if(!can_feel_pain()) return
if(stat >= 2) return
if(analgesic > 70)
diff --git a/code/modules/organs/subtypes/parasite.dm b/code/modules/organs/subtypes/parasite.dm
index 035cc973cc6..ec8e2c15d9b 100644
--- a/code/modules/organs/subtypes/parasite.dm
+++ b/code/modules/organs/subtypes/parasite.dm
@@ -56,7 +56,7 @@
if (!owner)
return
- if(prob(10) && !(owner.species.flags & NO_PAIN))
+ if(prob(10) && (owner.can_feel_pain()))
owner << "You feel a stinging pain in your abdomen!"
owner.emote("me",1,"winces slightly.")
owner.adjustHalLoss(5)
@@ -96,7 +96,7 @@
S.set_up(R, 20, 0, T, 40)
S.start()
- if(!(owner.species.flags & NO_PAIN))
+ if(owner.can_feel_pain())
owner.emote("scream")
owner.adjustHalLoss(15)
owner.drip(15)
@@ -122,7 +122,7 @@
/obj/item/organ/parasite/blackkois/process()
..()
- if(prob(10) && !(owner.species.flags & NO_PAIN))
+ if(prob(10) && (owner.can_feel_pain()))
if(stage < 3)
owner << "You feel a stinging pain in your abdomen!"
else
@@ -174,7 +174,7 @@
removed_langs = 1
if(prob(10))
- if(!(owner.species.flags & NO_PAIN))
+ if(owner.can_feel_pain())
owner << "You feel an unbearable pain in your mind!"
owner.emote("scream")
owner.adjustBrainLoss(1)
@@ -193,7 +193,7 @@
S.set_up(R, 20, 0, T, 40)
S.start()
- if(!(owner.species.flags & NO_PAIN))
+ if(owner.can_feel_pain())
owner.emote("scream")
owner.adjustHalLoss(15)
owner.drip(15)
@@ -223,7 +223,7 @@
if (!owner)
return
- if(prob(10) && !(owner.species.flags & NO_PAIN))
+ if(prob(10) && (owner.can_feel_pain()))
owner << "You feel a burning sensation on your skin!"
owner.make_jittery(10)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm
index 96ee6939412..8ff393a0593 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm
@@ -459,7 +459,7 @@
if(affecting.take_damage(0, removed * power * 0.1))
H.UpdateDamageIcon()
if(prob(100 * removed / meltdose)) // Applies disfigurement
- if (!(H.species && (H.species.flags & NO_PAIN)))
+ if (H.can_feel_pain())
H.emote("scream")
H.status_flags |= DISFIGURED
else
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index e9c4c457b8b..08a0cb18976 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -582,7 +582,7 @@
/datum/reagent/capsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(H.species && (H.species.flags & (NO_PAIN)))
+ if(!H.can_feel_pain())
return
if(dose < agony_dose)
if(prob(5) || dose == metabolism) //dose == metabolism is a very hacky way of forcing the message the first time this procs
@@ -626,8 +626,8 @@
return
var/mob/living/carbon/human/H = M
protection = list(H.head, H.glasses, H.wear_mask)
- if(H.species && (H.species.flags & NO_PAIN))
- no_pain = 1 //TODO: living-level can_feel_pain() proc
+ if(!H.can_feel_pain())
+ no_pain = 1
// Robo-eyes are immune to pepperspray now. Wee.
var/obj/item/organ/eyes/E = H.get_eyes()
@@ -672,7 +672,7 @@
/datum/reagent/capsaicin/condensed/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(H.species && (H.species.flags & NO_PAIN))
+ if(!H.can_feel_pain())
return
if(dose == metabolism)
M << "You feel like your insides are burning!"
@@ -3237,7 +3237,7 @@
if(alien != IS_DIONA)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if(H.species && (H.species.flags & (NO_PAIN)))
+ if(!H.can_feel_pain())
return
if(dose < agony_dose)
if(prob(5) || dose == metabolism)
diff --git a/code/modules/spells/artifacts.dm b/code/modules/spells/artifacts.dm
index 1a2bd010da8..3eebf26dd14 100644
--- a/code/modules/spells/artifacts.dm
+++ b/code/modules/spells/artifacts.dm
@@ -281,7 +281,7 @@
to_chat(H, "You stab \the [src] with \the [W]!")
H.apply_damage(2, BRUTE, target_zone, edge = TRUE)
playsound(get_turf(H), 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- if(!(H.species.flags & NO_PAIN))
+ if(H.can_feel_pain())
var/obj/item/organ/external/organ = H.get_organ(target_zone)
to_chat(H, "You feel a stabbing pain in your [organ.name]!")
diff --git a/html/changelogs/alberyk-painfix.yml b/html/changelogs/alberyk-painfix.yml
new file mode 100644
index 00000000000..09a5eaed205
--- /dev/null
+++ b/html/changelogs/alberyk-painfix.yml
@@ -0,0 +1,6 @@
+author: Alberyk
+
+delete-after: True
+
+changes:
+ - tweak: "Pain related effects, such as stun batons and pepperspray, will now properly take in consideration other factors, like painkillers."