diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 28f38266c8b..8c7aaebe8e1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -435,6 +435,10 @@ emp_act var/dtype = O.damtype var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) + if(species && species.throwforce_absorb_threshold >= throw_damage) + visible_message("\The [O] simply bounces off of [src]'s body!") + return + var/zone if (istype(O.thrower, /mob/living)) var/mob/living/L = O.thrower diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 49d459a00a4..47089619ef1 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -99,6 +99,7 @@ var/flash_mod = 1 // Stun from blindness modifier (flashes and flashbangs) var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive var/sound_mod = 1 // Multiplier to the effective *range* of flashbangs. a flashbang's bang hits an entire screen radius, with some falloff. + var/throwforce_absorb_threshold = 0 // Ignore damage of thrown items below this value var/chem_strength_heal = 1 // Multiplier to most beneficial chem strength var/chem_strength_pain = 1 // Multiplier to painkiller strength (could be used in a negative trait to simulate long-term addiction reducing effects, etc.) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 342ff54b80e..36e0ad9c174 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -58,6 +58,7 @@ var/datum/species/shapeshifter/promethean/prometheans oxy_mod = 0 flash_mod = 0.5 //No centralized, lensed eyes. item_slowdown_mod = 1.33 + throwforce_absorb_threshold = 10 chem_strength_alcohol = 2 diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index c7d5a9caea7..3faf631adf4 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -72,6 +72,7 @@ species_language = LANGUAGE_UNATHI health_hud_intensity = 2.5 chem_strength_alcohol = 0.75 + throwforce_absorb_threshold = 10 min_age = 32 max_age = 260 @@ -403,6 +404,7 @@ name_language = LANGUAGE_ZADDAT species_language = LANGUAGE_ZADDAT health_hud_intensity = 2.5 + throwforce_absorb_threshold = 5 minimum_breath_pressure = 20 //have fun with underpressures. any higher than this and they'll be even less suitible for life on the station @@ -518,6 +520,7 @@ health_hud_intensity = 2.5 item_slowdown_mod = 0.1 chem_strength_alcohol = 0 + throwforce_absorb_threshold = 5 num_alternate_languages = 3 name_language = LANGUAGE_ROOTLOCAL diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index f3db17672f3..15a5fcabea6 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -331,6 +331,7 @@ slowdown = -0.15 //Small speedboost, as they've got a bunch of legs. Or something. I dunno. brute_mod = 0.8 //20% brute damage reduction burn_mod = 1.15 //15% burn damage increase. They're spiders. Aerosol can+lighter = dead spiders. + throwforce_absorb_threshold = 10 num_alternate_languages = 3 species_language = LANGUAGE_VESPINAE diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 5604da12ef0..2a350374bce 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -212,3 +212,9 @@ excludes = list(/datum/trait/negative/neural_hypersensitivity) can_take = ORGANICS +/datum/trait/positive/throw_resistance + name = "Firm Body" + desc = "Your body is firm enough that small thrown items can't do anything to you." + cost = 1 + var_changes = list("throwforce_absorb_threshold" = 10) +