Jun savage fangs FE Beta
Key RequiredUniversal

Jun savage fangs FE Beta

Universal ScriptAedan_Aedan_ 4.7K views 524 executesUpdated May 2, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•379 lines (10929 chars)
local tut = game:GetService("Players").LocalPlayer
local char = tut.Character or tut.CharacterAdded:Wait()
local h = char:FindFirstChildOfClass("Humanoid")
local kanji1Data=game:HttpGet("https://raw.githubusercontent.com/softbf395/NMG-assets/main/NMGKanji1.png")

local kanji2Data=game:HttpGet("https://raw.githubusercontent.com/softbf395/NMG-assets/main/NMGKanji2.png")

local kanji3Data=game:HttpGet("https://raw.githubusercontent.com/softbf395/NMG-assets/main/NMGKanji3.png")

local kanji4Data=game:HttpGet("https://raw.githubusercontent.com/softbf395/NMG-assets/main/NMGKanji4.png")

writefile("FE/Jun/NMG/Kanji1.png", kanji1Data)
writefile("FE/Jun/NMG/Kanji2.png", kanji2Data)
writefile("FE/Jun/NMG/Kanji3.png", kanji3Data)
writefile("FE/Jun/NMG/Kanji4.png", kanji4Data)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextChatService = game:GetService("TextChatService")

local function say(message)
	if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then
		local channel = TextChatService:FindFirstChild("TextChannels") and TextChatService.TextChannels:FindFirstChild("RBXGeneral")
		if channel then
			channel:SendAsync(message)
		end
	else
		local chatEvents = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
		if chatEvents and chatEvents:FindFirstChild("SayMessageRequest") then
			chatEvents.SayMessageRequest:FireServer(message, "All")
		end
	end
end

-- Example usage:


if not h then return end
local hr=char:FindFirstChild("HumanoidRootPart")
function getCustom(filepath, url)
	if not isfile(filepath) then
		writefile(filepath, game:HttpGet(url))
	end
	return getcustomasset(filepath)
end
local run = h:FindFirstChildOfClass("Animator") or Instance.new("Animator", h)
function app(Number, numberY)
	local player = game.Players.LocalPlayer
	local character = player.Character
	local humanoidRootPart = character and character:FindFirstChild("HumanoidRootPart")

	if not humanoidRootPart then
		warn("HumanoidRootPart not found in the character.")
		return
	end

	-- Calculate the forward teleportation
	local forwardOffset = humanoidRootPart.CFrame.LookVector * Number

	-- Calculate the upward teleportation
	local upOffset = Vector3.new(0, numberY, 0)

	-- Calculate the new position
	local newPosition = humanoidRootPart.CFrame.Position + forwardOffset + upOffset

	-- Maintain the player's original horizontal orientation
	local lookAtPosition = humanoidRootPart.CFrame.Position + forwardOffset + upOffset + humanoidRootPart.CFrame.LookVector
	local newCFrame = CFrame.new(newPosition, lookAtPosition)

	humanoidRootPart.CFrame = newCFrame
end

function anim(animID, speed, time)
	local player = game.Players.LocalPlayer
	local character = player.Character
	local humanoid = character and character:FindFirstChild("Humanoid")

	if humanoid then
		local animation = Instance.new("Animation")
		animation.AnimationId = animID
		local animTrack = humanoid:LoadAnimation(animation)
		animTrack:AdjustSpeed(speed)
		animTrack:Play()
		animTrack.Looped=true
		wait(time)
		animTrack:Stop()
	else
		warn("Humanoid not found in the character.")
	end
end

-- Example of how to call the anim function:
-- anim("rbxassetid://223207191", 1)

local animations = {
	{id = "rbxassetid://220512718", stopTime = 2, speed = 1, FT={S=0.2,E=0}}, --//UR ANIM ID\\
	{id = "rbxassetid://252557606", stopTime=0.2, speed = 1, FT={S=0,E=0.2}},
	{id = "rbxassetid://74909569", stopTime = 0.25, speed = 1, FT={S=0.3,E=0.1}}, --//UR ANIM ID\\
	{id = "rbxassetid://74909569", stopTime = 0.25, speed = 1, FT={S=0.3,E=0.1}}, --//UR ANIM ID\\
	{id = "rbxassetid://74909569", stopTime = 0.5, speed = 0.5, FT={S=0.3,E=3}}, --//UR ANIM ID\\
}
function Impact(amountofflashes)
	local lighting = game:GetService("Lighting")
	local colorCorrection = Instance.new("ColorCorrectionEffect", lighting)
	colorCorrection.Name = "ImpactFlashCC"

	for i = 1, amountofflashes do
		-- Black Frame
		colorCorrection.Brightness = -1
		colorCorrection.Contrast = 0
		colorCorrection.Saturation = 0
		task.wait() -- Minimal wait

		-- White Frame (or bright/desaturated)
		colorCorrection.Brightness = 0.5
		colorCorrection.Contrast = 1
		colorCorrection.Saturation = 1
		task.wait() -- Minimal wait
	end

	-- Revert to normal
	colorCorrection.Brightness = 0
	colorCorrection.Contrast = 1
	colorCorrection.Saturation = 1

	-- Destroy the effect
	colorCorrection:Destroy()
