diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index dfc41f945c8..a02eb3f921d 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -42,3 +42,32 @@
icon_state = "[modifystate][ratio]"
else
icon_state = "[initial(icon_state)][ratio]"
+
+
+ attackby(obj/item/weapon/W, mob/user)
+ if(istype(W, /obj/item/weapon/cell))
+ if(!power_supply)
+ user.drop_item()
+ W.loc = src
+ power_supply = W
+ user << "You install a cell in [src]."
+ update_icon()
+ else
+ user << "[src] already has a cell."
+
+ else if(istype(W, /obj/item/weapon/screwdriver))
+ if(power_supply)
+ power_supply.updateicon()
+ power_supply.loc = get_turf(src.loc)
+ power_supply = null
+ user << "You remove the cell from the [src]."
+ update_icon()
+ return
+ ..()
+ return
+
+ examine()
+ set src in view(1)
+ ..()
+ if(!power_supply)
+ usr <<"The weapon does not have a power source installed."
\ No newline at end of file