From 57f85c4af5ed8bb035e0387febd20945b83a908d Mon Sep 17 00:00:00 2001 From: Will <7099514+Willburd@users.noreply.github.com> Date: Thu, 18 Dec 2025 09:37:01 -0500 Subject: [PATCH] prevent shadekin conflagration in phase (#18915) * prevent shadekin conflagration * don't do this either --- code/datums/status_effects/debuffs/fire_stacks.dm | 3 +++ code/modules/mob/living/carbon/carbon.dm | 2 ++ code/modules/mob/living/living_fire.dm | 6 ++++++ code/modules/mob/living/silicon/robot/life.dm | 2 ++ 4 files changed, 13 insertions(+) diff --git a/code/datums/status_effects/debuffs/fire_stacks.dm b/code/datums/status_effects/debuffs/fire_stacks.dm index b721b872cff..ce300289d39 100644 --- a/code/datums/status_effects/debuffs/fire_stacks.dm +++ b/code/datums/status_effects/debuffs/fire_stacks.dm @@ -221,6 +221,9 @@ /datum/status_effect/fire_handler/fire_stacks/proc/deal_damage(seconds_per_tick) owner.on_fire_stack(seconds_per_tick, src) + if(owner.is_incorporeal()) // Shadekin don't spread fire in phase, but still take damage + return + var/turf/location = get_turf(owner) location.hotspot_expose(700, 25 * seconds_per_tick, TRUE) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 9e4297c9994..646aa8661fe 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -326,6 +326,8 @@ // ++++ROCKDTBEN++++ MOB PROCS //END /mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(is_incorporeal()) + return ..() var/temp_inc = max(min(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), exposed_temperature - bodytemperature), 0) bodytemperature += temp_inc diff --git a/code/modules/mob/living/living_fire.dm b/code/modules/mob/living/living_fire.dm index b8cf958297e..77defe6ec67 100644 --- a/code/modules/mob/living/living_fire.dm +++ b/code/modules/mob/living/living_fire.dm @@ -2,6 +2,8 @@ //altered this to cap at the temperature of the fire causing it, using the same 1:1500 value as /mob/living/carbon/human/handle_fire() in human/life.dm /mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(is_incorporeal()) + return if(exposed_temperature) if(fire_stacks < exposed_temperature/1500) // Subject to balance adjust_fire_stacks(2) @@ -108,6 +110,10 @@ GLOBAL_LIST_EMPTY(fire_appearances) if(!istype(spread_to)) return + // Shadekin checkkkkk~~~ + if(is_incorporeal() || spread_to.is_incorporeal()) + return + // can't spread fire to mobs that don't catch on fire if(HAS_TRAIT(spread_to, TRAIT_NOFIRE_SPREAD) || HAS_TRAIT(src, TRAIT_NOFIRE_SPREAD)) return diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index fbab7061943..d86afcb44ef 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -370,6 +370,8 @@ return canmove /mob/living/silicon/robot/fire_act() + if(is_incorporeal()) + return if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them ignite_mob()