diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index abcc8e7521b..02c5381b50d 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -193,19 +193,23 @@
weaken = 3
var/chain
-/obj/item/ammo_casing/magic/hook/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
+/obj/item/projectile/hook/fire(setAngle)
+ if(firer)
+ chain = Beam(firer, icon_state = "chain", icon = 'icons/obj/lavaland/artefacts.dmi', time = INFINITY, maxdistance = INFINITY)
..()
- var/obj/item/projectile/hook/P = BB
- spawn(1)
- P.chain = P.Beam(user,icon_state="chain",icon = 'icons/obj/lavaland/artefacts.dmi',time=1000, maxdistance = 30)
/obj/item/projectile/hook/on_hit(atom/target)
. = ..()
if(isliving(target))
var/mob/living/L = target
- L.visible_message("[L] is snagged by [firer]'s hook!")
- L.forceMove(get_turf(firer))
- qdel(chain)
+ if(!L.anchored)
+ L.visible_message("[L] is snagged by [firer]'s hook!")
+ L.forceMove(get_turf(firer))
+
+/obj/item/projectile/hook/Destroy()
+ qdel(chain)
+ return ..()
+
//Immortality Talisman
/obj/item/device/immortality_talisman
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index ce5682ecb73..6c41ca751d7 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -177,14 +177,15 @@
icon_state = "purple_laser"
var/chain
-/obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
+/obj/item/projectile/energy/shock_revolver/fire(setAngle)
+ if(firer)
+ chain = Beam(firer, icon_state = "lightning[rand(1, 12)]", icon = 'icons/effects/effects.dmi', time = INFINITY, maxdistance = INFINITY)
..()
- var/obj/item/projectile/hook/P = BB
- spawn(1)
- P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30)
/obj/item/projectile/energy/shock_revolver/on_hit(atom/target)
. = ..()
if(isliving(target))
tesla_zap(src, 3, 10000)
+
+/obj/item/projectile/energy/shock_revolver/Destroy()
qdel(chain)
diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi
index 9123949dc7c..7c5458e1d84 100644
Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