diff --git a/code/modules/clothing/shoes/taeclowndo.dm b/code/modules/clothing/shoes/taeclowndo.dm
new file mode 100644
index 0000000000..20d9fa6b70
--- /dev/null
+++ b/code/modules/clothing/shoes/taeclowndo.dm
@@ -0,0 +1,36 @@
+/obj/item/clothing/shoes/clown_shoes/taeclowndo
+ var/list/spelltypes = list (
+ /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pie,
+ /obj/effect/proc_holder/spell/aimed/banana_peel,
+ /obj/effect/proc_holder/spell/targeted/touch/megahonk,
+ /obj/effect/proc_holder/spell/targeted/touch/bspie,
+ )
+ var/list/spells = list()
+
+
+/obj/item/clothing/shoes/clown_shoes/taeclowndo/equipped(mob/user, slot)
+ . = ..()
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/H = user
+ if(!(H.has_trait(TRAIT_CLUMSY)) && !(H.mind && H.mind.assigned_role == "Clown"))
+ return
+ if(slot == SLOT_SHOES)
+ spells = new
+ for(var/spell in spelltypes)
+ var/obj/effect/proc_holder/spell/S = new spell
+ spells += S
+ S.charge_counter = 0
+ S.start_recharge()
+ H.mind.AddSpell(S)
+
+/obj/item/clothing/shoes/clown_shoes/taeclowndo/dropped(mob/user)
+ . = ..()
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/H = user
+ if(H.get_item_by_slot(SLOT_SHOES) == src)
+ for(var/spell in spells)
+ var/obj/effect/proc_holder/spell/S = spell
+ H.mind.spell_list.Remove(S)
+ qdel(S)
\ No newline at end of file
diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm
index 04177783e6..8264b4153e 100644
--- a/code/modules/food_and_drinks/food/snacks_pie.dm
+++ b/code/modules/food_and_drinks/food/snacks_pie.dm
@@ -62,6 +62,28 @@
/obj/item/reagent_containers/food/snacks/pie/cream/nostun
stunning = FALSE
+/obj/item/reagent_containers/food/snacks/pie/cream/body
+
+/obj/item/reagent_containers/food/snacks/pie/cream/body/Destroy()
+ var/turf/T = get_turf(src)
+ for(var/atom/movable/A in contents)
+ A.forceMove(T)
+ A.throw_at(T, 1, 1)
+ . = ..()
+
+/obj/item/reagent_containers/food/snacks/pie/cream/body/On_Consume(mob/living/carbon/M)
+ if(!reagents.total_volume) //so that it happens on the last bite
+ if(iscarbon(M) && contents.len)
+ var/turf/T = get_turf(src)
+ for(var/atom/movable/A in contents)
+ A.forceMove(T)
+ A.throw_at(T, 1, 1)
+ M.visible_message("[src] bursts out of [M]!")
+ M.emote("scream")
+ M.Knockdown(40)
+ M.adjustBruteLoss(60)
+ return ..()
+
/obj/item/reagent_containers/food/snacks/pie/berryclafoutis
name = "berry clafoutis"
desc = "No black birds, this is a good sign."
diff --git a/code/modules/integrated_electronics/subtypes/weaponized.dm b/code/modules/integrated_electronics/subtypes/weaponized.dm
index f9259359a3..7bccbfafcd 100644
--- a/code/modules/integrated_electronics/subtypes/weaponized.dm
+++ b/code/modules/integrated_electronics/subtypes/weaponized.dm
@@ -215,7 +215,7 @@
The 'fire' activator will cause the mechanism to attempt to launch objects at the coordinates, if possible. Note that the \
projectile needs to be inside the machine, or on an adjacent tile, and must be medium sized or smaller. The assembly \
must also be a gun if you wish to launch something while the assembly is in hand."
- complexity = 75
+ complexity = 50
w_class = WEIGHT_CLASS_SMALL
size = 4
cooldown_per_use = 30
@@ -306,7 +306,7 @@
desc = "Used to stun a target holding the device via electricity."
icon_state = "power_relay"
extended_desc = "Attempts to stun the holder of this device, with the strength input being the strength of the stun, from 1 to 70."
- complexity = 60
+ complexity = 30
size = 4
inputs = list("strength" = IC_PINTYPE_NUMBER)
activators = list("stun" = IC_PINTYPE_PULSE_IN, "on success" = IC_PINTYPE_PULSE_OUT, "on fail" = IC_PINTYPE_PULSE_OUT)
@@ -340,4 +340,4 @@
var/mob/living/carbon/human/H = L
H.forcesay(GLOB.hit_appends)
- return 1
\ No newline at end of file
+ return 1
diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm
index 35f9a8f50a..73a428af71 100644
--- a/code/modules/spells/spell_types/aimed.dm
+++ b/code/modules/spells/spell_types/aimed.dm
@@ -74,6 +74,8 @@
/obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target)
current_amount--
+ if(!projectile_type)
+ return
for(var/i in 1 to projectiles_per_fire)
var/obj/item/projectile/P = new projectile_type(user.loc)
P.firer = user
diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm
index 919d87b4c7..06d1fc3dc5 100644
--- a/code/modules/spells/spell_types/godhand.dm
+++ b/code/modules/spells/spell_types/godhand.dm
@@ -94,3 +94,87 @@
M.Stun(40)
M.petrify()
return ..()
+
+
+/obj/item/melee/touch_attack/megahonk
+ name = "\improper honkmother's blessing"
+ desc = "You've got a feeling they won't be laughing after this one. Honk honk."
+ catchphrase = "HONKDOOOOUKEN!"
+ on_use_sound = 'sound/items/airhorn.ogg'
+ icon = 'icons/mecha/mecha_equipment.dmi'
+ icon_state = "mecha_honker"
+
+/obj/item/melee/touch_attack/megahonk/afterattack(atom/target, mob/living/carbon/user, proximity)
+ if(!proximity || !iscarbon(target) || !iscarbon(user) || user.handcuffed)
+ return
+ user.say(catchphrase, forced = "spell")
+ playsound(get_turf(target), on_use_sound,100,1)
+ for(var/mob/living/carbon/M in (hearers(1, target) - user)) //3x3 around the target, not affecting the user
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
+ continue
+ var/mul = (M==target ? 1 : 0.5)
+ to_chat(M, "HONK")
+ M.SetSleeping(0)
+ M.stuttering += 20*mul
+ M.adjustEarDamage(0, 30*mul)
+ M.Knockdown(60*mul)
+ if(prob(40))
+ M.Knockdown(200*mul)
+ else
+ M.Jitter(500*mul)
+
+ charges--
+ if(charges <= 0)
+ qdel(src)
+
+/obj/item/melee/touch_attack/megahonk/attack_self(mob/user)
+ . = ..()
+ to_chat(user, "\The [src] disappears, to honk another day.")
+ qdel(src)
+
+/obj/item/melee/touch_attack/bspie
+ name = "\improper bluespace pie"
+ desc = "A thing you can barely comprehend as you hold it in your hand. You're fairly sure you could fit an entire body inside."
+ on_use_sound = 'sound/magic/demon_consume.ogg'
+ icon = 'icons/obj/food/piecake.dmi'
+ icon_state = "frostypie"
+ color = "#000077"
+
+/obj/item/melee/touch_attack/bspie/attack_self(mob/user)
+ . = ..()
+ to_chat(user, "You smear \the [src] on your chest! ")
+ qdel(src)
+
+/obj/item/melee/touch_attack/bspie/afterattack(atom/target, mob/living/carbon/user, proximity)
+ if(!proximity || !iscarbon(target) || !iscarbon(user) || user.handcuffed)
+ return
+ if(target == user)
+ to_chat(user, "You smear \the [src] on your chest!")
+ qdel(src)
+ return
+ var/mob/living/carbon/M = target
+
+ user.visible_message("[user] is trying to stuff [M]\s body into \the [src]!")
+ if(do_mob(user, M, 250))
+ var/name = M.real_name
+ var/obj/item/reagent_containers/food/snacks/pie/cream/body/pie = new(get_turf(M))
+ pie.name = "\improper [name] [pie.name]"
+
+ playsound(get_turf(target), on_use_sound, 50, 1)
+
+ /*
+ var/obj/item/bodypart/head = M.get_bodypart("head")
+ if(head)
+ head.drop_limb()
+ head.throw_at(get_turf(head), 1, 1)
+ qdel(M)
+ */
+ M.forceMove(pie)
+
+
+ charges--
+
+ if(charges <= 0)
+ qdel(src)
diff --git a/code/modules/spells/spell_types/taeclowndo.dm b/code/modules/spells/spell_types/taeclowndo.dm
new file mode 100644
index 0000000000..d2b0782b07
--- /dev/null
+++ b/code/modules/spells/spell_types/taeclowndo.dm
@@ -0,0 +1,86 @@
+/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pie
+ name = "Summon Creampie"
+ desc = "A clown's weapon of choice. Use this to summon a fresh pie, just waiting to acquaintain itself with someone's face."
+ invocation_type = "none"
+ include_user = 1
+ range = -1
+ clothes_req = 0
+ item_type = /obj/item/reagent_containers/food/snacks/pie/cream
+
+ charge_max = 30
+ cooldown_min = 30
+ action_icon = 'icons/obj/food/piecake.dmi'
+ action_icon_state = "pie"
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/obj/effect/proc_holder/spell/aimed/banana_peel
+ name = "Conjure Banana Peel"
+ desc = "Make a banana peel appear out of thin air right under someone's feet!"
+ charge_type = "recharge"
+ charge_max = 100
+ cooldown_min = 100
+ clothes_req = 0
+ invocation_type = "none"
+ range = 7
+ selection_type = "view"
+ projectile_type = null
+
+ active_msg = "You focus, your mind reaching to the clown dimension, ready to make a peel matrialize wherever you want!"
+ deactive_msg = "You relax, the peel remaining right in the \"thin air\" it would appear out of."
+ action_icon = 'icons/obj/hydroponics/harvest.dmi'
+ base_icon_state = "banana_peel"
+ action_icon_state = "banana"
+
+
+/obj/effect/proc_holder/spell/aimed/banana_peel/cast(list/targets, mob/user = usr)
+ var/target = get_turf(targets[1])
+
+ if(get_dist(user,target)>range)
+ to_chat(user, "\The [target] is too far away!")
+ return
+
+ . = ..()
+ new /obj/item/grown/bananapeel(target)
+
+/obj/effect/proc_holder/spell/aimed/banana_peel/update_icon()
+ if(!action)
+ return
+ if(active)
+ action.button_icon_state = base_icon_state
+ else
+ action.button_icon_state = action_icon_state
+
+ action.UpdateButtonIcon()
+ return
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/obj/effect/proc_holder/spell/targeted/touch/megahonk
+ name = "Mega HoNk"
+ desc = "This spell channels your inner clown powers, concentrating them into one massive HONK."
+ hand_path = /obj/item/melee/touch_attack/megahonk
+
+ charge_max = 100
+ clothes_req = 0
+ cooldown_min = 100
+
+ action_icon = 'icons/mecha/mecha_equipment.dmi'
+ action_icon_state = "mecha_honker"
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/obj/effect/proc_holder/spell/targeted/touch/bspie
+ name = "Bluespace Banana Pie"
+ desc = "An entire body would fit in there!"
+ hand_path = /obj/item/melee/touch_attack/bspie
+
+ charge_max = 450
+ clothes_req = 0
+ cooldown_min = 450
+
+ action_icon = 'icons/obj/food/piecake.dmi'
+ action_icon_state = "frostypie"
+
+
+
+
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 072c80df7d..05e9c68c7d 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -837,6 +837,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 0
include_modes = list(/datum/game_mode/nuclear/clown_ops)
+datum/uplink_item/stealthy_tools/taeclowndo_shoes
+ name = "Tae-clown-do Shoes"
+ desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
+ cost = 12
+ item = /obj/item/clothing/shoes/clown_shoes/taeclowndo
+ include_modes = list(/datum/game_mode/nuclear/clown_ops)
+
/datum/uplink_item/stealthy_tools/frame
name = "F.R.A.M.E. PDA Cartridge"
desc = "When inserted into a personal digital assistant, this cartridge gives you five PDA viruses which \
@@ -1382,6 +1389,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/dnainjector/clumsymut
restricted_roles = list("Clown")
+/datum/uplink_item/role_restricted/taeclowndo_shoes
+ name = "Tae-clown-do Shoes"
+ desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
+ cost = 14
+ item = /obj/item/clothing/shoes/clown_shoes/taeclowndo
+ restricted_roles = list("Clown")
+
/datum/uplink_item/role_restricted/mimery
name = "Guide to Advanced Mimery Series"
desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. Obviously only works for Mimes."
diff --git a/html/changelogs/AutoChangeLog-pr-8473.yml b/html/changelogs/AutoChangeLog-pr-8473.yml
new file mode 100644
index 0000000000..a4743c9a39
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8473.yml
@@ -0,0 +1,10 @@
+author: "Useroth"
+delete-after: True
+changes:
+ - rscadd: "Taeclowndo shoes which grant the four following abilities:
+- Conjuring a cream pie right into their hand. Every three seconds.
+- Making a banana peel appear out of thin air at the tile of the clown's choice. Every ten seconds.
+- Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being honked by a Honkerblast on a clown mech, with the effects halved for anyone who isn't its direct target. Every ten seconds.
+- Bluespace Banana Pie. You don't throw this one... not right away at least. This baby can fit an entire body inside. Good for disposal of evidence. 25 second-long action, 45 second cooldown. Also produces a \"[victim's name] cream pie\". The body drops out of the pie if you splat it somewhere or destroy the pie. If you eat it, it will chestburst out of you a'la monkey cube.
+
+It's a 14 TC item for traitor clowns and a 12 TC item for clown-ops."
diff --git a/tgstation.dme b/tgstation.dme
index a40dec7441..bfbb2a7052 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1497,6 +1497,7 @@
#include "code\modules\clothing\shoes\colour.dm"
#include "code\modules\clothing\shoes\magboots.dm"
#include "code\modules\clothing\shoes\miscellaneous.dm"
+#include "code\modules\clothing\shoes\taeclowndo.dm"
#include "code\modules\clothing\shoes\vg_shoes.dm"
#include "code\modules\clothing\spacesuits\_spacesuits.dm"
#include "code\modules\clothing\spacesuits\chronosuit.dm"
@@ -2664,6 +2665,7 @@
#include "code\modules\spells\spell_types\shapeshift.dm"
#include "code\modules\spells\spell_types\spacetime_distortion.dm"
#include "code\modules\spells\spell_types\summonitem.dm"
+#include "code\modules\spells\spell_types\taeclowndo.dm"
#include "code\modules\spells\spell_types\the_traps.dm"
#include "code\modules\spells\spell_types\touch_attacks.dm"
#include "code\modules\spells\spell_types\trigger.dm"