end
local time=game.Lighting.ClockTime
function Dark()
	local lighting = game:GetService("Lighting")
	local CC = Instance.new("ColorCorrectionEffect", lighting)
	CC.Name = "ImpactFlashCC"

	
		-- Black Frame
		local ts=game:GetService("TweenService")
		local info=TweenInfo.new(0.5)
		ts:Create(CC, info, {Brightness = -0.5, Contrast=0.5}):Play()
		--ts:Create(lighting, info, {ClockTime=0}):Play()
		task.wait(0.5) -- Minimal wait

		-- White Frame (or bright/desaturated)
		ts:Create(CC, info, {Brightness = 0, Contrast=0}):Play()
		--ts:Create(lighting, info, { ClockTime=time}):Play()
		task.wait(0.5) -- Minimal wait

	-- Revert to normal
	CC.Brightness = 0
	CC.Contrast = 0
	CC.Saturation = 0

	-- Destroy the effect
	CC:Destroy()
end
local isCut=false -- is Cutscene
local cam = workspace.CurrentCamera
local camOff=Vector3.new(0,0,0) -- offsets camera position relative to humRootPart (moved back by 5 studs)
local camDirOff=Vector3.new(0,0,0) -- offset for the lookat position (looking at the HRP)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local camOffVal, camDirVal=Instance.new("CFrameValue"), Instance.new("CFrameValue")

