iron punch kills killers/players
Key RequiredUniversal

iron punch kills killers/players

Universal Scriptguihowtouseguihowtouse 1.4K views 3.5K executesUpdated Nov 28, 2025
Unrated
00
Lua Script•426 lines (11146 chars)
local mode = "Progressive" -- change for ragdoll or kill mode at script launch. You can always switch while running the script.

local punchCounts = {} -- used for progressive mode.
local healthPerHit = 15 -- also used for progressive mode.

local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local Debris = game:GetService("Debris")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
repeat task.wait() until player and player:FindFirstChild("Backpack")
local mouse = player:GetMouse()
local PhysicsService = game:GetService("PhysicsService")

local RAGDOLL_GROUP = "RagdollParts"

local tool = Instance.new("Tool")
tool.Name = "Iron Fist"
tool.CanBeDropped = false
tool.RequiresHandle = true

local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1, 1)
handle.Transparency = 1
handle.CanCollide = false
handle.Parent = tool

local fistSound = Instance.new("Sound")
fistSound.SoundId = "rbxassetid://2885006854"
fistSound.Volume = 1
fistSound.Parent = handle

local smackSound = Instance.new("Sound")
smackSound.SoundId = "rbxassetid://9117970193"
smackSound.Volume = 1
smackSound.Parent = handle

local equipSound = Instance.new("Sound")
equipSound.SoundId = "rbxassetid://6784421247"
equipSound.Parent = handle

local rscreamSound = Instance.new("Sound")
rscreamSound.SoundId = "rbxassetid://6108565657"
rscreamSound.Parent = handle

local kscreamSound = Instance.new("Sound")
kscreamSound.SoundId = "rbxassetid://7772283448"
kscreamSound.Parent = handle

-- BONE SOUNDS

local boneSound1 = Instance.new("Sound")
boneSound1.SoundId = "rbxassetid://9113544629"
boneSound1.Volume = 1
boneSound1.Parent = handle

local boneSound2 = Instance.new("Sound")
boneSound2.SoundId = "rbxassetid://7837512412"
boneSound2.Volume = 1
boneSound2.Parent = handle

local boneSound3 = Instance.new("Sound")
boneSound3.SoundId = "rbxassetid://82176913611683"
boneSound3.Volume = 1
boneSound3.Parent = handle

StarterGui:SetCore("SendNotification", {
	Title = "FE Punch",
	Text = "by minishakk. Tortures NPCs. Controls: E, R, F",
	Icon = "rbxassetid://16952938318"
})

pcall(function()
	if not PhysicsService:CollisionGroupExists(RAGDOLL_GROUP) then
		PhysicsService:CreateCollisionGroup(RAGDOLL_GROUP)
	end
	PhysicsService:CollisionGroupSetCollidable(RAGDOLL_GROUP, RAGDOLL_GROUP, true)
end)

local function ragdoll(character)
	local motors = {}

	for _, motor in ipairs(character:GetDescendants()) do
		if motor:IsA("Motor6D") then
			local part0, part1 = motor.Part0, motor.Part1
			if part0 and part1 then
				table.insert(motors, {
					Name = motor.Name,
					Parent = motor.Parent,
					Part0 = part0,
					Part1 = part1,
					C0 = motor.C0,
					C1 = motor.C1,
				})

				local a0 = Instance.new("Attachment")
				a0.CFrame = motor.C0
				a0.Name = "RagdollAttachment0"
				a0.Parent = part0

				local a1 = Instance.new("Attachment")
				a1.CFrame = motor.C1
				a1.Name = "RagdollAttachment1"
				a1.Parent = part1

				local constraint = Instance.new("BallSocketConstraint")
				constraint.Attachment0 = a0
				constraint.Attachment1 = a1
				constraint.Name = "RagdollConstraint"
				constraint.Parent = part0
			end
			motor:Destroy()
		end
	end

	for _, part in ipairs(character:GetDescendants()) do
		if part:IsA("BasePart") then
			part.CanCollide = true
			part.CollisionGroup = RAGDOLL_GROUP
		end
	end

	local root = character:FindFirstChild("HumanoidRootPart")
	if root then
		local force = Instance.new("BodyVelocity")
		force.Velocity = root.CFrame.LookVector * 50
		force.MaxForce = Vector3.new(1e5, 0, 1e5)
		force.P = 1e4
		force.Parent = root
		Debris:AddItem(force, 0.5)
	end

	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if humanoid then
		humanoid.PlatformStand = false
		humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)
	end

	task.wait(3)

	for _, desc in ipairs(character:GetDescendants()) do
		if desc:IsA("BallSocketConstraint") and desc.Name == "RagdollConstraint" then
			desc:Destroy()
		elseif desc:IsA("Attachment") and (desc.Name == "RagdollAttachment0" or desc.Name == "RagdollAttachment1") then
			desc:Destroy()
		end
	end

	for _, data in ipairs(motors) do
		local m = Instance.new("Motor6D")
		m.Name = data.Name
		m.Part0 = data.Part0
		m.Part1 = data.Part1
		m.C0 = data.C0
		m.C1 = data.C1
		m.Parent = data.Parent

		data.Part0.CollisionGroup = "Default"
		data.Part1.CollisionGroup = "Default"

		data.Part0.CanCollide = false
		data.Part1.CanCollide = false
	end

	if humanoid then
		humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
	end
