diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index e722223bc6a..47020fbc330 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -98,6 +98,33 @@
user << "You need a working light!"
return
+ if(istype(W, /obj/item/weapon/storage))
+ var/obj/item/weapon/storage/S = W
+ var/found_good_light = 0
+ var/replaced_something = 0
+
+ for(var/obj/item/I in S.contents)
+ if(istype(I,/obj/item/weapon/light))
+ var/obj/item/weapon/light/L = I
+ if(L.status == LIGHT_OK)
+ found_good_light = 1
+ if(src.uses < max_uses)
+ qdel(L)
+ AddUses(1)
+ replaced_something = 1
+ else
+ break
+
+ if(!found_good_light)
+ user << "\The [S] contains no useable lights!"
+ return
+
+ if(!replaced_something && src.uses == max_uses)
+ user << "\The [src] is full!"
+ return
+
+ user << "You fill \the [src] with lights from \the [S]. You have [uses] lights remaining."
+
/obj/item/device/lightreplacer/emag_act()
if(!emagged)
Emag()