0% found this document useful (0 votes)
2 views

3 Dmg Script

The document is a Lua script for a game, specifically for handling player animations and interactions within the game environment. It includes functions for checking and updating animation styles based on server data, managing character states, and configuring various gameplay mechanics such as movement and attacks. The script also incorporates modules for camera effects and hitboxes, and it adjusts animations based on player status and gear configurations.

Uploaded by

thiddenwarrior
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

3 Dmg Script

The document is a Lua script for a game, specifically for handling player animations and interactions within the game environment. It includes functions for checking and updating animation styles based on server data, managing character states, and configuring various gameplay mechanics such as movement and attacks. The script also incorporates modules for camera effects and hitboxes, and it adjusts animations based on player status and gear configurations.

Uploaded by

thiddenwarrior
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 72

local player = game:GetService("Players").

LocalPlayer
local players = game:GetService("Players")
local RunService = game:GetService("RunService")
local tweenservice = game:GetService("TweenService")
local userinputservice = game:GetService("UserInputService")
local replicatedstorage = game:GetService("ReplicatedStorage")
local assets = replicatedstorage:WaitForChild("Assets")
local debris = game:GetService("Debris")

function sub(...)
coroutine.wrap(...)()
end

local Data = player:WaitForChild("CharacterData")


local mouse = player:GetMouse()
local character = player.Character
local animate = character:WaitForChild("Animate")
local humanoid = character:WaitForChild("Humanoid")
local humanoidrootpart = character:WaitForChild("HumanoidRootPart")
local currentcamera = workspace.CurrentCamera

local ClientEffects = require(replicatedstorage.Modules.ClientEffects)


local OdmgModule = require(replicatedstorage.Assets.Modules.odmgmodule)

local checkDataEvent = replicatedstorage.Remotes:WaitForChild("CheckData")


local checkWordEvent = replicatedstorage.Remotes:WaitForChild("CheckWord")

local Animations

local function getServerAnimationStyle()


return checkWordEvent:InvokeServer("AnimationStyle")
end

local function checkAnimationStyle()


local localAnimationStyle = player.CharacterData.AnimationStyle.Value
local serverAnimationStyle = getServerAnimationStyle()

if serverAnimationStyle and localAnimationStyle == serverAnimationStyle then


warn("Animation style is correct.")
Animations = replicatedstorage.Assets.Animations[serverAnimationStyle]
else
warn("Animation style does not match the server's record!")
player.CharacterData.AnimationStyle.Value = serverAnimationStyle
Animations = replicatedstorage.Assets.Animations[serverAnimationStyle]
end
end

checkAnimationStyle()

local camerashaker = require(assets.Modules.CameraShaker)


local raycasthitbox = require(assets.Modules.RaycastHitboxV2)
local Library = require(replicatedstorage.Assets.Modules.Library)

local odmblur = game.Lighting.ODMBlur

local bypass = "vcwls 1010101"

humanoid:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false)
humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown,false)
local camshake = camerashaker.new(Enum.RenderPriority.Camera.Value,
function(shakeCFrame)
currentcamera.CFrame = currentcamera.CFrame * shakeCFrame
end)
camshake:Start()

local odmg, blades, odmggui, StationaryHandles =


assets.Remotes.EquipOdmg:InvokeServer(assets.Models.Odmg,
assets.Models.Odmg.Blades, assets.UI.OdmgGui, bypass)

local Sound = odmg.OdmgRootPart.Sliding


local gas = odmg:WaitForChild("Gas")
local rblade, lblade = blades:FindFirstChild("RightBlade"),
blades:FindFirstChild("LeftBlade")
local hitbox = raycasthitbox:Initialize(blades, {character})

local maxgas = 300


local maxblades = 8
local maxdurability = 275
local attackcd = 1.35
local lastdurability = 0

local currentgas = 0 -- 0
local currentblades = 0 -- 0
local currentdurability =
script.Parent.gearConfiguration.Stats:WaitForChild("BladeDurability") -- 0
local velo = math.floor((player.Character.HumanoidRootPart.AssemblyLinearVelocity *
Vector3.new(1, 0, 1)).Magnitude)

local continuousMovementTime = 0
local maxContinuousTime = 10 -- Max time to increase speed, adjust as needed
local maxVelocityMultiplier = 1.85 -- Max multiplier for velocity, adjust as needed

local gearConfiguration = script.Parent:WaitForChild('gearConfiguration')


local animationStyle = player.CharacterData:WaitForChild("AnimationStyle")

local walkspeed = humanoid.WalkSpeed


local runspeed = 32
local speedmultiplier = 0.72
local orbitspeedmultiplier = 1.35
local slideMultiplier = 3
local attack = 1
local attacking = false
local distance = 60
local distancecounter

local velocityCoroutine

local lhook, rhook


local lhookattached, rhookattached = false, false

local unhookStatus1 = nil


local unhookStatus2 = nil

local HookStatus = gearConfiguration.Stats:WaitForChild("Hooking").Value

local lhitsurface, rhitsurface


local q, e = false, false
local a, d = false, false

local ground = true


local boosting = false
local sheathed = true
local bladesbroken = false
local canuseodmg = false
local backflipping = false
local swiftbladeplayercd = false
local canbackflip = true
local canboostflip = true
local boostflipping = false
local canhold = true
local wireshooting1 = false
local wireshooting2 = false
local canshootleft = true
local canshootright = true

local StudsUI = true

local SpeedLines = {}
local ClosestStation

local canattack = true


local status = false
local boostfliplines = true
local canroll = false
local LeftHookCD = 0
local RightHookCD = 0
local maxforce = 14000

local NoHook = script.NoHook

local humanoiddied
local durabilitychanged
local Getmarkerunsheate
local odmend
local sheateconnection
local sheatestop
local connectionattack1start
local connectiongas
local connectionattack2start
local connectionattack3start
local connectionattack1end
local connectionattack2end
local connectionattack3end
local onhitbox
local RefillGasConnection
local RestockBladesConnection
local humanoiddied

local hooking = script:WaitForChild("hooking")

local lwire1, lwire2 = odmg.LHookExit.Wire1, odmg.LHookExit.Wire2


local rwire1, rwire2 = odmg.RHookExit.Wire1, odmg.RHookExit.Wire2

local questStatus = player.CharacterData:FindFirstChild("RansotengaiQuest").Value


local function checkdata(dataName)
return checkDataEvent:InvokeServer(dataName)
end

-------- normal ones --------------------------------

if checkdata("LegInjury") then
for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://116559067399684"
animate.idle.Animation2.AnimationId = "rbxassetid://116559067399684"
animate.walk.WalkAnim.AnimationId = "rbxassetid://94793032082292"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://84213601631080"
warn("changed gear anim to leginjury")
end

if animationStyle.Value == "ELITE" or animationStyle.Value == "ADMG" then


for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://84128997593078"
animate.idle.Animation2.AnimationId = "rbxassetid://84128997593078"
animate.walk.WalkAnim.AnimationId = "rbxassetid://136215034324714"
animate.jump.JumpAnim.AnimationId = "rbxassetid://86168238695750"
animate.fall.FallAnim.AnimationId = "rbxassetid://72753177908768"
warn("changed gear anim to elite")

elseif animationStyle.Value == "CONTRIBUTORS" then


for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://72145506590564"
animate.idle.Animation2.AnimationId = "rbxassetid://72145506590564"
animate.walk.WalkAnim.AnimationId = "rbxassetid://114139665259241"
animate.jump.JumpAnim.AnimationId = "rbxassetid://126342273351396"
animate.fall.FallAnim.AnimationId = "rbxassetid://97235552049149"
attackcd = 0.85
warn("changed gear anim to contributor")

elseif animationStyle.Value == "ADVANCED" then


for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://72145506590564"
animate.idle.Animation2.AnimationId = "rbxassetid://72145506590564"
animate.walk.WalkAnim.AnimationId = "rbxassetid://71667456185479"
animate.jump.JumpAnim.AnimationId = "rbxassetid://126342273351396"
animate.fall.FallAnim.AnimationId = "rbxassetid://97235552049149"
warn("changed gear anim to advanced")

elseif animationStyle.Value == "STYLECHANGE" then


for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://72145506590564"
animate.idle.Animation2.AnimationId = "rbxassetid://72145506590564"
animate.walk.WalkAnim.AnimationId = "rbxassetid://71667456185479"
animate.jump.JumpAnim.AnimationId = "rbxassetid://126342273351396"
animate.fall.FallAnim.AnimationId = "rbxassetid://97235552049149"
attackcd = 0.70
warn("changed gear anim to stylechange")

else
animate.idle.Animation1.AnimationId = "rbxassetid://116559067399684"
animate.idle.Animation2.AnimationId = "rbxassetid://116559067399684"
animate.walk.WalkAnim.AnimationId = "rbxassetid://137719188144453"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://84213601631080"
warn("changed gear anim to normal")
end

---------------------- alter anims

if checkdata("Megalomaniac") then
if animationStyle.Value == "ELITE" or animationStyle.Value == "ADMG" then
for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://136001493517832"
animate.idle.Animation2.AnimationId = "rbxassetid://136001493517832"
animate.walk.WalkAnim.AnimationId = "rbxassetid://115656646613734"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://96872719969043"
warn("changed gear anim to elite m")
end
end

if checkdata("Megalomaniac") and animationStyle.Value == "STYLECHANGE" or


animationStyle.Value == "ADVANCED" then
for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://75314071061039"
animate.idle.Animation2.AnimationId = "rbxassetid://75314071061039"
animate.walk.WalkAnim.AnimationId = "rbxassetid://115656646613734"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://96872719969043"
attackcd = 0.65
warn("changed gear anim to stylechange m")
end

if checkdata("Megalomaniac") and animationStyle.Value == "CONTRIBUTORS" then


for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://75314071061039"
animate.idle.Animation2.AnimationId = "rbxassetid://75314071061039"
animate.walk.WalkAnim.AnimationId = "rbxassetid://115656646613734"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://96872719969043"
attackcd = 0.85
warn("changed gear anim to contibutor m")
end

if checkdata("Megalomaniac") and checkdata("LegInjury") then


for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://97957522037785"
animate.idle.Animation2.AnimationId = "rbxassetid://97957522037785"
animate.walk.WalkAnim.AnimationId = "rbxassetid://100917331661692"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://96872719969043"
warn("changed gear anim to leg injury m")
end
if checkdata("Megalomaniac") and animationStyle.Value ~= "ADVANCED" and
animationStyle.Value ~= "CONTRIBUTORS" and animationStyle.Value ~= "STYLECHANGE"
and animationStyle.Value ~= "ELITE" and animationStyle.Value ~= "ADMG" then
for _, track in
pairs(humanoid:WaitForChild("Animator"):GetPlayingAnimationTracks()) do
track:Stop(0)
end
animate.idle.Animation1.AnimationId = "rbxassetid://97957522037785"
animate.idle.Animation2.AnimationId = "rbxassetid://97957522037785"
animate.walk.WalkAnim.AnimationId = "rbxassetid://115656646613734"
animate.jump.JumpAnim.AnimationId = "rbxassetid://119180611619871"
animate.fall.FallAnim.AnimationId = "rbxassetid://96872719969043"
warn("changed gear anim to base m")
end

local run = humanoid:LoadAnimation(Animations.OdmgRun)


local run1 = humanoid:LoadAnimation(Animations.Run)
local righthookidle = humanoid:LoadAnimation(Animations.RightHookIdle)
local lefthookidle = humanoid:LoadAnimation(Animations.LeftHookIdle)
local doublehookstart = humanoid:LoadAnimation(Animations.DoubleHookStart)
local doublehookidle = humanoid:LoadAnimation(Animations.DoubleHookIdle)
local rightorbitstart = humanoid:LoadAnimation(Animations.RightOrbitStart)
local rightorbitidle = humanoid:LoadAnimation(Animations.RightOrbitIdle)
local righthookstart = humanoid:LoadAnimation(Animations.RightHookStart)
local righthookstartground =
humanoid:LoadAnimation(Animations.RightHookStartGround)
local leftorbitstart = humanoid:LoadAnimation(Animations.LeftOrbitStart)
local lefthookstart = humanoid:LoadAnimation(Animations.LeftHookStart)
local lefthookstartground = humanoid:LoadAnimation(Animations.LeftHookStartGround)
local leftorbitidle = humanoid:LoadAnimation(Animations.LeftOrbitIdle)
local jumpboost = humanoid:LoadAnimation(Animations.JumpBoost)
local leftboosting = humanoid:LoadAnimation(Animations.LeftBoosting)
local rightboosting = humanoid:LoadAnimation(Animations.RightBoosting)
local unsheathe = humanoid:LoadAnimation(Animations.Unsheathe)
local sheathe = humanoid:LoadAnimation(Animations.Sheathe)
local aunsheathe = humanoid:LoadAnimation(Animations.UnsheatheAir)
local asheathe = humanoid:LoadAnimation(Animations.SheatheAir)
local wallhangstart = humanoid:LoadAnimation(Animations.WallHangStart)
local groundslide = humanoid:LoadAnimation(Animations.GroundSlide)
local backflip = humanoid:LoadAnimation(Animations.Backflip)
local boostflip2 = humanoid:LoadAnimation(Animations.Boostflip2)
local wallhangidle = humanoid:LoadAnimation(Animations.WallHangIdle)
local Use = humanoid:LoadAnimation(Animations.Use)
local Disable = humanoid:LoadAnimation(Animations.Disable)
local Refill = humanoid:LoadAnimation(Animations.Refill)
local lefthookbreak = humanoid:LoadAnimation(Animations.LeftHookBreak)
local grappleend = humanoid:LoadAnimation(Animations.GrappleEnd)
local righthookbreak = humanoid:LoadAnimation(Animations.RightHookBreak)
local land = humanoid:LoadAnimation(Animations.Land)
local landrough = humanoid:LoadAnimation(Animations.LandRough)
local gascheck
local thebardair = humanoid:LoadAnimation(Animations.TheBardAir)

if checkdata("TheBard") then
gascheck = humanoid:LoadAnimation(Animations.TheBard)
else
gascheck = humanoid:LoadAnimation(Animations.GasCheck)
end

local attack1Hold = humanoid:LoadAnimation(Animations.LeftSlashHold)


local attack2Hold = humanoid:LoadAnimation(Animations.RightSlashHold)
local attack3Hold = humanoid:LoadAnimation(Animations.MiddleSlashHold)

local attack1 = humanoid:LoadAnimation(Animations.LeftSlashRelease)


local attack2 = humanoid:LoadAnimation(Animations.RightSlashRelease)
local attack3 = humanoid:LoadAnimation(Animations.MiddleSlashRelease)

