diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 077c715440c..d9e4263ebcd 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -627,7 +627,7 @@
////////////////////////////////////////////////////////////////////////
// WAS: /datum/bioEffect/superfart
-/datum/dna/gene/basic/superfart
+/datum/dna/gene/basic/grant_spell/superfart
name = "High-Pressure Intestines"
desc = "Vastly increases the gas capacity of the subject's digestive tract."
activation_messages = list("You feel bloated and gassy.")
@@ -635,7 +635,45 @@
instability=1
mutation = SUPER_FART
+ spelltype = /obj/effect/proc_holder/spell/aoe_turf/superfart
New()
..()
block = SUPERFARTBLOCK
+
+/obj/effect/proc_holder/spell/aoe_turf/superfart
+ name = "Super Fart"
+ desc = "Fart with the fury of 1000 burritos."
+ panel = "Abilities"
+ charge_max = 900
+ invocation_type = "emote"
+ range = 3
+ clothes_req = 0
+ selection_type = "view"
+ action_icon_state = "superfart"
+
+/obj/effect/proc_holder/spell/aoe_turf/superfart/invocation(mob/user = usr)
+ invocation = "[user] hunches down and grits their teeth!"
+ invocation_emote_self = invocation
+ ..(user)
+
+/obj/effect/proc_holder/spell/aoe_turf/superfart/cast(list/targets)
+ var/UT = get_turf(usr)
+
+ if(do_after(usr, 30, target = usr))
+ playsound(UT, 'sound/goonstation/effects/superfart.ogg', 50, 0)
+ usr.visible_message("[usr] unleashes a [pick("tremendous","gigantic","colossal")] fart!", "You hear a [pick("tremendous","gigantic","colossal")] fart.")
+ for(var/T in targets)
+ for(var/mob/living/M in T)
+ shake_camera(M, 10, 5)
+ if (M == usr)
+ continue
+ if(!airborne_can_reach(UT, T))
+ continue
+ M << "You are sent flying!"
+ M.Weaken(5)
+ step_away(M, UT, 15)
+ step_away(M, UT, 15)
+ step_away(M, UT, 15)
+ else
+ usr << "You were interrupted and couldn't fart! Rude!"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 130bf7b05db..1b8a7b077ed 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -782,8 +782,6 @@
var/turf/location = get_turf(src)
var/aoe_range=2 // Default
- if(SUPER_FART in mutations)
- aoe_range+=3 //Was 5
// Process toxic farts first.
if(TOXIC_FARTS in mutations)
@@ -803,26 +801,6 @@
continue
M.reagents.add_reagent("space_drugs",rand(1,10))
- if(SUPER_FART in mutations)
- visible_message("\red [name] hunches down and grits their teeth!")
- if(do_after(usr,30, target = src))
- visible_message("\red [name] unleashes a [pick("tremendous","gigantic","colossal")] fart!","You hear a [pick("tremendous","gigantic","colossal")] fart.")
- //playsound(L.loc, 'superfart.ogg', 50, 0)
- for(var/mob/living/V in range(location,aoe_range))
- shake_camera(V,10,5)
- if (V == src)
- continue
- if(!airborne_can_reach(get_turf(src), get_turf(V)))
- continue
- V << "\red You are sent flying!"
- V.Weaken(5) // why the hell was this set to 12 christ
- step_away(V,location,15)
- step_away(V,location,15)
- step_away(V,location,15)
- else
- usr << "\red You were interrupted and couldn't fart! Rude!"
-
-
if ("help")
var/emotelist = "aflap(s), airguitar, blink(s), blink(s)_r, blush(es), bow(s)-(none)/mob, burp(s), choke(s), chuckle(s), clap(s), collapse(s), cough(s),cry, cries, custom, dap(s)(none)/mob," \
+ " deathgasp(s), drool(s), eyebrow,fart(s), faint(s), flap(s), flip(s), frown(s), gasp(s), giggle(s), glare(s)-(none)/mob, grin(s), groan(s), grumble(s), handshake-mob, hug(s)-(none)/mob," \
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index 814d9bf3153..a45ae88ca58 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/sound/goonstation/effects/superfart.ogg b/sound/goonstation/effects/superfart.ogg
new file mode 100644
index 00000000000..8a83fa7c64a
Binary files /dev/null and b/sound/goonstation/effects/superfart.ogg differ