diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index d3f81185ab..fa17c0e67b 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -117,7 +117,7 @@ loaded.Cut() if(count) user.visible_message("[user] unloads [src].", "You unload [count] round\s from [src]!") - else + else if(load_method & SINGLE_CASING) var/obj/item/ammo_casing/C = loaded[loaded.len] loaded.len-- user.put_in_hands(C) @@ -135,6 +135,16 @@ return ..() unload_ammo(user) +/obj/item/weapon/gun/projectile/attack_hand(mob/user as mob) + //allow guns with both SPEEDLOADER and SINGLE_CASING a way to remove casings without dumping everything on the floor + if((load_method & SINGLE_CASING) && loaded.len && (src in user)) + var/obj/item/ammo_casing/C = loaded[loaded.len] + loaded.len-- + user.put_in_hands(C) + user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src]!") + else + return ..() + /obj/item/weapon/gun/projectile/afterattack(atom/A, mob/living/user) ..() if(auto_eject && !ammo_magazine.stored_ammo.len) @@ -145,7 +155,7 @@ if(ammo_magazine) ammo_magazine.loc = get_turf(src.loc) user.visible_message( - "[ammo_magazine] falls out and clatters on the floor!", + "[ammo_magazine] falls out and clatters on the floor!", "[ammo_magazine] falls out and clatters on the floor!" ) ammo_magazine = null @@ -166,6 +176,6 @@ var/bullets = 0 if(loaded) bullets += loaded.len - if(ammo_magazine.stored_ammo) + if(ammo_magazine && ammo_magazine.stored_ammo) bullets += ammo_magazine.stored_ammo.len return bullets