diff --git a/code/datums/spells/rathens.dm b/code/datums/spells/rathens.dm
new file mode 100644
index 00000000000..d8f7dedc290
--- /dev/null
+++ b/code/datums/spells/rathens.dm
@@ -0,0 +1,57 @@
+/obj/effect/proc_holder/spell/aoe_turf/rathens
+ name = "Rathen's Secret"
+ desc = "Summons a powerful shockwave around you that tears the appendix and limbs off of enemies."
+ charge_max = 500
+ clothes_req = 1
+ invocation = "ARSE NATH!"
+ invocation_type = "shout"
+ range = 7
+ cooldown_min = 200
+ selection_type = "view"
+ action_icon_state = "superfart"
+
+/obj/effect/proc_holder/spell/aoe_turf/rathens/cast(list/targets)
+ var/mob/user = usr
+ var/list/impacted_mobs = list()
+ for(var/turf/T in targets)
+ for(var/mob/living/carbon/human/H in T)
+ if(H == user)
+ continue
+ impacted_mobs += H
+ if(!impacted_mobs.len)
+ to_chat(user, "There are no targets in range!")
+ revert_cast()
+ return 0
+ playsound(get_turf(user), 'sound/goonstation/effects/superfart.ogg', 25, 1)
+ for(var/mob/living/carbon/human/H in impacted_mobs)
+ var/datum/effect/system/harmless_smoke_spread/s = new /datum/effect/system/harmless_smoke_spread
+ s.set_up(5, 0, H)
+ s.start()
+ var/obj/item/organ/internal/appendix/A = H.get_int_organ(/obj/item/organ/internal/appendix)
+ if(A)
+ A.remove(H)
+ A.forceMove(get_turf(H))
+ spawn()
+ A.throw_at(get_edge_target_turf(H, pick(alldirs)), rand(1, 10), 5)
+ H.visible_message("[H]'s [A.name] flies out their body in a magical explosion!",\
+ "Your [A.name] flies out your body in a magical explosion!")
+ H.Weaken(2)
+ else
+ var/obj/effect/decal/cleanable/blood/gibs/G = new/obj/effect/decal/cleanable/blood/gibs(get_turf(H))
+ spawn()
+ G.throw_at(get_edge_target_turf(H, pick(alldirs)), rand(1, 10), 5)
+ H.apply_damage(10, BRUTE, "chest")
+ to_chat(H, "You have no [A.name], but something had to give! Holy shit, what was that?")
+ H.Weaken(3)
+ for(var/obj/item/organ/external/E in H.organs)
+ if(istype(E, /obj/item/organ/external/head))
+ continue
+ if(istype(E, /obj/item/organ/external/chest))
+ continue
+ if(istype(E, /obj/item/organ/external/groin))
+ continue
+ if(prob(7))
+ to_chat(H, "Your [E] was severed by the explosion!")
+ E.droplimb(1, DROPLIMB_EDGE, 0, 1)
+
+
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index e12d44c46c7..80c03c1453e 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -130,6 +130,12 @@
log_name = "RP"
category = "Defensive"
+/datum/spellbook_entry/rathens
+ name = "Rathen's Secret"
+ spell_type = /obj/effect/proc_holder/spell/aoe_turf/rathens
+ log_name = "RS"
+ category = "Defensive"
+
/datum/spellbook_entry/timestop
name = "Time Stop"
spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop
diff --git a/paradise.dme b/paradise.dme
index 9342fc2b09f..c83b6d2def4 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -293,6 +293,7 @@
#include "code\datums\spells\mime.dm"
#include "code\datums\spells\mind_transfer.dm"
#include "code\datums\spells\projectile.dm"
+#include "code\datums\spells\rathens.dm"
#include "code\datums\spells\summonitem.dm"
#include "code\datums\spells\touch_attacks.dm"
#include "code\datums\spells\trigger.dm"