attack1.Priority = Enum.AnimationPriority.Action4
attack2.Priority = Enum.AnimationPriority.Action4
attack3.Priority = Enum.AnimationPriority.Action4

attack1Hold.Priority = Enum.AnimationPriority.Action4
attack2Hold.Priority = Enum.AnimationPriority.Action4
attack3Hold.Priority = Enum.AnimationPriority.Action4

gascheck.Priority = Enum.AnimationPriority.Action4
thebardair.Priority = Enum.AnimationPriority.Action4

aunsheathe.Priority = Enum.AnimationPriority.Action3
grappleend.Priority = Enum.AnimationPriority.Action4
lefthookbreak.Priority = Enum.AnimationPriority.Action2
boostflip2.Priority = Enum.AnimationPriority.Action3
asheathe.Priority = Enum.AnimationPriority.Action2
righthookbreak.Priority = Enum.AnimationPriority.Action2
land.Priority = Enum.AnimationPriority.Action3
righthookstartground.Priority = Enum.AnimationPriority.Action2
lefthookstartground.Priority = Enum.AnimationPriority.Action2
righthookidle.Priority = Enum.AnimationPriority.Action
lefthookidle.Priority = Enum.AnimationPriority.Action
rightorbitidle.Priority = Enum.AnimationPriority.Action2
leftorbitidle.Priority = Enum.AnimationPriority.Action2
rightorbitstart.Priority = Enum.AnimationPriority.Action2
leftorbitstart.Priority = Enum.AnimationPriority.Action2
groundslide.Priority = Enum.AnimationPriority.Action3
landrough.Priority = Enum.AnimationPriority.Action4
wallhangidle.Priority = Enum.AnimationPriority.Action4
wallhangstart.Priority = Enum.AnimationPriority.Action4
doublehookstart.Priority = Enum.AnimationPriority.Action3
backflip.Priority = Enum.AnimationPriority.Action4
local messages = {
RansotengaiQuest = {
"SHOW YOUR TRUE HATRED.",
"FIND YOUR TRUE POWER.",
"KEEP GOING.",
"ONE MORE.",
"DO NOT GIVE UP",
"HATE. HATE. HATE",
"SHOW YOUR HATE"
},
Perfect = {
"That was a good cut.",
"Let's keep it up.",
"That training paid off.",
"Clean cut.",
"Good one.",
"Im glad i trained enough.",
"One less titan standing!",
"Nice slash.",

},
Seraphim = {
"Open.",
"Consume.",
"Release.",
"Destroy.",
"Implode.",
"Explode."

},
NotPerfect = {
"Agh.",
"Come on.",
"Am I even trying?",
"What am i even doing?.",
"Whats wrong with me?.",
"Im doing something wrong.",
"Is this my full potential?."
},
Combat = {
"I got you now.",
"This is my chance.",
"Don't mess this up.",
"My adrenaline is pumping.",
"Time to show my power",
}
}

local Char = character

local freefallTime = 1
local start = tick() -- Initially set tick(), so as to not break the script when
the player respawns

local function createhook(hookname)


local a = assets.Hook:Clone()
a.Name = player.Name.."'s "..hookname
a.Parent = workspace.Effects

return a
end
local function createfakehook(hookname)
local a = assets.FakeHook:Clone()
a.Name = hookname
a.Parent = workspace.Effects
return a
end

function PlayHookAnimationDouble()
if lhookattached and rhookattached and not doublehookstart.IsPlaying then
doublehookstart:Play()
end
end

function StopHookAnimationDouble()
doublehookstart:Stop()
end

local function GetClosestStation()


local Distance = 7
local NewClosestStation

for _, Child in pairs(workspace:GetDescendants()) do


if Child:IsA("Model") and (Child.Name == "GasRefill" or Child.Name ==
"BladeBox") then
if (Child.PrimaryPart.Position -
humanoidrootpart.Position).Magnitude <= Distance then
Distance = (Child.PrimaryPart.Position -
humanoidrootpart.Position).Magnitude
NewClosestStation = Child

return NewClosestStation
end
end
end

return nil
end

local function refillEffect(equipping)


humanoid.WalkSpeed = 0
Refill:Play()
if equipping then
Refill:AdjustSpeed(.85)
end
assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Refill)
Refill.Stopped:Wait()
humanoid.WalkSpeed = 16
end
function tweenCameraAndLightningAttack(bool)
if bool == true then
if checkdata("Whisperer") then
local Color = Color3.new(0.836225, 0.834012, 0.927687)
assets.Remotes.Intellect:FireServer(bypass, Color)
local mrandom = math.random(1,10)
if mrandom == 1 then
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "Relax.")
else if mrandom == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I've got


this.")
else if mrandom == 3 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Stay calm.")


else if mrandom == 4 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Breath.")


else if mrandom == 5 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Do it.")


else if mrandom == 6 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Focus.")


else if mrandom == 7 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Stay in


control.")
else if mrandom == 8 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Destroy


it.")
else if mrandom == 9
then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "DO. IT.


KEEP. DOING. IT.")
else if mrandom ==
10 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Keep going.


Don't Stop")
end
end
end
end

end
end
end
end
end
end
end
end
end
local function castray(a, b)
local hit, pos, surf = workspace:FindPartOnRayWithIgnoreList(a, b, true,
false)
if hit ~= nil and hit.Parent:FindFirstChild("isHuman") ~= nil then
table.insert(b, hit.Parent)
return castray(a, b)
elseif hit ~= nil and hit.Parent:FindFirstChild("isHuman") == nil and
(hit.Parent.Name == "Hitbox" or hit.Parent.Name == "Odmg" or hit.Parent.Name ==
"RightBlade" or hit.Parent.Name == "LeftBlade" or hit.Parent.Name == "Musket" or
hit.Parent:IsA("Accessory")) then
table.insert(b, hit.Parent)
return castray(a, b)
elseif hit ~= nil and (hit.Name == "Barrier" or hit.Name == "__RainEmitter"
or hit.Name == "Bite" or hit.Name == "LHand" or hit.Name == "LLeg" or hit.Name ==
"LLeg" or hit.Name == "Nape" or hit.Name == "NapeSwingBox" or hit.Name == "RHand"
or hit.Name == "RLeg" or hit.Name == "RTendon" or hit.Name == "Stomp" or hit.Name
== "SwingBox" or hit.Name == "DummyNape") then
table.insert(b, hit)
return castray(a, b)
elseif hit ~= nil and hit:GetAttribute("NotHookable") then
table.insert(b, hit.Parent)
table.insert(b, hit)
return castray(a, b)
elseif hit ~= nil and hit.Parent:FindFirstChild("isHuman") == nil and not
(hit.Parent.Name == "Hitbox" or hit.Parent.Name == "Odmg" or hit.Parent.Name ==
"RightBlade" or hit.Parent.Name == "LeftBlade" or hit.Parent.Name == "Musket" or
hit.Parent.Name == player.Name.."'s high quality arms") and not
hit.Parent:IsA("Accessory") and not (hit.Name == "Barrier" or hit.Name ==
"__RainEmitter" or hit.Name == "Terrain") then
return hit, pos, surf
elseif hit ~= nil and not hit:GetAttribute("NotHookable") then
return hit, pos, surf
end
end

local function ShowCooldown(Name, Timer)


local CD = player.PlayerGui.RestizeUI.Cooldowns.Frame.Placeholder.CD:Clone()
CD.Parent = player.PlayerGui.RestizeUI.Cooldowns.Frame
CD.BackgroundTransparency = 0.5
CD.ImageTransparency = 1

-- Ensure Top Frame exists


if CD:FindFirstChild("Top") then
CD.Top.SkillMame.Text = Name
CD.Top.CountDown.Text = Timer
else
warn("Top frame not found in CD")
return
end

for _, v in pairs(CD:GetDescendants()) do
if v:IsA("ImageLabel") and v.Name ~= "Top" then
v.BackgroundTransparency = 1
v.ImageTransparency = 1
coroutine.wrap(function()
wait(.05)
game.TweenService:Create(v, TweenInfo.new(.15),
{BackgroundTransparency = 0, ImageTransparency = 0}):Play()
end)()
end
end

CD.Visible = true
game.Debris:AddItem(CD, Timer + .2)
CD.Bar.ImageLabel.Size = UDim2.new(1, 0, 1, 0)
game.TweenService:Create(CD.Bar.ImageLabel, TweenInfo.new(Timer,
Enum.EasingStyle.Linear, Enum.EasingDirection.In), {Size = UDim2.new(0, 0, 1,
0)}):Play()

for i = 1, Timer do
CD.Top.CountDown.Text = Timer - i
wait(1)
end

for _, v in pairs(CD:GetDescendants()) do
if v:IsA("ImageLabel") and v.Name ~= "Top" then
coroutine.wrap(function()
game.TweenService:Create(v, TweenInfo.new(.3), {Position =
UDim2.new(2, 0, 0.277, 0), BackgroundTransparency = 1, ImageTransparency =
1}):Play()
end)()
elseif v:IsA("TextLabel") then
coroutine.wrap(function()
game.TweenService:Create(v, TweenInfo.new(.1),
{TextTransparency = 1}):Play()
end)()
end
end
end

local function CreateSpeedLines()


local db = false
if not db then
db = true
pcall(function()

local SpeedLine =
game.ReplicatedStorage.Assets.Modules.odmgmodule.lines:Clone()
SpeedLine.Parent = character
SpeedLine.Parent = character
SpeedLine.Trail.Enabled = true

local color = math.random(1,2)

if color == 1 then
SpeedLine.Trail.Color =
ColorSequence.new(Color3.fromRGB(255, 255, 255))
else if color == 2 then
SpeedLine.Trail.Color =
ColorSequence.new(Color3.fromRGB(108, 109, 110))
end
end

SpeedLines[SpeedLine] = {Offset = Vector3.new(math.random(-


20,20),math.random(-15,15), 0); Line = SpeedLine}
SpeedLine.CFrame =
(humanoidrootpart.CFrame:ToWorldSpace(CFrame.new(SpeedLines[SpeedLine].Offset,playe
r.Character.HumanoidRootPart.CFrame.Position +
player.Character.HumanoidRootPart.CFrame.LookVector * 10)))
task.wait(.1)

SpeedLine.Trail.Enabled = false
game.Debris:AddItem(SpeedLine,3)

db = false
end)
end

for _,v in pairs(SpeedLines) do


if v then

v.Line.CFrame =
(humanoidrootpart.CFrame:ToWorldSpace(CFrame.new(v.Offset,player.Character.Humanoid
RootPart.CFrame.Position + player.Character.HumanoidRootPart.CFrame.LookVector *
10)))
end
end
end

local function CleanSpeedlines()

pcall(function()
for Index,v in pairs(SpeedLines) do
game.Debris:AddItem(v.Line,.5)

task.delay(.5,function()
SpeedLines[Index] = nil
end)

end
end)
end

local function addBlood(value)


player.PlayerGui.RestizeUI.Vignette.Blood.ImageTransparency =
player.PlayerGui.RestizeUI.Vignette.Blood.ImageTransparency - value
end

local function IsSlidingOnGround()


local character = character
local Origin = character.HumanoidRootPart.Position

local Params = RaycastParams.new()


Params.FilterType = Enum.RaycastFilterType.Blacklist
Params.FilterDescendantsInstances = {character}

local Results = workspace:Raycast(Origin, Vector3.new(0, -3.5, 0), Params)

if Results and Results.Instance then


return true
end
end

local function HasAnyStatusEffect(character)


local statusEffects = {"Stunned", "Immobilized", "Cutscened", "MusketValue"}
for _, effect in ipairs(statusEffects) do
if character:FindFirstChild(effect) then
return true
end
end
return false
end

local function damagecounter(damage, textLabel)


local startValue = 0.0
local duration = 1.4 -- Adjust this to control the speed of the counter
local fadeOutDuration = 1 -- Adjust this for the fade-out speed

textLabel.TextTransparency = 0

local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Linear)


local goal = {Value = damage}

local valueObject = Instance.new("NumberValue")


valueObject.Value = startValue

valueObject:GetPropertyChangedSignal("Value"):Connect(function()
textLabel.Text = string.format("%.1f", valueObject.Value)
end)

local tween = tweenservice:Create(valueObject, tweenInfo, goal)


tween:Play()

tween.Completed:Connect(function()
valueObject:Destroy()

local fadeOutTweenInfo = TweenInfo.new(fadeOutDuration,


Enum.EasingStyle.Linear)
local fadeOutGoal = {TextTransparency = 1}

local fadeOutTween = tweenservice:Create(textLabel, fadeOutTweenInfo,


fadeOutGoal)
fadeOutTween:Play()

fadeOutTween.Completed:Connect(function()
textLabel.Text = ""
end)
end)
end

local holdingG = false


local holdStartTime = 0

player.Character:SetAttribute("3dmgEnabled", false)

mouse.KeyDown:Connect(function(key)
if key == "g" then
holdingG = true
holdStartTime = tick() -- Record the time when "G" was first pressed
while holdingG do
if tick() - holdStartTime >= 0.70 then
if canuseodmg then
player.Character:SetAttribute("3dmgEnabled", false)
Disable:Play()

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Equip)
canuseodmg = false
wait(0.7)
assets.Remotes.EnableDisable:FireServer(odmg, false,
blades, status, StationaryHandles)
else
if checkdata("ArmInjury") then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I can't use


this.")
else
player.Character:SetAttribute("3dmgEnabled",
true)
Use:Play()

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Equip)
canuseodmg = true
assets.Remotes.EnableDisable:FireServer(odmg,
true, blades, status, StationaryHandles)
end
end
break
end
wait(0.1)
end
end
end)

mouse.KeyUp:Connect(function(key)
if key == "g" then
holdingG = false
end
end)

local ReplicatedStorage = game:GetService("ReplicatedStorage")


local remotecall =
ReplicatedStorage:WaitForChild("Remotes"):WaitForChild("callremote")
local player = game.Players.LocalPlayer

-- Ensure this script only runs for players on the Scouting Legion team
if player.Team == game.Teams["Scouting Legion"] then
remotecall.OnClientEvent:Connect(function()
warn("tried increasing gas")
currentgas = currentgas + 200
if currentgas >= 325 then
currentgas = 325
end
ClientEffects.Calm(.5,odmggui)
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"Akille. i feel he's calling to me!.")
end)
end

-- Any additional 3DMG client code goes here


if checkdata("GasConserver") then
maxgas = 325
end
if checkdata("ExtraLeverage") then
distance = 80
end
if checkdata("BladesConserver") then
maxdurability = 325
end

