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