diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index d4972d13802..ad9524414da 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -127,14 +127,15 @@
#define SAFE 16
//flags for pass_flags
-#define PASSTABLE 1
-#define PASSGLASS 2
-#define PASSGRILLE 4
-#define PASSBLOB 8
-#define PASSMOB 16
-#define LETPASSTHROW 32
-#define PASSFENCE 64
-#define PASSDOOR 128
+#define PASSTABLE (1<<0)
+#define PASSGLASS (1<<1)
+#define PASSGRILLE (1<<2)
+#define PASSBLOB (1<<3)
+#define PASSMOB (1<<4)
+#define LETPASSTHROW (1<<5)
+#define PASSFENCE (1<<6)
+#define PASSDOOR (1<<7)
+#define PASSGIRDER (1<<8)
//turf-only flags
#define NOJAUNT 1
diff --git a/code/datums/uplink_items/uplink_nuclear.dm b/code/datums/uplink_items/uplink_nuclear.dm
index 325fb7aee9c..cbd61cfe8ac 100644
--- a/code/datums/uplink_items/uplink_nuclear.dm
+++ b/code/datums/uplink_items/uplink_nuclear.dm
@@ -294,7 +294,7 @@
/datum/uplink_item/ammo/sniper/antimatter
name = "Sniper - .50 Antimatter Magazine"
desc = "A 6-round magazine of antimatter ammo for use with .50 sniper rifles. \
- Able to heavily damage objects, and delimb people."
+ Able to heavily damage objects, and delimb people. Requires zooming in for accurate aiming."
reference = "50A"
item = /obj/item/ammo_box/magazine/sniper_rounds/antimatter
cost = 30
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 716b5984bb7..faad01cd7b4 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -399,8 +399,10 @@
qdel(src)
/obj/structure/girder/CanPass(atom/movable/mover, turf/target, height=0)
- if(height==0)
- return 1
+ if(!height)
+ return TRUE
+ if(istype(mover) && mover.checkpass(PASSGIRDER))
+ return TRUE
if(istype(mover) && mover.checkpass(PASSGRILLE))
return prob(girderpasschance)
else
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index ec1c3331d01..efb4ca3d8c0 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -20,6 +20,14 @@
slot_flags = SLOT_BACK
actions_types = list()
+/obj/item/gun/projectile/automatic/sniper_rifle/process_fire(atom/target, mob/living/user, message = TRUE, params, zone_override, bonus_spread = 0)
+ if(istype(chambered.BB, /obj/item/projectile/bullet/sniper) && !zoomed)
+ var/obj/item/projectile/bullet/sniper/S = chambered.BB
+ if(S.non_zoom_spread)
+ to_chat(user, "[src] must be zoomed in to fire this ammunition accurately!")
+ bonus_spread += S.non_zoom_spread
+ return ..()
+
/obj/item/gun/projectile/automatic/sniper_rifle/syndicate
name = "syndicate sniper rifle"
desc = "Syndicate flavoured sniper rifle, it packs quite a punch, a punch to your face."
@@ -59,10 +67,13 @@
weaken = 10 SECONDS
armour_penetration_flat = 70
forced_accuracy = TRUE
+ pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE | PASSGIRDER
+ speed = 0.5
+ var/non_zoom_spread = 0
/obj/item/ammo_box/magazine/sniper_rounds/antimatter
name = "sniper rounds (Antimatter)"
- desc = "Antimatter sniper rounds, for when you really don't like something."
+ desc = "Antimatter sniper rounds, for when you really don't like something. Requires zooming in to fire accurately."
icon_state = "antimatter"
ammo_type = /obj/item/ammo_casing/antimatter
@@ -75,6 +86,7 @@
/obj/item/projectile/bullet/sniper/antimatter
name = "antimatter bullet"
dismemberment = 50
+ non_zoom_spread = 60
/obj/item/projectile/bullet/sniper/antimatter/on_hit(atom/target, blocked = 0, hit_zone)
if((blocked != 100) && (!ismob(target)))
@@ -110,8 +122,6 @@
return ..()
-
-
//hemorrhage ammo
/obj/item/ammo_box/magazine/sniper_rounds/haemorrhage
name = "sniper rounds (Bleed)"
@@ -159,6 +169,8 @@
damage = 60
forcedodge = -1
weaken = 0
+ speed = 0.75
+ pass_flags = PASSTABLE //damage glass
//toy magazine
/obj/item/ammo_box/magazine/toy/sniper_rounds
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index 4a5e028e7ba..f865d6faf41 100644
--- a/code/modules/surgery/organs/organ_external.dm
+++ b/code/modules/surgery/organs/organ_external.dm
@@ -552,6 +552,7 @@ Note that amputating the affected organ does in fact remove the infection from t
"\The [owner]'s [name] explodes[gore]!",\
"Your [name] explodes[gore]!",\
"You hear the [gore_sound].")
+ disembowel(limb_name)
var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed().
// Let people make limbs become fun things when removed