if checkdata("Tailwind") then
speedmultiplier = speedmultiplier + .10
maxVelocityMultiplier = maxVelocityMultiplier + .10
end
if checkdata("Edgerunner") then
speedmultiplier = speedmultiplier + .19
maxVelocityMultiplier = maxVelocityMultiplier + .08
end
if checkdata("Aerodynamic") then
speedmultiplier = speedmultiplier + .05
maxVelocityMultiplier = maxVelocityMultiplier + .05
end
if checkdata("Acrobat") then
speedmultiplier = speedmultiplier + .03
maxVelocityMultiplier = maxVelocityMultiplier + .03
end
if checkdata("Butterfly") then
speedmultiplier = speedmultiplier + .04
end
if checkdata("VelocityManiac") then
maxVelocityMultiplier = maxVelocityMultiplier + .03
end
if checkdata("GearSpecialist") then
speedmultiplier = speedmultiplier + .03
maxVelocityMultiplier = maxVelocityMultiplier + .01
end

if checkdata("GodSpeed") then
speedmultiplier = speedmultiplier + .15
maxVelocityMultiplier = maxVelocityMultiplier + .05
end

if player.Character:GetAttribute("Sandevistan") then
targetvelocity = 700
speedmultiplier = speedmultiplier + .100
maxVelocityMultiplier = maxVelocityMultiplier + .50
end

if checkdata("Tempest") then
speedmultiplier = speedmultiplier + .20
maxVelocityMultiplier = maxVelocityMultiplier + .07
end

if player.Character:GetAttribute("TempestBuff") then
speedmultiplier = speedmultiplier + .08
maxVelocityMultiplier = maxVelocityMultiplier + .07
end

if player.Character:GetAttribute("SuddenGustsBuff") then
speedmultiplier = speedmultiplier + .08
maxVelocityMultiplier = maxVelocityMultiplier + .07
end

if player.Character:GetAttribute("BlessingBuff") then
speedmultiplier = speedmultiplier + .08
maxVelocityMultiplier = maxVelocityMultiplier + .01
end

if player.Character:GetAttribute("NeverSayDieProcced") then
speedmultiplier = speedmultiplier + .05
maxVelocityMultiplier = maxVelocityMultiplier + .01
end

if player.Character:GetAttribute("Overweight") then
speedmultiplier = speedmultiplier - .20
maxVelocityMultiplier = maxVelocityMultiplier - .02
end

if checkdata("LegInjury") and player.Character.Name ~= "CavaleiroLixo" then


speedmultiplier = speedmultiplier - .20
maxVelocityMultiplier = maxVelocityMultiplier + .03
end

if checkdata("ArmInjury") and player.Character.Name ~= "CavaleiroLixo" then


speedmultiplier = speedmultiplier - .20
maxVelocityMultiplier = maxVelocityMultiplier + .03
end

distancecounter = distance * 10

local function findHumanoidRootPart(part)


local currentPart = part
while currentPart do
if currentPart:FindFirstChild("HumanoidRootPart") then
return currentPart.HumanoidRootPart
end
currentPart = currentPart.Parent
end
return nil
end

local function findIsHuman(part)


local currentPart = part
while currentPart do
if currentPart:FindFirstChild("IsHuman") then
return true
end
currentPart = currentPart.Parent
end
return false
end

local function releaseHook(hook, hookAttachedVar, wire1, wire2, getPlayerPosition,


canShootVar, hitSurfaceVar, hookCooldown, isLeftHook)
if isLeftHook then
q = false
hooking = false
wireshooting1 = false
player.Character:SetAttribute("LeftHooking", false)
HookStatus = false
else
e = false
hooking = false
wireshooting2 = false
player.Character:SetAttribute("RightHooking", false)
HookStatus = false
end

CleanSpeedlines()
player.Character:FindFirstChild("Sliding").Value = false

if hook ~= nil then


assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Retract)

if hookAttachedVar and hook:FindFirstChild("WeldConstraint") then


hook.WeldConstraint:Destroy()
hook.Anchored = false

if isLeftHook then
lhookattached = false
else
rhookattached = false
end

wire1.Attachment1 = wire2.Attachment1
wire2.Attachment1 = nil
end

local CS0_Max = 9
local ReturnConnection
local HookReturn = coroutine.create(function()
local Distance = 0.105
wire1.Segments = 500
wire1.CurveSize0 = 0
wire1.CurveSize1 = 0
ReturnConnection =
game:GetService("RunService").Heartbeat:Connect(function()
wire1.CurveSize0 = math.random(-CS0_Max, CS0_Max)
wire1.CurveSize1 = math.random(-CS0_Max, CS0_Max)
local hookExit = getPlayerPosition()
hook.Position = hook.Position:Lerp(hookExit, Distance)
CS0_Max *= 0.95
Distance /= 0.93
if (hook.Position - hookExit).Magnitude <= 1 then
ReturnConnection:Disconnect()
wire1.CurveSize0 = 0
wire1.CurveSize1 = 0
hook:Destroy()
if isLeftHook then
lhook = nil
else
rhook = nil
end
return
end
end)
end)
coroutine.resume(HookReturn)

assets.Remotes.RemoveReplicatedWire:FireServer(hook.Name)

if isLeftHook then
canshootleft = true
lhitsurface = nil
else
canshootright = true
rhitsurface = nil
end

wait(hookCooldown)
end
end

local function getPlayerPosition()


return player.Character and player.Character.PrimaryPart and
player.Character.PrimaryPart.Position or Vector3.new(0, 0, 0)
end

local function releaseLeftHook()


releaseHook(lhook, lhookattached, lwire1, lwire2, getPlayerPosition,
canshootleft, lhitsurface, LeftHookCD, true)
end

local function releaseRightHook()


releaseHook(rhook, rhookattached, rwire1, rwire2, getPlayerPosition,
canshootright, rhitsurface, RightHookCD, false)
end

odmgcore= userinputservice.InputBegan:Connect(function(input, gpe)


if gpe then return end

if input.UserInputType == Enum.UserInputType.MouseButton1 and canattack ==


true and not attacking and not (unsheathe.IsPlaying or sheathe.IsPlaying or
wallhangidle.IsPlaying or gascheck.IsPlaying or thebardair.IsPlaying) and
canuseodmg and not character:FindFirstChildWhichIsA("Tool") and not
HasAnyStatusEffect(character) then
if lblade.LBlade.Transparency == 1 and rblade.RBlade.Transparency == 1
then return end

attacking = true
if attack == 1 and canhold == true then
attack1Hold:Play()
tweenCameraAndLightningAttack(true)
elseif attack == 2 and canhold == true then
attack2Hold:Play()
tweenCameraAndLightningAttack(true)
elseif attack == 3 and canhold == true then
attack3Hold:Play()
tweenCameraAndLightningAttack(true)
end
elseif input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.Q and not q and lhook == nil and
currentgas > 0 and canuseodmg and canshootleft and not
HasAnyStatusEffect(character) then
q = true

if mouse.Target ~= nil and mouse.Target.Name == "Barrier" then


mouse.TargetFilter = mouse.Target
end

do
local ignorelist = {
character
}

local part, partpos

for i = 1, 10 do -- Increased iterations for better


precision
local ray = Ray.new(humanoidrootpart.CFrame.Position,
(mouse.Hit.Position - humanoidrootpart.Position).Unit * distance * i)
local hit, pos, surf = castray(ray, ignorelist)
if hit ~= nil then
part, partpos, lhitsurface = hit, pos, surf
break
elseif not q then
break
end
end

if part ~= nil and partpos ~= nil and lhitsurface ~= nil


and q then

local characterSpeed =
humanoidrootpart.Velocity.Magnitude
if characterSpeed > 50 then -- Arbitrary speed
threshold
local forwardVector = (partpos -
humanoidrootpart.Position).Unit
partpos = partpos + forwardVector *
(characterSpeed * 0.1)
end

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.LeverClick)

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Shot)

if IsSlidingOnGround() then
lefthookstartground:Play()
else
lefthookstart:Play()
end

odmg.LHookExit.A0.Shoot:Emit(20)

lhook = createhook("LeftHook")
lhook.Anchored = true
lwire1.Attachment1 = lhook:FindFirstChild("A1")

lhook.CFrame =
CFrame.new(odmg.LHookExit.CFrame.Position, mouse.Hit.Position)

if partpos and lhook.Position then


local tweeninfo = TweenInfo.new((partpos -
lhook.Position).Magnitude / 200 * 0.05, Enum.EasingStyle.Sine,
Enum.EasingDirection.Out)
local goal = {CFrame = CFrame.new(partpos)}

local tween = tweenservice:Create(lhook,


tweeninfo, goal)
tween:Play()

spawn(function()
for i = 0, 1, 6 do
lwire1.CurveSize0 = -
math.sin(tick() * 60) * 2
lwire1.CurveSize1 = math.sin(tick()
* 60) * 2
wait()
end
lwire1.CurveSize0 = 0
lwire1.CurveSize1 = 0
end)

tween.Completed:Connect(function(playbackstate)
tween:Destroy()
if playbackstate ==
Enum.PlaybackState.Completed then
local lwire2fake =
odmg.LeftGrapple2.Wire2
if findIsHuman(part) then
local rootparthit =
findHumanoidRootPart(part)
if rootparthit then
lhook.CFrame =
rootparthit.CFrame
part = rootparthit
local hookposition =
lhook.CFrame

assets.Remotes.ReplicateWire:FireServer(lwire2fake, lhook.Name, part,


rootparthit.Position, lhitsurface, true, hookposition)
end
else

lhook.CFrame =
CFrame.new(partpos, partpos - lhitsurface)
local hookposition =
lhook.CFrame

assets.Remotes.ReplicateWire:FireServer(lwire2fake, lhook.Name, part,


partpos, lhitsurface, false, hookposition)
end

lhook.Anchored = false
local a =
Instance.new("WeldConstraint")
a.Parent = lhook
a.Part0 = lhook
a.Part1 = part

lwire2.Attachment1 =
lwire1.Attachment1
lwire1.Attachment1 = nil

local lwire2fake =
odmg.LeftGrapple2.Wire2

lhookattached = true
HookStatus = true
wireshooting1 = true

canshootleft = false

player.Character:SetAttribute("LeftHooking", true)

player.Character:SetAttribute("Hooking", true)

if findIsHuman(part) then
local rootparthit =
findHumanoidRootPart(part)

assets.Remotes.HookImpact:FireServer(rootparthit.Parent)

if
checkdata("GearSpecialist") then
local Color =
Color3.new(0.376532, 0.0818189, 0.113893)

assets.Remotes.Intellect:FireServer(bypass, Color)
end

ClientEffects.RedScreen(.5,
odmggui)
local mrandom =
math.random(1, 3)

local selectedMessage =
messages.Combat[mrandom]

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
selectedMessage)
end
end
end)
end
end
end

elseif input.KeyCode == Enum.KeyCode.E and not e and rhook == nil and


currentgas > 0 and canuseodmg and canshootright and not
HasAnyStatusEffect(character) then
e = true

if mouse.Target ~= nil and mouse.Target.Name == "Barrier" then


mouse.TargetFilter = mouse.Target
end

do
local ignorelist = {
character
}

local part, partpos

for i = 1, 10 do -- Increased iterations for better


precision
local ray = Ray.new(humanoidrootpart.CFrame.Position,
(mouse.Hit.Position - humanoidrootpart.Position).Unit * distance * i)
local hit, pos, surf = castray(ray, ignorelist)
if hit ~= nil then
part, partpos, rhitsurface = hit, pos, surf
break
elseif not e then
break
end
end

if part ~= nil and partpos ~= nil and rhitsurface ~= nil


and e then

local characterSpeed =
humanoidrootpart.Velocity.Magnitude
if characterSpeed > 50 then -- Arbitrary speed
threshold
local forwardVector = (partpos -
humanoidrootpart.Position).Unit
partpos = partpos + forwardVector *
(characterSpeed * 0.1)
end

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.LeverClick)

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Shot)

if IsSlidingOnGround() then
righthookstartground:Play()
else
righthookstart:Play()
end
odmg.RHookExit.A0.Shoot:Emit(20)

rhook = createhook("RightHook")
rhook.Anchored = true

rwire1.Attachment1 = rhook:FindFirstChild("A1")

rhook.CFrame =
CFrame.new(odmg.RHookExit.CFrame.Position, mouse.Hit.Position)
if partpos and rhook.Position then
local tweeninfo = TweenInfo.new((partpos -
rhook.Position).Magnitude / 200 * 0.05, Enum.EasingStyle.Sine,
Enum.EasingDirection.Out)
local goal = {CFrame = CFrame.new(partpos)}

local tween = tweenservice:Create(rhook,


tweeninfo, goal)
tween:Play()

spawn(function()
for i = 0, 1, 1.35 do
rwire1.CurveSize0 = -
math.sin(tick() * 60) * 2
rwire1.CurveSize1 = math.sin(tick()
* 60) * 2
wait()
end
rwire1.CurveSize0 = 0
rwire1.CurveSize1 = 0
end)

tween.Completed:Connect(function(playbackstate)
tween:Destroy()
if playbackstate ==
Enum.PlaybackState.Completed then

local rwire2fake =
odmg.RightGrapple2.Wire2
if findIsHuman(part) then
local rootparthit =
findHumanoidRootPart(part)
if rootparthit then
rhook.CFrame =
rootparthit.CFrame
part = rootparthit --
Update the part to be the HumanoidRootPart
local hookposition =
rhook.CFrame

assets.Remotes.ReplicateWire:FireServer(rwire2fake, rhook.Name, part,


rootparthit.Position, rhitsurface, true, hookposition)
end
else
rhook.CFrame =
CFrame.new(partpos, partpos - rhitsurface)
local hookposition =
rhook.CFrame

assets.Remotes.ReplicateWire:FireServer(rwire2fake, rhook.Name, part,


partpos, rhitsurface, false, hookposition)
end

rhook.Anchored = false

local a =
Instance.new("WeldConstraint")
a.Parent = rhook
a.Part0 = rhook
a.Part1 = part

rwire2.Attachment1 =
rwire1.Attachment1
rwire1.Attachment1 = nil

rhookattached = true
HookStatus = true
wireshooting2 = true

canshootright = false

player.Character:SetAttribute("RightHooking", true)

player.Character:SetAttribute("Hooking", true)

if findIsHuman(part) then
local rootparthit =
findHumanoidRootPart(part)

assets.Remotes.HookImpact:FireServer(rootparthit.Parent)

if
checkdata("GearSpecialist") then
local Color =
Color3.new(0.376532, 0.0818189, 0.113893)

assets.Remotes.Intellect:FireServer(bypass, Color)
end

ClientEffects.RedScreen(.5,
odmggui)
local mrandom =
math.random(1, 3)

local selectedMessage =
messages.Combat[mrandom]

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
selectedMessage)
end
end
end)
end
end
end
elseif input.KeyCode == Enum.KeyCode.R and canuseodmg and
IsSlidingOnGround() and not HasAnyStatusEffect(character)then
if (unsheathe.IsPlaying or sheathe.IsPlaying or
wallhangidle.IsPlaying or attacking) then return end
if lblade.LBlade.Transparency == 1 and rblade.RBlade.Transparency
== 1 then
if currentblades ~= 0 then
unsheathe:Play()
status = true
end

