From 0c4dcd1b622723bbea7c177829d7d37b00937f0c Mon Sep 17 00:00:00 2001 From: S34NW <12197162+S34NW@users.noreply.github.com> Date: Fri, 10 Sep 2021 19:07:02 +0100 Subject: [PATCH] projectiles can pass --- code/__DEFINES/flags.dm | 1 + code/game/objects/structures/fence.dm | 9 +++++++-- code/game/objects/structures/railings.dm | 6 +++++- code/modules/assembly/infrared.dm | 2 +- code/modules/projectiles/guns/alien.dm | 2 +- code/modules/projectiles/guns/medbeam.dm | 2 +- code/modules/projectiles/projectile/beams.dm | 2 +- code/modules/projectiles/projectile/bullets.dm | 1 + code/modules/projectiles/projectile/energy.dm | 1 + code/modules/projectiles/projectile/magic.dm | 1 + code/modules/projectiles/projectile/special.dm | 2 +- 11 files changed, 21 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index a68646224cf..7e0941d3e65 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -103,6 +103,7 @@ #define PASSBLOB 8 #define PASSMOB 16 #define LETPASSTHROW 32 +#define PASSFENCE 64 //turf-only flags #define NOJAUNT 1 diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index c3a0080a69b..4a48d192d34 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -26,12 +26,10 @@ /obj/structure/fence/Initialize() . = ..() - update_cut_status() /obj/structure/fence/examine(mob/user) . = ..() - switch(hole_size) if(MEDIUM_HOLE) . += "There is a large hole in \the [src]." @@ -58,6 +56,13 @@ icon_state = "straight_cut3" hole_size = LARGE_HOLE +/obj/structure/fence/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSFENCE)) + return TRUE + if(!density) + return TRUE + return FALSE + // shock user with probability prb (if all connections & power are working) // returns 1 if shocked, 0 otherwise // Totally not stolen from code\game\objects\structures\grille.dm diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index cce6b863a38..09859f89e9e 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -5,6 +5,7 @@ icon_state = "railing" density = TRUE anchored = TRUE + pass_flags = LETPASSTHROW climbable = TRUE layer = ABOVE_MOB_LAYER var/currently_climbed = FALSE @@ -64,6 +65,8 @@ return TRUE /obj/structure/railing/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSFENCE)) + return TRUE ..() var/mob/living/M = mover if(M.flying || M.floating || mover.throwing) @@ -73,10 +76,11 @@ return TRUE /obj/structure/railing/corner/CanPass() - ..() return TRUE /obj/structure/railing/CheckExit(atom/movable/O, target) + if(istype(O) && O.checkpass(PASSFENCE)) + return TRUE var/mob/living/M = O if(M.flying | M.floating) return TRUE diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index d1efa862a63..cd83952fcae 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -215,7 +215,7 @@ var/life_cycles = 0 var/life_cap = 20 anchored = TRUE - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSFENCE /obj/effect/beam/i_beam/proc/hit() diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index 135923c6ef6..3c43aea531f 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -70,7 +70,7 @@ damage = 60 damage_type = BRUTE flag = "bullet" - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSFENCE weaken = 5 stun = 5 diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index 452023946ae..459c6681aa2 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -81,7 +81,7 @@ if(!istype(user_turf)) return 0 var/obj/dummy = new(user_turf) - dummy.pass_flags |= PASSTABLE & PASSGLASS & PASSGRILLE //Grille/Glass so it can be used through common windows + dummy.pass_flags |= PASSTABLE & PASSGLASS & PASSGRILLE & PASSFENCE //Grille/Glass so it can be used through common windows for(var/turf/turf in getline(user_turf,target)) if(turf.density) qdel(dummy) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index b8e1348fb43..6101bbbad55 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -1,7 +1,7 @@ /obj/item/projectile/beam name = "laser" icon_state = "laser" - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSFENCE damage = 20 damage_type = BURN hitsound = 'sound/weapons/sear.ogg' diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 027de5c9f54..4a0aa63e8c1 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -6,6 +6,7 @@ flag = "bullet" hitsound_wall = "ricochet" impact_effect_type = /obj/effect/temp_visual/impact_effect + pass_flags = PASSFENCE /obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage name = "beanbag slug" diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index dc6f3fdf2da..1969e8d7b3c 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -5,6 +5,7 @@ damage_type = BURN flag = "energy" is_reflectable = TRUE + pass_flags = PASSFENCE /obj/item/projectile/energy/electrode name = "electrode" diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 512f9188606..b55383ab927 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -6,6 +6,7 @@ nodamage = 1 armour_penetration = 100 flag = "magic" + pass_flags = PASSFENCE /obj/item/projectile/magic/death name = "bolt of death" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 490878ea74d..8635360afdb 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -53,7 +53,7 @@ nodamage = 1 flag = "energy" var/temperature = 300 - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSFENCE /obj/item/projectile/temp/New(loc, shot_temp) ..()