diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 1dc53c4b175..1e394af0e95 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -596,11 +596,10 @@
m_type = 1
else
if (!muzzled)
- message = "screams!"
- m_type = 2
+ message = pick(species.scream_emote)
else
message = "makes a very loud noise."
- m_type = 2
+ m_type = 2
if("swish")
src.animate_tail_once()
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index dce9f10ce22..a9c4fc83a61 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -148,7 +148,7 @@
continue
drop_from_inventory(r_hand)
- var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
+ var/emote_scream = pick(species.pain_item_drop_cry)
emote("me", 1, "[(species.flags & NO_PAIN) ? "" : emote_scream ]drops what they were holding in their [E.name]!")
else if(!(E.status & ORGAN_ROBOT) && (CE_DROPITEM in chem_effects) && prob(chem_effects[CE_DROPITEM]))
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index c8bf08244b4..954001e59bd 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1087,7 +1087,7 @@
return 0
if(shock_stage == 10)
- custom_pain("[pick("It hurts so much", "You really need some painkillers", "Dear god, the pain")]!", 10, nohalloss = TRUE)
+ custom_pain("[pick(species.pain_messages)]!", 10, nohalloss = TRUE)
if(shock_stage >= 30)
if(shock_stage == 30)
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index d2957d0fe76..197072518dc 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -67,6 +67,7 @@
/datum/unarmed_attack/bite
)
var/list/unarmed_attacks = null // For empty hand harm-intent attack
+ var/pain_mod = 1 // Pain multiplier
var/brute_mod = 1 // Physical damage multiplier.
var/burn_mod = 1 // Burn damage multiplier.
var/oxy_mod = 1 // Oxyloss modifier
@@ -96,9 +97,21 @@
var/death_sound
var/death_message = "falls limp and stops moving..."
var/death_message_range = 2
+ var/list/scream_emote = list("screams!")
var/knockout_message = "has been knocked unconscious!"
var/halloss_message = "slumps to the ground, too weak to continue fighting."
var/halloss_message_self = "You're in too much pain to keep going..."
+ var/list/pain_messages = list("It hurts so much", "You really need some painkillers", "Dear god, the pain") // passive message displayed to user when injured
+ var/list/pain_item_drop_cry = list("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
+
+ // External Organ Pain Damage
+ var/organ_low_pain_message = "Your %PARTNAME% hurts."
+ var/organ_med_pain_message = "Your %PARTNAME% hurts badly!"
+ var/organ_high_pain_message = "Your %PARTNAME% is screaming out in pain!"
+
+ var/organ_low_burn_message = "Your %PARTNAME% burns."
+ var/organ_med_burn_message = "Your %PARTNAME% burns horribly!"
+ var/organ_high_burn_message = "Your %PARTNAME% feels like it's on fire!"
// Environment tolerance/life processes vars.
var/reagent_tag //Used for metabolizing reagents.
diff --git a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm
index b1fd67e9f2c..0a197b38758 100644
--- a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm
+++ b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm
@@ -45,6 +45,22 @@
even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \
water and other radiation."
+ organ_low_pain_message = "The nymph making up our %PARTNAME% feels injured."
+ organ_med_pain_message = "The nymph making up our %PARTNAME% can barely manage the pain!"
+ organ_high_pain_message = "The nymph making up our %PARTNAME% screams out in pain!"
+
+ organ_low_burn_message = "The nymph making up our %PARTNAME% notes a burning injury."
+ organ_med_burn_message = "The nymph making up our %PARTNAME% burns terribly!"
+ organ_high_burn_message = "The nymph making up our %PARTNAME% screams in agony at the burning!"
+
+ scream_emote = list("creaks in pain!", "rustles in agony!")
+ scream_emote = "screams!"
+ halloss_message = "creaks and crumbles to the floor."
+ halloss_message_self = "We can't take this much pain..."
+ pain_messages = list("We're in pain", "We hurt so much", "We can't stand the pain")
+ pain_item_drop_cry = list("creaks loudly and ", "rustles erratically and ", "twitches for a moment and ")
+
+ pain_mod = 0.7
grab_mod = 0.6 // Viney Tentacles and shit to cling onto
resist_mod = 1.5 // Reasonably stronk, not moreso than an Unathi or robot.
@@ -86,7 +102,7 @@
body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_SKIN_PRESET
- flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_PAIN | NO_SLIP | NO_CHUBBY | NO_ARTERIES
+ flags = NO_BREATHE | NO_SCAN | IS_PLANT | NO_BLOOD | NO_SLIP | NO_CHUBBY | NO_ARTERIES
spawn_flags = CAN_JOIN | IS_WHITELISTED | NO_AGE_MINIMUM
character_color_presets = list("Default Bark" = "#000000", "Light Bark" = "#141414", "Brown Bark" = "#2b1d0e", "Green Bark" = "#001400")
diff --git a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm
index 246698511b8..304f3377c13 100644
--- a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm
+++ b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm
@@ -88,6 +88,8 @@
"Your scales bristle against the cold."
)
+ pain_messages = list("It hurts so much", "You really need some painkillers", "Ancestors, it hurts")
+
move_trail = /obj/effect/decal/cleanable/blood/tracks/claw
allowed_citizenships = list(CITIZENSHIP_IZWESKI, CITIZENSHIP_DOMINIA, CITIZENSHIP_BIESEL, CITIZENSHIP_SOL, CITIZENSHIP_COALITION, CITIZENSHIP_ELYRA, CITIZENSHIP_ERIDANI)
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 7824dea7097..92f5e115988 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -1346,6 +1346,7 @@ Note that amputating the affected organ does in fact remove the infection from t
return
var/last_pain = pain
if(owner)
+ amount *= owner.species.pain_mod
amount -= (owner.chem_effects[CE_PAINKILLER]/3)
if(amount <= 0)
return
diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm
index a708f4b0aae..dcc05861b5a 100644
--- a/code/modules/organs/pain.dm
+++ b/code/modules/organs/pain.dm
@@ -29,24 +29,25 @@ mob/var/next_pain_time = 0
if(burning)
switch(amount)
if(1 to 10)
- msg = "Your [partname] burns."
+ msg = species.organ_low_burn_message
if(11 to 90)
flash_weak_pain()
- msg = "Your [partname] burns horribly!"
+ msg = species.organ_med_burn_message
if(91 to 10000)
flash_pain()
- msg = "Your [partname] feels like it's on fire!"
+ msg = species.organ_high_burn_message
else
switch(amount)
if(5 to 14)
- msg = "Your [partname] hurts."
+ msg = species.organ_low_pain_message
if(15 to 90)
flash_weak_pain()
- msg = "Your [partname] hurts badly!"
+ msg = species.organ_med_pain_message
if(91 to 10000)
flash_pain()
- msg = "Your [partname] is screaming out in pain!"
+ msg = species.organ_high_pain_message
if(msg && (msg != last_pain_message || prob(10)))
+ msg = replacetext(msg, "%PARTNAME%", partname)
last_pain_message = msg
to_chat(src, msg)
next_pain_time = world.time + 50
diff --git a/code/unit_tests/mob_tests.dm b/code/unit_tests/mob_tests.dm
index e51bbd07720..a9843ba779d 100644
--- a/code/unit_tests/mob_tests.dm
+++ b/code/unit_tests/mob_tests.dm
@@ -480,7 +480,7 @@ datum/unit_test/mob_damage/diona/clone
datum/unit_test/mob_damage/diona/halloss
name = "MOB: Diona Halloss Damage Check"
damagetype = PAIN
- expected_vulnerability = IMMUNE
+ expected_vulnerability = ARMORED
// =================================================================
// SPECIAL WHITTLE SNOWFLAKES aka IPC
diff --git a/html/changelogs/geeves-diona_pain.yml b/html/changelogs/geeves-diona_pain.yml
new file mode 100644
index 00000000000..ec60070dece
--- /dev/null
+++ b/html/changelogs/geeves-diona_pain.yml
@@ -0,0 +1,7 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - rscadd: "Diona now feel pain, although they only take 70% of the pain other species experience."
+ - rscadd: "Unathi now get a unique pain message, instead of the dear god one."
\ No newline at end of file