elseif lblade.LBlade.Transparency == 0 and


rblade.RBlade.Transparency == 0 then
sheathe:Play()
status = false
end

elseif input.KeyCode == Enum.KeyCode.R and canuseodmg and not


HasAnyStatusEffect(character) then
if (unsheathe.IsPlaying or sheathe.IsPlaying or
wallhangidle.IsPlaying or attacking) then return end
if lblade.LBlade.Transparency == 1 and rblade.RBlade.Transparency
== 1 then
if currentblades ~= 0 then
aunsheathe:Play()
status = true
end

elseif lblade.LBlade.Transparency == 0 and


rblade.RBlade.Transparency == 0 then
asheathe:Play()
status = false
end
elseif input.KeyCode == Enum.KeyCode.Period and IsSlidingOnGround() and
not HasAnyStatusEffect(character) then
if canuseodmg == true then
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "I need my handles stationed.")
return
end

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"Taking off gear.")

Refill:Play()

StudsUI = false
odmgcore:Disconnect()
odmend:Disconnect()
RestockBladesConnection:Disconnect()
RefillGasConnection:Disconnect()
--onhitbox:Disconnect()
connectionattack1end:Disconnect()
connectionattack1start:Disconnect()
connectionattack2end:Disconnect()
connectionattack2start:Disconnect()
sheateconnection:Disconnect()
Getmarkerunsheate:Disconnect()
durabilitychanged:Disconnect()
if q then

assets.Remotes.RemoveReplicatedWireDeath:FireServer(lhook.Name)
else if e then

assets.Remotes.RemoveReplicatedWireDeath:FireServer(rhook.Name)
end
end
assets.Remotes.GearOff:FireServer(player,bypass)

player.Character:SetAttribute("3dmgEnabled", false)
character.HumanoidRootPart:WaitForChild("BodyGyro"):Destroy()
character.HumanoidRootPart:WaitForChild("BodyForce"):Destroy()
character.HumanoidRootPart:WaitForChild("BodyVelocity"):Destroy()

elseif input.KeyCode == Enum.KeyCode.U and not attacking and not


(unsheathe.IsPlaying or sheathe.IsPlaying or wallhangidle.IsPlaying) and not
HasAnyStatusEffect(character) then
if not IsSlidingOnGround() then
if checkdata("TheBard") then
thebardair:Play()

thebardair.Stopped:Wait()

local ratio = currentgas / maxgas


local Ratio = math.floor(ratio * 100 + 0.5) -- Round
to nearest whole number.

local bladeratio = currentdurability.Value /


maxdurability
local bladeRatio = math.floor(bladeratio * 100 + 0.5)
-- Round to nearest whole number.

if checkdata("GearSpecialist") then
sub(function()

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I have


"..Ratio.."%".." of gas left.")
wait(1)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I have


"..bladeRatio.."%".." of blade durability.")
end)
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I have


"..Ratio.."%".." of gas left.")
end
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I need to be


on the ground.")
end
else
if checkdata("TheBard") then
humanoid.WalkSpeed = 0
humanoid.JumpPower = 0

gascheck:Play()

gascheck.Stopped:Wait()

humanoid.WalkSpeed = 16
humanoid.JumpPower = 50
else
humanoid.JumpPower = 0

gascheck:Play()

gascheck.Stopped:Wait()
humanoid.JumpPower = 50
end

local ratio = currentgas / maxgas


local Ratio = math.floor(ratio * 100 + 0.5) -- Round to
nearest whole number.

local bladeratio = currentdurability.Value / maxdurability


local bladeRatio = math.floor(bladeratio * 100 + 0.5) --
Round to nearest whole number.

if checkdata("GearSpecialist") then
sub(function()

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I have


"..Ratio.."%".." of gas left.")
wait(1)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I have


"..bladeRatio.."%".." of blade durability.")
end)
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I have


"..Ratio.."%".." of gas left.")
end
end

elseif input.KeyCode == Enum.KeyCode.A and not wallhangidle.IsPlaying


and not HasAnyStatusEffect(character) then
a = true

if (lhookattached or rhookattached) then


assets.Remotes.Effects:FireServer(gas.Emitter.Burst, 35,
bypass)
assets.Remotes.PlaySound:FireServer(gas.Burst)

end
elseif input.KeyCode == Enum.KeyCode.LeftAlt and currentgas > 0 and not
wallhangidle.IsPlaying and canuseodmg and canboostflip == true and
humanoid:GetState() == Enum.HumanoidStateType.Freefall and checkdata("GasBurst")
and not HasAnyStatusEffect(character) then

if not (q or e) then

sub(function()
ShowCooldown("Gas Burst", 11)
end)

boostflipping = true
boostfliplines = false
canroll = true

humanoidrootpart.Velocity =
((currentcamera.CFrame.LookVector * 425))
currentgas = currentgas - 8
assets.Remotes.Effects:FireServer(gas.Emitter.Burst, 45,
bypass)
canboostflip = false

assets.Remotes.PlaySound:FireServer(gas.Burst)

if not backflip.IsPlaying and lblade.LBlade.Transparency ==


1 and rblade.RBlade.Transparency == 1 then
boostflip2:Play()
camshake:Shake(camerashaker.Presets.Bump,0.2)
OdmgModule.Lines(character)
else
boostflip2:Play()
camshake:Shake(camerashaker.Presets.Bump,0.2)
OdmgModule.Lines(character)
end

wait(1)

boostflipping = false
boostfliplines = true

wait(2)

canroll = false

wait(8)
canboostflip = true

end

elseif input.KeyCode == Enum.KeyCode.T and currentgas > 0 and not


wallhangidle.IsPlaying and canuseodmg and backflipping == false and
checkdata("Backspring") and not HasAnyStatusEffect(character) then

if not (q or e) then

backflipping = true

sub(function()
ShowCooldown("Backspring", 7)
end)

assets.Remotes.Effects:FireServer(gas.Emitter.Burst, 45,
bypass)
assets.Remotes.PlaySound:FireServer(gas.Burst)
backflip:Play()
boostfliplines = false

currentgas = currentgas - 4

humanoidrootpart.Velocity =
((humanoidrootpart.CFrame.LookVector * -295) + (humanoidrootpart.CFrame.UpVector *
140))

camshake:Shake(camerashaker.Presets.Bump,0.2)
OdmgModule.Lines(character)
wait(1)
boostfliplines = true

wait(6)

backflipping = false

end

elseif input.KeyCode == Enum.KeyCode.D and not wallhangidle.IsPlaying


and not HasAnyStatusEffect(character) then
d = true

if (lhookattached or rhookattached) then


assets.Remotes.Effects:FireServer(gas.Emitter.Burst, 35,
bypass)
assets.Remotes.PlaySound:FireServer(gas.Burst)
end

--[[elseif input.KeyCode == Enum.KeyCode.V and not


wallhangidle.IsPlaying and not HasAnyStatusEffect(character) then
coroutine.wrap(function()
if not player.Character:GetAttribute("Focus") then
player.Character:SetAttribute("Focus", true)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Lock in.")


ShowCooldown("Focus", 30)
player.Character:SetAttribute("Focus", false)
end
end)()--]]

elseif input.KeyCode == Enum.KeyCode.Space and currentgas > 0 and not


wallhangidle.IsPlaying and not HasAnyStatusEffect(character) then
if lhookattached or rhookattached then
boosting = true
assets.Remotes.Effects:FireServer(gas.Emitter.Burst, 35,
bypass)
assets.Remotes.PlaySound:FireServer(gas.Burst)
odmblur.Enabled = true
end
end
end
end)

odmend = userinputservice.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.Q and q and not
HasAnyStatusEffect(character) then
releaseLeftHook()
elseif input.KeyCode == Enum.KeyCode.E and e and not
HasAnyStatusEffect(character) then
releaseRightHook()
elseif input.KeyCode == Enum.KeyCode.A and not HasAnyStatusEffect(character)
then
a = false

elseif input.KeyCode == Enum.KeyCode.D and not HasAnyStatusEffect(character)


then
d = false
elseif input.KeyCode == Enum.KeyCode.Space and not
HasAnyStatusEffect(character) then
boosting = false
odmblur.Enabled = false

elseif input.KeyCode == Enum.KeyCode.F and not HasAnyStatusEffect(character)


then

ClosestStation = GetClosestStation()

if ClosestStation ~= nil then

if ClosestStation.Name == "GasRefill" then


if tonumber(ClosestStation.Capacity.Value) < tonumber(1)
then
return
end

local GasNeeded = currentgas - maxgas

wait(9)

assets.Remotes.RefillGas:FireServer(player,GasNeeded)
else
if tonumber(ClosestStation.Capacity.Value) < tonumber(1)
then
return
end
assets.Remotes.RestockBlades:FireServer(odmg,bypass)

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Refill)
Refill:Play()

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.BreakDrop)

if lastdurability ~= 0 then
lastdurability = 0
end

if currentdurability.Value > 0 then


currentdurability.Value = 0
end
end
end
elseif input.UserInputType == Enum.UserInputType.MouseButton1 and attacking
and not (unsheathe.IsPlaying or sheathe.IsPlaying or wallhangidle.IsPlaying or
boostflip2.IsPlaying) and not HasAnyStatusEffect(character) then
if lblade.LBlade.Transparency == 1 and rblade.RBlade.Transparency == 1
then return end

-- Function to handle attack logic


local function handleAttack(attackNumber, attackAnim, attackHold)
attacking = true
attackAnim:Play()
tweenCameraAndLightningAttack(false)
sub(function()
end)

if Data.AnimationStyle.Value == "CONTRIBUTORS" then


local SwingSounds =
odmg.OdmgRootPart.SwingStyle:GetChildren()
local SwingS = SwingSounds[math.random(1, #SwingSounds)]
SwingS:Play()
else
local SwingSounds = odmg.OdmgRootPart.Swings:GetChildren()
local SwingS = SwingSounds[math.random(1, #SwingSounds)]
SwingS:Play()
end

attackHold:Stop()
attack = attackNumber + 1
canattack = false
canhold = false
wait(attackcd)
canattack = true
canhold = true
end

-- Check for "CONTRIBUTORS" animation style


if Data.AnimationStyle.Value == "CONTRIBUTORS" then
if attack == 1 and canattack then
handleAttack(1, attack1, attack1Hold)
elseif attack == 2 and canattack then
handleAttack(2, attack2, attack2Hold)
elseif attack == 3 and canattack then
handleAttack(3, attack3, attack3Hold)
attack = 1 -- Reset attack to 1 after the third attack
end
else
-- Default animation style with 2 attacks
if attack == 1 and canattack then
handleAttack(1, attack1, attack1Hold)
elseif attack == 2 and canattack then
handleAttack(2, attack2, attack2Hold)
attack = 1 -- Reset attack to 1 after the second attack
end
end
end
end)
Getmarkerunsheate =
unsheathe:GetMarkerReachedSignal("BladesOut"):Connect(function()
assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Unsheathe)

if currentblades == 8 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades1, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades11, bypass)
currentblades = currentblades - 2
elseif currentblades == 6 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades2, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades22, bypass)
currentblades = currentblades - 2
elseif currentblades == 4 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades3, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades33, bypass)
currentblades = currentblades - 2
elseif currentblades == 2 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades4, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades44, bypass)
currentblades = currentblades - 2
end

if sheathed then
sheathed = false
end

if bladesbroken then
bladesbroken = false
end

if lastdurability > 0 then


currentdurability.Value = lastdurability
lastdurability = 0
elseif lastdurability == 0 then
currentdurability.Value = maxdurability
end
end)

Getmarkerunsheate =
aunsheathe:GetMarkerReachedSignal("BladesOut"):Connect(function()
assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Unsheathe)

if currentblades == 8 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades1, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades11, bypass)
currentblades = currentblades - 2
elseif currentblades == 6 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades2, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades22, bypass)
currentblades = currentblades - 2
elseif currentblades == 4 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades3, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades33, bypass)
currentblades = currentblades - 2
elseif currentblades == 2 then
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades4, bypass)
assets.Remotes.Unsheathe:FireServer(odmg, lblade.LBlade, rblade.RBlade,
odmg.Blades44, bypass)
currentblades = currentblades - 2
end

if sheathed then
sheathed = false
end

if bladesbroken then
bladesbroken = false
end

if lastdurability > 0 then


currentdurability.Value = lastdurability
lastdurability = 0
elseif lastdurability == 0 then
currentdurability.Value = maxdurability
end
end)

sheateconnection =sheathe:GetMarkerReachedSignal("BladesIn"):Connect(function()
assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Sheathe)

if currentblades == 0 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades4, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades44, bypass)
currentblades = currentblades + 2
elseif currentblades == 2 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades3, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades33, bypass)
currentblades = currentblades + 2
elseif currentblades == 4 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades2, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades22, bypass)
currentblades = currentblades + 2
elseif currentblades == 6 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades1, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades11, bypass)
currentblades = currentblades + 2
end

if not sheathed then


sheathed = true
end

if currentdurability.Value > 0 then


lastdurability = currentdurability.Value
currentdurability.Value = 0
end
end)

sheateconnection =asheathe:GetMarkerReachedSignal("BladesIn"):Connect(function()
assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Sheathe)

if currentblades == 0 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades4, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades44, bypass)
currentblades = currentblades + 2
elseif currentblades == 2 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades3, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades33, bypass)
currentblades = currentblades + 2
elseif currentblades == 4 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades2, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades22, bypass)
currentblades = currentblades + 2
elseif currentblades == 6 then
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades1, bypass)
assets.Remotes.Sheathe:FireServer(lblade.LBlade, rblade.RBlade,
odmg.Blades11, bypass)
currentblades = currentblades + 2
end

if not sheathed then


sheathed = true
end

if currentdurability.Value > 0 then


lastdurability = currentdurability.Value
currentdurability.Value = 0
end
end)

connectionattack1start =
attack1:GetMarkerReachedSignal("AttackStart"):Connect(function()
hitbox:HitStart()

game.ReplicatedStorage.Assets.Remotes.CreateClash:FireServer(bypass)

assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, true, bypass)


assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, true, bypass)

end)

gascheck.KeyframeReached:Connect(function()
if checkdata("TheBard") then
assets.Remotes.PlaySound:FireServer(gas.TheBard)
else
assets.Remotes.PlaySound:FireServer(gas.GasCheck)
end
end)

