diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index a08e570dd7..8da79dc286 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -173,18 +173,60 @@
force = 15
ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv)
+//Sci guns
+
+/obj/item/gun/energy/gravity_gun
+ name = "one-point gravitational manipulator"
+ desc = "An experimental, multi-mode device that fires bolts of Zero-Point Energy, causing local distortions in gravity. Requires a gravitational anomaly core to function."
+ ammo_type = list(/obj/item/ammo_casing/energy/gravity/repulse, /obj/item/ammo_casing/energy/gravity/attract, /obj/item/ammo_casing/energy/gravity/chaos)
+ item_state = "gravity_gun"
+ icon_state = "gravity_gun"
+ var/power = 4
+ var/firing_core = FALSE
+
+/obj/item/gun/energy/gravity_gun/attackby(obj/item/C, mob/user)
+ if(istype(C, /obj/item/assembly/signaler/anomaly))
+ to_chat(user, "You insert [C] into the gravitational manipulator and the weapon gently hums to life.")
+ firing_core = TRUE
+ playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
+ qdel(C)
+ return
+ return ..()
+
+/obj/item/gun/energy/gravity_gun/can_shoot()
+ if(!firing_core)
+ return FALSE
+ return ..()
+
/obj/item/gun/energy/wormhole_projector
name = "bluespace wormhole projector"
- desc = "A projector that emits high density quantum-coupled bluespace beams."
+ desc = "A projector that emits high density quantum-coupled bluespace beams. Requires a bluespace anomaly core to function."
ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange)
item_state = null
icon_state = "wormhole_projector"
- pin = null
inaccuracy_modifier = 0.25
automatic_charge_overlays = FALSE
var/obj/effect/portal/p_blue
var/obj/effect/portal/p_orange
var/atmos_link = FALSE
+ var/firing_core = FALSE
+
+/obj/item/gun/energy/wormhole_projector/attackby(obj/item/C, mob/user)
+ if(istype(C, /obj/item/assembly/signaler/anomaly))
+ to_chat(user, "You insert [C] into the wormhole projector and the weapon gently hums to life.")
+ firing_core = TRUE
+ playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
+ qdel(C)
+ return
+
+/obj/item/gun/energy/wormhole_projector/can_shoot()
+ if(!firing_core)
+ return FALSE
+ return ..()
+
+/obj/item/gun/energy/wormhole_projector/shoot_with_empty_chamber(mob/living/user)
+ . = ..()
+ to_chat(user, "The display says, 'NO CORE INSTALLED'.")
/obj/item/gun/energy/wormhole_projector/update_icon_state()
icon_state = "[initial(icon_state)][current_firemode_index]"
@@ -243,6 +285,9 @@
p_blue = P
crosslink()
+/obj/item/gun/energy/wormhole_projector/core_inserted
+ firing_core = TRUE
+
/* 3d printer 'pseudo guns' for borgs */
/obj/item/gun/energy/printer
@@ -298,18 +343,6 @@
/obj/item/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib
return
-/obj/item/gun/energy/gravity_gun
- name = "one-point bluespace-gravitational manipulator"
- desc = "An experimental, multi-mode device that fires bolts of Zero-Point Energy, causing local distortions in gravity."
- ammo_type = list(/obj/item/ammo_casing/energy/gravity/repulse, /obj/item/ammo_casing/energy/gravity/attract, /obj/item/ammo_casing/energy/gravity/chaos)
- item_state = "gravity_gun"
- icon_state = "gravity_gun"
- pin = null
- var/power = 4
-
-/obj/item/gun/energy/gravity_gun/security
- pin = /obj/item/firing_pin
-
//Emitter Gun
/obj/item/gun/energy/emitter