diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index d1fc9ee4a80..93904387cd1 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -141,6 +141,24 @@
user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].")
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
+ else if(istype(A, /obj/item/weapon/storage))
+ var/obj/item/weapon/storage/storage = A
+ if(!(load_method & SINGLE_CASING))
+ return //incompatible
+
+ user << "You start loading \the [src]."
+ sleep(1 SECOND)
+ for(var/obj/item/ammo_casing/ammo in storage.contents)
+ if(caliber != ammo.caliber)
+ continue
+
+ load_ammo(ammo, user)
+
+ if(loaded.len >= max_shells)
+ user << "[src] is full."
+ break
+ sleep(1 SECOND)
+
update_icon()
//attempts to unload src. If allow_dump is set to 0, the speedloader unloading method will be disabled