thebardair.KeyframeReached:Connect(function()
assets.Remotes.PlaySound:FireServer(gas.TheBard)
end)
connectionattack1end
=attack1:GetMarkerReachedSignal("AttackEnd"):Connect(function()
attacking = false

hitbox:HitStop()

assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, false, bypass)


assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, false, bypass)
end)

connectionattack2start =
attack2:GetMarkerReachedSignal("AttackStart"):Connect(function()
hitbox:HitStart()

game.ReplicatedStorage.Assets.Remotes.CreateClash:FireServer(bypass)

assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, true, bypass)


assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, true, bypass)
end)

connectionattack2end
=attack2:GetMarkerReachedSignal("AttackEnd"):Connect(function()
attacking = false

hitbox:HitStop()
assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, false, bypass)

assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, false, bypass)


end)

connectionattack3start =
attack3:GetMarkerReachedSignal("AttackStart"):Connect(function()
hitbox:HitStart()

game.ReplicatedStorage.Assets.Remotes.CreateClash:FireServer(bypass)

assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, true, bypass)


assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, true, bypass)
end)

connectionattack3end =
attack3:GetMarkerReachedSignal("AttackEnd"):Connect(function()
attacking = false

hitbox:HitStop()
assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, false, bypass)

assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, false, bypass)


end)

local debounce = false


hitbox.OnHit:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid") or
hit.Parent.Parent:FindFirstChild("Humanoid")
local rootpart = hit.Parent:FindFirstChild("HumanoidRootPart") or
hit.Parent.Parent:FindFirstChild("HumanoidRootPart")
if currentdurability.Value > 0 then
if hit.Name == "Nape" then
warn("Hit nape")
local damageval = 850

coroutine.wrap(function()
if checkdata("Strength") then damageval = damageval + 50
end
if checkdata("Appeal") then damageval = damageval + 62 end
if checkdata("ConcentrationV1") then damageval = damageval
+ 200 end
if checkdata("Edgerunner") then damageval = damageval + 350
end
if checkdata("Ackerman") then damageval = damageval + 550
end
if checkdata("LegInjury") then damageval = damageval - 50
end
if checkdata("ArmInjury") then damageval = damageval - 120
end
if checkdata("MetalArm") then damageval = damageval + 50
end
if checkdata("MetalLeg") then damageval = damageval + 25
end
if checkdata("Ransotengai") then damageval = damageval +
350 end
if checkdata("Critical") then
local randommcrit = math.random(1, 20)
if not
player.Character:GetAttribute("CriticalCooldown") then
if randommcrit == 1 then -- Critical hit
condition
damageval = damageval + 300

player.Character:SetAttribute("CriticalCooldown", true)
ClientEffects.Calm(0.5, odmggui)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "That's a


critical!")
ShowCooldown("Critical", 30)

wait(30) -- Wait for cooldown


duration

player.Character:SetAttribute("CriticalCooldown", false)
end
end
end
if checkdata("Dueler") then
local randommessage = math.random(1, 10)
if randommessage == 1 then
print("Dueler critical hit")
if not
player.Character:GetAttribute("DuelerCritTrue") then

player.Character:SetAttribute("DuelerCrit", true)

player.Character:SetAttribute("DuelerCritTrue", true)
ClientEffects.Calm(0.5, odmggui)
-- Insert additional Dueler effects
here

wait(30) -- Wait for Dueler


critical hit cooldown

player.Character:SetAttribute("DuelerCritTrue", false)
end
end
end
end)()

if player.Character:GetAttribute("Overweight") then damageval =


damageval - 900 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"I'm too heavy!") end
if player.Character:GetAttribute("TempestPassiveProcced") then
damageval = damageval + 10 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "My prayers are being answered!") end
if player.Character:GetAttribute("AlterEgo") then damageval =
damageval + 250 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"d̷̖̠̗̫̱͖͎̉͆̾í̷̺̊̊̀́ẻ̷̮ͅ") end
if player.Character:GetAttribute("VeloCamera") then damageval =
damageval + 365 end
if player.Character:GetAttribute("ConcentrationV1Buff") then
damageval = damageval + 200 end
if player.Character:GetAttribute("DuelerCrit") then damageval =
damageval + 200 end
if player.Character:GetAttribute("BlessingBuff") then damageval =
damageval + 100 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"That blessing made my hit heavier") end
if player.Character:GetAttribute("BladeArtProcced") then
damageval = damageval + 190 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "A HIT AS STRONG AS I CAN!") end
if player.Character:GetAttribute("NeverSayDieProcced") then
damageval = damageval + 100 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "I wont fall.") end
if player.Character:GetAttribute("FuryProcced") then damageval =
damageval + 100 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"Fall, monster.") end
if player.Character:GetAttribute("ConfidentProcced") then
damageval = damageval + 80 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "Confident as ever.") end
if player.Character:GetAttribute("TempestBuff") then damageval =
damageval + 125 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"The wind carries me.") end
if player.Character:GetAttribute("SuddenGustsBuff") then
damageval = damageval + 200 game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "Thank you, Aeolus.") end
if player.Character:GetAttribute("AboutTitans") then damageval =
damageval + 90 end
if player.Character:GetAttribute("MultiChainRealValue") then
damageval = damageval + 650 end

local damage = math.ceil(damageval * 1.25)

game.ReplicatedStorage.Remotes.Titan:FireServer("Damage", damage,
hit.Parent.Parent)
currentdurability.Value = currentdurability.Value - 10
coroutine.wrap(function()
damagecounter(damage,
player.PlayerGui.RestizeUI.GUI.Damage)
end)()

coroutine.wrap(function()
addBlood(0.45)
end)()

coroutine.wrap(function()
if game.Workspace.Settings.PD.Value == true and not
player.Character:GetAttribute("CombatStarted") then
ClientEffects.CombatStarted(player, 2,
player.PlayerGui.RestizeUI.Meditate)
player.Character:SetAttribute("CombatStarted",
true)
local randommessage = math.random(1,3)
if checkdata("Fury") then
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Time to kill


titans, again!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I CAN FEEL


MY BLOOD BOILING!.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "TIME TO


DESTROY THOSE MONSTERS!.")
end
else
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Time to


fight titans!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I will make


it out alive!.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Adrenaline


is pumping!.")
end
end
end
end)()

coroutine.wrap(function()
if checkdata("Confident") then
if not
player.Character:GetAttribute("ConfidentCooldown") then

player.Character:SetAttribute("ConfidentProcced", true)

player.Character:SetAttribute("ConfidentCooldown", true)
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "COME AND GET
ME!")
ShowCooldown("I'm Confident", 15)

player.Character:SetAttribute("ConfidentProcced", false)
ShowCooldown("Confident", 45)

player.Character:SetAttribute("ConfidentCooldown", false)
end
end
end)()

if checkdata("TitanExpert") then
local SerrationWave = humanoidrootpart.SerrationWave
assets.Remotes.Effects:FireServer(SerrationWave.Trail,
true, bypass)

assets.Remotes.PlaySound:FireServer(SerrationWave.Serration)
task.wait(0.65)
assets.Remotes.Effects:FireServer(SerrationWave.Trail,
false, bypass)
task.wait(0.20)

assets.Remotes.StopSound:FireServer(SerrationWave.Serration)
end

coroutine.wrap(function()
if checkdata("Tempest") then
local randommessage = math.random(1,3)
if not
player.Character:GetAttribute("TempestPassiveProcced") then

player.Character:SetAttribute("TempestPassiveProcced", true)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "May Aeolus


lend me his strength.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "May Aeolus


bestow me his powers.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Aeolus, lend


me your power!.")
end
ClientEffects.Calm(.5,odmggui)
ShowCooldown("Aeolus Blessing", 20)
OdmgModule.Lines(character)

player.Character:SetAttribute("TempestPassiveProcced", false)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "The wind


calms down")
end
end
end)()

coroutine.wrap(function()
if checkdata("BladeArt") then
if not
player.Character:GetAttribute("BladeArtProccedTrue") then

player.Character:SetAttribute("BladeArtProccedTrue", true)

player.Character:SetAttribute("BladeArtProcced", true)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "My next hit


will be stronger.")
ShowCooldown("Blade Crit Timer", 10)

player.Character:SetAttribute("BladeArtProcced", false)
ShowCooldown("Blade Art", 40)

player.Character:SetAttribute("BladeArtProccedTrue", false)

end
end
end)()

coroutine.wrap(function()
if checkdata("Fury") then
if not
player.Character:GetAttribute("FuryProcced") then
local randommessage = math.random(1,4)

player.Character:SetAttribute("FuryProcced", true)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I'm


Amazing.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "No one can


take me down.")
elseif randommessage == 3 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Bring one


more.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "No way i can


fall.")
end
ShowCooldown("Fury", 45)

player.Character:SetAttribute("FuryProcced", false)
end
end
end)()

coroutine.wrap(function()
if checkdata("Guardian") then
if not
player.Character:GetAttribute("GuardianLifesteal") then

player.Character:SetAttribute("GuardianLifesteal", true)
game.ReplicatedStorage.Assets.Remotes.Lifesteal:FireServer()
local randommessage = math.random(1,4)

game.ReplicatedStorage.Assets.Remotes.Lifesteal:FireServer()
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "His blood


heals me.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I feel


better now.")
elseif randommessage == 3 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I feel


rejuvenated.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "My Injuries


are closing.")
end
ShowCooldown("Lifesteal", 60)

player.Character:SetAttribute("GuardianLifesteal", false)
end
end
end)()

coroutine.wrap(function()
if checkdata("MultiChain") then
if not
player.Character:GetAttribute("MultiChain") then

player.Character:SetAttribute("MultiChain", true)

player.Character:SetAttribute("MultiChainRealValue", true)
ClientEffects.Calm(0.65, odmggui)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Multi-


Open.")

sub(function()
ShowCooldown("Multi-Chain", 85)

player.Character:SetAttribute("MultiChain", false)
end)

wait(45)

player.Character:SetAttribute("MultiChainRealValue", false)
end
end
end)()

if damage <= 1500 then


script.NotPerfect:Play()
local mrandom = math.random(1, 11)
local selectedMessage = questStatus and
messages.RansotengaiQuest[mrandom] or messages.NotPerfect[mrandom]

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
selectedMessage)

coroutine.wrap(function()
if checkdata("ChainReaction") then
if not
player.Character:GetAttribute("ChainReaction") then

player.Character:SetAttribute("ChainReaction", true)
local chipdamage = 500

sub(function()
addBlood(0.35)
end)

local Color = Color3.new(0.599786,


0.135103, 0.175158)

assets.Remotes.Intellect:FireServer(bypass, Color)

game.ReplicatedStorage.Remotes.Titan:FireServer("Damage", chipdamage,
hit.Parent.Parent)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Chain-


Connect.")
ShowCooldown("Chain-Reaction", 60)

player.Character:SetAttribute("ChainReaction", false)
end
end
end)()

coroutine.wrap(function()
if checkdata("MultiChain") then
if not
player.Character:GetAttribute("MultiChain") then

player.Character:SetAttribute("MultiChain", true)
ClientEffects.Calm(0.65, odmggui)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Multi-


Open.")
ShowCooldown("Multi-Chain", 60)

player.Character:SetAttribute("MultiChain", false)
end
end
end)()

coroutine.wrap(function()
if checkdata("Chipper") then

game.ReplicatedStorage.Assets.Remotes.GrappleSwift:FireServer(true, hit,
bypass)
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Three.")

wait(0.6)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Two.")

wait(0.6)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "One.")

wait(0.6)

grappleend:Play()

ClientEffects.Calm(0.65, odmggui)
local Color = Color3.new(0.806683,
0.906355, 1)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Got you.")

assets.Remotes.Intellect:FireServer(bypass, Color)

local chipdamage = 600


assets.Remotes.Chipper:FireServer(bypass,
hit)

game.ReplicatedStorage.Assets.Remotes.GrappleSwift:FireServer(false, hit,
bypass)

game.ReplicatedStorage.Remotes.Titan:FireServer("Damage", chipdamage,
hit.Parent.Parent)
end
end)()
end

if damage > 1500 then


if checkdata("Katharsis") then
ClientEffects.Devotion(.5,odmggui)
end
local mrandom = math.random(1,11)
local selectedMessage = questStatus and
messages.RansotengaiQuest[mrandom] or messages.Perfect[mrandom]

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
selectedMessage)

script.PerfectHIT:Play()

coroutine.wrap(function()
if checkdata("FlashOverStyle") then
if not
player.Character:GetAttribute("FlashOver") then

player.Character:SetAttribute("FlashOver", true)
local Color = Color3.new(0.39527,
0.461509, 1)
local FOS =
humanoidrootpart.SerrationWave

assets.Remotes.Effect:FireServer(FOS, 1, bypass)

assets.Remotes.PlaySound:FireServer(FOS.Explosion)
currentgas = currentgas + 15

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "That's more


gas")

assets.Remotes.Intellect:FireServer(bypass, Color)
ShowCooldown("Flash Over Style",
20)

player.Character:SetAttribute("FlashOver", false)

end
end
end)()

local ReplicatedStorage =
game:GetService("ReplicatedStorage")
local giveToolRemote =
ReplicatedStorage:WaitForChild("GiveToolRemote")
local giveToolRemoteEdgerunner =
ReplicatedStorage:WaitForChild("GiveToolRemoteEdgerunner")
local player = game.Players.LocalPlayer

if checkdata("ConcentrationV1") then
if not
player.Character:GetAttribute("ConcentrationV1Cooldown") then
-- Request the tool from the server
giveToolRemote:FireServer()

-- Wait for a moment to ensure the tool is