end

local function bleed(position)
	local dir = Vector3.new(
		math.random(-100, 100) / 100,
		math.random(-100, 100) / 100,
		math.random(-100, 100) / 100
	).Unit

	local part = Instance.new("Part")
	part.Size = Vector3.new(1, 1, 1)
	part.Anchored = true
	part.CanCollide = false
	part.Transparency = 1
	part.CFrame = CFrame.new(position, position + dir)
	part.Parent = workspace

	local emitter = Instance.new("ParticleEmitter")
	emitter.Texture = "rbxassetid://12532663797"
	emitter.Rate = 0
	emitter.Lifetime = NumberRange.new(0.3, 0.5)
	emitter.Speed = NumberRange.new(10, 10)
	emitter.VelocitySpread = 0
	emitter.Color = ColorSequence.new(Color3.new(0.6, 0, 0))
	emitter.EmissionDirection = Enum.NormalId.Front
	emitter.Acceleration = Vector3.new(0, -20, 0)
	emitter.Parent = part

	emitter:Emit(1)
	Debris:AddItem(part, 2)
end

local function flash()
	local gui = Instance.new("ScreenGui")
	gui.IgnoreGuiInset = true
	gui.ResetOnSpawn = false
	gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	gui.Parent = player:WaitForChild("PlayerGui")

	local frame = Instance.new("Frame")
	frame.BackgroundColor3 = Color3.new(0.545098, 0.231373, 0.235294)
	frame.Size = UDim2.new(1, 0, 1, 0)
	frame.BackgroundTransparency = 1
	frame.Parent = gui

	local tween = TweenService:Create(frame, TweenInfo.new(0.1), {BackgroundTransparency = 0.5})
	tween:Play()
	tween.Completed:Wait()

	local outTween = TweenService:Create(frame, TweenInfo.new(0.2), {BackgroundTransparency = 1})
	outTween:Play()
	outTween.Completed:Wait()

	gui:Destroy()
end

local function shake()
	local cam = workspace.CurrentCamera
	if not cam then return end

	local originalCFrame = cam.CFrame
	local originalCameraType = cam.CameraType
	
	cam.CameraType = Enum.CameraType.Scriptable

	local shakes = 6
	local magnitude = 5

	for i = 1, shakes do
		local offset = Vector3.new(
			math.random(-100, 100) / 1000,
			math.random(-100, 100) / 1000,
			math.random(-100, 100) / 1000
		) * magnitude

		cam.CFrame = originalCFrame * CFrame.new(offset)
		task.wait(0.01)
	end

	cam.CFrame = originalCFrame
	cam.CameraType = originalCameraType
end

local punching = false
local function animations()
	if punching then return end
	punching = true

	local character = player.Character
	if character then
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		if humanoid then
			local animator = humanoid:FindFirstChildOfClass("Animator") or Instance.new("Animator", humanoid)
			local animation = Instance.new("Animation")
			animation.AnimationId = "rbxassetid://10717116749"
			local track = animator:LoadAnimation(animation)
			track.Priority = Enum.AnimationPriority.Action
			track.Looped = false
			track:Play()
			track.Stopped:Connect(function()
				punching = false
			end)
		else
			punching = false
		end
	else
		punching = false
	end
