Every so slightly buffs airlock crushing (#92403)

## About The Pull Request

+5 damage to airlock crushing
Now uses apply damage (which means it can wound and is affected by
physiology)
Has a wound bonus so it has the potential to cause wounds. In testing it
seems super uncommon unless you're frail though.

## Why It's Good For The Game

15 damage for being smashed in a door? Insane

## Changelog

🆑 Melbert
balance: Airlock crushing now does 20 damage, up from 15. Also may
uncommonly cause wounds. Also is properly affected by damage reduction
or modifiers.
/🆑
This commit is contained in:
MrMelbert
2025-08-06 22:03:37 -04:00
committed by GitHub
parent 5fd948e4d7
commit f84df6300b
5 changed files with 21 additions and 23 deletions
@@ -27,6 +27,8 @@
#define COMSIG_LIVING_ENTER_STAMCRIT "living_enter_stamcrit"
///from /obj/structure/door/crush(): (mob/living/crushed, /obj/machinery/door/crushing_door)
#define COMSIG_LIVING_DOORCRUSHED "living_doorcrush"
/// Stop the door from causing wounds (damage still applies though)
#define DOORCRUSH_NO_WOUND (1<<0)
///from base of mob/living/resist() (/mob/living)
#define COMSIG_LIVING_RESIST "living_resist"
///from base of mob/living/ignite_mob() (/mob/living)
+1 -1
View File
@@ -465,7 +465,7 @@
#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be
#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up
#define POCKET_STRIP_DELAY (4 SECONDS) //time taken to search somebody's pockets
#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you
#define DOOR_CRUSH_DAMAGE 20 //the amount of damage that airlocks deal when they crush you
#define HUNGER_FACTOR 0.05 //factor at which mob nutrition decreases
#define ETHEREAL_DISCHARGE_RATE (1e-3 * STANDARD_ETHEREAL_CHARGE) // Rate at which ethereal stomach charge decreases
+2
View File
@@ -279,6 +279,8 @@
if(prob(40))
victim.visible_message(span_danger("[victim]'s dislocated [limb.plaintext_zone] pops back into place!"), span_userdanger("Your dislocated [limb.plaintext_zone] pops back into place! Ow!"))
remove_wound()
return DOORCRUSH_NO_WOUND
return NONE
/datum/wound/blunt/bone/moderate/try_handling(mob/living/user)
if(user.usable_hands <= 0 || user.pulling != victim)
+10 -11
View File
@@ -584,24 +584,23 @@
for(var/turf/checked_turf in locs)
for(var/mob/living/future_pancake in checked_turf)
future_pancake.visible_message(span_warning("[src] closes on [future_pancake], crushing [future_pancake.p_them()]!"), span_userdanger("[src] closes on you and crushes you!"))
SEND_SIGNAL(future_pancake, COMSIG_LIVING_DOORCRUSHED, src)
var/sig_return = SEND_SIGNAL(future_pancake, COMSIG_LIVING_DOORCRUSHED, src)
future_pancake.add_splatter_floor(loc)
log_combat(src, future_pancake, "crushed")
var/door_wounding = (sig_return & DOORCRUSH_NO_WOUND) ? CANT_WOUND : 10
if(isalien(future_pancake)) //For xenos
future_pancake.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 1.5) //Xenos go into crit after aproximately the same amount of crushes as humans.
future_pancake.apply_damage(DOOR_CRUSH_DAMAGE * 1.5, BRUTE, BODY_ZONE_CHEST, wound_bonus = door_wounding, attacking_item = src) //Xenos go into crit after aproximately the same amount of crushes as humans.
future_pancake.emote("roar")
else if(ismonkey(future_pancake)) //For monkeys
future_pancake.emote("screech")
future_pancake.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
future_pancake.Paralyze(100)
future_pancake.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE, BODY_ZONE_CHEST, wound_bonus = door_wounding, attacking_item = src)
future_pancake.Paralyze(10 SECONDS)
else if(ishuman(future_pancake)) //For humans
future_pancake.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
future_pancake.emote("scream")
future_pancake.Paralyze(100)
future_pancake.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE, BODY_ZONE_CHEST, wound_bonus = door_wounding, attacking_item = src)
future_pancake.Paralyze(10 SECONDS)
else //for simple_animals & borgs
future_pancake.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
var/turf/location = get_turf(src)
//add_blood doesn't work for borgs/xenos, but add_blood_floor does.
future_pancake.add_splatter_floor(location)
log_combat(src, future_pancake, "crushed")
future_pancake.apply_damage(DOOR_CRUSH_DAMAGE, BRUTE, BODY_ZONE_CHEST, wound_bonus = door_wounding, attacking_item = src)
for(var/obj/vehicle/sealed/mecha/mech in get_turf(src)) // Your fancy metal won't save you here!
mech.take_damage(DOOR_CRUSH_DAMAGE)
log_combat(src, mech, "crushed")
+6 -11
View File
@@ -159,19 +159,14 @@
for(var/turf/checked_turf in locs)
for(var/mob/living/future_pancake in checked_turf)
future_pancake.visible_message(span_warning("[src] beeps angrily and closes on [future_pancake]!"), span_userdanger("[src] beeps angrily and closes on you!"))
SEND_SIGNAL(future_pancake, COMSIG_LIVING_DOORCRUSHED, src)
var/sig_return = SEND_SIGNAL(future_pancake, COMSIG_LIVING_DOORCRUSHED, src)
future_pancake.add_splatter_floor(loc)
log_combat(src, future_pancake, "crushed")
var/door_wounding = (sig_return & DOORCRUSH_NO_WOUND) ? CANT_WOUND : 10
future_pancake.apply_damage(DOOR_CRUSH_DAMAGE * 2, BRUTE, BODY_ZONE_CHEST, wound_bonus = door_wounding, attacking_item = src)
future_pancake.Paralyze(2 SECONDS)
if(ishuman(future_pancake))
future_pancake.emote("scream")
future_pancake.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 2)
future_pancake.Paralyze(2 SECONDS)
else //for simple_animals & borgs
future_pancake.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 2)
var/turf/location = get_turf(src)
//add_blood doesn't work for borgs/xenos, but add_blood_floor does.
future_pancake.add_splatter_floor(location)
log_combat(src, future_pancake, "crushed")
for(var/obj/vehicle/sealed/mecha/mech in checked_turf) // Your fancy metal won't save you here!
mech.take_damage(DOOR_CRUSH_DAMAGE)