received and equipped
task.wait(0.2)
local tool =
player.Backpack:FindFirstChild("ConcentrationV1")
if tool then
-- Auto use the tool
player.Character.Humanoid:EquipTool(tool)
tool:Activate()
print("Tool ConcentrationV1 activated.")
else
warn("Tool ConcentrationV1 not found in
backpack")
end

-- Set attributes and show cooldowns

player.Character:SetAttribute("ConcentrationV1Cooldown", true)

player.Character:SetAttribute("ConcentrationV1Buff", true)
ShowCooldown("Concentrated", 300) -- Smoke
effect lasts for 300 seconds

-- End smoke effect and reset attributes

player.Character:SetAttribute("ConcentrationV1Buff", false)
task.wait(1)
ShowCooldown("Total Concentration", 550)
task.wait(1)

player.Character:SetAttribute("ConcentrationV1Cooldown", false)

end
end

coroutine.wrap(function()
if checkdata("Edgerunner") then
if not
player.Character:GetAttribute("EdgerunnerCooldown") then
-- Request the tool from the server

giveToolRemoteEdgerunner:FireServer()

-- Wait for a moment to ensure the


tool is received and equipped
task.wait(1) -- Increase wait time
to 1 second for better reliability
local tool =
player.Backpack:FindFirstChild("Edgerunner")
if tool then
-- Auto use the tool

player.Character.Humanoid:EquipTool(tool)
tool:Activate()
print("Tool Edgerunner
activated.")
else
warn("Tool Edgerunner not
found in backpack")
end

-- Set attributes and show


cooldowns

player.Character:SetAttribute("EdgerunnerCooldown", true)

player.Character:SetAttribute("EdgerunnerBuff", true)
ShowCooldown("On the Edge", 300)
task.wait(1)

player.Character:SetAttribute("EdgerunnerBuff", false)
ShowCooldown("Edgerunner", 550)
task.wait(1)

player.Character:SetAttribute("EdgerunnerCooldown", false)
end
end
end)()
coroutine.wrap(function()
if checkdata("Intellect") then
local Intellect =
humanoidrootpart.Intellect
local Color = Color3.new(250, 247, 255)

assets.Remotes.Effects:FireServer(Intellect, 8, bypass)

assets.Remotes.Effects:FireServer(Intellect.Power, 8, bypass)

assets.Remotes.Effects:FireServer(Intellect.Numbers, 8, bypass)

assets.Remotes.Effects:FireServer(Intellect.Zero, 8, bypass)

assets.Remotes.PlaySound:FireServer(Intellect.Achievement)

assets.Remotes.Intellect:FireServer(bypass, Color)
end
end)()

coroutine.wrap(function()
if checkdata("Katharsis") then
local Devotion =
humanoidrootpart.Devotion

assets.Remotes.Effect:FireServer(Devotion,8,bypass)

assets.Remotes.PlaySound:FireServer(Devotion.Devote)
end
end)()

coroutine.wrap(function()
if checkdata("BladeDancer") then
local Slash =
humanoidrootpart.SlashMastered
local Color = Color3.new(0.758312,
0.918334, 1)

assets.Remotes.Effect:FireServer(Slash,8,bypass)

assets.Remotes.PlaySound:FireServer(Slash.Swing)

assets.Remotes.Intellect:FireServer(bypass, Color)

assets.Remotes.BladeDancer:FireServer(bypass,hit)
end
end)()

coroutine.wrap(function()
if checkdata("Riftblade") then

assets.Remotes.RiftExecute:FireServer(bypass,hit,humanoid)
end
end)()

coroutine.wrap(function()
if checkdata("Eviscerate") then
if
player.Character:GetAttribute("EviscerateReady") then
local Color = Color3.new(0.664424,
0.513283, 0.992798)

assets.Remotes.Intellect:FireServer(bypass, Color)

assets.Remotes.Eviscerate:FireServer(bypass,hit,humanoid)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"Eviscerate.")
end
end
end)()
return
end
end

if hit.Name == "DummyNape" then

local damageval = 850

coroutine.wrap(function()
if checkdata("Strength") then damageval =
damageval + 50 end
if checkdata("Appeal") then damageval =
damageval + 25 end
if checkdata("Critical") then damageval =
damageval + 40 end
end)()

if player.Character:GetAttribute("VeloCamera") then
damageval = damageval + 365 end
if
player.Character:GetAttribute("NeverSayDieProcced") then damageval = damageval + 25
end
if player.Character:GetAttribute("TempestBuff") then
damageval = damageval + 125 end
if player.Character:GetAttribute("SuddenGustsBuff")
then damageval = damageval + 200 end

local damage = math.ceil(damageval * 1.25)

game.ReplicatedStorage.Remotes.Titan:FireServer("Damage", damage,
hit.Parent.Parent)
currentdurability.Value = currentdurability.Value -
10

script.Dust:Play()

if damage <= 1500 then


local mrandom = math.random(1, 11)

local selectedMessage = questStatus and


messages.RansotengaiQuest[mrandom] or messages.NotPerfect[mrandom]

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
selectedMessage)
end
if damage > 1500 then
local mrandom = math.random(1,11)
local selectedMessage = questStatus and
messages.RansotengaiQuest[mrandom] or messages.Perfect[mrandom]

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
selectedMessage)
end
end

local titanmodule =
require(game.ReplicatedStorage.Assets.Modules.Titans)
local Character = player.Character or
player.CharacterAdded:Wait()
local MaxDistance: number = 200
local HRoot = Character:WaitForChild("HumanoidRootPart")
local function GetClosestTitanLeg()
local Closest
local ClosestDist = math.huge
for i,v in ipairs(workspace.Titans:GetChildren()) do
if v:FindFirstChild("HumanoidRootPart") and
v:FindFirstChild("Humanoid") and v.Humanoid.Health > 0 and
v:FindFirstChild("Hitboxes") then
local
Hitboxes=v:FindFirstChild("Hitboxes")
if Hitboxes then
local
RTendon=Hitboxes:FindFirstChild("RTendon")
local
LTendon=Hitboxes:FindFirstChild("LTendon")
local
LLeg=Hitboxes:FindFirstChild("LLeg")
local
RLeg=Hitboxes:FindFirstChild("RLeg")
if LLeg then
local Origin = LLeg.Position
local Dist = (HRoot.Position-
Origin).Magnitude
if Dist < ClosestDist then
ClosestDist = Dist
Closest = v
end

end
end
end
end
if Closest and ClosestDist < MaxDistance then
return Closest
end
return
end

local TitanRemote = game.ReplicatedStorage.Remotes.Titan

if hit.Name == "RTendon" then


local Titan = GetClosestTitanLeg()
local P1 = Titan
script.NotPerfect:Play()
currentdurability.Value = currentdurability.Value -
40

coroutine.wrap(function()
addBlood(0.25)
end)()
local randommessage = math.random(1,3)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Got his


right tendon!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Can't grab


me anymore can you?")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "One less


limb.")
end
TitanRemote:FireServer("RTendon", P1)
titanmodule.Tendon(P1, "Right")
return
end

if hit.Name == "LTendon" then


local Titan = GetClosestTitanLeg()
local P1 = Titan
script.NotPerfect:Play()
currentdurability.Value = currentdurability.Value -
40

coroutine.wrap(function()
addBlood(0.25)
end)()
local randommessage = math.random(1,3)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Got his left


tendon!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Can't grab


me anymore can you?")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "One less


limb.")
end
TitanRemote:FireServer("LTendon", P1)
titanmodule.Tendon(P1, "Left")
return
end

if hit.Name == "LLeg" then


local Titan = hit.Parent.Parent
local P1 = Titan
script.NotPerfect:Play()
currentdurability.Value = currentdurability.Value -
40

coroutine.wrap(function()
addBlood(0.25)
end)()
local randommessage = math.random(1,3)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Stay on the


ground!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I got his


left leg!")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Fall.")


end
TitanRemote:FireServer("LLeg", P1)
titanmodule.AnkleCut(P1, "Left")
return
end

if hit.Name == "RLeg" then


local Titan = hit.Parent.Parent
local P1 = Titan
script.NotPerfect:Play()

currentdurability.Value = currentdurability.Value -
40

coroutine.wrap(function()
addBlood(0.25)
end)()
local randommessage = math.random(1,3)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Stay on the


ground!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I got his


right leg!")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Fall.")


end
TitanRemote:FireServer("RLeg", P1)
titanmodule.AnkleCut(P1, "Right")
return
end

if hit.Name == "Eyes" then


warn("hit eyes")

game.ReplicatedStorage.Remotes.Titan:FireServer("Blind", hit.Parent.Parent)
script.NotPerfect:Play()
currentdurability.Value = currentdurability.Value -
40
coroutine.wrap(function()
addBlood(0.25)
end)()

coroutine.wrap(function()
if checkdata("Fury") then
if not
player.Character:GetAttribute("FuryProcced") then
local randommessage =
math.random(1,4)

player.Character:SetAttribute("FuryProcced", true)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I'm


Amazing.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "No one can


take me down.")
elseif randommessage == 3 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Bring one


more.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "No way i can


fall.")
end
ShowCooldown("Fury Titans", 45)

player.Character:SetAttribute("FuryProcced", false)
end
end
end)()

coroutine.wrap(function()
if checkdata("Tempest") then
local randommessage = math.random(1,3)
if not
player.Character:GetAttribute("TempestPassiveProcced") then

player.Character:SetAttribute("TempestPassiveProcced", true)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "May Aeolus


lend me his strength.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "May Aeolus


give me the force to kill those monsters.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Aeolus, lend


me your power!.")
end
ClientEffects.Calm(.5,odmggui)
ShowCooldown("Aeolus Blessing", 20)
OdmgModule.Lines(character)

player.Character:SetAttribute("TempestPassiveProcced", false)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "The wind is


back to normal.")
end
end
end)()
return
end

if humanoid ~= nil and humanoid.Health > 0 then


if debounce then return end
if hit.Parent:FindFirstChild("MiniClashFrame") or
hit.Parent.Parent:FindFirstChild("MiniClashFrame") and
character:FindFirstChild("MiniClashFrame") then

game.ReplicatedStorage.Assets.Remotes.Clash:FireServer(bypass,character,
rootpart.Parent)
if attack1.IsPlaying then
attack1:Stop()
attacking = false
hitbox:HitStop()

assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, false, bypass)

assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, false, bypass)


end
if attack2.IsPlaying then
attack2:Stop()
attacking = false
hitbox:HitStop()

assets.Remotes.Effects:FireServer(lblade.LBlade.Trail, false, bypass)

assets.Remotes.Effects:FireServer(rblade.RBlade.Trail, false, bypass)


end
if checkdata("ParryArtist") then
currentdurability.Value = currentdurability.Value -
125
else
currentdurability.Value = currentdurability.Value -
maxdurability
end

sub(function()
if e then
releaseRightHook()
end
end)

sub(function()
if q then
releaseLeftHook()
end
end)
return
end

local random = math.random(1, 4)

local baseDamage
local calculatedDamage
local damagecd = false

local function pvpActions(player, humanoid, rootpart, bypass,


hit)
if game.Workspace.Settings.PD.Value == true and not
player.Character:GetAttribute("CombatStarted") then
ClientEffects.CombatStarted(player, 2,
player.PlayerGui.RestizeUI.Meditate)
player.Character:SetAttribute("CombatStarted",
true)
local randommessage = math.random(1, 3)
if checkdata("Fury") then
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Time to


kill, again!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I CAN FEEL


MY BLOOD BOILING!")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "TIME TO


DESTROY!")
end
else
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Time to


fight!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I will make


it out alive!")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Adrenaline


is pumping!")
end
end
end

if checkdata("MultiChain") and not


player.Character:GetAttribute("MultiChain") then
player.Character:SetAttribute("MultiChain",
true)

player.Character:SetAttribute("MultiChainRealValue", true)
ClientEffects.Calm(0.65, odmggui)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Multi-


Open.")
ShowCooldown("Multi-Chain", 85)
task.wait(45)

player.Character:SetAttribute("MultiChainRealValue", false)
player.Character:SetAttribute("MultiChain",
false)
end

if checkdata("TitanExpert") then
local SerrationWave =
humanoidrootpart.SerrationWave

assets.Remotes.Effects:FireServer(SerrationWave.Trail, true, bypass)

assets.Remotes.PlaySound:FireServer(SerrationWave.Serration)
task.wait(0.20)

assets.Remotes.Effects:FireServer(SerrationWave.Trail, false, bypass)


task.wait(0.15)

assets.Remotes.StopSound:FireServer(SerrationWave.Serration)
end

if player.Character:GetAttribute("BladeArtProcced")
then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "A hit as


strong as i can!")

player.Character:SetAttribute("BladeArtProcced", false)
end

if checkdata("Tempest") and not


player.Character:GetAttribute("TempestPassivePVPProcced") then

player.Character:SetAttribute("TempestPassiveProcced", false)

player.Character:SetAttribute("TempestPassivePVPProcced", true)
local randommessage = math.random(1, 3)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Aeolus, I


will kill him!")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "May Aeolus


give me the force to kill this person.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Aeolus, lend


me your power to kill him!")
end
ShowCooldown("Aeolus Murder Intent", 20)

player.Character:SetAttribute("TempestPassivePVPProcced", false)
end

if player.Character:GetAttribute("AlterEgo") then
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "d̷̖̠̗̫̱͖͎̉͆̾í̷̺̊̊̀́ẻ̷̮ͅ")
ShowCooldown("A̶̹͠ L̷̘̽T̴̻̜͗̚Ë̴͚͕́̕Ṟ̷̺̏ ̴̱̙̎̈́Ȩ̷̲̈́G̵̘̐̍O̷͇͚̽", 2)
task.wait(1)
end

if player.Character:GetAttribute("BlessingBuff") then
player.Character:SetAttribute("BlessingBuff",
false)

player.Character:SetAttribute("BlessingBuffPlayer", true)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "That


blessing made my slash stronger")
ShowCooldown("Blessing Remaining Time", 35)

player.Character:SetAttribute("BlessingBuffPlayer", false)
end

if player.Character:GetAttribute("NeverSayDiePVP")
and not player.Character:GetAttribute("NeverSayDieProccedTrue") then

player.Character:SetAttribute("NeverSayDieProccedTrue", true)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "OUR LIVES


ARE ON THE LINE!")
ShowCooldown("Life on the Line", 100)

player.Character:SetAttribute("NeverSayDieProccedTrue", false)
end

if player.Character:GetAttribute("SuddenGustsBuff")
then
player.Character:SetAttribute("SuddenGustPVP",
true)

player.Character:SetAttribute("SuddenGustsBuff", false)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "FOR AEOLUS.


I WILL KILL HIM!")
ShowCooldown("Aeolus Killing Spree Timer", 50)
player.Character:SetAttribute("SuddenGustPVP",
false)
end

if checkdata("Fury") then
if not
player.Character:GetAttribute("FuryProcced") then
local randommessage = math.random(1, 4)

player.Character:SetAttribute("FuryProcced", true)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "DIE,


WORTHLESS.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I'm better


than him.")
elseif randommessage == 3 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I feel the


fury.")
else

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Weak


bastard.")
end
ShowCooldown("Fury", 45)

player.Character:SetAttribute("FuryProcced", false)
end
end

if checkdata("ChainReaction") then
if not
player.Character:GetAttribute("ChainReaction") then

player.Character:SetAttribute("ChainReaction", true)
addBlood(0.35)
local Color = Color3.new(0.599786,
0.135103, 0.175158)

assets.Remotes.Intellect:FireServer(bypass, Color)

assets.Remotes.DealDamage:FireServer(humanoid, 10, bypass, rootpart)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Chain-


Connect.")
ShowCooldown("Chain-Reaction", 60)

player.Character:SetAttribute("ChainReaction", false)
end
end

