diff --git a/code/datums/spells/rod_form.dm b/code/datums/spells/rod_form.dm
new file mode 100644
index 00000000000..004daf8969e
--- /dev/null
+++ b/code/datums/spells/rod_form.dm
@@ -0,0 +1,43 @@
+/obj/effect/proc_holder/spell/targeted/rod_form
+ name = "Rod Form"
+ desc = "Take on the form of an immovable rod, destroying all in your path."
+ clothes_req = 1
+ human_req = 0
+ charge_max = 600
+ cooldown_min = 200
+ range = -1
+ include_user = 1
+ invocation = "CLANG!"
+ invocation_type = "shout"
+ action_icon_state = "immrod"
+
+/obj/effect/proc_holder/spell/targeted/rod_form/cast(list/targets,mob/user = usr)
+ for(var/mob/living/M in targets)
+ var/turf/start = get_turf(M)
+ var/obj/effect/immovablerod/wizard/W = new(start, get_ranged_target_turf(M, M.dir, (15 + spell_level * 3)))
+ W.wizard = M
+ W.max_distance += spell_level * 3 //You travel farther when you upgrade the spell
+ W.start_turf = start
+ M.forceMove(W)
+ M.notransform = 1
+ M.status_flags |= GODMODE
+
+//Wizard Version of the Immovable Rod
+
+/obj/effect/immovablerod/wizard
+ var/max_distance = 13
+ var/mob/living/wizard
+ var/turf/start_turf
+ notify = FALSE
+
+/obj/effect/immovablerod/wizard/Move()
+ if(get_dist(start_turf, get_turf(src)) >= max_distance)
+ qdel(src)
+ ..()
+
+/obj/effect/immovablerod/wizard/Destroy()
+ if(wizard)
+ wizard.status_flags &= ~GODMODE
+ wizard.notransform = 0
+ wizard.forceMove(get_turf(src))
+ return ..()
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 3c59d47f020..fd554e03c85 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -106,6 +106,11 @@
spell_type = /obj/effect/proc_holder/spell/fireball
log_name = "FB"
+/datum/spellbook_entry/rod_form
+ name = "Rod Form"
+ spell_type = /obj/effect/proc_holder/spell/targeted/rod_form
+ log_name = "RF"
+
/datum/spellbook_entry/magicm
name = "Magic Missile"
spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
@@ -853,7 +858,7 @@
spellname = "disintegrate"
icon_state ="bookfireball"
desc = "This book feels like it will rip stuff apart."
-
+
/obj/item/weapon/spellbook/oneuse/sacredflame
spell = /obj/effect/proc_holder/spell/targeted/sacred_flame
spellname = "sacred flame"
diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm
index 2dc2c8a17dd..04c9d3be5d4 100644
--- a/code/modules/events/immovable_rod.dm
+++ b/code/modules/events/immovable_rod.dm
@@ -29,14 +29,16 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
anchored = 1
var/z_original = 0
var/destination
+ var/notify = TRUE
/obj/effect/immovablerod/New(atom/start, atom/end)
loc = start
z_original = z
destination = end
- notify_ghosts("\A [src] is inbound!",
- enter_link="(Click to follow)",
- source=src, action=NOTIFY_FOLLOW)
+ if(notify)
+ notify_ghosts("\A [src] is inbound!",
+ enter_link="(Click to follow)",
+ source=src, action=NOTIFY_FOLLOW)
poi_list |= src
if(end && end.z==z_original)
walk_towards(src, destination, 1)
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index 6fa0f18dcf8..3d0c7233c98 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 297a8d15920..cdcdcb9a6c9 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -306,6 +306,7 @@
#include "code\datums\spells\mind_transfer.dm"
#include "code\datums\spells\projectile.dm"
#include "code\datums\spells\rathens.dm"
+#include "code\datums\spells\rod_form.dm"
#include "code\datums\spells\shapeshift.dm"
#include "code\datums\spells\summonitem.dm"
#include "code\datums\spells\touch_attacks.dm"