diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index 0990486ae3..a103c0a54f 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -442,3 +442,10 @@
animate(src, alpha = 0, transform = skew, time = duration)
else
return INITIALIZE_HINT_QDEL
+
+/obj/effect/temp_visual/slugboom
+ icon = 'icons/effects/96x96.dmi'
+ icon_state = "slugboom"
+ randomdir = FALSE
+ duration = 30
+ pixel_x = -24
\ No newline at end of file
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 6ea68bf548..62a7742628 100644
--- a/code/game/objects/items/granters.dm
+++ b/code/game/objects/items/granters.dm
@@ -183,6 +183,23 @@
explosion(user.loc, 1, 0, 2, 3, FALSE, FALSE, 2)
qdel(src)
+/obj/item/book/granter/spell/nuclearfist
+ spell = /obj/effect/proc_holder/spell/targeted/touch/nuclear_fist
+ spellname = "nuclear fist"
+ icon_state ="booknuclearfist"
+ desc = "This book radiates confidence."
+ remarks = list("Line them up....", ".. knock em' down...", "Dress in yellow for maximum effect... why?", "The energy comes from spinach... huh", "Work out for three years? No way!", "Oh I'll cast you a spell allright...", "What ho mighty wizard... ho ho ho...")
+
+/obj/item/book/granter/spell/nuclearfist/recoil(mob/living/carbon/user)
+ ..()
+ to_chat(user, "Your arm spontaneously detonates!")
+ explosion(user.loc, -1, 0, 2, -1, FALSE, FALSE, 2)
+ var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src)
+ if(part)
+ part.dismember()
+ qdel(part)
+
+
/obj/item/book/granter/spell/sacredflame
spell = /obj/effect/proc_holder/spell/targeted/sacred_flame
spellname = "sacred flame"
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index dcec31e5c2..dfde04836d 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -141,6 +141,10 @@
name = "Disintegrate"
spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate
+/datum/spellbook_entry/nuclearfist
+ name = "Nuclear Fist"
+ spell_type = /obj/effect/proc_holder/spell/targeted/touch/nuclear_fist
+
/datum/spellbook_entry/disabletech
name = "Disable Tech"
spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index d91c60367d..173d9721a9 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -507,4 +507,32 @@
return
var/turf/T = get_turf(target)
for(var/i=0, i<50, i+=10)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
\ No newline at end of file
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
+
+/obj/item/projectile/magic/nuclear
+ name = "\proper blazing manliness"
+ icon_state = "nuclear"
+ nodamage = TRUE
+ var/mob/living/victim = null
+ var/used = 0
+
+/obj/item/projectile/magic/nuclear/on_hit(target)
+ if(used)
+ return
+ new/obj/effect/temp_visual/slugboom(get_turf(src))
+ if(ismob(target))
+ if(target == victim)
+ return
+ used = 1
+ visible_message("[victim] slams into [target] with explosive force!")
+ explosion(src, 2, 3, 4, -1, TRUE, FALSE, 5)
+ else
+ used = 1
+ victim.take_overall_damage(30,30)
+ victim.Knockdown(60)
+ explosion(src, -1, -1, -1, -1, FALSE, FALSE, 5)
+
+/obj/item/projectile/magic/nuclear/Destroy()
+ for(var/atom/movable/AM in contents)
+ AM.forceMove(get_turf(src))
+ . = ..()
\ No newline at end of file
diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm
index a5f371ffc2..8108b121ae 100644
--- a/code/modules/spells/spell_types/godhand.dm
+++ b/code/modules/spells/spell_types/godhand.dm
@@ -182,3 +182,38 @@
if(charges <= 0)
qdel(src)
+
+/obj/item/melee/touch_attack/nuclearfist
+ name = "\improper PURE MANLINESS"
+ desc = "SHOW THEM RAW POWER"
+ catchphrase = "I CAST FIST!"
+ on_use_sound = 'sound/weapons/nuclear_fist.ogg'
+ icon_state = "disintegrate"
+ item_state = "disintegrate"
+
+/obj/item/melee/touch_attack/nuclearfist/afterattack(atom/movable/target, mob/living/carbon/user, proximity)
+ if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad
+ return
+ if(!user.can_speak_vocal())
+ to_chat(user, "You can't get the words out!")
+ return
+ var/mob/M = target
+ var/atom/A = M.anti_magic_check()
+ if(A)
+ if(isitem(A))
+ target.visible_message("[target]'s [A] glows brightly as it wards off the spell!")
+ user.visible_message("The feedback blows [user]'s arm off!","The spell bounces from [M]'s skin back into your arm!")
+ user.flash_act()
+ var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src)
+ if(part)
+ part.dismember()
+ return ..()
+ var/angle = dir2angle(get_dir(src, get_step_away(target, src)))
+ var/obj/item/projectile/magic/nuclear/P = new(get_turf(src))
+ P.victim = target
+ target.forceMove(P)
+ P.setAngle(angle)
+ P.original = user
+ P.firer = user
+ P.fire()
+ return ..()
\ No newline at end of file
diff --git a/code/modules/spells/spell_types/touch_attacks.dm b/code/modules/spells/spell_types/touch_attacks.dm
index 0ffe02cec2..794ed797ad 100644
--- a/code/modules/spells/spell_types/touch_attacks.dm
+++ b/code/modules/spells/spell_types/touch_attacks.dm
@@ -23,7 +23,7 @@
remove_hand(TRUE)
to_chat(user, "You draw the power out of your hand.")
return
-
+
for(var/mob/living/carbon/C in targets)
if(!attached_hand)
if(ChargeHand(C))
@@ -71,3 +71,15 @@
action_icon_state = "statue"
sound = 'sound/magic/fleshtostone.ogg'
+
+/obj/effect/proc_holder/spell/targeted/touch/nuclear_fist
+ name = "Nuclear Fist"
+ desc = "This spell channels raw manliness, allowing you punch your enemies across the galaxy, causing them to detonate violently if hitting any other living being midflight. Does not work while laying down."
+ hand_path = /obj/item/melee/touch_attack/nuclearfist
+
+ school = "evocation"
+ charge_max = 200
+ clothes_req = 0
+ cooldown_min = 40
+
+ action_icon_state = "nuclearfist"
\ No newline at end of file
diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi
index a9f20ae8a8..c0b5ef5b40 100644
Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ
diff --git a/icons/mob/actions/actions_spells.dmi b/icons/mob/actions/actions_spells.dmi
index 30927d3608..072bfc8fe3 100644
Binary files a/icons/mob/actions/actions_spells.dmi and b/icons/mob/actions/actions_spells.dmi differ
diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi
index 20e0f5f73c..45181b7c8d 100644
Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index d1c625c18e..a434994846 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ
diff --git a/sound/weapons/nuclear_fist.ogg b/sound/weapons/nuclear_fist.ogg
new file mode 100644
index 0000000000..2b2682dc33
Binary files /dev/null and b/sound/weapons/nuclear_fist.ogg differ