if checkdata("Guardian") then
if not
player.Character:GetAttribute("GuardianLifesteal") then
addBlood(0.35)

player.Character:SetAttribute("GuardianLifesteal", true)

game.ReplicatedStorage.Assets.Remotes.Lifesteal:FireServer()
local randommessage = math.random(1, 4)
if randommessage == 1 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "His blood


heals me.")
elseif randommessage == 2 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I feel


better now.")
elseif randommessage == 3 then

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "I feel


rejuvenated.")
else
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "My Injuries
are closing.")
end
ShowCooldown("Lifesteal", 60)

player.Character:SetAttribute("GuardianLifesteal", false)
end
end

if checkdata("Chipper") and swiftbladeplayercd ==


false then
swiftbladeplayercd = true
ShowCooldown("Player Chipper", 30)

game.ReplicatedStorage.Assets.Remotes.GrappleSwift:FireServer(true, hit,
bypass)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Three.")


task.wait(0.6)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Two.")


task.wait(0.6)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "One.")


task.wait(0.6)
grappleend:Play()
ClientEffects.Calm(0.65, odmggui)
local Color = Color3.new(0.806683, 0.906355, 1)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "Got you.")


assets.Remotes.Intellect:FireServer(bypass,
Color)
assets.Remotes.Chipper:FireServer(bypass, hit)

game.ReplicatedStorage.Assets.Remotes.GrappleSwift:FireServer(false, hit,
bypass)
assets.Remotes.DealDamage:FireServer(humanoid,
35, bypass, rootpart)
addBlood(0.35)
task.wait(30)
swiftbladeplayercd = false
end
end

local function calculateDamage()


if checkdata("Dueler") and math.random(1, 12) == 1 then
print("dueler crit")
if not
player.Character:GetAttribute("DuelerCritTrue") then

player.Character:SetAttribute("DuelerCritTrue", true)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "That's more


like it, stronger")
calculatedDamage = calculatedDamage + 3
ShowCooldown("Dueler", 30)
player.Character:SetAttribute("DuelerCritTrue", false)
end
end

if checkdata("Critical") and math.random(1, 21) == 1 then


print("critical crit")
if not
player.Character:GetAttribute("CriticalCooldown") then

player.Character:SetAttribute("CriticalCooldown", true)

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player, "That's a


Critical")
calculatedDamage = calculatedDamage + 3
ShowCooldown("Critical", 30)

player.Character:SetAttribute("CriticalCooldown", false)
end
end

if checkdata("Strength") then calculatedDamage =


calculatedDamage + 2 end
if checkdata("ArmInjury") then calculatedDamage =
calculatedDamage - 3 end
if checkdata("LegInjury") then calculatedDamage =
calculatedDamage - 1 end
if checkdata("Ackerman") then calculatedDamage =
calculatedDamage + 3 end
if checkdata("MetalLeg") then calculatedDamage =
calculatedDamage + 1 end
if checkdata("MetalArm") then calculatedDamage =
calculatedDamage + 1 end
if checkdata("ConcentrationV1") then calculatedDamage =
calculatedDamage + 2 end
if player.Character:GetAttribute("TempestPassiveProcced")
then calculatedDamage = calculatedDamage + 2 end
if checkdata("Edgerunner") then calculatedDamage =
calculatedDamage + 3 end
if player.Character:GetAttribute("SuddenGustsBuff") then
calculatedDamage = calculatedDamage + 2 end
if checkdata("Ransotengai") then calculatedDamage =
calculatedDamage + 5 end
if player.Character:GetAttribute("NeverSayDieProccedTrue")
then calculatedDamage = calculatedDamage + 3 end
if player.Character:GetAttribute("BlessingBuff") then
calculatedDamage = calculatedDamage + 2 end
if player.Character:GetAttribute("AlterEgo") then
calculatedDamage = calculatedDamage + 9 end
if player.Character:GetAttribute("EdgerunnerBuff") then
calculatedDamage = calculatedDamage + 4 end
if player.Character:GetAttribute("FuryProcced") then
calculatedDamage = calculatedDamage + 3 end
if player.Character:GetAttribute("Bloodthirsty") then
calculatedDamage = calculatedDamage + 9 end
if player.Character:GetAttribute("PredicamentProcced") then
calculatedDamage = calculatedDamage + 3 end
if player.Character:GetAttribute("BladeArtProcced") then
calculatedDamage = calculatedDamage + 3 end
if player.Character:GetAttribute("Overweight") then
calculatedDamage = calculatedDamage - 12 end
if player.Character:GetAttribute("DuelerCrit") then
calculatedDamage = calculatedDamage + 5 end
if player.Character:GetAttribute("BlessingBuffPlayer") then
calculatedDamage = calculatedDamage + 3 end
if player.Character:GetAttribute("MultiChainRealValue")
then calculatedDamage = calculatedDamage + 8 end
print("Calculated Damage inside function: ",
calculatedDamage)
end

local function applyDamage(player, humanoid, bypass, rootpart)


if damagecd then return end

damagecd = true
debounce = true
task.delay(0.5, function() debounce = false
damagecd = false
end)

local initialDurability = currentdurability.Value


currentdurability.Value = initialDurability -
math.random(8, 16)

if player.Character:GetAttribute("VeloCamera") then
baseDamage = 17
calculatedDamage = baseDamage
calculateDamage()
else
baseDamage = 9
calculatedDamage = baseDamage
calculateDamage()
end
print("Final Damage after calculation: ", calculatedDamage)

attacking = false
hitbox:HitStop()
assets.Remotes.DealDamage:FireServer(humanoid,
calculatedDamage, bypass, rootpart)
damagecounter(calculatedDamage,
player.PlayerGui.RestizeUI.GUI.Damage)
pvpActions(player, humanoid, rootpart, bypass, hit)

game.ReplicatedStorage.Assets.Remotes.Blood:FireServer(bypass,
rootpart.Parent)

coroutine.wrap(function()
addBlood(0.45)
end)()

if humanoid.Parent:FindFirstChild("IsArmored") then
currentdurability.Value = currentdurability.Value -
1000
end

if e then
releaseRightHook()
end
if q then
releaseLeftHook()
end
end

if currentdurability.Value > 0 then


if not damagecd then
if humanoid.Parent:FindFirstChild("IsTitan") == nil
and not humanoid.Parent:FindFirstChild("Dead") then
applyDamage(player, humanoid, bypass, rootpart)
end

end

end
end
end
end)

RefillGasConnection = assets.Remotes.RefillGas.OnClientEvent:Connect(function()
currentgas = maxgas
end)

RestockBladesConnection=
assets.Remotes.RestockBlades.OnClientEvent:Connect(function()
currentblades = maxblades
end)

assets.Remotes.RefillServer.OnClientEvent:Connect(function(refillWhat, amount)
if refillWhat == "blades" then
if amount > maxblades then
amount = maxblades
end

currentblades = amount

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"Refilled blades.")

elseif refillWhat == "gas" then


if amount > maxgas then
amount = maxgas
end

currentgas = amount

game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG", player,
"Refilled gas.")
end

refillEffect()
end)

humanoiddied = humanoid.Died:Connect(function()
odmgcore:Disconnect()
odmend:Disconnect()
RestockBladesConnection:Disconnect()
RefillGasConnection:Disconnect()
--onhitbox:Disconnect()
connectionattack1end:Disconnect()
connectionattack1start:Disconnect()
connectionattack2end:Disconnect()
connectionattack2start:Disconnect()
sheateconnection:Disconnect()
Getmarkerunsheate:Disconnect()
durabilitychanged:Disconnect()

character.HumanoidRootPart:WaitForChild("BodyGyro"):Destroy()
character.HumanoidRootPart:WaitForChild("BodyForce"):Destroy()
character.HumanoidRootPart:WaitForChild("BodyVelocity"):Destroy()

if q then
assets.Remotes.RemoveReplicatedWireDeath:FireServer(lhook.Name)
else if e then
assets.Remotes.RemoveReplicatedWireDeath:FireServer(rhook.Name)
end
end
player.Character:SetAttribute("3dmgEnabled", false)
end)

durabilitychanged = currentdurability.Changed:Connect(function(newdurability)
if newdurability == 0 then
if not sheathed and not bladesbroken then
bladesbroken = true
assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Break)
status = false
assets.Remotes.BreakBlades:FireServer(lblade.LBlade,
rblade.RBlade, bypass)

if player:WaitForChild("CharacterData").GearMastery.Value ~=
"Intermediate" then
game.ReplicatedStorage.Remotes.Admin:FireServer("ODMG",
player, "Blades broke.")
end
end
end
end)

while true do
wait()

