diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
index 514e68a6b25..186e8275223 100644
--- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm
@@ -59,7 +59,7 @@
..()
/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user)
- if(src in user)
+ if(loc == user)
if(grenades.len)
var/obj/item/weapon/grenade/G = grenades[grenades.len]
grenades.len--
diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm
index 59110be1951..b8e1559445f 100644
--- a/code/modules/projectiles/guns/launcher/syringe_gun.dm
+++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm
@@ -100,7 +100,7 @@
next = darts[1]
/obj/item/weapon/gun/launcher/syringe/attack_hand(mob/living/user as mob)
- if(src in user)
+ if(loc == user)
if(!darts.len)
user << "[src] is empty."
return
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 128eddccde2..e8255027325 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -155,7 +155,7 @@
unload_ammo(user)
/obj/item/weapon/gun/projectile/attack_hand(mob/user as mob)
- if(src in user)
+ if(loc == user)
unload_ammo(user, allow_dump=0)
else
return ..()
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 506ffcfff38..eb5cb3c1055 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -74,21 +74,19 @@
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon()
icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(loaded.len, 25) : "-empty"]"
-/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays
+/obj/item/weapon/gun/projectile/automatic/l6_saw/special_check(mob/user)
if(cover_open)
- user << "[src]'s cover is open! Close it before firing!"
- else
- ..()
- update_icon()
+ user << "[src]'s cover is open! Close it before firing!"
+ return 0
+ return ..()
-/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user as mob)
- if(loc != user)
- ..() //let them pick it up
- else if(cover_open)
- unload_ammo(user)
-
-/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob)
- if(istype(A,/obj/item/ammo_magazine) && !cover_open)
- user << "[src]'s cover is closed! You can't insert a new mag!"
+/obj/item/weapon/gun/projectile/automatic/l6_saw/load_ammo(var/obj/item/A, mob/user)
+ if(!cover_open)
+ user << "You need to open the cover to load [src]."
return
- ..()
+ ..()
+
+/obj/item/weapon/gun/projectile/automatic/l6_saw/unload_ammo(mob/user)
+ if(!cover_open)
+ return
+ ..()
\ No newline at end of file