local connect=RunService.Heartbeat:Connect(function()
camOff=camOffVal.Value.Position
camDirOff=camDirVal.Value.Position
	local localPlayer = Players.LocalPlayer
	if not localPlayer or not localPlayer.Character or not localPlayer.Character:FindFirstChild("HumanoidRootPart") then
		return -- Exit if essential player components are missing
	end
	local hrp = localPlayer.Character.HumanoidRootPart

	if isCut == false then
	game.StarterGui:SetCore("ResetButtonCallback", true)
		cam.CameraType = Enum.CameraType.Custom
		game.StarterGui:SetCoreGuiEnabled("Chat", true)
	
	else
	game.StarterGui:SetCoreGuiEnabled("Chat", false)
	
		game.StarterGui:SetCore("ResetButtonCallback", false)
		local targetPosition = hrp.CFrame * CFrame.new(camOff)
		local lookAtPosition = hrp.CFrame * CFrame.new(camDirOff)
		cam.CFrame = CFrame.new(targetPosition.Position, lookAtPosition.Position)
	end
end)
local ts=game:GetService("TweenService")
function cut(isCutscene, off, dirOff, time, waits)
	off = off or Vector3.new(0,0,0)
	dirOff=dirOff or Vector3.new(0,0,0)
	waits = waits or false
	if isCutscene==false then
		isCut=false
		return
	end
	cam.CameraType = Enum.CameraType.Scriptable
	isCut=true
	local TI=TweenInfo.new(time, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
	ts:Create(camOffVal, TI, {Value=CFrame.new(off)}):Play()
	ts:Create(camDirVal, TI, {Value=CFrame.new(dirOff)}):Play()
	if waits then
		wait(time)
	end
end
function offset(off)
	local p=Instance.new("Part")
	p.Anchored=true
	p.CanCollide=false
	p.Transparency=1
	p.CFrame=tut.Character.HumanoidRootPart.CFrame * CFrame.new(off)
	p.Parent=workspace
	return p
end
function makeGui(file, p)
	local BG=Instance.new("BillboardGui")
	local image=getcustomasset(file)
	local IL=Instance.new("ImageLabel", BG)
	IL.Image=image
	IL.BackgroundTransparency=1
	IL.Size=UDim2.new(1,0,1,0)
	BG.Size=UDim2.new(0,0,0,0)
	BG.Parent=p
	ts:Create(BG, TweenInfo.new(0.4), {Size=UDim2.new(20,0,20,0)}):Play()
	spawn(function()
		wait(0.2)
		ts:Create(IL, TweenInfo.new(0.2), {ImageTransparency=1}):Play()
		wait(0.2)
		BG:Destroy()
	end)
end
function shake(magnitude, off)
	local x,y,z = math.random(-magnitude,magnitude),math.random(-magnitude,magnitude),math.random(-magnitude,magnitude)
	cut(true, off, Vector3.new(x,y,z), 0.2)
end

-- Example usage:
-- Impact(2) -- Will create two rapid black-then-white flashes with minimal delay
local functions={
	{spawn=true, functions=function()
		wait(0.5)
		app(0, 5)
		hr.Anchored=true
		wait(0.5)
		app(1,-5)
	end},
		{spawn=true, functions=function()
		wait()
		app(30,0)
		hr.Anchored=false
	end},
			{spawn=false, functions=function()
			
			cut(true, Vector3.new(0,0,-3), Vector3.new(0,1,0), 0)
			say("No more games.")
		anim("rbxassetid://223207191", 1, 0.5)
		cut(true, Vector3.new(5,2,-3), Vector3.new(0,1,3), 0.3)
		anim("rbxassetid://126752874", 0.4, 2)
		local anm=animations[2]
		local animation = Instance.new("Animation")
		animation.AnimationId = anm.id
		local track = run:LoadAnimation(animation)
		track.Looped=true
		track:Play(anm.FT.S)
		track:AdjustSpeed(anm.speed)
		
		
		
		cut(true, Vector3.new(10,0,3), Vector3.new(0,1,0), 0)
		for i=1, 5 do
		shake(3, Vector3.new(10,0,3))
			app(0.7,0)
			wait()
		end
		app(0.7,0)
		Impact(3)
		wait()
		
		for i=1, 5 do
		shake(3, Vector3.new(10,0,3))
			app(0.7,0)
			wait()
		end
		app(0.7,0)
		Impact(3)
		wait()
		
		for i=1, 5 do
		shake(3, Vector3.new(10,0,3))
			app(0.7,0)
			wait()
		end
		app(0.7,0)
		Impact(3)
		wait()
		
		for i=1, 5 do
		shake(3, Vector3.new(10,0,3))
			app(0.7,0)
			wait()
		end
		app(0.35,0)
		Impact(3)
		wait()
		
		for i=1, 5 do
		shake(3, Vector3.new(10,0,3))
			app(0.7,0)
			wait()
		end
		app(0.7,0)
		Impact(3)
		wait()
		cut(true, Vector3.new(5,0,-3), Vector3.new(-5,1,3), 0.2)
		track:Stop(anm.FT.E)
	end},
	{spawn=true, functions=function()
		cut(true, Vector3.new(3,0,-2), Vector3.new(0,1,-2), 0, true)
		Dark()
	end},
		{spawn=true, functions=function()
		
	end},
}
functions[5]={spawn=true, functions=function() print("hi") 
wait(0.5) 
cut(false) --connect:Disconnect()
local p = offset(Vector3.new(0,0,-2))
hr.Anchored=false
for i=1,4 do
	makeGui("FE/Jun/NMG/Kanji"..i..".png",p)
wait(0.3)
end end}

local function anim()
	for i, anm in ipairs(animations) do
		local animation = Instance.new("Animation")
		animation.AnimationId = anm.id
		local track = run:LoadAnimation(animation)
		if functions[i] then
			if functions[i].spawn then
				spawn(function() functions[i].functions() end)
			else
				functions[i].functions()
			end
		end
		track.Looped=true
		track:Play(anm.FT.S)
		track:AdjustSpeed(anm.speed)
		task.wait(anm.stopTime)
		local tp=track.TimePosition
		track:AdjustSpeed(0)
		track.TimePosition=tp
		track:Stop(anm.FT.E)
		task.wait(anm.FT.E)
	end
end
local T=Instance.new("Tool")
T.RequiresHandle=false
T.Name="Savage Fangs"
function cooldown(tool, CD)
	spawn(function()
	local name=tool.Name
	tool:SetAttribute("OnCD", true)
	tool.Name="["..CD.."]"
	for i=1, CD do
		CD-=1
		tool.Name="["..CD.."]"
		wait(1)
	end
	tool.Name=name
	tool:SetAttribute("OnCD", false)
	end)
end
T.Activated:Connect(function()
	if T:GetAttribute("OnCD") == true then return end
	cooldown(T, 10)
	anim()
end)
h.Died:Connect(function() isCut=false wait() connect:Disconnect() game.StarterGui:SetCore("ResetButtonCallback", true)
end)
T.Parent=tut.Backpack

Features & Information

• has cutscene • unfinished • 4 images (so it might take a bit to run) • it’s FE!

Community Comments (2)

uncustomizableuncustomizableMay 4, 2025

nice chatgpt

Trash_scriptrTrash_scriptrMay 7, 2025

Uncostomizable 1 thing to say to you your post might be taken down because it dosent include the script and also no need to be rude

More Scripts for Universal Scripts