diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 3518a90d122..45c4331bcb3 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -409,6 +409,11 @@ so as to remain in compliance with the most up-to-date laws."
impossible for you to get back into the game as your regular character.",, "No", "Yes") == "Yes")
stone.opt_in = TRUE
+/obj/screen/alert/notify_soulstone/Destroy()
+ stoner = null
+ stone = null
+ return ..()
+
//OBJECT-BASED
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 90270c1d64a..46709193ec2 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -77,20 +77,26 @@
if(!M.ckey)
to_chat(user, "They have no soul!")
return
+
+ to_chat(user, "You attempt to channel [M]'s soul into [src]. You must give the soul some time to react and stand still...")
+
var/mob/player_mob = M
if(M.get_ghost())//in case our player ghosted and we need to throw the alert at their ghost instead
player_mob = M.get_ghost()
var/client/player_client = player_mob.client
- to_chat(user, "You attempt to channel [M]'s soul into [src]. You must give the soul some time to react and stand still...")
to_chat(player_mob, "[user] is trying to capture your soul into [src]! Click the button in the top right of the game window to respond.")
- var/obj/screen/alert/notify_soulstone/A = player_mob.throw_alert("\ref[src]_soulstone_thingy", /obj/screen/alert/notify_soulstone)
player_client << 'sound/misc/notice2.ogg'
window_flash(player_client)
+
+ var/obj/screen/alert/notify_soulstone/A = player_mob.throw_alert("\ref[src]_soulstone_thingy", /obj/screen/alert/notify_soulstone)
if(player_client.prefs && player_client.prefs.UI_style)
A.icon = ui_style2icon(player_client.prefs.UI_style)
+
+ //pass the stuff to the alert itself
A.stone = src
A.stoner = user.real_name
+ //layer shenanigans to make the alert display the soulstone
var/old_layer = layer
var/old_plane = plane
layer = FLOAT_LAYER
@@ -99,6 +105,7 @@
layer = old_layer
plane = old_plane
+ //give the victim 10 seconds to respond
sleep(10 SECONDS)
if(!opt_in)