local tw = game:GetService("TweenService")
local assets = game:GetService("ReplicatedStorage"):FindFirstChild("OniAssets")
if not assets then
assets = require(133834781574064):Clone()
assets.Name = "OniAssets"
assets.Parent = game:GetService("ReplicatedStorage")
end
local debug = false
local no_cd = false
local cool_guy = true
local rnd = Random.new()
local char = owner.Character
local hum: Humanoid = char.Humanoid
hum.WalkSpeed = 30
hum.MaxHealth = 15000
hum.Health = 15000
char:SetAttribute("OWS", hum.WalkSpeed)
char:SetAttribute("OJH", hum.JumpHeight)
local AnimationTrack = require(assets:WaitForChild("AnimationTrack"))
local re = Instance.new("RemoteEvent")
re.Name = "OniEvent"
re.Parent = owner.Character
local client = assets.Scripts.Client:Clone()
client.Parent = re
-- // tables
local downs = {}
local guids = {}
local buttons = {}
local dbs = {
FlameActive = false
}
local order = {
"Augimas",
"RushAttack",
"LegBreaker",
"RisingDragon",
"AxeKick",
"Misogi",
"RagingDemon",
"ConsumingFlames",
"DemonStep",
"DemonFlip",
"Pose"
}
local moves = {
Augimas = {"q", "Augimas"},
RushAttack = {"m1", "Rush Attack"},
LegBreaker = {"e", "Leg Breaker"},
RisingDragon = {"r", "Rising Dragon"},
AxeKick = {"t", "Axe Kick"},
Misogi = {"y", "Misogi"},
RagingDemon = {"g", "Raging Demon"},
ConsumingFlames = {"h", "Consuming Flames"},
DemonStep = {"v", "Demon Step"},
DemonFlip = {"b", "Demon Flip"},
Pose = {"p", "Pose"}
}
local cds = {
Pose = .5,
Misogi = 0,
Augimas = 0,
AxeKick = 0,
DemonFlip = 0,
RushCount = 0,
DemonStep = 0,
LegBreaker = 0,
RushAttack = 0,
RushFinish = 2,
RagingDemon = 0,
RisingDragon = 0,
ConsumingFlames = 0
}
local stats = {
RushAttack = {
Stun = .5,
Damage = 8,
Sound = "Light",
HitEffect = "Light",
Knockback = {5, .05}
},
RushFinish = {
Stun = .8,
Damage = 21,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {75, .25}
},
Augimas = {
Stun = 2,
Ragdoll = 2,
Damage = 20,
Sound = "Heavy"
},
LegBreaker = {
Stun = 1,
Ragdoll = 1,
Damage = 15,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {10, .1}
},
RisingDragon1 = {
Stun = .5,
Damage = 5,
Ragdoll = .5,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {2, .15, Vector3.yAxis * 25}
},
RisingDragon2 = {
Stun = 1,
Damage = 15,
Ragdoll = 1,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {2, .15, Vector3.yAxis * 100}
},
AxeKick = {
Stun = 1.5,
Ragdoll = 1,
Damage = 35,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {60, .15, Vector3.yAxis * 25}
},
Misogi = {
Stun = 1,
Damage = 20,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {1, .1, Vector3.yAxis * -30}
},
DemonFlip = {
Stun = 2,
Damage = 20,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {25, .15}
},
RagingDemon = {
Damage = 1.5,
DoNotKill = true,
HitEffect = "Light"
},
RagingDemonFinish = {
Stun = 3,
Damage = 31,
Ragdoll = 2,
HitEffect = "Heavy",
Knockback = {100, .1}
},
ConsumingFlames = {
Stun = 3,
Ragdoll = 3,
Damage = 60,
Sound = "Heavy",
HitEffect = "Heavy",
Knockback = {50, .15, Vector3.yAxis * 75}
}
}
local taunts = {
{
"Both heaven and earth TREMBLE before my might!", "Taunt1",
Timings = {
["Both heaven and earth "] = {.8, false}
}
},
{
"This is... oblivion.", "Taunt2",
Timings = {
["This is... "] = {.8, false}
}
},
{
"Let me show you a TRUE blow!", "Taunt3"
},
{
"Do demons frighten you?", "Taunt4"
},
}
local kill_txts = {
"Dead. Not big surprise.",
"Retired!",
"Arigato, loser.",
"Top ten saddest attempts at anything ever",
"Consider rokaing",
"Outplayed!",
"Failure!",
"Oh come on, quit already!"
}
local over_txts = {
"less gooo",
"universal!",
"outstanding!",
"amazing!",
"incredible!",
"can you beat goku though?",
"skill issue",
"we do a little trolling",
"absolute legend",
"vec would be proud",
"mad?",
"It's skittles friday!",
"Who's Joe?",
"Style points!",
"You're suppose to dodge that.",
"FIGHT BACK!",
"FIGHT BACK COME ON!",
"Ah-Ah-Ah! It's - Your'oe.",
"Doyjaainnnn!",
"THAT'S A BIT...SUSPICIOUS",
"Ok and?",
"ONI COMBO",
"GET HIM HE RKER!@#$!#",
"YOOOOOOOOO!",
"SWAG!",
"Exaggerated Swagger of a Stand user!",
"Next time i'll hit you with the- E+R+T+V+Y+LMB+LMB+LMB+F+H+U+E+R+F+LMB+LMB+LMB+LMB combo for sure!",
"Hmmmm, nice!",
"Do better!",
"When Update?",
"Smells like stand issue",
"IS THAT A JOJO REFERENCE?",
"Di Molto!",
"Come back when you're a little richer",
"MUDA!",
"ORA!",
"HORA!",
"You appear to have been dunked on.",
"This is the results.",
"CHILL!",
"Menacingゴ",
"insert a quote",
"WOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Nice",
"LET'S GO",
"Get them!",
"a little more!",
"HUNT THEM DOWN",
"THEY WERE TWO STEPS LATE",
"either you or them!",
"you ticked them off.",
"DAMN",
"skilful",
"H",
"m1 m1 m1 m1",
"epic!"
}
local heat = Instance.new("IntValue")
heat.Value = 1000
-- // back kanji
local kanji = assets.Kanji:Clone()
kanji.Parent = char
kanji.Weld.Part0 = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso")
-- // ui stuff
local ui = assets.UI:Clone()
ui.Quotes.Visible = false
ui.Parent = owner.PlayerGui
ui.Character.Info.Label.Text = owner.DisplayName
ui.Character.Health.Container.Bar.Recovery.Visible = false
ui.Character.Meter.Text.Label.Font = Enum.Font.ArimoBold
local vp = Instance.new("ViewportFrame", ui.Character.Icon.Icon)
vp.ZIndex = 4
vp.BackgroundTransparency = 1
vp.Size = UDim2.fromScale(1, 1)
local wm = Instance.new("WorldModel", vp)
local fake = game:GetService("Players"):CreateHumanoidModelFromUserId(owner.CharacterAppearanceId)
fake.Parent = wm
for _, v in pairs(fake:GetDescendants()) do
if v:IsA("BasePart") then
if v:FindFirstAncestorOfClass("Accessory") then
local at = v:FindFirstChildOfClass("Attachment")
v.CFrame = at.WorldCFrame * at.CFrame:Inverse()
end
v.Anchored = true
end
end
local cam = Instance.new("Camera")
cam.CFrame = fake.Head.CFrame * CFrame.new(0, 0, -3) * CFrame.Angles(0, math.pi, 0)
vp.CurrentCamera = cam
Instance.new("UICorner", vp).CornerRadius = UDim.new(1, 0)
-- // https://devforum.roblox.com/t/the-ultimate-guide-to-custom-loadinghealth-bars/1323459 - op post
local function hp_change(h)
ui.Character.Health.Text.Value.Text = tostring(math.floor(h))
local scale = math.max(h / hum.MaxHealth, 0)
local main = ui.Character.Health.Container.Bar.Main
tw:Create(main, TweenInfo.new(1), {Size = UDim2.fromScale(scale, 1)}):Play()
tw:Create(main.ImageLabel, TweenInfo.new(1), {Size = UDim2.fromScale((scale > 0 and (1 / scale) or 0), 1)}):Play()
end
hp_change(hum.Health)
hum.HealthChanged:Connect(hp_change)
for _, move in ipairs(order) do
local v = moves[move]
local button = ui.Moves.Assets.Button:Clone()
button.Name = v[2]
button.Visible = true
button.Label.Text = v[2]
button.Parent = ui.Moves
button.Key.Text = string.upper(v[1])
button.Label.TextScaled = not button.Label.TextFits
button.Key.TextScaled = (#(v[1]) > 1 and true or false)
v[3] = button
buttons[v[1]] = button
button.MouseButton1Down:Connect(function()
downs[v[1]] = true
re:FireClient(owner, "DoMove", move)
end)
button.MouseButton1Up:Connect(function()
downs[v[1]] = false
end)
end
for i, taunt in ipairs(taunts) do
local button = ui.Quotes.Assets.Button:Clone()
button.Visible = true
button.Name = taunt[1]
button.Parent = ui.Quotes
button.Label.Text = taunt[1]
button.Key.Text = tostring(i)
button.MouseButton1Down:Connect(function()
re:FireClient(owner, "DoMove", `Taunt{i}`)
end)
end
local menu_click = Instance.new("Sound", ui)
menu_click.Name = "MenuClick"
menu_click.SoundId = "rbxassetid://537744814"
-- // animation stuff
local function load(i)
local cache = _G.animation_cache
if not cache then
cache = {}
_G.animation_cache = cache
end
if not cache[i] then
cache[i] = require(i)
end
return cache[i]
end
local anims = {
Run = {0, true},
Idle = {2, true},
Jump = {0, true},
LMB1 = {4, false},
LMB2 = {4, false},
LMB3 = {4, false},
LMB4 = {4, false},
Misogi = {4, false},
Augimas = {4, false},
AxeKick = {4, false},
PoseLoop = {4, true},
PoseStart = {4, false},
DemonStep = {4, false},
DemonFlip = {4, false},
LegBreaker = {4, false},
RisingDragon = {4, false},
ConsumingFlames = {4, false},
RagingDemonUser = {4, false},
RagingDemonStart = {4, false},
}
local dir = assets.Animations:FindFirstChild(hum.RigType.Name)
for i, v in pairs(anims) do
local module = load(dir:FindFirstChild(i))
local anim = AnimationTrack.new()
anim.Looped = v[2]
anim:AdjustWeight(v[1])
anim:setAnimation(module)
anim:setRig(owner.Character)
anims[i] = anim
end
anims.Run:Play()
anims.Idle:Play()
anims.Jump:Play()
anims.Run.lerpFactor = .25
anims.Idle.lerpFactor = .2
anims.Jump.lerpFactor = .25
local demon_r6 = load(assets.Animations.R6.RagingDemonVictim)
local demon_r15 = load(assets.Animations.R15.RagingDemonVictim)
-- // sound stuff
local sounds = {
LMB1 = {2, 7.263, 7.508},
LMB2 = {2, 8.037, 8.439},
LMB3 = {2, 8.955, 9.343},
LMB4 = {2, 9.894, 10.557},
Light = {2, 4.725, 5.235},
Heavy = {2, 5.765, 6.666}, -- // spooky
AugimasSFX = {2, 11.1, 12.215},
AugimasVFX = {2, 12.688, 13.41},
LegBreakerSFX = {.5, 13.96, 15.48},
LegBreakerVFX = {2, 16.055, 16.565},
RisingDragonSFX = {.5, 17.092, 19.296},
AxeKickSFX = {2, 21.2, 23.5},
AxeKickVFX = {2, 24.032, 25.478},
MisogiVFX = {2, 29.947, 31.212},
MisogiSFX = {2, 26.038, 27.455},
MisogiATK = {2, 27.981, 29.338},
RagingDemonSFX = {2, 42.017, 43.912},
RagingDemonVFX = {2, 54.517, 55.184},
RagingDemonCutsceneSFX = {2, 44.626, 53.813},
RagingDemonCutsceneVFX = {2, 55.754, 63.638},
ConsumingFlamesSFX = {2, 34.979, 38.404},
ConsumingFlamesVFX = {2, 39.406, 41.468},
DemonStep = {2, 75.9, 76.73},
DemonFlipSFX = {2, 31.821, 33.163},
DemonFlipVFX = {2, 33.704, 34.455},
-- // spooky x2
Taunt1 = {6, 77.252, 80.612},
Taunt2 = {6, 81.143, 83.468},
Taunt3 = {6, 83.954, 85.748},
Taunt4 = {6, 86.258, 87.545},
MeterUp1 = {3, 88.066, 90.188},
MeterUp2 = {3, 90.724, 93.385},
MeterUp3 = {3, 93.951, 96.321}
}
local preload = {}
local base = Instance.new("Sound")
base.PlaybackRegionsEnabled = true
base.SoundId = "rbxassetid://18223229234"
table.insert(preload, base)
for i, v in sounds do
local snd = base:Clone()
snd.Name = i
snd.Volume = v[1]
snd.RollOffMaxDistance = 300
snd.PlaybackRegionsEnabled = true
snd.PlaybackRegion = NumberRange.new(v[2], v[3])
table.insert(preload, snd)
sounds[i] = snd
end
local theme = Instance.new("Sound", hum.RootPart)
theme.Volume = .3
theme.Name = "Theme"
theme.Looped = true
theme.RollOffMaxDistance = 300
theme.SoundId = "rbxassetid://1837843587"
table.insert(preload, theme)
local snd = Instance.new("Sound")
snd.Volume = 10
snd.Name = "PoseSFX"
snd.RollOffMaxDistance = 300
snd.SoundId = "rbxassetid://18233466600"
sounds.PoseSFX = snd
table.insert(preload, snd)
local snd = Instance.new("Sound")
snd.Volume = 1
snd.Name = "PoseSFX2"
snd.RollOffMaxDistance = 300
snd.SoundId = "rbxassetid://6550121325"
sounds.PoseSFX2 = snd
table.insert(preload, snd)
local snd = Instance.new("Sound")
snd.Volume = 3
snd.Name = "PoseVFX"
snd.RollOffMaxDistance = 300
snd.SoundId = "rbxassetid://18233485622"
sounds.PoseVFX = snd
table.insert(preload, snd)
local snd = Instance.new("Sound")
snd.Volume = 2
snd.Name = "RisingDragonVFX"
snd.RollOffMaxDistance = 300
snd.SoundId = "rbxassetid://18232696940"
sounds.RisingDragonVFX = snd
table.insert(preload, snd)
game:GetService("ContentProvider"):PreloadAsync(preload)
-- // functions
local function change(ws, jh)
hum.WalkSpeed = ws or char:GetAttribute("OWS")
hum.JumpHeight = jh or char:GetAttribute("OJH")
end
local function nn(mn, mx, int)
if int then
return rnd:NextInteger(mn, mx)
else
return rnd:NextNumber(mn, mx)
end
end
local function findhum(p)
local mdl = p:FindFirstAncestorOfClass("Model")
if mdl then
return mdl:FindFirstChildOfClass("Humanoid")
end
end
local function find_limb(n)
if n == "Right Arm" then
return char:FindFirstChild(n) or char:FindFirstChild("RightLowerArm")
elseif n == "Left Arm" then
return char:FindFirstChild(n) or char:FindFirstChild("LeftLowerArm")
elseif n == "Right Leg" then
return char:FindFirstChild(n) or char:FindFirstChild("RightLowerLeg")
elseif n == "Left Leg" then
return char:FindFirstChild(n) or char:FindFirstChild("LeftLowerLeg")
elseif n == "Torso" then
return char:FindFirstChild(n) or char:FindFirstChild("LowerTorso")
end
return char:FindFirstChild(n)
end
local function get_hums(pos, rad)
local hums = {}
local gotten = {}
for _, v in pairs(workspace:GetPartBoundsInRadius(pos, rad)) do
local hum = findhum(v)
if hum and not gotten[hum] then
gotten[hum] = true
table.insert(hums, hum:FindFirstAncestorOfClass("Model"))
end
end
return hums
end
local function hb(pt, cf, size, type, bl)
local params = OverlapParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {char, script, bl}
if debug then
local p = Instance.new("Part", workspace)
p.Size = size
p.Anchored = true
p.CastShadow = false
p.CanCollide = false
p.CFrame = pt.CFrame * cf
p.Material = "ForceField"
p.Color = Color3.new(1, 0, 0)
if type == "Magnitude" then
p.Shape = "Ball"
end
coroutine.wrap(function()
task.wait(.5)
p:Destroy()
end)()
end
local victims = {}
local tbl
if type == "Magnitude" then
tbl = workspace:GetPartBoundsInRadius(pt.CFrame.Position, size.X / 2, params)
else
tbl = workspace:GetPartBoundsInBox(pt.CFrame * cf, size, params)
end
for _, hit in pairs(tbl) do
local hum = findhum(hit)
if hum and hum.RootPart then -- // and hum.Health > 0 then
if not table.find(victims, hit:FindFirstAncestorOfClass("Model")) then
table.insert(victims, hit:FindFirstAncestorOfClass("Model"))
end
end
end
table.sort(victims, function(a, b)
return (hum.RootPart.Position - a.HumanoidRootPart.Position).Magnitude < (hum.RootPart.Position - b.HumanoidRootPart.Position).Magnitude
end)
return victims
end
local function dmgui(mdl, dmg)
if mdl:GetAttribute("DeadNotBigSurprise") then
return
end
local ui = mdl:FindFirstChild("DamageGUI")
if not ui then
ui = assets.DamageGUI:Clone()
ui.Parent = mdl
end
local tb = ui.BBG.TextBox
local ogdmg = tonumber(tb.Text) or 0
ogdmg += dmg
local txt
if math.floor(ogdmg) == ogdmg then
txt = tostring(ogdmg)
else
txt = string.format("%.1f", tostring(ogdmg))
end
if ogdmg > 100 then
tb.Text = over_txts[rnd:NextInteger(1, #(over_txts))]
ui.Name = "DisabledDamageGUI"
elseif mdl:FindFirstChildWhichIsA("Humanoid", true).Health <= 0 then
tb.Text = kill_txts[rnd:NextInteger(1, #(kill_txts))]
ui.Name = "DisabledDamageGUI"
mdl:SetAttribute("DeadNotBigSurprise", true)
else
tb.Text = txt
end
ui.BBG.Size = UDim2.new(10, 0, 2, 0)
tb.TextTransparency = 0
tb.TextStrokeTransparency = 0
local hrp = mdl:FindFirstChild("Torso") or mdl:FindFirstChild("UpperTorso") or mdl:FindFirstChild("HumanoidRootPart")
ui.CFrame = hrp.CFrame * CFrame.new(nn(-1, 1), nn(-1, 1), nn(-1, 1))
local inf1 = TweenInfo.new(.5, Enum.EasingStyle.Cubic,Enum.EasingDirection.Out)
local inf2 = TweenInfo.new(3, Enum.EasingStyle.Quint, Enum.EasingDirection.In)
tw:Create(ui.BBG, inf1, {Size = UDim2.fromScale(5, 1)}):Play()
tw:Create(tb, inf1, {Rotation = nn(-15, 15)}):Play()
tw:Create(ui, inf2, {CFrame = ui.CFrame * CFrame.new(0, -4, 0)}):Play()
tw:Create(tb, inf2, {TextTransparency = 1, TextStrokeTransparency = 1}):Play()
coroutine.wrap(function()
repeat
task.wait()
until tb.TextTransparency >= .99
ui:Destroy()
end)()
end
local function healui(mdl, dmg)
local ui = mdl:FindFirstChild("HealGUI")
if not ui then
ui = assets.HealGUI:Clone()
ui.Parent = mdl
end
local tb = ui.BBG.TextBox
local ogdmg = tonumber(tb.Text) or 0
ogdmg += dmg
local txt
if math.floor(ogdmg) == ogdmg then
txt = tostring(ogdmg)
else
txt = string.format("%.1f", tostring(ogdmg))
end
tb.Text = txt
ui.BBG.Size = UDim2.fromScale(10, 2)
tb.TextTransparency = 0
tb.TextStrokeTransparency = 0
local hrp = mdl:FindFirstChild("Torso") or mdl:FindFirstChild("UpperTorso") or mdl:FindFirstChild("HumanoidRootPart")
ui.CFrame = hrp.CFrame * CFrame.new(nn(-1, 1), nn(-1, 1), nn(-1, 1))
local inf1 = TweenInfo.new(.5, Enum.EasingStyle.Cubic,Enum.EasingDirection.Out)
local inf2 = TweenInfo.new(3, Enum.EasingStyle.Quint, Enum.EasingDirection.In)
tw:Create(ui.BBG, inf1, {Size = UDim2.fromScale(5, 1)}):Play()
tw:Create(tb, inf1, {Rotation = nn(-15, 15)}):Play()
tw:Create(ui, inf2, {CFrame = ui.CFrame * CFrame.new(0, -4, 0)}):Play()
tw:Create(tb, inf2, {TextTransparency = 1, TextStrokeTransparency = 1}):Play()
coroutine.wrap(function()
repeat
task.wait()
until tb.TextTransparency >= .99
ui:Destroy()
end)()
end
local function scale_pe(pe, scale)
local old = pe.Parent
local mdl = Instance.new("Model")
pe.Parent = mdl
mdl:ScaleTo(scale)
pe.Parent = old
--[[
local keypoints = {}
for _, v in pe.Size.Keypoints do
table.insert(keypoints, NumberSequenceKeypoint.new(v.Time, v.Value * scale))
end
table.sort(keypoints, function(a, b)
return a.Time < b.Time
end)
pe.Size = NumberSequence.new(keypoints)
]]
end
local function create_fx(t, victim, ep, scale)
if typeof(ep) ~= "CFrame" then
ep = ep or victim.HumanoidRootPart
else
local oep = ep
ep = Instance.new("Part", workspace)
ep.Anchored = true
ep.Transparency = 1
ep.CanCollide = false
ep.CanQuery = false
ep.CanTouch = false
ep.CFrame = oep
task.delay(3, ep.Destroy, ep)
end
if not t then
return
end
local effect = assets.Particles:FindFirstChild(t)
local true_ver = assets.Particles.TrueOni:FindFirstChild(t)
if true_ver and cool_guy and t ~= "AxeKick" and t ~= "ConsumingFlame" then
effect = true_ver
end
local fx = effect:Clone()
fx.Parent = ep
fx.CanCollide = false
fx.CanQuery = false
fx.CanTouch = false
fx.Size *= (scale or 1)
fx.CFrame = CFrame.new(ep.Position, hum.RootPart.Position)
if t ~= "Light" and t ~= "Heavy" then
fx.CFrame = ep.CFrame
end
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
v.Enabled = false
if scale then
scale_pe(v, scale)
end
task.delay(v:GetAttribute("EmitDelay") or 0, v.Emit, v, v:GetAttribute("EmitCount"))
elseif v:IsA("Attachment") and scale then
v.Position *= scale
end
end
task.delay(5, fx.Destroy, fx)
return fx
end
local function play(what, p, scf)
if sounds[what] then
local snd = sounds[what]:Clone()
snd.Name = what
snd.Parent = p or hum.RootPart
local pt
if scf ~= nil then
pt = Instance.new("Part", workspace)
pt.CFrame = scf
pt.CanCollide = false
pt.CanQuery = false
pt.CanTouch = false
pt.Anchored = true
pt.Transparency = 1
pt.Size = Vector3.one
snd.Parent = pt
end
snd:Play()
snd.Ended:Once(function()
task.wait(.1)
snd:Destroy()
if pt then
pt:Destroy()
end
end)
return snd
end
end
local stuns = {}
local function stun(hum, t)
if t == 0 or nil then
return
end
coroutine.wrap(function()
local mdl = hum:FindFirstAncestorOfClass("Model")
local sc = mdl:GetAttribute("StunCounter") or 0
mdl:SetAttribute("StunCounter", sc + 1)
local ows = hum:GetAttribute("OWS") or hum.WalkSpeed
hum:SetAttribute("OWS", ows)
hum.WalkSpeed = .5
mdl:SetAttribute("Stunned", true)
if not mdl:FindFirstChild("StunGUI") then
local ui = assets.DamageGUI.BBG:Clone()
ui.Name = "StunGUI"
ui.Parent = mdl
ui.TextBox.Text = "STUNNED"
ui.ClipsDescendants = false
ui.Size = UDim2.fromScale(3, 1.5)
ui.StudsOffset = Vector3.new(0, 3, 0)
ui.Adornee = mdl:FindFirstChild("Torso") or mdl:FindFirstChild("UpperTorso") or mdl:FindFirstChild("HumanoidRootPart")
end
coroutine.wrap(function()
if not stuns[hum] then
stuns[hum] = mdl.DescendantAdded:Connect(function() -- // game:GetService("RunService").PostSimulation:Connect(function()
hum:UnequipTools()
end)
end
end)()
task.wait(t)
if mdl:GetAttribute("StunCounter") ~= sc + 1 then
return
end
mdl:SetAttribute("StunCounter", 0)
if mdl:FindFirstChild("StunGUI") then
mdl.StunGUI:Destroy()
end
mdl:SetAttribute("Stunned", false)
hum.WalkSpeed = ows
if stuns[hum] then
stuns[hum]:Disconnect()
stuns[hum] = nil
end
end)()
end
local function find_ground(pos, bl)
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {char, script, bl}
local result = workspace:Raycast(pos, Vector3.yAxis * -100, params)
if result then
return result.Position
end
end
local function ragdoll(c, t)
local ps = game:GetService("PhysicsService")
if not ps:IsCollisionGroupRegistered("Players") then
ps:RegisterCollisionGroup("Players")
end
if not ps:IsCollisionGroupRegistered("Collider") then
ps:RegisterCollisionGroup("Collider")
end
ps:CollisionGroupSetCollidable("Players", "Collider", false)
local hum = c:FindFirstChildOfClass("Humanoid")
local hrp = c:FindFirstChild("HumanoidRootPart") or c:FindFirstChild("Torso")
if not hrp then
return
end
local cs = Instance.new("Folder", c)
cs.Name = "ColliderFolder"
local old = hum.RequiresNeck
hum.PlatformStand = true
hum.RequiresNeck = false
hum.BreakJointsOnDeath = false
for _, v in pairs(c:GetDescendants()) do
if (v:IsA("Motor6D") or v:IsA("Motor")) and v.Name ~= "RootJoint" and v.Name ~= "Root" then
local bcs = Instance.new("BallSocketConstraint", v.Part0)
bcs.Name = "RagdollSocket"
v.Part1.CanCollide = false
v.Part0.CanCollide = false
v.Part1.CollisionGroup = "Players"
local fake = Instance.new("Part", cs)
fake.Transparency = 1
fake.Massless = true
fake.CanCollide = false
fake.Name = v.Part1.Name
fake.Size = v.Part1.Size / 2
fake.CFrame = v.Part1.CFrame
fake.CollisionGroup = "Collider"
local w = Instance.new("WeldConstraint", fake)
w.Part0 = v.Part1
w.Part1 = fake
local a1 = Instance.new("Attachment", v.Part0)
a1.Name = "RagdollAttachment"
local a2 = Instance.new("Attachment", v.Part1)
a2.Name = "RagdollAttachment"
a2.Position = v.C1.Position
a1.WorldPosition = a2.WorldPosition
bcs.LimitsEnabled = true
bcs.TwistLimitsEnabled = true
bcs.Attachment0 = a1
bcs.Attachment1 = a2
local w
if (v.Part0 ~= c.PrimaryPart and v.Part1 ~= c.PrimaryPart) or v.Name == "Neck" then
v.Enabled = false
fake.CanCollide = true
else
w = Instance.new("WeldConstraint", hrp)
w.Part0 = c.PrimaryPart
w.Part1 = (c.PrimaryPart == v.Part1 and v.Part0 or v.Part1)
end
coroutine.wrap(function()
if t ~= nil and tonumber(t) ~= nil then
task.wait(t)
hum.RequiresNeck = old
v.Enabled = true
hum.PlatformStand = false
fake:Destroy()
if w then
task.delay(1, w.Destroy, w)
end
task.delay(1, bcs.Destroy, bcs)
end
end)()
end
end
end
local function attack(tbl, stats, ep)
local victims = tbl
if #(victims) ~= 0 then
local snd = stats.Sound
if stats.Sound then
if typeof(stats.Sound) == "table" then
snd = stats.Sound[math.random(1, #(stats.Sound))]
end
end
play(snd, victims[1]:FindFirstChild("HumanoidRootPart"))
end
local dmg = stats.Damage or 0
dmg *= (dbs.FlameActive and 1.25 or 1)
for _, victim in pairs(victims) do
coroutine.wrap(function()
local thum, hrp = victim:FindFirstChildWhichIsA("Humanoid"), victim:FindFirstChild("HumanoidRootPart")
if thum.Health - dmg <= 0 and stats.DoNotKill then
thum.Health = .01
else
thum.Health -= dmg
end
stun(thum, stats.Stun)
if dmg > 0 then
heat.Value = math.clamp(heat.Value + dmg / 3, 0, 100)
dmgui(victim, dmg)
end
if stats.Animation then
coroutine.wrap(function()
if not guids[victim] then
guids[victim] = {}
end
if guids[victim][stats.Animation] then
local anim = guids[victim][stats.Animation]
anim:Play(stats.AnimationSpeed)
return
end
local anim = AnimationTrack.new()
anim:setAnimation(stats.Animation)
anim:AdjustWeight(10)
anim:setRig(victim)
anim.lerpFactor = 1
anim:Play(stats.AnimationSpeed)
guids[victim][stats.Animation] = anim
end)()
end
if stats.Ragdoll then
coroutine.wrap(ragdoll)(victim, stats.Ragdoll)
end
if stats.Knockback then
local bv = Instance.new("BodyVelocity", hrp)
bv.MaxForce = Vector3.one * 10000000
bv.Velocity = hum.RootPart.CFrame.LookVector * stats.Knockback[1] + (stats.Knockback[3] or Vector3.zero)
task.delay(stats.Knockback[2], bv.Destroy, bv)
end
create_fx(stats.HitEffect, victim, ep)
end)()
end
end
local function linger(n, stats, dmg_stats, w)
local bl = {}
if #(stats) == 3 then
table.insert(stats, "Box")
end
table.insert(stats, bl)
task.spawn(function()
for _ = 1, n do
local inhb = hb(table.unpack(stats))
for _, v in pairs(inhb) do
table.insert(bl, v)
end
attack(inhb, dmg_stats)
if w then
task.wait(w)
else
task.wait()
task.wait()
end
end
end)
end
local function create_cd(name)
local rname = name
if name == "RushFinish" then
rname = "RushAttack"
end
local button = moves[rname][3]
local meter = button.Cooldown.Meter
if not no_cd then
meter.Size = UDim2.fromScale(1, 1)
tw:Create(meter, TweenInfo.new(.1), {BackgroundTransparency = .75}):Play()
tw:Create(meter, TweenInfo.new(cds[name], Enum.EasingStyle.Linear), {Size = UDim2.fromScale(0, 1)}):Play()
task.wait(cds[name])
end
dbs[rname] = false
meter.BackgroundTransparency = 1
end
local function emit(v, nod)
local delay = (nod and 0 or v:GetAttribute("EmitDelay"))
delay = delay or 0
task.delay(delay, function()
local s = tick()
repeat
v:Emit(v:GetAttribute("EmitCount"))
task.wait(1 / v.Rate)
until tick() - s >= (v:GetAttribute("EmitDuration") or 0)
end)
end
local function emit_2(v, p)
task.spawn(function()
while v.Enabled and p.Parent and v.Rate > 0 do
task.wait(1 / v.Rate)
v:Emit(1)
end
end)
end
local function lerp(a, b, t)
return a + (b - a) * t
end
local function tween_scale(pe, scl, t)
local dt = 0
local points = pe.Size.Keypoints
task.spawn(function()
while dt < t do
dt += task.wait()
local kps = {}
for _, v in ipairs(points) do
table.insert(kps, NumberSequenceKeypoint.new(v.Time, lerp(v.Value, v.Value * scl, dt / t)))
end
pe.Size = NumberSequence.new(kps)
end
end)
end
local function rocky(args)
assert(args.Origin, "No origin data.")
local orig = args.Origin
local amt = args.Amount or 30
local life = args.Lifetime or 3
local radius = args.Radius or 20
local delay = args.DelayAmount or .05
local size = args.Size or Vector3.one * 2
local a, b = 30, 360 / amt
if typeof(orig) == "Instance" then
orig = orig.CFrame
end
orig *= (args.Offset or CFrame.new())
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {char, script, args.Exclude}
local rocks = Instance.new("Model", workspace)
rocks.Name = "Rocks"
if args.AttachTo then
args.BypassDuration = true
args.AttachTo.Destroying:Connect(function()
rocks:Destroy()
end)
end
if not args.BypassDuration then
task.delay(life + delay * amt + .5, rocks.Destroy, rocks)
end
for _ = 1, amt do
local r1 = workspace:Raycast(
(orig * CFrame.Angles(0, math.rad(a), 0) * CFrame.new(radius / 2 + radius / 2.7, 10, 0)).Position,
Vector3.yAxis * -20,
params
)
local r2 = workspace:Raycast(
(orig * CFrame.Angles(0, math.rad(a), 0) * CFrame.new(radius / 2 + radius / 10, 10, 0)).Position,
Vector3.yAxis * -20,
params
)
if r1 and r2 then
local rock = Instance.new("Part", rocks)
rock.Anchored = true
rock.CanCollide = false
rock.CanQuery = false
rock.CanTouch = false
rock.Material = r1.Material
rock.Color = r1.Instance.Color
rock.TopSurface = Enum.SurfaceType.Smooth
rock.BottomSurface = Enum.SurfaceType.Smooth
rock.Size = Vector3.new(size.X * 1.3, size.Y / 1.4, size.Z * 1.3) * nn(1, 1.5)
rock.CFrame = CFrame.new(
r1.Position - (Vector3.yAxis / 2),
orig.Position
) * CFrame.Angles(
nn(-.25, .5), nn(-.25, .25), nn(-.25, .25)
)
for _, v in pairs(r1.Instance:GetChildren()) do
if v:IsA("Texture") then
for _, face in pairs(Enum.NormalId:GetEnumItems()) do
local txt = v:Clone()
txt.Face = face
txt.Parent = rock
end
end
end
local stone = rock:Clone()
stone.Parent = rocks
stone.Size = Vector3.new(rock.Size.X * 1.01, rock.Size.Y * .25, rock.Size.Z * 1.01)
stone.CFrame = rock.CFrame * CFrame.new(0, rock.Size.Y / 2 - stone.Size.Y / 2.1, 0)
local rubble = rock:Clone()
rubble.Parent = rocks
rubble.CFrame = CFrame.new(
r2.Position - (Vector3.yAxis * size * .4),
orig.Position
) * CFrame.Angles(
nn(-1, -.3), nn(-.15, .15), nn(-.15, .15)
)
local pebble = stone:Clone()
pebble.Parent = rocks
pebble.CFrame = rubble.CFrame * CFrame.new(0, rubble.Size.Y / 2 - pebble.Size.Y / 2.1, 0)
if not args.BypassDuration then
task.delay(life + 1 * delay, function()
for _, v in pairs(rocks:GetChildren()) do
tw:Create(
v,
TweenInfo.new(1),
{
Size = Vector3.zero,
Position = v.CFrame.Position - Vector3.yAxis * (v.Size.Y + 2)
}
):Play()
end
end)
end
end
a += b
end
end
local function rocky_2(args)
assert(args.Origin, "No origin data.")
local orig = args.Origin
local amt = args.Amount
local size = args.Size or NumberRange.new(1, 3)
local uvl = args.UpVelocity or NumberRange.new(40, 50)
local svl = args.SideVelocity or NumberRange.new(-50, 50)
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {char, script, args.Exclude}
local result = workspace:Raycast(orig.Position, Vector3.yAxis * -50, params)
if not result then
return
end
for _ = 1, amt do
local rock = assets.Particles.LimbTrail:Clone()
rock.Parent = workspace
rock.Anchored = false
rock.Transparency = 0
rock.Position = result.Position
rock.Material = result.Material
rock.Color = result.Instance.Color
rock.TopSurface = Enum.SurfaceType.Smooth
rock.BottomSurface = Enum.SurfaceType.Smooth
rock.AssemblyAngularVelocity = Vector3.one * math.random()
rock.Size = Vector3.new(
nn(size.Min, size.Max),
nn(size.Min, size.Max),
nn(size.Min, size.Max)
)
rock.Orientation = Vector3.new(
nn(-180, 180),
nn(-180, 180),
nn(-180, 180)
)
task.delay(.5, function()
rock.CanCollide = true
end)
for _, v in pairs(rock:GetDescendants()) do
if v:IsA("Attachment") then
v.Position *= Vector3.new(rock.Size.Magnitude / 2, 1, 1) -- // Vector3.new(v.Position.X, v.Position.Y * rock.Size.Magnitude / 2, v.Position.Z)
elseif v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = true
task.delay(1, function()
v.Enabled = false
end)
if v:IsA("ParticleEmitter") then
scale_pe(v, rock.Size.Magnitude / 3)
emit_2(v, rock)
end
end
end
for _, v in pairs(result.Instance:GetChildren()) do
if v:IsA("Texture") then
for _, face in pairs(Enum.NormalId:GetEnumItems()) do
local txt = v:Clone()
txt.Face = face
txt.Parent = rock
end
end
end
local bv = Instance.new("BodyVelocity", rock)
bv.MaxForce = Vector3.one * 10e7
bv.Velocity = Vector3.new(
nn(svl.Min, svl.Max),
nn(uvl.Min, uvl.Max),
nn(svl.Min, svl.Max)
)
task.delay(.2, bv.Destroy, bv)
task.delay(3, function()
tw:Create(rock, TweenInfo.new(3), {Size = Vector3.zero}):Play()
task.wait(3)
rock:Destroy()
end)
end
end
local function bezier(a, b, c, t)
return (1 - t) ^ 2 * a + 2 * (1 - t) * t * b + t ^ 2 * c
end
local function not_rocky_3(v, pos, t)
local a = v.Position
local midpoint = (a + pos) / 2
local b = (CFrame.new(midpoint) * CFrame.Angles(v:ToEulerAnglesXYZ())) * CFrame.new(nn(-36, 36), nn(0, 36), 0)
local c = pos
local trail = assets.Particles.LimbTrail:Clone()
trail.Position = pos
trail.Parent = workspace
trail.Anchored = true
for _, v in pairs(trail:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = true
if v:IsA("ParticleEmitter") then
scale_pe(v, .3)
emit_2(v, trail)
end
end
end
task.spawn(function()
local s = tick()
while (tick() - s) < t do
task.wait()
trail.Position = bezier(a, b.Position, c, (tick() - s) / t)
end
for _, v in pairs(trail:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = false
end
end
task.delay(2, trail.Destroy, trail)
end)
end
local flashing = false
local function flash_heat(am)
if flashing then
return
end
flashing = true
local main = ui.Character.Meter.Container.Bar.Flash
local scale = math.max(am / 100, 0)
main.Visible = true
main.Size = UDim2.fromScale(scale, 1)
main.ImageLabel.Size = UDim2.fromScale((scale > 0 and (1 / scale) or 0), 1)
tw:Create(main.ImageLabel, TweenInfo.new(.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, 0, true), {ImageTransparency = .5}):Play()
task.delay(.5, function()
flashing = false
end)
end
local function cam_shake(plr, type, amt)
local ls = assets.Scripts.CameraShaker:Clone()
ls:WaitForChild("Type").Value = type
ls:WaitForChild("Amount").Value = amt or 1
ls.Parent = plr.PlayerGui
ls.Enabled = true
task.delay(3, ls.Destroy, ls)
end
-- // moves
local function taunt(data)
local ui
if not char.Head:FindFirstChild("Taunt") then
ui = assets.Taunt:Clone()
ui.Parent = char.Head
else
ui = char.Head:FindFirstChild("Taunt")
end
ui.Text.Text = ""
task.wait()
tw:Create(ui.Text, TweenInfo.new(.5), {TextTransparency = 0}):Play()
tw:Create(ui.Text, TweenInfo.new(.5), {TextStrokeTransparency = .75}):Play()
coroutine.wrap(function()
for i = 1, #(data[1]) do
task.wait(.03)
ui.Text.Text = string.sub(data[1], 1, i)
if data.Timings then
for part, time in pairs(data.Timings) do
if ui.Text.Text == part and not time[2] then
time[2] = true
task.wait(time[1])
end
end
end
end
end)()
local snd = play(data[2])
snd.Ended:Wait()
if data.Timings then
for _, time in pairs(data.Timings) do
time[2] = false
end
end
task.wait(1)
tw:Create(ui.Text, TweenInfo.new(.5), {TextTransparency = 1}):Play()
tw:Create(ui.Text, TweenInfo.new(.5), {TextStrokeTransparency = 1}):Play()
task.wait(.5)
dbs.Taunt = false
end
local function augimas()
if dbs.Augimas or dbs.Stunned or dbs.PoseActive then
return
end
if heat.Value < 20 then
flash_heat(20)
return
end
heat.Value = math.clamp(heat.Value - 20, 0, 100)
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://438666196"
--snd.PlaybackSpeed = 2
snd.Volume = 3
snd:Play()
change(4, 0)
dbs.Stunned = true
dbs.Augimas = true
play("AugimasVFX")
anims.Augimas:Play(1.5)
anims.Augimas.Stall = .3
task.wait(.125)
local mdl = Instance.new("Model", workspace)
local n = Instance.new("NumberValue", mdl)
n.Value = (.1 / 3)
local orb = assets.Particles.Augimas:Clone()
orb.Parent = mdl
orb.Anchored = false
local w = Instance.new("Weld", orb)
w.Part0 = find_limb("Right Arm")
w.Part1 = orb
w.C0 = CFrame.new(0, -(w.Part0.Size.Y / 2) - .05, 0)
tw:Create(n, TweenInfo.new(1), {Value = 1}):Play()
tw:Create(w, TweenInfo.new(1), {C0 = CFrame.new(0, -(w.Part0.Size.Y / 2) - 1.5, 0)}):Play()
for _, v in pairs(orb.Attachment:GetChildren()) do
v.Enabled = true
emit_2(v, mdl)
end
local cnt
cnt = n.Changed:Connect(function()
mdl:ScaleTo(n.Value)
if n.Value == 1 then
cnt:Disconnect()
end
end)
task.wait(.35)
play("AugimasSFX").PlaybackSpeed = .95
w:Destroy()
orb.Anchored = true
orb.A0.Trail.Enabled = true
orb.CFrame = hum.RootPart.CFrame * CFrame.new(0, 0, -1)
for _, v in pairs(orb.Shoot:GetChildren()) do
emit(v)
end
for _, v in pairs(orb.Wind:GetChildren()) do
v.Enabled = true
emit_2(v, mdl)
end
create_fx("Shoot", nil, hum.RootPart.CFrame)
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://97847167833189"
--snd.PlaybackSpeed = 2
snd2.Volume = 3
snd2:Play()
local bv = Instance.new("BodyVelocity", hum.RootPart)
bv.MaxForce = Vector3.one * 10e5
bv.Velocity = hum.RootPart.CFrame.LookVector * -84
task.delay(.1, bv.Destroy, bv)
anims.Augimas.Stopped:Once(function()
change()
dbs.Stunned = false
create_cd("Augimas")
end)
local start = orb.Position
task.delay(8, mdl.Destroy, mdl)
task.spawn(function()
while (start - orb.Position).Magnitude <= 1024 and mdl.Parent do
local dist = orb.CFrame.LookVector
local tdist = (dist * 2) * (task.wait() * 60)
local params = RaycastParams.new()
params.FilterDescendantsInstances = {char, script}
params.FilterType = Enum.RaycastFilterType.Exclude
local ray = workspace:Spherecast(orb.Position, orb.Size.X / 2, tdist, params)
if ray then
mdl:Destroy()
local fx = create_fx("Explosion", nil, CFrame.new(ray.Position))
local snd3 = Instance.new("Sound")
snd3.Parent = fx
snd3.SoundId = "rbxassetid://8128414255"
--snd3.PlaybackSpeed = 2
snd3.Volume = 3
snd3:Play()
local inhb = hb(fx, CFrame.new(), Vector3.one * 18, "Magnitude")
attack(inhb, stats.Augimas)
for _, v in pairs(inhb) do
local bv = Instance.new("BodyVelocity", v.HumanoidRootPart)
bv.MaxForce = Vector3.one * 10e5
bv.Velocity = CFrame.new(fx.Position, v.HumanoidRootPart.Position).LookVector.Unit * 50 + Vector3.yAxis * 35
task.delay(.1, bv.Destroy, bv)
end
break
end
orb.CFrame += tdist
end
end)
end
local function rush_attack()
if dbs.RushAttack or dbs.Stunned or dbs.PoseActive then
return
end
change(8, 0)
dbs.Stunned = true
dbs.RushAttack = true
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://17577462807"
--snd.PlaybackSpeed = 2
snd.Volume = 2
snd:Play()
local anim = anims[`LMB{cds.RushCount}`]
anim:AdjustWeight(4 + (cds.RushCount / 10))
anim.lerpFactor = 1
anim.Stall = .1
anim:Play()
if cds.RushCount == 4 then
cds.RushCount = 1
task.delay(.3, linger, 5, {hum.RootPart, CFrame.new(0, 0, -4), Vector3.one * 7}, stats.RushFinish)
task.delay(.6, function()
dbs.Stunned = false
change()
end)
create_cd("RushFinish")
else
cds.RushCount += 1
task.delay(.3, linger, 5, {hum.RootPart, CFrame.new(0, 0, -4), Vector3.one * 7}, stats.RushAttack)
coroutine.wrap(function()
local clmb = cds.RushCount
task.wait(cds.RushFinish / 2 + .4)
if cds.RushCount == clmb then
cds.RushCount = 1
end
end)()
create_cd("RushAttack")
dbs.Stunned = false
change()
end
end
local function leg_breaker()
if dbs.LegBreaker or dbs.Stunned or dbs.PoseActive then
return
end
change(4, 0)
dbs.Stunned = true
dbs.LegBreaker = true
play("LegBreakerVFX")
play("LegBreakerSFX")
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://8128405702"
--snd.PlaybackSpeed = 2
snd2.Volume = 2
snd2:Play()
anims.LegBreaker:Play()
local fx = assets.Particles.LimbTrail:Clone()
fx.Parent = char
task.delay(2, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Right Leg")
w.Part1 = fx
w.C0 = CFrame.new(0, -(w.Part0.Size.Y / 2), 0)
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("Trail") or v:IsA("ParticleEmitter") then
v.Enabled = true
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
end
task.delay(.3, function()
v.Enabled = false
end)
end
end
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://8128413192"
--snd.PlaybackSpeed = 2
snd2.Volume = 1
snd2:Play()
task.delay(.25, create_fx, "LegBreaker", nil, hum.RootPart.CFrame * CFrame.new(0, -3, 0))
task.delay(.25, linger, 5, {hum.RootPart, CFrame.new(0, 0, -5.5), Vector3.one * 11}, stats.LegBreaker)
anims.LegBreaker.Stopped:Wait()
change()
dbs.Stunned = false
create_cd("LegBreaker")
end
local function rising_dragon()
if dbs.RisingDragon or dbs.Stunned or dbs.PoseActive then
return
end
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://78375023254173"
--snd.PlaybackSpeed = 1
snd.Volume = 2
snd:Play()
change(6, 0)
dbs.Stunned = true
dbs.RisingDragon = true
play("RisingDragonVFX")
play("RisingDragonSFX")
local voice = Instance.new("Sound")
voice.Parent = hum.RootPart
voice.SoundId = "rbxassetid://7884894495"
--voice.PlaybackSpeed = 2
voice.Volume = 1
voice:Play()
anims.RisingDragon:Play()
local fx = assets.Particles.LimbTrail:Clone()
fx.Parent = char
task.delay(2, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Right Arm")
w.Part1 = fx
w.C0 = CFrame.new(0, -(w.Part0.Size.Y / 2), 0)
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("Trail") or v:IsA("ParticleEmitter") then
v.Enabled = true
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
end
task.delay(1, function()
v.Enabled = false
end)
end
end
task.wait(.25)
create_fx("RisingDragon", nil, hum.RootPart.CFrame * CFrame.new(0, -3, 0))
local snd1 = Instance.new("Sound")
snd1.Parent = hum.RootPart
snd1.SoundId = "rbxassetid://9120629501"
snd1.PlaybackSpeed = 0.8
snd1.Volume = 1
snd1:Play()
linger(5, {hum.RootPart, CFrame.new(0, 0, -5.5), Vector3.new(11, 14, 11)}, stats.RisingDragon1)
task.wait(.5)
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://1112042117"
snd2.PlaybackSpeed = 2
snd2.Volume = 1
snd2:Play()
create_fx("RisingDragon", nil, hum.RootPart.CFrame * CFrame.new(0, -3, 0))
linger(5, {hum.RootPart, CFrame.new(0, 0, -5.5), Vector3.new(11, 14, 11)}, stats.RisingDragon2)
task.wait(.2)
dbs.RisingDragonLast = true
task.delay(1, function()
dbs.RisingDragonLast = false
end)
change()
dbs.Stunned = false
create_cd("RisingDragon")
end
local function axe_kick()
if dbs.AxeKick or dbs.Stunned or dbs.PoseActive then
return
end
change(4, 0)
dbs.Stunned = true
dbs.AxeKick = true
play("AxeKickVFX")
play("AxeKickSFX")
local snd1 = Instance.new("Sound")
snd1.Parent = hum.RootPart
snd1.SoundId = "rbxassetid://78375023254173"
--snd1.PlaybackSpeed = 1
snd1.Volume = 2
snd1:Play()
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://8128431961"
--snd2.PlaybackSpeed = 1
snd2.Volume = 1
snd2:Play()
anims.AxeKick:Play()
task.wait(.25)
local fx = assets.Particles.LimbTrail:Clone()
fx.Parent = char
local at = assets.Particles.Start.Attachment:Clone()
at.Name = "Start"
at.Parent = fx
task.delay(2, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Left Leg")
w.Part1 = fx
w.C0 = CFrame.new(0, -(w.Part0.Size.Y / 2), 0)
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("Trail") or v:IsA("ParticleEmitter") then
v.Enabled = true
if v:IsA("ParticleEmitter") then
if v.Parent ~= at then
emit_2(v, fx)
else
v.Enabled = false
emit(v)
end
end
task.delay(.4, function()
v.Enabled = false
end)
end
end
task.wait(.25)
for _, plr in pairs(game:GetService("Players"):GetPlayers()) do
if plr and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") and (plr.Character.HumanoidRootPart.Position - hum.RootPart.Position).Magnitude <= 16 then
cam_shake(plr, "ViolentShake")
end
end
linger(5, {hum.RootPart, CFrame.new(0, -2, -3.5), Vector3.one * 13, "Magnitude"}, stats.AxeKick)
local cf = hum.RootPart.CFrame * CFrame.new(0, 0, -3.5)
create_fx("AxeKick", nil, cf * CFrame.new(0, -3, 0))
local voice = Instance.new("Sound")
voice.Parent = hum.RootPart
voice.SoundId = "rbxassetid://2341638455"
--voice.PlaybackSpeed = 1
voice.Volume = 1
voice:Play()
local snd3 = Instance.new("Sound")
snd3.Parent = hum.RootPart
snd3.SoundId = "rbxassetid://3932587669"
--snd3.PlaybackSpeed = 1
snd3.Volume = 1
snd3:Play()
coroutine.wrap(rocky)({
Radius = 8,
Amount = 16,
Origin = cf,
Exclude = get_hums(cf.Position, 8)
})
coroutine.wrap(rocky_2)({
Amount = 8,
Origin = cf,
Size = NumberRange.new(1, 2),
UpVelocity = NumberRange.new(55, 60),
SideVelocity = NumberRange.new(-40, 40),
Exclude = get_hums(cf.Position, 8)
})
local snd4 = Instance.new("Sound")
snd4.Parent = hum.RootPart
snd4.SoundId = "rbxassetid://8128398878"
--snd4.PlaybackSpeed = 1
snd4.Volume = 1
snd4:Play()
anims.AxeKick.Stopped:Wait()
change()
dbs.Stunned = false
create_cd("AxeKick")
end
local function misogi()
if dbs.Misogi or dbs.Stunned or dbs.PoseActive then
return
end
if heat.Value < 20 then
flash_heat(20)
return
end
local inhb = hb(hum.RootPart, CFrame.new(), Vector3.one * 64, "Magnitude")
if #(inhb) <= 0 then
return
end
local snd1 = Instance.new("Sound")
snd1.Parent = hum.RootPart
snd1.SoundId = "rbxassetid://438666196"
--snd1.PlaybackSpeed = 1
snd1.Volume = 2
snd1:Play()
local vhrp = inhb[1].HumanoidRootPart
heat.Value = math.clamp(heat.Value - 20, 0, 100)
change(2, 0)
dbs.Misogi = true
dbs.Stunned = true
play("MisogiSFX")
play("MisogiATK")
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://3518146972"
--snd2.PlaybackSpeed = 1
snd2.Volume = 2
snd2:Play()
if not dbs.RisingDragonLast then
play("MisogiVFX")
end
anims.Misogi:Play(1.25)
hum.RootPart.Anchored = true
local fx = assets.Particles.MisogiCharge:Clone()
fx.Parent = workspace
fx.Anchored = true
fx.CFrame = hum.RootPart.CFrame - Vector3.yAxis * 3
task.delay(2, fx.Destroy, fx)
local snd3 = Instance.new("Sound")
snd3.Parent = fx
snd3.SoundId = "rbxassetid://3518167306"
--snd3.PlaybackSpeed = 1
snd3.Volume = 2
snd3:Play()
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
task.delay(.5, function()
v.Enabled = false
end)
end
end
task.wait(.32)
--[[
local bv = Instance.new("BodyVelocity", hum.RootPart)
bv.MaxForce = Vector3.yAxis * 10e5
bv.Velocity = Vector3.yAxis * 100
task.delay(.1, bv.Destroy, bv)
]]
tw:Create(hum.RootPart, TweenInfo.new(.25), {CFrame = hum.RootPart.CFrame + Vector3.yAxis * 25}):Play()
local fx = assets.Particles.MisogiTrail:Clone()
fx.Parent = workspace
fx.Anchored = false
task.delay(2, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = hum.RootPart
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
task.delay(.5, function()
v.Enabled = false
end)
end
end
task.wait(.28)
--[[
local bv = Instance.new("BodyVelocity", hum.RootPart)
bv.MaxForce = Vector3.yAxis * 10e5
bv.Velocity = Vector3.yAxis * -100
task.delay(.1, bv.Destroy, bv)
]]
local cf = CFrame.new(vhrp.Position) * CFrame.Angles(0, math.rad(vhrp.Orientation.Y), 0)
hum.RootPart.CFrame = cf * CFrame.new(0, 25, -1) * CFrame.Angles(0, math.pi, 0)
local ground = find_ground(hum.RootPart.Position, get_hums(hum.RootPart.Position, 32))
if ground then
tw:Create(hum.RootPart, TweenInfo.new(.23), {CFrame = CFrame.new(ground + Vector3.yAxis * 3) * CFrame.Angles(hum.RootPart.CFrame:ToEulerAnglesXYZ())}):Play()
else
tw:Create(hum.RootPart, TweenInfo.new(.23), {CFrame = hum.RootPart.CFrame - Vector3.yAxis * 22}):Play()
end
linger(8, {hum.RootPart, CFrame.new(), Vector3.new(9, 16, 9)}, stats.Misogi)
task.wait(.3)
anims.Misogi:Stop()
change()
dbs.Stunned = false
hum.RootPart.Anchored = false
create_cd("Misogi")
end
local function rd_cam(plr)
local ls = assets.Scripts.CameraScript:Clone()
ls:WaitForChild("Origin").Value = hum.RootPart.CFrame
ls.Parent = plr.PlayerGui
ls.Enabled = true
task.delay(20, ls.Destroy, ls)
end
local function raging_demon()
if dbs.RagingDemon or dbs.Stunned or dbs.PoseActive then
return
end
if heat.Value < 50 then
flash_heat(50)
return
end
local voice = Instance.new("Sound")
voice.Parent = hum.RootPart
voice.SoundId = "rbxassetid://9067999882"
--voice.PlaybackSpeed = 1
voice.Volume = 1
voice:Play()
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://8649690928"
--snd.PlaybackSpeed = 1
snd.Volume = 1
snd:Play()
change(2, 0)
dbs.Stunned = true
dbs.RagingDemon = true
play("RagingDemonVFX")
play("RagingDemonSFX")
anims.RagingDemonStart:Play()
anims.RagingDemonStart.Stall = .5
task.spawn(function()
for _ = 1, 8 do
not_rocky_3(
hum.RootPart.CFrame * CFrame.new(nn(-4, 4), 0, -24 + nn(-3, 3)),
(hum.RootPart.CFrame * CFrame.new(0, 0, 3)).Position,
.9
)
end
char.Archivable = true
local ps = game:GetService("PhysicsService")
if not ps:IsCollisionGroupRegistered("OniClones") then
ps:RegisterCollisionGroup("OniClones")
end
ps:CollisionGroupSetCollidable("OniClones", "Default", false)
for i = -1, 1, 2 do
local afterimage = char:Clone()
local w = Instance.new("Weld", afterimage)
w.Part0 = hum.RootPart
w.Part1 = afterimage.HumanoidRootPart
tw:Create(w, TweenInfo.new(.5), {C0 = CFrame.new(i * 3, 0, 0)}):Play()
local ahum = afterimage.Humanoid
ahum.MaxHealth = 10e7
ahum.Health = 10e7
ahum.DisplayName = ""
ahum.NameOcclusion = Enum.NameOcclusion.NoOcclusion
ahum.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff
for _, v in pairs(Enum.HumanoidStateType:GetEnumItems()) do
ahum:SetStateEnabled(v, false)
end
for _, v in pairs(afterimage:GetDescendants()) do
if v:IsA("Motor6D") and v:FindFirstChild("AWeld") then
task.spawn(function()
local real = char:FindFirstChild(v.Name, true)
while v.Part1.Transparency ~= 1 and v:FindFirstChild("AWeld") and real:FindFirstChild("AWeld") do
task.wait()
if v:FindFirstChild("AWeld") and real:FindFirstChild("AWeld") then
v.AWeld.C0 = real.AWeld.C0
end
end
end)
elseif v:IsA("BasePart") then
v.CanCollide = false
v.CanQuery = false
v.CanTouch = false
v.Massless = true
v.Anchored = false
v.CollisionGroup = "OniClones"
elseif v:IsA("Sound") or v:IsA("ForceField") or v:IsA("BillboardGui") then
v:Destroy()
end
if v:IsA("Decal") or v:IsA("Texture") or v:IsA("BasePart") then
-- // local old = v.Transparency
-- // v.Transparency = 1
-- // tw:Create(v, TweenInfo.new(.5), {Transparency = old}):Play()
tw:Create(v, TweenInfo.new(
.5, Enum.EasingStyle.Quad,
Enum.EasingDirection.Out,
0,
false,
.5
), {Transparency = 1}):Play()
task.delay(1, v.Destroy, v)
end
end
afterimage.Parent = workspace
end
end)
task.wait(1)
local fx = assets.Particles.Trail:Clone()
fx.Parent = char
fx.Anchored = false
task.delay(2, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = hum.RootPart
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
end
end
end
hum.AutoRotate = false
hum.RootPart.Anchored = true
local tween = tw:Create(hum.RootPart, TweenInfo.new(.5), {CFrame = hum.RootPart.CFrame * CFrame.new(0, 0, -24)})
tween:Play()
local inhb
for _ = 1, 16 do
inhb = hb(hum.RootPart, CFrame.new(0, 0, -6), Vector3.new(8, 8, 12))
if inhb[1] then
break
end
task.wait()
end
local victim = inhb[1]
if not victim then
anims.RagingDemonStart.Stopped:Wait()
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = false
end
end
change()
dbs.Stunned = false
hum.AutoRotate = true
hum.RootPart.Anchored = false
coroutine.wrap(create_cd)("RagingDemon")
return
else
tween:Cancel()
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = false
end
end
anims.RagingDemonStart:Stop()
anims.RagingDemonUser:Play()
play("RagingDemonCutsceneVFX")
play("RagingDemonCutsceneSFX")
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://7894173350"
--snd2.PlaybackSpeed = 1
snd2.Volume = 1
snd2:Play()
re:FireClient(owner, "Camera")
local vhum = victim.Humanoid
vhum.AutoRotate = false
vhum.RootPart.Anchored = true
vhum.RootPart.CFrame = hum.RootPart.CFrame * CFrame.new(0, 0, -5) * CFrame.Angles(0, math.pi, 0)
stun(vhum, anims.RagingDemonUser.Length + 1)
local torso = victim:FindFirstChild("Torso") or victim:FindFirstChild("UpperTorso") or victim:FindFirstChild("HumanoidRootPart")
attack({victim}, {
Animation = (vhum.RigType.Name == "R15" and demon_r15 or demon_r6)
})
local plr = game:GetService("Players"):GetPlayerFromCharacter(victim)
if plr then
rd_cam(plr)
end
task.spawn(function()
guids[victim][(vhum.RigType.Name == "R15" and demon_r15 or demon_r6)].Stopped:Wait()
vhum.RootPart.CFrame = torso.CFrame
vhum.AutoRotate = true
vhum.RootPart.Anchored = false
attack({victim}, stats.RagingDemonFinish)
end)
local times = {
.267, 1.2, 2.05, 2.43, 2.9,
3.25, 3.55, 3.83, 4
}
for i, v in pairs(times) do
repeat
task.wait()
until anims.RagingDemonUser.TimePosition >= v
if i < 6 then
create_fx("Impact", nil, torso)
end
attack({victim}, stats.RagingDemon, torso)
local snd3 = Instance.new("Sound")
snd3.Parent = torso
snd3.SoundId = "rbxassetid://8595983255"
--snd3.PlaybackSpeed = 1
snd3.Volume = 1
snd3:Play()
end
repeat
task.wait()
until anims.RagingDemonUser.TimePosition >= 4.1
for _ = 1, 17 do
task.wait(.05)
attack({victim}, stats.RagingDemon, torso)
local snd4 = Instance.new("Sound")
snd4.Parent = torso
snd4.SoundId = "rbxassetid://8595977193"
--snd3.PlaybackSpeed = 1
snd4.Volume = 1
snd4:Play()
end
task.wait(0.5)
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://18328072056"
--snd.PlaybackSpeed = 1
snd.Volume = 1
snd:Play()
anims.RagingDemonUser.Stopped:Wait()
change()
dbs.Stunned = false
hum.AutoRotate = true
hum.RootPart.Anchored = false
create_cd("RagingDemon")
end
end
local function consuming_flames()
if dbs.ConsumingFlames or dbs.Stunned or dbs.PoseActive then
return
end
if heat.Value < 75 then
flash_heat(75)
return
end
if not no_cd then
heat.Value = math.clamp(heat.Value - 75, 0, 100)
end
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://18504427080"
--snd.PlaybackSpeed = 1
snd.Volume = 1
snd:Play()
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://3385104077"
--snd2.PlaybackSpeed = 1
snd2.Volume = 1
snd2:Play()
change(0, 0)
dbs.Stunned = true
dbs.ConsumingFlames = true
anims.ConsumingFlames:Play()
anims.ConsumingFlames.Stall = .5
local fx = assets.Particles.ConsumingFlameCharge:Clone()
fx.Parent = workspace
local w = Instance.new("Weld", hum.RootPart)
w.Part0 = hum.RootPart
w.Part1 = fx
w.C0 = CFrame.new(0, -3, 0)
task.delay(2, fx.Destroy, fx)
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
task.delay(1, function()
v.Enabled = false
end)
end
end
local snd3 = Instance.new("Sound")
snd3.Parent = hum.RootPart
snd3.SoundId = "rbxassetid://8128407082"
--snd3.PlaybackSpeed = 1
snd3.Volume = 1
snd3:Play()
local smash = false -- // markiplier smash or pass reference
task.spawn(function()
local r, y, a = 8, 0, 0
task.spawn(function()
while not smash do
local dt = task.wait()
r += dt * 4
y += dt * 12
end
end)
local n = 6
for _ = 1, n do
local ang = a
for i = 1, 2 do
local ar, ay = r, y
if i == 2 then
ar *= 1.25
ay *= 1.25
end
local trail = assets.Particles.LimbTrail:Clone()
trail.Position = hum.RootPart.Position + Vector3.new(ar * math.sin(a), ay, ar * math.cos(a))
trail.Parent = workspace
trail.Anchored = true
for _, v in pairs(trail:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = true
if v:IsA("ParticleEmitter") then
scale_pe(v, 2)
emit_2(v, trail)
end
elseif v:IsA("Attachment") then
v.Position *= 2
end
end
task.spawn(function()
while not smash and trail.Parent do
task.wait()
local r, y = r, y
if i == 2 then
r *= 1.25
y *= 1.25
end
trail.Position = hum.RootPart.Position + Vector3.new(r * math.sin(ang), y, r * math.cos(ang))
end
trail:Destroy()
end)
end
a += math.pi + (math.pi / n)
task.spawn(function()
while not smash do
ang += task.wait() * 3
end
end)
end
end)
play("ConsumingFlamesSFX")
task.wait(.5)
play("ConsumingFlamesVFX")
task.wait(.6)
smash = true
for _, plr in pairs(game:GetService("Players"):GetPlayers()) do
if plr and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") and (plr.Character.HumanoidRootPart.Position - hum.RootPart.Position).Magnitude <= 32 then
cam_shake(plr, "ViolentShake")
end
end
local sound_holder = Instance.new("Part")
sound_holder.Size = Vector3.new(5, 5, 5)
sound_holder.CFrame = owner.Character.HumanoidRootPart.CFrame
sound_holder.Transparency = 1
sound_holder.CanCollide = false
sound_holder.Material = Enum.Material.ForceField
sound_holder.Anchored = true
sound_holder.Parent = workspace
local snd4 = Instance.new("Sound")
snd4.Parent = sound_holder
snd4.SoundId = "rbxassetid://3401386083"
--snd4.PlaybackSpeed = 1
snd4.Volume = 1
snd4:Play()
coroutine.wrap(rocky)({
Radius = 16,
Amount = 24,
Size = Vector3.one * 3,
Origin = hum.RootPart.CFrame,
Exclude = get_hums(hum.RootPart.Position, 24)
})
linger(5, {hum.RootPart, CFrame.new(0, -4, 0), Vector3.one * 28, "Magnitude"}, stats.ConsumingFlames)
re:FireClient(owner, "FlashLight", Color3.new(1, 1, 1))
create_fx("ConsumingFlame", nil, fx.CFrame)
coroutine.wrap(rocky_2)({
Amount = 8,
Origin = fx.CFrame,
Size = NumberRange.new(2, 8),
UpVelocity = NumberRange.new(75, 150),
SideVelocity = NumberRange.new(-75, 75),
Exclude = get_hums(fx.CFrame.Position, 16)
})
dbs.FlameActive = true
task.spawn(function()
local d = 0
local s = tick()
while tick() - s < 30 do
d += task.wait()
if d > 1 then
d = 0
hum.Health += 3
healui(char, 3)
end
end
dbs.FlameActive = false
end)
task.spawn(function()
local limbs = {"Right Arm", "Left Arm"}
for _, v in limbs do
local aura = assets.Particles.Aura:Clone()
aura.Anchored = false
aura.Parent = char
local w = Instance.new("Weld", aura)
w.Part0 = find_limb(v)
w.Part1 = aura
w.C0 = CFrame.new(0, -(w.Part0.Size.Y / 3.5), 0)
for _, v in pairs(aura:GetDescendants()) do
if v:IsA("ParticleEmitter") then
task.spawn(function()
while dbs.FlameActive do
task.wait(1 / v.Rate)
v:Emit(1)
end
end)
end
end
task.spawn(function()
repeat
task.wait()
until not dbs.FlameActive
aura:Destroy()
end)
end
end)
anims.ConsumingFlames.Stopped:Wait()
change()
dbs.Stunned = false
create_cd("ConsumingFlames")
end
local function demon_step()
if dbs.DemonStep or dbs.Stunned or dbs.PoseActive then
return
end
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://7346580257"
--snd.PlaybackSpeed = 1
snd.Volume = 1
snd:Play()
play("DemonStep")
dbs.Stunned = true
dbs.DemonStep = true
anims.DemonStep:Play()
local bv = Instance.new("BodyVelocity", hum.RootPart)
bv.MaxForce = Vector3.one * 10e5
bv.Velocity = (hum.MoveDirection.Magnitude > 0 and hum.MoveDirection or hum.RootPart.CFrame.LookVector) * 50
local fx = assets.Particles.Trail:Clone()
fx.Parent = char
fx.Anchored = false
task.delay(2, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = hum.RootPart
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
end
end
end
anims.DemonStep.Stopped:Wait()
bv:Destroy()
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
v.Enabled = false
end
end
dbs.Stunned = false
create_cd("DemonStep")
end
local function demon_flip()
if dbs.DemonFlip or dbs.Stunned or dbs.PoseActive then
return
end
change(2, 0)
dbs.Stunned = true
dbs.DemonFlip = true
anims.DemonFlip:Play(1.25)
anims.DemonFlip.lerpFactor = 1
play("DemonFlipVFX")
play("DemonFlipSFX")
local snd = Instance.new("Sound")
snd.Parent = hum.RootPart
snd.SoundId = "rbxassetid://8128435386"
--snd.PlaybackSpeed = 1
snd.Volume = 1
snd:Play()
task.wait(.5)
--[[
hum.AutoRotate = false
local bv = Instance.new("BodyVelocity", hum.RootPart)
bv.MaxForce = Vector3.one * 10e5
bv.Velocity = hum.RootPart.CFrame.LookVector * 65
]]
hum.RootPart.Anchored = true
tw:Create(hum.RootPart, TweenInfo.new(.5), {CFrame = hum.RootPart.CFrame * CFrame.new(0, 0, -50)}):Play()
local snd2 = Instance.new("Sound")
snd2.Parent = hum.RootPart
snd2.SoundId = "rbxassetid://7346580257"
--snd2.PlaybackSpeed = 1
snd2.Volume = 1
snd2:Play()
local fx = assets.Particles.Trail:Clone()
fx.Parent = char
fx.Anchored = false
task.delay(1.5, fx.Destroy, fx)
local w = Instance.new("Weld", fx)
w.Part0 = hum.RootPart
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") or v:IsA("Trail") then
if v:IsA("ParticleEmitter") then
emit_2(v, fx)
end
task.delay(.5, function()
v.Enabled = false
end)
end
end
task.spawn(function()
linger(8, {hum.RootPart, CFrame.new(), Vector3.new(9, 9, 12)}, stats.DemonFlip, .05)
for _ = 1, 8 do
task.wait()
task.wait()
coroutine.wrap(rocky_2)({
Amount = 1,
Origin = hum.RootPart.CFrame,
Size = NumberRange.new(1, 2),
Exclude = get_hums(hum.RootPart.Position, 8)
})
end
end)
task.spawn(function()
local s = tick()
while tick() - s < .5 do
task.wait()
local r = find_ground((hum.RootPart.CFrame * CFrame.new(-1, 0, 0)).Position, get_hums(hum.RootPart.Position, 8))
end
end)
task.wait(.5)
-- // bv:Destroy()
hum.RootPart.Anchored = false
anims.DemonFlip.Stopped:Wait()
change()
dbs.Stunned = false
hum.AutoRotate = true
create_cd("DemonFlip")
end
-- // events
owner.Chatted:Connect(function(msg)
if msg == "/e nocd" then
re:FireClient(owner, "DoMove", "NoCooldowns")
end
end)
hum.FreeFalling:Connect(function(fall)
if fall then
anims.Jump:AdjustWeight(3)
elseif not fall then
anims.Jump:AdjustWeight(0)
end
end)
hum.Running:Connect(function(spd)
if spd > .1 then
anims.Run:AdjustWeight(2.5)
else
anims.Run:AdjustWeight(1)
end
end)
local milestones = {
[25] = false,
[50] = false,
[75] = false,
[100] = false
}
local cool_thread
local last_heat = 0
heat.Changed:Connect(function()
if heat.Value - last_heat > 0 then
if cool_thread then
task.cancel(cool_thread)
end
cool_thread = task.delay(5, function()
local accumulate = 0
while heat.Value > 0 do
accumulate += task.wait() * 5
if accumulate > 1 and not no_cd then
heat.Value = math.clamp(heat.Value - 1, 0, 100)
accumulate = 0
end
for i = 1, 4 do
if heat.Value < i * 25 then
milestones[i * 25] = false
end
end
end
end)
end
local base = ui.Character.Meter
base.Text.Value.Text = tostring(heat.Value)
base.Text.Label.Text = `HT.{math.floor(heat.Value / 25)}`
local main = base.Container.Bar.Main
local scale = math.max(heat.Value / 100, 0)
tw:Create(main, TweenInfo.new(.25), {Size = UDim2.fromScale(scale, 1)}):Play()
tw:Create(main.ImageLabel, TweenInfo.new(.25), {Size = UDim2.fromScale((scale > 0 and (1 / scale) or 0), 1)}):Play()
if heat.Value >= 25 and heat.Value < 50 and not milestones[25] then
milestones[25] = true
play("MeterUp1")
local fx = assets.MeterLevel.Level1:Clone()
fx.Parent = workspace
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Torso")
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit(v)
end
end
task.delay(2, fx.Destroy, fx)
elseif heat.Value >= 50 and heat.Value < 75 and not milestones[50] then
milestones[50] = true
play("MeterUp1")
local fx = assets.MeterLevel.Level2:Clone()
fx.Parent = workspace
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Torso")
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit(v)
end
end
task.delay(2, fx.Destroy, fx)
elseif heat.Value >= 75 and heat.Value < 100 and not milestones[75] then
milestones[75] = true
play("MeterUp2")
local fx = assets.MeterLevel.Level3:Clone()
fx.Parent = workspace
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Torso")
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit(v)
end
end
task.delay(2, fx.Destroy, fx)
elseif heat.Value == 100 and not milestones[100] then
milestones[100] = true
play("MeterUp3")
local fx = assets.MeterLevel.Level4:Clone()
fx.Parent = workspace
local w = Instance.new("Weld", fx)
w.Part0 = find_limb("Torso")
w.Part1 = fx
for _, v in pairs(fx:GetDescendants()) do
if v:IsA("ParticleEmitter") then
emit(v)
end
end
task.delay(2, fx.Destroy, fx)
end
last_heat = heat.Value
end)
re.OnServerEvent:Connect(function(plr, args)
if plr ~= owner or char:GetAttribute("Stunned") or hum.RootPart:GetAttribute("TSFrozen") then
return "silly goose"
end
if args.Downs then
if not args.Touch then
downs = args.Keys
end
for i, v in pairs(buttons) do
if downs[i] then
tw:Create(v.Action, TweenInfo.new(.25), {BackgroundTransparency = .75}):Play()
else
tw:Create(v.Action, TweenInfo.new(.25), {BackgroundTransparency = 1}):Play()
end
end
end
if args.Action == "Augimas" then
augimas()
elseif args.Action == "RushAttack" then
rush_attack()
elseif args.Action == "LegBreaker" then
leg_breaker()
elseif args.Action == "RisingDragon" then
rising_dragon()
elseif args.Action == "AxeKick" then
axe_kick()
elseif args.Action == "Misogi" then
misogi()
elseif args.Action == "RagingDemon" then
raging_demon()
elseif args.Action == "ConsumingFlames" then
consuming_flames()
elseif args.Action == "DemonStep" then
demon_step()
elseif args.Action == "DemonFlip" then
demon_flip()
elseif args.Action == "Taunt" then
menu_click:Play()
ui.Moves.Visible = (not ui.Moves.Visible)
ui.Quotes.Visible = (not ui.Quotes.Visible)
elseif args.Action and string.sub(args.Action, 1, 5) == "Taunt" and ui.Quotes.Visible then
menu_click:Play()
ui.Moves.Visible = (not ui.Moves.Visible)
ui.Quotes.Visible = (not ui.Quotes.Visible)
if not dbs.Taunt then
dbs.Taunt = true
taunt(taunts[tonumber(string.match(args.Action, "%d+"))])
end
elseif args.Action == "Pose" and not dbs.Pose and not dbs.Stunned then
dbs.Pose = true
dbs.PoseActive = true
if anims.PoseLoop.IsPlaying then
change()
dbs.PoseActive = false
anims.PoseStart:Stop()
anims.PoseLoop:Stop()
theme:Stop()
else
change(0, 0)
theme:Play()
play("PoseVFX")
task.delay(.3, function()
for _, plr in pairs(game:GetService("Players"):GetPlayers()) do
if plr and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") and (plr.Character.HumanoidRootPart.Position - hum.RootPart.Position).Magnitude <= 24 then
cam_shake(plr, "Bump", 2)
end
end
play("PoseSFX")
play("PoseSFX2")
local kanji = assets.PoseKanji:Clone()
kanji.Parent = workspace
kanji.CastShadow = false
kanji.CFrame = hum.RootPart.CFrame * CFrame.new(0, 1.5, 3) * CFrame.Angles(0, math.pi / 2, 0)
local colors = {
Color3.new(1, 0, 0),
Color3.new(.458, 0, 0),
Color3.new(.239, .082, .521),
Color3.new(.419, .196, .486),
Color3.new(1, 0, .74),
Color3.new(.356, .364, .412)
}
local fx = assets.Particles.StompVFX.Stomp:Clone()
fx.CFrame = CFrame.new()
fx.Parent = char:FindFirstChild("LeftFootAttachment", true)
for _, v in pairs(fx:GetChildren()) do
emit(v)
end
task.delay(2, fx.Destroy, fx)
local i = 1
local t = 0
tw:Create(kanji, TweenInfo.new(1, Enum.EasingStyle.Linear), {Size = kanji.Size * 1.25, CFrame = kanji.CFrame * CFrame.new(0, .7, 0)}):Play()
repeat
t += task.wait()
kanji.Color = colors[i]
i += 1
if i > #(colors) then
i = 1
end
until t >= 1
kanji.Color = Color3.new(1, .349, .349)
tw:Create(kanji, TweenInfo.new(.25), {Size = Vector3.new(kanji.Size.X / 4, 12, kanji.Size.Z / 4), Transparency = 1, CFrame = kanji.CFrame * CFrame.new(0, 5, 0)}):Play()
task.delay(.25, kanji.Destroy, kanji)
end)
anims.PoseStart:Play(2)
anims.PoseStart.Stopped:Wait()
anims.PoseLoop:Play()
end
create_cd("Pose")
elseif args.Action == "NoCooldowns" and cool_guy then
no_cd = not no_cd
local color = (no_cd and "#64E080" or "#EE4B2B")
print(`<b>No cooldowns: {no_cd}`)
end
end)
re.Client.Enabled = true
while true do
task.wait()
if no_cd then
heat.Value = 100
for i in milestones do
milestones[i] = true
end
end
end