coroutine.wrap(function()
if wireshooting1 or wireshooting2 or boostfliplines == false then
local tween =
game:GetService("TweenService"):Create(player.Character.Humanoid, TweenInfo.new(3,
Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {CameraOffset = Vector3.new(0,2,
5.25)})
tween:Play()
tween.Completed:wait()
tween:Destroy()
end
end)()
coroutine.wrap(function()
if humanoidrootpart.Velocity.Magnitude > 220 then
task.delay(.50, function()
CreateSpeedLines()
end)
end
end)()

coroutine.wrap(function()
if wireshooting1 == false or wireshooting2 == false then
local tween =
game:GetService("TweenService"):Create(player.Character.Humanoid, TweenInfo.new(1),
{CameraOffset =Vector3.new()})
tween:Play()
tween.Completed:wait()
tween:Destroy()
end
end)()

game.ReplicatedStorage.Assets.Remotes.updateServerValues:FireServer(currentgas,
maxgas, currentblades, maxblades)

if (lhookattached or rhookattached) and not wallhangidle.IsPlaying then


local Params = RaycastParams.new()
Params.FilterDescendantsInstances = {character, odmg}
Params.FilterType = Enum.RaycastFilterType.Blacklist
local result = workspace:Raycast(humanoidrootpart.Position ,
humanoidrootpart.CFrame.UpVector * -4.6, Params)
if result then
if not sliding then
assets.Remotes.Effects:FireServer(odmg.Gas.Sliding.Specs,
true, bypass)

assets.Remotes.Effects:FireServer(odmg.Gas.SlidingLight.PointLight, true,
bypass)
assets.Remotes.Effects:FireServer(odmg.Gas.Sliding.Sparks,
true, bypass)

assets.Remotes.PlaySound:FireServer(odmg.OdmgRootPart.Sliding)

groundslide:Play()
player.Character:FindFirstChild("Sliding").Value = true
character.Humanoid.JumpPower = 0
sliding = true
end
else
assets.Remotes.Effects:FireServer(odmg.Gas.Sliding.Specs, false,
bypass)

assets.Remotes.Effects:FireServer(odmg.Gas.SlidingLight.PointLight, false,
bypass)
assets.Remotes.Effects:FireServer(odmg.Gas.Sliding.Sparks, false,
bypass)

assets.Remotes.StopSound:FireServer(odmg.OdmgRootPart.Sliding)

player.Character:FindFirstChild("Sliding").Value = false
sliding = false
groundslide:Stop()
end
else
assets.Remotes.Effects:FireServer(odmg.Gas.Sliding.Specs, false,
bypass)
assets.Remotes.Effects:FireServer(odmg.Gas.SlidingLight.PointLight,
false, bypass)
assets.Remotes.Effects:FireServer(odmg.Gas.Sliding.Sparks, false,
bypass)

assets.Remotes.StopSound:FireServer(odmg.OdmgRootPart.Sliding)

sliding = false
character.Humanoid.JumpPower = 50
groundslide:Stop()
end

if (lhookattached or rhookattached) and not wallhangidle.IsPlaying then


if not gas.Emit.IsPlaying then
gas.Emit:Play()
end
elseif not (lhookattached or rhookattached) or wallhangidle.IsPlaying then
if gas.Emit.IsPlaying then
gas.Emit:Stop()
end
end

local velocityMultiplier = 1 + (maxVelocityMultiplier - 1) *


math.min(continuousMovementTime / maxContinuousTime, 1)

if lhook ~= nil and rhook ~= nil and lhookattached and rhookattached then
if humanoid.AutoRotate == true then
humanoid.AutoRotate = false
end
local hookDirectionalForce =
humanoidrootpart:FindFirstChild("HookingForce") or Instance.new("BodyVelocity")
hookDirectionalForce.Name = "HookingForce"
hookDirectionalForce.Parent = humanoidrootpart
hookDirectionalForce.MaxForce = Vector3.new(50000,50000,50000)

local HookDirectionalGyro =
humanoidrootpart:FindFirstChild("HookingGyro") or Instance.new("BodyGyro")
HookDirectionalGyro.Parent = humanoidrootpart
HookDirectionalGyro.Name = "HookingGyro"
HookDirectionalGyro.P = 8000
HookDirectionalGyro.D = 100
HookDirectionalGyro.MaxTorque = Vector3.new(50000, 50000, 50000)

if sliding then
hookDirectionalForce.MaxForce = Vector3.new(maxforce, maxforce,
maxforce) * slideMultiplier
else
hookDirectionalForce.MaxForce = Vector3.new(maxforce, maxforce,
maxforce)
end
local targetVelocity = 95 * speedmultiplier
continuousMovementTime = continuousMovementTime + 1 -- Increase time
while moving

hookDirectionalForce.Velocity = CFrame.new(humanoidrootpart.Position,
lhook.Position / 2 + rhook.Position / 2).LookVector * (targetVelocity *
velocityMultiplier)
HookDirectionalGyro.MaxTorque = Vector3.new(8000, 8000, 8000)
HookDirectionalGyro.CFrame = CFrame.new(humanoidrootpart.Position,
lhook.Position / 2 + rhook.Position / 2)

if not (a or d) then
hookDirectionalForce.Velocity =
CFrame.new(humanoidrootpart.Position, lhook.Position / 2 + rhook.Position /
2).LookVector * (165 * speedmultiplier * velocityMultiplier)
else
if a then
if not attacking and not unsheathe.IsPlaying and not
sheathe.IsPlaying and not leftorbitidle.IsPlaying then
leftorbitidle:Play()
leftorbitstart:Play()
end
hookDirectionalForce.Velocity =
(CFrame.new(humanoidrootpart.Position, lhook.Position / 2 + rhook.Position / 2) *
CFrame.fromEulerAnglesXYZ(0, math.pi / 2.4, 0)).LookVector * (76 *
orbitspeedmultiplier * velocityMultiplier)
elseif d then
if not attacking and not unsheathe.IsPlaying and not
sheathe.IsPlaying and not rightorbitidle.IsPlaying then
rightorbitidle:Play()
rightorbitstart:Play()
end
hookDirectionalForce.Velocity =
(CFrame.new(humanoidrootpart.Position, lhook.Position / 2 + rhook.Position / 2) *
CFrame.fromEulerAnglesXYZ(0, math.pi / -2.4, 0)).LookVector * (76 *
orbitspeedmultiplier * velocityMultiplier)
end
end
if sliding then
hookDirectionalForce.MaxForce = Vector3.new(maxforce, maxforce,
maxforce)
hookDirectionalForce.Velocity =
CFrame.new(humanoidrootpart.Position, lhook.Position / 2 + rhook.Position /
2).LookVector * (300 * speedmultiplier * velocityMultiplier)
HookDirectionalGyro.MaxTorque = Vector3.new(maxforce, maxforce,
maxforce)
HookDirectionalGyro.CFrame =
CFrame.new(humanoidrootpart.Position, lhook.Position / 2 + rhook.Position / 2)
end
currentgas = currentgas - 0.08
elseif lhook ~= nil and lhookattached then
local hookDirectionalForce =
humanoidrootpart:FindFirstChild("HookingForce") or Instance.new("BodyVelocity")
hookDirectionalForce.Name = "HookingForce"
hookDirectionalForce.Parent = humanoidrootpart
hookDirectionalForce.MaxForce = Vector3.new(50000,50000,50000)

local HookDirectionalGyro =
humanoidrootpart:FindFirstChild("HookingGyro") or Instance.new("BodyGyro")
HookDirectionalGyro.Parent = humanoidrootpart
HookDirectionalGyro.Name = "HookingGyro"
HookDirectionalGyro.P = 8000
HookDirectionalGyro.D = 100
HookDirectionalGyro.MaxTorque = Vector3.new(50000, 50000, 50000)

if 5 > (lhook.Position - humanoidrootpart.Position).Magnitude and not


wallhangidle.IsPlaying and 3 > (Vector3.new() -
humanoidrootpart.Velocity).Magnitude and 1 > (Vector3.new() +
humanoidrootpart.Velocity).Magnitude and lhook:FindFirstChild("WeldConstraint") ~=
nil and lhook.WeldConstraint.Part1.Parent:FindFirstChild("Humanoid") == nil then
hookDirectionalForce.Velocity = Vector3.new()
HookDirectionalGyro.CFrame = CFrame.new(lhook.Position,
lhook.Position + lhitsurface) * CFrame.new(0, 0, -0.25) *
CFrame.fromEulerAnglesXYZ(0, -math.pi, 0)
humanoidrootpart.CFrame = CFrame.new(lhook.Position,
lhook.Position + lhitsurface) * CFrame.new(-2, -2, -1) *
CFrame.fromEulerAnglesXYZ(0, -math.pi, 0)
wallhangidle:Play()

sliding = false
groundslide:Stop()
wallhangstart:Play()
elseif not wallhangidle.IsPlaying and (q or e) or (lhook.Position -
humanoidrootpart.Position).Magnitude > 8 then
wallhangidle:Stop()
wallhangstart:Stop()
end

if humanoid.AutoRotate == true then


humanoid.AutoRotate = false
end

if not wallhangidle.IsPlaying then


currentgas = currentgas - 0.04
end

if 2 > (humanoidrootpart.Position - lhook.Position).Magnitude or


wallhangidle.IsPlaying then
hookDirectionalForce.Velocity = Vector3.new()
HookDirectionalGyro.MaxTorque = Vector3.new(8000, 8000, 8000)
hookDirectionalForce.MaxForce = Vector3.new(8000, 8000, 8000)
else
if not (a or d) then
hookDirectionalForce.Velocity =
CFrame.new(humanoidrootpart.Position, lhook.Position).LookVector * (150 *
speedmultiplier * velocityMultiplier)
else
if a then
if not attacking and not unsheathe.IsPlaying and not
sheathe.IsPlaying and not leftorbitidle.IsPlaying then
leftorbitidle:Play()
leftorbitstart:Play()
end
hookDirectionalForce.Velocity =
(CFrame.new(humanoidrootpart.Position, lhook.Position) *
CFrame.fromEulerAnglesXYZ(0, math.pi / 2.4, 0)).LookVector * (80 *
orbitspeedmultiplier * velocityMultiplier)
elseif d then
if not attacking and not unsheathe.IsPlaying and not
sheathe.IsPlaying and not rightorbitidle.IsPlaying then
rightorbitidle:Play()
rightorbitstart:Play()
end
hookDirectionalForce.Velocity =
(CFrame.new(humanoidrootpart.Position, lhook.Position) *
CFrame.fromEulerAnglesXYZ(0, math.pi / -2.4, 0)).LookVector * (80 *
orbitspeedmultiplier * velocityMultiplier)
end
end
if sliding then
hookDirectionalForce.MaxForce = Vector3.new(maxforce,
maxforce, maxforce) * slideMultiplier
else
hookDirectionalForce.MaxForce = Vector3.new(maxforce,
maxforce, maxforce)
end
HookDirectionalGyro.CFrame =
CFrame.new(humanoidrootpart.Position, lhook.Position)
HookDirectionalGyro.MaxTorque = Vector3.new(8000, 8000, 8000)
end
elseif rhook ~= nil and rhookattached then
local hookDirectionalForce =
humanoidrootpart:FindFirstChild("HookingForce") or Instance.new("BodyVelocity")
hookDirectionalForce.Name = "HookingForce"
hookDirectionalForce.Parent = humanoidrootpart
hookDirectionalForce.MaxForce = Vector3.new(50000,50000,50000)

local HookDirectionalGyro =
humanoidrootpart:FindFirstChild("HookingGyro") or Instance.new("BodyGyro")
HookDirectionalGyro.Parent = humanoidrootpart
HookDirectionalGyro.Name = "HookingGyro"
HookDirectionalGyro.P = 8000
HookDirectionalGyro.D = 100
HookDirectionalGyro.MaxTorque = Vector3.new(50000, 50000, 50000)
if 5 > (rhook.Position - humanoidrootpart.Position).Magnitude and not
wallhangidle.IsPlaying and 3 > (Vector3.new() -
humanoidrootpart.Velocity).Magnitude and 1 > (Vector3.new() +
humanoidrootpart.Velocity).Magnitude and rhook:FindFirstChild("WeldConstraint") ~=
nil and rhook.WeldConstraint.Part1.Parent:FindFirstChild("Humanoid") == nil then
hookDirectionalForce.Velocity = Vector3.new()
HookDirectionalGyro.CFrame = CFrame.new(rhook.Position,
rhook.Position + rhitsurface) * CFrame.new(0, 0, -0.25) *
CFrame.fromEulerAnglesXYZ(0, -math.pi, 0)
humanoidrootpart.CFrame = CFrame.new(rhook.Position,
rhook.Position + rhitsurface) * CFrame.new(-2, -2, -1) *
CFrame.fromEulerAnglesXYZ(0, -math.pi, 0)
wallhangidle:Play()
wallhangstart:Play()

sliding = false
groundslide:Stop()
elseif not wallhangidle.IsPlaying and (q or e) or (rhook.Position -
humanoidrootpart.Position).Magnitude > 8 then
wallhangidle:Stop()
wallhangstart:Stop()
end

if humanoid.AutoRotate == true then


humanoid.AutoRotate = false
end

if not wallhangidle.IsPlaying then


currentgas = currentgas - 0.04
end

if 2 > (humanoidrootpart.Position - rhook.Position).Magnitude or


wallhangidle.IsPlaying then
hookDirectionalForce.Velocity = Vector3.new()
HookDirectionalGyro.MaxTorque = Vector3.new(8000, 8000, 8000)
hookDirectionalForce.MaxForce = Vector3.new(8000, 8000, 8000)
else
if not (a or d) then
hookDirectionalForce.Velocity =
CFrame.new(humanoidrootpart.Position, rhook.Position).LookVector * (150 *
speedmultiplier * velocityMultiplier)
else
if a then
if not attacking and not unsheathe.IsPlaying and not
sheathe.IsPlaying and not leftorbitidle.IsPlaying then
leftorbitidle:Play()
leftorbitstart:Play()
end
hookDirectionalForce.Velocity =
(CFrame.new(humanoidrootpart.Position, rhook.Position) *
CFrame.fromEulerAnglesXYZ(0, math.pi / 2.4, 0)).LookVector * (80 *
orbitspeedmultiplier * velocityMultiplier)
elseif d then
if not attacking and not unsheathe.IsPlaying and not
sheathe.IsPlaying and not rightorbitidle.IsPlaying then
rightorbitidle:Play()
rightorbitstart:Play()
end
hookDirectionalForce.Velocity =
(CFrame.new(humanoidrootpart.Position, rhook.Position) *
CFrame.fromEulerAnglesXYZ(0, math.pi / -2.4, 0)).LookVector * (80 *
orbitspeedmultiplier * velocityMultiplier)
end
end
if sliding then
hookDirectionalForce.MaxForce = Vector3.new(maxforce,
maxforce, maxforce) * slideMultiplier
else
hookDirectionalForce.MaxForce = Vector3.new(maxforce,
maxforce, maxforce)
end
HookDirectionalGyro.CFrame =
CFrame.new(humanoidrootpart.Position, rhook.Position)
HookDirectionalGyro.MaxTorque = Vector3.new(8000, 8000, 8000)
end
else

continuousMovementTime = 0 -- Reset time when not moving


if humanoidrootpart:FindFirstChild("HookingForce") then

if humanoid.AutoRotate == false then


humanoid.AutoRotate = true
end
if gas.Emitter.Jet.Enabled == true then
assets.Remotes.Effects:FireServer(gas.Emitter.Jet, false,
bypass)
end

if gas.A1.Trail.Enabled == true then


assets.Remotes.Effects:FireServer(gas.A1.Trail, false,
bypass)
end

if humanoidrootpart:FindFirstChild("FlingCD") then
humanoidrootpart.HookingForce:Destroy();
else
task.spawn(function()
local waitTime = 0.3

if
humanoidrootpart:FindFirstChild("HookingForce").Velocity.Magnitude >= 125 then
waitTime = 0.65
elseif
humanoidrootpart:FindFirstChild("HookingForce").Velocity.Magnitude >= 240 then
waitTime = 0.85
end

local startTime = tick();


while tick() - startTime < waitTime do
if unhookStatus1 == "UnhookAvailable" or
unhookStatus2 == "UnhookAvailable" then
return
end
task.wait()
end

if not HookStatus and


humanoidrootpart:FindFirstChild("HookingForce") then
humanoidrootpart.HookingForce:Destroy()
end

if not HookStatus and


humanoidrootpart:FindFirstChild("HookingGyro") then
humanoidrootpart.HookingGyro:Destroy()
end
end)
end
end
end

-- Check if the player is hooking


local isHooking = player.Character:GetAttribute("LeftHooking") or
player.Character:GetAttribute("RightHooking")

-- If hooking and boosting, apply the effects


if isHooking and boosting and canuseodmg then
camshake:Shake(camshake.Presets.Boost)
local bv = humanoidrootpart:FindFirstChild("HookingForce")

if bv then
bv.Velocity = bv.Velocity + humanoidrootpart.CFrame.LookVector *
60 * speedmultiplier
end

currentgas = currentgas - 0.10

if gas.Emitter.Jet.Enabled == false and not (unsheathe.IsPlaying or


sheathe.IsPlaying or wallhangidle.IsPlaying) and character:FindFirstChild("Musket")
== nil then
assets.Remotes.Effects:FireServer(gas.Emitter.Jet, true, bypass)
assets.Remotes.Effects:FireServer(gas.A1.Trail, true, bypass)
end

local ignorelist = { character }


local ray = Ray.new(humanoidrootpart.Position,
humanoidrootpart.Position - Vector3.new(0, 1024, 0))
local hit, pos = workspace:FindPartOnRayWithIgnoreList(ray, ignorelist,
true, false)

if (humanoidrootpart.Position - pos).Magnitude > 4 and


humanoid.WalkSpeed ~= 100 and not jumpboost.IsPlaying and not (unsheathe.IsPlaying
or sheathe.IsPlaying) and character:FindFirstChild("Musket") == nil then
humanoid.WalkSpeed = 100
jumpboost:Play()
elseif (humanoidrootpart.Position - pos).Magnitude <= 5 and
(humanoid.WalkSpeed ~= walkspeed or jumpboost.IsPlaying) and not
(unsheathe.IsPlaying or sheathe.IsPlaying) then
jumpboost:Stop()
end
else
-- Stop effects when not boosting or hooking
if gas.Emitter.Jet.Enabled == true then
assets.Remotes.Effects:FireServer(gas.Emitter.Jet, false, bypass)
end
if gas.A1.Trail.Enabled == true then
assets.Remotes.Effects:FireServer(gas.A1.Trail, false, bypass)
end

-- Reset the WalkSpeed to normal if not boosting


if humanoid.WalkSpeed ~= walkspeed or jumpboost.IsPlaying then
jumpboost:Stop()
end
end

if not rhookattached and righthookidle.IsPlaying then


righthookstart:Stop()
righthookidle:Stop()
if not IsSlidingOnGround() then
righthookbreak:Play()
end

elseif rhookattached and not righthookidle.IsPlaying then


if lhookattached then
doublehookstart:Play()
end
righthookidle:Play()
elseif lhookattached and not lefthookidle.IsPlaying then
if rhookattached then
doublehookstart:Play()
end
lefthookidle:Play()
elseif not lhookattached and lefthookidle.IsPlaying then
lefthookstart:Stop()
lefthookidle:Stop()
if not IsSlidingOnGround() then
lefthookbreak:Play()
end

if lhookattached or rhookattached and not doublehookidle.IsPlaying then


doublehookidle:Play()
end
elseif not (lhookattached or rhookattached) and doublehookidle.IsPlaying then
doublehookidle:Stop()
end
if not (lhookattached or rhookattached) and doublehookstart.IsPlaying then
doublehookstart:Stop()
end

if not a or not lhookattached and not rhookattached and


leftorbitidle.IsPlaying then
leftorbitidle:Stop()
end

if not d or not lhookattached and not rhookattached and


rightorbitidle.IsPlaying then
rightorbitidle:Stop()
end

if (Vector3.new() - humanoidrootpart.Velocity).magnitude > 12 and


wallhangidle.IsPlaying or not (q or e) then
wallhangidle:Stop()
wallhangstart:Stop()
end

if currentgas < 0 then


currentgas = 0

sub(function()
if e then
releaseRightHook()
end
end)

sub(function()
if q then
releaseLeftHook()
end
end)

if boosting then
boosting = false
end
end

if HasAnyStatusEffect(character) then
sub(function()
if e then
releaseRightHook()
end
end)

sub(function()
if q then
releaseLeftHook()
end
end)

sub(function()
if a then
a = false
end
end)

sub(function()
if d then
d = false
end
end)
end

if currentdurability.Value < 0 then


currentdurability.Value = 0
end
end

warn("-----")
warn("Loaded ResTech 3dmg Client!")
warn("-----")

You might also like