diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 115b3be662f..9b63673316d 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -7,8 +7,9 @@
* Kidan spear
* Chainsaw
* Singularity hammer
- * Mjolnnir
+ * Mjolnnir
* Knighthammer
+ * Pyro Claws
*/
/*##################################################################
@@ -826,3 +827,124 @@
Z.ex_act(2)
charged = 3
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
+
+// PYRO CLAWS
+/obj/item/twohanded/required/pyro_claws
+ name = "hardplasma energy claws"
+ desc = "The power of the sun, in the claws of your hand."
+ icon_state = "pyro_claws"
+ flags = ABSTRACT | NODROP | DROPDEL
+ force = 22
+ force_wielded = 22
+ damtype = BURN
+ armour_penetration_percentage = 50
+ block_chance = 50
+ sharp = TRUE
+ attack_effect_override = ATTACK_EFFECT_CLAW
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut", "savaged", "clawed")
+ sprite_sheets_inhand = list("Vox" = 'icons/mob/clothing/species/vox/held.dmi', "Drask" = 'icons/mob/clothing/species/drask/held.dmi')
+ toolspeed = 0.5
+ var/lifetime = 60 SECONDS
+
+/obj/item/twohanded/required/pyro_claws/Initialize(mapload)
+ . = ..()
+ START_PROCESSING(SSobj, src)
+
+/obj/item/twohanded/required/pyro_claws/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/twohanded/required/pyro_claws/process()
+ lifetime -= 2 SECONDS
+ if(lifetime <= 0)
+ visible_message("[src] slides back into the depths of [loc]'s wrists.")
+ do_sparks(rand(1,6), 1, loc)
+ qdel(src)
+ return
+ if(prob(15))
+ do_sparks(rand(1,6), 1, loc)
+
+/obj/item/twohanded/required/pyro_claws/afterattack(atom/target, mob/user, proximity)
+ if(!proximity)
+ return
+ if(prob(60))
+ do_sparks(rand(1,6), 1, loc)
+ if(istype(target, /obj/machinery/door/airlock))
+ var/obj/machinery/door/airlock/A = target
+
+ if(!A.requiresID() || A.allowed(user))
+ return
+
+ if(A.locked)
+ to_chat(user, "The airlock's bolts prevent it from being forced.")
+ return
+
+ if(A.arePowerSystemsOn())
+ user.visible_message("[user] jams [user.p_their()] [name] into the airlock and starts prying it open!", "You start forcing the airlock open.", "You hear a metal screeching sound.")
+ playsound(A, 'sound/machines/airlock_alien_prying.ogg', 150, 1)
+ if(!do_after(user, 25, target = A))
+ return
+
+ user.visible_message("[user] forces the airlock open with [user.p_their()] [name]!", "You force open the airlock.", "You hear a metal screeching sound.")
+ A.open(2)
+
+/obj/item/clothing/gloves/color/black/pyro_claws
+ name = "Fusion gauntlets"
+ desc = "Cybersun Industries developed these gloves after a grifter fought one of their soldiers, who attached a pyro core to an energy sword, and found it mostly effective."
+ item_state = "pyro"
+ item_color = "pyro" // I will kill washing machines one day
+ icon_state = "pyro"
+ can_be_cut = FALSE
+ actions_types = list(/datum/action/item_action/toggle)
+ var/on_cooldown = FALSE
+ var/obj/item/assembly/signaler/anomaly/pyro/core
+
+/obj/item/clothing/gloves/color/black/pyro_claws/Destroy()
+ QDEL_NULL(core)
+ return ..()
+
+/obj/item/clothing/gloves/color/black/pyro_claws/examine(mob/user)
+ . = ..()
+ if(core)
+ . += "[src] are fully operational!"
+ else
+ . += "It is missing a pyroclastic anomaly core."
+
+/obj/item/clothing/gloves/color/black/pyro_claws/ui_action_click(mob/user)
+ if(!core)
+ to_chat(user, "[src] has no core to power it!")
+ return
+ if(on_cooldown)
+ to_chat(user, "[src] is on cooldown!")
+ do_sparks(rand(1,6), 1, loc)
+ return
+ if(!user.drop_l_hand() || !user.drop_r_hand())
+ to_chat(user, "[src] are unable to deploy the blades with the items in your hands!")
+ return
+ var/obj/item/W = new /obj/item/twohanded/required/pyro_claws
+ user.visible_message("[user] deploys [W] from [user.p_their()] wrists in a shower of sparks!", "You deploy [W] from your wrists!", "You hear the shower of sparks!")
+ user.put_in_hands(W)
+ on_cooldown = TRUE
+ flags |= NODROP
+ addtimer(CALLBACK(src, .proc/reboot), 2 MINUTES)
+ do_sparks(rand(1,6), 1, loc)
+
+/obj/item/clothing/gloves/color/black/pyro_claws/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/assembly/signaler/anomaly/pyro))
+ if(core)
+ to_chat(user, "[src] already has a [I]!")
+ return
+ if(!user.drop_item())
+ to_chat(user, "[I] is stuck to your hand!")
+ return
+ to_chat(user, "You insert [I] into [src], and [src] starts to warm up.")
+ I.forceMove(src)
+ core = I
+ else
+ return ..()
+
+/obj/item/clothing/gloves/color/black/pyro_claws/proc/reboot()
+ on_cooldown = FALSE
+ flags &= ~NODROP
+ atom_say("Internal plasma canisters recharged. Gloves sufficiently cooled")
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 091e8cfdd6b..df44e0164ce 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -127,7 +127,7 @@
else
to_chat(user, "You can't reach, close it first!")
- if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/pickaxe/drill/diamonddrill) || istype(W, /obj/item/pickaxe/drill/jackhammer) || istype(W, /obj/item/melee/energy/blade))
+ if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/pickaxe/drill/diamonddrill) || istype(W, /obj/item/pickaxe/drill/jackhammer) || istype(W, /obj/item/melee/energy/blade) || istype(W, /obj/item/twohanded/required/pyro_claws))
dismantle(user, TRUE)
/obj/structure/falsewall/welder_act(mob/user, obj/item/I)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index b2b4efb1d8e..4e3ee42f466 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -66,6 +66,12 @@
refundMetal(metalUsed)
qdel(src)
+ else if(istype(W, /obj/item/twohanded/required/pyro_claws))
+ playsound(loc, W.usesound, 100, 1)
+ to_chat(user, "You melt the girder!")
+ refundMetal(metalUsed)
+ qdel(src)
+
else if(istype(W, /obj/item/stack))
if(iswallturf(loc))
to_chat(user, "There is already a wall present!")
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 2289bb13348..f7ccaa652ac 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -435,6 +435,14 @@
visible_message("[user] disintegrates [src]!","You hear the grinding of metal.")
return TRUE
+ else if(istype(I, /obj/item/twohanded/required/pyro_claws))
+ to_chat(user, "You begin to melt the wall.")
+
+ if(do_after(user, isdiamond ? 60 * I.toolspeed : 30 * I.toolspeed, target = src)) // claws has 0.5 toolspeed, so 3/1.5 seconds
+ to_chat(user, "Your [I.name] melts the reinforced plating.")
+ dismantle_wall()
+ visible_message("[user] melts [src]!","You hear the hissing of steam.")
+ return TRUE
return FALSE
/turf/simulated/wall/proc/try_wallmount(obj/item/I, mob/user, params)
diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm
index 6f59080ef50..6a8293f2d72 100644
--- a/code/game/turfs/simulated/walls_reinforced.dm
+++ b/code/game/turfs/simulated/walls_reinforced.dm
@@ -204,6 +204,12 @@
dismantle_wall()
return TRUE
+ if(istype(I, /obj/item/twohanded/required/pyro_claws))
+ to_chat(user, "You begin to melt the wall...")
+ if(do_after(user, 50 * I.toolspeed, target = src)) // claws has 0.5 toolspeed, so 2.5 seconds
+ to_chat(user, "Your [I] melt the reinforced plating.")
+ dismantle_wall()
+ return TRUE
/turf/simulated/wall/r_wall/wall_singularity_pull(current_size)
if(current_size >= STAGE_FIVE)
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 12fc8c7884f..9678aff9b22 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -260,3 +260,13 @@
materials = list(MAT_METAL = 8000, MAT_GLASS = 5000, MAT_SILVER = 500, MAT_TITANIUM = 500, MAT_PLASMA = 500)
build_path = /obj/item/grenade/barrier/dropwall
category = list("Weapons")
+
+/datum/design/pyroclaw
+ name = "Fusion gauntlets"
+ desc = "A pair of gloves designed to make superheated claws capable of cutting through almost anything. Needs a pyro anomaly core"
+ id = "pyro_gloves"
+ req_tech = list("combat" = 7, "materials" = 7, "engineering" = 7, "plasmatech" = 7)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_SILVER = 4000, MAT_TITANIUM = 4000, MAT_PLASMA = 8000)
+ build_path = /obj/item/clothing/gloves/color/black/pyro_claws
+ category = list("Weapons")
diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi
index 77c10e0b01b..6744596fc77 100644
Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 621b769c085..ce51ee78bbf 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index a8c554abec2..f4205728600 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index cfba0fe56af..108050d275d 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index fc56c446995..96879336814 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