From b85b41806fea204372e6de7a19be6d591ea71d0b Mon Sep 17 00:00:00 2001 From: Aroliacue <96730930+Aroliacue@users.noreply.github.com> Date: Fri, 13 Mar 2026 03:53:55 +1000 Subject: [PATCH] [READY TO MERGE] Xenomorph Hybrid Balance Update (#12238) Co-authored-by: Aroliacue --- .../human/species/station/station_ch.dm | 79 ++++++++++++------- .../station/traits/xenomorph_hybrid_trait.dm | 29 +++---- 2 files changed, 61 insertions(+), 47 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_ch.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_ch.dm index 1213dbd74e..b9af741cca 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_ch.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station_ch.dm @@ -59,21 +59,55 @@ deform = 'icons/mob/human_races/r_xenomorph_hybrid.dmi' tail = "tail" icobase_tail = 1 - unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong/xeno, /datum/unarmed_attack/bite/strong/xeno) // Innate claws and bite. - darksight = 8 // Same as Tajarans. ambiguous_genders = TRUE - slowdown = -0.2 // Slightly faster than average. - total_health = 150 // Takes a lot of effort to take a Xenomorph down. - brute_mod = 0.9 // Physical damage doesn't phase them as much. - burn_mod = 1.4 // They do NOT like fire. - toxins_mod = 0.9 // Slightly resistant to toxins. - radiation_mod = 0.9 // Somewhat resistant to radiation exposure. - flash_mod = 1.2 // Flashes are more effective. - metabolic_rate = 1.2 // Very physically active species, thus requiring more nutritional intake. - item_slowdown_mod = 0.9 // They carry heavy things slightly better. + unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong/xeno, /datum/unarmed_attack/bite/strong/xeno) // Innate claws and bite. + + total_health = 150 // Larger health pool. + burn_mod = 2 // Fire does not mix well with their silicon carapace. + toxins_mod = 0.5 // Resistant to toxins. + trauma_mod = 0.3 // Highly resistant to pain. + rad_removal_mod = 1.5 // Radiation leaves the body much faster. + chem_strength_heal = 0.1 // Acidic blood neutralizes most injected and ingested beneficial chemicals. + metabolic_rate = 1.3 // Very physically active species, thus requiring more nutritional intake. + chem_strength_alcohol = 1.2 // They don't handle their drinks very well. + throwforce_absorb_threshold = 10 // Thrown objects don't do as much. + darksight = 10 // Full view darksight. + soft_landing = TRUE // Nimble, flexible and tough enough to walk off falls from greater heights. + + cold_level_1 = 150 //Default 260 + cold_level_2 = 100 //Default 200 + cold_level_3 = 50 //Default 120 + + breath_cold_level_1 = 140 //Default 240 + breath_cold_level_2 = 90 //Default 180 + breath_cold_level_3 = 40 //Default 100 + + heat_level_1 = 380 //Default 360 + heat_level_2 = 420 //Default 400 + heat_level_3 = 1020 //Default 1000 + + breath_heat_level_1 = 390 //Default 380 + breath_heat_level_2 = 460 //Default 450 + breath_heat_level_3 = 1260 //Default 1250 + + heat_discomfort_level = 320 // 46 Celsius, not so comfortable in high temperatures. + heat_discomfort_strings = list( + "The heat bites through our chitin.", + "The warmth irritates our body.", + "The balmy air feels like an oven." + ) + + cold_discomfort_level = 200 // -73 Celsius, very comfortable in below freezing temperatures. + cold_discomfort_strings = list( + "The cold bites through our chitin.", + "Ice forms on our exoskeleton.", + "The freezing air induces a shiver." + ) + + hazard_low_pressure = HAZARD_LOW_PRESSURE*0 // Xenomorph Hybrids are immune to space, but still need to breathe. + warning_low_pressure = WARNING_LOW_PRESSURE*0 + mob_size = MOB_MEDIUM // Technically doesn't even need this but still adding the override just in case. - blood_volume = 640 // More blood to compound their high health. - bloodloss_rate = 1 // Bleed normally. num_alternate_languages = 3 name_language = LANGUAGE_XENOLINGUA species_language = LANGUAGE_XENOLINGUA @@ -81,8 +115,6 @@ assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX, LANGUAGE_PROMETHEAN) // Can use the Hivemind language. color_mult = 1 health_hud_intensity = 1.5 - chem_strength_alcohol = 1.2 // They don't handle their drinks very well. - throwforce_absorb_threshold = 10 // Thrown objects don't do as much. economic_modifier = 5 // While they aren't true Xenomorphs, they still draw a lot of social stigma, and are generally mistreated and underpaid as a result. rarity_value = 4 // Very rare to find these guys on human stations. @@ -138,17 +170,6 @@ O_EGG = /obj/item/organ/internal/xenos/eggsac // Fluff organ. ) - - heat_discomfort_level = 303.15 // 30 Celsius, not so comfortable in high temperatures. - heat_discomfort_strings = list( - "Our carapace bristles in the heat." - ) - - cold_discomfort_level = 253.15 // -20 Celsius, very comfortable in below freezing temperatures. - cold_discomfort_strings = list( - "The cold bites through our carapace." - ) - var/weeds_plasma_rate = 3 // Plasma regen. Much lower than actual xenos. Faster on weeds. var/weeds_heal_rate = 0.5 // Health regen on weeds. No healing unless resting. @@ -168,7 +189,7 @@ /datum/species/xenomorph_hybrid/proc/regenerate(var/mob/living/carbon/human/H) var/heal_rate = weeds_heal_rate - var/mend_prob = 5 // Much lower than regular xenos. + var/mend_prob = 10 // Much lower than regular xenos. Bumped from 5 to 10 as medical changes allowed all carbons to passively heal damage after a long delay. if (!H.resting) heal_rate = 0 // No passive health regen without resting. mend_prob = 0 // No passive health regen without resting. @@ -188,7 +209,7 @@ H.adjustOxyLoss(-heal_rate) H.adjustToxLoss(-heal_rate) if (prob(5)) - to_chat(H, span_alien("A soothing sensation falls over us...")) + to_chat(H, span_alien("A soothing sensation falls over our body...")) return 1 // Lastly, mend broken bones. May remove this if it's abused. @@ -196,7 +217,7 @@ if (E.status & ORGAN_BROKEN) if (prob(mend_prob)) if (E.mend_fracture()) - to_chat(H, span_alien("We feel something mend within our [E.name].")) + to_chat(H, span_alien("We feel something reshape and mend within our [E.name]...")) return 1 return 0 diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/traits/xenomorph_hybrid_trait.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/traits/xenomorph_hybrid_trait.dm index 0f21b28cee..ef1cce59e9 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/traits/xenomorph_hybrid_trait.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/traits/xenomorph_hybrid_trait.dm @@ -6,41 +6,39 @@ ** Therefore, use this file only for Xenomorph Hybrid traits that you want to keep custom + Xenomorph Hybrid only. */ -/datum/trait/negative/lonely/xenomorph_praetorian +/datum/trait/neutral/xenomorph_praetorian sort = TRAIT_SORT_SPECIES allowed_species = list(SPECIES_XENOMORPH_HYBRID) name = "Xenomorph Hybrid: Praetorian" desc = "Our body has shifted and matured to take the shape and stature of a Praetorian. Our \ - bulky size impedes our speed, but we feel significantly tougher. We find it difficult \ - to go about our day normally without being in the presence of another soul..." + bulky size impedes our speed, but we feel significantly tougher and stronger." cost = 0 category = 0 custom_only = FALSE - var_changes = list("item_slowdown_mod" = 0.80, "total_health" = 175, "brute_mod" = 0.8, "trauma_mod" = 0.9, "slowdown" = -0.1, "burn_mod" = 1.5) // Can carry heavy stuff better, more health, more brute resist, slightly less pain but moves slower, takes more burn damage and has the loneliness trait applied. + var_changes = list("item_slowdown_mod" = 0.5, "total_health" = 175, "brute_mod" = 0.8, "slowdown" = 0.1) // Can carry heavy stuff better, more health, more brute resist, but slight slowdown. /datum/trait/neutral/xenomorph_warrior sort = TRAIT_SORT_SPECIES allowed_species = list(SPECIES_XENOMORPH_HYBRID) name = "Xenomorph Hybrid: Warrior" desc = "Our body has shifted and matured to take the shape and stature of a Warrior. Compared \ - to a drone, we feel more resistant to knockdown effects, at the cost of our \ - carrying strength." + to a drone, we feel more resistant to stunning effects." cost = 0 category = 0 custom_only = FALSE - var_changes = list("stun_mod" = 0.8, "weaken_mod" = 0.8, "item_slowdown_mod" = 1) // Can't carry heavy stuff as well, but has 20% faster recovery for stun and weaken effects. + var_changes = list("stun_mod" = 0.8, "weaken_mod" = 0.8) // Has 20% faster recovery for stun and weaken effects. /datum/trait/neutral/xenomorph_hunter sort = TRAIT_SORT_SPECIES allowed_species = list(SPECIES_XENOMORPH_HYBRID) name = "Xenomorph Hybrid: Hunter" desc = "Our body has shifted and matured to take the shape and stature of a Hunter. Our \ - flexibility and speed is like no other, but our form has grown significantly more \ + flexibility and speed is like no other, but our form has grown more \ fragile as a result." cost = 0 category = 0 custom_only = FALSE - var_changes = list("slowdown" = -0.5, "item_slowdown_mod" = 0.5, "total_health" = 100, "brute_mod" = 1.1) // Much faster and carry-capable, but significantly less tanky. + var_changes = list("slowdown" = -0.5, "item_slowdown_mod" = 0.5, "total_health" = 125) // Much faster and carry-capable, but slightly less tanky. has_preferences = list("pass_table" = list(TRAIT_PREF_TYPE_BOOLEAN, "On spawn", TRAIT_NO_VAREDIT_TARGET, TRUE)) /datum/trait/neutral/xenomorph_hunter/apply(var/datum/species/S,var/mob/living/carbon/human/H, var/list/trait_prefs) @@ -49,18 +47,13 @@ H.pass_flags |= PASSTABLE add_verb(H,/mob/living/proc/toggle_pass_table) //CHOMPEdit TGPanel -/datum/trait/negative/lonely/xenomorph_queen +/datum/trait/neutral/xenomorph_queen sort = TRAIT_SORT_SPECIES allowed_species = list(SPECIES_XENOMORPH_HYBRID) name = "Xenomorph Hybrid: Queen" - desc = "Our body has evolved to take the shape and stature of a mighty Queen. Our \ - strength is unparalleled, as is our ability to command and inspire others, \ - but we require the company of other living beings." + desc = "Our body has shifted and matured to take the shape and stature of a mighty Queen. Our \ + strength is unparalleled." cost = 0 category = 0 custom_only = FALSE - var_changes = list("stun_mod" = 0.9, "weaken_mod" = 0.9, "item_slowdown_mod" = 0.7, "total_health" = 200, "brute_mod" = 0.8, "trauma_mod" = 0.9, "slowdown" = 0, "burn_mod" = 1.5) - -/datum/trait/negative/lonely/xenomorph_queen/apply(var/datum/species/S,var/mob/living/carbon/human/H) - ..() - H.LoadComponent(/datum/component/xenoqueenbuff) + var_changes = list("total_health" = 200) // Bigger health pool