diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm
index 97f07acc05..c10b10d3d2 100644
--- a/code/__DEFINES/admin.dm
+++ b/code/__DEFINES/admin.dm
@@ -81,6 +81,7 @@
#define ADMIN_PUNISHMENT_PICKLE "Pickle-ify"
#define ADMIN_PUNISHMENT_FRY "Fry"
#define ADMIN_PUNISHMENT_PERFORATE ":B:erforate"
+#define ADMIN_PUNISHMENT_GOODBYE "Their final message" //sandstorm
#define AHELP_ACTIVE 1
#define AHELP_CLOSED 2
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 3bcaa89624..38b4af3a6d 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1298,7 +1298,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
ADMIN_PUNISHMENT_FRY,
ADMIN_PUNISHMENT_CRACK,
ADMIN_PUNISHMENT_BLEED,
- ADMIN_PUNISHMENT_SCARIFY)
+ ADMIN_PUNISHMENT_SCARIFY,
+ ADMIN_PUNISHMENT_GOODBYE)
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
@@ -1464,6 +1465,13 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
to_chat(usr,"[C] does not have knottable shoes!")
return
sick_kicks.adjust_laces(SHOES_KNOTTED)
+ if(ADMIN_PUNISHMENT_GOODBYE) //sandstorm punish :) it starts here
+ var/mob/living/C = target
+ if(C.stat == DEAD)
+ to_chat(usr, "[C] is dead!")
+ return
+ else
+ C.pregoodbye(C) //sandstorm punish and ends here.
punish_log(target, punishment)
diff --git a/sandcode/code/modules/mob/living/carbon/carbon.dm b/sandcode/code/modules/mob/living/carbon/carbon.dm
new file mode 100644
index 0000000000..587c5d6206
--- /dev/null
+++ b/sandcode/code/modules/mob/living/carbon/carbon.dm
@@ -0,0 +1,29 @@
+//It's here so it doesn't make a big mess on randomverbs.dm,
+//also because of this you can proccall it, why would you if you have smite?
+/mob/living/proc/pregoodbye(C)
+ if(isanimal(C))
+ var/mob/living/simple_animal/D = C
+ D.AIStatus = AI_OFF
+ Immobilize(1000, TRUE, TRUE)// currently the only ways of
+ next_action_immediate = 10000000000 // completely freezing someone as i know
+ playsound(C, "sandcode/sound/effects/admin_punish/changetheworld.ogg", 100, FALSE)
+ say("Change the world")
+ sleep(20)
+ playsound(C, "sandcode/sound/effects/admin_punish/myfinalmessage.ogg", 100, FALSE)
+ say("My final message")
+ sleep(20)
+ playsound(C, "sandcode/sound/effects/admin_punish/goodbye.ogg", 100, FALSE)
+ say("Goodbye.")
+ sleep(20)
+ playsound(C, "sandcode/sound/effects/admin_punish/endjingle.ogg", 100, FALSE)
+ goodbye()
+
+/mob/living/proc/goodbye() //this must be separate because it's a loop!
+ if(alpha <= 10)
+ sleep(2)
+ ghostize()
+ Destroy()
+ else
+ alpha = alpha - 7
+ sleep(1)
+ goodbye()
diff --git a/sandcode/sound/effects/admin_punish/changetheworld.ogg b/sandcode/sound/effects/admin_punish/changetheworld.ogg
new file mode 100644
index 0000000000..2f82443409
Binary files /dev/null and b/sandcode/sound/effects/admin_punish/changetheworld.ogg differ
diff --git a/sandcode/sound/effects/admin_punish/endjingle.ogg b/sandcode/sound/effects/admin_punish/endjingle.ogg
new file mode 100644
index 0000000000..82f90ea382
Binary files /dev/null and b/sandcode/sound/effects/admin_punish/endjingle.ogg differ
diff --git a/sandcode/sound/effects/admin_punish/goodbye.ogg b/sandcode/sound/effects/admin_punish/goodbye.ogg
new file mode 100644
index 0000000000..6b53a70f31
Binary files /dev/null and b/sandcode/sound/effects/admin_punish/goodbye.ogg differ
diff --git a/sandcode/sound/effects/admin_punish/myfinalmessage.ogg b/sandcode/sound/effects/admin_punish/myfinalmessage.ogg
new file mode 100644
index 0000000000..f58bf19d83
Binary files /dev/null and b/sandcode/sound/effects/admin_punish/myfinalmessage.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index baa588c898..4422070f96 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3670,6 +3670,7 @@
#include "sandcode\code\modules\mob\living\say.dm"
#include "sandcode\code\modules\mob\living\ssd_indicator.dm"
#include "sandcode\code\modules\mob\living\typing_indicator_overrides.dm"
+#include "sandcode\code\modules\mob\living\carbon\carbon.dm"
#include "sandcode\code\modules\mob\living\carbon\give.dm"
#include "sandcode\code\modules\mob\living\carbon\show.dm"
#include "sandcode\code\modules\mob\living\carbon\human\human.dm"