diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm
index a2ae68aa8051..e9aa0424db53 100644
--- a/code/datums/components/crafting/recipes.dm
+++ b/code/datums/components/crafting/recipes.dm
@@ -51,6 +51,15 @@
category = CAT_WEAPONRY
always_availible = FALSE
+/datum/crafting_recipe/knifeboxing
+ name = "Knife-boxing Gloves"
+ result = /obj/item/clothing/gloves/knifeboxing
+ reqs = list(/obj/item/clothing/gloves/boxing = 1,
+ /obj/item/kitchen/knife = 2)
+ time = 100
+ category = CAT_WEAPONRY
+ always_availible = FALSE
+
//Normal recipes
/datum/crafting_recipe/pin_removal
name = "Pin Removal"
diff --git a/code/datums/martial/knifeboxing.dm b/code/datums/martial/knifeboxing.dm
new file mode 100644
index 000000000000..d9d1f9fbeb8a
--- /dev/null
+++ b/code/datums/martial/knifeboxing.dm
@@ -0,0 +1,56 @@
+/datum/martial_art/knifeboxing
+ name = "Knife-boxing"
+
+/datum/martial_art/knifeboxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ to_chat(A, "Can't disarm while knife-boxing!")
+ return TRUE
+
+/datum/martial_art/knifeboxing/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+ to_chat(A, "Can't grab while knife-boxing!")
+ return TRUE
+
+/datum/martial_art/knifeboxing/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
+
+ A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
+
+ var/atk_verb = pick("left hook","right hook","straight punch")
+
+ var/damage = rand(8, 12) + A.dna.species.punchdamagelow
+ if(!damage)
+ playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1)
+ D.visible_message("[A] has attempted to [atk_verb] [D]!", \
+ "[A] has attempted to [atk_verb] [D]!", null, COMBAT_MESSAGE_RANGE)
+ log_combat(A, D, "attempted to punch (knifeboxing)")
+ return FALSE
+
+ var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
+ var/armor_block = D.run_armor_check(affecting, "melee")
+
+ playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1)
+
+ D.visible_message("[A] has [atk_verb]ed [D]!", \
+ "[A] has [atk_verb]ed [D]!", null, COMBAT_MESSAGE_RANGE)
+
+ D.apply_damage(damage, BRUTE, affecting, armor_block)
+ log_combat(A, D, "punched (knifeboxing")
+ return TRUE
+
+/obj/item/clothing/gloves/knifeboxing
+ var/datum/martial_art/knifeboxing/style = new
+
+/obj/item/clothing/gloves/knifeboxing/equipped(mob/user, slot)
+ if(!ishuman(user))
+ return
+ if(slot == SLOT_GLOVES)
+ var/mob/living/carbon/human/H = user
+ style.teach(H,1)
+ return
+
+/obj/item/clothing/gloves/knifeboxing/dropped(mob/user)
+ if(!ishuman(user))
+ return
+ var/mob/living/carbon/human/H = user
+ if(H)
+ if(H.get_item_by_slot(SLOT_GLOVES) == src)
+ style.remove(H)
+ return
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 38696e8ea257..46ab299e2462 100644
--- a/code/game/objects/items/granters.dm
+++ b/code/game/objects/items/granters.dm
@@ -414,6 +414,6 @@
/obj/item/book/granter/crafting_recipe/weapons
name = "makeshift weapons 101"
desc = "A book filled with directions on how to make various weaponry."
- crafting_recipe_types = list(/datum/crafting_recipe/baseball_bat, /datum/crafting_recipe/lance, /datum/crafting_recipe/makeshiftlasrifle)
+ crafting_recipe_types = list(/datum/crafting_recipe/baseball_bat, /datum/crafting_recipe/lance, /datum/crafting_recipe/knifeboxing, /datum/crafting_recipe/makeshiftlasrifle)
icon_state = "bookCrafting"
oneuse = TRUE
diff --git a/code/modules/clothing/gloves/knifeboxing.dm b/code/modules/clothing/gloves/knifeboxing.dm
new file mode 100644
index 000000000000..938e322bdae0
--- /dev/null
+++ b/code/modules/clothing/gloves/knifeboxing.dm
@@ -0,0 +1,7 @@
+/obj/item/clothing/gloves/knifeboxing
+ name = "knife gloves"
+ desc = "I'm here to punch people in the face with knives."
+ icon = 'icons/obj/clothing/gloves.dmi'
+ alternate_worn_icon = 'icons/mob/hands.dmi'
+ icon_state = "knife_boxing"
+ item_state = "knife_boxing"
diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi
index 09f743377fd1..d45561a4a9a1 100644
Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index ed85e9881518..a45ee1478716 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/yogstation.dme b/yogstation.dme
index defadf94d226..741a67d7030f 100644
--- a/yogstation.dme
+++ b/yogstation.dme
@@ -515,6 +515,7 @@
#include "code\datums\looping_sounds\weather.dm"
#include "code\datums\martial\boxing.dm"
#include "code\datums\martial\cqc.dm"
+#include "code\datums\martial\knifeboxing.dm"
#include "code\datums\martial\krav_maga.dm"
#include "code\datums\martial\mushpunch.dm"
#include "code\datums\martial\plasma_fist.dm"
@@ -1646,6 +1647,7 @@
#include "code\modules\clothing\suits\utility.dm"
#include "code\modules\clothing\suits\wiz_robe.dm"
#include "code\modules\clothing\under\_under.dm"
+#include "code\modules\clothing\gloves\knifeboxing.dm"
#include "code\modules\clothing\under\accessories.dm"
#include "code\modules\clothing\under\color.dm"
#include "code\modules\clothing\under\miscellaneous.dm"