diff --git a/code/game/objects/structures/razorwire.dm b/code/game/objects/structures/razorwire.dm index 597fd08fe7f38..1ca747e7e9c21 100644 --- a/code/game/objects/structures/razorwire.dm +++ b/code/game/objects/structures/razorwire.dm @@ -51,6 +51,8 @@ return if(CHECK_BITFIELD(O.pass_flags, PASS_DEFENSIVE_STRUCTURE)) return + if(HAS_TRAIT(O, TRAIT_TANK_DESANT)) + return var/mob/living/M = O if(M.status_flags & INCORPOREAL) return diff --git a/code/game/objects/structures/xeno.dm b/code/game/objects/structures/xeno.dm index 82dd52a408148..10d19f579bd0b 100644 --- a/code/game/objects/structures/xeno.dm +++ b/code/game/objects/structures/xeno.dm @@ -108,6 +108,9 @@ if(!ishuman(crosser)) return + if(HAS_TRAIT(crosser, TRAIT_TANK_DESANT)) + return + if(CHECK_MULTIPLE_BITFIELDS(crosser.allow_pass_flags, HOVERING)) return diff --git a/code/modules/projectiles/guns/_shared_ammo_objects.dm b/code/modules/projectiles/guns/_shared_ammo_objects.dm index e8a860e59b6e0..d09ed24e225ab 100644 --- a/code/modules/projectiles/guns/_shared_ammo_objects.dm +++ b/code/modules/projectiles/guns/_shared_ammo_objects.dm @@ -156,10 +156,12 @@ burn_ticks = 12 ///Effects applied to a mob that crosses a burning turf -/obj/fire/flamer/on_cross(datum/source, mob/living/crosser, oldloc, oldlocs) - . = ..() - if(istype(crosser) || isobj(crosser)) - crosser.fire_act(burn_level) +/obj/fire/flamer/on_cross(datum/source, atom/movable/crosser, oldloc, oldlocs) + if(!isliving(crosser) || isobj(crosser)) + return + if(HAS_TRAIT(crosser, TRAIT_TANK_DESANT)) + return + crosser.fire_act(burn_level) /obj/fire/flamer/affect_mob(mob/living/carbon/affected) . = ..() @@ -199,6 +201,13 @@ return if(target.stat == DEAD) return + if(status_flags & (INCORPOREAL|GODMODE)) + return FALSE + if(hard_armor.getRating(FIRE) >= 100) + to_chat(src, span_warning("You are untouched by the flames.")) + return FALSE + if(pass_flags & PASS_FIRE) + return FALSE var/damage = PYROGEN_MELTING_FIRE_DAMAGE var/datum/status_effect/stacking/melting_fire/debuff = target.has_status_effect(STATUS_EFFECT_MELTING_FIRE) if(debuff) @@ -207,6 +216,7 @@ target.apply_status_effect(STATUS_EFFECT_MELTING_FIRE, PYROGEN_MELTING_FIRE_EFFECT_STACK) target.take_overall_damage(damage, BURN, FIRE, max_limbs = 2) -/obj/fire/melting_fire/on_cross(datum/source, mob/living/carbon/human/crosser, oldloc, oldlocs) - if(istype(crosser)) - affect_mob(crosser) +/obj/fire/melting_fire/on_cross(datum/source, atom/movable/crosser, oldloc, oldlocs) + if(!ishuman(crosser)) + return + affect_mob(crosser)