end

local function audio(targetCharacter)
	fistSound:Play()
	task.wait(0.5)

	local boneSounds = {boneSound1, boneSound2, boneSound3}

	for i = 1, 3 do
		if i <= 2 then
			smackSound:Play()
		end
		boneSounds[i]:Play()

		flash()
		task.spawn(shake)

		if targetCharacter then
			local torso = targetCharacter:FindFirstChild("UpperTorso") or targetCharacter:FindFirstChild("Torso")
			if torso then
				bleed(torso.Position + Vector3.new(
					math.random(-100, 100) / 100,
					math.random(-100, 100) / 100,
					math.random(-100, 100) / 100
				))
			end
		end

		task.wait(0.3)
	end
end

local function gotoNPC(target)
	local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
	if not root then return end

	local head = target:FindFirstAncestorWhichIsA("Model"):FindFirstChild("Head")
	if not head then return end

	local look = head.CFrame.LookVector
	local offset = look * -2
	local newPos = head.Position + offset
	root.CFrame = CFrame.new(newPos, head.Position)
end

local function punch(target)
	local character = target:FindFirstAncestorOfClass("Model")
	if character and character ~= player.Character then
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		local head = character:FindFirstChild("Head")
		if humanoid and head then
			gotoNPC(target)
			animations()
			task.spawn(function() audio(character) end)

			task.wait(2)
			if humanoid and humanoid.Health > 0 then
				if mode == "Kill" then
					humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)

					local root = character:FindFirstChild("HumanoidRootPart")
					if root then
						local force = Instance.new("BodyVelocity")
						force.Velocity = root.CFrame.LookVector * 50
						force.MaxForce = Vector3.new(1e5, 0, 1e5)
						force.P = 1e4
						force.Parent = root
						Debris:AddItem(force, 0.5)
					end
					
					kscreamSound:Play()
					humanoid.Health = 0
				elseif mode == "Ragdoll" then
					rscreamSound:Play()
					ragdoll(character)
				elseif mode == "Progressive" then
					local id = character
					punchCounts[id] = (punchCounts[id] or 0) + 1

					if punchCounts[id] < 3 then
						local newHealth = math.max(humanoid.Health - healthPerHit, 1)
						
						rscreamSound:Play()
						humanoid.Health = newHealth
						ragdoll(character)
					else
						humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)

						local root = character:FindFirstChild("HumanoidRootPart")
						if root then
							local force = Instance.new("BodyVelocity")
							force.Velocity = root.CFrame.LookVector * 50
							force.MaxForce = Vector3.new(1e5, 0, 1e5)
							force.P = 1e4
							force.Parent = root
							Debris:AddItem(force, 0.5)
						end

						kscreamSound:Play()
						humanoid.Health = 0
						punchCounts[id] = nil
					end
				end
			end
		end
	end
end

tool.Equipped:Connect(function()
	equipSound:Play()
end)

tool.Activated:Connect(function()
	if punching then return end

	local target = mouse.Target
	if target and target.Parent then
		punch(target)
	end
end)

mouse.KeyDown:Connect(function(key)
	if key == "r" then
		mode = "Ragdoll"
		StarterGui:SetCore("SendNotification", {
			Title = "FE Punch",
			Text = "Ragdoll mode enabled.",
			Icon = "rbxassetid://16142074920",
			Duration = 2
		})
	elseif key == "e" then
		mode = "Kill"
		StarterGui:SetCore("SendNotification", {
			Title = "FE Punch",
			Text = "Kill mode enabled.",
			Icon = "rbxassetid://9583486345",
			Duration = 2
		})
	elseif key == "f" then
		mode = "Progressive"
		StarterGui:SetCore("SendNotification", {
			Title = "FE Punch",
			Text = "Progressive mode enabled.",
			Icon = "rbxassetid://74033962087144",
			Duration = 2
		})
	end
end)

tool.Parent = player.Backpack -- gives you the power ;)

Features & Information

game support: https://www.roblox.com/games/132448451193552/Survival-the-Kpop-Demon-Hunters https://www.roblox.com/games/8657590752/Survival-Jenna-The-Killer to kill touch an NPC at button E

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts