From 772b5d804b3d996353e0f51c49f1350bbcc25fa1 Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Tue, 18 Jun 2024 21:55:50 +1200 Subject: [PATCH 1/2] razor, sticky and fire --- code/game/objects/structures/razorwire.dm | 2 ++ code/game/objects/structures/xeno.dm | 3 +++ .../projectiles/guns/_shared_ammo_objects.dm | 19 ++++++++++++------- 3 files changed, 17 insertions(+), 7 deletions(-) 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..40463cc67e2bc 100644 --- a/code/game/objects/structures/xeno.dm +++ b/code/game/objects/structures/xeno.dm @@ -100,6 +100,9 @@ if(crosser.throwing || crosser.buckled) return + if(HAS_TRAIT(crosser, TRAIT_TANK_DESANT)) + return + if(isvehicle(crosser)) var/obj/vehicle/vehicle = crosser vehicle.last_move_time += slow_amt diff --git a/code/modules/projectiles/guns/_shared_ammo_objects.dm b/code/modules/projectiles/guns/_shared_ammo_objects.dm index e8a860e59b6e0..4893f4bc6ea90 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) . = ..() @@ -207,6 +209,9 @@ 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 + if(HAS_TRAIT(crosser, TRAIT_TANK_DESANT)) + return + affect_mob(crosser) From b8a986e73d903d09f20b09aa8818c8e3cff6cf6e Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Thu, 20 Jun 2024 10:58:17 +1200 Subject: [PATCH 2/2] small clean up --- code/game/objects/structures/xeno.dm | 6 +++--- code/modules/projectiles/guns/_shared_ammo_objects.dm | 9 +++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/xeno.dm b/code/game/objects/structures/xeno.dm index 40463cc67e2bc..10d19f579bd0b 100644 --- a/code/game/objects/structures/xeno.dm +++ b/code/game/objects/structures/xeno.dm @@ -100,9 +100,6 @@ if(crosser.throwing || crosser.buckled) return - if(HAS_TRAIT(crosser, TRAIT_TANK_DESANT)) - return - if(isvehicle(crosser)) var/obj/vehicle/vehicle = crosser vehicle.last_move_time += slow_amt @@ -111,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 4893f4bc6ea90..d09ed24e225ab 100644 --- a/code/modules/projectiles/guns/_shared_ammo_objects.dm +++ b/code/modules/projectiles/guns/_shared_ammo_objects.dm @@ -201,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) @@ -212,6 +219,4 @@ /obj/fire/melting_fire/on_cross(datum/source, atom/movable/crosser, oldloc, oldlocs) if(!ishuman(crosser)) return - if(HAS_TRAIT(crosser, TRAIT_TANK_DESANT)) - return affect_mob(crosser)