0.99 then Vector3.xAxis else e).Unit;a,e=E:Cross(c).Unit,p and 6 or 7;for p_112=0,e-1,1 do P_111=math.tau*p_112/e;c=I+(E*math.cos(P_111)+a*math.sin(P_111))*9.9;if l:Check(c,W,N)then return false,c;end;end;return false,nil;end
end
tbl17.gU = function()
local gu = tbl17.cache.gU
if not gu then
gu = { c = fn35() }
tbl17.cache.gU = gu
end
return gu.c
end
end
do -- gV
local function fn35()
local v115 = tbl17.cn()
local v116 = tbl17.cN()
local v117 = tbl17.cq()
local v118 = tbl17.bG()
local v119 = tbl17.bI()
tbl17.c_()
tbl17.cF()
local v120 = tbl17.gS()
tbl17.dm()
tbl17.cU()
local v121 = tbl17.c4()
tbl17.cX()
tbl17.cE()
local v122 = tbl17.c6()
local v123 = tbl17.c7()
local v124 = tbl17.dc()
local v125 = tbl17.ci()
tbl17.gT()
local v126 = tbl17.k()
local v127 = tbl17.aH()
local v128 = tbl17.dd()
local v129 = tbl17.de()
local v130 = tbl17.df()
local v131 = tbl17.cO()
local v132 = tbl17.gU()
local v133 = tbl17.dg()
local data = v118.Data
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3, arg4, arg5)
local silentAim = v126.new("silent_aim")
local silentAim2 = data.SilentAim
local fov = silentAim2.Fov
local targetConditions = silentAim2.TargetConditions
local v134 = silentAim2.TargetHitboxes[v127.DefaultProfile.Class]
local manipulate = silentAim2.Manipulate
local obj = setmetatable({}, { __mode = "k" })
local function fn36(arg6, arg7, arg8)
if manipulate.Enabled then
local mode = manipulate.Mode
if mode == "OnAllTargets" or arg8 and mode == "OnBestTarget" then
local v135, v136 = v132(arg3, arg6, arg7)
if not v135 then
obj[arg7] = v136
end
return v136 ~= nil
end
end
obj[arg7] = nil
return not targetConditions.Visible or arg3:Check(arg6, arg7, arg7.Parent)
end
local v135 = silentAim:Add(v117.new(v119.Fov, fov.Radius, fov.Circle, true))
local followTarget = fov.Circle.FollowTarget
local speed = followTarget.Speed
local damper = followTarget.Damper
local snapDistance = followTarget.SnapDistance
local v136 = v122.new(v133(), speed, damper, snapDistance)
local v137 = v124.new(arg2, arg, targetConditions, v134, fn36)
local tbl18 = {
_trove = silentAim,
_playerContext = arg2,
_inputBinding = arg4,
_textIndicatorList = arg5,
_targetSelection = v125.new(v137, v115.buildMeasure(silentAim2.Fov.Radius, silentAim2.TargetConditions.WithinFov), v130),
_targetAcquisition = v123.new(),
_computeTargetPoint = v115.buildTargetPoint(silentAim2.HitboxPoint),
_fovRender = v135,
_fovFollower = v136,
_active = false,
_visibleOriginByHitbox = obj,
_currentTarget = nil,
_currentHitbox = nil,
_targetScreenPosition = nil,
}
setmetatable(tbl18, index2)
silentAim:Add(v121:ObserveEnabledKeybind({ "SilentAim" }, function(active)
tbl18._active = active
arg4:SetEnabled(active)
end))
arg4:SetHandler(function(arg6)
tbl18:_HandleInput(arg6)
end)
local v138 = v129(arg2, silentAim, "features.SilentAim", v137, function() return data.SilentAim.TargetHitboxes end)
local function fn37(selection) tbl18._targetSelection:SetHitboxSelectionMode(v115.buildHitboxSelectionMode(selection)) end
local function fn38(m)
manipulate = m
v137:UseBestFirstConditionCheck(m.Enabled and m.Mode == "OnBestTarget")
end
silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "HitboxPoint" }), function(point) tbl18._computeTargetPoint = v115.buildTargetPoint(point) end)
silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "Fov" }), function(f)
tbl18._targetSelection:SetMeasure(v115.buildMeasure(f.Radius, targetConditions.WithinFov))
v135:SetRadius(f.Radius)
v135:SetProperties(f.Circle)
local ft = f.Circle.FollowTarget
v136:SetProperties(ft.Speed, ft.Damper, ft.SnapDistance)
end)
silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "TargetConditions" }), function(c)
targetConditions = c
v137:SetConditions(c)
tbl18._targetSelection:SetMeasure(v115.buildMeasure(data.SilentAim.Fov.Radius, c.WithinFov))
end)
silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "TargetHitboxes" }), v138)
silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "HitboxSelection" }), fn37)
silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "Manipulate" }), fn38)
fn38(silentAim2.Manipulate)
fn37(silentAim2.HitboxSelection)
v138()
return tbl18
end
index2.GetTargetScreenPosition = function(arg)
return arg._targetScreenPosition
end
index2.Update = function(arg, arg2)
local inner = arg._playerContext.Inner
local silentAim = data.SilentAim
local flag19 = inner ~= nil and inner.ItemBehaviors:EquippedItemAsGun() or nil
arg:_UpdateTarget(arg2, flag19, silentAim)
arg:_UpdateRender(arg2, flag19, silentAim)
end
index2._UpdateRender = function(arg, arg2, arg3, arg4)
arg:_UpdateFovRender(arg2, arg3, arg4)
arg:_UpdateTextIndicator(arg4)
end
index2._UpdateFovRender = function(arg, arg2, arg3, arg4)
local circle = arg4.Fov.Circle
local flag19 = arg4.Enabled and circle.Visible and arg3 ~= nil
local fovRender = arg._fovRender
local fovFollower = arg._fovFollower
fovRender:SetVisible(flag19)
local v134 = v133()
fovFollower:SetInitial(v134)
local followTarget = circle.FollowTarget
fovFollower:SetTarget(flag19 and followTarget.Enabled and arg._targetScreenPosition or nil)
if flag19 then
local position = followTarget.Enabled and fovFollower:GetPosition() or v134
fovRender:SetPosition(UDim2.fromOffset(position.X, position.Y))
end
fovRender:Update(arg2)
end
index2._UpdateTextIndicator = function(arg, arg2)
local manipulate = arg2.Manipulate
if not (manipulate.Enabled and manipulate.ShowIndicator) then
arg._textIndicatorList:Hide("Manipulated")
return
end
local currentHitbox = arg._currentHitbox
if currentHitbox == nil or arg._visibleOriginByHitbox[currentHitbox] == nil then
arg._textIndicatorList:Hide("Manipulated")
return
end
arg._textIndicatorList:Show("Manipulated", "Manipulated", v120.Manipulate)
end
index2._Reset = function(arg)
arg._currentTarget = nil
arg._currentHitbox = nil
arg._targetScreenPosition = nil
arg._targetAcquisition:Reset()
end
index2._UpdateTarget = function(arg, arg2, arg3, arg4)
if not arg._active or arg3 == nil or v128(arg3, arg4.ActivationConditions) then
arg:_Reset()
return
end
local v134, v135 = arg._targetSelection:SelectBest()
if v134 == nil or v135 == nil then
arg:_Reset()
return
end
local circle = arg4.Fov.Circle
if circle.Visible and circle.FollowTarget.Enabled then
arg._targetScreenPosition = arg._computeTargetPoint(workspace.CurrentCamera, v133(), v135)
else
arg._targetScreenPosition = nil
end
if not arg._targetAcquisition:Acquire(arg2, v134, arg4.ReactionTime, arg4.SwitchDelay) then
return
end
arg._currentTarget = v134
arg._currentHitbox = v135
end
index2._HandleInput = function(arg, arg2)
if arg2.Type ~= "StartShooting" then
return
end
local currentHitbox = arg._currentHitbox
if currentHitbox == nil then
return
end
local inner = arg._playerContext.Inner
if inner == nil then
return
end
if not (data.SilentAim.ActivationChance / 100 >= math.random()) then
return
end
local v134 = inner.FighterState:FindItemByObjectId(arg2.ObjectId)
if v134 == nil then
return
end
if v102(v102(v134, "Info"), "Type") ~= "Gun" then
return
end
local _v135, v136 = arg._computeTargetPoint(workspace.CurrentCamera, v133(), currentHitbox)
local v137 = arg2.Args["\1"]
if type(v137) ~= "table" then
return
end
local v138 = v116.decode(v137["\0"])
local v139 = v116.decode(v137["\1"])
if v138 == nil or v139 == nil then
return
end
local position = v138.Position
local v140 = v131(position, currentHitbox, v136)
if v140 == nil then
return
end
local v141 = arg._visibleOriginByHitbox[currentHitbox]
if v141 ~= nil then
v137["\0"] = v116.encode(CFrame.lookAt(v141, v136))
v137["\1"] = v116.encode(CFrame.lookAt(v141, v136))
else
v137["\0"] = v116.encode(CFrame.lookAt(position, v136))
v137["\1"] = v116.encode(CFrame.lookAt(v139.Position, v136))
end
v137["\2"] = currentHitbox
v137["\3"] = v116.encode(CFrame.new(v140))
end
index2.Destroy = function(arg)
arg._trove:Destroy()
arg._inputBinding:Destroy()
end
return index2
end
tbl17.gV = function()
local gv = tbl17.cache.gV
if not gv then
gv = { c = fn35() }
tbl17.cache.gV = gv
end
return gv.c
end
end
do -- gX
local function fn35() tbl17 .gW();return{GreenHaze={SkyboxUp="rbxassetid://160193458",SkyboxBk="rbxassetid://160193404",SkyboxFt="rbxassetid://160193461",SunAngularSize=0,SkyboxLf="rbxassetid://160193469",SkyboxRt="rbxassetid://160193463",SkyboxDn="rbxassetid://160193466"},Space2={StarCount=3000,SkyboxUp="rbxassetid://11844053742",MoonTextureId="rbxassetid://11844121592",SkyboxBk="rbxassetid://11844076072",SkyboxDn="rbxassetid://11844069700",SkyboxFt="rbxassetid://11844067209",SunAngularSize=11,SkyboxLf="rbxassetid://11844063543",SkyboxRt="rbxassetid://11844058446",MoonAngularSize=20},PinkMountains={StarCount=3000,SkyboxUp="rbxassetid://160188588",SkyboxFt="rbxassetid://160188609",SkyboxLf="rbxassetid://160188589",SkyboxDn="rbxassetid://160188614",SunAngularSize=21,SkyboxBk="rbxassetid://160188495",SkyboxRt="rbxassetid://160188597",MoonAngularSize=0},Valentines={StarCount=3000,SkyboxUp="rbxassetid://11427771954",SkyboxFt="rbxassetid://11427769401",SkyboxLf="rbxassetid://11427769401",SkyboxDn="rbxassetid://11427770685",SunAngularSize=21,SkyboxBk="rbxassetid://11427769401",SkyboxRt="rbxassetid://11427769401",MoonAngularSize=0},PinkArt={StarCount=3000,SkyboxUp="rbxassetid://79190209626172",SkyboxFt="rbxassetid://104560113223878",SkyboxLf="rbxassetid://80395333901607",SkyboxDn="rbxassetid://78865378050055",SunAngularSize=21,SkyboxBk="rbxassetid://71607054149497",SkyboxRt="rbxassetid://87570388049514",MoonAngularSize=0},PurplePlanet={StarCount=3000,SkyboxUp="rbxassetid://16262366016",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://16262360469",SkyboxLf="rbxassetid://16262362003",SkyboxDn="rbxassetid://16262358026",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxBk="rbxassetid://16262356578",SkyboxRt="rbxassetid://16262363873",MoonAngularSize=0},Blizzard={StarCount=3000,SkyboxUp="rbxassetid://16653228333",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://16653221738",SkyboxFt="rbxassetid://16653224051",SkyboxDn="rbxassetid://16653222701",SunTextureId="rbxassetid://6196665106",SunAngularSize=21,SkyboxLf="rbxassetid://16653225849",SkyboxRt="rbxassetid://16653227200",MoonAngularSize=0},Winter={StarCount=3000,SkyboxUp="rbxassetid://155674931",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://155657655",SkyboxFt="rbxassetid://155657609",SkyboxLf="rbxassetid://155657671",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxDn="rbxassetid://155674246",SkyboxRt="rbxassetid://155657619",MoonAngularSize=11},FlamingSunset={StarCount=3000,SkyboxUp="rbxassetid://415688354",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://415688378",SkyboxFt="rbxassetid://415688242",SkyboxDn="rbxassetid://415688193",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxLf="rbxassetid://415688310",SkyboxRt="rbxassetid://415688274",MoonAngularSize=0},Mountains={StarCount=3000,SkyboxUp="rbxassetid://15359412677",SkyboxLf="rbxassetid://15359411633",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://15359411132",SkyboxBk="rbxassetid://15359410490",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://15359412131",SkyboxRt="rbxassetid://15359417656",MoonAngularSize=0},FPSBoost={StarCount=3000,SkyboxUp="rbxassetid://11457548274",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://11457548274",SkyboxLf="rbxassetid://11457548274",SkyboxDn="rbxassetid://11457548274",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://11457548274",SkyboxRt="rbxassetid://11457548274",MoonAngularSize=0},AestheticMountains={StarCount=3000,SkyboxUp="rbxassetid://15470207755",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://15470202648",SkyboxBk="rbxassetid://15470198023",SkyboxFt="rbxassetid://15470200128",SunTextureId="rbxassetid://6196665106",SunAngularSize=21,SkyboxDn="rbxassetid://15470151245",SkyboxRt="rbxassetid://15470204862",MoonAngularSize=11},BetterNight3={StarCount=500,SkyboxUp="rbxassetid://2670644331",MoonTextureId="rbxassetid://1075087760",SkyboxLf="rbxassetid://2670643070",SkyboxBk="rbxassetid://2670643994",SkyboxFt="rbxassetid://2670643214",SunTextureId="rbxassetid://6196665106",SunAngularSize=21,SkyboxDn="rbxassetid://2670643365",SkyboxRt="rbxassetid://2670644173",MoonAngularSize=1.5},Galaxy2={StarCount=500,SkyboxUp="rbxassetid://14164405298",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://14164398493",SkyboxBk="rbxassetid://14164368678",SkyboxFt="rbxassetid://14164389230",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://14164386126",SkyboxRt="rbxassetid://14164402782",MoonAngularSize=0},Aesthetic3={StarCount=500,SkyboxUp="rbxassetid://151165227",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://151165191",SkyboxBk="rbxassetid://151165214",SkyboxFt="rbxassetid://151165224",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://151165197",SkyboxRt="rbxassetid://151165206",MoonAngularSize=0},PurpleSpace={StarCount=3000,SkyboxUp="rbxassetid://15983964246",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://15983967420",SkyboxBk="rbxassetid://15983968922",SkyboxFt="rbxassetid://5260817288",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://15983966825",SkyboxRt="rbxassetid://15983966246",MoonAngularSize=0},Pink={StarCount=3000,SkyboxUp="rbxassetid://271077958",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://271042310",SkyboxBk="rbxassetid://271042516",SkyboxFt="rbxassetid://271042556",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://271077243",SkyboxRt="rbxassetid://271042467",MoonAngularSize=0},PurpleNight={StarCount=3000,SkyboxUp="rbxassetid://5084576400",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://5260817288",SkyboxBk="rbxassetid://5260808177",SkyboxDn="rbxassetid://5260653793",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://5260800833",SkyboxRt="rbxassetid://5260800833",MoonAngularSize=0},Flame={StarCount=3000,SkyboxUp="rbxassetid://6286790025",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://6286785801",SkyboxBk="rbxassetid://6286780109",SkyboxFt="rbxassetid://6286784186",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxDn="rbxassetid://6286782353",SkyboxRt="rbxassetid://6286788245",MoonAngularSize=0},Galaxy3={StarCount=3000,SkyboxUp="rbxassetid://14543371676",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://14543257810",SkyboxBk="rbxassetid://14543264135",SkyboxDn="rbxassetid://14543358958",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://14543275895",SkyboxRt="rbxassetid://14543280890",MoonAngularSize=0},Storm={SkyboxUp="rbxassetid://1618913654",MoonTextureId="rbxassetid://1075087760",SkyboxFt="rbxassetid://1618913244",SkyboxBk="rbxassetid://1618912481",SkyboxDn="rbxassetid://1618913943",SunTextureId="rbxassetid://1084351190",SunAngularSize=0,SkyboxLf="rbxassetid://1618912849",SkyboxRt="rbxassetid://1618911568",MoonAngularSize=0},Milkyway={StarCount=3000,SkyboxUp="rbxassetid://137817405681365",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://104400530594543",SkyboxBk="rbxassetid://129876530632297",SkyboxDn="rbxassetid://108406529909981",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://73372229972523",SkyboxRt="rbxassetid://87408857415924",MoonAngularSize=0},PurpleClouds={StarCount=3000,SkyboxUp="rbxassetid://570557727",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://570557775",SkyboxLf="rbxassetid://570557620",SkyboxBk="rbxassetid://570557514",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://570557559",SkyboxRt="rbxassetid://570557672",MoonAngularSize=0},BlueClouds={StarCount=3000,SkyboxUp="rbxassetid://591059642",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://591057861",SkyboxBk="rbxassetid://591058823",SkyboxFt="rbxassetid://591058104",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxDn="rbxassetid://591059876",SkyboxRt="rbxassetid://591057625",MoonAngularSize=0},BetterNight={StarCount=3000,SkyboxUp="rbxassetid://15470303050",SkyboxFt="rbxassetid://15470294431",SkyboxBk="rbxassetid://15470289121",SkyboxDn="rbxassetid://15470291746",SkyboxLf="rbxassetid://15470297162",SkyboxRt="rbxassetid://15470299887"},Cloudy={StarCount=3000,SkyboxUp="rbxassetid://4495867486",SkyboxFt="rbxassetid://4495865458",SkyboxBk="rbxassetid://4495864450",SkyboxDn="rbxassetid://4495864887",SkyboxLf="rbxassetid://4495866035",SkyboxRt="rbxassetid://4495866584"},NetherWorld={StarCount=3000,SkyboxUp="rbxassetid://14365019327",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://14365018399",SkyboxLf="rbxassetid://14365018705",SkyboxDn="rbxassetid://14365023350",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://14365019002",SkyboxRt="rbxassetid://14365018143",MoonAngularSize=0},NewYork={StarCount=3000,SkyboxUp="rbxassetid://11333967970",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://11333973069",SkyboxFt="rbxassetid://11333964303",SkyboxDn="rbxassetid://11333969768",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxLf="rbxassetid://11333971332",SkyboxRt="rbxassetid://11333982864",MoonAngularSize=0},Purple2={StarCount=3000,SkyboxUp="rbxassetid://8107849791",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://8107841671",SkyboxFt="rbxassetid://8107841671",SkyboxDn="rbxassetid://6444884785",SunTextureId="rbxassetid://6196665106",SunAngularSize=11,SkyboxLf="rbxassetid://8107841671",SkyboxRt="rbxassetid://8107841671",MoonAngularSize=0},FunnyStorm={StarCount=3000,SkyboxUp="rbxassetid://6280942402",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://6280935347",SkyboxLf="rbxassetid://6280938749",SkyboxBk="rbxassetid://6280934001",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://6280936575",SkyboxRt="rbxassetid://6280940989",MoonAngularSize=0},Galaxy={StarCount=3000,SkyboxUp="rbxassetid://159454288",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://159454293",SkyboxLf="rbxassetid://159454293",SkyboxDn="rbxassetid://159454296",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://159454299",SkyboxRt="rbxassetid://159454293",MoonAngularSize=0},BlueSpace={StarCount=3000,SkyboxUp="rbxassetid://16876552681",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://16876548320",SkyboxBk="rbxassetid://16876541778",SkyboxFt="rbxassetid://16876546384",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxDn="rbxassetid://16876543880",SkyboxRt="rbxassetid://16876550345",MoonAngularSize=0},Purple3={StarCount=3000,SkyboxUp="rbxassetid://433274285",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://433274131",SkyboxLf="rbxassetid://433274370",SkyboxDn="rbxassetid://433274194",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://433274085",SkyboxRt="rbxassetid://433274429",MoonAngularSize=0},Nebula2={StarCount=3000,SkyboxUp="rbxassetid://16932810138",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://16932800523",SkyboxLf="rbxassetid://16932803722",SkyboxDn="rbxassetid://16932797813",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://16932794531",SkyboxRt="rbxassetid://16932806825",MoonAngularSize=0},Nebula={StarCount=3000,SkyboxUp="rbxassetid://5260824661",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://5260800833",SkyboxDn="rbxassetid://5260653793",SkyboxBk="rbxassetid://5260808177",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://5260817288",SkyboxRt="rbxassetid://5260811073",MoonAngularSize=0},LunarNight={StarCount=0,SkyboxUp="rbxassetid://187712111",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://187713366",SkyboxFt="rbxassetid://187712836",SkyboxLf="rbxassetid://187713755",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://187712428",SkyboxRt="rbxassetid://187714525",MoonAngularSize=0},Purple={StarCount=3000,SkyboxUp="rbxassetid://8539981085",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://8539982183",SkyboxFt="rbxassetid://8539981721",SkyboxLf="rbxassetid://8539981424",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://8539981943",SkyboxRt="rbxassetid://8539980766",MoonAngularSize=0},Hell={StarCount=3000,SkyboxUp="rbxassetid://11730857150",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://11730840088",SkyboxFt="rbxassetid://11730849615",SkyboxLf="rbxassetid://11730852920",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://11730842997",SkyboxRt="rbxassetid://11730855491",MoonAngularSize=11},Nebula6={StarCount=3000,SkyboxUp="rbxassetid://16694204069",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://16694197080",SkyboxDn="rbxassetid://16694190947",SkyboxBk="rbxassetid://16694187412",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://16694194795",SkyboxRt="rbxassetid://16694200892",MoonAngularSize=11},DarkishPink={StarCount=3000,SkyboxUp="rbxassetid://570555929",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://570555840",SkyboxDn="rbxassetid://570555964",SkyboxBk="rbxassetid://570555736",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://570555800",SkyboxRt="rbxassetid://570555882",MoonAngularSize=11},RedNight={StarCount=3000,SkyboxUp="rbxassetid://401664936",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://401664839",SkyboxFt="rbxassetid://401664960",SkyboxLf="rbxassetid://401664881",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://401664862",SkyboxRt="rbxassetid://401664901",MoonAngularSize=0},Space={StarCount=3000,SkyboxUp="rbxassetid://166510114",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://166510057",SkyboxBk="rbxassetid://166509999",SkyboxFt="rbxassetid://166510116",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://166510092",SkyboxRt="rbxassetid://166510131",MoonAngularSize=0},OverPlanet={StarCount=3000,SkyboxUp="rbxassetid://165052345",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://165052365",SkyboxDn="rbxassetid://165052286",SkyboxBk="rbxassetid://165052268",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://165052328",SkyboxRt="rbxassetid://165052306",MoonAngularSize=11},Orange={StarCount=3000,SkyboxUp="rbxassetid://150939082",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://150939038",SkyboxBk="rbxassetid://150939022",SkyboxFt="rbxassetid://150939047",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://150939056",SkyboxRt="rbxassetid://150939063",MoonAngularSize=0},Pastel={StarCount=3000,SkyboxUp="rbxassetid://2128462236",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://2128462480",SkyboxBk="rbxassetid://2128458653",SkyboxFt="rbxassetid://2128458653",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://2128462027",SkyboxRt="rbxassetid://2128462027",MoonAngularSize=0},Beach={StarCount=0,SkyboxUp="rbxassetid://173380790",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://173380627",SkyboxBk="rbxassetid://173380597",SkyboxFt="rbxassetid://173380642",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxLf="rbxassetid://173380671",SkyboxRt="rbxassetid://173380774",MoonAngularSize=11},FakeClouds={StarCount=3000,SkyboxUp="rbxassetid://8496897504",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://8496896250",SkyboxBk="rbxassetid://8496892810",SkyboxFt="rbxassetid://8496892810",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://8496892810",SkyboxRt="rbxassetid://8496892810",MoonAngularSize=0},Aesthetic2={StarCount=3000,SkyboxUp="rbxassetid://600835177",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://600830446",SkyboxFt="rbxassetid://600832720",SkyboxLf="rbxassetid://600886090",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://600831635",SkyboxRt="rbxassetid://600833862",MoonAngularSize=0},Nebula4={StarCount=3000,SkyboxUp="rbxassetid://17103639457",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://17103622190",SkyboxBk="rbxassetid://17103618635",SkyboxFt="rbxassetid://17103624898",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://17103628153",SkyboxRt="rbxassetid://17103636666",MoonAngularSize=0},BluePlanet={StarCount=3000,SkyboxUp="rbxassetid://16889004122",SkyboxLf="rbxassetid://16888998994",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://16888991855",SkyboxBk="rbxassetid://16888989874",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://16888995219",SkyboxRt="rbxassetid://16889000916",MoonAngularSize=0},Nebula5={StarCount=3000,SkyboxUp="rbxassetid://17124369657",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://17124359797",SkyboxBk="rbxassetid://17124357467",SkyboxFt="rbxassetid://17124362093",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://17124365127",SkyboxRt="rbxassetid://17124367200",MoonAngularSize=0},LunarNight2={StarCount=3000,SkyboxUp="rbxassetid://14365026442",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://14365026242",SkyboxLf="rbxassetid://14365025904",SkyboxBk="rbxassetid://14365026085",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://14365025735",SkyboxRt="rbxassetid://14365025444",MoonAngularSize=0},Pinkie={StarCount=0,SkyboxUp="rbxassetid://11554996247",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://11555013415",SkyboxBk="rbxassetid://11555017034",SkyboxFt="rbxassetid://11555010145",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://11555006545",SkyboxRt="rbxassetid://11555000712",MoonAngularSize=1.5},PurpleMountains={StarCount=3000,SkyboxUp="rbxassetid://17901365106",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://17901359687",SkyboxDn="rbxassetid://17901366771",SkyboxBk="rbxassetid://17901353811",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://17901356262",SkyboxRt="rbxassetid://17901362326",MoonAngularSize=0},DarkClouds={StarCount=0,SkyboxUp="rbxassetid://190477146",SkyboxDn="rbxassetid://190477222",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://190477185",SkyboxBk="rbxassetid://190477248",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://190477200",SkyboxRt="rbxassetid://190477166",MoonAngularSize=1.5},BetterNight2={StarCount=3000,SkyboxBk="rbxassetid://248431616",SkyboxUp="rbxassetid://248431605",SkyboxDn="rbxassetid://248431677",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://248431686",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://248431598",SkyboxRt="rbxassetid://248431611",MoonAngularSize=1.5},DarkMountains={StarCount=3000,SkyboxUp="rbxassetid://5098819127",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://5098814730",SkyboxFt="rbxassetid://5098815653",SkyboxDn="rbxassetid://5098815227",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxLf="rbxassetid://5098816155",SkyboxRt="rbxassetid://5098820352",MoonAngularSize=0},Nebula3={StarCount=3000,SkyboxUp="rbxassetid://17839226876",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://17839210699",SkyboxFt="rbxassetid://17839218166",SkyboxLf="rbxassetid://17839220800",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://17839215896",SkyboxRt="rbxassetid://17839223605",MoonAngularSize=0},BetterSky={StarCount=3000,SkyboxUp="rbxassetid://591059642",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://591057861",SkyboxBk="rbxassetid://591058823",SkyboxFt="rbxassetid://591058104",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxDn="rbxassetid://591059876",SkyboxRt="rbxassetid://591057625",MoonAngularSize=0},MagentaOrange={StarCount=3000,SkyboxUp="rbxassetid://566616187",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://566616141",SkyboxBk="rbxassetid://566616113",SkyboxDn="rbxassetid://566616232",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://566616044",SkyboxRt="rbxassetid://566616082",MoonAngularSize=0},Aesthetic={StarCount=3000,SkyboxUp="rbxassetid://1417494643",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://1417494253",SkyboxBk="rbxassetid://1417494030",SkyboxDn="rbxassetid://1417494146",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://1417494402",SkyboxRt="rbxassetid://1417494499",MoonAngularSize=0},Alien={StarCount=0,SkyboxUp="rbxassetid://159248176",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://159248187",SkyboxBk="rbxassetid://159248188",SkyboxDn="rbxassetid://159248183",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://159248173",SkyboxRt="rbxassetid://159248192",MoonAngularSize=0},Lunar={StarCount=3000,SkyboxUp="rbxassetid://179724054",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://179724018",SkyboxBk="rbxassetid://179723991",SkyboxDn="rbxassetid://179724005",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://179724029",SkyboxRt="rbxassetid://179724037",MoonAngularSize=0},Retro={StarCount=3000,SkyboxUp="rbxassetid://16642401907",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://16642398372",SkyboxBk="rbxassetid://16642396302",SkyboxDn="rbxassetid://16642397027",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://16642399309",SkyboxRt="rbxassetid://16642400745",MoonAngularSize=0},Realistic={StarCount=3000,SkyboxUp="rbxassetid://402560052",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://402559953",SkyboxBk="rbxassetid://402559900",SkyboxDn="rbxassetid://402559927",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://402559983",SkyboxRt="rbxassetid://402560019",MoonAngularSize=0},Midnight={StarCount=3000,SkyboxUp="rbxassetid://154185031",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://154185021",SkyboxBk="rbxassetid://154185004",SkyboxDn="rbxassetid://154184960",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://154184943",SkyboxRt="rbxassetid://154184972",MoonAngularSize=0},Antartica={StarCount=3000,SkyboxUp="rbxassetid://2118766003",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://2118765204",SkyboxBk="rbxassetid://2118763079",SkyboxDn="rbxassetid://2118766919",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://2118764070",SkyboxRt="rbxassetid://2118761853"},Moon={StarCount=3000,SkyboxUp="rbxassetid://17489393055",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://17489388310",SkyboxBk="rbxassetid://17489386489",SkyboxDn="rbxassetid://17489387417",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://17489389632",SkyboxRt="rbxassetid://17489391101"},NightMountains={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://264907379",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://264909420",SkyboxBk="rbxassetid://264908339",SkyboxDn="rbxassetid://264907909",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://264909758",SkyboxRt="rbxassetid://264908886"},Art={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://9831769868",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://9831766232",SkyboxBk="rbxassetid://9831762777",SkyboxDn="rbxassetid://9831764283",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://9831768023",SkyboxRt="rbxassetid://9831768909"},Ame={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://160186148",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://160186027",SkyboxBk="rbxassetid://160185927",SkyboxDn="rbxassetid://160185945",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://160186075",SkyboxRt="rbxassetid://160186126"},Dawn={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://250381047",SkyboxFt="rbxassetid://250380916",SkyboxBk="rbxassetid://250381017",SkyboxDn="rbxassetid://254156892",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://250380953",SkyboxRt="rbxassetid://250380985"}};end
tbl17.gX = function()
local gx = tbl17.cache.gX
if not gx then
gx = { c = fn35() }
tbl17.cache.gX = gx
end
return gx.c
end
end
do -- gY
local function fn35()
local v115 = tbl17.f()
local v116 = tbl17.gX()
local v117 = tbl17.ad()
local v118 = tbl17.a()
local v119 = tbl17.g()
tbl17.gW()
local str7 = string.format("%s/%s", "kiciarebuild/rivals", "skyboxes.json")
local tbl18 = {
SkyboxBk = "string",
SkyboxDn = v86[165],
SkyboxFt = "string",
SkyboxLf = "string",
SkyboxRt = "string",
SkyboxUp = "string",
StarCount = "number",
CelestialBodiesShown = "boolean",
SunAngularSize = v86[95],
MoonAngularSize = v86[95],
SunTextureId = v86[165],
MoonTextureId = "string",
}
local tbl19 = { "SkyboxUp", "SkyboxDn", "SkyboxFt", "SkyboxBk", "SkyboxLf", "SkyboxRt" }
local function fn36(arg)
return arg:match("^%s*(.-)%s*$") or ""
end
local function fn37(arg)
if type(arg) == "number" then
return string.format("rbxassetid://%s", tostring(arg))
end
if type(arg) ~= "string" then
return nil
end
local v120 = fn36(arg)
if v120 == "" then
return nil
end
local match = v120:match("^(%d+)$")
if match ~= nil then
return string.format("rbxassetid://%s", tostring(match))
end
return v120
end
local function fn38(arg)
local tbl20 = {}
for k, v120 in arg, nil, nil do
local v121 = tbl18[k]
if type(v120) == v121 then
tbl20[k] = v120
end
end
return tbl20
end
local function fn39(arg)
local tbl20 = {}
local v120 = v86[68]
arg = type(arg) == v120 and arg or nil
if arg ~= nil then
for k, v121 in arg, nil, nil do
if not (type(k) ~= "string" or type(v121) ~= "table") then
if not (k == "" or tbl20[k] ~= nil) then
tbl20[k] = fn38(v121)
end
end
end
end
return tbl20
end
local index2 = {}
index2.__index = index2
index2.new = function()
local tbl20 = {
_errorReporter = v117.new(),
_configManager = v115.new({
DefaultConfig = v116,
CurrentVersion = v86[63],
SavePath = "kiciarebuild/rivals",
Deserialize = fn39,
}),
_data = table.clone(v116),
_names = {},
_presetByName = {},
Changed = v119.new(),
}
setmetatable(tbl20, index2)
return tbl20
end
index2.Initialize = function(arg)
arg._errorReporter:ReportResult(arg:_EnsureDefaultFile())
arg._errorReporter:ReportResult(arg:Reload())
end
index2._EnsureDefaultFile = function(arg)
if isfile(str7) then
return v118.VoidOk
end
local json = arg._configManager:SaveDefaultToFile("skyboxes.json", true)
if not json.Ok then
return v118.err("Skyboxes", "EnsureDefaultFile", string.format("Failed to create default skybox config: %s", tostring(json.Error.Detail)))
end
return v118.VoidOk
end
index2.Reload = function(arg)
arg:_EnsureDefaultFile()
local json = arg._configManager:LoadFromFile("skyboxes.json")
if not json.Ok then
arg._data = table.clone(v116)
arg:_RebuildIndexes()
arg.Changed:Fire(arg:GetNames())
return v118.err("Skyboxes", "Reload", json.Error.Detail)
end
arg._data = json.Value
arg:_RebuildIndexes()
arg.Changed:Fire(arg:GetNames())
return v118.VoidOk
end
index2._RebuildIndexes = function(arg)
local names = {}
local presetByName = {}
for k, v120 in arg._data, nil, nil do
table.insert(names, k)
presetByName[k] = v120
end
table.sort(names)
arg._names = names
arg._presetByName = presetByName
end
index2.GetNames = function(arg)
return table.clone(arg._names)
end
index2.FindPreset = function(arg, arg2)
return arg2 ~= nil and arg._presetByName[arg2] or nil
end
index2._Save = function(arg)
arg._configManager:SetData(arg._data)
local json = arg._configManager:SaveToFile("skyboxes.json")
if not json.Ok then
return v118.err("Skyboxes", "Save", json.Error.Detail)
end
return v118.VoidOk
end
index2.Add = function(arg, arg2, arg3)
local v120 = fn36(arg2)
if v120 == "" then
return v118.err("Skyboxes", "Add", "skybox name cannot be empty")
end
if arg._presetByName[v120] ~= nil then
return v118.err("Skyboxes", "Add", string.format("a skybox named \"%s\" already exists", tostring(v120)))
end
local tbl20 = {}
for _, v121 in tbl19, nil, nil do
local v122 = fn37(arg3[v121])
if v122 == nil then
return v118.err("Skyboxes", "Add", "all six skybox faces are required")
end
tbl20[v121] = v122
end
arg._data[v120] = tbl20
arg:_RebuildIndexes()
local v121 = arg:_Save()
arg.Changed:Fire(arg:GetNames())
return v121
end
index2.Remove = function(arg, arg2)
if arg._data[arg2] == nil then
return v118.VoidOk
end
arg._data[arg2] = nil
arg:_RebuildIndexes()
local v120 = arg:_Save()
arg.Changed:Fire(arg:GetNames())
return v120
end
index2.Destroy = function(arg)
arg._errorReporter:Destroy()
arg.Changed:Destroy()
end
return index2
end
tbl17.gY = function()
local gy = tbl17.cache.gY
if not gy then
gy = { c = fn35() }
tbl17.cache.gY = gy
end
return gy.c
end
end
do -- gZ
local function fn35()
local v115 = tbl17.bG()
tbl17.a0()
tbl17.cF()
local v116 = tbl17.k()
local v117 = cloneref(game:GetService("Players"))
local v118 = cloneref(game:GetService("Workspace"))
local localPlayer = v117.LocalPlayer
local tbl18 = { "LeftFoot", "RightFoot" }
local tbl19 = { "Left Leg", "Right Leg" }
local vector = Vector3.new(2, 0.2, 2)
local index2 = {}
index2.__index = index2
local function fn36(arg)
local parent = arg.Parent
if parent == nil then
return nil
end
if parent:IsA("BasePart") then
return parent
end
if parent:IsA("Attachment") then
local parent2 = parent.Parent
if parent2 ~= nil and parent2:IsA("BasePart") then
return parent2
end
end
return nil
end
local function fn37(arg)
local tbl20 = {}
for _, v119 in tbl18, nil, nil do
local v120 = arg:FindFirstChild(v119)
if v120 ~= nil and v120:IsA("BasePart") then
table.insert(tbl20, v120)
end
end
if #tbl20 > 0 then
return tbl20
end
for _, v119 in tbl19, nil, nil do
local v120 = arg:FindFirstChild(v119)
if v120 ~= nil and v120:IsA("BasePart") then
table.insert(tbl20, v120)
end
end
return tbl20
end
local function fn38(arg)
if arg <= 0.5 then
return Color3.new(arg * 2, 1, 0)
end
return Color3.new(1, (1 - arg) * 2, 0)
end
local function fn39(arg)
local _v119, v120 = arg.CFrame:ToEulerAnglesYXZ()
return CFrame.new(arg.Position - Vector3.new(0, arg.Size.Y * 0.5, 0)) * CFrame.Angles(v86[186], v120, 0)
end
local function fn40(arg)
return v86[63] - (1 - arg) ^ 5
end
index2.new = function(arg)
local v119 = v116.new()
local folder = Instance.new("Folder")
folder.Name = "RivalsSoundVisualizer"
folder.Parent = v118
v119:Add(folder)
local tbl20 = {
_trove = v119,
_fighters = arg,
_adornFolder = folder,
_descendantAddedConnection = nil,
_hooksBySound = {},
_lastPlayedAtBySound = {},
_activeEffects = {},
_circlePool = {},
_footprintPool = {},
}
setmetatable(tbl20, index2)
tbl20:_Initialize()
return tbl20
end
index2._Initialize = function(arg)
arg._trove:Connect(v115:GetPropertyChangedSignal({ "SoundVisualizer", "Enabled" }), function(arg2)
arg:_SetEnabled(arg2)
end)
arg:_SetEnabled(v115.Data.SoundVisualizer.Enabled)
end
index2._SetEnabled = function(arg, arg2)
if (arg2 == arg._descendantAddedConnection) ~= nil then
return
end
if arg2 then
arg:_StartTracking()
else
arg:_StopTracking()
end
end
index2._StartTracking = function(arg)
arg._descendantAddedConnection = v118.DescendantAdded:Connect(function(descendant)
if descendant:IsA("Sound") then
arg:_TrackSound(descendant)
end
end)
for _, v119 in v118:QueryDescendants("Sound") do
arg:_TrackSound(v119)
end
end
index2._StopTracking = function(arg)
local descendantAddedConnection = arg._descendantAddedConnection
if descendantAddedConnection == nil then
return
end
arg._descendantAddedConnection = nil
descendantAddedConnection:Disconnect()
for _, v119 in arg._hooksBySound, nil, nil do
v119.Played:Disconnect()
v119.Destroying:Disconnect()
end
table.clear(arg._hooksBySound)
table.clear(arg._lastPlayedAtBySound)
end
index2._TrackSound = function(arg, arg2)
if arg._descendantAddedConnection == nil or arg._hooksBySound[arg2] ~= nil then
return
end
arg._hooksBySound[arg2] = {
Played = arg2.Played:Connect(function()
if true then
arg:_OnPlayed(arg2)
return
end
-- (anti-tamper freeze trap removed)
end),
Destroying = arg2.Destroying:Connect(function()
arg:_ForgetSound(arg2)
end),
}
end
index2._ForgetSound = function(arg, arg2)
local v119 = arg._hooksBySound[arg2]
if v119 == nil then
return
end
arg._hooksBySound[arg2] = nil
arg._lastPlayedAtBySound[arg2] = nil
v119.Played:Disconnect()
v119.Destroying:Disconnect()
end
index2._AcquireCircle = function(arg)
local cylinderHandleAdornment = table.remove(arg._circlePool)
if cylinderHandleAdornment == nil then
cylinderHandleAdornment = Instance.new("CylinderHandleAdornment")
cylinderHandleAdornment.Adornee = v118.Terrain
cylinderHandleAdornment.AlwaysOnTop = true
cylinderHandleAdornment.ZIndex = 5
cylinderHandleAdornment.Height = 0.05
cylinderHandleAdornment.Angle = 360
cylinderHandleAdornment.Parent = arg._adornFolder
end
cylinderHandleAdornment.Visible = true
return cylinderHandleAdornment
end
index2._AcquireFootprint = function(arg)
local boxHandleAdornment = table.remove(arg._footprintPool)
if boxHandleAdornment == nil then
boxHandleAdornment = Instance.new("BoxHandleAdornment")
boxHandleAdornment.Adornee = v118.Terrain
boxHandleAdornment.AlwaysOnTop = true
boxHandleAdornment.ZIndex = 5
boxHandleAdornment.Parent = arg._adornFolder
end
boxHandleAdornment.Visible = true
return boxHandleAdornment
end
index2._RecycleEffect = function(arg, arg2)
local adornment = arg2.Adornment
adornment.Visible = false
if arg2.IsCircle then
if #arg._circlePool < 32 then
table.insert(arg._circlePool, adornment)
return
end
elseif #arg._footprintPool < 32 then
table.insert(arg._footprintPool, adornment)
return
end
adornment:Destroy()
end
index2._PushEffect = function(arg, arg2)
local activeEffects = arg._activeEffects
if #activeEffects >= 96 then
local v119 = table.remove(activeEffects, 1)
if v119 ~= nil then
arg:_RecycleEffect(v119)
end
end
table.insert(activeEffects, arg2)
end
index2.PreRender = function(arg, arg2)
local activeEffects = arg._activeEffects
if #activeEffects == 0 then
return
end
for i = #activeEffects, 1, -1 do
local v119 = activeEffects[i]
v119.Elapsed = v119.Elapsed + arg2
local n = math.clamp(v119.Elapsed / v119.Duration, 0, 1)
if v119.IsCircle then
local adornment = v119.Adornment
local radius = v119.MaxRadius * fn40(n)
adornment.Radius = radius
adornment.InnerRadius = math.max(v86[186], radius - 0.15)
adornment.Transparency = 0.2 + 0.8 * n ^ 4
else
v119.Adornment.Transparency = 0.2 + 0.8 * n * n
end
if n >= 1 then
arg:_RecycleEffect(v119)
table.remove(activeEffects, i)
end
end
end
index2._SpawnCircle = function(arg, arg2, color3, arg3, arg4)
local v119 = arg:_AcquireCircle()
v119.Color3 = color3
v119.Transparency = 0.2
v119.Radius = 0.01
v119.InnerRadius = v86[186]
v119.CFrame = arg2 * CFrame.Angles(1.5707963267948966, v86[186], 0)
arg:_PushEffect({ Adornment = v119, IsCircle = true, Elapsed = 0, Duration = arg3, MaxRadius = arg4 })
end
index2._SpawnFootprint = function(arg, cFrame, size, color3, arg2)
local v119 = arg:_AcquireFootprint()
v119.Size = size
v119.Color3 = color3
v119.Transparency = 0.2
v119.CFrame = cFrame
arg:_PushEffect({ Adornment = v119, IsCircle = false, Elapsed = v86[186], Duration = arg2, MaxRadius = 0 })
end
index2._PassesSourceFilter = function(arg, arg2, arg3)
if arg2 == "All" or arg3 == nil then
return true
end
local flag19 = arg3 == localPlayer.Character
if arg2 == "Self" then
return flag19
end
if flag19 then
return false
end
local v119 = arg._fighters.StateByModel[arg3]
if v119 ~= nil then
if arg2 == "Enemies" and not v119.IsEnemy then
return v86[153]
end
if arg2 == "Team" and v119.IsEnemy then
return v86[153]
end
end
return true
end
index2._SpawnVisuals = function(arg, arg2, arg3, arg4, arg5, arg6)
local flag19 = #arg4 > 0
if arg2 == "Circle" then
if flag19 then
for _, v119 in arg4, nil, nil do
local v120 = v86[48]
local n = math.max(v119.Size.X, v119.Size.Z) * 0.5 + v120
arg:_SpawnCircle(fn39(v119), arg5, arg6, n)
end
else
local n = math.max(arg3.Size.X, arg3.Size.Z) * 0.5 + 0.3
arg:_SpawnCircle(fn39(arg3), arg5, arg6, n)
end
return
end
if flag19 then
for _, v119 in arg4, nil, nil do
local vector2 = Vector3.new(v119.Size.X + v86[62], 0.15, v119.Size.Z + v86[62])
arg:_SpawnFootprint(fn39(v119), vector2, arg5, arg6)
end
else
local size = arg3.Size.Magnitude > 0 and arg3.Size or vector
arg:_SpawnFootprint(fn39(arg3), size, arg5, arg6)
end
end
index2._OnPlayed = function(arg, arg2)
if arg2.Volume <= 0 then
return
end
local now2 = os.clock()
local v119 = arg._lastPlayedAtBySound[arg2]
if v119 ~= nil and now2 - v119 < v86[126] then
return
end
arg._lastPlayedAtBySound[arg2] = now2
local v120 = fn36(arg2)
if v120 == nil then
return
end
local currentCamera = v118.CurrentCamera
if currentCamera == nil then
return
end
local magnitude = (currentCamera.CFrame.Position - v120.Position).Magnitude
local rollOffMaxDistance = arg2.RollOffMaxDistance
if rollOffMaxDistance > 0 and magnitude > rollOffMaxDistance then
return
end
local soundVisualizer = v115.Data.SoundVisualizer
if soundVisualizer.MinVolume > 0 and arg2.Volume < soundVisualizer.MinVolume then
return
end
local model = v120:FindFirstAncestorOfClass("Model")
if not arg:_PassesSourceFilter(soundVisualizer.Source, model) then
return
end
local n = math.clamp(arg2.Volume * (rollOffMaxDistance > 0 and 1 - math.clamp(magnitude / rollOffMaxDistance, 0, v86[63]) or 1), v86[186], 1)
local n33 = 0.6 + 1.9 * n
local tbl20 = model ~= nil and fn37(model) or {}
local flag19 = #tbl20 > 0
if not soundVisualizer.Types[flag19 and "Footsteps" or "Other"] then
return
end
local footsteps = flag19 and soundVisualizer.Footsteps or soundVisualizer.Other
arg:_SpawnVisuals(footsteps.Mode, v120, tbl20, footsteps.UseLoudnessColor and fn38(n) or footsteps.Color, n33)
end
index2.Destroy = function(arg)
arg:_StopTracking()
arg._trove:Destroy()
end
return index2
end
tbl17.gZ = function()
local gz = tbl17.cache.gZ
if not gz then
gz = { c = fn35() }
tbl17.cache.gZ = gz
end
return gz.c
end
end
do -- g_
local function fn35()
local v115 = tbl17.cK()
local v116 = tbl17.ad()
local v117 = tbl17.a()
local v118 = tbl17.b2()
local mechanicsController = tbl17.aS().MechanicsController
local updateStateRemote = tbl17.aS().UpdateStateRemote
local v119 = mechanicsController
local v120 = getmetatable(mechanicsController)
local flag19 = v120 ~= nil and v102(v120, "__index") or nil
local flag20 = type(flag19) == "table" and v102(flag19, "_UpdateServerState") or nil
local v121 = (type(flag20) == "function" and { flag20 } or { nil })[1]
local index2 = {}
index2.__index = index2
index2.new = function()
local tbl18 = {
_errorReporter = v116.new(),
_dummy = Color3.new(),
_forcedValueByEnumByte = {},
_loadFailure = nil,
_restore = nil,
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
local tbl18 = {
Replication = {
Fighter = {
UpdateState = { FireServer = function(arg2, arg3, arg4, ...)
local v122 = arg._forcedValueByEnumByte[arg3]
if v122 ~= nil then
arg4 = v122
end
local v123 = fireServer
local v124 = table.pack(...)
local v125 = updateStateRemote
v124.n = 4 + v124.n - 1
table.move(v124, 1, v124.n, 4, v124)
v124[1] = v125
v124[2] = arg3
v124[3] = arg4
v123(table.unpack(v124, 1, v124.n))
end },
},
},
}
v110(arg._dummy, { __index = function()
return tbl18
end })
end
index2.SetForced = function(arg, arg2, arg3)
local v122 = v115.encode(arg2)
if v122 == nil or arg._forcedValueByEnumByte[v122] == arg3 then
return
end
if not arg:_EnsureLoaded().Ok then
return
end
arg._forcedValueByEnumByte[v122] = arg3
fireServer(updateStateRemote, v122, arg3)
end
index2.GetOutgoingValue = function(arg, arg2)
local v122 = v115.encode(arg2)
local v123 = (v122 ~= nil and { arg._forcedValueByEnumByte[v122] } or { nil })[1]
if v123 ~= nil then
return v123
end
return v102(v119, arg2)
end
index2.ClearForced = function(arg, arg2)
local v122 = v115.encode(arg2)
if v122 == nil or arg._forcedValueByEnumByte[v122] == nil then
return
end
arg._forcedValueByEnumByte[v122] = nil
fireServer(updateStateRemote, v122, v102(v119, arg2))
end
index2._EnsureLoaded = function(arg)
if arg._restore ~= nil then
return v117.VoidOk
end
local loadFailure = arg._loadFailure
if loadFailure ~= nil then
return loadFailure
end
local v122 = arg._errorReporter:ReportResult(arg:_Load())
if not v122.Ok then
arg._loadFailure = v122
end
return v122
end
index2._Load = function(arg)
if arg._restore ~= nil then
return v117.VoidOk
end
local v122 = v121
if v122 == nil then
return v117.err("StateHook", "function_lookup", "_UpdateServerState not found")
end
local v123 = nil
local v124 = nil
for k, v125 in debug.getupvalues(v121) do
if not (typeof(v125) ~= "Instance" or not v118(v125, game:GetService("ReplicatedStorage"))) then
v123 = k
v124 = v125
end
end
if v123 == nil or v124 == nil then
return v117.err("StateHook", "upvalue_lookup", "ReplicatedStorage not found in _UpdateServerState")
end
debug.setupvalue(v121, v123, arg._dummy)
arg._restore = { Fn = v122, Index = v123, Original = v124 }
return v117.VoidOk
end
index2._Revert = function(arg)
local restore = arg._restore
if restore == nil then
return
end
arg._restore = nil
debug.setupvalue(restore.Fn, restore.Index, restore.Original)
end
index2.Destroy = function(arg)
arg:_Revert()
arg._errorReporter:Destroy()
end
return index2
end
tbl17.g_ = function()
local g = tbl17.cache.g_
if not g then
local g2 = { c = fn35() }
tbl17.cache.g_ = g2
g = g2
end
return g.c
end
end
do -- g0
local function fn35()
local v115 = tbl17.bG()
tbl17.dr()
tbl17.cX()
local v116 = tbl17.k()
local v117 = cloneref(game:GetService("CollectionService"))
local userId = cloneref(game:GetService("Players")).LocalPlayer.UserId
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2)
local obj = setmetatable({ _trove = v116.new("tripmine"), _playerContext = arg, _duelers = arg2, _tripmineDataByHitbox = {} }, index2)
obj:_Initialize()
return obj
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
index2._Initialize = function(arg)
local trove = arg._trove
local function fn36(arg2)
local hitbox = arg2:WaitForChild("Hitbox", 3)
if hitbox == nil then
return
end
arg._tripmineDataByHitbox[hitbox] = {
EnvironmentId = arg2:GetAttribute("EnvironmentID"),
PlacedBy = arg2:GetAttribute("PlacedByUserID"),
TeamId = arg2:GetAttribute("TeamID"),
}
local connection = nil
connection = hitbox.Destroying:Connect(function()
if true then
arg._tripmineDataByHitbox[hitbox] = nil
trove:Remove(connection)
return
end
-- (anti-tamper freeze trap removed)
end)
trove:Add(connection)
end
for _, v118 in v117:GetTagged("SubspaceTripmine") do
fn36(v118)
end
trove:Connect(v117:GetInstanceAddedSignal("SubspaceTripmine"), fn36)
end
index2.Update = function(arg)
if not v115.Data.SubspaceTripmines.AutoTrigger then
return
end
local inner = arg._playerContext.Inner
if not inner then
return
end
local key, v118 = next(arg._tripmineDataByHitbox)
if key == nil then
return
end
local fighterState = inner.FighterState
local localState = arg._duelers.LocalState
local flag19 = true
if v118.PlacedBy ~= userId then
if localState then
local teamId = v118.TeamId
flag19 = localState:GetTeamId() == teamId
else
flag19 = localState
end
end
if fighterState.EnvironmentId ~= v118.EnvironmentId or flag19 and not v115.Data.SubspaceTripmines.TeamTrigger then
return
end
if key.LocalTransparencyModifier ~= (flag19 and 0.5 or 1) then
return
end
local state = fighterState.Character.State
if not state.Alive then
return
end
local hitboxBody = state.HitboxBody
firetouchinterest(key, hitboxBody, v86[186])
firetouchinterest(key, hitboxBody, v86[63])
end
return index2
end
tbl17.g0 = function()
local g0 = tbl17.cache.g0
if not g0 then
local g02 = { c = fn35() }
tbl17.cache.g0 = g02
g0 = g02
end
return g0.c
end
end
do -- g1
local function fn35()
return {}
end
tbl17.g1 = function()
local g1 = tbl17.cache.g1
if not g1 then
g1 = { c = fn35() }
tbl17.cache.g1 = g1
end
return g1.c
end
end
do -- g2
local function fn35()
tbl17.aG()
local v115 = tbl17.bG()
tbl17.cF()
tbl17.cU()
local v116 = tbl17.c4()
tbl17.cX()
local v117 = tbl17.da()
local v118 = tbl17.k()
local v119 = tbl17.aH()
tbl17.cZ()
local v120 = tbl17.dd()
local v121 = tbl17.db()
local v122 = tbl17.dg()
local v123 = cloneref(game:GetService("Workspace"))
local data = v115.Data
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3)
local triggerbot = v118.new("triggerbot")
local obj = setmetatable({
_trove = triggerbot,
_playerContext = arg,
_fighters = arg2,
_worldInclude = arg3,
_includedHitboxes = v119.DefaultProfile.HitboxSet,
_targetHitboxes = data.Triggerbot.TargetHitboxes[v119.DefaultProfile.Class],
_active = false,
_reactionElapsed = nil,
_releaseRemaining = 0,
}, index2)
obj._trove:Add(v116:ObserveEnabledKeybind({ "Triggerbot" }, function(active)
obj._active = active
end))
local function fn36(...) end
local v124 = nil
triggerbot:Add(arg:ObserveContext("features.Triggerbot", function(arg4, arg5)
v124 = arg4
local function fn37(...) end
arg5:Connect(arg4.ItemBehaviors.EquippedItemChanged, fn37)
fn37()
end))
triggerbot:Connect(arg.ContextRemoved, function()
obj._includedHitboxes = v119.DefaultProfile.HitboxSet
end)
triggerbot:Connect(v115:GetPropertyChangedSignal({ "Triggerbot", "TargetHitboxes" }), function()
fn36(v124 ~= nil and v124.ItemBehaviors:GetEquippedGunName() or nil)
end)
return obj
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
index2.ResetFiringState = function(arg)
arg._reactionElapsed = nil
arg._releaseRemaining = 0
end
index2._CheckCrosshair = function(arg, arg2, arg3)
local currentCamera = v123.CurrentCamera
local v124 = v122()
local v125 = currentCamera:ViewportPointToRay(v124.X, v124.Y)
local paramsIncluding = arg._worldInclude:GetParamsIncluding(arg._includedHitboxes)
local hit = v123:Raycast(v125.Origin, v125.Direction * 2000, paramsIncluding)
if hit == nil then
return v86[153]
end
local model = hit.Instance:FindFirstAncestorOfClass("Model")
if model == nil then
return v86[153]
end
local v126 = arg._fighters.StateByModel[model]
if v126 == nil or not v126.IsEnemy then
return v86[153]
end
local targetConditions = arg3.TargetConditions
if targetConditions.Vulnerable and v126:IsInvincible() then
return false
end
local state = v126.Character.State
if not state.Alive then
return false
end
local freefall = Enum.HumanoidStateType.Freefall
if not (state.Humanoid:GetState() == freefall and arg._targetHitboxes.Air or arg._targetHitboxes.Ground)[hit.Instance.Name] then
return v86[153]
end
local notDeflecting = targetConditions.NotDeflecting
local notShielded = targetConditions.NotShielded
if v117.isShielded(arg2, v126, v121().Position, notDeflecting, notShielded) then
return false
end
return true
end
index2.Update = function(arg, arg2)
local triggerbot = v115.Data.Triggerbot
if not arg._active then
arg:ResetFiringState()
return
end
local inner = arg._playerContext.Inner
if inner == nil then
arg:ResetFiringState()
return
end
local equipped = inner.ItemBehaviors:GetEquipped()
if equipped == nil or equipped.__type ~= "Gun" or v120(equipped, triggerbot.ActivationConditions) then
arg:ResetFiringState()
return
end
local v124 = arg:_CheckCrosshair(equipped, triggerbot)
if v124 then
if arg._reactionElapsed == nil then
arg._reactionElapsed = 0
else
arg._reactionElapsed = arg._reactionElapsed + arg2
end
else
arg._reactionElapsed = nil
end
if v124 and arg._reactionElapsed ~= nil and arg._reactionElapsed >= triggerbot.ReactionTime then
arg._releaseRemaining = triggerbot.ReleaseTime
inner.FighterState:Input("StartShooting")
return
end
arg._releaseRemaining = math.max(0, arg._releaseRemaining - arg2)
if arg._releaseRemaining > v86[186] then
inner.FighterState:Input("StartShooting")
end
end
return index2
end
tbl17.g2 = function()
local g2 = tbl17.cache.g2
if not g2 then
local g22 = { c = fn35() }
tbl17.cache.g2 = g22
g2 = g22
end
return g2.c
end
end
do -- g4
local function fn35()
tbl17.g3()
return { Groups = { "Items", "Arms" }, ConfigGroupMap = { Arms = "Arms", Items = "Item" } }
end
tbl17.g4 = function()
local g4 = tbl17.cache.g4
if not g4 then
local g42 = { c = fn35() }
tbl17.cache.g4 = g42
g4 = g42
end
return g4.c
end
end
do -- g5
local function fn35()
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local tbl18 = {}
for _, v115 in arg, nil, nil do
tbl18[v115] = {}
end
local tbl19 = { _groups = arg, _set = tbl18 }
setmetatable(tbl19, index2)
return tbl19
end
index2.NewEntryForGroups = function(arg, arg2, arg3, arg4)
local set = arg._set
for _, v115 in arg._groups, nil, nil do
if not (arg4 ~= nil and not arg4[v115]) then
local v116 = set[v115]
if v116[arg2] == nil then
v116[arg2] = arg3(v115)
end
end
end
end
index2.NewEntryForGroup = function(arg, arg2, arg3, arg4)
local v115 = arg._set[arg2]
if v115[arg3] == nil then
v115[arg3] = arg4()
end
end
index2.RemoveEntryFromGroups = function(arg, arg2, arg3, arg4)
local set = arg._set
for _, v115 in arg._groups, nil, nil do
if not (arg4 ~= nil and arg4[v115]) then
local v116 = set[v115]
local v117 = v116[arg2]
if v117 ~= nil then
arg3(v117)
v116[arg2] = nil
end
end
end
end
index2.RemoveEntriesFromGroup = function(arg, arg2, arg3)
local v115 = arg._set[arg2]
for k, v116 in v115, nil, nil do
arg3(v116)
v115[k] = nil
end
end
index2.ForEachEntryInGroup = function(arg, arg2, arg3)
for k, v115 in arg._set[arg2], nil, nil do
arg3(k, v115)
end
end
index2.ForEachEntryInGroups = function(arg, arg2)
local set = arg._set
for _, v115 in arg._groups, nil, nil do
for k, v116 in set[v115], nil, nil do
arg2(k, v116)
end
end
end
return index2
end
tbl17.g5 = function()
local g5 = tbl17.cache.g5
if not g5 then
local g52 = { c = fn35() }
tbl17.cache.g5 = g52
g5 = g52
end
return g5.c
end
end
do -- g6
local function fn35()
local groups = tbl17.g4().Groups
tbl17.cU()
tbl17.aO()
tbl17.cX()
local v115 = tbl17.g()
local v116 = tbl17.k()
local v117 = tbl17.ez()
tbl17.g3()
local function fn36(arg)
local tbl18 = {}
local tbl19 = {}
local model = v102(v102(arg, "ViewModel"), "Model")
if model == nil then
return { Items = tbl18, Arms = tbl19 }
end
local function lower(s) return string.lower(tostring(s)) end
local function isArmName(name)
local n = lower(name)
if n == "leftarm" or n == "rightarm" then return true end
if n == "leftitem" or n == "rightitem" then return true end
if n:find("arm", 1, true) ~= nil then return true end
if n:find("glove", 1, true) ~= nil then return true end
if n:find("sleeve", 1, true) ~= nil then return true end
return false
end
local function isIgnoredName(name)
local n = lower(name)
return n == "camera" or n == "humanoidrootpart" or n == "charmholder"
or n:find("charm", 1, true) ~= nil
end
-- Arms: LeftArm / RightArm anywhere in the tree.
-- Items: every other part/model under the viewmodel that isn't a known
-- helper. This covers ItemVisual plus skins that hang geometry off
-- RightItem/LeftItem or their own named roots.
local function scan(node, inArm)
for _, v118 in node:GetChildren() do
local name = v118.Name
if isIgnoredName(name) then
-- skip helpers
elseif isArmName(name) then
table.insert(tbl19, v118)
elseif v118:IsA("BasePart") then
if inArm then
table.insert(tbl19, v118)
else
table.insert(tbl18, v118)
end
elseif v118:IsA("Model") or v118:IsA("Folder") then
if lower(name) == "itemvisual" then
table.insert(tbl18, v118)
else
scan(v118, inArm)
end
end
end
end
scan(model, false)
return { Items = tbl18, Arms = tbl19 }
end
local function fn37(arg, arg2)
for _, v118 in groups, nil, nil do
local v119 = arg[v118]
local v120 = arg2[v118]
if #v119 ~= #v120 then
return false
end
for k, v121 in v119, nil, nil do
if v120[k] ~= v121 then
return false
end
end
end
return true
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v118 = v116.new()
local tbl18 = {
_trove = v118,
Entries = {},
EntryAdded = v115.new(),
EntryRemoved = v115.new(),
EntryRefreshed = v115.new(),
}
setmetatable(tbl18, index2)
v118:Add(arg:ObserveContext("ViewmodelCollector", function(arg2, arg3)
arg3:Add(function()
tbl18:_RemoveAllItems()
end)
local itemBehaviors = arg2.ItemBehaviors
arg3:Connect(itemBehaviors.ItemAdded, function(item) tbl18:_AddItem(item.Inner) end)
arg3:Connect(itemBehaviors.ItemRemoved, function(item) tbl18:_RemoveItem(item.Inner) end)
for _, v119 in itemBehaviors:GetItems() do
tbl18:_AddItem(v119.Inner)
end
end))
v118:Connect(v117.Rebuilt, function(I) tbl18 :_RefreshItem(I);end)
return tbl18
end
index2._AddItem = function(I,W)local N= fn36 (W);I.Entries[W]=N;I.EntryAdded:Fire(W,N);end
index2._RemoveItem = function(l,I)l.Entries[I]=nil;l.EntryRemoved:Fire(I);end
index2._RefreshItem = function(I,W)local N= fn36 (W);if fn37 (I.Entries[W],N)then return;end;I.Entries[W]=N;I.EntryRefreshed:Fire(W,N);end
index2._RemoveAllItems = function(arg)
local entries = arg.Entries
for k in entries, nil, nil do
entries[k] = nil
arg.EntryRemoved:Fire(k)
end
end
index2.Destroy = function(arg)
arg._trove:Destroy()
arg.EntryAdded:Destroy()
if n26 < 4780 then
-- (anti-tamper freeze trap removed)
end
arg.EntryRemoved:Destroy()
arg.EntryRefreshed:Destroy()
end
return index2
end
tbl17.g6 = function()
local g6 = tbl17.cache.g6
if not g6 then
g6 = { c = fn35() }
tbl17.cache.g6 = g6
end
return g6.c
end
end
do -- g7
local function fn35()
local v115 = tbl17.dC()
local v116 = tbl17.bG()
local v117 = tbl17.g4()
local v118 = tbl17.g5()
tbl17.aO()
local v119 = tbl17.a8()
local v120 = tbl17.k()
tbl17.g6()
tbl17.g3()
local groups = v117.Groups
local configGroupMap = v117.ConfigGroupMap
local data = v116.Data
local function fn36(arg)
local v121 = data.Chams[configGroupMap[arg]]
-- Arms mirror the held item's chams look exactly (material, color,
-- transparency, strip). The Arms enable toggle still gates it separately.
if arg == "Arms" then
local item = data.Chams.Item
if item ~= nil then
v121 = {
Material = item.Material,
Color = item.Color,
Transparency = item.Transparency,
StripTextures = item.StripTextures,
}
end
end
return {
Material = v119.Map[v121.Material],
Color = v121.Color,
Transparency = v121.Transparency,
NullTextures = v121.StripTextures,
}
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v121 = v120.new()
local tbl18 = {
_trove = v121,
_enabledGroups = { Arms = false, Items = false },
_collector = arg,
_groupedEntries = v118.new(groups),
}
setmetatable(tbl18, index2)
v121:Connect(arg.EntryAdded, function(I,W) tbl18 :_AddOverridesToEnabledGroups(I,W);end)
v121:Connect(arg.EntryRefreshed, function(I,W) tbl18 :_RemoveOverridesForItem(I,false); tbl18 :_AddOverridesToEnabledGroups(I,W);end)
v121:Connect(arg.EntryRemoved, function(I) tbl18 :_RemoveOverridesForItem(I,false);end)
for _, v122 in groups, nil, nil do
local v123 = configGroupMap[v122]
v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, "Enabled" }), function(arg2)
tbl18:_SetEnabled(v122, arg2)
end)
local function fn37()
tbl18:_ApplyFullSpec(v122)
end
for _, v124 in { "Material", "StripTextures" }, nil, nil do
v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, v124 }), fn37)
end
v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, "Color" }), function(I) tbl18 :_ApplyColor( v122 ,I);end)
v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, "Transparency" }), function(I) tbl18 :_ApplyTransparency( v122 ,I);end)
tbl18:_SetEnabled(v122, data.Chams[v123].Enabled)
end
return tbl18
end
index2._SetEnabled = function(arg, arg2, arg3)
local enabledGroups = arg._enabledGroups
if enabledGroups[arg2] == arg3 then
return
end
enabledGroups[arg2] = arg3
if arg3 then
for k, v121 in arg._collector.Entries, nil, nil do
arg:_AddOverridesToEnabledGroup(arg2, k, v121)
end
else
arg:_RemoveOverridesFromGroup(arg2, true)
end
end
index2._AddOverridesToEnabledGroups = function(arg, arg2, arg3)
arg._groupedEntries:NewEntryForGroups(arg2, function(arg4)
local v121 = fn36(arg4)
local tbl18 = {}
for _, v122 in arg3[arg4], nil, nil do
local v123 = v115.new(v122)
v123:SetSpec(v121)
table.insert(tbl18, v123)
end
return tbl18
end, arg._enabledGroups)
end
index2._AddOverridesToEnabledGroup = function(arg, arg2, arg3, arg4)
arg._groupedEntries:NewEntryForGroup(arg2, arg3, function()
local v121 = fn36(arg2)
local tbl18 = {}
for _, v122 in arg4[arg2], nil, nil do
local v123 = v115.new(v122)
v123:SetSpec(v121)
table.insert(tbl18, v123)
end
return tbl18
end)
end
index2._RemoveOverridesForItem = function(arg, arg2, arg3)
arg._groupedEntries:RemoveEntryFromGroups(arg2, function(arg4)
for _, v121 in arg4, nil, nil do
v121:Destroy(arg3)
end
end)
end
index2._RemoveOverridesFromGroup = function(arg, arg2, arg3)
arg._groupedEntries:RemoveEntriesFromGroup(arg2, function(arg4)
for _, v121 in arg4, nil, nil do
v121:Destroy(arg3)
end
end)
end
index2._ApplyFullSpec = function(arg, arg2)
if not arg._enabledGroups[arg2] then
return
end
local v121 = fn36(arg2)
arg._groupedEntries:ForEachEntryInGroup(arg2, function(arg3, arg4)
for _, v122 in arg4, nil, nil do
v122:SetSpec(v121)
end
end)
end
index2._ApplyColor = function(l,I,W)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_113)for I,I_114 in l_113,nil,nil do I_114:SetColor(W);end;end);end
index2._ApplyTransparency = function(l,I,W)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_115)for I,I_116 in l_115,nil,nil do I_116:SetTransparency(W);end;end);end
index2.Destroy = function(arg)
arg._trove:Destroy()
for _, v121 in groups, nil, nil do
arg:_RemoveOverridesFromGroup(v121, true)
end
end
return index2
end
tbl17.g7 = function()
local g7 = tbl17.cache.g7
if not g7 then
g7 = { c = fn35() }
tbl17.cache.g7 = g7
end
return g7.c
end
end
do -- g8
local function fn35()
local v115 = tbl17.bG()
tbl17.a9()
local v116 = tbl17.g4()
local v117 = tbl17.g5()
tbl17.aO()
local v118 = tbl17.k()
tbl17.g6()
tbl17.g3()
local groups = v116.Groups
local configGroupMap = v116.ConfigGroupMap
local data = v115.Data
local tbl18 = { "FillColor", "FillTransparency", "OutlineColor", "OutlineTransparency" }
local function fn36(arg)
return data.ViewModelHighlight[configGroupMap[arg]]
end
local function fn37(arg, arg2)
arg.DepthMode = arg2.AlwaysOnTop and Enum.HighlightDepthMode.AlwaysOnTop or Enum.HighlightDepthMode.Occluded
arg.FillColor = arg2.FillColor
arg.FillTransparency = arg2.FillTransparency
arg.OutlineColor = arg2.OutlineColor
arg.OutlineTransparency = arg2.OutlineTransparency
end
local function createHighlight(parent, adornee, arg)
local highlight = Instance.new("Highlight")
fn37(highlight, arg)
highlight.Adornee = adornee
highlight.Parent = parent
return highlight
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v119 = v118.new()
local v120 = v119:Add(Instance.new("Folder"))
local tbl19 = {
_trove = v119,
_highlightContainer = v120,
_enabledGroups = { Arms = false, Items = false },
_collector = arg,
_groupedEntries = v117.new(groups),
}
setmetatable(tbl19, index2)
v119:Connect(arg.EntryAdded, function(I,W) tbl19 :_AddOverridesToEnabledGroups(I,W);end)
v119:Connect(arg.EntryRefreshed, function(I,W) tbl19 :_RemoveHighlightsForItem(I); tbl19 :_AddOverridesToEnabledGroups(I,W);end)
v119:Connect(arg.EntryRemoved, function(I) tbl19 :_RemoveHighlightsForItem(I);end)
for _, v121 in groups, nil, nil do
local v122 = configGroupMap[v121]
v119:Connect(v115:GetPropertyChangedSignal({ "ViewModelHighlight", v122, "Enabled" }), function(arg2)
tbl19:_SetEnabled(v121, arg2)
end)
local function fn38()
tbl19:_ApplyConfig(v121)
end
for _, v123 in { "AlwaysOnTop" }, nil, nil do
v119:Connect(v115:GetPropertyChangedSignal({ "ViewModelHighlight", v122, v123 }), fn38)
end
for _, v123 in tbl18, nil, nil do
v119:Connect(v115:GetPropertyChangedSignal({ "ViewModelHighlight", v122, v123 }), function(I) tbl19 :_ApplyColorFromConfig( v121 , v123 ,I);end)
end
tbl19:_SetEnabled(v121, data.ViewModelHighlight[v122].Enabled)
end
v120.Parent = K.hudParent()
return tbl19
end
index2._SetEnabled = function(arg, arg2, arg3)
local enabledGroups = arg._enabledGroups
if enabledGroups[arg2] == arg3 then
return
end
enabledGroups[arg2] = arg3
if arg3 then
for k, v119 in arg._collector.Entries, nil, nil do
arg:_AddOverridesToEnabledGroup(arg2, k, v119)
end
else
arg:_RemoveHighlightsFromGroup(arg2)
end
end
index2._AddOverridesToEnabledGroups = function(arg, arg2, arg3)
arg._groupedEntries:NewEntryForGroups(arg2, function(arg4)
local v119 = fn36(arg4)
local tbl19 = {}
for _, v120 in arg3[arg4], nil, nil do
local v121 = createHighlight(arg._highlightContainer, v120, v119)
table.insert(tbl19, v121)
end
return tbl19
end, arg._enabledGroups)
end
index2._AddOverridesToEnabledGroup = function(arg, arg2, arg3, arg4)
arg._groupedEntries:NewEntryForGroup(arg2, arg3, function()
local v119 = fn36(arg2)
local tbl19 = {}
for _, v120 in arg4[arg2], nil, nil do
local v121 = createHighlight(arg._highlightContainer, v120, v119)
table.insert(tbl19, v121)
end
return tbl19
end)
end
index2._RemoveHighlightsForItem = function(arg, arg2)
arg._groupedEntries:RemoveEntryFromGroups(arg2, function(arg3)
for _, v119 in arg3, nil, nil do
v119:Destroy()
end
end)
end
index2._RemoveHighlightsFromGroup = function(arg, arg2)
arg._groupedEntries:RemoveEntriesFromGroup(arg2, function(arg3)
for _, v119 in arg3, nil, nil do
v119:Destroy()
end
end)
end
index2._ApplyConfig = function(arg, arg2)
if not arg._enabledGroups[arg2] then
return
end
local v119 = fn36(arg2)
arg._groupedEntries:ForEachEntryInGroup(arg2, function(arg3, arg4)
for _, v120 in arg4, nil, nil do
fn37(v120, v119)
end
end)
end
index2._ApplyColorFromConfig = function(l,I,W,N)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_117)for I,I_118 in l_117,nil,nil do I_118[W]=N;end;end);end
index2.Destroy = function(arg)
for _, v119 in groups, nil, nil do
arg:_RemoveHighlightsFromGroup(v119)
end
arg._trove:Destroy()
end
return index2
end
tbl17.g8 = function()
local g8 = tbl17.cache.g8
if not g8 then
g8 = { c = fn35() }
tbl17.cache.g8 = g8
end
return g8.c
end
end
do -- g9
local function fn35()
local v115 = tbl17.ay()
local v116 = nil
local index2 = {}
index2.__index = index2
local color = Color3.new(v86[63], 1, v86[63])
local function fn36(arg)
local opposite = arg.Opposite
if opposite == nil then
return -1
end
return arg.Normal:Dot(opposite)
end
local function fn37(arg)
return ("%.3f,%.3f,%.3f"):format(arg.X, arg.Y, arg.Z)
end
local function fn38(arg, arg2, arg3, arg4)
return v115.new(function(arg5)
local v117 = v116
if v117 == nil then
v117 = cloneref(game:GetService("UGCValidationService"))
v116 = v117
end
local v118, v119 = v107(v117.GetMeshDataBinaryString, v117, arg)
if not v118 then
arg5(arg4)
return
end
local v120, v121 = v107(v117.CreateEditableMeshFromBinaryStringRobloxOnly, v117, v119)
if not v120 or v121 == nil then
arg5(arg4)
return
end
local tbl18 = {}
for _, v122 in v121:GetFaces() do
local faceVertices = v121:GetFaceVertices(v122)
if not (#faceVertices < 3) then
local tbl19 = {}
for k, v123 in faceVertices, nil, nil do
tbl19[k] = v121:GetPosition(v123)
end
local v123 = (tbl19[v86[56]] - tbl19[1]):Cross(tbl19[3] - tbl19[1])
if not (v123.Magnitude < 1e-06) then
table.insert(tbl18, { FaceId = v122, Verts = faceVertices, Positions = tbl19, Normal = v123.Unit })
end
end
end
for _, v122 in tbl18, nil, nil do
v121:RemoveFace(v122.FaceId)
end
v121:RemoveUnused()
local tbl19 = {}
local tbl20 = {}
for _, v122 in tbl18, nil, nil do
local n = #v122.Verts
for i = 1, n do
local n33 = i % n + 1
local v123 = v122.Positions[i]
local v124 = v122.Positions[n33]
local v125 = fn37(v123)
local v126 = fn37(v124)
local str7 = v125 .. "|" .. v126
if v126 < v125 then
str7 = v126 .. "|" .. v125
end
local v127 = tbl19[str7]
if v127 == nil then
local tbl21 = { PointA = v123, PointB = v124, Normal = v122.Normal, Opposite = nil }
tbl19[str7] = tbl21
table.insert(tbl20, tbl21)
elseif v127.Opposite == nil then
v127.Opposite = v122.Normal
end
end
end
local v122 = math.cos(math.rad(arg3))
local tbl21 = {}
for _, v123 in tbl20, nil, nil do
if fn36(v123) < v122 then
table.insert(tbl21, v123)
end
end
if #tbl21 > 10000 then
table.sort(tbl21, function(arg6, arg7)
return fn36(arg6) < fn36(arg7)
end)
for i = #tbl21, 10001, -1 do
tbl21[i] = nil
end
end
if #tbl21 == v86[186] then
arg5(arg4)
return
end
local n = arg2 * 0.5
for _, v123 in tbl21, nil, nil do
local n33 = v123.PointB - v123.PointA
if not (n33.Magnitude < 1e-06) then
local v124 = v123.Normal:Cross(n33.Unit)
if not (v124.Magnitude < 1e-06) then
local unit = v124.Unit
local n34 = v123.Normal * 0.001
if not v107(function()
local v125 = v121:AddVertex(v123.PointA - unit * n + n34)
local v126 = v121:AddVertex(v123.PointA + unit * n + n34)
local v127 = v121:AddVertex(v123.PointB + unit * n + n34)
local v128 = v121:AddVertex(v123.PointB - unit * n + n34)
for i = 1, 4 do
v121:AddColor(color, 1)
end
v121:AddTriangle(v125, v126, v127)
v121:AddTriangle(v125, v127, v128)
end) then
break
else
end
end
end
end
arg5(Content.fromObject(v121))
end)
end
local function fn39(arg, arg2, arg3)
local v117 = tostring
return string.format("%s|%s|%s", tostring(arg), tostring(arg2), v117(arg3))
end
local tbl18 = {}
local function fn40(arg, arg2, arg3, arg4)
local v117 = fn39(arg, arg2, arg3)
local v118 = tbl18[v117]
if v118 ~= nil then
return v115.resolve(v118)
end
local v119 = getthreadidentity()
setthreadidentity(v86[162])
local v120 = fn38(arg, arg2, arg3, arg4)
setthreadidentity(v119)
return v120:andThen(function(arg5)
tbl18[v117] = arg5
return arg5
end)
end
local function fn41(arg, meshContent, color2)
local v117 = getthreadidentity()
setthreadidentity(8)
arg.MeshContent = meshContent
arg.Color = color2
setthreadidentity(v117)
end
local function fn42(arg, color2)
local v117 = getthreadidentity()
setthreadidentity(v86[162])
arg.Color = color2
setthreadidentity(v117)
end
index2.new = function(arg, arg2, arg3, arg4)
local tbl19 = {
_meshPartSnapshots = {},
_width = arg2,
_creaseDegrees = arg4 or 30,
_color = arg3,
_descendantAddedConnection = nil,
_partDestroyingConnections = {},
_pendingContent = {},
}
setmetatable(tbl19, index2)
if arg:IsA("MeshPart") then
tbl19:_AddPart(arg)
end
for _, v117 in arg:QueryDescendants("MeshPart") do
tbl19:_AddPart(v117)
end
tbl19._descendantAddedConnection = arg.DescendantAdded:Connect(function(descendant)
if descendant:IsA("MeshPart") then
tbl19:_AddPart(descendant)
end
end)
return tbl19
end
index2._RemovePendingPromise = function(arg, arg2)
local v117 = arg._pendingContent[arg2]
if v117 ~= nil then
v117:cancel()
end
end
local function fn43(arg)
local meshSize = arg.MeshSize
local size = arg.Size
local n = 0
local n33 = 0
for _, v117 in { { meshSize.X, size.X }, { meshSize.Y, size.Y }, { meshSize.Z, size.Z } }, nil, nil do
if v117[2] > 1e-06 then
n += v117[1] / v117[v86[56]]
n33 += v86[63]
end
end
if n33 == 0 then
return v86[63]
end
return n / n33
end
index2._ApplyWireframe = function(arg, arg2, arg3, arg4)
arg:_RemovePendingPromise(arg2)
local creaseDegrees = arg._creaseDegrees
local v117 = fn40(arg3, arg._width * fn43(arg2), creaseDegrees, arg4)
arg._pendingContent[arg2] = v117
v117:andThen(function(arg5)
fn41(arg2, arg5, arg._color)
end):finally(function()
arg._pendingContent[arg2] = nil
end)
end
index2._AddPart = function(arg, arg2)
if arg._meshPartSnapshots[arg2] ~= nil then
return
end
local meshId = arg2.MeshId
if meshId == "" then
return
end
local meshContent = arg2.MeshContent
local tbl19 = { OriginalMeshId = meshId, OriginalMeshContent = meshContent, OriginalColor = arg2.Color }
arg:_ApplyWireframe(arg2, meshId, meshContent)
arg._meshPartSnapshots[arg2] = tbl19
arg._partDestroyingConnections[arg2] = arg2.Destroying:Once(function()
arg:_RemovePendingPromise(arg2)
arg._partDestroyingConnections[arg2] = nil
arg._meshPartSnapshots[arg2] = nil
end)
end
index2.SetWidth = function(arg, width)
arg._width = width
arg:_Regenerate()
end
index2.SetCreaseDegrees = function(arg, creaseDegrees)
arg._creaseDegrees = creaseDegrees
arg:_Regenerate()
end
index2._Regenerate = function(arg)
for k, v117 in arg._meshPartSnapshots, nil, nil do
arg:_ApplyWireframe(k, v117.OriginalMeshId, v117.OriginalMeshContent)
end
end
index2.SetColor = function(arg, color2)
arg._color = color2
for k in arg._meshPartSnapshots, nil, nil do
fn42(k, color2)
end
end
index2.Destroy = function(arg, arg2)
arg._descendantAddedConnection:Disconnect()
for _, v117 in arg._partDestroyingConnections, nil, nil do
v117:Disconnect()
end
for _, v117 in arg._pendingContent, nil, nil do
v117:cancel()
end
if arg2 then
for k, v117 in arg._meshPartSnapshots, nil, nil do
fn41(k, v117.OriginalMeshContent, v117.OriginalColor)
end
end
end
return index2
end
tbl17.g9 = function()
local g9 = tbl17.cache.g9
if not g9 then
local g92 = { c = fn35() }
tbl17.cache.g9 = g92
g9 = g92
end
return g9.c
end
end
do -- ha
local function fn35()
tbl17.aO()
local v115 = tbl17.k()
local v116 = tbl17.g9()
local v117 = tbl17.bG()
local v118 = tbl17.g4()
local v119 = tbl17.g5()
tbl17.g6()
tbl17.g3()
local groups = v118.Groups
local configGroupMap = v118.ConfigGroupMap
local data = v117.Data
local function fn36(arg)
return data.ViewModelWireframe[configGroupMap[arg]]
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v120 = v115.new()
local tbl18 = {
_trove = v120,
_enabledGroups = { Arms = v86[153], Items = false },
_collector = arg,
_groupedEntries = v119.new(groups),
}
setmetatable(tbl18, index2)
v120:Connect(arg.EntryAdded, function(I,W) tbl18 :_AddWireframesToEnabledGroups(I,W);end)
v120:Connect(arg.EntryRefreshed, function(I,W) tbl18 :_RemoveWireframesForItem(I,false); tbl18 :_AddWireframesToEnabledGroups(I,W);end)
v120:Connect(arg.EntryRemoved, function(I) tbl18 :_RemoveWireframesForItem(I,false);end)
for _, v121 in groups, nil, nil do
local v122 = configGroupMap[v121]
v120:Connect(v117:GetPropertyChangedSignal({ "ViewModelWireframe", v122, v86[44] }), function(arg2)
tbl18:_SetEnabled(v121, arg2)
end)
v120:Connect(v117:GetPropertyChangedSignal({ "ViewModelWireframe", v122, "Width" }), function(arg2)
tbl18:_ApplyWidth(v121, arg2)
end)
v120:Connect(v117:GetPropertyChangedSignal({ "ViewModelWireframe", v122, "Color" }), function(I) tbl18 :_ApplyColor( v121 ,I);end)
tbl18:_SetEnabled(v121, fn36(v121).Enabled)
end
return tbl18
end
index2._SetEnabled = function(arg, arg2, arg3)
if arg._enabledGroups[arg2] == arg3 then
return
end
arg._enabledGroups[arg2] = arg3
if arg3 then
for k, v120 in arg._collector.Entries, nil, nil do
arg:_AddWireframesToEnabledGroup(arg2, k, v120)
end
else
arg:_RemoveWireframesFromGroup(arg2, v86[34])
end
end
index2._AddWireframesToEnabledGroups = function(arg, arg2, arg3)
arg._groupedEntries:NewEntryForGroups(arg2, function(arg4)
local v120 = fn36(arg4)
local tbl18 = {}
for _, v121 in arg3[arg4], nil, nil do
table.insert(tbl18, v116.new(v121, v120.Width, v120.Color))
end
return tbl18
end, arg._enabledGroups)
end
index2._AddWireframesToEnabledGroup = function(arg, arg2, arg3, arg4)
arg._groupedEntries:NewEntryForGroup(arg2, arg3, function()
local v120 = fn36(arg2)
local tbl18 = {}
for _, v121 in arg4[arg2], nil, nil do
table.insert(tbl18, v116.new(v121, v120.Width, v120.Color))
end
return tbl18
end)
end
index2._RemoveWireframesForItem = function(arg, arg2, arg3)
arg._groupedEntries:RemoveEntryFromGroups(arg2, function(arg4)
for _, v120 in arg4, nil, nil do
v120:Destroy(arg3)
end
end)
end
index2._RemoveWireframesFromGroup = function(arg, arg2, arg3)
arg._groupedEntries:RemoveEntriesFromGroup(arg2, function(arg4)
for _, v120 in arg4, nil, nil do
v120:Destroy(arg3)
end
end)
end
index2._ApplyWidth = function(arg, arg2, arg3)
if not arg._enabledGroups[arg2] then
return
end
arg._groupedEntries:ForEachEntryInGroup(arg2, function(arg4, arg5)
for _, v120 in arg5, nil, nil do
v120:SetWidth(arg3)
end
end)
end
index2._ApplyColor = function(l,I,W)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_119)for I,I_120 in l_119,nil,nil do I_120:SetColor(W);end;end);end
index2.Destroy = function(arg)
arg._trove:Destroy()
for _, v120 in groups, nil, nil do
arg:_RemoveWireframesFromGroup(v120, true)
end
end
return index2
end
tbl17.ha = function()
local ha = tbl17.cache.ha
if not ha then
local ha2 = { c = fn35() }
tbl17.cache.ha = ha2
ha = ha2
end
return ha.c
end
end
do -- hb
local function fn35()
tbl17.cX()
local v115 = tbl17.g7()
local v116 = tbl17.g6()
local v117 = tbl17.g8()
local v118 = tbl17.ha()
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v119 = v116.new(arg)
local tbl18 = { _collector = v119, _chams = v115.new(v119), _highlight = v117.new(v119), _wireframe = v118.new(v119) }
setmetatable(tbl18, index2)
return tbl18
end
index2.Destroy = function(arg)
arg._collector:Destroy()
arg._chams:Destroy()
arg._highlight:Destroy()
arg._wireframe:Destroy()
end
return index2
end
tbl17.hb = function()
local hb = tbl17.cache.hb
if not hb then
local hb2 = { c = fn35() }
tbl17.cache.hb = hb2
hb = hb2
end
return hb.c
end
end
do -- hc
local function fn35()
local v115 = tbl17.bG()
tbl17.aO()
local v116 = tbl17.a()
local v117 = tbl17.k()
local clientViewModel = tbl17.aS().ClientViewModel
local v118 = tbl17.ad()
local v119 = tbl17.dI()
local index2 = {}
index2.__index = index2
local function fn36()
return false
end
local function fn37(arg)
local viewModelOffset = v115.Data.ViewModelOffset
local cframe = CFrame.fromOrientation
return CFrame.new(viewModelOffset.X * arg, viewModelOffset.Y * arg, viewModelOffset.Z * arg) * cframe(math.rad(viewModelOffset.Pitch * arg), math.rad(viewModelOffset.Yaw * arg), math.rad(viewModelOffset.Roll * arg))
end
index2.new = function(arg)
local v120 = v118.new()
local ViewModelOffset = v117.new("item_modifiers.ViewModelOffset")
local tbl18 = { _trove = ViewModelOffset, _errorReporter = v120, _isThirdPerson = arg or fn36 }
setmetatable(tbl18, index2)
ViewModelOffset:Connect(v115:GetPropertyChangedSignal({ "ViewModelOffset", "Enabled" }), function(arg2)
tbl18._errorReporter:ReportResult(tbl18:_SetEnabled(arg2))
end)
tbl18._errorReporter:ReportResult(tbl18:_SetEnabled(v115.Data.ViewModelOffset.Enabled))
return tbl18
end
index2._SetEnabled = function(arg, arg2)
if arg2 then
return arg:_LoadHook()
end
arg:_RevertHook()
return v116.VoidOk
end
index2._LoadHook = function(arg)
if arg._restore ~= nil then
return v116.VoidOk
end
local setCFrame = v102(clientViewModel, "SetCFrame")
if setCFrame == nil then
return v116.err("ViewModelOffset", "function_lookup", "ClientViewModel.SetCFrame not found")
end
v103(clientViewModel, "SetCFrame", function(arg2, cFrame)
local primaryPart = v102(arg2, "Model").PrimaryPart
if not v119(arg2) then
setCFrame(arg2, cFrame)
return
end
if arg._isThirdPerson() then
primaryPart.CFrame = cFrame
return
end
local v120 = fn37(v86[63] - v102(arg2, "_aim_spring").p)
if v120 ~= nil then
primaryPart.CFrame = cFrame * v120
else
primaryPart.CFrame = cFrame
end
end)
arg._restore = { Method = setCFrame }
return v116.VoidOk
end
index2._RevertHook = function(arg)
local restore = arg._restore
if restore == nil then
return
end
arg._restore = nil
v103(clientViewModel, "SetCFrame", restore.Method)
end
index2.Destroy = function(arg)
arg._trove:Destroy()
arg._errorReporter:Destroy()
arg:_RevertHook()
end
return index2
end
tbl17.hc = function()
local hc = tbl17.cache.hc
if not hc then
local hc2 = { c = fn35() }
tbl17.cache.hc = hc2
hc = hc2
end
return hc.c
end
end
do -- hd
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.c4()
local v117 = tbl17.a()
local v118 = tbl17.k()
local v119 = getmetatable(tbl17.aS().MechanicsController)
local flag19 = v119 ~= nil and v102(v119, "__index") or nil
local flag20 = type(flag19) == "table" and v102(flag19, "_GetWalkSpeed") or nil
local v120 = (type(flag20) == "function" and { flag20 } or { nil })[v86[63]]
local index2 = {}
index2.__index = index2
index2.new = function()
local tbl18 = {
_trove = v118.new("movement.WalkSpeed"),
_isHookLoaded = v86[153],
_multiplierEnabled = false,
_multiplier = 1,
_slidingMultiplierEnabled = v86[153],
_slidingMultiplier = 1,
}
setmetatable(tbl18, index2)
tbl18._trove:Add(v116:ObserveEnabledKeybind({ "Movement", "WalkSpeed" }, function(arg)
tbl18:SetMultiplierEnabled(arg)
end))
tbl18._trove:Add(v116:ObserveEnabledKeybind({ "Movement", "Sliding" }, function(arg)
tbl18:SetSlidingMultiplierEnabled(arg)
end))
tbl18._trove:Connect(v115:GetPropertyChangedSignal({ "Movement", "WalkSpeed", "Speed" }), function(arg)
tbl18:SetMultiplier(arg)
end)
tbl18._trove:Connect(v115:GetPropertyChangedSignal({ "Movement", "Sliding", "Speed" }), function(arg)
tbl18:SetSlidingMultiplier(arg)
end)
tbl18:SetMultiplier(v115.Data.Movement.WalkSpeed.Speed)
tbl18:SetSlidingMultiplier(v115.Data.Movement.Sliding.Speed)
return tbl18
end
index2._AttemptLoadHook = function(arg)
if arg._isHookLoaded then
return v117.VoidOk
end
if v120 == nil then
return v117.err("WalkSpeed", "function_lookup", "Failed to find `_GetWalkSpeed`")
end
local v121 = nil
for k, v122 in debug.getupvalues(v120) do
if type(v122) == "table" and v102(v122, "BASE_WALKSPEED") ~= nil then
v121 = k
break
else
v121 = nil
end
end
if v121 == nil then
return v117.err("WalkSpeed", "upvalue_search", "Failed to find `BASE_WALKSPEED` upvalue")
end
arg._upvalueIndex = v121
local v122 = debug.getupvalue(v120, v121)
arg._oldUpvalueByFunction = v122
debug.setupvalue(v120, v121, setmetatable({}, { __index = function(arg2, arg3)
if arg3 == "BASE_WALKSPEED" then
local baseWalkspeed = v102(v122, "BASE_WALKSPEED")
if arg._slidingMultiplierEnabled and debug.info(3, "n") == "Slide" then
return baseWalkspeed * arg._slidingMultiplier
end
if arg._multiplierEnabled then
return baseWalkspeed * arg._multiplier
end
return baseWalkspeed
end
game:GetService("Players").LocalPlayer:Kick("Unexpected behavior (client physics 1)")
return nil
end }))
arg._isHookLoaded = true
return v117.VoidOk
end
index2.SetMultiplierEnabled = function(arg, multiplierEnabled)
arg._multiplierEnabled = multiplierEnabled
return arg:_AttemptLoadHook()
end
index2.SetMultiplier = function(arg, multiplier)
arg._multiplier = multiplier
return arg:_AttemptLoadHook()
end
index2.SetSlidingMultiplierEnabled = function(arg, slidingMultiplierEnabled)
arg._slidingMultiplierEnabled = slidingMultiplierEnabled
return arg:_AttemptLoadHook()
end
index2.SetSlidingMultiplier = function(arg, slidingMultiplier)
arg._slidingMultiplier = slidingMultiplier
return arg:_AttemptLoadHook()
end
index2.Destroy = function(arg)
arg._trove:Destroy()
if arg._isHookLoaded and arg._upvalueIndex ~= nil and arg._oldUpvalueByFunction ~= nil and v120 ~= nil then
debug.setupvalue(v120, arg._upvalueIndex, arg._oldUpvalueByFunction)
end
end
return index2
end
tbl17.hd = function()
local hd = tbl17.cache.hd
if not hd then
hd = { c = fn35() }
tbl17.cache.hd = hd
end
return hd.c
end
end
do -- he
local function fn35()
local tbl18 = {}
local tbl19 = {}
for _, v115 in {
{
Name = "Soft Rain",
Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/soft-rain.ogg",
},
{
Name = "Light Rain",
Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/light-rain.ogg",
},
}, nil, nil do
table.insert(tbl18, v115.Name)
tbl19[v115.Name] = v115.Url
end
return { Names = tbl18, UrlByName = tbl19 }
end
tbl17.he = function()
local he = tbl17.cache.he
if not he then
he = { c = fn35() }
tbl17.cache.he = he
end
return he.c
end
end
do -- hf
local function fn35()
local v115 = tbl17.he()
local v116 = tbl17.e5()
local v117 = tbl17.bG()
local v118 = tbl17.e7()
local v119 = tbl17.aB()
tbl17.ay()
local v120 = tbl17.k()
local v121 = cloneref(game:GetService("SoundService"))
local function createSound()
local sound = Instance.new("Sound")
sound.Looped = true
sound.Parent = v121
return sound
end
local function fn36()
local ambience = v117.Data.Ambience
if not ambience.Enabled then
return nil
end
return v116.normalize(ambience.CustomSound) or v115.UrlByName[ambience.Sound]
end
local index2 = {}
index2.__index = index2
index2.new = function()
local tbl18 = {
_trove = v120.new(),
_assetPromise = nil,
_sound = nil,
_customAssets = v118.new(),
_currentSource = nil,
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
local function fn37()
arg:_Sync()
end
for _, v122 in { v86[44], "Sound", "CustomSound", "Volume" }, nil, nil do
arg._trove:Connect(v117:GetPropertyChangedSignal({ "Ambience", v122 }), fn37)
end
arg:_Sync()
end
index2._Sync = function(arg)
local v122 = fn36()
if v122 == nil then
arg:_Stop()
return
end
local sound = arg._sound or createSound()
arg._sound = sound
sound.Volume = v117.Data.Ambience.Volume
if v122 == arg._currentSource then
return
end
arg._currentSource = v122
arg:_CancelAssetPromise()
local response2 = arg._customAssets:GetAsync(v122)
arg._assetPromise = response2
response2:andThen(function(soundId)
sound.SoundId = soundId
sound:Play()
end):catch(function(arg2)
local v123 = tostring
v119.get():Notify(string.format("failed to load ambience sound '%s': %s", tostring(v122), v123(arg2)))
end):finally(function()
arg._assetPromise = nil
end)
end
index2._CancelAssetPromise = function(arg)
local assetPromise = arg._assetPromise
if assetPromise ~= nil then
assetPromise:cancel()
end
end
index2._Stop = function(arg)
arg._currentSource = nil
arg:_CancelAssetPromise()
local sound = arg._sound
if sound ~= nil then
arg._sound = nil
sound:Destroy()
end
end
index2.Destroy = function(arg)
arg:_Stop()
arg._trove:Destroy()
end
return index2
end
tbl17.hf = function()
local hf = tbl17.cache.hf
if not hf then
local hf2 = { c = fn35() }
tbl17.cache.hf = hf2
hf = hf2
end
return hf.c
end
end
do -- hg
local function fn35()
local v115 = tbl17.g()
local v116 = tbl17.k()
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3)
local EnsuredChildren = v116.new("instance.EnsuredChildren")
local tbl18 = {
_trove = EnsuredChildren,
_parent = arg,
_className = arg2,
_createFallback = arg3,
_childSet = {},
_isCreating = false,
ChildAdded = EnsuredChildren:Add(v115.new()),
ChildRemoved = EnsuredChildren:Add(v115.new()),
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
arg._trove:Connect(arg._parent.ChildAdded, function(arg2)
if arg._isCreating or not arg2:IsA(arg._className) or arg._childSet[arg2] then
return
end
local fallback = arg._fallback
if fallback ~= nil then
arg._fallback = nil
arg._childSet[fallback] = nil
fallback:Destroy()
arg.ChildRemoved:Fire(fallback)
end
arg._childSet[arg2] = true
arg.ChildAdded:Fire(arg2)
end)
arg._trove:Connect(arg._parent.ChildRemoved, function(arg2)
if not arg._childSet[arg2] then
return
end
arg._childSet[arg2] = nil
if arg._fallback == arg2 then
arg._fallback = nil
end
arg.ChildRemoved:Fire(arg2)
if next(arg._childSet) == nil then
arg:_AddFallback()
end
end)
for _, v117 in arg._parent:GetChildren() do
if v117:IsA(arg._className) then
arg._childSet[v117] = v86[34]
arg.ChildAdded:Fire(v117)
end
end
if next(arg._childSet) == nil then
arg:_AddFallback()
end
end
index2._AddFallback = function(arg)
local v117 = arg._createFallback()
arg._isCreating = true
v117.Parent = arg._parent
arg._isCreating = false
arg._childSet[v117] = true
arg._fallback = v117
arg.ChildAdded:Fire(v117)
end
index2.Observe = function(arg, arg2, arg3)
local Observe = v116.new("instance.EnsuredChildren.Observe")
Observe:Connect(arg.ChildAdded, arg2)
Observe:Connect(arg.ChildRemoved, arg3)
for k in arg._childSet, nil, nil do
arg2(k)
end
return Observe
end
index2.Destroy = function(arg)
arg._trove:Destroy()
local fallback = arg._fallback
if fallback ~= nil then
arg._fallback = nil
fallback:Destroy()
end
end
return index2
end
tbl17.hg = function()
local hg = tbl17.cache.hg
if not hg then
local hg2 = { c = fn35() }
tbl17.cache.hg = hg2
hg = hg2
end
return hg.c
end
end
do -- hh
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.hg()
local v117 = tbl17.gF()
local v118 = tbl17.k()
local v119 = cloneref(game:GetService("Lighting"))
local tbl18 = { "Color", "Decay", "Density", "Offset", "Glare", "Haze" }
local tbl19 = { "Atmosphere", v86[44] }
local index2 = {}
index2.__index = index2
index2.new = function()
local tbl20 = {
_trove = v118.new("world_visuals.AtmosphereController"),
_activeTrove = nil,
_guardByAtmosphere = {},
}
setmetatable(tbl20, index2)
tbl20:_Initialize()
return tbl20
end
index2._Initialize = function(arg)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), function()
arg:_Rebuild()
end)
for _, v120 in tbl18, nil, nil do
arg._trove:Connect(v115:GetPropertyChangedSignal({ "Atmosphere", v120 }), function()
arg:_Reconcile()
end)
end
arg:_Rebuild()
end
index2._Rebuild = function(arg)
local activeTrove = arg._activeTrove
if activeTrove ~= nil then
arg._activeTrove = nil
for k in arg._guardByAtmosphere, nil, nil do
arg:_RemoveGuard(k)
end
activeTrove:Destroy()
end
if not v115:Get(tbl19) then
return
end
local v120 = arg._trove:Extend()
arg._activeTrove = v120
v120:Add(v120:Add(v116.new(v119, "Atmosphere", function()
return Instance.new("Atmosphere")
end)):Observe(function(arg2)
arg:_SetupGuard(arg2)
end, function(arg2)
arg:_RemoveGuard(arg2)
end))
end
index2._Reconcile = function(arg)
for _, v120 in arg._guardByAtmosphere, nil, nil do
arg:_ApplyOverrides(v120)
end
end
index2._ApplyOverrides = function(arg, arg2)
for _, v120 in tbl18, nil, nil do
arg2:SetOverride(v120, v115:Get({ "Atmosphere", v120 }))
end
end
index2._SetupGuard = function(arg, arg2)
local v120 = v117.new(arg2)
arg._guardByAtmosphere[arg2] = v120
arg:_ApplyOverrides(v120)
end
index2._RemoveGuard = function(arg, arg2)
arg._guardByAtmosphere[arg2]:Destroy()
arg._guardByAtmosphere[arg2] = nil
end
index2.Destroy = function(arg)
for k in arg._guardByAtmosphere, nil, nil do
arg:_RemoveGuard(k)
end
arg._trove:Destroy()
end
return index2
end
tbl17.hh = function()
local hh = tbl17.cache.hh
if not hh then
hh = { c = fn35() }
tbl17.cache.hh = hh
end
return hh.c
end
end
do -- hi
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.gF()
local v117 = tbl17.k()
local tbl18 = {
{ Path = "ClockTime", Property = "ClockTime" },
{ Path = "Brightness", Property = "Brightness" },
{ Path = "ExposureCompensation", Property = "ExposureCompensation" },
{ Path = "EnvironmentDiffuseScale", Property = "EnvironmentDiffuseScale" },
{ Path = "EnvironmentSpecularScale", Property = "EnvironmentSpecularScale" },
{ Path = "GeographicLatitude", Property = "GeographicLatitude" },
{ Path = "ShadowSoftness", Property = "ShadowSoftness" },
{ Path = "ShadowColor", Property = "ShadowColor" },
{
Path = "LightingStyle",
Property = "LightingStyle",
Transform = function(arg)
return Enum.LightingStyle[arg]
end,
},
}
local tbl19 = { "Lighting", "Enabled" }
local v118 = cloneref(game:GetService("Lighting"))
local index2 = {}
index2.__index = index2
index2.new = function()
local LightingController = v117.new("world_visuals.LightingController")
local tbl20 = { _trove = LightingController, _guardedLighting = LightingController:Add(v116.new(v118)) }
setmetatable(tbl20, index2)
tbl20:_Initialize()
return tbl20
end
index2._Initialize = function(arg)
if not (n26 >= 4821) then
arg:_BindGenerics()
arg:_BindAmbient()
arg:_BindColorShift()
arg:_BindFog()
return
end
-- (anti-tamper freeze trap removed)
end
index2._BindGenerics = function(arg)
for _, v119 in tbl18, nil, nil do
local tbl20 = { "Lighting", v119.Path, v86[44] }
local tbl21 = { "Lighting", v119.Path, "Value" }
local function fn36()
if not v115:Get(tbl19) or not v115:Get(tbl20) then
arg._guardedLighting:ClearOverride(v119.Property)
return
end
local v120 = v115:Get(tbl21)
local transform = v119.Transform
arg._guardedLighting:SetOverride(v119.Property, transform ~= nil and transform(v120) or v120)
end
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36)
fn36()
end
end
index2._BindAmbient = function(arg)
local tbl20 = { "Lighting", "Ambient", "Enabled" }
local tbl21 = { "Lighting", "Ambient", "Indoor" }
local tbl22 = { "Lighting", "Ambient", "Outdoor" }
local function fn36()
if not v115:Get(tbl19) or not v115:Get(tbl20) then
arg._guardedLighting:ClearOverride("Ambient")
arg._guardedLighting:ClearOverride("OutdoorAmbient")
return
end
local v119 = v115:Get(tbl21)
local v120 = v115:Get(tbl22)
arg._guardedLighting:SetOverride("Ambient", v119)
arg._guardedLighting:SetOverride("OutdoorAmbient", v120)
end
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl22), fn36)
fn36()
end
index2._BindColorShift = function(arg)
local tbl20 = { "Lighting", "ColorShift", "Enabled" }
local tbl21 = { "Lighting", "ColorShift", "Top" }
local tbl22 = { "Lighting", "ColorShift", "Bottom" }
local function fn36()
if not v115:Get(tbl19) or not v115:Get(tbl20) then
arg._guardedLighting:ClearOverride("ColorShift_Top")
arg._guardedLighting:ClearOverride("ColorShift_Bottom")
return
end
local v119 = v115:Get(tbl21)
local v120 = v115:Get(tbl22)
arg._guardedLighting:SetOverride("ColorShift_Top", v119)
arg._guardedLighting:SetOverride("ColorShift_Bottom", v120)
end
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl22), fn36)
fn36()
end
index2._BindFog = function(arg)
local tbl20 = { "Lighting", "Fog", "Enabled" }
local tbl21 = { "Lighting", "Fog", "Color" }
local tbl22 = { "Lighting", "Fog", "Start" }
local tbl23 = { "Lighting", "Fog", "End" }
local function fn36()
if not v115:Get(tbl19) or not v115:Get(tbl20) then
arg._guardedLighting:ClearOverride("FogColor")
arg._guardedLighting:ClearOverride("FogStart")
arg._guardedLighting:ClearOverride("FogEnd")
return
end
local v119 = v115:Get(tbl21)
local v120 = v115:Get(tbl22)
local v121 = v115:Get(tbl23)
arg._guardedLighting:SetOverride("FogColor", v119)
arg._guardedLighting:SetOverride("FogStart", v120)
arg._guardedLighting:SetOverride("FogEnd", v121)
end
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl22), fn36)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl23), fn36)
fn36()
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.hi = function()
local hi = tbl17.cache.hi
if not hi then
hi = { c = fn35() }
tbl17.cache.hi = hi
end
return hi.c
end
end
do -- hj
local function fn35()local l=Color3.fromRGB(214,230,255);return table.freeze({PartsPrecreate=480,PartsExpansion=32,DefaultPartCount=40,DefaultColor=l,DefaultThickness=4,DefaultPulseSpeed=40,DefaultHold=0.25,DefaultDissipate=0.55,FadeEdge=0.1,CleanupBuffer=0.05,DefaultMaxRadius=7,FlashBrightness=8,FlashRange=70,FlickerMin=2,FlickerMax=3,FlickerOnMin=0.02,FlickerOnMax=0.045,FlickerOffMin=0.02,FlickerOffMax=0.05,FlickerDim=0.15,FlickerMaxDuration=0.28500000000000003,ExplosionSize=0.45,SparkDistanceSpread=0.3,SparkSpeedSpread=0.5});end
tbl17.hj = function()
local hj = tbl17.cache.hj
if not hj then
hj = { c = fn35() }
tbl17.cache.hj = hj
end
return hj.c
end
end
do -- hk
local function fn35()local l,I,W=CFrame.lookAt(Vector3.new(),Vector3.new(1,0,0)):Inverse(),0.1*math.tau,0.9*math.tau;return table.freeze({XInverse=l,OffsetAngle=6.123233995736766E-17,RollOffsetLow=I,RollOffsetHigh=W,FadeEdge=0.1});end
tbl17.hk = function()
local hk = tbl17.cache.hk
if not hk then
hk = { c = fn35() }
tbl17.cache.hk = hk
end
return hk.c
end
end
do -- hm
local function fn35()
return function(l,I,W,N,P)return I*(1-l)^3+W*3*l*(1-l)^2+N*3*(1-l)*l^2+P*l^3;end
end
tbl17.hm = function()
local hm = tbl17.cache.hm
if not hm then
hm = { c = fn35() }
tbl17.cache.hm = hm
end
return hm.c
end
end
do -- hn
local function fn35()
return function(l,I,W,N,P,a,e)return math.clamp(N/(2*P)-math.abs((l-I*W+0.5*N)/P),a,e);end
end
tbl17.hn = function()
local hn = tbl17.cache.hn
if not hn then
hn = { c = fn35() }
tbl17.cache.hn = hn
end
return hn.c
end
end
do -- ho
local function fn35()
return function(l)return math.exp(-5000*(l-0.5)^10);end
end
tbl17.ho = function()
local ho = tbl17.cache.ho
if not ho then
ho = { c = fn35() }
tbl17.cache.ho = ho
end
return ho.c
end
end
do -- hp
local function fn35()
return function(l,I,W,N,P)return N+(P-N)*(math.noise(l,I,W)+0.5);end
end
tbl17.hp = function()
local hp = tbl17.cache.hp
if not hp then
local hp2 = { c = fn35() }
tbl17.cache.hp = hp2
hp = hp2
end
return hp.c
end
end
do -- hq
local function fn35()
local v115 = tbl17.hk()
tbl17.hl()
local v116 = tbl17.hm()
local v117 = tbl17.hn()
local v118 = tbl17.ho()
local v119 = tbl17.hp()
local v120 = tbl17.fk()
local v121 = cloneref(game:GetService("RunService"))
local part = Instance.new("Part")
local smooth = Enum.SurfaceType.Smooth
part.TopSurface = Enum.SurfaceType.Smooth
part.BottomSurface = smooth
local v122 = v86[153]
part.Anchored = true
part.CanCollide = v122
part.Locked = v86[34]
part.CastShadow = false
part.CanTouch = v86[153]
part.CanQuery = false
part.Shape = Enum.PartType.Cylinder
part.Name = "BoltPart"
part.Material = Enum.Material.Neon
part.Color = Color3.new(1, v86[63], 1)
part.Transparency = v86[63]
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2)
local v123 = v86[91]
return setmetatable({
_parts = {},
_partsHidden = false,
_disabledTransparency = 1,
_startT = 0,
_ranNum = math.random() * v123,
Enabled = true,
AutoDestroy = true,
Attachment0 = arg,
Attachment1 = arg2,
CurveSize0 = 0,
CurveSize1 = 0,
MinRadius = v86[186],
MaxRadius = 2.4,
Frequency = v86[63],
AnimationSpeed = 7,
Thickness = 1,
MinThicknessMultiplier = 0.2,
MaxThicknessMultiplier = v86[63],
MinTransparency = 0,
MaxTransparency = v86[63],
PulseLength = 1000000,
PulseSpeed = 2,
FadeLength = 0.2,
ContractFrom = 0.5,
Color = Color3.new(1, v86[63], v86[63]),
ColorOffsetSpeed = 3,
SpaceCurveFunction = v116,
OpacityProfileFunction = v117,
RadialProfileFunction = v118,
}, index2)
end
index2.Destroy = function(arg)
arg.Enabled = false
if arg._dissipateConnection then
arg._dissipateConnection:Disconnect()
arg._dissipateConnection = nil
end
end
index2.Restart = function(arg)
arg.Enabled = true
arg._partsHidden = false
arg._startT = os.clock()
local v123 = v86[91]
arg._ranNum = math.random() * v123
end
index2.DestroyDissipate = function(arg, arg2, arg3)
local n = arg2 or 0.2
local n33 = arg3 or 0.5
local now2 = os.clock()
local minTransparency = arg.MinTransparency
local contractFrom = arg.ContractFrom
local n34 = arg.ContractFrom + v86[63] / #arg._parts * arg.FadeLength
local maxRadius = arg.MaxRadius
local minThicknessMultiplier = arg.MinThicknessMultiplier
arg._dissipateConnection = v121.Heartbeat:Connect(function()
local n35 = os.clock() - now2
arg.MinThicknessMultiplier = minThicknessMultiplier + (-v86[56] - minThicknessMultiplier) * n35 / n
if n35 < n * 0.4 then
arg.MinTransparency = minTransparency + (contractFrom - minTransparency) * n35 / n * v86[28]
elseif n35 < n then
local n36 = (n35 - n * v86[28]) / n * 0.6
arg.MinTransparency = contractFrom + (n34 - contractFrom) * n36
arg.MaxRadius = maxRadius * (1 + n33 * n36)
arg.MinRadius = arg.MinRadius + (arg.MaxRadius - arg.MinRadius) * n36
else
local startT = arg._startT
if os.clock() - startT < (arg.PulseLength + 1) / arg.PulseSpeed then
arg:Destroy()
end
if arg._dissipateConnection then
arg._dissipateConnection:Disconnect()
end
arg._dissipateConnection = nil
end
end)
end
index2._UpdateGeometry = function(I,W,N,P,a,e,c,E)local p,T=1-I.MaxTransparency,1-I.MinTransparency;local t=I.OpacityProfileFunction(N,P,I.PulseSpeed,I.PulseLength,I.FadeLength,p,T);p=I.Thickness*a*t;t=p>0 and t or 0;local T_121=1-I.ContractFrom;local x=1/(E*I.FadeLength);if t>T_121 then W.Size=Vector3.new((c-e).Magnitude,p,p);W.CFrame=CFrame.lookAt((e+c)*0.5,c)* v115 .XInverse;W.Transparency=1-t;return true;elseif t>T_121-x then a=(1-(t-(T_121-x))*E*I.FadeLength)*(N=(I.PulseLength+1)/I.PulseSpeed then if I.AutoDestroy then I:Destroy();end;return;end;local J,B,X,H=I.Attachment0,I.Attachment1,I.CurveSize0,I.CurveSize1;local k,D,Q,F=J.WorldPosition,J.WorldPosition+J.WorldAxis*X,B.WorldPosition-B.WorldAxis*H,B.WorldPosition;J=x(0,k,D,Q,F);X,H=J,J;for R=1,a,1 do B,J=P[R],R/a;local P_122=c*-t+E*10*J-0.2+e*4;local m=5*(c*0.01*-t/10+E*J)+e*4;local e_123,c_124,E_125,o= v119 (5*P_122,1.5,1*m,0, v115 .RollOffsetLow)+ v119 (0.5*P_122,1.5,0.1*m,0, v115 .RollOffsetHigh), v119 (3.4,m,P_122,W,N)*S(J), v119 (2.3,m,P_122,p,T),x(J,k,D,Q,F);local W_126=if R~=a then(CFrame.new(X,o)*CFrame.Angles(0,0,e_123)*CFrame.Angles(math.acos(math.clamp( v119 (m,P_122,2.7, v115 .OffsetAngle,1),-1,1)),0,0)*CFrame.new(0,0,-c_124)).Position else o;if I:_UpdateGeometry(B,J,t,E_125,H,W_126,a)then I:_UpdateColor(B,J,t);end;X,H=o,W_126;end;end
index2.GetTemplate = function()
return part
end
return index2
end
tbl17.hq = function()
local hq = tbl17.cache.hq
if not hq then
local hq2 = { c = fn35() }
tbl17.cache.hq = hq2
hq = hq2
end
return hq.c
end
end
do -- hr
local function fn35()local l=Color3.fromRGB(210,228,255);return table.freeze({DefaultMinBranches=3,DefaultMaxBranches=4,DefaultColor=l,DefaultThickness=4,DefaultPulseSpeed=40,ThicknessFraction=0.55,BranchMaxRadius=5,TrunkFork={OriginMinPercent=0.1,OriginMaxPercent=0.6,Spread=0.8,LengthMinFraction=0.3,LengthMaxFraction=0.6,ScaleByRemaining=true},ChildFork={OriginMinPercent=0.25,OriginMaxPercent=0.8,Spread=0.85,LengthMinFraction=0.45,LengthMaxFraction=0.72,ScaleByRemaining=false},MaxGenerations=3,MaxTotalBranches=12,MaxChildren=2,ForkChanceByGeneration={0.7,0.45},ChildThicknessFalloff=0.62,ChildRadiusFalloff=0.7,PartsByGeneration={12,8,5}});end
tbl17.hr = function()
local hr = tbl17.cache.hr
if not hr then
local hr2 = { c = fn35() }
tbl17.cache.hr = hr2
hr = hr2
end
return hr.c
end
end
do -- hs
local function fn35()
return function(arg)
local v115 = arg:Cross(Vector3.yAxis)
if v115.Magnitude < 0.001 then
v115 = arg:Cross(Vector3.xAxis)
end
local unit = v115.Unit
return unit, arg:Cross(unit).Unit
end
end
tbl17.hs = function()
local hs = tbl17.cache.hs
if not hs then
hs = { c = fn35() }
tbl17.cache.hs = hs
end
return hs.c
end
end
do -- ht
local function fn35()
return function(arg, arg2)
return arg + math.random() * (arg2 - arg)
end
end
tbl17.ht = function()
local ht = tbl17.cache.ht
if not ht then
local ht2 = { c = fn35() }
tbl17.cache.ht = ht2
ht = ht2
end
return ht.c
end
end
do -- hu
local function fn35()
tbl17.a1()
local v115 = tbl17.k()
local v116 = tbl17.hr()
local v117 = tbl17.hq()
local v118 = tbl17.hs()
local v119 = tbl17.ht()
local function fn36(arg, arg2, arg3, arg4, arg5, arg6)
local v120 = v119(arg6.OriginMinPercent, arg6.OriginMaxPercent)
local v121 = v119(arg6.LengthMinFraction, arg6.LengthMaxFraction)
local n
if arg6.ScaleByRemaining then
n = v121 * (1 - v120)
else
n = v121
end
local tau = math.tau
local n33 = math.random() * tau
return arg + arg2 * arg3 * v120, (arg2.Unit + (math.cos(n33) * arg4 + math.sin(n33) * arg5) * arg6.Spread).Unit, arg3 * n
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3, arg4, arg5)
local tbl18 = arg5 or {}
local tbl19 = {
Color = tbl18.Color or v116.DefaultColor,
Thickness = (tbl18.Thickness or v116.DefaultThickness) * v116.ThicknessFraction,
PulseSpeed = tbl18.PulseSpeed or v116.DefaultPulseSpeed,
MaxBranches = tbl18.MaxBranches or v116.MaxTotalBranches,
}
return setmetatable({
_trove = v115.new(),
_host = arg,
_trunk = arg2,
_bolts = {},
_startT = os.clock(),
_holdTime = arg3,
_dissipateTime = arg4,
_remainingBudget = tbl19.MaxBranches,
Options = tbl19,
}, index2)
end
index2.Destroy = function(arg)
for _, v120 in arg._bolts, nil, nil do
v120:Destroy()
arg._host.RemoveBolt(v120)
end
table.clear(arg._bolts)
arg._trove:Destroy()
end
index2.Create = function(arg)
local trunk = arg._trunk
local worldPosition = trunk.Attachment0.WorldPosition
local n = trunk.Attachment1.WorldPosition - worldPosition
local v120, v121 = v118(n.Unit)
for i = 1, math.random(v116.DefaultMinBranches, v116.DefaultMaxBranches) do
local v122, v123, v124 = fn36(worldPosition, n.Unit, n.Magnitude, v120, v121, v116.TrunkFork)
arg:_SpawnBranch(v122, v123, v124, arg.Options.Thickness, v116.BranchMaxRadius, 1)
end
end
index2._SpawnBranch = function(arg, worldPosition, arg2, arg3, thickness, maxRadius, arg4)
if arg._remainingBudget <= v86[186] then
return
end
arg._remainingBudget = arg._remainingBudget - v86[63]
local v120 = arg._trove:Add(Instance.new("Attachment"))
v120.WorldPosition = worldPosition
v120.Parent = arg._host.Anchor
local v121 = arg._trove:Add(Instance.new("Attachment"))
v121.WorldPosition = worldPosition + arg2 * arg3
v121.Parent = arg._host.Anchor
local options = arg.Options
local partsByGeneration = v116.PartsByGeneration
local v122 = v117.new(v120, v121)
v122.Color = options.Color
v122.Thickness = thickness
v122.MaxRadius = maxRadius
v122.PulseSpeed = options.PulseSpeed
arg._host.AddBolt(v122, partsByGeneration[arg4] or partsByGeneration[#partsByGeneration])
table.insert(arg._bolts, v122)
if v116.MaxGenerations <= arg4 then
return
end
local v123 = v116.ForkChanceByGeneration[arg4] or v86[186]
local v124, v125 = v118(arg2)
for i = v86[63], v116.MaxChildren do
if not (arg._remainingBudget <= v86[186]) then
if not (math.random() > v123) then
local v126, v127, v128 = fn36(worldPosition, arg2, arg3, v124, v125, v116.ChildFork)
arg:_SpawnBranch(v126, v127, v128, thickness * v116.ChildThicknessFalloff, maxRadius * v116.ChildRadiusFalloff, arg4 + 1)
end
continue
end
break
end
end
index2.Update = function(l)local I=os.clock()-l._startT;if I 0 and options.NumBolts or v86[186]
for i = v126, numBolts do
arg:_SpawnBolt(worldPosition, upVector, size)
end
end
index2._SpawnBolt = function(arg, worldPosition, arg2, arg3)
local host = arg._host
local trove = arg._trove
local v121 = v116(arg2, v117.BoltInnerAngleMin, v117.BoltInnerAngleMax)
local boltDistanceScale = v117.BoltDistanceScale
local worldPosition2 = worldPosition + v121 * v120(v117.BoltDistanceMin, v117.BoltDistanceMax) * boltDistanceScale * arg3
local v122 = trove:Add(Instance.new("Attachment"))
v122.WorldPosition = worldPosition
v122.WorldAxis = v121
v122.Parent = host.Anchor
local v123 = trove:Add(Instance.new("Attachment"))
v123.WorldPosition = worldPosition2
v123.WorldAxis = v116(-arg2, v117.BoltOuterAngleMin, v117.BoltOuterAngleMax)
v123.Parent = host.Anchor
local v124 = v118.new(v122, v123)
v124.AnimationSpeed = v86[186]
v124.Thickness = 1
v124.Color = arg.Options.BoltColor
v124.Frequency = 2
v124.MinRadius = 0
v124.MaxRadius = v117.BoltMaxRadiusScale * arg3
v124.PulseLength = 0.8
v124.PulseSpeed = 5
v124.FadeLength = 0.4
v124.ColorOffsetSpeed = 20
v124.MinThicknessMultiplier = 0.7
v124.MaxThicknessMultiplier = 1
host.AddBolt(v124, v117.BoltPartCount)
table.insert(arg._bolts, { Bolt = v124, Attachment1 = v123, Velocity = v121 * v117.BoltVelocityScale * arg3 })
end
index2.Update = function(I)local W=os.clock()-I._startT;if not I._emittersCut and W> v117 .EmitterBurstTime then I._emittersCut=true;for l,l_128 in I._emitters,nil,nil do l_128.Enabled=false;end;end;for l,W_129 in I._bolts,nil,nil do l=W_129.Attachment1;l.WorldPosition=l.WorldPosition+W_129.Velocity;end;end
index2.Destroy = function(arg)
for _, v121 in arg._bolts, nil, nil do
v121.Bolt:Destroy()
arg._host.RemoveBolt(v121.Bolt)
end
table.clear(arg._bolts)
table.clear(arg._emitters)
arg._trove:Destroy()
end
return index2
end
tbl17.hx = function()
local hx = tbl17.cache.hx
if not hx then
local hx2 = { c = fn35() }
tbl17.cache.hx = hx2
hx = hx2
end
return hx.c
end
end
do -- hy
local function fn35()local l=Color3.fromRGB(238,246,255);return table.freeze({DefaultMaxSparks=18,DefaultMinSpeed=10,DefaultMaxSpeed=22,DefaultMinDistance=6,DefaultMaxDistance=22,DefaultMinParts=4,DefaultMaxParts=7,DefaultColor=l,DefaultThickness=2.2,DefaultMaxRadius=4,PulseLength=0.4});end
tbl17.hy = function()
local hy = tbl17.cache.hy
if not hy then
hy = { c = fn35() }
tbl17.cache.hy = hy
end
return hy.c
end
end
do -- hz
local function fn35()
tbl17.a1()
local v115 = tbl17.k()
local v116 = tbl17.hy()
local v117 = tbl17.hq()
local v118 = tbl17.ht()
local v119 = Random.new()
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3)
local tbl18 = arg3 or {}
local tbl19 = {
MaxSparkCount = tbl18.MaxSparkCount or v116.DefaultMaxSparks,
MinSpeed = tbl18.MinSpeed or v116.DefaultMinSpeed,
MaxSpeed = tbl18.MaxSpeed or v116.DefaultMaxSpeed,
MinDistance = tbl18.MinDistance or v116.DefaultMinDistance,
MaxDistance = tbl18.MaxDistance or v116.DefaultMaxDistance,
MinParts = tbl18.MinParts or v116.DefaultMinParts,
MaxParts = tbl18.MaxParts or v116.DefaultMaxParts,
Color = tbl18.Color or v116.DefaultColor,
Thickness = tbl18.Thickness or v116.DefaultThickness,
MaxRadius = tbl18.MaxRadius or v116.DefaultMaxRadius,
}
return setmetatable({ _trove = v115.new("lightning_sparks"), _host = arg, _parentBolt = arg2, _sparks = {}, Options = tbl19 }, index2)
end
index2.Create = function(arg)
for i = 1, arg.Options.MaxSparkCount do
arg:_SpawnSpark()
end
end
index2._SpawnSpark = function(arg)
local options = arg.Options
local host = arg._host
local trove = arg._trove
local v120 = trove:Add(Instance.new("Attachment"))
v120.Parent = host.Anchor
local v121 = trove:Add(Instance.new("Attachment"))
v121.Parent = host.Anchor
local v122 = v117.new(v120, v121)
v122.Color = options.Color
v122.Thickness = options.Thickness
v122.MaxRadius = options.MaxRadius
v122.PulseLength = v116.PulseLength
v122.AutoDestroy = false
local tbl18 = { Bolt = v122, Attachment0 = v120, Attachment1 = v121, StartT = 0, Lifetime = v86[186] }
host.AddBolt(v122, math.random(options.MinParts, options.MaxParts))
arg:_Respawn(tbl18)
table.insert(arg._sparks, tbl18)
end
index2._Respawn = function(arg, arg2)
local options = arg.Options
local parentBolt = arg._parentBolt
local v120 = parentBolt.Attachment0.WorldPosition:Lerp(parentBolt.Attachment1.WorldPosition, math.random())
local v121 = v118(options.MinDistance, options.MaxDistance)
arg2.Attachment0.WorldPosition = v120
arg2.Attachment1.WorldPosition = v120 + v119:NextUnitVector() * v121
local v122 = v118(options.MinSpeed, options.MaxSpeed)
arg2.Bolt.PulseSpeed = v122
arg2.Lifetime = (arg2.Bolt.PulseLength + 1) / v122
arg2.StartT = os.clock()
arg2.Bolt:Restart()
end
index2.Update = function(l)local I=os.clock();for W,W_130 in l._sparks,nil,nil do if I-W_130.StartT>=W_130.Lifetime then l:_Respawn(W_130);end;end;end
index2.Destroy = function(arg)
for _, v120 in arg._sparks, nil, nil do
v120.Bolt:Destroy()
arg._host.RemoveBolt(v120.Bolt)
end
table.clear(arg._sparks)
arg._trove:Destroy()
end
return index2
end
tbl17.hz = function()
local hz = tbl17.cache.hz
if not hz then
hz = { c = fn35() }
tbl17.cache.hz = hz
end
return hz.c
end
end
do -- hA
local function fn35()
local v115 = tbl17.dE()
local v116 = cloneref(game:GetService("Workspace"))
local cframe = CFrame.new(0, 1e9, 0)
local function fn36(arg, parent)
local clone = arg:Clone()
clone.CFrame = cframe
clone.Anchored = true
clone.Parent = parent
return clone
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3)
arg2 = arg2 or 5
arg3 = arg3 or v116
local v117 = v115(arg)
local tbl18 = {}
for i = 1, arg2 do
table.insert(tbl18, fn36(v117, arg3))
end
v117.Parent = nil
return setmetatable({ Open = tbl18, InUse = {}, CurrentCacheParent = arg3, Template = v117, ExpansionSize = v86[133] }, index2)
end
index2.Destroy = function(arg)
for _, v117 in arg.Open, nil, nil do
v117:Destroy()
end
for _, v117 in arg.InUse, nil, nil do
v117:Destroy()
end
arg.Template:Destroy()
table.clear(arg.Open)
table.clear(arg.InUse)
end
index2.CreatePart = function(arg)
return fn36(arg.Template, arg.CurrentCacheParent)
end
index2.GetPart = function(arg)
local v117 = table.remove(arg.Open)
if v117 == nil then
arg:Expand(math.max(0, arg.ExpansionSize - 1))
v117 = arg:CreatePart()
end
table.insert(arg.InUse, v117)
return v117
end
index2.ReturnPart = function(arg, arg2)
local v117 = table.find(arg.InUse, arg2)
if v117 == nil then
return
end
table.remove(arg.InUse, v117)
table.insert(arg.Open, arg2)
arg2.CFrame = cframe
arg2.Anchored = true
end
index2.SetCacheParent = function(arg, currentCacheParent)
arg.CurrentCacheParent = currentCacheParent
for _, v117 in arg.Open, nil, nil do
v117.Parent = currentCacheParent
end
for _, v117 in arg.InUse, nil, nil do
v117.Parent = currentCacheParent
end
end
index2.Expand = function(arg, arg2)
local expansionSize = arg2 or arg.ExpansionSize
for i = 1, expansionSize do
table.insert(arg.Open, arg:CreatePart())
end
end
return index2
end
tbl17.hA = function()
local ha = tbl17.cache.hA
if not ha then
local ha2 = { c = fn35() }
tbl17.cache.hA = ha2
ha = ha2
end
return ha.c
end
end
do -- hC
local function fn35()
local v115 = tbl17.hj()
local v116 = tbl17.hq()
local v117 = tbl17.hu()
local v118 = tbl17.hx()
local v119 = tbl17.hz()
local v120 = tbl17.hA()
local v121 = tbl17.k()
tbl17.hB()
local v122 = tbl17.ht()
local v123 = tbl17.fk()
local v124 = cloneref(game:GetService("TweenService"))
local v125 = cloneref(game:GetService("Workspace"))
local function fn36(arg)
local v126
if typeof(arg) == "ColorSequence" then
v126 = v123(arg, 0.5)
else
v126 = arg
end
local v127 = v86[48]
return v126:Lerp(Color3.new(1, 1, 1), v127)
end
local index2 = {}
index2.__index = index2
index2.new = function()
return setmetatable({
_trove = v121.new("lightning"),
_folder = nil,
_anchor = nil,
_cache = nil,
_host = nil,
_bolts = {},
_effects = {},
}, index2)
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
index2.Initialise = function(arg)
local trove = arg._trove
local folder = Instance.new("Folder")
folder.Name = "kh_lightning"
folder.Parent = v125
trove:Add(folder)
local part = Instance.new("Part")
part.Name = "anchor"
part.Anchored = true
part.CanCollide = false
part.CanQuery = false
part.CanTouch = false
part.Transparency = 1
part.Size = Vector3.one
part.Parent = folder
trove:Add(part)
local partsPrecreate = v115.PartsPrecreate
local v126 = trove:Add(v120.new(v116.GetTemplate(), partsPrecreate, folder))
v126.ExpansionSize = v115.PartsExpansion
arg._folder = folder
arg._anchor = part
arg._cache = v126
arg._host = {
Anchor = part,
AddBolt = function(arg2, arg3)
arg:AddBolt(arg2, arg3)
end,
RemoveBolt = function(arg2)
arg:RemoveBolt(arg2)
end,
}
end
index2.Update = function(l)for I,I_131 in l._effects,nil,nil do I_131:Update();end;for I,I_132 in l._bolts,nil,nil do I_132:Update();end;end
index2._TrackEffect = function(arg, arg2, arg3)
table.insert(arg._effects, arg3)
arg2:Add(function()
local v126 = table.find(arg._effects, arg3)
if v126 then
table.remove(arg._effects, v126)
end
arg3:Destroy()
end)
end
index2.AddBolt = function(arg, arg2, arg3)
local v126 = arg3 or v86[192]
for i = 1, v126 do
arg2._parts[i] = arg._cache:GetPart()
end
arg2._partsHidden = false
arg2._disabledTransparency = 1
arg2._startT = os.clock()
local v127 = v86[91]
arg2._ranNum = math.random() * v127
table.insert(arg._bolts, arg2)
end
index2.RemoveBolt = function(arg, arg2)
local v126 = table.find(arg._bolts, arg2)
if v126 then
table.remove(arg._bolts, v126)
end
for _, v127 in arg2._parts, nil, nil do
arg._cache:ReturnPart(v127)
end
table.clear(arg2._parts)
end
index2.Strike = function(arg, arg2, arg3, arg4)
local tbl18 = arg4 or {}
local v126 = arg._trove:Extend()
local v127 = arg:_SpawnTrunk(v126, arg2, arg3, tbl18)
local tbl19 = {
Trove = v126,
Bolt = v127,
To = arg3,
Options = tbl18,
HoldTime = tbl18.HoldTime or v115.DefaultHold,
DissipateTime = tbl18.DissipateTime or v115.DefaultDissipate,
}
arg:_SpawnBranches(tbl19)
arg:_SpawnSparks(tbl19)
arg:_SpawnExplosion(tbl19)
arg:_SpawnFlash(tbl19)
arg:_ScheduleFade(tbl19)
arg:_ScheduleCleanup(tbl19)
return v127
end
index2._SpawnTrunk = function(arg, arg2, worldPosition, worldPosition2, arg3)
local v126 = arg2:Add(Instance.new("Attachment"))
v126.WorldPosition = worldPosition
v126.Parent = arg._anchor
local v127 = arg2:Add(Instance.new("Attachment"))
v127.WorldPosition = worldPosition2
v127.Parent = arg._anchor
local v128 = v116.new(v126, v127)
v128.Color = arg3.Color or v115.DefaultColor
v128.Thickness = arg3.Thickness or v115.DefaultThickness
v128.PulseSpeed = arg3.PulseSpeed or v115.DefaultPulseSpeed
v128.MaxRadius = arg3.MaxRadius or v115.DefaultMaxRadius
arg:AddBolt(v128, arg3.PartCount or v115.DefaultPartCount)
arg2:Add(function()
v128:Destroy()
arg:RemoveBolt(v128)
end)
return v128
end
index2._SpawnBranches = function(arg, arg2)
local bolt = arg2.Bolt
local v126 = v117.new(arg._host, bolt, arg2.HoldTime, arg2.DissipateTime, {
Color = bolt.Color,
Thickness = bolt.Thickness,
PulseSpeed = bolt.PulseSpeed,
MaxBranches = arg2.Options.Branches,
})
v126:Create()
arg:_TrackEffect(arg2.Trove, v126)
end
index2._SpawnSparks = function(arg, arg2)
local sparks = arg2.Options.Sparks
if sparks and sparks.Enabled == false then
return
end
local distance = sparks and sparks.Distance
local speed = sparks and sparks.Speed
local v126 = v119.new(arg._host, arg2.Bolt, {
Color = sparks and sparks.Color or arg2.Bolt.Color,
MaxSparkCount = sparks and sparks.Count,
Thickness = sparks and sparks.Thickness,
MaxRadius = sparks and sparks.Jaggedness,
MinDistance = distance and distance * v115.SparkDistanceSpread,
MaxDistance = distance,
MinSpeed = speed and speed * v115.SparkSpeedSpread,
MaxSpeed = speed,
})
v126:Create()
arg:_TrackEffect(arg2.Trove, v126)
end
index2._SpawnExplosion = function(arg, arg2)
local explosion = arg2.Options.Explosion
if explosion and not explosion.Enabled then
return
end
local color = explosion and explosion.Color or arg2.Bolt.Color
local v126 = v118.new(arg._host, arg2.To, {
Color = color,
BoltColor = color,
Size = explosion and explosion.Size or v115.ExplosionSize,
NumBolts = explosion and explosion.Bolts,
})
v126:Create()
arg:_TrackEffect(arg2.Trove, v126)
end
index2._SpawnFlash = function(arg, arg2)
local flashBrightness = arg2.Options.FlashBrightness or v115.FlashBrightness
local part = Instance.new("Part")
part.Anchored = true
part.CanCollide = v86[153]
part.CanQuery = false
part.CanTouch = false
part.Transparency = 1
part.Size = Vector3.one
part.CFrame = CFrame.new(arg2.To)
part.Parent = arg._folder
arg2.Trove:Add(part)
local pointLight = Instance.new("PointLight")
pointLight.Color = fn36(arg2.Bolt.Color)
pointLight.Brightness = flashBrightness
pointLight.Range = v115.FlashRange
pointLight.Parent = part
arg2.Trove:Add(task.spawn(function()
for i = v86[63], math.random(v115.FlickerMin, v115.FlickerMax) do
pointLight.Brightness = flashBrightness * v122(0.6, 1)
task.wait(v122(v115.FlickerOnMin, v115.FlickerOnMax))
pointLight.Brightness = flashBrightness * v115.FlickerDim
task.wait(v122(v115.FlickerOffMin, v115.FlickerOffMax))
end
pointLight.Brightness = flashBrightness
v124:Create(pointLight, TweenInfo.new(arg2.DissipateTime), { Brightness = 0 }):Play()
end))
end
index2._ScheduleFade = function(arg, arg2)
arg2.Trove:Add(task.delay(arg2.HoldTime, function()
arg2.Bolt:Fade(arg2.DissipateTime)
end))
end
index2._ScheduleCleanup = function(arg, arg2)
local cleanupBuffer = v115.CleanupBuffer
arg2.Trove:Add(task.delay(math.max(arg2.HoldTime + arg2.DissipateTime, v115.FlickerMaxDuration + arg2.DissipateTime, v118.Duration) + cleanupBuffer, function()
arg._trove:Remove(arg2.Trove)
end))
end
return index2
end
tbl17.hC = function()
local hc = tbl17.cache.hC
if not hc then
local hc2 = { c = fn35() }
tbl17.cache.hC = hc2
hc = hc2
end
return hc.c
end
end
do -- hD
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.k()
local v117 = cloneref(game:GetService("Lighting"))
local index2 = {}
index2.__index = index2
index2.new = function()
local tbl18 = { _trove = v116.new(), _activeTrove = nil, _blurEffect = nil, _lastCameraCFrame = nil }
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
local trove = arg._trove
local function fn36()
arg:_Rebuild()
end
trove:Connect(v115:GetPropertyChangedSignal({ "MotionBlur", "Enabled" }), fn36)
trove:Connect(v115:GetPropertyChangedSignal({ "MotionBlur", "Intensity" }), fn36)
trove:Connect(v115:GetPropertyChangedSignal({ "MotionBlur", "Sensitivity" }), fn36)
if v115.Data.MotionBlur.Enabled then
arg:_Rebuild()
end
end
index2._Rebuild = function(arg)
local activeTrove = arg._activeTrove
if activeTrove ~= nil then
arg._activeTrove = nil
arg._blurEffect = nil
arg._lastCameraCFrame = nil
activeTrove:Destroy()
end
if not v115.Data.MotionBlur.Enabled then
return
end
local v118 = arg._trove:Extend()
arg._activeTrove = v118
local blurEffect = Instance.new("BlurEffect")
blurEffect.Size = 0
blurEffect.Parent = v117
v118:Add(blurEffect)
arg._blurEffect = blurEffect
end
local function fn36(arg, arg2, arg3)
local n = (arg.Position - arg2.Position).Magnitude / arg3
local _v118, v119 = arg:ToObjectSpace(arg2):ToAxisAngle()
return n * v86[126] + math.abs(v119) / arg3 * 3
end
index2._OnPreRender = function(arg, arg2)
local blurEffect = arg._blurEffect
if blurEffect == nil then
return
end
local currentCamera = workspace.CurrentCamera
if currentCamera == nil then
return
end
local motionBlur = v115.Data.MotionBlur
local cFrame = currentCamera.CFrame
local lastCameraCFrame = arg._lastCameraCFrame
arg._lastCameraCFrame = cFrame
if lastCameraCFrame == nil then
return
end
blurEffect.Size = blurEffect.Size + (math.clamp(fn36(cFrame, lastCameraCFrame, arg2) * motionBlur.Sensitivity, 0, motionBlur.Intensity) - blurEffect.Size) * math.min(1, arg2 * v86[149])
end
index2.PreRender = function(arg, arg2)
if arg._activeTrove == nil then
return
end
arg:_OnPreRender(arg2)
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.hD = function()
local hd = tbl17.cache.hD
if not hd then
local hd2 = { c = fn35() }
tbl17.cache.hD = hd2
hd = hd2
end
return hd.c
end
end
do -- hE
local function fn35()
local v115 = tbl17.gF()
local v116 = tbl17.k()
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2)
local tbl18 = {
_trove = v116.new("world_visuals.EffectOverride"),
_guardTroveByEffect = {},
_createEffect = arg2,
_effect = arg2(),
}
setmetatable(tbl18, index2)
tbl18:_Initialize(arg)
return tbl18
end
index2._Initialize = function(arg, arg2)
local className = arg._effect.ClassName
arg._trove:Connect(arg._effect.Destroying, function()
arg._effect = arg._createEffect()
end)
arg._trove:Connect(arg2.DescendantAdded, function(arg3)
if arg._effect ~= arg3 and className == arg3.ClassName then
arg:_SetupGuard(arg3)
if n26 >= 4818 then
-- (anti-tamper freeze trap removed)
end
end
end)
for _, v117 in arg2:GetDescendants() do
if arg._effect ~= v117 and className == v117.ClassName then
arg:_SetupGuard(v117)
end
end
end
index2._SetupGuard = function(arg, arg2)
local EffectOverride = v116.new("world_visuals.EffectOverride")
v115.new(arg2):SetOverride("Enabled", false)
EffectOverride:Connect(arg2.Destroying, function()
arg._guardTroveByEffect[arg2] = nil
EffectOverride:Destroy()
end)
arg._guardTroveByEffect[arg2] = EffectOverride
end
index2.Get = function(arg)
return arg._effect
end
index2.Destroy = function(arg)
arg._trove:Destroy()
arg._effect:Destroy()
for _, v117 in arg._guardTroveByEffect, nil, nil do
v117:Destroy()
end
end
return index2
end
tbl17.hE = function()
local he = tbl17.cache.hE
if not he then
he = { c = fn35() }
tbl17.cache.hE = he
end
return he.c
end
end
do -- hF
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.hE()
tbl17.gF()
local v117 = tbl17.k()
local v118 = cloneref(game:GetService("Lighting"))
local function fn36(arg)
return arg
end
local function fn37(arg, arg2)
local v119 = table.create(#arg2)
for _, v120 in arg2, nil, nil do
if type(v120) == "string" then
table.insert(v119, { Name = v120, Path = { arg, v120 }, Transform = fn36 })
else
local insert = table.insert
local tbl18 = { Name = v120.Name }
local path = {}
local subKey = v120.SubKey or v120.Name
path[1] = arg
path[2] = subKey
tbl18.Path = path
tbl18.Transform = v120.Transform or fn36
insert(v119, tbl18)
end
end
return v119
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local tbl18 = {
_trove = v117.new("world_visuals.PostEffectController"),
_className = arg.ClassName,
_effectOverride = nil,
_enabledPath = { arg.RootKey, "Enabled" },
_properties = fn37(arg.RootKey, arg.Properties),
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
arg._trove:Connect(v115:GetPropertyChangedSignal(arg._enabledPath), function()
arg:_Rebuild()
end)
for _, v119 in arg._properties, nil, nil do
arg._trove:Connect(v115:GetPropertyChangedSignal(v119.Path), function()
arg:_Reconcile()
end)
end
arg:_Rebuild()
end
index2._Rebuild = function(arg)
local effectOverride = arg._effectOverride
if effectOverride ~= nil then
arg._effectOverride = nil
effectOverride:Destroy()
end
if not v115:Get(arg._enabledPath) then
return
end
arg._effectOverride = v116.new(v118, function()
local instance = Instance.new(arg._className)
arg:_ApplyProperties(instance)
instance.Parent = v118
return instance
end)
end
index2._Reconcile = function(arg)
if not v115:Get(arg._enabledPath) then
return
end
local effectOverride = arg._effectOverride
if effectOverride == nil then
return
end
arg:_ApplyProperties(effectOverride:Get())
end
index2._ApplyProperties = function(arg, arg2)
for _, v119 in arg._properties, nil, nil do
arg2[v119.Name] = v119.Transform(v115:Get(v119.Path))
end
end
index2.Destroy = function(arg)
arg._trove:Destroy()
local effectOverride = arg._effectOverride
if effectOverride ~= nil then
arg._effectOverride = nil
effectOverride:Destroy()
end
end
return index2
end
tbl17.hF = function()
local hf = tbl17.cache.hF
if not hf then
local hf2 = { c = fn35() }
tbl17.cache.hF = hf2
hf = hf2
end
return hf.c
end
end
do -- hG
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.hg()
local v117 = tbl17.gF()
tbl17.gY()
local v118 = tbl17.k()
local v119 = cloneref(game:GetService("Lighting"))
local tbl18 = {
"SkyboxBk",
"SkyboxDn",
"SkyboxFt",
"SkyboxLf",
"SkyboxRt",
"SkyboxUp",
"StarCount",
"CelestialBodiesShown",
"SunAngularSize",
"MoonAngularSize",
"SunTextureId",
"MoonTextureId",
}
local tbl19 = { "Skybox", v86[44] }
local tbl20 = { "Skybox", "Preset" }
local function fn36(arg, arg2)
if arg2 == nil then
arg:ClearAllOverrides()
return
end
for _, v120 in tbl18, nil, nil do
local v121 = arg2[v120]
if v121 == nil then
arg:ClearOverride(v120)
else
arg:SetOverride(v120, v121)
end
end
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local tbl21 = {
_trove = v118.new("world_visuals.sky_controller"),
_activeTrove = nil,
_skyboxes = arg,
_guardBySky = {},
}
setmetatable(tbl21, index2)
tbl21:_Initialize()
return tbl21
end
index2._Initialize = function(arg)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), function()
arg:_Rebuild()
end)
arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), function()
arg:_Reconcile()
end)
arg:_Rebuild()
end
index2._Rebuild = function(arg)
local activeTrove = arg._activeTrove
if activeTrove ~= nil then
arg._activeTrove = nil
for k in arg._guardBySky, nil, nil do
arg:_RemoveGuard(k)
end
activeTrove:Destroy()
end
if not v115:Get(tbl19) then
return
end
local v120 = arg._trove:Extend()
arg._activeTrove = v120
v120:Add(v120:Add(v116.new(v119, "Sky", function()
return Instance.new("Sky")
end)):Observe(function(arg2)
arg:_SetupGuard(arg2)
end, function(arg2)
arg:_RemoveGuard(arg2)
end))
end
index2._Reconcile = function(arg)
local v120 = arg._skyboxes:FindPreset(v115:Get(tbl20))
for _, v121 in arg._guardBySky, nil, nil do
fn36(v121, v120)
end
end
index2._SetupGuard = function(arg, arg2)
local v120 = v117.new(arg2)
arg._guardBySky[arg2] = v120
local v121 = arg._skyboxes:FindPreset(v115:Get(tbl20))
if v121 ~= nil then
fn36(v120, v121)
end
end
index2._RemoveGuard = function(arg, arg2)
arg._guardBySky[arg2]:Destroy()
arg._guardBySky[arg2] = nil
end
index2.Destroy = function(arg)
for k in arg._guardBySky, nil, nil do
arg:_RemoveGuard(k)
end
arg._trove:Destroy()
end
return index2
end
tbl17.hG = function()
local hg = tbl17.cache.hG
if not hg then
local hg2 = { c = fn35() }
tbl17.cache.hG = hg2
hg = hg2
end
return hg.c
end
end
do -- hI
local function fn35()
local v115 = tbl17.e5()
local v116 = tbl17.hH()
local v117 = tbl17.bG()
tbl17.hC()
local v118 = tbl17.k()
local v119 = cloneref(game:GetService("SoundService"))
local v120 = cloneref(game:GetService("Workspace"))
local v121 = cloneref(game:GetService("Players"))
local function fn36(arg)
local numberSequence = NumberSequence.new
local tbl18 = {}
local v122 = NumberSequenceKeypoint.new(0, v86[63])
local v123 = NumberSequenceKeypoint.new(v86[126], arg)
local v124 = NumberSequenceKeypoint.new(0.85, arg)
local new = NumberSequenceKeypoint.new
tbl18[1] = v122
tbl18[2] = v123
tbl18[3] = v124
do
local values = table.pack(new(1, 1))
table.move(values, 1, values.n, 4, tbl18)
end
return numberSequence(tbl18)
end
local function fn37(arg, arg2)
local keypoints = arg.Keypoints
local v122 = table.create(#keypoints)
for _, v123 in keypoints, nil, nil do
table.insert(v122, NumberSequenceKeypoint.new(v123.Time, v123.Value * arg2, v123.Envelope * arg2))
end
return NumberSequence.new(v122)
end
local function fn38(arg)
local v122 = v115.normalize(arg)
if v122 == nil then
return v116.ThunderSoundId
end
local v123 = v115.classify(v122)
if v123 == "Asset" then
return v122
end
if v123 == "File" then
local v124, v125 = v107(getcustomasset, v122)
if v124 and type(v125) == "string" then
return v125
end
end
return nil
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v122 = v118.new()
local part = Instance.new("Part")
part.Name = "WeatherEmitter"
part.Anchored = true
part.CanCollide = false
part.CanQuery = false
part.CanTouch = v86[153]
part.Transparency = v86[63]
part.Size = Vector3.new(140, 1, 140)
part.Parent = v120
v122:Add(part)
local tbl18 = {
_trove = v122,
_lightning = arg,
_part = part,
_activeTrove = nil,
_emitters = {},
_height = v117.Data.Weather.Height,
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
index2._Initialize = function(arg)
local trove = arg._trove
local function fn39()
arg:_Rebuild()
end
local function fn40()
arg:_Reconcile()
end
for _, v122 in { { "Weather", "Enabled" }, { "Weather", "Preset" } }, nil, nil do
trove:Connect(v117:GetPropertyChangedSignal(v122), fn39)
end
for _, v122 in {
{ "Weather", "Intensity" },
{ "Weather", "Rate" },
{ "Weather", "Height" },
{ "Weather", "Color" },
{ "Weather", "Wind", "Strength" },
{ "Weather", "Wind", "Angle" },
{ "Weather", "Speed" },
{ "Weather", "Glow" },
{ "Weather", "Size" },
{ "Weather", "Spread" },
}, nil, nil do
trove:Connect(v117:GetPropertyChangedSignal(v122), fn40)
end
if v117.Data.Weather.Enabled then
arg:_Rebuild()
end
end
index2._Rebuild = function(arg)
local activeTrove = arg._activeTrove
if activeTrove ~= nil then
arg._activeTrove = nil
arg._emitters = {}
activeTrove:Destroy()
end
if not v117.Data.Weather.Enabled then
return
end
local v122 = v116.EmitterSpecsByPreset[v117.Data.Weather.Preset]
if v122 == nil then
return
end
local v123 = arg._trove:Extend()
arg._activeTrove = v123
local v124 = table.create(#v122)
for _, v125 in v122, nil, nil do
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Shape = Enum.ParticleEmitterShape.Box
particleEmitter.EmissionDirection = Enum.NormalId.Bottom
particleEmitter.Enabled = true
particleEmitter.Texture = v125.Texture
particleEmitter.Transparency = fn36(v125.TransparencyMax)
particleEmitter.Lifetime = NumberRange.new(v125.LifetimeMin, v125.LifetimeMax)
particleEmitter.Rotation = NumberRange.new(v125.RotationMin, v125.RotationMax)
particleEmitter.RotSpeed = NumberRange.new(v125.RotationSpeedMin, v125.RotationSpeedMax)
particleEmitter.LightInfluence = 0
if v125.Orientation then
particleEmitter.Orientation = v125.Orientation
end
particleEmitter.Parent = arg._part
v123:Add(particleEmitter)
table.insert(v124, { Emitter = particleEmitter, Spec = v125 })
end
arg._emitters = v124
arg:_Reconcile()
if v116.LightningPresetSet[v117.Data.Weather.Preset] then
arg:_ScheduleLightning(v123)
end
end
index2._ScheduleLightning = function(arg, arg2)
arg2:Add(task.spawn(function()
while true do
task.wait(v117.Data.Weather.Lightning.Interval)
if v117.Data.Weather.Lightning.Enabled then
arg:_FireStrike()
end
end
end))
end
index2._FireStrike = function(arg)
local currentCamera = v120.CurrentCamera
if currentCamera == nil then
return
end
local lightning = v117.Data.Weather.Lightning
local height = lightning.Height
local position = currentCamera.CFrame.Position
local tau = math.tau
local n = math.random() * tau
local distance = lightning.Distance
local n33 = math.min(v116.LightningRadiusMin, distance)
local n34 = n33 + math.random() * (distance - n33)
local n35 = position.X + math.cos(n) * n34
local n36 = position.Z + math.sin(n) * n34
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
local character = v121.LocalPlayer and v121.LocalPlayer.Character
if character then
raycastParams.FilterDescendantsInstances = { character }
end
local n37 = position.Y - v116.LightningGroundDrop
local hit = v120:Raycast(Vector3.new(n35, position.Y + height, n36), Vector3.new(0, -v116.LightningRayLength, 0), raycastParams)
if hit then
n37 = hit.Position.Y
end
local vector = Vector3.new(n35, n37, n36)
local vector2 = Vector3.new
local lightningJitter = v116.LightningJitter
local n38 = n35 + (math.random() - 0.5) * lightningJitter
local lightningJitter2 = v116.LightningJitter
local tbl18 = {
Color = lightning.Color,
Thickness = lightning.Thickness,
MaxRadius = lightning.Jaggedness,
Branches = lightning.Branches,
FlashBrightness = lightning.Flash,
Sparks = {
Enabled = lightning.Sparks.Enabled,
Color = lightning.Sparks.Color,
Count = lightning.Sparks.Count,
Thickness = lightning.Sparks.Thickness,
Distance = lightning.Sparks.Distance,
Speed = lightning.Sparks.Speed,
Jaggedness = lightning.Sparks.Jaggedness,
},
Explosion = {
Enabled = lightning.Explosion.Enabled,
Size = lightning.Explosion.Size,
Bolts = lightning.Explosion.Bolts,
Color = lightning.Explosion.Color,
},
}
arg._lightning:Strike(vector2(n38, n37 + height, n36 + (math.random() - 0.5) * lightningJitter2), vector, tbl18)
if lightning.Sound.Enabled then
local v122 = fn38(lightning.Sound.SoundId)
if v122 ~= nil then
local volume = lightning.Sound.Volume
local delay = lightning.Sound.Delay
arg:_PlayThunder(math.sqrt((n35 - position.X) ^ 2 + (n36 - position.Z) ^ 2), volume, delay, v122)
end
end
end
index2._PlayThunder = function(arg, arg2, arg3, arg4, soundId)
local n = arg4 and arg2 / v116.ThunderSpeed or 0
local volume = arg3 * math.max(v116.ThunderVolumeFloor, 1 - arg2 / v116.ThunderFalloff)
local n33 = v116.ThunderPitchMax - v116.ThunderPitchMin
local playbackSpeed = v116.ThunderPitchMin + math.random() * n33
local activeTrove = arg._activeTrove
if activeTrove == nil then
return
end
activeTrove:Add(task.delay(n, function()
local sound = Instance.new("Sound")
sound.SoundId = soundId
sound.Volume = volume
sound.PlaybackSpeed = playbackSpeed
sound.PlayOnRemove = v86[34]
sound.Parent = v119
sound:Destroy()
end))
end
index2._Reconcile = function(arg)
local weather = v117.Data.Weather
local intensity = weather.Intensity
local rate = weather.Rate
local speed = weather.Speed
local size = weather.Size
local glow = weather.Glow
local spread = weather.Spread
local colorSequence = ColorSequence.new(weather.Color)
local v122 = math.rad(weather.Wind.Angle)
local strength = weather.Wind.Strength
local n = math.sin(v122) * strength
local n33 = math.cos(v122) * strength
arg._height = weather.Height
for _, v123 in arg._emitters, nil, nil do
local emitter = v123.Emitter
local spec = v123.Spec
emitter.Rate = spec.BaseRate * intensity * rate
emitter.Speed = NumberRange.new(spec.SpeedMin * speed, spec.SpeedMax * speed)
emitter.Size = fn37(NumberSequence.new(spec.SizeStart, spec.SizeEnd), size)
emitter.LightEmission = glow
local n34 = spec.BaseSpread * spread
emitter.SpreadAngle = Vector2.new(n34, n34)
emitter.Color = colorSequence
emitter.Acceleration = Vector3.new(n, spec.BaseAccelerationY, n33)
end
end
index2.Update = function(arg)
arg._lightning:Update()
if arg._activeTrove then
local currentCamera = v120.CurrentCamera
if currentCamera then
arg._part.Position = currentCamera.CFrame.Position + Vector3.new(v86[186], arg._height, 0)
end
end
end
return index2
end
tbl17.hI = function()
local hi = tbl17.cache.hI
if not hi then
hi = { c = fn35() }
tbl17.cache.hI = hi
end
return hi.c
end
end
do -- hJ
local function fn35() tbl17 .hF();return{{ClassName="BloomEffect",RootKey="Bloom",Properties={"Intensity","Size","Threshold"}},{ClassName="ColorCorrectionEffect",RootKey="ColorCorrection",Properties={"TintColor","Saturation","Brightness","Contrast"}},{ClassName="ColorGradingEffect",RootKey="ColorGrading",Properties={{Name="TonemapperPreset",Transform=function(l)return l=="Retro"and Enum.TonemapperPreset.Retro or Enum.TonemapperPreset.Default;end}}},{ClassName="DepthOfFieldEffect",RootKey="DepthOfField",Properties={"FarIntensity","FocusDistance","InFocusRadius","NearIntensity"}},{ClassName="SunRaysEffect",RootKey="SunRays",Properties={"Intensity","Spread"}}};end
tbl17.hJ = function()
local hj = tbl17.cache.hJ
if not hj then
hj = { c = fn35() }
tbl17.cache.hJ = hj
end
return hj.c
end
end
do -- hK
local function fn35()
local v115 = tbl17.hh()
local v116 = tbl17.hi()
local v117 = tbl17.hC()
local v118 = tbl17.hD()
local v119 = tbl17.hF()
local v120 = tbl17.hG()
tbl17.gY()
local v121 = tbl17.k()
local v122 = tbl17.hI()
local v123 = tbl17.hJ()
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local worldVisuals = v121.new("world_visuals")
local v124 = v118.new()
local v125 = v117.new()
v125:Initialise()
local v126 = v122.new(v125)
local tbl18 = { _trove = worldVisuals, _motionBlurController = v124, _weatherController = v126 }
worldVisuals:Add(v116.new())
worldVisuals:Add(v120.new(arg))
worldVisuals:Add(v115.new())
worldVisuals:Add(v125)
worldVisuals:Add(v126)
worldVisuals:Add(v124)
for _, v127 in v123, nil, nil do
worldVisuals:Add(v119.new(v127))
end
return setmetatable(tbl18, index2)
end
index2.PreRender = function(arg, arg2)
arg._motionBlurController:PreRender(arg2)
arg._weatherController:Update()
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.hK = function()
local hk = tbl17.cache.hK
if not hk then
hk = { c = fn35() }
tbl17.cache.hK = hk
end
return hk.c
end
end
do -- hL
local function fn35()
tbl17.aO()
tbl17.cw()
tbl17.cX()
tbl17.bN()
tbl17.k()
local function fn36(arg, arg2, arg3)
local function fn37(arg4)
arg:SetContext(arg4 ~= nil and v102(arg4, "Name") or nil)
end
arg3:Add(arg2:OnEquippedItemChangedSignal(fn37))
fn37(arg2:GetEquippedItem())
end
return function(arg, arg2, arg3)
local v115 = arg2:Extend()
arg2:Add(arg3.ContextAdded:Connect(function(arg4)
v115:Clean()
fn36(arg, arg4.FighterState, v115)
end))
arg2:Add(arg3.ContextRemoved:Connect(function()
v115:Clean()
end))
local inner = arg3.Inner
if inner then
fn36(arg, inner.FighterState, v115)
end
end
end
tbl17.hL = function()
local hl = tbl17.cache.hL
if not hl then
local hl2 = { c = fn35() }
tbl17.cache.hL = hl2
hl = hl2
end
return hl.c
end
end
do -- hO
local function fn35() tbl17 .aE();return function(l)l:AddSection({Title="Anti Katana",Side="left"}):AddToggle({Label="Enabled",Config={"AntiKatana","Enabled"}});end;end
tbl17.hO = function()
local ho = tbl17.cache.hO
if not ho then
ho = { c = fn35() }
tbl17.cache.hO = ho
end
return ho.c
end
end
do -- hP
local function fn35() tbl17 .aE();local I= tbl17 .aT();return function(l)local W=l:AddSection({Title="Auto Weapon Ban",Side="right"});W:AddToggle({Label="Enabled",Config={"AutoBan","Enabled"}});W:AddMultiDropdown({Label="First Ban Choices",Options=I,Config={"AutoBan","FirstWeapons"}});W:AddMultiDropdown({Label="Second Ban Choices",Options=I,Config={"AutoBan","SecondWeapons"}});end;end
tbl17.hP = function()
local hp = tbl17.cache.hP
if not hp then
hp = { c = fn35() }
tbl17.cache.hP = hp
end
return hp.c
end
end
do -- hQ
local function fn35()
local tbl18 = {}
for _, v115 in tbl17.aS().DuelLibrary.MapOrder, nil, nil do
table.insert(tbl18, v115)
end
return table.freeze(tbl18)
end
tbl17.hQ = function()
local hq = tbl17.cache.hQ
if not hq then
hq = { c = fn35() }
tbl17.cache.hQ = hq
end
return hq.c
end
end
do -- hR
local function fn35()local I,W= tbl17 .a6(), tbl17 .bG(); tbl17 .aE();local N,P,a,e= tbl17 .hQ(), tbl17 .aS().Constants, tbl17 .aS().ItemLibrary,{{Name="Primary",Class="Primary"},{Name="Secondary",Class="Secondary"},{Name="Melee",Class="Melee"},{Name="Utility",Class="Utility"}};local function l(c)local E={};for p,T in a.Items,nil,nil do if p=="MISSING_WEAPON"then continue;end;local a=E[T.Class];if a==nil then a=c and{"Unselected"}or{};E[T.Class]=a;end;table.insert(a,p);end;for a,a_133 in E,nil,nil do table.sort(a_133);end;return E;end;local a_134={"1","2","3"};local function c()return I({"Default"},N);end;local function I_135(N,E)return{"AutoLoadout","Loadouts",N,E};end;return function(N)local E,p=N:AddSection({Title="Setup",Side="left"}),N:AddSection({Title="Slot Editor",Side="right"});local N_136,T=E:AddToggle({Label="Enabled",Config={"AutoLoadout","Enabled"}}),E:AddToggle({Label="Use Map-Specific Loadouts",Config={"AutoLoadout","PerMap"}});local t,x=E:AddGroup({Source=T}):AddDropdown({Label="Map",Options=c()}),E:AddToggle({Label="Use Fallback Loadouts",Config={"AutoLoadout","MultipleLoadouts"}});local c,S,J,B,X=E:AddGroup({Source=x}):AddDropdown({Label="Loadout Priority (1 highest)",Options=a_134}),l(false),l(true),P.DEFAULT_WEAPONS,{};for l,P in e,nil,nil do X[l]=p:AddDropdown({Label=P.Name,Options=S[P.Class]});end;local function l()local P=t.Value;return T.Value and type(P)=="string"and P or"Default";end;local function P()local a=c.Value;return x.Value and type(a)=="string"and a or"1";end;local a=false;local function E_137()if a then return;end;local p={};for H,k in X,nil,nil do p[H]=k.Value;end;W:Set(I_135(l(),P()),p);end;local function p_138(H,k)local D,Q=S[e[H].Class],k and k[H];if Q and(table.find(D,Q))then return Q;end;if l()=="Default"and P()=="1"then return B[H];end;return"Unselected";end;local function B_139()a=true;local H=W:Get(I_135(l(),P()),true);for I,k in X,nil,nil do local D=e[I].Class;k:SetOptions(l()=="Default"and P()=="1"and S[D]or J[D]);k:Set(p_138(I,H),true);end;a=false;end;N_136:OnChanged(function()if next((W:Get({"AutoLoadout","Loadouts"},true)))then return;end;E_137();end);T:OnChanged(B_139);t:OnChanged(B_139);x:OnChanged(B_139);c:OnChanged(B_139);for l,l_140 in X,nil,nil do l_140:OnChanged(E_137);end;N_136:Connect(W:GetPropertyChangedSignal({"AutoLoadout","Loadouts"}),B_139);B_139();end;end
tbl17.hR = function()
local hr = tbl17.cache.hR
if not hr then
local hr2 = { c = fn35() }
tbl17.cache.hR = hr2
hr = hr2
end
return hr.c
end
end
do -- hS
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Auto Pickup",Side="left"});I:AddToggle({Label="Enabled",Config={"AutoPickupDrops","Enabled"}});I:AddMultiDropdown({Label="Pickup Types",Options={"Ammo","Health"},Config={"AutoPickupDrops","Types"}});end;end
tbl17.hS = function()
local hs = tbl17.cache.hS
if not hs then
hs = { c = fn35() }
tbl17.cache.hS = hs
end
return hs.c
end
end
do -- hT
local function fn35()
local serverOsTime = tbl17.aS().ServerOsTime
local duelLibrary = tbl17.aS().DuelLibrary
local get = serverOsTime.Get
local v115 = tbl17.b3()(get, serverOsTime)
local matchmakingQueues = v102(duelLibrary, "MatchmakingQueues")
local tbl18 = {}
for _, v116 in v102(duelLibrary, "MatchmakingQueueOrder") do
local v117 = v102(matchmakingQueues, v116)
if v117 ~= nil then
local terminalsReleaseTime = v102(v117, "TerminalsReleaseTime")
if terminalsReleaseTime and terminalsReleaseTime <= v115 then
table.insert(tbl18, v116)
end
end
end
for _, v116 in v102(duelLibrary, "ArcadeModeOrder") do
table.insert(tbl18, v116)
end
return tbl18
end
tbl17.hT = function()
local ht = tbl17.cache.hT
if not ht then
local ht2 = { c = fn35() }
tbl17.cache.hT = ht2
ht = ht2
end
return ht.c
end
end
do -- hU
local function fn35()local I= tbl17 .hT(); tbl17 .aE();return function(l)local W=l:AddSection({Title="Auto Queue",Side="left"});W:AddToggle({Label="Enabled",Config={"AutoQueue","Enabled"}});W:AddDropdown({Label="Queue",Options=I,Config={"AutoQueue","Queue"}});end;end
tbl17.hU = function()
local hu = tbl17.cache.hU
if not hu then
hu = { c = fn35() }
tbl17.cache.hU = hu
end
return hu.c
end
end
do -- hV
local function fn35() tbl17 .aE();return function(l)l:AddSection({Title="Auto Respawn",Side="right"}):AddToggle({Label="Enabled",Config={"AutoRespawn","Enabled"}});end;end
tbl17.hV = function()
local hv = tbl17.cache.hV
if not hv then
hv = { c = fn35() }
tbl17.cache.hV = hv
end
return hv.c
end
end
do -- hW
local function fn35() tbl17 .aE();local I= tbl17 .hQ();return function(l)local W=l:AddSection({Title="Auto Map Vote",Side="left"});W:AddToggle({Label="Enabled",Config={"AutoVote","Enabled"}});W:AddMultiDropdown({Label="Maps to Vote For",Options=I,Config={"AutoVote","Maps"},Search=true});end;end
tbl17.hW = function()
local hw = tbl17.cache.hW
if not hw then
local hw2 = { c = fn35() }
tbl17.cache.hW = hw2
hw = hw2
end
return hw.c
end
end
do -- hX
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Hacker Detector",Side="left"});I:AddToggle({Label="Enabled",Config={"HackerDetector","Enabled"}});I:AddToggle({Label="Notify",Config={"HackerDetector","Notify"}});I:AddColor({Row=I:AddLabel({Label="Text Color"}).Row,Config={"HackerDetector","Color"},Animatable=true});end;end
tbl17.hX = function()
local hx = tbl17.cache.hX
if not hx then
hx = { c = fn35() }
tbl17.cache.hX = hx
end
return hx.c
end
end
do -- hY
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Moderator Detector",Side="right"});I:AddToggle({Label="Enabled",Config={"ModDetector","Enabled"}});I:AddMultiDropdown({Label="Moderator Responses",Options={"Notify","Kick","ToLobby"},Config={"ModDetector","Moderators"}});I:AddMultiDropdown({Label="Mod Friends",Options={"Notify","Kick","ToLobby"},Config={"ModDetector","ModFriends"}});I:AddColor({Row=I:AddLabel({Label="Text Color"}).Row,Config={"ModDetector","Color"},Animatable=true});end;end
tbl17.hY = function()
local hy = tbl17.cache.hY
if not hy then
local hy2 = { c = fn35() }
tbl17.cache.hY = hy2
hy = hy2
end
return hy.c
end
end
do -- hZ
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Subspace Tripmines",Side="right"});I:AddToggle({Label="Auto Trigger",Config={"SubspaceTripmines","AutoTrigger"}});I:AddToggle({Label="Team Trigger",Config={"SubspaceTripmines","TeamTrigger"}});end;end
tbl17.hZ = function()
local hz = tbl17.cache.hZ
if not hz then
hz = { c = fn35() }
tbl17.cache.hZ = hz
end
return hz.c
end
end
do -- h_
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P,a,e,c,E,p,T,t= tbl17 .hO(), tbl17 .hP(), tbl17 .hR(), tbl17 .hS(), tbl17 .hU(), tbl17 .hV(), tbl17 .hW(), tbl17 .hX(), tbl17 .hY(), tbl17 .hZ(),{Automation="rbxassetid://70979486241131",Detection="rbxassetid://132868138496209",Match="rbxassetid://99293705721130"};return function(l,x)l=x:AddTab({Label="Automation",Icon=t.Automation,Description="Match flow, loadouts, in-match automation, and detection."});x=l:AddTab({Label="Match Flow",Icon=t.Match,Description="Automate queueing, voting, bans, and respawns."}):Grid({Columns=2});a(x);c(x);W(x);e(x);N((l:AddTab({Label="Auto Loadout",Icon=t.Automation,Description="Configure map-specific and fallback loadouts."}):Grid({Columns=2})));x=l:AddTab({Label="In-Match Automation",Icon=t.Match,Description="Automate pickups, counters, and tripmines."}):Grid({Columns=2});P(x);I(x);T(x);x=l:AddTab({Label="Detection",Icon=t.Detection,Description="Detect hackers and moderators."}):Grid({Columns=2});E(x);p(x);end;end
tbl17.h_ = function()
local h = tbl17.cache.h_
if not h then
h = { c = fn35() }
tbl17.cache.h_ = h
end
return h.c
end
end
do -- h0
local function fn35()
tbl17.aF()
tbl17.bN()
local v115 = tbl17.aH()
return function(arg, arg2)
local v116 = nil
local function fn36()
local class = v115.resolveProfile(arg:GetContext()).Class
if class == v116 then
return
end
v116 = class
for _, v117 in arg2, nil, nil do
v117.Dropdown:SetVisible(v117.Class == class)
end
end
arg2[1].Dropdown:Connect(arg.ContextChanged, fn36)
fn36()
end
end
tbl17.h0 = function()
local h0 = tbl17.cache.h0
if not h0 then
local h02 = { c = fn35() }
tbl17.cache.h0 = h02
h0 = h02
end
return h0.c
end
end
do -- h1
local function fn35() tbl17 .aE();return function(l,I)local function W(...)return{I,"Fov",...};end;l:AddColor({Row=l:AddToggle({Label="Show Targeting Circle",Config=W("Circle","Visible")}).Row,Gradient="editable",Alpha=true,Config=W("Circle","Stroke","Gradient"),Transparency=W("Circle","Stroke","Transparency")});l:AddSlider({Label="Radius (px)",Min=1,Max=600,Config=W("Radius")});l:AddSlider({Label="Thickness",Min=0,Max=25,Config=W("Circle","Stroke","Thickness")});l:AddColor({Row=l:AddToggle({Label="Filled",Config=W("Circle","Fill","Enabled")}).Row,Gradient="editable",Alpha=true,Config=W("Circle","Fill","Gradient"),Transparency=W("Circle","Fill","Transparency")});l:AddGroup({Source=l:AddToggle({Label="Animated",Config=W("Circle","Animated","Enabled")})}):AddSlider({Label="Animation Speed (deg/s)",Min=0,Max=360,Config=W("Circle","Animated","Speed")});local I_141=l:AddGroup({Source=l:AddToggle({Label="Follow Target",Config=W("Circle","FollowTarget","Enabled")})});I_141:AddSlider({Label="Follow Speed",Default=20,Min=1,Max=50,Config=W("Circle","FollowTarget","Speed")});I_141:AddSlider({Label="Follow Damper",Default=1,Min=0,Max=30,Config=W("Circle","FollowTarget","Damper")});I_141:AddSlider({Label="Snap Distance",Default=5,Min=0,Max=10,Config=W("Circle","FollowTarget","SnapDistance")});end;end
tbl17.h1 = function()
local h1 = tbl17.cache.h1
if not h1 then
h1 = { c = fn35() }
tbl17.cache.h1 = h1
end
return h1.c
end
end
do -- h2
local function fn35() tbl17 .aF(); tbl17 .aE();return function(l,I,W)local N={};if W.Kind=="Stateless"then for P,a in W.Classes,nil,nil do local e,c={I,"TargetHitboxes",P},{};for E in a,nil,nil do table.insert(c,E);end;a=l:AddMultiDropdown({Label="Allowed Hitboxes",Options=c,Config=e});table.insert(N,{Dropdown=a,Path=e,Class=P});end;else for P,a in W.Classes,nil,nil do for W,e in a,nil,nil do local a_142,c={I,"TargetHitboxes",P,W},{};for I in e,nil,nil do table.insert(c,I);end;e=l:AddMultiDropdown({Label=string.format("%s Allowed Hitboxes",tostring(W)),Options=c,Config=a_142});table.insert(N,{Dropdown=e,Path=a_142,Class=P});end;end;end;return N;end;end
tbl17.h2 = function()
local h2 = tbl17.cache.h2
if not h2 then
local h22 = { c = fn35() }
tbl17.cache.h2 = h22
h2 = h22
end
return h2.c
end
end
do -- h3
local function fn35()
return function(arg)
local tbl18 = {}
for k in next, arg, nil do
table.insert(tbl18, k)
end
return tbl18
end
end
tbl17.h3 = function()
local h3 = tbl17.cache.h3
if not h3 then
local h32 = { c = fn35() }
tbl17.cache.h3 = h32
h3 = h32
end
return h3.c
end
end
do -- h4
local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P= tbl17 .dX(), tbl17 .h2(), tbl17 .h3(), tbl17 .a7();return function(l,a,e,c,E)local p,T,t,x=e.Options,e.Labels,E.Options,E.Labels;l:AddMultiDropdown({Label="Target Filters",Options=N(p),Default=I(P(p)),Labels=T,Config={a,"TargetConditions"}});E=l:AddGroup({Source=l:AddDropdown({Label="Aim Point",Options={"Center","Surface"},Labels={Surface="Closest Point"},Config={a,"HitboxPoint","Type"}}),Option="Surface"});E:AddSlider({Label="Surface Reduction (%)",Min=0,Max=100,Step=0.01,Config={a,"HitboxPoint","Surface","SizeReductionPercentage"}});E:AddToggle({Label="Preserve Depth",Config={a,"HitboxPoint","Surface","PreserveDepth"}});p=l:AddGroup({Source=l:AddDropdown({Label="Hitbox Selection",Options={"ClosestToCrosshair","Random"},Labels={ClosestToCrosshair="Closest to Crosshair",Random="Weighted Random"},Config={a,"HitboxSelection","Type"}}),Option="Random"});for I in t,nil,nil do p:AddSlider({Label=x[I]or I,Min=0,Max=100,Step=1,Config={a,"HitboxSelection","Random",I}});end;return W(l,a,c);end;end
tbl17.h4 = function()
local h4 = tbl17.cache.h4
if not h4 then
local h42 = { c = fn35() }
tbl17.cache.h4 = h42
h4 = h42
end
return h4.c
end
end
do -- h5
local function fn35() tbl17 .aF(); tbl17 .aE();local I,W= tbl17 .h1(), tbl17 .h4();return function(l,N,P)local a,e=l:AddSection({Title="Targeting",Side="left"}),l:AddSection({Title="Targeting FOV",Side="right"});l=W(a,N,P.TargetConditions,P.TargetHitboxes,P.RandomHitboxPercentages);I(e,N);return l;end;end
tbl17.h5 = function()
local h5 = tbl17.cache.h5
if not h5 then
h5 = { c = fn35() }
tbl17.cache.h5 = h5
end
return h5.c
end
end
do -- h6
local function fn35() tbl17 .aE();local I= tbl17 .a6();return function(l,W,N,P,a,e)local c,E=if e==nil then if W=="Enabled"then(P[#P]:gsub("(%l)(%u)","%1 %2"))else W else e,l:AddToggle({Label=W,Config=I(P,{"Enabled"})});local W_143=l:AddKeybind({Row=E.Row,Modes=N,InKeybindList=a,ListLabel=c,ConfigMap={Key=I(P,{"Keybind","Bind"}),Mode=I(P,{"Keybind","Kind"}),Active=I(P,{"Keybind","State"}),ShowInList=I(P,{"Keybind","ShowInList"}),Invisible=I(P,{"Keybind","Invisible"})}});W_143:SetFeatureEnabled(E.Value);E:Connect(E.ValueChanged,function(l)W_143:SetFeatureEnabled(l);end);return E,W_143;end;end
tbl17.h6 = function()
local h6 = tbl17.cache.h6
if not h6 then
local h62 = { c = fn35() }
tbl17.cache.h6 = h62
h6 = h62
end
return h6.c
end
end
do -- h7
local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P,a= tbl17 .dX(), tbl17 .h5(), tbl17 .h6(), tbl17 .h3(), tbl17 .a7();local function l(e,c)N(e,"Enable Aimbot",{"Always","Toggle","Hold"},{"Aimbot"},true);local N,E=c.Options,c.Labels;e:AddMultiDropdown({Label="Activation Rules",Options=P(N),Default=I(a(N)),Config={"Aimbot","ActivationConditions"},Labels=E});e:AddSlider({Label="Reaction Delay (s)",Min=0,Max=2,Step=0.01,Config={"Aimbot","ReactionTime"}});e:AddSlider({Label="Switch Delay (s)",Min=0,Max=2,Step=0.01,Config={"Aimbot","SwitchDelay"}});c={"Lock","Linear","Spring"};table.insert(c,3,"AI");E=e:AddDropdown({Label="Aim Mode",Options=c,Config={"Aimbot","Mode","Type"}});e:AddGroup({Source=E,Option="Linear"}):AddSlider({Label="Linear Speed",Min=0.01,Max=1,Step=0.01,Config={"Aimbot","Mode","Speed"}});e:AddGroup({Source=E,Option="AI"}):AddSlider({Label="AI Speed",Min=0.01,Max=1,Step=0.01,Config={"Aimbot","Mode","Speed"}});e:AddGroup({Source=E,Option="Spring"}):AddSlider({Label="Spring Speed",Min=0.01,Max=1,Step=0.01,Config={"Aimbot","Mode","Speed"}});end;local function I_144(N)local P=N:AddToggle({Label="Enable Target Lock",Config={"Aimbot","TargetLock","Enabled"}});local a=N:AddKeybind({Row=P.Row,Modes={"Tap"},Default={Key="None",Mode="Tap"},InKeybindList=true,ListLabel="Target Lock",ConfigMap={Key={"Aimbot","TargetLock","Bind"},ShowInList={"Aimbot","TargetLock","BindShowInList"},Invisible={"Aimbot","TargetLock","BindInvisible"}}});a:SetFeatureEnabled(P.Value==true);P:Connect(P.ValueChanged,function(e)a:SetFeatureEnabled(e==true);end);N:AddGroup({Source=P}):AddDropdown({Label="Lock Mode",Options={"ToggleLock","AutoLock","ManualOnly"},Labels={ToggleLock="Toggle Lock",AutoLock="Auto Lock",ManualOnly="Manual Only"},Config={"Aimbot","TargetLock","Mode"}});end;return function(N,P)local a,e=N:AddSection({Title="Activation",Side="left"}),N:AddSection({Title="Target Lock",Side="right"});if P.PinHint~=nil then a:AddLabel({Label=P.PinHint});end;l(a,P.ActivationConditions);I_144(e);return W(N,"Aimbot",P);end;end
tbl17.h7 = function()
local h7 = tbl17.cache.h7
if not h7 then
h7 = { c = fn35() }
tbl17.cache.h7 = h7
end
return h7.c
end
end
do -- h8
local function fn35()local I= tbl17 .aB(); tbl17 .gv(); tbl17 .aE();return function(l,W)return function()l:Dialog({Title="Manage Sounds",Description="Add or remove custom sounds."},function(l)local N,P;l:AddPage({Title="Add a Sound",Description="Enter a name and sound source.",Glyph="+",ActionText="Add Sound",OnAction=function()local a,e=N,P;local c=W:AddCustom(a.Value,e.Value);if not c.Ok then I.get():Notify(c.Error.Detail);return false;end;a:Set("",true);e:Set("",true);return true;end},function(a)N=a:AddTextBox({Label="Name"});P=a:AddTextBox({Label="Sound Source",Placeholder="Id / File name / Url"});end);local N_145,P_146;P_146=l:AddPage({Title="Remove a Sound",Description="Select a sound to remove.",Glyph="\226\136\146",ActionText="Remove Sound",Variant="danger",ActionEnabled=false,Confirmation={Title="Remove selected sound?",Description=function()local l=N_145.Value;if l==nil then return"The selected sound will be permanently removed.";end;return string.format("\"%s\" will be permanently removed.",tostring(l));end,ActionText="Confirm"},OnOpen=function()local l=N_145;l:SetOptions(W:GetNames());P_146:SetActionEnabled(l.Value~=nil);end,OnAction=function()local l=N_145.Value;if l==nil then return false;end;local a=W:RemoveCustom(l);if not a.Ok then I.get():Notify(a.Error.Detail);return false;end;return true;end},function(l)local I=l:AddList({Label="Sound",Options=W:GetNames(),Height=150,Search=true,SelectFirst=false});N_145=I;I:Connect(I.ValueChanged,function(l)P_146:SetActionEnabled(l~=nil);end);I:Connect(W.Changed,function(l)I:SetOptions(l);end);end);end);end;end;end
tbl17.h8 = function()
local h8 = tbl17.cache.h8
if not h8 then
local h82 = { c = fn35() }
tbl17.cache.h8 = h82
h8 = h82
end
return h8.c
end
end
do -- h9
local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P,a= tbl17 .dX(), tbl17 .h5(), tbl17 .h6(), tbl17 .h3(), tbl17 .a7();local function l(e,c)N(e,"Enable Silent Aim",{"Always","Toggle","Hold"},{"SilentAim"},true);e:AddSlider({Label="Activation Chance (%)",Min=0,Max=100,Config={"SilentAim","ActivationChance"}});local N=c.ExpandActivationSection;if N~=nil then N(e);end;N=c.ActivationConditions;local c_147,E=N.Options,N.Labels;e:AddMultiDropdown({Label="Activation Rules",Options=P(c_147),Default=I(a(c_147)),Config={"SilentAim","ActivationConditions"},Labels=E});e:AddSlider({Label="Reaction Delay (s)",Min=0,Max=2,Step=0.01,Config={"SilentAim","ReactionTime"}});e:AddSlider({Label="Switch Delay (s)",Min=0,Max=2,Step=0.01,Config={"SilentAim","SwitchDelay"}});end;return function(I,N)local P=I:AddSection({Title="Activation",Side="left"});if N.PinHint~=nil then P:AddLabel({Label=N.PinHint});end;l(P,N);return W(I,"SilentAim",N);end;end
tbl17.h9 = function()
local h9 = tbl17.cache.h9
if not h9 then
h9 = { c = fn35() }
tbl17.cache.h9 = h9
end
return h9.c
end
end
do -- ia
local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P,a= tbl17 .dX(), tbl17 .h2(), tbl17 .h6(), tbl17 .h3(), tbl17 .a7();return function(l,e)local c,E=e.ActivationConditions,e.TargetConditions;local p,T,t,x,S=c.Options,c.Labels,E.Options,E.Labels,l:AddSection({Title="Triggerbot",Side="left"});if e.PinHint~=nil then S:AddLabel({Label=e.PinHint});end;N(S,"Enable Triggerbot",{"Always","Toggle","Hold"},{"Triggerbot"},true);S:AddMultiDropdown({Label="Activation Rules",Options=P(p),Default=I(a(p)),Labels=T,Config={"Triggerbot","ActivationConditions"}});S:AddMultiDropdown({Label="Target Filters",Options=P(t),Default=I(a(t)),Labels=x,Config={"Triggerbot","TargetConditions"}});S:AddSlider({Label="Reaction Delay (s)",Min=0,Max=2,Step=0.01,Config={"Triggerbot","ReactionTime"}});S:AddSlider({Label="Release Delay (s)",Min=0,Max=2,Step=0.01,Config={"Triggerbot","ReleaseTime"}});return(W(S,"Triggerbot",e.TargetHitboxes));end;end
tbl17.ia = function()
local ia = tbl17.cache.ia
if not ia then
local ia2 = { c = fn35() }
tbl17.cache.ia = ia2
ia = ia2
end
return ia.c
end
end
do -- ib
local function fn35()local I= tbl17 .a8(); tbl17 .aE(); tbl17 .hN();return function(l,W,N)local P=W:AddSection({Title="Elimination Feedback",Side="right"});P:AddToggle({Label="Enable Elimination Feedback",Config={"PlayerElimination","Enabled"}});P:AddDivider({Label="Sound"});W=P:AddGroup({Source=P:AddToggle({Label="Play Elimination Sound",Config={"PlayerElimination","Sound","Enabled"}})});local a=W:AddDropdown({Label="Elimination Sound",Options=l.SfxSoundStorage:GetNames(),Config={"PlayerElimination","Sound","Name"}});a:Connect(l.SfxSoundStorage.Changed,function(e)a:SetOptions(e);end);W:AddSlider({Label="Elimination Volume",Min=0.1,Max=10,Step=0.1,Config={"PlayerElimination","Sound","Volume"}});W:AddSlider({Label="Elimination Pitch",Min=0.1,Max=3,Step=0.1,Config={"PlayerElimination","Sound","Pitch"}});W:AddButton({Label="Manage Custom Sounds",OnClick=N});P:AddDivider({Label="Visual Chams"});l=P:AddToggle({Label="Enable Elimination Chams",Config={"PlayerElimination","Chams","Enabled"}});P:AddColor({Row=l.Row,Alpha=true,Config={"PlayerElimination","Chams","Color"},Transparency={"PlayerElimination","Chams","Transparency"},Animatable=true});W=P:AddGroup({Source=l});W:AddSlider({Label="Elimination Chams Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerElimination","Chams","Duration"}});W:AddDropdown({Label="Elimination Chams Material",Options=I.Names,Config={"PlayerElimination","Chams","Material"}});P:AddDivider({Label="Flash"});l=P:AddToggle({Label="Enable Elimination Flash",Config={"PlayerElimination","KillFlash","Enabled"}});P:AddColor({Row=l.Row,Config={"PlayerElimination","KillFlash","Color"},Animatable=true});P:AddGroup({Source=l}):AddSlider({Label="Elimination Flash Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerElimination","KillFlash","Duration"}});P:AddDivider({Label="Notification"});P:AddGroup({Source=P:AddToggle({Label="Enable Elimination Notification",Config={"PlayerElimination","Notification","Enabled"}})}):AddTextBox({Label="Elimination Notification Text",Config={"PlayerElimination","Notification","Text"}});end;end
tbl17.ib = function()
local ib = tbl17.cache.ib
if not ib then
local ib2 = { c = fn35() }
tbl17.cache.ib = ib2
ib = ib2
end
return ib.c
end
end
do -- ic
local function fn35()local I= tbl17 .a8(); tbl17 .aE(); tbl17 .hN();return function(l,W,N)local P=W:AddSection({Title="Hit Feedback",Side="left"});P:AddToggle({Label="Enable Hit Feedback",Config={"PlayerHit","Enabled"}});P:AddDivider({Label="Sound"});local a,e=P:AddGroup({Source=P:AddToggle({Label="Play Hit Sound",Config={"PlayerHit","Sound","Enabled"}})}),l.SfxSoundStorage:GetNames();local c=a:AddDropdown({Label="Headshot Sound",Options=e,Config={"PlayerHit","Sound","HeadName"}});c:Connect(l.SfxSoundStorage.Changed,function(E)c:SetOptions(E);end);a:AddSlider({Label="Headshot Volume",Min=0.1,Max=10,Step=0.1,Config={"PlayerHit","Sound","HeadVolume"}});a:AddSlider({Label="Headshot Pitch",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","Sound","HeadPitch"}});local c_148=a:AddDropdown({Label="Body Hit Sound",Options=e,Config={"PlayerHit","Sound","BodyName"}});c_148:Connect(l.SfxSoundStorage.Changed,function(e)c_148:SetOptions(e);end);a:AddSlider({Label="Body Hit Volume",Min=0.1,Max=10,Step=0.1,Config={"PlayerHit","Sound","BodyVolume"}});a:AddSlider({Label="Body Hit Pitch",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","Sound","BodyPitch"}});a:AddToggle({Label="Mute Game Hit Sound",Config={"PlayerHit","Sound","DisableGameSound"}});a:AddButton({Label="Manage Custom Sounds",OnClick=N});P:AddDivider({Label="Visual Chams"});l=P:AddToggle({Label="Enable Hit Chams",Config={"PlayerHit","Chams","Enabled"}});P:AddColor({Row=l.Row,Alpha=true,Config={"PlayerHit","Chams","Color"},Transparency={"PlayerHit","Chams","Transparency"},Animatable=true});N=P:AddGroup({Source=l});N:AddSlider({Label="Hit Chams Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","Chams","Duration"}});N:AddDropdown({Label="Hit Chams Material",Options=I.Names,Config={"PlayerHit","Chams","Material"}});P:AddDivider({Label="Flash"});W=P:AddToggle({Label="Enable Hit Flash",Config={"PlayerHit","HitFlash","Enabled"}});P:AddColor({Row=W.Row,Config={"PlayerHit","HitFlash","Color"},Animatable=true});P:AddGroup({Source=W}):AddSlider({Label="Hit Flash Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","HitFlash","Duration"}});P:AddDivider({Label="Notification"});P:AddGroup({Source=P:AddToggle({Label="Enable Hit Notification",Config={"PlayerHit","Notification","Enabled"}})}):AddTextBox({Label="Hit Notification Text",Config={"PlayerHit","Notification","Text"}});end;end
tbl17.ic = function()
local ic = tbl17.cache.ic
if not ic then
local ic2 = { c = fn35() }
tbl17.cache.ic = ic2
ic = ic2
end
return ic.c
end
end
do -- id
local function fn35() tbl17 .aE();local function l(I,W,N,P,a,e)I:AddGroup({Source=I:AddToggle({Label=W,Config={"ItemModifiers",P,"Enabled"}})}):AddSlider({Label=N,Min=a,Max=e,Config={"ItemModifiers",P,"Percentage"}});end;return function(I)local W,N,P,a=I:AddSection({Title="Aim & Fire",Side="left"}),I:AddSection({Title="Cooldowns",Side="left"}),I:AddSection({Title="Melee",Side="right"}),I:AddSection({Title="Grenades",Side="right"});l(W,"Reduce Recoil","Recoil Reduction (%)","Recoil",0,100);W:AddToggle({Label="Remove Spread",Config={"ItemModifiers","NoSpread"}});W:AddToggle({Label="Fast Shoot",Config={"ItemModifiers","FastShoot"}});W:AddToggle({Label="Fast Projectile",Config={"ItemModifiers","FastProjectile"}});W:AddToggle({Label="Full Auto",Config={"ItemModifiers","FullAuto"}});W:AddGroup({Source=W:AddToggle({Label="Fire Rate Override",Config={"ItemModifiers","FireRate","Enabled"}})}):AddSlider({Label="Fire Rate (%)",Min=1,Max=100,Config={"ItemModifiers","FireRate","Percentage"}});l(W,"Aim Speed Override","Aim Speed (%)","AimSpeed",50,500);l(N,"Fire Cooldown Override","Percentage","FireCooldown",0,100);l(N,"Aim Cooldown Override","Percentage","AimCooldown",1,100);l(N,"Melee Cooldown Override","Percentage","MeleeCooldown",0,100);l(N,"Dash Cooldown Override","Percentage","DashCooldown",0,100);P:AddToggle({Label="Always Backstab",Config={"ItemModifiers","AlwaysBackstab"}});P:AddGroup({Source=P:AddToggle({Label="Extend Melee Range",Config={"ItemModifiers","ExtendMeleeRange","Enabled"}})}):AddSlider({Label="Range",Min=5,Max=20,Config={"ItemModifiers","ExtendMeleeRange","Range"}});a:AddGroup({Source=a:AddToggle({Label="Fuse Override",Config={"ItemModifiers","GrenadeFuse","Enabled"}})}):AddDropdown({Label="Explode On",Options={"Impact","Throw"},Config={"ItemModifiers","GrenadeFuse","ExplodeOn"}});a:AddToggle({Label="Remove Fuse",Config={"ItemModifiers","GrenadeFuse","RemoveFuse"}});end;end
tbl17.id = function()
local id = tbl17.cache.id
if not id then
local id2 = { c = fn35() }
tbl17.cache.id = id2
id = id2
end
return id.c
end
end
do -- ie
local function fn35()local I= tbl17 .gR(); tbl17 .aE();local W= tbl17 .h6();local function l(N)W(N,"Enable Ragebot",{"Always","Toggle","Hold"},{"Ragebot"},true);if not I.IsArcadeServer then N:AddToggle({Label="Utilize Health Lead",Config={"Ragebot","UtilizeHealthLead"}});end;end;return function(I)l(I:AddSection({Title="Activation",Side="left"}));local l,W=I:AddSection({Title="Weapon Strategy",Side="left"}),{"Primary","Secondary","Melee"};for I,I_149 in W,nil,nil do l:AddToggle({Label=string.format("%s Enabled",tostring(I_149)),Config={"Ragebot","Weapons","Enabled",I_149}});end;end;end
tbl17.ie = function()
local ie = tbl17.cache.ie
if not ie then
ie = { c = fn35() }
tbl17.cache.ie = ie
end
return ie.c
end
end
do -- ih
local function fn35() tbl17 .aE();local I= tbl17 .h6();local function l(W)I(W,"Enable Ragebot",{"Always","Toggle","Hold"},{"Ragebot"},true);W:AddToggle({Label="Prioritize Hackers",Config={"Ragebot","PrioritizeHackers"}});W:AddSlider({Label="Stability",Min=0,Max=1.5,Step=0.001,Config={"Ragebot","Stability"}});W:AddSlider({Label="Shoot Frames",Min=1,Max=5,Config={"Ragebot","ShootFrames"}});end;local function I_150(W)local N={"Primary","Secondary","Melee"};for P,P_151 in N,nil,nil do W:AddToggle({Label=string.format("%s Enabled",tostring(P_151)),Config={"Ragebot","Weapons","Enabled",P_151}});end;W:AddOrderedList({Label="Weapon Priority",Items=N,Default=N,Config={"Ragebot","Weapons","Priority"}});W:AddDropdown({Label="On Empty",Options={"Reload","Swap","SwapOrReload"},Labels={SwapOrReload="Swap or Reload"},Config={"Ragebot","Weapons","OnEmpty"}});end;local function W(N,P)local a=N:AddGroup({Source=P,Option="ProjectileBreaker"});a:AddRangeSlider({Label="Forward Depth",Min=0,Max=10,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthForward"}});a:AddSlider({Label="Forward Frequency",Min=0,Max=20,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthForwardFrequency"}});a:AddRangeSlider({Label="Upward Depth",Min=0,Max=10,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthUp"}});a:AddSlider({Label="Upward Frequency",Min=0,Max=20,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthUpFrequency"}});a:AddSlider({Label="Reposition Interval (s)",Min=0.05,Max=2,Step=0.01,Config={"Ragebot","Evasion","ProjectileBreaker","RepositionInterval"}});a:AddToggle({Label="Fallback Character Origin",Config={"Ragebot","Evasion","ProjectileBreaker","FallbackAnchorFromCharacter"}});a:AddSlider({Label="Fallback Radius",Min=5,Max=100000000,Config={"Ragebot","Evasion","ProjectileBreaker","FallbackBaseRadius"}});a:AddSlider({Label="Fallback Random Factor",Min=0,Max=1,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","FallbackRadiusRandomFactor"}});end;local function N(P)local a=P:AddDropdown({Label="Evasion Mode",Options={"Off","Random","Translocate","ProjectileBreaker"},Labels={ProjectileBreaker="Projectile Breaker"},Config={"Ragebot","Evasion","Mode"}});local e=P:AddGroup({Source=a,Option="Random"});e:AddToggle({Label="Character Origin",Config={"Ragebot","Evasion","Random","AnchorFromCharacter"}});e:AddSlider({Label="Base Radius",Min=5,Max=100000000,Config={"Ragebot","Evasion","Random","BaseRadius"}});e:AddSlider({Label="Random Factor",Min=0,Max=1,Step=0.1,Config={"Ragebot","Evasion","Random","RadiusRandomFactor"}});P:AddGroup({Source=a,Option="Translocate"}):AddSlider({Label="Offset",Min=-5,Max=5,Step=0.1,Config={"Ragebot","Evasion","Translocate","Offset"}});W(P,a);end;return function(W)l(W:AddSection({Title="Activation",Side="left"}));I_150(W:AddSection({Title="Weapon Strategy",Side="left"}));N(W:AddSection({Title="Evasion",Side="right"}));end;end
tbl17.ih = function()
local ih = tbl17.cache.ih
if not ih then
ih = { c = fn35() }
tbl17.cache.ih = ih
end
return ih.c
end
end
do -- ii
local function fn35() tbl17 .aE();local I= tbl17 .h6();return function(l,W)local N=l:AddSection({Title="Flickbot",Side="right"});I(N,"Enable Flickbot",{"Hold","Toggle"},{"Flickbot"},true);N:AddGroup({Source=N:AddToggle({Label="Shoot",Config={"Flickbot","Shoot"}})}):AddSlider({Label="Shot Delay (ms)",Min=0,Max=250,Config={"Flickbot","ShotDelay"}});N:AddSlider({Label="Cooldown (ms)",Min=0,Max=2000,Config={"Flickbot","Cooldown"}});N:AddSlider({Label="Flick Duration (ms)",Min=30,Max=400,Config={"Flickbot","FlickDuration"}});N:AddSlider({Label="Curvature",Min=0,Max=50,Config={"Flickbot","Curvature"}});N:AddSlider({Label="Humanness",Min=0,Max=100,Config={"Flickbot","Humanness"}});N:AddButton({Label="Open Aimbot Targeting",OnClick=W});end;end
tbl17.ii = function()
local ii = tbl17.cache.ii
if not ii then
ii = { c = fn35() }
tbl17.cache.ii = ii
end
return ii.c
end
end
do -- ij
local function fn35()local I,W,N,P= tbl17 .aU(), tbl17 .gR(), tbl17 .aW(), tbl17 .aY(); tbl17 .aE(); tbl17 .hN();local a,e,c,E,p,T,t,x,S= tbl17 .h0(), tbl17 .h7(), tbl17 .h8(), tbl17 .h9(), tbl17 .ia(), tbl17 .ib(), tbl17 .ic(), tbl17 .id(),{Combat="rbxassetid://99199363807265",CameraAim="rbxassetid://83752373575368",SilentAim="rbxassetid://109514269737059",FireAssist="rbxassetid://81854854241463",WeaponHandling="rbxassetid://128279962545721",HitFeedback="rbxassetid://140427675871522",Ragebot="rbxassetid://125012650497883"};return function(J,B)local X=B:AddTab({Label="Combat",Icon=S.Combat,Description="Aim assistance, fire control, weapon handling, feedback, and ragebot."});local H=X:AddTab({Label="Aimbot",Icon=S.CameraAim,Description="Camera-based aim assistance and target locking."});local k,D=H:Grid({Columns=2}),table.clone(I.BuildSpec);D.PinHint="Hold a weapon, then click the pin next to a setting to give that weapon its own value.";a(J.StoreProfiles,e(k,D));D,k=X:AddTab({Label="Silent Aim",Icon=S.SilentAim,Description="Redirect projectiles toward targets without moving the camera."}):Grid({Columns=2}),table.clone(N.BuildSpec);k.PinHint="Hold a weapon, then click the pin next to a setting to give that weapon its own value.";a(J.StoreProfiles,E(D,k));k=X:AddTab({Label="Ragebot",Icon=S.Ragebot,Description="Aggressive targeting, weapon priority, and evasive movement."}):Grid({Columns=2});if W.IsArcadeServer then tbl17 .ie()(k);else tbl17 .ih()(k);end;D,k=X:AddTab({Label="Fire Assist",Icon=S.FireAssist,Description="Automatic firing and fast camera flicks."}):Grid({Columns=2}),table.clone(P.BuildSpec);k.PinHint="Hold a weapon, then click the pin next to a setting to give that weapon its own value.";a(J.StoreProfiles,p(D,k)); tbl17 .ii()(D,function()H:Open();end);x((X:AddTab({Label="Weapon Handling",Icon=S.WeaponHandling,Description="Aim, firing, cooldown, melee, and grenade behavior."}):Grid({Columns=2})));D,k=X:AddTab({Label="Hit Feedback",Icon=S.HitFeedback,Description="Sound, visual, flash, and notification feedback."}):Grid({Columns=2}),c(B,J.SfxSoundStorage);t(J,D,k);T(J,D,k);end;end
tbl17.ij = function()
local ij = tbl17.cache.ij
if not ij then
ij = { c = fn35() }
tbl17.cache.ij = ij
end
return ij.c
end
end
do -- ik
local function fn35()
return function(l,I)if I==""then return 0;end;local W,N=l:lower(),I:lower();l=W:find(N,1,true);if l then return-1000+l;end;local l_152,I_153,P,a,e,c=#W,#N,1,1,0,0;while P<=l_152 and a<=I_153 do if W:byte(P)==N:byte(a)then a,e,c=a+1,P,if e~=0 then c+(P-e-1)else c;end;P+=1;end;if a>I_153 then return c;end;return nil;end
end
tbl17.ik = function()
local ik = tbl17.cache.ik
if not ik then
local ik2 = { c = fn35() }
tbl17.cache.ik = ik2
ik = ik2
end
return ik.c
end
end
do -- il
local function fn35()
tbl17.dW()
local v115 = tbl17.d7()
tbl17.aE()
tbl17.hN()
local v116 = tbl17.em()
local v117 = tbl17.eT()
local v118 = tbl17.aT()
local v119 = tbl17.ik()
local v120 = tbl17.n()
local localPlayer = cloneref(game:GetService("Players")).LocalPlayer
local function fn36(arg, arg2, arg3)
local n = os.clock() + arg3
for _, v121 in arg2, nil, nil do
local v122 = arg:FindFirstChild(v121)
if v122 ~= nil then
arg = v122
else
local n33 = n - os.clock()
if n33 <= 0 then
return nil
end
arg = arg:WaitForChild(v121, n33)
end
if arg == nil then
return nil
end
end
return arg
end
local function fn37(arg)
return v117.Images[arg] or "rbxassetid://89204837120267"
end
local function fn38(arg)
if arg == nil or arg == "Unselected" then
return nil
end
if arg == "None" then
return "NONE_COSMETIC"
end
if arg == "Random" then
return "RANDOM_COSMETIC"
end
return arg
end
local function fn39(arg)
if arg == "NONE_COSMETIC" then
return "None"
end
if arg == "RANDOM_COSMETIC" then
return "Random"
end
if arg == nil then
return "Unselected"
end
return arg
end
local udim2 = UDim2.fromOffset(v86[160], 50)
local tbl18 = {
{ Name = "Unselected", Image = "rbxassetid://17562770037", ImageSize = udim2 },
{ Name = "None", Image = "rbxassetid://17562770037", ImageSize = udim2 },
{ Name = "Random", Image = "rbxassetid://94238795177693", ImageSize = udim2 },
}
local tbl19 = { Unselected = true, None = v86[34], Random = true }
local function fn40(arg)
if arg == "" then
return nil
end
return function(arg2, arg3)
if tbl19[arg2.Name] then
return true
end
return v119(arg3, arg) ~= nil
end
end
local function fn41(arg, arg2)
local v121 = table.clone(tbl18)
for _, v122 in arg, nil, nil do
table.insert(v121, { Name = v122, Image = fn37(v122), Render = arg2 and arg2(v122) })
end
return v121
end
local function fn42(arg)
if arg == "All" then
return {}
end
return v117.Skins[arg] or {}
end
local cFrame = CFrame.Angles(0, 3.4906585039886591, 0) * CFrame.Angles(-0.26179938779914941, 0, 0) * CFrame.new(v86[186], 0, 1)
local function fn43(arg, arg2)
return function(arg3, arg4)
arg4.HideImage()
local viewportFrame = Instance.new("ViewportFrame")
viewportFrame.Size = UDim2.fromScale(1, 1)
viewportFrame.Position = UDim2.fromScale(0.5, 0.5)
viewportFrame.AnchorPoint = Vector2.new(0.5, 0.5)
viewportFrame.BackgroundTransparency = 1
viewportFrame.Parent = arg4.Content
local camera = Instance.new("Camera")
camera.FieldOfView = 25
camera.CFrame = cFrame
camera.Parent = viewportFrame
viewportFrame.CurrentCamera = camera
local clone = arg:Clone()
clone:PivotTo(CFrame.identity)
v116.applyWrap(v116.recordOriginalProperties(clone), arg2)
clone.Parent = viewportFrame
end
end
local function fn44(arg, arg2)
return function(arg3, arg4)
local v121 = arg:FindFirstChild(arg2)
if v121 == nil then
return
end
arg4.HideImage()
local viewportFrame = Instance.new("ViewportFrame")
viewportFrame.Size = UDim2.fromScale(1, 1)
if not flag3 then
return
end
viewportFrame.Position = UDim2.fromScale(0.5, 0.5)
viewportFrame.AnchorPoint = Vector2.new(0.5, 0.5)
viewportFrame.BackgroundTransparency = v86[63]
viewportFrame.Parent = arg4.Content
local camera = Instance.new("Camera")
camera.FieldOfView = 25
camera.Parent = viewportFrame
viewportFrame.CurrentCamera = camera
local clone = v121:Clone()
if clone:IsA("Model") then
local primary = clone:FindFirstChild("Primary")
if primary and primary:IsA("BasePart") then
clone.PrimaryPart = primary
end
clone:PivotTo(CFrame.identity)
local hook = clone:FindFirstChild("Hook")
if hook then
hook:Destroy()
end
end
clone.Parent = viewportFrame
camera.CFrame = CFrame.Angles(0, 3.62836073281, 0) * CFrame.Angles(-0.26179938779914941, 0, 0) * CFrame.new(0, 0, v86[48])
end
end
local function fn45(arg, arg2)
local tbl20 = {}
local tbl21 = {}
for _, v121 in v115.SeasonCharms, nil, nil do
local v122 = tostring
local seasonName = v121.SeasonName
local str7 = string.format("Season %s (%s)", tostring(v121.Version), v122(seasonName))
table.insert(tbl20, str7)
tbl21[str7] = v121.CharmName
end
local tbl22 = { "Off" }
for _, v121 in v115.RankNames, nil, nil do
table.insert(tbl22, v121)
end
local v121 = arg2:AddDropdown({ Label = "Season", Options = tbl20, CloseOnSelect = v86[34] })
local v122 = arg2:AddDropdown({ Label = "Rank", Options = tbl22, CloseOnSelect = v86[34] })
local v123 = arg2:AddTextBox({ Label = "Leaderboard Rank (optional, e.g. 1)" })
local function fn46()
local value = v121.Value
return value ~= nil and tbl21[value] or nil
end
local function fn47()
local match = v123.Value:match("^%s*(.-)%s*$")
if match == nil or match == "" then
return nil
end
local num = tonumber(match)
if num == nil or num < 1 then
return nil
end
return math.floor(num)
end
local rankCharm = arg.Cosmetics:GetRankCharm()
local function fn48()
local v124 = fn46()
if v124 == nil then
return
end
local str7 = v122.Value or "Off"
if str7 == "Off" then
rankCharm:SetForSeason(v124, nil, nil)
return
end
rankCharm:SetForSeason(v124, str7, fn47())
end
local function fn49()
local v124 = fn46()
if v124 == nil then
v122:Set("Off", true)
v123:Set("", true)
return
end
local forSeason, v125 = rankCharm:GetForSeason(v124)
v122:Set(forSeason or "Off", true)
v123:Set(v125 ~= nil and tostring(v125) or "", true)
end
v121:OnChanged(fn49)
v122:OnChanged(fn48)
v123:OnChanged(fn48)
return fn49
end
return function(arg, arg2)
local v121 = arg2.Skins:Grid({ Columns = 1 })
local v122 = v121:AddSection({ Title = "Apply To", Side = "left" })
local v123 = v121:AddSection({ Title = "Skin Catalog", Side = "left" })
local v124 = arg2.Wraps:Grid({ Columns = 1 })
local v125 = v124:AddSection({ Title = "Apply To", Side = "left" })
local v126 = v124:AddSection({ Title = "Wrap Catalog", Side = "left" })
local v127 = arg2.Charms:Grid({ Columns = 1 })
local v128 = v127:AddSection({ Title = "Apply To", Side = "left" })
local v129 = v127:AddSection({ Title = "Rank Charm Override", Side = "left" })
local v130 = v127:AddSection({ Title = "Charm Catalog", Side = "left" })
local v131 = arg2.Finishers:Grid({ Columns = 1 })
local v132 = v131:AddSection({ Title = "Apply To", Side = v86[42] })
local v133 = v131:AddSection({ Title = "Finisher Catalog", Side = "left" })
local str7 = v118[1]
local tbl20 = {}
local tbl21 = {}
local flag19 = false
local function fn46(arg3)
if str7 ~= "All" then
local v134 = arg3(str7)
if v134 ~= nil then
arg.Cosmetics:SetSkinChangerChoice(str7, v134)
end
return
end
local tbl22 = {}
for _, v134 in v118, nil, nil do
tbl22[v134] = arg3(v134)
end
arg.Cosmetics:SetSkinChangerChoices(tbl22)
end
local function fn47()
local v134 = arg.Cosmetics:ExportState()
local str8
if not v134.RuntimeEnabled then
str8 = "Cosmetic changes are disabled. Enable them on Overview."
else
str8 = "Custom loadout is ready."
if not v134.SkinChangerEnabled then
str8 = "Custom loadout is disabled. Enable it on Overview."
end
end
for _, v135 in tbl21, nil, nil do
v135:SetLabel(str8)
end
end
local fn48 = nil
local function fn49(arg3)
local v134 = arg3:AddDropdown({
Label = "Apply To",
Options = { "All Weapons", unpack(v118) },
Default = str7,
Search = true,
CloseOnSelect = true,
})
table.insert(tbl20, v134)
table.insert(tbl21, arg3:AddLabel({ Label = "", TextColor = Color3.fromRGB(255, 190, 90) }))
v134:OnChanged(function(arg4)
if flag19 or arg4 == nil then
return
end
str7 = arg4 == "All Weapons" and "All" or arg4
local str8 = str7 == "All" and "All Weapons" or str7
flag19 = true
for _, v135 in tbl20, nil, nil do
v135:Set(str8, true)
end
flag19 = false
fn47()
fn48()
end)
end
fn49(v122)
fn49(v125)
fn49(v128)
fn49(v132)
local v134 = v123:AddTextBox({ Label = "Search Skins" })
local v135 = v123:AddSkinChanger({ HeightMode = "Fill", State = "Loading" })
local v136 = v126:AddTextBox({ Label = "Search Wraps" })
local v137 = v126:AddToggle({ Label = "Inverted Wrap" })
local v138 = v126:AddSkinChanger({ HeightMode = "Fill", State = "Loading" })
local v139 = v126:AddButton({ Label = "Retry Loading Wrap Catalog", Variant = "primary" })
v139:SetVisible(false)
local v140 = v130:AddTextBox({ Label = "Search Charms" })
local v141 = v130:AddSkinChanger({ HeightMode = "Fill", State = "Loading" })
local v142 = v130:AddButton({ Label = "Retry Loading Charm Catalog", Variant = "primary" })
v142:SetVisible(false)
local v143 = v133:AddTextBox({ Label = "Search Finishers" })
local v144 = v133:AddSkinChanger({ HeightMode = "Fill", State = "Loading" })
local tbl22 = {}
local tbl23 = {}
local tbl24 = {}
local tbl25 = {}
local flag20 = false
local flag21 = false
local function fn50(arg3, arg4, arg5, arg6)
arg3:SetFilter(fn40(arg4))
if arg4 ~= "" then
for _, v145 in arg5, nil, nil do
if v119(v145:lower(), arg4) ~= nil then
arg3:SetState("Ready")
return
end
end
arg3:SetState("NoMatches")
return
end
if #arg5 == 0 and not arg6 then
arg3:SetState("Empty")
return
end
arg3:SetState("Ready")
end
v134:OnChanged(function(arg3)
fn50(v135, arg3, tbl22, str7 == "All")
end)
v136:OnChanged(function(arg3)
if flag20 then
fn50(v138, arg3, tbl23, v86[153])
end
end)
v140:OnChanged(function(arg3)
if flag21 then
fn50(v141, arg3, tbl24, false)
end
end)
v143:OnChanged(function(arg3)
fn50(v144, arg3, tbl25, false)
end)
local function fn51(arg3, arg4, arg5, arg6)
arg3:SetClearFilterAction(function()
arg4:Set("", true)
fn50(arg3, "", arg5(), arg6())
end)
end
fn51(v135, v134, function()
return tbl22
end, function()
return str7 == "All"
end)
fn51(v138, v136, function()
return tbl23
end, function()
if true then
return false
end
return nil
-- (anti-tamper freeze trap removed)
end)
fn51(v141, v140, function()
return tbl24
end, function()
return false
end)
fn51(v144, v143, function()
return tbl25
end, function()
return v86[153]
end)
local function fn52()
if str7 == "All" then
v135:Set(v86[96], true)
v138:Set("Unselected", true)
v141:Set("Unselected", true)
v144:Set("Unselected", true)
v137:Set(false, v86[34])
return
end
local skinChangerSelections = arg.Cosmetics:GetSkinChangerSelections(str7)
if skinChangerSelections == nil then
v135:Set("Unselected", true)
v138:Set(v86[96], true)
v137:Set(false, v86[34])
v141:Set(v86[96], v86[34])
v144:Set("Unselected", v86[34])
return
end
local v145 = v86[34]
v135:Set(fn39(skinChangerSelections.Skin), v145)
local wrap = skinChangerSelections.Wrap
if wrap ~= nil then
v138:Set(fn39(wrap.Name), true)
v137:Set(wrap.Inverted, true)
else
v138:Set("Unselected", true)
v137:Set(false, v86[34])
end
v141:Set(fn39(skinChangerSelections.Charm), true)
local v146 = v86[34]
v144:Set(fn39(skinChangerSelections.Finisher), v146)
end
local flag22 = false
arg2.Skins:OnFirstOpen(function()
v135:SetState("Loading")
tbl22 = fn42(str7)
v135:SetItems(fn41(tbl22))
flag22 = true
fn50(v135, v134.Value, tbl22, str7 == "All")
fn52()
end)
local flag23 = false
local v145 = nil
local function fn53()
if flag23 then
return
end
if v145 ~= nil then
v120:Remove(v145)
v145 = nil
end
flag23 = true
flag20 = false
v139:SetVisible(false)
v138:SetState("Loading")
local thread = task.spawn(function()
local v146 = fn36(localPlayer, { "PlayerScripts", "Assets", "Misc", "Wrap" }, v86[175])
if v146 == nil or not v146:IsA("Model") then
v138:SetState("Unavailable", "Wrap previews could not be loaded. Retry when assets are available.")
v139:SetVisible(v86[34])
flag23 = false
return
end
tbl23 = v117.Wraps
v138:SetItems(fn41(tbl23, function(arg3)
return fn43(v146, arg3)
end))
flag20 = v86[34]
flag23 = false
fn50(v138, v136.Value, tbl23, false)
fn52()
end)
v145 = thread
v120:Add(thread)
end
v139:OnClick(fn53)
arg2.Wraps:OnFirstOpen(fn53)
local flag24 = false
local v146 = nil
local function fn54()
if flag24 then
return
end
if v146 ~= nil then
v120:Remove(v146)
v146 = nil
end
flag24 = true
flag21 = false
v142:SetVisible(v86[153])
v141:SetState("Loading")
local thread = task.spawn(function()
local v147 = fn36(localPlayer, { "PlayerScripts", "Assets", "Charms" }, 5)
if v147 == nil then
v141:SetState("Unavailable", "Charm previews could not be loaded. Retry when assets are available.")
v142:SetVisible(v86[34])
flag24 = v86[153]
return
end
tbl24 = v117.Charms
v141:SetItems(fn41(tbl24, function(arg3)
return fn44(v147, arg3)
end))
flag21 = v86[34]
flag24 = false
fn50(v141, v140.Value, tbl24, v86[153])
fn52()
end)
v146 = thread
v120:Add(thread)
end
v142:OnClick(fn54)
arg2.Charms:OnFirstOpen(fn54)
arg2.Finishers:OnFirstOpen(function()
v144:SetState("Loading")
tbl25 = v117.Finishers
v144:SetItems(fn41(tbl25))
fn50(v144, v143.Value, tbl25, false)
fn52()
end)
fn48 = function()
if flag22 then
v135:SetState("Loading")
tbl22 = fn42(str7)
v135:SetItems(fn41(tbl22), true)
fn50(v135, v134.Value, tbl22, str7 == "All")
end
fn52()
end
v135:OnChanged(function(arg3)
if str7 == "All" then
if arg3 == nil or not tbl19[arg3] then
return
end
fn46(function()
return { Kind = "Skin", Name = fn38(arg3) }
end)
return
end
arg.Cosmetics:SetSkinChangerChoice(str7, { Kind = "Skin", Name = fn38(arg3) })
end)
v138:OnChanged(function()
if not flag3 then
return
end
fn46(function()
local value = v138.Value
if value == nil or value == "Unselected" then
return { Kind = "Wrap", Wrap = nil }
end
return { Kind = "Wrap", Wrap = { Name = fn38(value), Inverted = v137.Value } }
end)
end)
v137:OnChanged(function(arg3)
fn46(function(arg4)
local skinChangerSelections = arg.Cosmetics:GetSkinChangerSelections(arg4)
local wrap = skinChangerSelections ~= nil and skinChangerSelections.Wrap or nil
if wrap == nil then
return nil
end
return { Kind = "Wrap", Wrap = { Name = wrap.Name, Inverted = arg3 } }
end)
end)
v141:OnChanged(function(arg3)
fn46(function()
return { Kind = "Charm", Name = fn38(arg3) }
end)
end)
v144:OnChanged(function(arg3)
fn46(function()
return { Kind = "Finisher", Name = fn38(arg3) }
end)
end)
local function fn55()
end
if v129 ~= nil then
fn55 = fn45(arg, v129)
end
v135:Connect(arg.CosmeticsConfig.StateConfigLoaded, function()
fn52()
fn55()
fn47()
end)
fn55()
fn47()
return fn47
end
end
tbl17.il = function()
local il = tbl17.cache.il
if not il then
il = { c = fn35() }
tbl17.cache.il = il
end
return il.c
end
end
do -- im
local function fn35() tbl17 .aL(); tbl17 .aE(); tbl17 .hN();local I,W= tbl17 .e1(), tbl17 .dY();return function(l,N,P)local a,e,c=N:AddSection({Title="Cosmetic Runtime",Side="left"}),N:AddSection({Title="Unlock All",Side="left"}),N:AddSection({Title="Community",Side="right"});local E,p,T=a:AddToggle({Label="Enable Cosmetic Changes",OnChanged=function(t)l.CosmeticsConfig:SetRuntimeEnabled(t);P();end}),a:AddLabel({Label="Cosmetic features are paused until cosmetic changes are enabled.",TextColor=Color3.fromRGB(255,190,90)}),a:AddToggle({Label="Use Custom Loadout",Tooltip="Applies the choices from the Skins, Wraps, Charms, and Finishers catalogs.",OnChanged=function(t)l.Cosmetics:SetSkinChangerEnabled(t);P();end});a:AddButton({Label="Reroll Random Cosmetics",OnClick=function()l.Cosmetics:RerollAll();end});local a_154,t,x=e:AddToggle({Label="Unlock All Cosmetics",OnChanged=function(S)l.Cosmetics:SetUnlockerEnabled(S);end}),e:AddMultiDropdown({Label="Cosmetic Types to Unlock",Options=W.All,Search=true,OnChanged=function(W)l.CosmeticsConfig:SetUnlockedTypes(W);end}),e:AddMultiDropdown({Label="Cosmetic Rarities to Unlock",Options=I,Search=true,Default={Legendary=true,Mythical=true,Unobtainable=true},OnChanged=function(I)l.CosmeticsConfig:SetUnlockedRarities(I);end});c:AddToggle({Label="Share Skins",Config={"UserServer","ShareSkins"}});c:AddToggle({Label="Show Active Cosmetics",Config={"UserServer","ShowActive"}});local function I(W)E:Set(W.RuntimeEnabled,true);T:Set(W.SkinChangerEnabled,true);a_154:Set(W.UnlockerEnabled,true);p:SetVisible(not W.RuntimeEnabled);t:Set(W.Types,true);x:Set(W.Rarities,true);P();end;E:OnChanged(function(W)p:SetVisible(not W);end);E:Connect(l.CosmeticsConfig.StateConfigLoaded,I);N=l.CosmeticsConfig:GetStateConfigState();I(N);l.CosmeticsConfig:SetUnlockedTypes(N.Types);l.CosmeticsConfig:SetUnlockedRarities(N.Rarities);end;end
tbl17.im = function()
local im = tbl17.cache.im
if not im then
im = { c = fn35() }
tbl17.cache.im = im
end
return im.c
end
end
do -- io
local function fn35()local I= tbl17 .aE(); tbl17 .hN();local function l(W,N)if W.Ok then return false;end;I.Notifications.get():Notify({{Text=N.." failed: "},{Text=tostring(W.Error.Detail)}});return true;end;return function(W,N)local P,a,e,c=N:AddSection({Title="Library",Side="left"}),N:AddSection({Title="Transfer",Side="right"}),N:AddSection({Title="Automation",Side="right"}),W.CosmeticsConfig;local W_155,N_156,E,p=P:AddTextBox({Label="Cosmetic Preset Name"}),P:AddButton({Label="Create Cosmetic Preset"}),P:AddLabel({Label="No Cosmetic Presets yet. Enter a name to create one.",TextColor=Color3.fromRGB(255,190,90)}),P:AddList({Label="Cosmetic Preset Library",Height=140,Search=true,SelectFirst=false,OnChanged=function(T)c:SetPresetName(T);end});P:AddButton({Label="Load Selected Cosmetic Preset",Confirm=true,OnClick=function()l(c:LoadStateConfig(),"Loading cosmetic preset");end});P:AddButton({Label="Save to Selected Cosmetic Preset",Confirm=true,OnClick=function()l(c:SaveStateConfig(),"Saving cosmetic preset");end});a:AddButton({Label="Export to Clipboard",OnClick=function()local T=c:ExportStateToJson();if T.Ok then setclipboard(T.Value);I.Notifications.get():Notify("Copied your current cosmetics to the clipboard");else l(T,"Exporting cosmetics");end;end});local I=a:AddTextBox({Label="Import (paste cosmetics)",FocusLostOnly=true});a:AddButton({Label="Import Cosmetics",Confirm=true,OnClick=function()local a=I.Value;if a~=""then l(c:LoadStateFromJson(a),"Importing cosmetics");end;end});local function I_157()return c:GetAllStateConfigs();end;local function a_158(T,t)return e:AddDropdown({Label=T,Options=I_157(),GetOptions=I_157,Search=true,CloseOnSelect=true,OnChanged=function(T)t(T);end});end;local T,t,x,S=e:AddToggle({Label="Auto Load Cosmetic Preset",OnChanged=function(J)c:SetAutoLoadEnabled(J);end}),a_158("Cosmetic Preset to Auto Load",function(J)c:SetAutoLoadPresetName(J);end),e:AddToggle({Label="Auto Save Cosmetic Preset",OnChanged=function(e)c:SetAutoSaveEnabled(e);end}),a_158("Cosmetic Preset to Auto Save",function(a)c:SetAutoSavePresetName(a);end);local function a_159()local e,J=c:GetState(),I_157();p:SetOptions(J);p:Set(e.PresetName,true);E:SetVisible(#J==0);T:Set(e.AutoLoad,true);t:Set(e.AutoLoadPresetName,true);x:Set(e.AutoSave,true);S:Set(e.AutoSavePresetName,true);end;P:AddButton({Label="Delete Selected Cosmetic Preset",Confirm=true,OnClick=function()l(c:DeleteCurrentPreset(),"Deleting cosmetic preset");a_159();end});N_156:OnClick(function()local I=W_155.Value:gsub("%s+","");if#I==0 then return;end;l(c:CreateDefaultPreset(I),"Creating cosmetic preset");a_159();end);a_159();end;end
tbl17.io = function()
local io = tbl17.cache.io
if not io then
local io2 = { c = fn35() }
tbl17.cache.io = io2
io = io2
end
return io.c
end
end
do -- ip
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P= tbl17 .il(), tbl17 .im(), tbl17 .io(),{Overview="rbxassetid://89644754139307",Skins="rbxassetid://97652569554326",Wraps="rbxassetid://76631821212930",Charms="rbxassetid://125353572203968",Finishers="rbxassetid://82039875682356",Presets="rbxassetid://119633739754015"};return function(l,a)local e=a:AddTab({Label="Cosmetics",Icon="rbxassetid://128162112866809",Description="Manage cosmetic runtime, catalogs, and cosmetic presets."});N(l,(e:AddTab({Label="Presets",Icon=P.Presets,Description="Create, load, automate, and delete whole cosmetic loadouts."}):Grid({Columns=2})));W(l,e:AddTab({Label="Overview",Icon=P.Overview,Description="Enable cosmetic features, unlock cosmetics, reroll, and share your active look."}):Grid({Columns=2}),(I(l,{Skins=e:AddTab({Label="Skins",Icon=P.Skins,Description="Browse and apply weapon skin variants."}),Wraps=e:AddTab({Label="Wraps",Icon=P.Wraps,Description="Browse weapon wraps and control inverted patterns."}),Charms=e:AddTab({Label="Charms",Icon=P.Charms,Description="Browse weapon charms and optionally override rank charms."}),Finishers=e:AddTab({Label="Finishers",Icon=P.Finishers,Description="Browse and apply weapon finishers."})})));end;end
tbl17.ip = function()
local ip = tbl17.cache.ip
if not ip then
ip = { c = fn35() }
tbl17.cache.ip = ip
end
return ip.c
end
end
do -- iq
local function fn35()local I= tbl17 .dj(); tbl17 .aE();return function(l)local W=l:AddSection({Title="Animation Player",Side="left"});W:AddToggle({Label="Enable Animation Player",Config={"AnimationPlayer","Enabled"}});W:AddDropdown({Label="Animation",Options=I.Names,Config={"AnimationPlayer","Animation"}});W:AddTextBox({Label="Custom Animation ID",Config={"AnimationPlayer","CustomId"}});W:AddSlider({Label="Speed",Min=0,Max=5,Step=0.01,Config={"AnimationPlayer","Speed"}});W:AddSlider({Label="Start",Min=0,Max=100,Config={"AnimationPlayer","Start"}});W:AddSlider({Label="End",Min=0,Max=100,Config={"AnimationPlayer","End"}});end;end
tbl17.iq = function()
local iq = tbl17.cache.iq
if not iq then
iq = { c = fn35() }
tbl17.cache.iq = iq
end
return iq.c
end
end
do -- ir
local function fn35()local I= tbl17 .a8(); tbl17 .aE();return function(l)local W=l:AddSection({Title="Character Appearance",Side="right"});l=W:AddToggle({Label="Enable Character Chams",Config={"Chams","Character","Enabled"}});W:AddColor({Row=l.Row,Alpha=true,Config={"Chams","Character","Color"},Transparency={"Chams","Character","Transparency"},Animatable=true});local N=W:AddGroup({Source=l});N:AddDropdown({Label="Character Chams Material",Options=I.List,Config={"Chams","Character","Material"}});N:AddToggle({Label="Strip Character Chams Textures",Config={"Chams","Character","StripTextures"}});end;end
tbl17.ir = function()
local ir = tbl17.cache.ir
if not ir then
local ir2 = { c = fn35() }
tbl17.cache.ir = ir2
ir = ir2
end
return ir.c
end
end
do -- is
local function fn35() tbl17 .aE();local I= tbl17 .a2();local W= tbl17 .a7()(I);return function(l)local I=l:AddSection({Title="Device Spoof",Side="left"});I:AddToggle({Label="Enable Device Spoof",Config={"DeviceSpoof","Enabled"}});I:AddDropdown({Label="Presented Platform",Options=W,Config={"DeviceSpoof","SpoofType"}});end;end
tbl17.is = function()
local is = tbl17.cache.is
if not is then
is = { c = fn35() }
tbl17.cache.is = is
end
return is.c
end
end
do -- it
local function fn35() tbl17 .aE();local I= tbl17 .h6();local function l(W,N,P,a,e)W:AddGroup({Source=I(W,N,{"Always","Toggle","Hold"},{"Movement",P},a)}):AddSlider({Label=e.Label,Min=e.Min,Max=e.Max,Step=e.Step,Config={"Movement",P,"Speed"}});end;return function(W)local N,P=W:AddSection({Title="Ground",Side="left"}),W:AddSection({Title="Air",Side="right"});l(N,"Walk Speed","WalkSpeed",true,{Label="Multiplier",Min=1,Max=10,Step=0.01});l(N,"Sliding","Sliding",true,{Label="Multiplier",Min=1,Max=10,Step=0.01});I(N,"Noclip",{"Always","Toggle","Hold"},{"Movement","Noclip"},true);l(N,"Auto Strafe","AutoStrafe",true,{Label="Speed",Min=1,Max=200});l(P,"Jump Power","JumpPower",false,{Label="Multiplier",Min=0.1,Max=10,Step=0.01});l(P,"Flight","Flight",true,{Label="Speed",Min=25,Max=500});P:AddToggle({Label="Infinite Double Jumps",Config={"ItemModifiers","InfiniteDoubleJumps"}});N=P:AddGroup({Source=I(P,"Long Jump",{"Tap"},{"Movement","LongJump"},true)});N:AddDropdown({Label="Mode",Options={"Under Feet","Camera Look"},Config={"Movement","LongJump","Mode"}});N:AddSlider({Label="Force",Min=0,Max=300,Config={"Movement","LongJump","Force"}});N:AddSlider({Label="Upward Velocity",Min=0,Max=200,Config={"Movement","LongJump","UpwardVelocity"}});N:AddSlider({Label="Behind Offset",Min=0,Max=8,Step=0.1,Config={"Movement","LongJump","Behind"}});end;end
tbl17.it = function()
local it = tbl17.cache.it
if not it then
it = { c = fn35() }
tbl17.cache.it = it
end
return it.c
end
end
do -- iu
local function fn35() tbl17 .hM(); tbl17 .aE();local function l(I,W,N,P,a)local e=I:AddKeybind({Label=N,Modes={"Toggle"},Default={Key="None",Mode="Toggle"},InKeybindList=true,ListLabel=P,ConfigMap={Key={"Movement","MovementRecorder",a,"Keybind","Bind"},Mode={"Movement","MovementRecorder",a,"Keybind","Kind"},Active={"Movement","MovementRecorder",a,"Keybind","State"},ShowInList={"Movement","MovementRecorder",a,"Keybind","ShowInList"},Invisible={"Movement","MovementRecorder",a,"Keybind","Invisible"}}});e:SetFeatureEnabled(W.Value==true);W:Connect(W.ValueChanged,function(I)e:SetFeatureEnabled(I==true);end);end;return function(I,W)local N,P,a,e,c,E=W:AddSection({Title="Recorder",Side="left"}),W:AddSection({Title="Markers",Side="left"}),W:AddSection({Title="Record / Replay",Side="left"}),W:AddSection({Title="Playback Alignment",Side="right"}),W:AddSection({Title="Save Recording",Side="right"}),W:AddSection({Title="Recording Library",Side="right"});W=N:AddToggle({Label="Enable Movement Recorder",Config={"Movement","MovementRecorder","Enabled"}});N:AddToggle({Label="Hide Recorder UI",Config={"Movement","MovementRecorder","HideUI"}});N:AddToggle({Label="Hide Recorder Notifications",Config={"Movement","MovementRecorder","HideNotifications"}});P:AddSlider({Label="Open Distance",Min=1,Max=25,Step=0.5,Config={"Movement","MovementRecorder","OpenDistance"}});P:AddSlider({Label="Render Distance",Min=10,Max=250,Config={"Movement","MovementRecorder","RenderDistance"}});l(a,W,"Record","Record","Record");l(a,W,"Replay","Replay","Replay");e:AddSlider({Label="Look Align Speed",Tooltip="How fast the camera turns to the recording's starting look angle",Min=45,Max=720,Step=5,Config={"Movement","MovementRecorder","LookAlignSpeed"}});e:AddSlider({Label="Look Smoothness",Tooltip="How smoothened camera look is",Min=0,Max=100,Config={"Movement","MovementRecorder","LookSmoothing"}});e:AddSlider({Label="Align Snap Distance",Tooltip="Once this close to the start, position is considered aligned",Min=0.1,Max=5,Step=0.1,Config={"Movement","MovementRecorder","AlignSnapDistance"}});local l=c:AddTextBox({Label="Recording Name",Placeholder="my recording"});c:AddButton({Label="Save or Overwrite Recording",Confirm=true,OnClick=function()I:SaveRecording(l.Value);end});local l_160,W_161=E:AddDropdown({Label="Map",Options=I:GetRecordingMaps(),Search=true}),E:AddDropdown({Label="Recording",Options={},Search=true});local N_162,P_163,a_164=E:AddButton({Label="Replay Selected Recording",OnClick=function()local e=W_161.Value;if type(e)=="string"then I:ReplayRecording(e);end;end}),E:AddLabel({Label="No saved recordings yet. Record a route, then save it to build your library.",TextColor=Color3.fromRGB(255,190,90)}),E:AddButton({Label="Delete Recording",Confirm=true,OnClick=function()local e=W_161.Value;if type(e)=="string"and e~=""then I:DeleteRecording(e);end;end});local function e_165()local c=W_161.Value;local E=type(c)=="string"and c~="";N_162:SetVisible(E);a_164:SetVisible(E);P_163:SetVisible(#I:GetRecordingMaps()==0);end;local function N_166()local P=l_160.Value;local a=type(P)=="string"and(I:GetRecordingNames(P))or{};W_161:SetOptions(a);if W_161.Value==nil and a[1]~=nil then W_161:Set(a[1],true);end;e_165();end;local function W_167()local P=I:GetRecordingMaps();l_160:SetOptions(P);if l_160.Value==nil and P[1]~=nil then l_160:Set(P[1],true);end;N_166();end;l_160:OnChanged(N_166);l_160:Connect(I.RecordingsChanged,W_167);W_167();end;end
tbl17.iu = function()
local iu = tbl17.cache.iu
if not iu then
iu = { c = fn35() }
tbl17.cache.iu = iu
end
return iu.c
end
end
do -- iv
local function fn35()local I= tbl17 .bG(); tbl17 .aE();local W= tbl17 .a6();local function l(N,P)local a=I:Get(P);if type(a)=="number"then N:Set(tostring(a),true);end;N:OnChanged(function(a)local e=tonumber(a);if e~=nil and e~=I:Get(P)then I:Set(P,e);end;end);N:Connect(I:GetPropertyChangedSignal(P),function(I)if type(I)=="number"then N:Set(tostring(I),true);end;end);end;local I_168={{Field="Name",Label="Name",Value={Kind="text",Placeholder="Value"}},{Field="DisplayName",Label="Display Name",Value={Kind="text",Placeholder="Value"}},{Field="Avatar",Label="Avatar",Value={Kind="text",Placeholder="User ID"}},{Field="Winstreak",Label="Winstreak",Value={Kind="number",Placeholder="Value"}},{Field="Level",Label="Level",Value={Kind="number",Placeholder="Value"}},{Field="CasualWins",Label="Casual Wins",Value={Kind="number",Placeholder="Value"}},{Field="RankedWins",Label="Ranked Wins",Value={Kind="number",Placeholder="Value"}},{Field="CasualWinPercent",Label="Casual Win %",Value={Kind="percent",Placeholder="Win %"}},{Field="RankedWinPercent",Label="Ranked Win %",Value={Kind="percent",Placeholder="Win %"}},{Field="RankedElo",Label="Ranked ELO",Value={Kind="number",Placeholder="Value"}},{Field="LeaderboardRank",Label="Leaderboard Rank",Value={Kind="number",Placeholder="Value"}},{Field="FavoriteMap",Label="Favorite Map",Value={Kind="text",Placeholder="Favorite Map"}},{Field="NametagStatus",Label="Nametag Status",Value={Kind="dropdown",Placeholder="Status",Options={"Prime","Contraband"}}},{Field="Influencer",Label="Influencer",Value={Kind="toggle"}},{Field="RobloxEmployee",Label="Roblox Employee",Value={Kind="toggle"}},{Field="NosniyTeam",Label="Nosniy Games Team",Value={Kind="toggle"}}};local N,P=W(I_168,{{Field="Ping",Label="Ping",Value={Kind="dropdown",Placeholder="Ping Value",Options={"Low","Medium","High"}}},{Field="Keys",Label="Keys",Value={Kind="number",Placeholder="Value"}},{Field="EventCurrency",Label="Event Currency",Value={Kind="number",Placeholder="Value"}}}),I_168;local function I_169(a,e,c,E)for p,p_170 in E,nil,nil do local E_171,T=a:AddToggle({Label=string.format("%s %s",tostring(e),tostring(p_170.Label)),Config=W(c,{p_170.Field,"Enabled"})}),p_170.Value;if T.Kind=="toggle"then continue;end;local e_172,t=W(c,{p_170.Field,"Value"}),a:AddGroup({Source=E_171});if T.Kind=="percent"then t:AddSlider({Label=T.Placeholder,Min=0,Max=100,Step=0.1,Config=e_172});elseif T.Kind=="number"then l(t:AddTextBox({Label=T.Placeholder}),e_172);elseif T.Kind=="text"then t:AddTextBox({Label=T.Placeholder,Config=e_172});elseif T.Kind=="dropdown"then t:AddDropdown({Label=T.Placeholder,Options=T.Options,Config=e_172});end;end;end;return function(l)local W,a=l:AddMultiSection({Titles={"Local Player","Other Player"},Side="right"});I_169(W,"Local Player",{"PlayerSpoofer","LocalPlayer"},N);I_169(a,"Other Player",{"PlayerSpoofer","OtherPlayers"},P);end;end
tbl17.iv = function()
local iv = tbl17.cache.iv
if not iv then
local iv2 = { c = fn35() }
tbl17.cache.iv = iv2
iv = iv2
end
return iv.c
end
end
do -- iw
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P,a= tbl17 .iq(), tbl17 .ir(), tbl17 .is(), tbl17 .it(),{Player="rbxassetid://114567720540659",Movement="rbxassetid://114280087699339",Recorder="rbxassetid://70520152532392",Character="rbxassetid://101118444346965",Identity="rbxassetid://109514257830136"};return function(e,c)local E=c:AddTab({Label="Player",Icon=a.Player,Description="Movement, character appearance, and identity."});P((E:AddTab({Label="Movement",Icon=a.Movement,Description="Ground and air movement."}):Grid({Columns=2})));c=e.MovementRecorder;if c then tbl17 .iu()(c,(E:AddTab({Label="Movement Recorder",Icon=a.Recorder,Description="Record, replay, and manage movement routes."}):Grid({Columns=2})));end;c=E:AddTab({Label="Character",Icon=a.Character,Description="Animations and character appearance."}):Grid({Columns=2});I(c);W(c);e=E:AddTab({Label="Identity Spoofing",Icon=a.Identity,Description="Presented device and player identity."}):Grid({Columns=2});N(e); tbl17 .iv()(e);end;end
tbl17.iw = function()
local iw = tbl17.cache.iw
if not iw then
local iw2 = { c = fn35() }
tbl17.cache.iw = iw2
iw = iw2
end
return iw.c
end
end
do -- ix
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Camera FOV",Side="left"});I:AddToggle({Label="Enable Camera FOV",Config={"CameraFov","Enabled"}});I:AddSlider({Label="Field of View",Min=30,Max=120,Config={"CameraFov","Value"}});end;end
tbl17.ix = function()
local ix = tbl17.cache.ix
if not ix then
local ix2 = { c = fn35() }
tbl17.cache.ix = ix2
ix = ix2
end
return ix.c
end
end
do -- iy
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Gameplay Overlays",Side="right"});I:AddToggle({Label="Hide Flashbang Effect",Config={"Removables","NoFlashbang"}});I:AddToggle({Label="Hide Burn Effect",Config={"Removables","NoBurnEffect"}});I:AddToggle({Label="Hide ADS Vignette",Config={"Removables","NoAdsVignette"}});I:AddToggle({Label="Hide Scope Overlay",Config={"Removables","NoScopeOverlay"}});I:AddToggle({Label="Hide Scope Reticle",Config={"Removables","NoScopeReticle"}});I:AddToggle({Label="Hide Hitmarker",Config={"Removables","NoHitmarker"}});end;end
tbl17.iy = function()
local iy = tbl17.cache.iy
if not iy then
local iy2 = { c = fn35() }
tbl17.cache.iy = iy2
iy = iy2
end
return iy.c
end
end
do -- iz
local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Stretched Resolution",Side="right"});I:AddToggle({Label="Enable Stretched Resolution",Config={"StretchedResolution","Enabled"}});I:AddSlider({Label="X Scale",Min=0.01,Max=1,Step=0.01,Config={"StretchedResolution","X"}});I:AddSlider({Label="Y Scale",Min=0.01,Max=1,Step=0.01,Config={"StretchedResolution","Y"}});end;end
tbl17.iz = function()
local iz = tbl17.cache.iz
if not iz then
local iz2 = { c = fn35() }
tbl17.cache.iz = iz2
iz = iz2
end
return iz.c
end
end
do -- iA
local function fn35() tbl17 .aE();local I= tbl17 .h6();return function(l)local W=l:AddSection({Title="Third Person",Side="left"});I(W,"Enable Third Person",{"Toggle"},{"ThirdPerson"},true);W:AddToggle({Label="Ray Check",Config={"ThirdPerson","RayCheck"}});W:AddToggle({Label="Show Replica",Config={"ThirdPerson","ShowReplica"}});W:AddSlider({Label="X Offset",Min=-15,Max=15,Step=0.1,Config={"ThirdPerson","X"}});W:AddSlider({Label="Y Offset",Min=-5,Max=10,Step=0.1,Config={"ThirdPerson","Y"}});W:AddSlider({Label="Z Offset",Min=0,Max=15,Step=0.1,Config={"ThirdPerson","Z"}});end;end
tbl17.iA = function()
local ia = tbl17.cache.iA
if not ia then
local ia2 = { c = fn35() }
tbl17.cache.iA = ia2
ia = ia2
end
return ia.c
end
end
do -- iB
local function fn35() tbl17 .aE();local I,W,N,P= tbl17 .ix(), tbl17 .iy(), tbl17 .iz(), tbl17 .iA();return function(l)P(l);I(l);W(l);N(l);end;end
tbl17.iB = function()
local ib = tbl17.cache.iB
if not ib then
ib = { c = fn35() }
tbl17.cache.iB = ib
end
return ib.c
end
end
do -- iC
local function fn35()local I= tbl17 .aB(); tbl17 .aE(); tbl17 .hN();return function(l,W,N,P)local a=l.ImageStorage;W:AddButton({Label="Manage Images",OnClick=function()N:Dialog({Title="Manage Images",Description="Add or remove custom images."},function(l)local N,e;l:AddPage({Title="Add an Image",Description="Enter a name and image source.",Glyph="+",ActionText="Add Image",OnAction=function()local c,E=N,e;local p=a:AddCustom(c.Value,E.Value);if not p.Ok then I.get():Notify(p.Error.Detail);return false;end;c:Set("",true);E:Set("",true);return true;end},function(c)N=c:AddTextBox({Label="Name"});e=c:AddTextBox({Label="Image Source",Placeholder="Id / File name / Url"});end);local N_173,e_174;e_174=l:AddPage({Title="Remove an Image",Description="Select an image to remove.",Glyph="\226\136\146",ActionText="Remove Image",Variant="danger",ActionEnabled=false,Confirmation={Title="Remove selected image?",Description=function()local l=N_173.Value;if l==nil then return"The selected image will be permanently removed.";end;return string.format("\"%s\" will be permanently removed.",tostring(l));end,ActionText="Confirm"},OnOpen=function()local l=N_173;l:SetOptions(a:GetNames());e_174:SetActionEnabled(l.Value~=nil);end,OnAction=function()local l=N_173.Value;if l==nil then return false;end;local c=a:RemoveCustom(l);if not c.Ok then I.get():Notify(c.Error.Detail);return false;end;return true;end},function(l)local I=l:AddList({Label="Image",Options=a:GetNames(),Height=150,Search=true,SelectFirst=false});N_173=I;I:Connect(I.ValueChanged,function(l)e_174:SetActionEnabled(l~=nil);end);I:Connect(a.Changed,function(l)I:SetOptions(l);end);end);end);end});local l_175=W:AddDropdown({Label="Image",Options=a:GetNames(),Config=P});l_175:Connect(a.Changed,function(I)l_175:SetOptions(I);end);end;end
tbl17.iC = function()
local ic = tbl17.cache.iC
if not ic then
ic = { c = fn35() }
tbl17.cache.iC = ic
end
return ic.c
end
end
do -- iD
local function fn35() tbl17 .aE(); tbl17 .hN();local I= tbl17 .iC();return function(l,W,N)N:AddSlider({Label="Crosshair Image Size",Min=8,Max=256,Step=1,Config={"CustomCrosshair","Image","Size"}});N:AddSlider({Label="Crosshair Image Transparency",Min=0,Max=1,Step=0.01,Config={"CustomCrosshair","Image","Transparency"}});N:AddDivider({Label="Crosshair Image Selection"});I(l,N,W,{"CustomCrosshair","Image","Name"});end;end
tbl17.iD = function()
local id = tbl17.cache.iD
if not id then
id = { c = fn35() }
tbl17.cache.iD = id
end
return id.c
end
end
do -- iE
local function fn35() tbl17 .aE();local l={{Label="Top Line",Key="Top"},{Label="Bottom Line",Key="Bottom"},{Label="Left Line",Key="Left"},{Label="Right Line",Key="Right"}};return function(I)for W,W_176 in l,nil,nil do I:AddColor({Row=I:AddToggle({Label=W_176.Label,Config={"CustomCrosshair",W_176.Key,"Enabled"}}).Row,Gradient="editable",Config={"CustomCrosshair",W_176.Key,"Color"}});end;end;end
tbl17.iE = function()
local ie = tbl17.cache.iE
if not ie then
ie = { c = fn35() }
tbl17.cache.iE = ie
end
return ie.c
end
end
do -- iF
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W= tbl17 .iD(), tbl17 .iE();local function l(N)N:AddSlider({Label="Line Length",Min=1,Max=100,Step=1,Config={"CustomCrosshair","Length"}});N:AddSlider({Label="Line Thickness",Min=1,Max=20,Step=1,Config={"CustomCrosshair","Thickness"}});N:AddSlider({Label="Line Gap",Min=0,Max=100,Step=1,Config={"CustomCrosshair","Gap"}});local P=N:AddToggle({Label="Crosshair Outline",Config={"CustomCrosshair","Outline","Enabled"}});N:AddColor({Row=P.Row,Config={"CustomCrosshair","Outline","Color"},Animatable=true});N:AddGroup({Source=P}):AddSlider({Label="Crosshair Outline Thickness",Min=0,Max=10,Step=1,Config={"CustomCrosshair","Outline","Thickness"}});end;return function(N,P,a)local e=a:AddGroup({Source=a:AddToggle({Label="Enable Crosshair",Config={"CustomCrosshair","Enabled"}})});a=e:AddDropdown({Label="Crosshair Style",Options={"Lines","Image"},Config={"CustomCrosshair","Style"}});local c=e:AddGroup({Source=a,Option="Lines"});l(c);c:AddDivider({Label="Lines"});W(c);I(N,P,e:AddGroup({Source=a,Option="Image"}));return a;end;end
tbl17.iF = function()
local if_ = tbl17.cache.iF
if not if_ then
local if_2 = { c = fn35() }
tbl17.cache.iF = if_2
if_ = if_2
end
return if_.c
end
end
do -- iG
local function fn35() tbl17 .aE();local I= tbl17 .a6();local function l(W,...)return I(W,{...});end;return function(I,W,N,P)local a=I:AddGroup({Source=I:AddToggle({Label=P,Config=l(W,"Enabled")})});I=a:AddDropdown({Label=P.." Mode",Options=N,Config=l(W,"Kind")});a:AddSlider({Label=P.." Speed",Min=0.1,Max=5,Step=0.1,Config=l(W,"Speed")});if table.find(N,"Shimmer")then local e=a:AddGroup({Source=I,Option="Shimmer"});e:AddColor({Row=e:AddLabel({Label=P.." Fade Color"}).Row,Config=l(W,"Shimmer","Color"),Animatable=true});end;if table.find(N,"Perimeter")then local e=a:AddGroup({Source=I,Option="Perimeter"});e:AddColor({Row=e:AddLabel({Label=P.." Perimeter Gradient"}).Row,Gradient="editable",Config=l(W,"Perimeter","Color")});end;if table.find(N,"PingPong")then local N_177=a:AddGroup({Source=I,Option="PingPong"});N_177:AddSlider({Label=P.." Ping Pong Rotation",Min=0,Max=360,Step=1,Config=l(W,"PingPong","Rotation")});N_177:AddColor({Row=N_177:AddLabel({Label=P.." Background Color",NoSeparator=true}).Row,Config=l(W,"PingPong","BackgroundColor"),Animatable=true});N_177:AddColor({Row=N_177:AddLabel({Label=P.." Main Color"}).Row,Config=l(W,"PingPong","MainColor"),Animatable=true});end;end;end
tbl17.iG = function()
local ig = tbl17.cache.iG
if not ig then
ig = { c = fn35() }
tbl17.cache.iG = ig
end
return ig.c
end
end
do -- iH
local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Follow Target",Tooltip="Drags the crosshair toward the aimbot / silent aim target",Config={"CustomCrosshair","FollowTarget","Enabled"}})});I:AddDropdown({Label="Follow Target Mode",Options={"Crosshair","Crosshair + Text"},Config={"CustomCrosshair","FollowTarget","Mode"}});I:AddSlider({Label="Follow Speed",Default=20,Min=1,Max=50,Config={"CustomCrosshair","FollowTarget","Speed"}});I:AddSlider({Label="Follow Damper",Default=1,Min=0,Max=30,Config={"CustomCrosshair","FollowTarget","Damper"}});I:AddSlider({Label="Snap Distance",Default=5,Min=0,Max=10,Config={"CustomCrosshair","FollowTarget","SnapDistance"}});end;end
tbl17.iH = function()
local ih = tbl17.cache.iH
if not ih then
local ih2 = { c = fn35() }
tbl17.cache.iH = ih2
ih = ih2
end
return ih.c
end
end
do -- iI
local function fn35() tbl17 .aE();return function(l,I)l:AddGroup({Source=l:AddToggle({Label="Rotate Crosshair",Config={"CustomCrosshair","Rotation","Enabled"}})}):AddSlider({Label="Crosshair Rotation Speed",Min=0,Max=720,Step=1,Tooltip="Degrees per second",Config={"CustomCrosshair","Rotation","Speed"}});local W=l:AddGroup({Source=I,Option="Lines"});I=W:AddGroup({Source=W:AddToggle({Label="Crosshair Spread",Tooltip="Pulses the gap outward by the range below",Config={"CustomCrosshair","Spread","Enabled"}})});I:AddRangeSlider({Label="Crosshair Spread Range",Min=0,Max=100,Step=1,Default={Min=4,Max=16},Config={"CustomCrosshair","Spread","Range"}});I:AddSlider({Label="Spread Speed",Min=0,Max=20,Step=0.1,Config={"CustomCrosshair","Spread","Speed"}});end;end
tbl17.iI = function()
local ii = tbl17.cache.iI
if not ii then
local ii2 = { c = fn35() }
tbl17.cache.iI = ii2
ii = ii2
end
return ii.c
end
end
do -- iJ
local function fn35() tbl17 .aE();local I,W,N= tbl17 .iG(), tbl17 .iH(), tbl17 .iI();return function(l,P)l:AddSlider({Label="Rotation",Min=0,Max=360,Step=1,Tooltip="Static tilt of the whole crosshair",Config={"CustomCrosshair","Rotation","Angle"}});N(l,P);I(l:AddGroup({Source=P,Option="Lines"}),{"CustomCrosshair","Animation"},{"Shimmer","Perimeter","PingPong"},"Animate Crosshair");W(l);end;end
tbl17.iJ = function()
local ij = tbl17.cache.iJ
if not ij then
ij = { c = fn35() }
tbl17.cache.iJ = ij
end
return ij.c
end
end
do -- iK
local function fn35()local I= tbl17 .az(); tbl17 .aE();local W= tbl17 .iG();local function l(N)N:AddTextBox({Label="Crosshair Text Content",FocusLostOnly=true,Config={"CustomCrosshair","Text","Content"}});N:AddDropdown({Label="Crosshair Text Font",Options=I.Order,Config={"CustomCrosshair","Text","Font"}});N:AddSlider({Label="Crosshair Text Size",Min=6,Max=48,Step=1,Config={"CustomCrosshair","Text","Size"}});N:AddSlider({Label="Crosshair Text Offset",Min=0,Max=100,Step=1,Tooltip="Pixels below the crosshair",Config={"CustomCrosshair","Text","Offset"}});N:AddColor({Row=N:AddLabel({Label="Crosshair Text Color"}).Row,Gradient="editable",Config={"CustomCrosshair","Text","Color"}});local I=N:AddToggle({Label="Crosshair Text Outline",Config={"CustomCrosshair","Text","Outline","Enabled"}});N:AddColor({Row=I.Row,Config={"CustomCrosshair","Text","Outline","Color"},Animatable=true});N:AddGroup({Source=I}):AddSlider({Label="Crosshair Text Outline Thickness",Min=0,Max=10,Step=1,Config={"CustomCrosshair","Text","Outline","Thickness"}});W(N,{"CustomCrosshair","Text","Animation"},{"Shimmer","PingPong"},"Animate Crosshair Text");end;return function(I)l(I:AddGroup({Source=I:AddToggle({Label="Enable Crosshair Text",Tooltip="A custom label beneath the crosshair",Config={"CustomCrosshair","Text","Enabled"}})}));end;end
tbl17.iK = function()
local ik = tbl17.cache.iK
if not ik then
local ik2 = { c = fn35() }
tbl17.cache.iK = ik2
ik = ik2
end
return ik.c
end
end
do -- iL
local function fn35()local I,W,N= tbl17 .iF(), tbl17 .iJ(), tbl17 .iK(); tbl17 .aE(); tbl17 .hN();return function(l,P,a)local e,c,E=a:AddSection({Title="Crosshair",Side="left"}),a:AddSection({Title="Text",Side="left"}),a:AddSection({Title="Motion & Effects",Side="right"});a=I(l,P,e);N(c);W(E,a);end;end
tbl17.iL = function()
local il = tbl17.cache.iL
if not il then
il = { c = fn35() }
tbl17.cache.iL = il
end
return il.c
end
end
do -- iR
local function fn35() tbl17 .aE();local function l(I,W)I:AddDropdown({Label=W.." Mode",Options={"Circle","Origin"},Config={"SoundVisualizer",W,"Mode"}});I:AddColor({Row=I:AddToggle({Label=W.." Use Loudness Color",Config={"SoundVisualizer",W,"UseLoudnessColor"}}).Row,Config={"SoundVisualizer",W,"Color"},Animatable=true});end;return function(I)local W,N,P=I:AddSection({Title="Activation & Filtering",Side="left"}),I:AddMultiSection({Titles={"Footsteps","Other"},Side="right"});W:AddToggle({Label="Enable Sound ESP",Config={"SoundVisualizer","Enabled"}});W:AddDropdown({Label="Sound Source",Options={"All","Enemies","Team","Self"},Config={"SoundVisualizer","Source"}});W:AddMultiDropdown({Label="Sound Types",Options={"Footsteps","Other"},Config={"SoundVisualizer","Types"}});W:AddSlider({Label="Minimum Volume",Min=0,Max=1,Step=0.01,Config={"SoundVisualizer","MinVolume"}});l(N,"Footsteps");l(P,"Other");end;end
tbl17.iR = function()
local ir = tbl17.cache.iR
if not ir then
local ir2 = { c = fn35() }
tbl17.cache.iR = ir2
ir = ir2
end
return ir.c
end
end
do -- iS
local function fn35()local I= tbl17 .dy(); tbl17 .aE();return function(l,W)l:AddColor({Row=l:AddToggle({Label="Enable Bullet Tracers",Config={"BulletTracers","Enabled"}}).Row,Config={"BulletTracers","Color"},Animatable=true});l:AddDropdown({Label="Tracer Style",Options=I.Names,Config={"BulletTracers","Style"}});l:AddSlider({Label="Tracer Width",Min=0.02,Max=0.5,Step=0.01,Config={"BulletTracers","Width"}});l:AddSlider({Label="Texture Length",Min=0.5,Max=20,Step=0.1,Config={"BulletTracers","TextureLength"}});l:AddSlider({Label="Texture Speed",Min=0,Max=10,Step=0.1,Config={"BulletTracers","TextureSpeed"}});l:AddSlider({Label="Tracer Lifetime",Min=0.1,Max=5,Step=0.1,Config={"BulletTracers","Lifetime"}});l:AddSlider({Label="Fade Time",Min=0,Max=5,Step=0.1,Config={"BulletTracers","FadeTime"}});if W==nil then return;end;W:AddSlider({Label="Emission",Min=0,Max=1,Step=0.01,Config={"BulletTracers","Emission"}});W:AddSlider({Label="Glow",Min=1,Max=25,Config={"BulletTracers","Glow"}});l=W:AddGroup({Source=W:AddToggle({Label="Expand Tracers",Config={"BulletTracers","Expand"}})});l:AddSlider({Label="Expand Speed",Min=1,Max=60,Config={"BulletTracers","ExpandSpeed"}});l:AddSlider({Label="Expand Damper",Min=0.1,Max=1,Step=0.01,Config={"BulletTracers","ExpandDamper"}});end;end
tbl17.iS = function()
local is = tbl17.cache.iS
if not is then
is = { c = fn35() }
tbl17.cache.iS = is
end
return is.c
end
end
do -- iT
local function fn35()local I= tbl17 .a8(); tbl17 .aE();local function l(W,N,P)local a=W:AddToggle({Label=P.." Chams",Config={"Chams",N,"Enabled"}});W:AddColor({Row=a.Row,Alpha=true,Config={"Chams",N,"Color"},Transparency={"Chams",N,"Transparency"},Animatable=true});local e=W:AddGroup({Source=a});e:AddDropdown({Label=P.." Chams Material",Options=I.List,Config={"Chams",N,"Material"}});e:AddToggle({Label="Strip "..P.." Textures",Config={"Chams",N,"StripTextures"}});end;return function(I,W)l(I,"Arms","Arms");l(W,"Item","Held Item");end;end
tbl17.iT = function()
local it = tbl17.cache.iT
if not it then
local it2 = { c = fn35() }
tbl17.cache.iT = it2
it = it2
end
return it.c
end
end
do -- iU
local function fn35() tbl17 .aE();local function l(I,W,N)I:AddDivider({Label="Highlight"});local P=I:AddToggle({Label=N.." Highlight",Config={"ViewModelHighlight",W,"Enabled"}});I:AddColor({Row=P.Row,Config={"ViewModelHighlight",W,"FillColor"},Animatable=true});I:AddToggle({Label=N.." Render Above",Config={"ViewModelHighlight",W,"AlwaysOnTop"}});local a=I:AddGroup({Source=P});a:AddSlider({Label=N.." Fill Transparency",Min=-10,Max=10,Step=0.01,Config={"ViewModelHighlight",W,"FillTransparency"}});a:AddColor({Label=N.." Outline",Config={"ViewModelHighlight",W,"OutlineColor"},Animatable=true});a:AddSlider({Label=N.." Outline Transparency",Min=-10,Max=10,Step=0.01,Config={"ViewModelHighlight",W,"OutlineTransparency"}});end;return function(I,W)l(I,"Arms","Arms");l(W,"Item","Held Item");end;end
tbl17.iU = function()
local iu = tbl17.cache.iU
if not iu then
iu = { c = fn35() }
tbl17.cache.iU = iu
end
return iu.c
end
end
do -- iV
local function fn35() tbl17 .aE();return function(l)l:AddToggle({Label="Hide Shoot Animation",Config={"ItemModifiers","NoShootAnimation"}});l:AddToggle({Label="Hide Sprint Animation",Config={"ItemModifiers","NoSprintAnimation"}});l:AddToggle({Label="Hide Equip Animation",Config={"ItemModifiers","NoEquipAnimation"}});l:AddToggle({Label="Hide Reload Animation",Config={"ItemModifiers","NoReloadAnimation"}});l:AddDivider({Label="Motion"});l:AddToggle({Label="Remove Weapon Motion",Config={"ItemModifiers","NoMotion"}});l:AddToggle({Label="Remove Camera Shake",Config={"ItemModifiers","NoCameraShake"}});l:AddToggle({Label="Remove Camera Sway",Config={"ItemModifiers","NoCameraSway"}});end;end
tbl17.iV = function()
local iv = tbl17.cache.iV
if not iv then
local iv2 = { c = fn35() }
tbl17.cache.iV = iv2
iv = iv2
end
return iv.c
end
end
do -- iW
local function fn35() tbl17 .aE();return function(l)l:AddToggle({Label="Enable Viewmodel Position",Config={"ViewModelOffset","Enabled"}});l:AddSlider({Label="X",Min=-7.5,Max=7.5,Step=0.01,Config={"ViewModelOffset","X"}});l:AddSlider({Label="Y",Min=-7.5,Max=7.5,Step=0.01,Config={"ViewModelOffset","Y"}});l:AddSlider({Label="Z",Min=-7.5,Max=7.5,Step=0.01,Config={"ViewModelOffset","Z"}});l:AddSlider({Label="Pitch",Min=-180,Max=180,Config={"ViewModelOffset","Pitch"}});l:AddSlider({Label="Yaw",Min=-180,Max=180,Config={"ViewModelOffset","Yaw"}});l:AddSlider({Label="Roll",Min=-180,Max=180,Config={"ViewModelOffset","Roll"}});end;end
tbl17.iW = function()
local iw = tbl17.cache.iW
if not iw then
iw = { c = fn35() }
tbl17.cache.iW = iw
end
return iw.c
end
end
do -- iX
local function fn35() tbl17 .aE();return function(l)l:AddToggle({Label="Hide Muzzle Flash",Config={"Removables","NoMuzzleFlash"}});l:AddToggle({Label="Hide Game Tracers",Config={"Removables","NoGunTracers"}});end;end
tbl17.iX = function()
local ix = tbl17.cache.iX
if not ix then
local ix2 = { c = fn35() }
tbl17.cache.iX = ix2
ix = ix2
end
return ix.c
end
end
do -- iY
local function fn35() tbl17 .aE();local function l(I,W,N)I:AddDivider({Label="Wireframe"});local P=I:AddToggle({Label=N.." Wireframe",Config={"ViewModelWireframe",W,"Enabled"}});I:AddColor({Row=P.Row,Config={"ViewModelWireframe",W,"Color"},Animatable=true});I:AddGroup({Source=P}):AddSlider({Label=N.." Wireframe Width",Min=0.001,Max=0.02,Step=5.0E-4,Config={"ViewModelWireframe",W,"Width"}});end;return function(I,W)l(I,"Arms","Arms");l(W,"Item","Held Item");end;end
tbl17.iY = function()
local iy = tbl17.cache.iY
if not iy then
local iy2 = { c = fn35() }
tbl17.cache.iY = iy2
iy = iy2
end
return iy.c
end
end
do -- iZ
local function fn35() tbl17 .aE();local I,W,N,P,a,e,c= tbl17 .iS(), tbl17 .iT(), tbl17 .iU(), tbl17 .iV(), tbl17 .iW(), tbl17 .iX(), tbl17 .iY();return function(l)local E,p,T,t,x=l:AddSection({Title="Viewmodel Position",Side="left"}),l:AddSection({Title="Motion & Animation",Side="left"}),l:AddSection({Title="Bullet Tracers",Side="left"}),l:AddMultiSection({Titles={"Arms","Held Item"},Side="right"});local S,J=l:AddSection({Title="Advanced Tracers",Side="right"}),l:AddSection({Title="Suppressions",Side="right"});a(E);P(p);I(T,S);W(t,x);N(t,x);c(t,x);e(J);end;end
tbl17.iZ = function()
local iz = tbl17.cache.iZ
if not iz then
iz = { c = fn35() }
tbl17.cache.iZ = iz
end
return iz.c
end
end
do -- i_
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P,a,e= tbl17 .iB(), tbl17 .iL(), tbl17 .iQ(), tbl17 .iR(), tbl17 .iZ(),{Visuals="rbxassetid://127234874352422",PlayerEsp="rbxassetid://85332511060401",Crosshair="rbxassetid://83752373575368",Weapon="rbxassetid://121406454377051",Camera="rbxassetid://114084146151777",Sound="rbxassetid://102139623610548"};return function(l,c)local E=c:AddTab({Label="Visuals",Icon=e.Visuals,Description="Player information, crosshair, weapon, camera, and sound visuals."});N(l,c,(E:AddTab({Label="Player ESP",Icon=e.PlayerEsp,Description="Player overlays, team-specific styling, and a synchronized preview."}):Grid({Columns=2})));W(l,c,(E:AddTab({Label="Crosshair",Icon=e.Crosshair,Description="Crosshair lines, images, text, motion, and target-follow effects."}):Grid({Columns=2})));a((E:AddTab({Label="Weapon Visuals",Icon=e.Weapon,Description="Viewmodel position, materials, motion, and projectile effects."}):Grid({Columns=2})));I((E:AddTab({Label="Camera & Screen",Icon=e.Camera,Description="Third person, camera field of view, overlays, and screen scaling."}):Grid({Columns=2})));P((E:AddTab({Label="Sound ESP",Icon=e.Sound,Description="Visualize footsteps and other sounds by source and loudness."}):Grid({Columns=2})));end;end
tbl17.i_ = function()
local i = tbl17.cache.i_
if not i then
local i2 = { c = fn35() }
tbl17.cache.i_ = i2
i = i2
end
return i.c
end
end
do -- i0
local function fn35() tbl17 .aE();return function(l)l:AddDivider({Label="Atmosphere"});local I=l:AddToggle({Label="Atmosphere",Config={"Atmosphere","Enabled"}});l:AddColor({Row=I.Row,Tooltip="Atmosphere color.",Config={"Atmosphere","Color"},Animatable=true});l:AddColor({Row=I.Row,Tooltip="Atmosphere decay color.",Config={"Atmosphere","Decay"},Animatable=true});local W=l:AddGroup({Source=I});W:AddSlider({Label="Density",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Density"}});W:AddSlider({Label="Offset",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Offset"}});W:AddSlider({Label="Glare",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Glare"}});W:AddSlider({Label="Haze",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Haze"}});end;end
tbl17.i0 = function()
local i0 = tbl17.cache.i0
if not i0 then
i0 = { c = fn35() }
tbl17.cache.i0 = i0
end
return i0.c
end
end
do -- i1
local function fn35() tbl17 .aE();local I= tbl17 .i0();return function(l)local W={Master=l:AddSection({Title="Lighting Override",Side="left"}),TimeExposure=l:AddSection({Title="Time & Exposure",Side="left"}),ShadowsQuality=l:AddSection({Title="Shadows & Quality",Side="left"}),AmbientColors=l:AddSection({Title="Ambient Colors",Side="right"}),FogAtmosphere=l:AddSection({Title="Fog & Atmosphere",Side="right"})};W.Master:AddToggle({Label="Enable Lighting Override",Config={"Lighting","Enabled"}});l=W.TimeExposure:AddToggle({Label="Clock Time",Config={"Lighting","ClockTime","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Time",Min=0,Max=24,Step=0.01,Config={"Lighting","ClockTime","Value"}});l=W.TimeExposure:AddToggle({Label="Geographic Latitude",Config={"Lighting","GeographicLatitude","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Latitude",Min=-90,Max=90,Step=0.001,Config={"Lighting","GeographicLatitude","Value"}});l=W.TimeExposure:AddToggle({Label="Brightness",Config={"Lighting","Brightness","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Brightness",Min=0,Max=10,Step=0.01,Config={"Lighting","Brightness","Value"}});l=W.TimeExposure:AddToggle({Label="Exposure Compensation",Config={"Lighting","ExposureCompensation","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Exposure",Min=-5,Max=5,Step=0.01,Config={"Lighting","ExposureCompensation","Value"}});W.ShadowsQuality:AddToggle({Label="Disable Global Shadows",Config={"Lighting","DisableGlobalShadows"}});l=W.ShadowsQuality:AddToggle({Label="Shadow Softness",Config={"Lighting","ShadowSoftness","Enabled"}});W.ShadowsQuality:AddGroup({Source=l}):AddSlider({Label="Softness",Min=0,Max=1,Step=0.01,Config={"Lighting","ShadowSoftness","Value"}});l=W.ShadowsQuality:AddToggle({Label="Lighting Style",Config={"Lighting","LightingStyle","Enabled"}});W.ShadowsQuality:AddGroup({Source=l}):AddDropdown({Label="Style",Options={"Realistic","Soft"},Config={"Lighting","LightingStyle","Value"}});l=W.ShadowsQuality:AddToggle({Label="Shadow Color",Config={"Lighting","ShadowColor","Enabled"}});W.ShadowsQuality:AddColor({Row=l.Row,Config={"Lighting","ShadowColor","Value"},Animatable=true});W.ShadowsQuality:AddToggle({Label="Prioritize Lighting Quality",Config={"Lighting","PrioritizeLightingQuality"}});l=W.AmbientColors:AddToggle({Label="Ambient Colors",Config={"Lighting","Ambient","Enabled"}});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Indoor ambient color.",Config={"Lighting","Ambient","Indoor"},Animatable=true});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Outdoor ambient color.",Config={"Lighting","Ambient","Outdoor"},Animatable=true});l=W.AmbientColors:AddToggle({Label="Color Shift",Config={"Lighting","ColorShift","Enabled"}});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Top color shift.",Config={"Lighting","ColorShift","Top"},Animatable=true});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Bottom color shift.",Config={"Lighting","ColorShift","Bottom"},Animatable=true});l=W.AmbientColors:AddToggle({Label="Environment Diffuse Scale",Config={"Lighting","EnvironmentDiffuseScale","Enabled"}});W.AmbientColors:AddGroup({Source=l}):AddSlider({Label="Diffuse Scale",Min=0,Max=1,Step=0.01,Config={"Lighting","EnvironmentDiffuseScale","Value"}});l=W.AmbientColors:AddToggle({Label="Environment Specular Scale",Config={"Lighting","EnvironmentSpecularScale","Enabled"}});W.AmbientColors:AddGroup({Source=l}):AddSlider({Label="Specular Scale",Min=0,Max=1,Step=0.01,Config={"Lighting","EnvironmentSpecularScale","Value"}});l=W.FogAtmosphere:AddToggle({Label="Fog",Config={"Lighting","Fog","Enabled"}});W.FogAtmosphere:AddColor({Row=l.Row,Config={"Lighting","Fog","Color"},Animatable=true});local N=W.FogAtmosphere:AddGroup({Source=l});N:AddSlider({Label="Fog Start",Min=0,Max=10000,Config={"Lighting","Fog","Start"}});N:AddSlider({Label="Fog End",Min=0,Max=10000,Config={"Lighting","Fog","End"}});I(W.FogAtmosphere);end;end
tbl17.i1 = function()
local i1 = tbl17.cache.i1
if not i1 then
local i12 = { c = fn35() }
tbl17.cache.i1 = i12
i1 = i12
end
return i1.c
end
end
do -- i2
local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Bloom",Config={"Bloom","Enabled"}})});I:AddSlider({Label="Intensity",Min=0,Max=1,Step=0.01,Config={"Bloom","Intensity"}});I:AddSlider({Label="Size",Min=0,Max=56,Config={"Bloom","Size"}});I:AddSlider({Label="Threshold",Min=0,Max=5,Step=0.01,Config={"Bloom","Threshold"}});end;end
tbl17.i2 = function()
local i2 = tbl17.cache.i2
if not i2 then
local i22 = { c = fn35() }
tbl17.cache.i2 = i22
i2 = i22
end
return i2.c
end
end
do -- i3
local function fn35() tbl17 .aE();return function(l)local I=l:AddToggle({Label="Color Correction",Config={"ColorCorrection","Enabled"}});l:AddColor({Row=I.Row,Config={"ColorCorrection","TintColor"},Animatable=true});local W=l:AddGroup({Source=I});W:AddSlider({Label="Saturation",Min=-1,Max=1,Step=0.01,Config={"ColorCorrection","Saturation"}});W:AddSlider({Label="Brightness",Min=-1,Max=1,Step=0.01,Config={"ColorCorrection","Brightness"}});W:AddSlider({Label="Contrast",Min=-1,Max=1,Step=0.01,Config={"ColorCorrection","Contrast"}});end;end
tbl17.i3 = function()
local i3 = tbl17.cache.i3
if not i3 then
local i32 = { c = fn35() }
tbl17.cache.i3 = i32
i3 = i32
end
return i3.c
end
end
do -- i4
local function fn35() tbl17 .aE();return function(l)l:AddGroup({Source=l:AddToggle({Label="Color Grading",Config={"ColorGrading","Enabled"}})}):AddDropdown({Label="Preset",Options={"Default","Retro"},Config={"ColorGrading","TonemapperPreset"}});end;end
tbl17.i4 = function()
local i4 = tbl17.cache.i4
if not i4 then
local i42 = { c = fn35() }
tbl17.cache.i4 = i42
i4 = i42
end
return i4.c
end
end
do -- i5
local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Depth of Field",Config={"DepthOfField","Enabled"}})});I:AddSlider({Label="Far Intensity",Min=0,Max=1,Step=0.01,Config={"DepthOfField","FarIntensity"}});I:AddSlider({Label="Focus Distance",Min=0,Max=1000,Config={"DepthOfField","FocusDistance"}});I:AddSlider({Label="In Focus Radius",Min=0,Max=500,Config={"DepthOfField","InFocusRadius"}});I:AddSlider({Label="Near Intensity",Min=0,Max=1,Step=0.01,Config={"DepthOfField","NearIntensity"}});end;end
tbl17.i5 = function()
local i5 = tbl17.cache.i5
if not i5 then
i5 = { c = fn35() }
tbl17.cache.i5 = i5
end
return i5.c
end
end
do -- i6
local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Motion Blur",Config={"MotionBlur","Enabled"}})});I:AddSlider({Label="Intensity",Min=0,Max=56,Step=0.01,Config={"MotionBlur","Intensity"}});I:AddSlider({Label="Sensitivity",Min=0,Max=5,Step=0.01,Config={"MotionBlur","Sensitivity"}});end;end
tbl17.i6 = function()
local i6 = tbl17.cache.i6
if not i6 then
local i62 = { c = fn35() }
tbl17.cache.i6 = i62
i6 = i62
end
return i6.c
end
end
do -- i7
local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Sun Rays",Config={"SunRays","Enabled"}})});I:AddSlider({Label="Intensity",Min=0,Max=1,Step=0.01,Config={"SunRays","Intensity"}});I:AddSlider({Label="Spread",Min=0,Max=1,Step=0.01,Config={"SunRays","Spread"}});end;end
tbl17.i7 = function()
local i7 = tbl17.cache.i7
if not i7 then
local i72 = { c = fn35() }
tbl17.cache.i7 = i72
i7 = i72
end
return i7.c
end
end
do -- i8
local function fn35() tbl17 .aE();local I,W,N,P,a,e= tbl17 .i2(), tbl17 .i3(), tbl17 .i4(), tbl17 .i5(), tbl17 .i6(), tbl17 .i7();return function(l)local c,E,p=l:AddSection({Title="Tone & Color",Side="left"}),l:AddSection({Title="Focus & Motion",Side="left"}),l:AddSection({Title="Light Effects",Side="right"});W(c);N(c);P(E);a(E);I(p);e(p);end;end
tbl17.i8 = function()
local i8 = tbl17.cache.i8
if not i8 then
local i82 = { c = fn35() }
tbl17.cache.i8 = i82
i8 = i82
end
return i8.c
end
end
do -- i9
local function fn35()local I= tbl17 .he(); tbl17 .aE();return function(l)local W=l:AddGroup({Source=l:AddToggle({Label="Enable Ambient Sound",Config={"Ambience","Enabled"}})});W:AddDropdown({Label="Preset",Options=I.Names,Config={"Ambience","Sound"}});W:AddTextBox({Label="Custom Sound (ID or URL)",FocusLostOnly=true,Config={"Ambience","CustomSound"}});W:AddSlider({Label="Volume",Min=0,Max=10,Step=0.01,Config={"Ambience","Volume"}});end;end
tbl17.i9 = function()
local i9 = tbl17.cache.i9
if not i9 then
i9 = { c = fn35() }
tbl17.cache.i9 = i9
end
return i9.c
end
end
do -- ja
local function fn35() tbl17 .aE();local function l(...)local I={"Weather","Lightning"};for W=1,select("#",...),1 do table.insert(I,(select(W,...)));end;return I;end;return function(I)I:AddColor({Row=I:AddToggle({Label="Enable Lightning",Tooltip="Strike lightning during rain and blizzards.",Config=l("Enabled")}).Row,Gradient="editable",Tooltip="Colour or gradient of the lightning bolts.",Config=l("Color")});I:AddDivider({Label="Bolt"});I:AddSlider({Label="Interval",Tooltip="Average seconds between strikes.",Min=0.2,Max=10,Step=0.1,Suffix="s",Config=l("Interval")});I:AddSlider({Label="Distance",Tooltip="Farthest a strike can land from the camera.",Min=10,Max=200,Config=l("Distance")});I:AddSlider({Label="Height",Tooltip="Length of each bolt from cloud to ground.",Min=50,Max=400,Config=l("Height")});I:AddSlider({Label="Thickness",Tooltip="Core thickness of the bolts.",Min=0.5,Max=12,Step=0.1,Config=l("Thickness")});I:AddSlider({Label="Jaggedness",Tooltip="How jagged and erratic the bolts look.",Min=0,Max=20,Step=0.1,Config=l("Jaggedness")});I:AddSlider({Label="Branches",Tooltip="Maximum forks that split off each bolt.",Min=0,Max=24,Step=1,Config=l("Branches")});I:AddSlider({Label="Flash",Tooltip="Brightness of the light flash at the impact.",Min=0,Max=20,Step=0.1,Config=l("Flash")});I:AddDivider({Label="Sparks"});local W=I:AddToggle({Label="Sparks",Tooltip="Sparks that crackle off the bolt as it strikes.",Config=l("Sparks","Enabled")});I:AddColor({Row=W.Row,Gradient="editable",Tooltip="Colour or gradient of the sparks.",Config=l("Sparks","Color")});local N=I:AddGroup({Source=W});N:AddSlider({Label="Count",Tooltip="How many sparks each strike throws off.",Min=0,Max=40,Step=1,Config=l("Sparks","Count")});N:AddSlider({Label="Thickness",Tooltip="Thickness of the sparks.",Min=0.2,Max=8,Step=0.1,Config=l("Sparks","Thickness")});N:AddSlider({Label="Distance",Tooltip="How far sparks fly from the bolt.",Min=2,Max=50,Step=0.5,Config=l("Sparks","Distance")});N:AddSlider({Label="Speed",Tooltip="How fast sparks shoot out and fade.",Min=2,Max=40,Step=0.5,Config=l("Sparks","Speed")});N:AddSlider({Label="Jaggedness",Tooltip="How jagged the sparks look.",Min=0,Max=12,Step=0.1,Config=l("Sparks","Jaggedness")});I:AddDivider({Label="Explosion"});N=I:AddToggle({Label="Explosion",Tooltip="Burst of arcs that erupts where the bolt lands.",Config=l("Explosion","Enabled")});I:AddColor({Row=N.Row,Gradient="editable",Tooltip="Colour or gradient of the explosion.",Config=l("Explosion","Color")});W=I:AddGroup({Source=N});W:AddSlider({Label="Size",Tooltip="Size of the impact burst.",Min=0,Max=1,Step=0.01,Config=l("Explosion","Size")});W:AddSlider({Label="Bolts",Tooltip="How many arcs radiate from the impact.",Min=0,Max=30,Step=1,Config=l("Explosion","Bolts")});I:AddDivider({Label="Sound"});N=I:AddGroup({Source=I:AddToggle({Label="Sound",Tooltip="Play a thunder crack with each strike, delayed and quietened by distance.",Config=l("Sound","Enabled")})});N:AddSlider({Label="Volume",Tooltip="Loudness of a strike landing right beside you.",Min=0,Max=3,Step=0.05,Config=l("Sound","Volume")});N:AddToggle({Label="Delay",Tooltip="Lag the crack by the strike's distance, like real thunder. Off plays it instantly.",Config=l("Sound","Delay")});N:AddTextBox({Label="Sound ID",Tooltip="Roblox sound id or local file path for the crack. Leave empty for the default thunder.",FocusLostOnly=true,Config=l("Sound","SoundId")});end;end
tbl17.ja = function()
local ja = tbl17.cache.ja
if not ja then
local ja2 = { c = fn35() }
tbl17.cache.ja = ja2
ja = ja2
end
return ja.c
end
end
do -- jb
local function fn35()local I= tbl17 .aB(); tbl17 .gY(); tbl17 .aE();local l={{Label="Up Face",Key="SkyboxUp"},{Label="Down Face",Key="SkyboxDn"},{Label="Front Face",Key="SkyboxFt"},{Label="Back Face",Key="SkyboxBk"},{Label="Left Face",Key="SkyboxLf"},{Label="Right Face",Key="SkyboxRt"}};return function(W,N,P)local function a()P:Dialog({Title="Manage Skyboxes",Description="Add or remove custom skyboxes."},function(P)local e;local c={};P:AddPage({Title="Add a Skybox",Description="Enter a name and six face textures.",Glyph="+",ActionText="Add Skybox",OnAction=function()local E,p=e,{};for T,t in c,nil,nil do p[T]=t.Value;end;local T=N:Add(E.Value,p);if not T.Ok then I.get():Notify(T.Error.Detail);return false;end;E:Set("",true);for E,E_178 in c,nil,nil do E_178:Set("",true);end;return true;end},function(E)e=E:AddTextBox({Label="Name"});for e,e_179 in l,nil,nil do c[e_179.Key]=E:AddTextBox({Label=e_179.Label,Placeholder="Id / Url"});end;end);local l,e_180;e_180=P:AddPage({Title="Remove a Skybox",Description="Select a skybox to remove.",Glyph="\226\136\146",ActionText="Remove Skybox",Variant="danger",ActionEnabled=false,Confirmation={Title="Remove selected skybox?",Description=function()local P=l.Value;if P==nil then return"The selected skybox will be permanently removed.";end;return string.format("\"%s\" will be permanently removed.",tostring(P));end,ActionText="Confirm"},OnOpen=function()local P=l;P:SetOptions(N:GetNames());e_180:SetActionEnabled(P.Value~=nil);end,OnAction=function()local P=l.Value;if P==nil then return false;end;local c=N:Remove(P);if not c.Ok then I.get():Notify(c.Error.Detail);return false;end;return true;end},function(I)local P=I:AddList({Label="Skybox",Options=N:GetNames(),Height=150,Search=true,SelectFirst=false});l=P;P:Connect(P.ValueChanged,function(l)e_180:SetActionEnabled(l~=nil);end);P:Connect(N.Changed,function(l)P:SetOptions(l);end);end);end);end;local l=W:AddGroup({Source=W:AddToggle({Label="Enable Skybox",Config={"Skybox","Enabled"}})}):AddDropdown({Label="Preset",Options=N:GetNames(),Config={"Skybox","Preset"}});W:AddButton({Label="Manage Skyboxes",OnClick=a});l:Connect(N.Changed,function(I)l:SetOptions(I);end);end;end
tbl17.jb = function()
local jb = tbl17.cache.jb
if not jb then
local jb2 = { c = fn35() }
tbl17.cache.jb = jb2
jb = jb2
end
return jb.c
end
end
do -- jc
local function fn35() tbl17 .aE();return function(l)local I=l:AddToggle({Label="Enable Weather",Config={"Weather","Enabled"}});l:AddColor({Row=I.Row,Config={"Weather","Color"},Animatable=true});local W=l:AddGroup({Source=I});W:AddDropdown({Label="Preset",Options={"Snow","Rain","Blizzard"},Config={"Weather","Preset"}});W:AddSlider({Label="Intensity",Min=0,Max=2,Step=0.01,Config={"Weather","Intensity"}});W:AddSlider({Label="Rate",Min=0,Max=3,Step=0.01,Config={"Weather","Rate"}});W:AddSlider({Label="Height",Min=10,Max=100,Config={"Weather","Height"}});W:AddSlider({Label="Speed",Min=0.5,Max=3,Step=0.01,Config={"Weather","Speed"}});W:AddSlider({Label="Glow",Min=0,Max=1,Step=0.01,Config={"Weather","Glow"}});W:AddSlider({Label="Size",Min=0.5,Max=2,Step=0.01,Config={"Weather","Size"}});W:AddSlider({Label="Spread",Min=0,Max=3,Step=0.01,Config={"Weather","Spread"}});W:AddSlider({Label="Wind Strength",Min=0,Max=20,Step=0.1,Config={"Weather","Wind","Strength"}});W:AddSlider({Label="Wind Angle",Min=0,Max=360,Config={"Weather","Wind","Angle"}});end;end
tbl17.jc = function()
local jc = tbl17.cache.jc
if not jc then
local jc2 = { c = fn35() }
tbl17.cache.jc = jc2
jc = jc2
end
return jc.c
end
end
do -- jd
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P= tbl17 .i9(), tbl17 .ja(), tbl17 .jb(), tbl17 .jc();return function(l,a,e)local c,E,p,T=a:AddSection({Title="Skybox",Side="left"}),a:AddSection({Title="Ambient Sound",Side="left"}),a:AddSection({Title="Weather",Side="right"}),a:AddSection({Title="Lightning",Side="right"});N(c,l.Skyboxes,e);I(E);P(p);W(T);end;end
tbl17.jd = function()
local jd = tbl17.cache.jd
if not jd then
local jd2 = { c = fn35() }
tbl17.cache.jd = jd2
jd = jd2
end
return jd.c
end
end
do -- je
local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P= tbl17 .i1(), tbl17 .i8(), tbl17 .jd(),{World="rbxassetid://125685532120024",Lighting="rbxassetid://139232691165198",PostProcessing="rbxassetid://139684165362622",SkyWeather="rbxassetid://140109651313859"};return function(l,a)local e=a:AddTab({Label="World",Icon=P.World,Description="Lighting, post-processing, sky, and ambient sound."});I((e:AddTab({Label="Lighting",Icon=P.Lighting,Description="Override time, exposure, shadows, ambient light, fog, and atmosphere."}):Grid({Columns=2})));W((e:AddTab({Label="Post Processing",Icon=P.PostProcessing,Description="Tune tone, focus, motion, and light effects."}):Grid({Columns=2})));N(l,e:AddTab({Label="Sky & Weather",Icon=P.SkyWeather,Description="Choose a skybox, ambient sound, weather, and lightning."}):Grid({Columns=2}),a);end;end
tbl17.je = function()
local je = tbl17.cache.je
if not je then
local je2 = { c = fn35() }
tbl17.cache.je = je2
je = je2
end
return je.c
end
end
do -- jf
local function fn35()local I,W= tbl17 .bG(), tbl17 .aE(); tbl17 .hN();local N,P,a,e,c,E,p,T= tbl17 .h_(), tbl17 .ij(), tbl17 .ip(), tbl17 .n(), tbl17 .iw(), tbl17 .i_(), tbl17 .je(),cloneref(game:GetService("Players")).LocalPlayer;return function(l)if getgenv().KhForceMobileUi==true then W.ForceMobileLayout();end;local t=W.Menu.new({Icon=K.LithiumLogo,Title=string.format("KiciaHooker fixed by skidcoded | %s",tostring("Skidded Build")),Directory="kiciarebuild/rivals",Config=l.ReactiveStoreAdapter,ColorAnimation=l.ColorAnimation,Persistence=I,State=l.GeneralState,StateData=l.GeneralStateData,OnUnload=function()e:Destroy();end});e:Add(t);local I=l.PlayerIdentities;t:SetWatermarkUsername(I:GetPresented(T));e:Connect(I.IdentityChanged,function(W)if W==T then t:SetWatermarkUsername(I:GetPresented(T));end;end);P(l,t);E(l,t);c(l,t);N(l,t);p(l,t);a(l,t);t:AddSettingsTab();t:SetVisible(not(l.GeneralStateData.SilentLoad==true),true);end;end
tbl17.jf = function()
local jf = tbl17.cache.jf
if not jf then
jf = { c = fn35() }
tbl17.cache.jf = jf
end
return jf.c
end
end
do -- jg
local function fn35()
return function()
for _, v115 in getconnections(game:GetService("Players").LocalPlayer.Idled) do
if v115.Function == nil then
if v115.Disable then
v115:Disable()
elseif v115.Disconnect then
v115:Disconnect()
end
end
end
end
end
tbl17.jg = function()
local jg = tbl17.cache.jg
if not jg then
jg = { c = fn35() }
tbl17.cache.jg = jg
end
return jg.c
end
end
do -- jh
local function fn35()
local v115 = tbl17.a()
local v116 = tbl17.b3()
local leaderboardController = tbl17.aS().LeaderboardController
local seasonLibrary = tbl17.aS().SeasonLibrary
local v117 = tbl17.ad()
local v118 = tbl17.dQ()
local localPlayer = cloneref(game:GetService("Players")).LocalPlayer
local index2 = {}
index2.__index = index2
local function fn36(arg)
local v119 = getmetatable(leaderboardController)
if v119 == nil then
return nil
end
local v120 = v102(v119, "__index")
if type(v120) ~= "table" then
return nil
end
local v121 = v102(v120, arg)
return (type(v121) == "function" and { v121 } or { nil })[1]
end
local function fn37(arg, arg2)
local players = v102(arg, "Players")
if type(players) ~= "table" then
return arg
end
local str7 = tostring(localPlayer.UserId)
local v119 = table.clone(players)
for i = #v119, v86[63], -v86[63] do
local v120 = v119[i]
if type(v120) == "table" and v102(v120, "key") == str7 then
table.remove(v119, i)
end
end
local tbl18 = { key = str7, value = arg2.Value }
table.insert(v119, math.clamp(arg2.Rank, 1, #v119 + 1), tbl18)
local v120 = table.clone(arg)
v120.Players = v119
return v120
end
index2.new = function()
return setmetatable({
_errorReporter = v117.new(),
_resolver = nil,
_boardEntryProvider = nil,
_restore = nil,
_serialsRestore = nil,
}, index2)
end
index2._Install = function(arg)
if arg._restore ~= nil then
return
end
local GetRankingByUserID = fn36("GetRankingByUserID")
if GetRankingByUserID == nil then
arg._errorReporter:Report(v115.err("LeaderboardRankHook", "function_lookup", "GetRankingByUserID unavailable").Error)
return
end
local getHighestELOLeaderboardRanking = v102(seasonLibrary, "GetHighestELOLeaderboardRanking")
if getHighestELOLeaderboardRanking == nil then
arg._errorReporter:Report(v115.err("LeaderboardRankHook", "function_lookup", "GetHighestELOLeaderboardRanking unavailable").Error)
return
end
for k, v119 in debug.getconstants(getHighestELOLeaderboardRanking) do
if v119 == "GetRankingByUserID" then
arg._restore = { ConstantIndex = k, Original = v119 }
debug.setconstant(getHighestELOLeaderboardRanking, k, "GetRankingByUserID\0kicia")
break
end
end
if arg._restore == nil then
arg._errorReporter:Report(v115.err("LeaderboardRankHook", "constant_scan", "GetRankingByUserID constant not found").Error)
return
end
v103(leaderboardController, "GetRankingByUserID\0kicia", function(arg2, arg3, arg4)
local resolver = arg._resolver
if resolver ~= nil and arg3 == "Highest ELO" and arg4 ~= nil then
local v119 = resolver(arg4)
if v119 ~= nil then
return v119
end
end
return v116(GetRankingByUserID, arg2, arg3, arg4)
end)
end
index2._InstallSerials = function(arg)
if arg._serialsRestore ~= nil then
return
end
local leaderboardSerials = v102(leaderboardController, "LeaderboardSerials")
if type(leaderboardSerials) ~= "table" then
arg._errorReporter:Report(v115.err("LeaderboardRankHook", "table_lookup", "LeaderboardSerials unavailable").Error)
return
end
local v119 = leaderboardSerials
local obj = setmetatable({}, {
__index = function(arg2, arg3)
local v120 = v102(v119, arg3)
local boardEntryProvider = arg._boardEntryProvider
if boardEntryProvider ~= nil and arg3 == "Highest ELO" and type(v120) == "table" then
return fn37(v120, boardEntryProvider())
end
return v120
end,
__newindex = function(arg2, arg3, arg4)
v103(v119, arg3, arg4)
end,
})
v103(leaderboardController, "LeaderboardSerials", obj)
arg._serialsRestore = { Inner = leaderboardSerials }
end
index2._RevertSerials = function(arg)
local serialsRestore = arg._serialsRestore
if serialsRestore == nil then
return
end
arg._serialsRestore = nil
v103(leaderboardController, "LeaderboardSerials", serialsRestore.Inner)
end
index2.Set = function(arg, resolver)
arg._resolver = resolver
arg:_Install()
end
index2.Unset = function(arg)
arg._resolver = nil
end
index2.SetBoardEntry = function(arg, boardEntryProvider)
arg._boardEntryProvider = boardEntryProvider
arg:_InstallSerials()
end
index2.UnsetBoardEntry = function(arg)
arg._boardEntryProvider = nil
end
index2.TriggerRefresh = function(arg)
local GetLeaderboardRefreshedSignal = fn36("GetLeaderboardRefreshedSignal")
if GetLeaderboardRefreshedSignal == nil then
arg._errorReporter:Report(v115.err("LeaderboardRankHook", "function_lookup", "GetLeaderboardRefreshedSignal unavailable").Error)
return
end
local highestElo = v116(GetLeaderboardRefreshedSignal, leaderboardController, "Highest ELO")
if highestElo == nil then
return
end
v118(highestElo)
end
index2._Revert = function(arg)
local restore = arg._restore
if restore == nil then
return
end
local getHighestELOLeaderboardRanking = v102(seasonLibrary, "GetHighestELOLeaderboardRanking")
if getHighestELOLeaderboardRanking ~= nil then
debug.setconstant(getHighestELOLeaderboardRanking, restore.ConstantIndex, restore.Original)
end
v103(leaderboardController, "GetRankingByUserID\0kicia", nil)
arg._restore = nil
end
index2.Destroy = function(arg)
arg._resolver = nil
arg._boardEntryProvider = nil
arg:_Revert()
arg:_RevertSerials()
arg._errorReporter:Destroy()
end
return index2
end
tbl17.jh = function()
local jh = tbl17.cache.jh
if not jh then
jh = { c = fn35() }
tbl17.cache.jh = jh
end
return jh.c
end
end
do -- ji
local function fn35()
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2)
local tbl18 = {
_instance = arg,
_attribute = arg2,
_original = arg:GetAttribute(arg2),
_isWriting = v86[153],
_connection = nil,
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
local instance = arg._instance
local attribute = arg._attribute
arg._connection = instance:GetAttributeChangedSignal(attribute):Connect(function()
if arg._isWriting then
return
end
arg._original = instance:GetAttribute(attribute)
arg._isWriting = v86[34]
local spoofed = arg._spoofed
if spoofed ~= nil then
instance:SetAttribute(attribute, spoofed.Value)
end
arg._isWriting = v86[153]
end)
end
index2.Set = function(arg, spoofed)
arg._spoofed = spoofed
arg._isWriting = true
if spoofed ~= nil then
arg._instance:SetAttribute(arg._attribute, spoofed.Value)
else
arg._instance:SetAttribute(arg._attribute, arg._original)
end
arg._isWriting = false
end
index2.Destroy = function(arg)
arg._connection:Disconnect()
arg._instance:SetAttribute(arg._attribute, arg._original)
end
return index2
end
tbl17.ji = function()
local ji = tbl17.cache.ji
if not ji then
ji = { c = fn35() }
tbl17.cache.ji = ji
end
return ji.c
end
end
do -- jj
local function fn35()
local v115 = tbl17.ji()
tbl17.bK()
local v116 = tbl17.k()
local v117 = tbl17.bW()
local v118 = tbl17.bX()
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local tbl18 = {
_trove = v116.new("player_spoofer.AttributeSink"),
_playerRegistry = arg,
_guardedAttributeByNameByPlayer = {},
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
arg._trove:Add(arg._playerRegistry:ObservePlayers(function(arg2)
arg:_Apply(arg2)
end, function(arg2)
arg:_Cleanup(arg2)
end))
end
index2.RefreshScope = function(arg, arg2)
v117(arg2, function(arg3)
arg:_Apply(arg3)
end)
end
index2._Apply = function(arg, arg2)
local v119 = v118(arg2)
arg:_SetValue(arg2, "StatisticDuelsWinStreak", v119.Winstreak)
arg:_SetValue(arg2, "Level", v119.Level)
arg:_SetValue(arg2, "DisplayELO", v119.RankedElo)
arg:_SetValue(arg2, "PlayerStatus", v119.NametagStatus)
arg:_SetConst(arg2, "IsInfluencer", v119.Influencer.Enabled, true)
arg:_SetConst(arg2, "IsRobloxEmployee", v119.RobloxEmployee.Enabled, v86[34])
arg:_SetConst(arg2, "GroupRank", v119.NosniyTeam.Enabled, 255)
end
index2._SetValue = function(arg, arg2, arg3, arg4)
if arg4.Enabled then
arg:_Bind(arg2, arg3):Set({ Value = arg4.Value })
else
arg:_Unbind(arg2, arg3)
end
end
index2._SetConst = function(arg, arg2, arg3, arg4, arg5)
if arg4 then
arg:_Bind(arg2, arg3):Set({ Value = arg5 })
else
arg:_Unbind(arg2, arg3)
end
end
index2._Bind = function(arg, arg2, arg3)
local tbl18 = arg._guardedAttributeByNameByPlayer[arg2]
if tbl18 == nil then
tbl18 = {}
arg._guardedAttributeByNameByPlayer[arg2] = tbl18
end
local v119 = tbl18[arg3]
if v119 == nil then
local v120 = v115.new(arg2, arg3)
tbl18[arg3] = v120
v119 = v120
end
return v119
end
index2._Unbind = function(arg, arg2, arg3)
local v119 = arg._guardedAttributeByNameByPlayer[arg2]
if v119 == nil then
return
end
local v120 = v119[arg3]
if v120 ~= nil then
v120:Destroy()
v119[arg3] = nil
end
end
index2._Cleanup = function(arg, arg2)
local v119 = arg._guardedAttributeByNameByPlayer[arg2]
if v119 == nil then
return
end
for _, v120 in v119, nil, nil do
v120:Destroy()
end
arg._guardedAttributeByNameByPlayer[arg2] = nil
end
index2.Destroy = function(arg)
for _, v119 in arg._guardedAttributeByNameByPlayer, nil, nil do
for _, v120 in v119, nil, nil do
v120:Destroy()
end
end
arg._trove:Destroy()
end
return index2
end
tbl17.jj = function()
local jj = tbl17.cache.jj
if not jj then
jj = { c = fn35() }
tbl17.cache.jj = jj
end
return jj.c
end
end
do -- jk
local function fn35()
local v115 = tbl17.bG()
tbl17.jh()
local v116 = tbl17.bX()
local localPlayer = cloneref(game:GetService("Players")).LocalPlayer
local function fn36(arg)
local v117 = v116(arg)
return v117.LeaderboardRank.Enabled and v117.LeaderboardRank.Value or nil
end
local function fn37()
local localPlayer2 = v115.Data.PlayerSpoofer.LocalPlayer
local value
if localPlayer2.RankedElo.Enabled then
value = localPlayer2.RankedElo.Value
else
value = localPlayer:GetAttribute("DisplayELO")
local n = 0
if type(value) ~= "number" then
value = n
end
end
return { Rank = localPlayer2.LeaderboardRank.Value, Value = value }
end
return {
recompute = function(arg)
local playerSpoofer = v115.Data.PlayerSpoofer
if playerSpoofer.LocalPlayer.LeaderboardRank.Enabled or playerSpoofer.OtherPlayers.LeaderboardRank.Enabled then
arg:Set(fn36)
else
arg:Unset()
end
if playerSpoofer.LocalPlayer.LeaderboardRank.Enabled then
arg:SetBoardEntry(fn37)
else
arg:UnsetBoardEntry()
end
arg:TriggerRefresh()
end,
destroy = function(arg)
arg:Unset()
arg:UnsetBoardEntry()
arg:TriggerRefresh()
end,
}
end
tbl17.jk = function()
local jk = tbl17.cache.jk
if not jk then
local jk2 = { c = fn35() }
tbl17.cache.jk = jk2
jk = jk2
end
return jk.c
end
end
do -- jl
local function fn35()
local index2 = {}
index2.__index = index2
local function fn36(arg)
return arg.Value
end
local function fn37(arg, value)
arg.Value = value
end
index2.new = function(arg)
local tbl18 = { _instance = arg, _original = fn36(arg), _isWriting = false, _connection = nil }
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
local instance = arg._instance
arg._connection = instance:GetPropertyChangedSignal("Value"):Connect(function()
if arg._isWriting then
return
end
arg._original = fn36(instance)
arg._isWriting = true
local spoofed = arg._spoofed
if spoofed ~= nil then
fn37(instance, spoofed.Value)
end
arg._isWriting = v86[153]
end)
end
index2.Set = function(arg, spoofed)
arg._spoofed = spoofed
arg._isWriting = true
if spoofed ~= nil then
fn37(arg._instance, spoofed.Value)
else
fn37(arg._instance, arg._original)
end
arg._isWriting = v86[153]
end
index2.Destroy = function(arg)
arg._connection:Disconnect()
fn37(arg._instance, arg._original)
end
return index2
end
tbl17.jl = function()
local jl = tbl17.cache.jl
if not jl then
jl = { c = fn35() }
tbl17.cache.jl = jl
end
return jl.c
end
end
do -- jm
local function fn35()
local v115 = tbl17.jl()
tbl17.bK()
local v116 = tbl17.k()
local v117 = tbl17.bW()
local v118 = tbl17.bX()
local v119 = tbl17.aR()
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local tbl18 = { _trove = v116.new(), _playerRegistry = arg, _entryByPlayer = {} }
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
arg._trove:Add(arg._playerRegistry:ObservePlayers(function(arg2)
arg:_Watch(arg2)
end, function(arg2)
arg:_Cleanup(arg2)
end))
end
index2.RefreshScope = function(arg, arg2)
v117(arg2, function(arg3)
arg:_Apply(arg3)
end)
end
index2._Watch = function(arg, arg2)
if arg._entryByPlayer[arg2] ~= nil then
return
end
local tbl18 = { Trove = v116.new(), Guarded = nil }
arg._entryByPlayer[arg2] = tbl18
tbl18.Trove:Add(task.spawn(function()
local v120 = v119(arg2, { "CustomLeaderstats", "Current ELO" })
tbl18.Guarded = tbl18.Trove:Add(v115.new(v120))
arg:_Apply(arg2)
end))
end
index2._Apply = function(arg, arg2)
local v120 = arg._entryByPlayer[arg2]
if v120 == nil or v120.Guarded == nil then
return
end
local rankedElo = v118(arg2).RankedElo
if rankedElo.Enabled then
v120.Guarded:Set({ Value = rankedElo.Value })
else
v120.Guarded:Set(nil)
end
end
index2._Cleanup = function(arg, arg2)
local v120 = arg._entryByPlayer[arg2]
if v120 == nil then
return
end
arg._entryByPlayer[arg2] = nil
v120.Trove:Destroy()
end
index2.Destroy = function(arg)
for _, v120 in arg._entryByPlayer, nil, nil do
v120.Trove:Destroy()
end
arg._entryByPlayer = {}
arg._trove:Destroy()
end
return index2
end
tbl17.jm = function()
local jm = tbl17.cache.jm
if not jm then
jm = { c = fn35() }
tbl17.cache.jm = jm
end
return jm.c
end
end
do -- jn
local function fn35()
local v115 = tbl17.bG()
tbl17.d9()
local v116 = tbl17.bX()
local function fn36(arg)
local v117 = v116(arg.Player)
if v117.Level.Enabled then
arg.Data.Level = v117.Level.Value
end
if v117.CasualWins.Enabled then
arg.Data.CasualWins = v117.CasualWins.Value
end
if v117.RankedWins.Enabled then
arg.Data.RankedWins = v117.RankedWins.Value
end
if v117.CasualWinPercent.Enabled then
arg.Data.CasualWinPercent = v117.CasualWinPercent.Value / 100
end
if v117.RankedWinPercent.Enabled then
arg.Data.RankedWinPercent = v117.RankedWinPercent.Value / v86[91]
end
if v117.RankedElo.Enabled then
arg.Data.RankedCurrentELO = v117.RankedElo.Value
end
if v117.FavoriteMap.Enabled then
arg.Data.FavoriteMap = v117.FavoriteMap.Value
end
end
local function fn37(arg)
return arg.Level.Enabled or arg.CasualWins.Enabled or arg.RankedWins.Enabled or arg.CasualWinPercent.Enabled or arg.RankedWinPercent.Enabled or arg.RankedElo.Enabled or arg.FavoriteMap.Enabled
end
return {
bind = function(arg)
arg:SetHandler(fn36)
end,
recompute = function(arg)
local playerSpoofer = v115.Data.PlayerSpoofer
arg:SetEnabled(fn37(playerSpoofer.LocalPlayer) or fn37(playerSpoofer.OtherPlayers))
end,
}
end
tbl17.jn = function()
local jn = tbl17.cache.jn
if not jn then
local jn2 = { c = fn35() }
tbl17.cache.jn = jn2
jn = jn2
end
return jn.c
end
end
do -- jo
local function fn35()
local v115 = tbl17.bG()
tbl17.dR()
local seasonLibrary = tbl17.aS().SeasonLibrary
local function fn36(arg)
local original = arg:GetOriginal("Seasons")
local currentSeason = v102(seasonLibrary, "CurrentSeason")
if type(original) ~= "table" or currentSeason == nil then
return original
end
local name = v102(currentSeason, "Name")
local universalEloName = v102(seasonLibrary, "UNIVERSAL_ELO_NAME")
local currentELO = v115.Data.PlayerSpoofer.LocalPlayer.RankedElo.Value
local v116 = table.clone(original)
local v117 = v102(v116, name)
local v118 = (v117 ~= nil and { (table.clone(v117)) } or { {} })[v86[63]]
local rankedPerformances = v102(v118, "RankedPerformances")
local v119 = (rankedPerformances ~= nil and { (table.clone(rankedPerformances)) } or { {} })[1]
local v120 = v102(v119, universalEloName)
local v121 = (v120 ~= nil and { (table.clone(v120)) } or { {} })[1]
v121.CurrentELO = currentELO
v119[universalEloName] = v121
v118.RankedPerformances = v119
v116[name] = v118
return v116
end
return {
recompute = function(arg)
if v115.Data.PlayerSpoofer.LocalPlayer.RankedElo.Enabled then
arg:Set("Seasons", function()
return fn36(arg)
end)
else
arg:Unset("Seasons")
end
arg:TriggerDataChangedSignal("Seasons")
end,
destroy = function(arg)
arg:Unset("Seasons")
arg:TriggerDataChangedSignal("Seasons")
end,
}
end
tbl17.jo = function()
local jo = tbl17.cache.jo
if not jo then
local jo2 = { c = fn35() }
tbl17.cache.jo = jo2
jo = jo2
end
return jo.c
end
end
do -- jp
local function fn35()
tbl17.dR()
tbl17.jh()
tbl17.bK()
tbl17.d9()
local v115 = tbl17.k()
local v116 = tbl17.bY()
local v117 = tbl17.jj()
local v118 = tbl17.jk()
local v119 = tbl17.jm()
local v120 = tbl17.jn()
local v121 = tbl17.jo()
local index2 = {}
index2.__index = index2
local tbl18 = {
"Winstreak",
"Level",
"CasualWins",
"RankedWins",
"CasualWinPercent",
"RankedWinPercent",
"RankedElo",
"FavoriteMap",
}
local tbl19 = { "NametagStatus", "Influencer", "RobloxEmployee", "NosniyTeam" }
index2.new = function(arg, arg2, arg3, arg4)
local statSpoofer = v115.new("player_spoofer.stat_spoofer")
local tbl20 = {
_trove = statSpoofer,
_attributeSink = statSpoofer:Add(v117.new(arg)),
_leaderstatSink = statSpoofer:Add(v119.new(arg)),
_leaderboardRankHook = arg4,
_requestBinding = arg2,
_dataHook = arg3,
}
setmetatable(tbl20, index2)
v120.bind(arg2)
statSpoofer:Add(arg2)
statSpoofer:Add(function()
v121.destroy(arg3)
end)
statSpoofer:Add(function()
v118.destroy(arg4)
end)
tbl20:_Initialize()
return tbl20
end
index2._Initialize = function(arg)
for _, v122 in tbl18, nil, nil do
v116(arg._trove, v122, function(arg2)
v120.recompute(arg._requestBinding)
arg._attributeSink:RefreshScope(arg2)
end)
end
v116(arg._trove, "RankedElo", function(arg2)
arg._leaderstatSink:RefreshScope(arg2)
if arg2 == "LocalPlayer" then
v121.recompute(arg._dataHook)
v118.recompute(arg._leaderboardRankHook)
end
end)
v116(arg._trove, "LeaderboardRank", function()
v118.recompute(arg._leaderboardRankHook)
end)
for _, v122 in tbl19, nil, nil do
v116(arg._trove, v122, function(arg2)
arg._attributeSink:RefreshScope(arg2)
end)
end
v120.recompute(arg._requestBinding)
v121.recompute(arg._dataHook)
v118.recompute(arg._leaderboardRankHook)
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jp = function()
local jp = tbl17.cache.jp
if not jp then
local jp2 = { c = fn35() }
tbl17.cache.jp = jp2
jp = jp2
end
return jp.c
end
end
do -- jq
local function fn35()
local v115 = tbl17.a()
local v116 = tbl17.b2()
local v117 = tbl17.ad()
local utility = tbl17.aS().Utility
local localPlayer = cloneref(game:GetService("Players")).LocalPlayer
local tbl18 = { Low = { 150, 160 }, Medium = { 60, 75 }, High = { 17, 25 } }
local function fn36(arg)
return {
LocalPlayer = { GetNetworkPing = function()
return arg:_RandomPing()
end },
}
end
local index2 = {}
index2.__index = index2
index2.new = function()
return setmetatable({ _pingType = nil, _errorReporter = v117.new(), _loadFailure = nil, _restore = nil }, index2)
end
index2.Destroy = function(arg)
arg:Revert()
arg._errorReporter:Destroy()
end
index2._Load = function(arg)
if arg._restore ~= nil then
return v115.VoidOk
end
local v118 = getmetatable(utility)
if v118 == nil then
return v115.err("LocalPingHook", "metatable_lookup", "Utility metatable unavailable")
end
local v119 = v102(v118, "__index")
if type(v119) ~= "table" then
return v115.err("LocalPingHook", "index_lookup", "Utility __index unavailable")
end
local getLocalConnectionPing = v102(v119, "GetLocalConnectionPing")
if type(getLocalConnectionPing) ~= "function" then
return v115.err("LocalPingHook", "function_lookup", "GetLocalConnectionPing not found")
end
local v120 = nil
local v121 = nil
for k, v122 in debug.getupvalues(getLocalConnectionPing) do
if not (typeof(v122) ~= "Instance" or not v116(v122, game:GetService("Players"))) then
v120 = k
v121 = v122
end
end
if v120 == nil or v121 == nil then
return v115.err("LocalPingHook", "upvalue_lookup", "Players not found in GetLocalConnectionPing")
end
debug.setupvalue(getLocalConnectionPing, v120, fn36(arg))
arg._restore = { Fn = getLocalConnectionPing, Index = v120, Original = v121 }
return v115.VoidOk
end
index2.Revert = function(arg)
local restore = arg._restore
if restore == nil then
return
end
arg._restore = nil
debug.setupvalue(restore.Fn, restore.Index, restore.Original)
end
index2.EnsureLoaded = function(arg)
if arg._restore ~= nil then
return v115.VoidOk
end
local loadFailure = arg._loadFailure
if loadFailure ~= nil then
return loadFailure
end
local v118 = arg._errorReporter:ReportResult(arg:_Load())
if not v118.Ok then
arg._loadFailure = v118
end
return v118
end
index2.Set = function(arg, pingType)
arg._pingType = pingType
end
index2._RandomPing = function(arg)
local pingType = arg._pingType
if pingType == nil then
return localPlayer:GetNetworkPing()
end
local v118 = tbl18[pingType]
return math.random(v118[v86[63]], v118[2]) / 1000
end
return index2
end
tbl17.jq = function()
local jq = tbl17.cache.jq
if not jq then
local jq2 = { c = fn35() }
tbl17.cache.jq = jq2
jq = jq2
end
return jq.c
end
end
do -- jr
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.jq()
tbl17.a()
local v117 = tbl17.k()
local v118 = tbl17.bY()
local index2 = {}
index2.__index = index2
index2.new = function()
local v119 = v117.new()
local tbl18 = { _trove = v119, _pingHook = v119:Add(v116.new()) }
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
local function fn36()
local ping = v115.Data.PlayerSpoofer.LocalPlayer.Ping
arg._pingHook:Set(ping.Value)
if not ping.Enabled then
arg:_Revert()
return
end
if not arg:_Load().Ok then
return
end
end
v118(arg._trove, "Ping", fn36, { "LocalPlayer" })
fn36()
end
index2._Load = function(arg)
return arg._pingHook:EnsureLoaded()
end
index2._Revert = function(arg)
arg._pingHook:Revert()
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jr = function()
local jr = tbl17.cache.jr
if not jr then
jr = { c = fn35() }
tbl17.cache.jr = jr
end
return jr.c
end
end
do -- js
local function fn35()
local v115 = tbl17.bG()
tbl17.dR()
local v116 = tbl17.k()
local data = v115.Data
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v117 = v116.new()
if not (n25 > 3887) then
local keys = data.PlayerSpoofer.LocalPlayer.Keys
local tbl18 = { _trove = v117, _dataHook = arg, _enabled = false, _keys = keys.Value }
setmetatable(tbl18, index2)
v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "Keys", v86[44] }), function(arg2)
tbl18:_SetEnabled(arg2)
end)
v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "Keys", "Value" }), function(arg2)
tbl18:_SetKeys(arg2)
end)
tbl18:_SetEnabled(keys.Enabled)
return tbl18
end
return nil
-- (anti-tamper freeze trap removed)
end
index2._SetEnabled = function(arg, enabled)
if enabled == arg._enabled then
return
end
arg._enabled = enabled
if enabled then
arg._dataHook:Set("WeaponKeys", function()
return arg._keys
end)
else
arg._dataHook:Unset("WeaponKeys")
end
arg._dataHook:TriggerDataChangedSignal("WeaponKeys")
end
index2._SetKeys = function(arg, keys)
arg._keys = keys
end
index2.Destroy = function(arg)
arg:_SetEnabled(false)
arg._trove:Destroy()
end
return index2
end
tbl17.js = function()
local js = tbl17.cache.js
if not js then
local js2 = { c = fn35() }
tbl17.cache.js = js2
js = js2
end
return js.c
end
end
do -- jt
local function fn35()
local v115 = tbl17.bG()
tbl17.dR()
local v116 = tbl17.k()
local data = v115.Data
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v117 = v116.new()
local eventCurrency = data.PlayerSpoofer.LocalPlayer.EventCurrency
local tbl18 = { _trove = v117, _dataHook = arg, _enabled = false, _eventCurrency = eventCurrency.Value }
setmetatable(tbl18, index2)
v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "EventCurrency", v86[44] }), function(arg2)
tbl18:_SetEnabled(arg2)
end)
v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "EventCurrency", "Value" }), function(arg2)
tbl18:_SetEventCurrency(arg2)
end)
tbl18:_SetEnabled(eventCurrency.Enabled)
return tbl18
end
index2._SetEnabled = function(arg, enabled)
if enabled == arg._enabled then
return
end
arg._enabled = enabled
if enabled then
arg._dataHook:Set("EventCurrency", function()
return arg._eventCurrency
end)
else
arg._dataHook:Unset("EventCurrency")
end
arg._dataHook:TriggerDataChangedSignal("EventCurrency")
end
index2._SetEventCurrency = function(arg, eventCurrency)
arg._eventCurrency = eventCurrency
end
index2.Destroy = function(arg)
arg:_SetEnabled(false)
arg._trove:Destroy()
end
return index2
end
tbl17.jt = function()
local jt = tbl17.cache.jt
if not jt then
jt = { c = fn35() }
tbl17.cache.jt = jt
end
return jt.c
end
end
do -- ju
local function fn35()
local v115 = tbl17.bG()
tbl17.cX()
local v116 = tbl17.k()
local v117 = tbl17.b3()
local v118 = cloneref(game:GetService("Workspace"))
local tbl18 = { "Movement", "LongJump", "Keybind", "State" }
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local v119 = v116.new()
local tbl19 = { _trove = v119, _playerContext = arg }
setmetatable(tbl19, index2)
v119:Connect(v115:GetPropertyChangedSignal(tbl18), function(arg2)
tbl19:_OnStateChanged(arg2)
end)
return tbl19
end
index2._OnStateChanged = function(arg, arg2)
if not arg2 then
return
end
task.defer(function()
v115:Set(tbl18, false)
end)
if not v115.Data.Movement.LongJump.Enabled then
return
end
arg:_Launch()
end
index2._Launch = function(arg)
local inner = arg._playerContext.Inner
if inner == nil then
return
end
local fighterState = inner.FighterState
local state = fighterState.Character.State
if not state.Alive then
return
end
local entity = fighterState:GetEntity()
if entity == nil then
return
end
local longJump = v115.Data.Movement.LongJump
local lookVector = v118.CurrentCamera.CFrame.LookVector
local vector = Vector3.new(lookVector.X, v86[186], lookVector.Z)
if vector.Magnitude < 0.001 then
local lookVector2 = state.RootPart.CFrame.LookVector
vector = Vector3.new(lookVector2.X, 0, lookVector2.Z)
end
local unit = vector.Unit
if longJump.Mode == "Under Feet" then
unit = (unit * longJump.Behind + Vector3.new(0, 4, 0)).Unit
end
local n = unit * longJump.Force + Vector3.new(v86[186], longJump.UpwardVelocity, 0)
v117(entity.AirborneCancel, entity)
v117(entity.AirborneTrigger, entity, n, 4)
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.ju = function()
local ju = tbl17.cache.ju
if not ju then
local ju2 = { c = fn35() }
tbl17.cache.ju = ju2
ju = ju2
end
return ju.c
end
end
do -- jv
local function fn35()
local tbl18
tbl18 = {
DirectionToOrientation = function(l)local I,W=CFrame.lookAt(Vector3.zero,l):ToOrientation();return I,W;end,
OrientationLookingAt = function(I,W)return tbl18 .DirectionToOrientation(W-I);end,
}
return tbl18
end
tbl17.jv = function()
local jv = tbl17.cache.jv
if not jv then
local jv2 = { c = fn35() }
tbl17.cache.jv = jv2
jv = jv2
end
return jv.c
end
end
do -- jw
local function fn35()
local v115 = tbl17.cn()
local v116 = tbl17.co()
local v117 = tbl17.jv()
local set = tbl17.cp().set
local v118 = tbl17.bG()
tbl17.c_()
tbl17.cF()
local v119 = tbl17.c4()
tbl17.cX()
tbl17.cE()
local v120 = tbl17.cd()
local v121 = tbl17.dc()
local v122 = tbl17.ci()
local v123 = tbl17.k()
local v124 = tbl17.aH()
local v125 = tbl17.de()
local v126 = tbl17.df()
local v127 = tbl17.dg()
local v128 = cloneref(game:GetService("Workspace"))
local data = v118.Data
local index2 = {}
index2.__index = index2
local function fn36(arg)
local v129 = v128.CurrentCamera:WorldToViewportPoint(arg.Position)
return v129.Z > 0 and Vector2.new(v129.X, v129.Y) or nil
end
index2.new = function(arg, arg2, arg3)
local flickbot = v123.new("flickbot")
local aimbot = data.Aimbot
local v129 = v121.new(arg2, arg, aimbot.TargetConditions, aimbot.TargetHitboxes[v124.DefaultProfile.Class], function(I,W)return( arg3 :Check(I,W,W.Parent));end)
local tbl18 = {
_trove = flickbot,
_playerContext = arg2,
_targetSelection = v122.new(v129, v115.buildMeasure(aimbot.Fov.Radius, aimbot.TargetConditions.WithinFov), v126),
_state = "Idle",
_selected = nil,
_trajectory = nil,
_trajectoryIndex = v86[63],
_elapsedMs = 0,
_totalMs = 0,
_bakedEndDirection = Vector3.zAxis,
_timer = 0,
_isEnabledHeld = v86[153],
}
setmetatable(tbl18, index2)
flickbot:Add(v119:ObserveEnabledKeybind({ "Flickbot" }, function(arg4)
tbl18:_OnKeybindChanged(arg4)
end))
local v130 = v125(arg2, flickbot, "features.Aimbot", v129, function() return data.Aimbot.TargetHitboxes end)
local function fn37(selection) tbl18._targetSelection:SetHitboxSelectionMode(v115.buildHitboxSelectionMode(selection)) end
flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "Fov" }), function(f) tbl18._targetSelection:SetMeasure(v115.buildMeasure(f.Radius, data.Aimbot.TargetConditions.WithinFov)) end)
flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "TargetConditions" }), function(c)
v129:SetConditions(c)
tbl18._targetSelection:SetMeasure(v115.buildMeasure(data.Aimbot.Fov.Radius, c.WithinFov))
end)
flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "TargetHitboxes" }), v130)
flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "HitboxSelection" }), fn37)
fn37(aimbot.HitboxSelection)
v130()
return tbl18
end
index2._OnKeybindChanged = function(arg, arg2)
if not arg2 then
arg._isEnabledHeld = false
return
end
if arg._isEnabledHeld then
return
end
arg._isEnabledHeld = true
if arg._state ~= "Idle" then
return
end
arg:_StartFlick()
end
index2._StartFlick = function(arg)
local currentCamera = v128.CurrentCamera
local v129, v130 = arg._targetSelection:SelectBest(nil)
if v129 == nil or v130 == nil then
return
end
local selected = { Target = v129, Part = v130 }
local v131 = fn36(v130)
if v131 == nil then
return
end
local v132 = v127()
local v133 = v120.new()
local flickbot = v118.Data.Flickbot
v133:ApplyFlickProfile({ DurationMs = flickbot.FlickDuration, Curvature = flickbot.Curvature, Humanness = flickbot.Humanness })
local trajectory = {}
for k, v134 in v133:Generate(v132.X, v132.Y, v131.X, v131.Y), nil, nil do
trajectory[k] = { Direction = currentCamera:ViewportPointToRay(v134.X, v134.Y).Direction, T = v134.T }
end
arg._trajectory = trajectory
arg._trajectoryIndex = 1
arg._elapsedMs = v86[186]
arg._totalMs = trajectory[#trajectory].T
arg._bakedEndDirection = trajectory[#trajectory].Direction
arg._selected = selected
arg._state = "Flicking"
v116.claim("Flickbot", 10)
end
index2._FinishToCooldown = function(arg)
arg._selected = nil
arg._trajectory = nil
v116.release("Flickbot")
local cooldown = v118.Data.Flickbot.Cooldown
if cooldown > 0 then
arg._state = "Cooldown"
arg._timer = cooldown / 1000
else
arg._state = "Idle"
end
end
index2._SampleTrajectory = function(arg, arg2, arg3)
arg._elapsedMs = arg._elapsedMs + arg3 * 1000
local trajectoryIndex = arg._trajectoryIndex
while trajectoryIndex < #arg2 and arg2[trajectoryIndex + 1].T <= arg._elapsedMs do
trajectoryIndex += 1
end
arg._trajectoryIndex = trajectoryIndex
local v129 = arg2[trajectoryIndex]
local v130 = arg2[trajectoryIndex + 1]
if v130 == nil then
return arg2[#arg2].Direction, true
end
local n = v130.T - v129.T
local n33 = 1
if n > 0 then
n33 = math.clamp((arg._elapsedMs - v129.T) / n, 0, 1)
end
return v129.Direction:Lerp(v130.Direction, n33), false
end
index2.Update = function(arg, arg2)
local state = arg._state
if state == "Flicking" then
local selected = arg._selected
local trajectory = arg._trajectory
if selected == nil or trajectory == nil then
arg:_FinishToCooldown()
if not flag2 then
return
end
return
end
if selected.Part.Parent == nil then
arg:_FinishToCooldown()
return
end
local unit, v129 = arg:_SampleTrajectory(trajectory, arg2)
if v86[186] < arg._totalMs then
unit = (unit + ((selected.Part.Position - v128.CurrentCamera.CFrame.Position).Unit - arg._bakedEndDirection) * math.clamp(arg._elapsedMs / arg._totalMs, 0, 1)).Unit
end
local v130, v131 = v117.DirectionToOrientation(unit)
set(Vector2.new(v130, v131))
if v129 then
local flickbot = v118.Data.Flickbot
if flickbot.Shoot then
arg._state = "PostShot"
arg._timer = flickbot.ShotDelay / 1000
else
arg:_FinishToCooldown()
end
end
elseif state == "PostShot" then
arg._timer = arg._timer - arg2
if arg._timer <= 0 then
arg:_FireShot()
arg:_FinishToCooldown()
end
elseif state == "Cooldown" then
arg._timer = arg._timer - arg2
if arg._timer <= 0 then
arg._state = "Idle"
end
end
end
index2._FireShot = function(arg)
local inner = arg._playerContext.Inner
if inner == nil then
return
end
inner.FighterState:Input("StartShooting")
end
index2.Destroy = function(arg)
v116.release("Flickbot")
arg._trove:Destroy()
end
return index2
end
tbl17.jw = function()
local jw = tbl17.cache.jw
if not jw then
jw = { c = fn35() }
tbl17.cache.jw = jw
end
return jw.c
end
end
do -- jy
local function fn35()
tbl17.cF()
tbl17.jx()
local function fn36(arg)
local itemObserver = arg.ItemObserver
local equippedItem = itemObserver:GetEquippedItem()
if equippedItem ~= nil and equippedItem.Name == "Riot Shield" then
local v115 = math.deg(arg:GetCameraRotation().X)
if v115 > 22 and v115 < 91 then
return "Below"
end
return "Above"
end
for _, v115 in itemObserver:GetItems() do
if v115.Name == "Riot Shield" then
local v116 = math.deg(arg:GetCameraRotation().X)
if v116 > 315 and v116 < 360 or v116 > 0 and v116 < 91 then
return "Above"
end
return "Below"
end
end
return v86[75]
end
if not flag2 then
return
end
return fn36
end
tbl17.jy = function()
local jy = tbl17.cache.jy
if not jy then
local jy2 = { c = fn35() }
tbl17.cache.jy = jy2
jy = jy2
end
return jy.c
end
end
do -- jz
local function fn35()
tbl17.cE()
tbl17.jx()
tbl17.cI()
local v115 = tbl17.jy()
local v116 = Random.new()
return {
getDefensiveCFrame = function(arg, arg2, arg3, arg4)
if arg2 == "Equipped" then
return CFrame.new(arg.Position, arg4.Position)
end
if arg2 == "Unequipped" then
return CFrame.new(arg.Position, arg.Position + arg.Position - arg4.Position)
end
local v117 = arg3.ItemObserver:EquippedItemAsMelee()
if v117 ~= nil and v117.Name == "Knife" then
local cframe = CFrame.fromOrientation
local nextNumber = v116.NextNumber
local tau = math.tau
return CFrame.new(arg.Position) * cframe(v116:NextNumber(0, math.tau), v116:NextNumber(0, math.tau), nextNumber(v116, 0, tau))
end
return arg
end,
getDefensiveViewAngles = function(arg, arg2)
if arg == "None" then
return nil
end
return {
Kind = "Normalized",
Pitch = (arg == "Equipped") ~= (v115(arg2) ~= "Below") and v86[45] or -90,
Yaw = v116:NextNumber(0, 360),
}
end,
}
end
tbl17.jz = function()
local jz = tbl17.cache.jz
if not jz then
jz = { c = fn35() }
tbl17.cache.jz = jz
end
return jz.c
end
end
do -- jA
local function fn35()
local index2 = {}
index2.__index = index2
index2.new = function()
return setmetatable({}, index2)
end
index2.ShouldFire = function(arg, arg2, arg3)
local now2 = os.clock()
local lockedUntil = arg._lockedUntil
local flag19 = lockedUntil ~= nil and now2 < lockedUntil
if arg2 then
arg._lockedUntil = now2 + arg3
end
return flag19 or arg2
end
index2.Reset = function(arg)
arg._lockedUntil = nil
end
return index2
end
tbl17.jA = function()
local ja = tbl17.cache.jA
if not ja then
local ja2 = { c = fn35() }
tbl17.cache.jA = ja2
ja = ja2
end
return ja.c
end
end
do -- jB
local function fn35()
tbl17.cr()
local v115 = tbl17.bG()
tbl17.cF()
tbl17.bM()
local function fn36(arg)
if not arg.IsEnemy or arg:IsInvincible() then
return false
end
if not arg.Character.State.Alive then
return false
end
local v116 = arg.ItemObserver:EquippedItemAsMelee()
if v116 ~= nil and v116:IsDeflecting() then
return false
end
return true
end
local function fn37(arg)
return { FighterState = arg, AliveState = arg.Character.State }
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2)
return setmetatable({ _fighters = arg, _playerTags = arg2 }, index2)
end
index2.GetTarget = function(arg)
local prioritizeHackers = v115.Data.Ragebot.PrioritizeHackers
if prioritizeHackers then
for _, v116 in arg._playerTags:GetPlayersWith("Hacker") do
local v117 = arg._fighters.StateByPlayer[v116]
if v117 ~= nil and fn36(v117) then
return fn37(v117)
end
end
end
for k, v116 in arg._fighters.EnemyByPlayer, nil, nil do
if prioritizeHackers and arg._playerTags:Has(k, "Hacker") then
continue
end
if fn36(v116) then
return fn37(v116)
end
end
return nil
end
index2.HasTargets = function(arg)
for _, v116 in arg._fighters.EnemyByPlayer, nil, nil do
if fn36(v116) then
return true
end
end
return v86[153]
end
index2.IsSameTarget = function(arg, arg2)
return arg.FighterState == arg2.FighterState and arg.AliveState == arg2.AliveState
end
return index2
end
tbl17.jB = function()
local jb = tbl17.cache.jB
if not jb then
jb = { c = fn35() }
tbl17.cache.jB = jb
end
return jb.c
end
end
do -- jC
local function fn35()
local vector = Vector3.new(0, -v86[63], 0)
local vector2 = Vector3.new(0, 0, -v86[63])
return function(arg, arg2)
local n = arg2 - arg
local vector3 = Vector3.new(n.X, v86[186], n.Z)
if vector3.Magnitude < 0.001 then
vector3 = vector2
end
return CFrame.lookAt(arg, arg + vector3, vector)
end
end
tbl17.jC = function()
local jc = tbl17.cache.jC
if not jc then
jc = { c = fn35() }
tbl17.cache.jC = jc
end
return jc.c
end
end
do -- jD
local function fn35()
local v115 = tbl17.bG()
tbl17.cR()
tbl17.gA()
local v116 = tbl17.jA()
tbl17.jB()
local v117 = tbl17.jy()
local v118 = tbl17.jC()
local vector = Vector3.new(0, -0.7, 0.05)
local vector2 = Vector3.new(0, -3.85, 0.05)
local tbl18 = {
["\0"] = -9e37,
["\1"] = 0,
["\2"] = v86[186],
["\3"] = -1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl19 = {
["\0"] = v86[186],
["\1"] = -90000000,
["\2"] = 0,
["\3"] = -1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl20 = {
["\0"] = -9e37,
["\1"] = v86[186],
["\2"] = 0,
["\3"] = 1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl21 = {
["\0"] = 0,
["\1"] = 90000000,
["\2"] = 0,
["\3"] = 1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl22 = { ["\0"] = 0, ["\1"] = 1, ["\2"] = v86[186], ["\3"] = v86[186], ["\4"] = 0, ["\5"] = 0 }
local index2 = {}
index2.__index = index2
index2.new = function(arg)
return setmetatable({ _partGlue = arg, _shootLock = v116.new() }, index2)
end
index2.Plan = function(arg, arg2, arg3, arg4, arg5, arg6)
local hitboxHead = arg3.AliveState.HitboxHead
local flag19 = v117(arg3.FighterState) ~= "Below"
local ragebot = v115.Data.Ragebot
local v119 = flag19 and vector or vector2
local v120 = arg._partGlue:Acquire(arg5, hitboxHead)
local n
if flag19 then
n = v120 + v119
else
n = v118(v120.Position + v119, hitboxHead.Position)
end
if not arg._shootLock:ShouldFire(arg6, arg2 * ragebot.ShootFrames) then
local random2 = math.random
return CFrame.new(math.random(-1000000, 1000000), math.random(5000, 10000), random2(-1000000, 1000000)), nil
end
local v121 = (flag19 and { tbl18 } or { tbl20 })[1]
local v122 = (flag19 and { tbl19 } or { tbl21 })[v86[63]]
return n, function()
arg4:ShootEncoded(v121, v122, hitboxHead, tbl22)
end
end
return index2
end
tbl17.jD = function()
local jd = tbl17.cache.jD
if not jd then
local jd2 = { c = fn35() }
tbl17.cache.jD = jd2
jd = jd2
end
return jd.c
end
end
do -- jE
local function fn35()
tbl17.cJ()
local v115 = tbl17.bG()
tbl17.cS()
tbl17.gA()
local v116 = tbl17.jA()
tbl17.jB()
local v117 = tbl17.jy()
local v118 = tbl17.jC()
local vector = Vector3.new(0, -v86[195], 0.05)
local vector2 = Vector3.new(v86[186], -3.85, 0.05)
local tbl18 = {
["\0"] = -9e37,
["\1"] = 0,
["\2"] = 0,
["\3"] = -1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl19 = {
["\0"] = 0,
["\1"] = -90000000,
["\2"] = v86[186],
["\3"] = -1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl20 = {
["\0"] = -9e37,
["\1"] = 0,
["\2"] = v86[186],
["\3"] = 1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl21 = {
["\0"] = 0,
["\1"] = 90000000,
["\2"] = v86[186],
["\3"] = 1.5707963267948966,
["\4"] = 3.1415926535897931,
["\5"] = 3.1415926535897931,
}
local tbl22 = { ["\0"] = 0, ["\1"] = 1, ["\2"] = v86[186], ["\3"] = 0, ["\4"] = 0, ["\5"] = 0 }
local function fn36()
local random2 = math.random
return CFrame.new(math.random(-10000000, -100000), math.random(5000, 10000), random2(-10000000, -100000))
end
local function fn37(arg, arg2)
return { Kind = "Normalized", Pitch = math.deg(arg), Yaw = math.deg(arg2) }
end
local function fn38(arg, arg2, arg3, arg4)
return {
["\0"] = arg["\0"],
["\1"] = arg["\1"],
["\2"] = arg["\2"],
["\3"] = arg2,
["\4"] = arg3,
["\5"] = arg4,
}
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
return setmetatable({ _partGlue = arg, _shootLock = v116.new(), _hitboxWindowUntil = -1, _attackCooldown = -1 }, index2)
end
index2.Plan = function(arg, arg2, arg3, arg4, gluedOurPart, arg5)
local aliveState = arg3.AliveState
local hitboxHead = aliveState.HitboxHead
local flag19 = v117(arg3.FighterState) ~= "Below"
local ragebot = v115.Data.Ragebot
local v119 = flag19 and vector or vector2
local v120 = arg._partGlue:Acquire(gluedOurPart, hitboxHead)
arg._gluedOurPart = gluedOurPart
local n
if flag19 then
n = v120 + v119
else
n = v118(v120.Position + v119, hitboxHead.Position)
end
local v121, v122, v123 = aliveState.RootPart.CFrame:ToOrientation()
local n33 = flag19 and -1.5707963267948966 or 1.5707963267948966
local v124 = (flag19 and { tbl18 } or { tbl20 })[1]
local v125 = (flag19 and { tbl19 } or { tbl21 })[1]
local v126 = fn38(v124, n33, v122, v123)
local v127 = fn38(v125, n33, v122, v123)
local now2 = os.clock()
if now2 < arg._hitboxWindowUntil then
return n, fn37(v121, v122), function()
arg4:HeavyAttackEncoded(v126, v127, hitboxHead, tbl22)
end
end
if not arg._shootLock:ShouldFire(arg5, arg2 * ragebot.ShootFrames) then
return fn36(), nil, nil
end
if now2 < arg._attackCooldown then
return fn36(), nil, nil
end
if arg4.Name == "Knife" then
arg:_RecordBackstab()
return n, fn37(v121, v122), function()
arg4:HeavyAttackEncoded(v126, v127, hitboxHead, tbl22)
end
end
return n, nil, function()
arg4:AttackEncoded(v126, v127, hitboxHead, tbl22)
end
end
index2._RecordBackstab = function(arg)
local now2 = os.clock()
arg._hitboxWindowUntil = now2 + 0.625
arg._attackCooldown = now2 + 1.25
end
index2.ResetState = function(arg)
arg._hitboxWindowUntil = -1
arg._attackCooldown = -1
arg._shootLock:Reset()
local gluedOurPart = arg._gluedOurPart
if gluedOurPart ~= nil then
arg._partGlue:Free(gluedOurPart)
arg._gluedOurPart = nil
end
end
return index2
end
tbl17.jE = function()
local je = tbl17.cache.jE
if not je then
local je2 = { c = fn35() }
tbl17.cache.jE = je2
je = je2
end
return je.c
end
end
do -- jF
local function fn35()
local v115 = Random.new()
return function(arg, arg2, arg3)
local v116 = v115:NextNumber(0, 6.2831853071795862)
local v117 = v115:NextNumber(arg2, arg3)
local cframe = CFrame.new(arg + Vector3.new(math.cos(v116) * v117, 0, math.sin(v116) * v117))
local nextNumber = v115.NextNumber
return cframe * CFrame.fromOrientation(v115:NextNumber(0, 6.2831853071795862), v115:NextNumber(0, 6.2831853071795862), nextNumber(v115, 0, 6.2831853071795862))
end
end
tbl17.jF = function()
local jf = tbl17.cache.jF
if not jf then
jf = { c = fn35() }
tbl17.cache.jF = jf
end
return jf.c
end
end
do -- jG
local function fn35()
return function(arg, arg2)
local closestPointOnSurface = arg:GetClosestPointOnSurface(arg2)
local n = arg2 - closestPointOnSurface
if n.Magnitude < 1e-06 then
return closestPointOnSurface, nil
end
local n33 = arg:GetClosestPointOnSurface(arg2 + Vector3.xAxis * 0.05) - closestPointOnSurface
local n34 = arg:GetClosestPointOnSurface(arg2 + Vector3.yAxis * 0.05) - closestPointOnSurface
local n35 = arg:GetClosestPointOnSurface(arg2 + Vector3.zAxis * 0.05) - closestPointOnSurface
local n36 = n34:Cross(n33)
if n36.Magnitude < 1e-06 then
n36 = n34:Cross(n35)
end
if n36.Magnitude < 1e-06 then
n36 = n33:Cross(n35)
end
if n36.Magnitude < 1e-06 then
return closestPointOnSurface, nil
end
if n36:Dot(n) < 0 then
n36 = -n36
end
return closestPointOnSurface, n36.Unit
end
end
tbl17.jG = function()
local jg = tbl17.cache.jG
if not jg then
local jg2 = { c = fn35() }
tbl17.cache.jG = jg2
jg = jg2
end
return jg.c
end
end
do -- jH
local function fn35()
local v115 = tbl17.bG()
tbl17.cF()
tbl17.cX()
local v116 = tbl17.k()
local v117 = tbl17.jF()
local v118 = tbl17.jG()
local v119 = cloneref(game:GetService("CollectionService"))
local v120 = Random.new()
local vector = Vector3.new(5, 5, 5)
local overlapParams = OverlapParams.new()
overlapParams.FilterType = Enum.RaycastFilterType.Exclude
overlapParams.FilterDescendantsInstances = {}
overlapParams.BruteForceAllSlow = v86[34]
local function fn36(arg, arg2, arg3)
local unit = arg2.Unit
local n = arg3.Position - arg
local n33 = n - unit * n:Dot(unit)
if n33.Magnitude < 0.0001 then
local lookVector = arg3.CFrame.LookVector
n33 = lookVector - unit * lookVector:Dot(unit)
if n33.Magnitude < 0.0001 then
n33 = Vector3.xAxis - unit * unit:Dot(Vector3.xAxis)
end
end
local unit2 = n33.Unit:Cross(unit).Unit
return { SurfacePosition = arg, Right = unit2, Up = unit, Forward = unit:Cross(unit2).Unit }
end
local function fn37(arg, arg2)
local n = 6.2831853071795862 * arg2
return arg.Min + (arg.Max - arg.Min) * (math.sin(os.clock() * n) + 1) * v86[101]
end
local function fn38()
local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker
return fn37(projectileBreaker.DepthUp, projectileBreaker.DepthUpFrequency)
end
local function fn39()
local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker
return fn37(projectileBreaker.DepthForward, projectileBreaker.DepthForwardFrequency)
end
local function fn40(arg, arg2, arg3)
return CFrame.fromMatrix(arg.SurfacePosition - arg.Up * 0.01 - arg.Up * arg2 + arg.Forward * arg3, arg.Right, arg.Up, -arg.Forward)
end
local function fn41(arg)
return arg.Name == "Barriers" or arg:HasTag("OutOfBoundsPart") or arg:HasTag("KillBrick")
end
local function fn42(arg)
for _, v121 in workspace:GetPartBoundsInBox(CFrame.new(arg), vector, overlapParams), nil, nil do
if fn41(v121) then
return true
end
end
return false
end
local function fn43(arg)
if arg.Transparency == 1 then
return nil
end
local size = arg.Size
if size.X * size.Y * size.Z < 64 then
return nil
end
local n = size.Magnitude + 1000
for i = 1, v86[175] do
local v121, v122 = v118(arg, arg.Position + v120:NextUnitVector() * n)
if v122 == nil or v122.Y < 0.98 then
continue
end
return fn36(v121, v122, arg)
end
local v121, v122 = v118(arg, arg.Position + Vector3.yAxis * n)
if v122 ~= nil and v122.Y >= 0.98 then
return fn36(v121, v122, arg)
end
return nil
end
local function fn44(arg)
local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker
local fallbackBaseRadius = projectileBreaker.FallbackBaseRadius
local n = fallbackBaseRadius + fallbackBaseRadius * projectileBreaker.FallbackRadiusRandomFactor
local position = arg.Position
local v121 = v117(projectileBreaker.FallbackAnchorFromCharacter and position or Vector3.new(v86[186], position.Y, v86[186]), fallbackBaseRadius, n)
local v122 = v120:NextInteger(v86[63], 3)
local position2 = v121.Position
local x = position2.X
local y = position2.Y
local z = position2.Z
if v122 == 1 then
x = 1073741824
elseif v122 == v86[56] then
y = 1073741824
else
z = 1073741824
end
return v121 - position2 + Vector3.new(x, y, z)
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2)
local ProjectileBreakerTeleport = v116.new("ragebot.ProjectileBreakerTeleport")
local tbl18 = {
_trove = ProjectileBreakerTeleport,
_fighters = arg,
_nextPositionCooldown = -v86[63],
_poolEnvironmentId = nil,
_pool = {},
_processedPartSet = {},
}
setmetatable(tbl18, index2)
ProjectileBreakerTeleport:Add(arg2:ObserveContext("ragebot.ProjectileBreakerTeleport", function(arg3, arg4)
tbl18:_BindEnvironment(arg3.FighterState.EnvironmentId)
arg4:Connect(arg3.FighterState.EnvironmentIdChanged, function(arg5)
tbl18:_BindEnvironment(arg5)
end)
end))
ProjectileBreakerTeleport:Connect(arg2.ContextRemoved, function()
tbl18:_BindEnvironment(nil)
end)
return tbl18
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
index2._BindEnvironment = function(arg, poolEnvironmentId)
arg._poolEnvironmentId = poolEnvironmentId
arg._pool = {}
arg._processedPartSet = {}
end
index2.Compute = function(arg, arg2)
local nextPositionCooldown = arg._nextPositionCooldown
if os.clock() < nextPositionCooldown then
local lastBreakSurface = arg._lastBreakSurface
if lastBreakSurface ~= nil then
return fn40(lastBreakSurface, fn38(), fn39())
end
end
if not arg:_HasProjectileThreat() then
arg._lastBreakSurface = nil
return fn44(arg2)
end
local v121 = arg:_BreakLine()
if v121 ~= nil then
arg._lastBreakSurface = v121
return fn40(v121, fn38(), fn39())
end
return fn44(arg2)
end
index2._HasProjectileThreat = function(arg)
for _, v121 in arg._fighters.EnemyByPlayer, nil, nil do
local v122 = v121.ItemObserver:EquippedItemAsGun()
if v122 ~= nil and not v122.IsRaycast and v122.Name == "Slingshot" then
return true
end
end
return false
end
index2._ScanBatch = function(arg, arg2)
local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker
local n = (projectileBreaker.DepthUp.Min + projectileBreaker.DepthUp.Max) * v86[101]
local n33 = (projectileBreaker.DepthForward.Min + projectileBreaker.DepthForward.Max) * 0.5
local v121 = v86[186]
local function fn45(arg3)
if not arg3:IsA("BasePart") or arg._processedPartSet[arg3] then
return
end
arg._processedPartSet[arg3] = true
v121 += 1
local v122 = fn43(arg3)
if v122 == nil then
return
end
if fn42(fn40(v122, n, n33).Position) then
return
end
table.insert(arg._pool, v122)
end
for _, v122 in v119:GetTagged("RaycastWhitelist" .. arg2) do
if fn41(v122) then
continue
end
fn45(v122)
if v121 >= v86[83] or #arg._pool >= 30 then
return
end
for _, v123 in v122:GetDescendants() do
if fn41(v123) then
continue
end
fn45(v123)
if v121 >= 64 or #arg._pool >= v86[192] then
return
end
end
end
end
index2._BreakLine = function(arg)
local poolEnvironmentId = arg._poolEnvironmentId
if poolEnvironmentId == nil then
return nil
end
if #arg._pool < 30 then
arg:_ScanBatch(poolEnvironmentId)
end
if #arg._pool < 30 then
return nil
end
local repositionInterval = v115.Data.Ragebot.Evasion.ProjectileBreaker.RepositionInterval
arg._nextPositionCooldown = os.clock() + repositionInterval
return arg._pool[v120:NextInteger(1, #arg._pool)]
end
index2.ResetState = function(arg)
arg._nextPositionCooldown = -1
arg._lastBreakSurface = nil
end
return index2
end
tbl17.jH = function()
local jh = tbl17.cache.jH
if not jh then
jh = { c = fn35() }
tbl17.cache.jH = jh
end
return jh.c
end
end
do -- jI
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.jF()
local v117 = Random.new()
return { compute = function(arg)
local random2 = v115.Data.Ragebot.Evasion.Random
local baseRadius = random2.BaseRadius
local n = baseRadius + baseRadius * random2.RadiusRandomFactor
local position = arg.Position
local v118 = v116(random2.AnchorFromCharacter and position or Vector3.new(0, position.Y, 0), baseRadius, n)
local v119 = v117:NextInteger(v86[63], 3)
local position2 = v118.Position
local x = position2.X
local y = position2.Y
local z = position2.Z
if v119 == 1 then
x = 1073741824
elseif v119 == 2 then
y = 1073741824
else
z = 1073741824
end
return v118 - position2 + Vector3.new(x, y, z)
end }
end
tbl17.jI = function()
local ji = tbl17.cache.jI
if not ji then
ji = { c = fn35() }
tbl17.cache.jI = ji
end
return ji.c
end
end
do -- jJ
local function fn35()
local v115 = tbl17.bG()
tbl17.cF()
tbl17.jB()
local v116 = tbl17.k()
local function fn36(arg)
return math.abs(arg.X) >= 4194304 or math.abs(arg.Y) >= 4194304 or math.abs(arg.Z) >= 4194304
end
local index2 = {}
index2.__index = index2
index2.new = function(arg)
local tbl18 = { _trove = v116.new("ragebot.SpatialLimitGate"), _measurementByFighterState = {} }
setmetatable(tbl18, index2)
tbl18:_Initialize(arg)
return tbl18
end
index2._Initialize = function(arg, arg2)
arg._trove:Add(arg2:ObserveRemoteStates(function(arg3)
arg._measurementByFighterState[arg3] = { ExpectedDuration = 1 }
end, function(arg3)
arg._measurementByFighterState[arg3] = nil
end))
end
index2.Tick = function(arg, arg2)
local now2 = os.clock()
local fighterState = arg2.FighterState
local v117 = arg._measurementByFighterState[fighterState]
local limitEntryTime = v117.LimitEntryTime
local flag19 = fighterState.ItemObserver:GetEquippedAmmoState() ~= false
if not fn36(arg2.AliveState.RootPart.Position) then
if limitEntryTime ~= nil then
if flag19 then
v117.ExpectedDuration = now2 - limitEntryTime
end
v117.LimitEntryTime = nil
end
return false
end
if limitEntryTime == nil then
v117.LimitEntryTime = now2
limitEntryTime = now2
end
if flag19 then
if v117.ExpectedDuration - v115.Data.Ragebot.Stability <= now2 - limitEntryTime then
return false
end
end
return v86[34]
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jJ = function()
local jj = tbl17.cache.jJ
if not jj then
jj = { c = fn35() }
tbl17.cache.jJ = jj
end
return jj.c
end
end
do -- jK
local function fn35()
local v115 = tbl17.bG()
local v116 = tbl17.jF()
local v117 = cloneref(game:GetService("CollectionService"))
return { compute = function(arg, arg2)
if not arg2 then
return v116(arg.Position, 10000, 1e9)
end
local v118 = nil
for _, v119 in v117:GetTagged("OutOfBoundsPart") do
if v119:GetAttribute("KillDelay") == 0 then
v118 = v119
break
else
v118 = nil
end
end
if v118 == nil then
return v116(arg.Position, 10000, 1e9)
end
return v118.CFrame * CFrame.new(0, -v118.Size.Y / 2 + v115.Data.Ragebot.Evasion.Translocate.Offset, 0)
end }
end
tbl17.jK = function()
local jk = tbl17.cache.jK
if not jk then
jk = { c = fn35() }
tbl17.cache.jK = jk
end
return jk.c
end
end
do -- jL
local function fn35()
local n = 1121
local v115 = Random.new()
local function fn36()
return v115:NextInteger(0, 65535) * 65536 + v115:NextInteger(v86[186], 65535)
end
local v116 = fn36()
local v117 = fn36()
local v118 = fn36()
local v119 = fn36()
local function fn37(arg, arg2)
local n33 = (bit32.bxor(arg, arg2, v116) + v117) % 4294967296
local n34 = (bit32.bxor(n33, bit32.lrotate(n33, 7)) + v118) % 4294967296
local n35 = (bit32.bxor(n34, bit32.rrotate(n34, 11)) + v119) % 4294967296
return (bit32.bxor(n35, bit32.lrotate(n35, 17)))
end
local function fn38(arg, arg2)
local n33 = arg + 400 + v86[83]
return {
Min = arg,
Max = arg2,
Cells = (arg2 - arg) / 2048,
YMin = n33,
YSpan = arg2 - 400 - 64 - n33 + 1,
Salt = fn36(),
}
end
local v120 = fn38(65536, 524288)
local v121 = fn38(134217728, 1073741824)
local function fn39(arg, arg2, arg3, arg4)
local bxor = bit32.bxor
local salt = arg.Salt
return fn37(bit32.bxor(arg2, bit32.lshift(arg3, v86[118])), bxor(arg4, salt))
end
local function fn40(arg, arg2, arg3, arg4)
return fn39(arg, arg2, arg3, arg4) % n - 560
end
local function fn41(arg, arg2, arg3)
local n33 = arg.Min + 1024
local ySpan = arg.YSpan
return Vector3.new(n33 + arg2 * 2048 + fn40(arg, arg2, arg3, 324508639), arg.YMin + fn39(arg, arg2, arg3, 826366246) % ySpan, n33 + arg3 * 2048 + fn40(arg, arg2, arg3, 610839776))
end
local function fn42(arg)
local n33 = arg.Cells - 1
local nextInteger = v115.NextInteger
local v122 = v86[186]
local v123 = fn41(arg, v115:NextInteger(0, n33), nextInteger(v115, v122, n33))
local n34 = 200 * v115:NextNumber() ^ 0.33333333333333331
local v124 = v115:NextNumber(-1, 1)
local v125 = math.sqrt(1 - v124 * v124)
local v126 = v115:NextNumber(0, 6.2831853071795862)
return v123 + Vector3.new(n34 * v125 * math.cos(v126), n34 * v124, n34 * v125 * math.sin(v126))
end
local function fn43(arg, arg2)
local min = arg.Min
local max = arg.Max
local x = arg2.X
local y = arg2.Y
local z = arg2.Z
if x <= min or x >= max or y <= min or y >= max or z <= min or z >= max then
return false
end
local n33 = math.floor((x - min) / 2048)
local n34 = math.floor((z - min) / 2048)
return (arg2 - fn41(arg, n33, n34)).Magnitude < 400
end
local function fn44(arg)
local cframe = CFrame.fromOrientation
local nextNumber = v115.NextNumber
return CFrame.new(arg) * cframe(v115:NextNumber(-3.1415926535897931, 3.1415926535897931), v115:NextNumber(-3.1415926535897931, 3.1415926535897931), nextNumber(v115, -3.1415926535897931, 3.1415926535897931))
end
return {
SphereRadius = 400,
isInAnyRing = function(arg)
return fn43(v120, arg) or fn43(v121, arg)
end,
isInNormalRing = function(arg)
return fn43(v120, arg)
end,
isInImmuneRing = function(arg)
if not flag3 then
return
end
return fn43(v121, arg)
end,
getNormal = function()
return fn44(fn42(v120))
end,
getImmune = function()
return fn44(fn42(v121))
end,
}
end
tbl17.jL = function()
local jl = tbl17.cache.jL
if not jl then
jl = { c = fn35() }
tbl17.cache.jL = jl
end
return jl.c
end
end
do -- jM
local function fn35()
local v115 = tbl17.bG()
tbl17.cU()
tbl17.cX()
local function fn36(arg)
local index2 = arg.Index
return index2 == v86[63] and "Primary" or index2 == 2 and "Secondary" or index2 == 3 and "Melee" or nil
end
local function fn37(arg)
return v115.Data.Ragebot.Weapons.Enabled[arg]
end
return { getAction = function(arg)
local weapons = v115.Data.Ragebot.Weapons
local onEmpty = weapons.OnEmpty
local huge = math.huge
local huge2 = math.huge
local flag19 = false
local v116 = nil
local v117 = nil
for _, v118 in arg.ItemBehaviors:GetItems(), nil, nil do
local v119 = fn36(v118)
if not (v119 == nil or not fn37(v119)) then
flag19 = v86[34]
local huge3 = table.find(weapons.Priority, v119) or math.huge
if v118.__type == "Gun" and v118:GetAmmo() == 0 then
if not (v118:GetAmmoReserve() <= 0) then
if huge3 < huge2 then
if onEmpty == "Reload" then
v116 = v118
huge = huge3
else
huge2 = huge3
v117 = v118
end
end
end
elseif v116 == nil or huge3 < huge then
v116 = v118
huge = huge3
end
end
end
if not flag19 then
return nil
end
if v116 ~= nil then
local flag20 = v116.__type == "Gun"
if flag20 then
local v118 = v86[186]
flag20 = v116:GetAmmo() == v118
end
if v116:IsEquipped() then
if flag20 then
return { Type = "Reload", Item = v116 }
end
return { Type = "Attack", Item = v116 }
end
return { Type = "Swap", Item = v116 }
end
if onEmpty == "Swap" then
return nil
end
if v117 ~= nil then
if v117:IsEquipped() then
return { Type = "Reload", Item = v117 }
end
return { Type = "Swap", Item = v117 }
end
return nil
end }
end
tbl17.jM = function()
local jm = tbl17.cache.jM
if not jm then
jm = { c = fn35() }
tbl17.cache.jM = jm
end
return jm.c
end
end
do -- jN
local function fn35()
tbl17.cU()
tbl17.jx()
return function(arg)
local v115 = arg:FindMeleeByName("Riot Shield")
if v115 == nil then
return "None"
end
return v115:IsEquipped() and "Equipped" or "Unequipped"
end
end
tbl17.jN = function()
local jn = tbl17.cache.jN
if not jn then
jn = { c = fn35() }
tbl17.cache.jN = jn
end
return jn.c
end
end
do -- jO
local function fn35()
tbl17.cJ()
local v115 = tbl17.bG()
local v116 = tbl17.jz()
tbl17.cF()
local v117 = tbl17.jD()
tbl17.cU()
local v118 = tbl17.c4()
local v119 = tbl17.jE()
tbl17.gA()
tbl17.cX()
tbl17.bM()
local v120 = tbl17.jH()
local v121 = tbl17.jI()
local v122 = tbl17.cG()
local v123 = tbl17.jJ()
tbl17.g_()
local v124 = tbl17.jB()
local v125 = tbl17.jK()
local v126 = tbl17.k()
local v127 = tbl17.jL()
local v128 = tbl17.jM()
local v129 = tbl17.jN()
local fallenPartsDestroyHeight = workspace.FallenPartsDestroyHeight
local function fn36()
return { CFrame = v127.getImmune(), ShouldSkipDefense = true }
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3, arg4, arg5)
local ragebot = v126.new("ragebot")
local v130 = ragebot:Add(v123.new(arg))
local tbl18 = {
_trove = ragebot,
_enabled = false,
_lastTargetWorld = nil,
_lastDefensiveViewAngles = nil,
_playerContext = arg3,
_targetSelection = v124.new(arg, arg2),
_spatialLimitGate = v130,
_hitscanStrategy = v117.new(arg5),
_meleeStrategy = v119.new(arg5),
_projectileBreakerTeleport = ragebot:Add(v120.new(arg, arg3)),
_stateHook = arg4,
_reloadGun = nil,
_reloadReadyAt = nil,
_reloadAcknowledgementDeadline = nil,
_pendingDepletionAmmo = nil,
}
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
arg._trove:Add(arg._playerContext:ObserveContext("ragebot", function(innerContext)
if not flag2 then
return
end
arg._innerContext = innerContext
arg:_ClearReloadTransport()
end))
arg._trove:Connect(arg._playerContext.ContextRemoved, function()
arg:_Reset()
arg._innerContext = nil
end)
arg._trove:Add(v118:ObserveEnabledKeybind({ "Ragebot" }, function(arg2)
arg:SetEnabled(arg2)
arg:_Reset()
end))
end
index2.SetEnabled = function(arg, enabled)
if arg._enabled == enabled then
return
end
arg._enabled = enabled
v112(workspace, "FallenPartsDestroyHeight", enabled and (0/0) or fallenPartsDestroyHeight)
v107(v108, "DFIntS2PhysicsSenderRate", enabled and "120" or "15")
v107(v108, "DFIntAssemblyHistoryBufferSize", enabled and "2147483648" or "15")
v107(v108, "DFIntAssemblyHistorySkipSize", enabled and v86[18] or "8")
if not enabled then
arg:_ClearReloadTransport()
end
end
index2.Update = function(arg, arg2)
local innerContext = arg._innerContext
if innerContext == nil then
arg:_Reset()
return
end
local fighterState = innerContext.FighterState
if fighterState.EnvironmentId == nil or not arg._enabled then
arg:_Reset()
return
end
local state = fighterState.Character.State
if not state.Alive then
arg:_Reset()
return
end
local characterController = innerContext.CharacterController
local clientCFrame = characterController:GetClientCFrame()
local mode = v115.Data.Ragebot.Evasion.Mode
local v130 = v128.getAction(innerContext)
if mode == "Translocate" and arg._reloadGun == nil and (v130 == nil or v130.Type ~= "Reload") then
arg:_ApplyForcedCrouch(v86[153])
characterController:SetServerCFrame(v125.compute(clientCFrame, arg._targetSelection:HasTargets()))
return
end
local target = arg._targetSelection:GetTarget()
if target ~= nil then
arg._lastTargetWorld = target.AliveState.RootPart.Position
else
arg._lastTargetWorld = nil
end
local v131 = arg:_Plan(arg2, v130, target, state.RootPart, clientCFrame, mode)
arg:_ApplyPlan(v131, target, innerContext)
local reloadGun = arg._reloadGun
if reloadGun ~= nil and arg._reloadReadyAt == nil and arg._pendingDepletionAmmo == nil and not reloadGun:IsReloading() then
arg._reloadReadyAt = os.clock() + v122.getEstimatedReplicationDelay()
end
arg:_ApplyForcedCrouch(v131.ShouldForceCrouch == true)
local v132 = innerContext.ItemBehaviors:EquippedItemAsGun()
local ammo = v132 ~= nil and v132:GetAmmo() or 0
local shotRequestCount = v132 ~= nil and v132.ShotRequestCount or 0
local weaponAction = v131.WeaponAction
if weaponAction ~= nil then
weaponAction()
if v132 ~= nil and (v132 ~= nil and v132.ShotRequestCount - shotRequestCount or 0) > 0 and v132:GetExpectedAmmoAfterPendingShots() <= 0 then
innerContext.CharacterController:SetServerCFrame(v127.getImmune())
local now2 = os.clock()
arg._reloadGun = v132
arg._reloadReadyAt = now2 + v122.getEstimatedReplicationDelay()
arg._pendingDepletionAmmo = ammo
arg._reloadAcknowledgementDeadline = now2 + v122.getEstimatedRemoteDelay() + v122.getEstimatedReplicationDelay()
end
end
end
index2._Plan = function(arg, arg2, arg3, arg4, arg5, arg6, arg7)
local flag19 = arg4 ~= nil and not arg._spatialLimitGate:Tick(arg4)
local v130 = arg:_PlanReloadTransport(arg3)
if v130 ~= nil then
return v130
end
if arg3 == nil then
return arg:_EvadePlan(arg6, arg7)
end
if arg3.Type == "Swap" then
local item = arg3.Item
local v131 = arg:_EvadePlan(arg6, arg7)
v131.WeaponAction = function()
item:Equip()
end
return v131
end
if arg3.Type == "Reload" then
return fn36()
end
if arg4 == nil then
return arg:_EvadePlan(arg6, arg7)
end
local item = arg3.Item
if item.__type == "Gun" then
if item:IsReloading() then
return fn36()
end
local v131, v132 = arg._hitscanStrategy:Plan(arg2, arg4, item, arg5, flag19)
return { CFrame = v131, WeaponAction = v132, ShouldForceCrouch = true, IsAimPose = v132 ~= nil }
end
if item.__type == "Melee" then
local v131, v132, v133 = arg._meleeStrategy:Plan(arg2, arg4, item, arg5, flag19)
return {
CFrame = v131,
ViewAngles = v132,
WeaponAction = v133,
ShouldSkipDefense = v86[34],
ShouldForceCrouch = true,
}
end
return {}
end
index2._ClearReloadTransport = function(arg)
arg._reloadGun = nil
arg._reloadReadyAt = nil
arg._reloadAcknowledgementDeadline = nil
arg._pendingDepletionAmmo = nil
end
index2._PlanReloadTransport = function(arg, arg2)
local reloadGun = arg._reloadGun
local now2 = os.clock()
if reloadGun ~= nil then
if (arg._innerContext ~= nil and arg._innerContext.ItemBehaviors:EquippedItemAsGun() or nil) ~= reloadGun or arg2 ~= nil and (arg2.Type == "Swap" or arg2.Type == "Attack") and arg2.Item ~= reloadGun then
arg:_ClearReloadTransport()
return nil
end
if reloadGun:IsReloading() then
arg._reloadReadyAt = nil
arg._pendingDepletionAmmo = nil
arg._reloadAcknowledgementDeadline = nil
return fn36()
end
local ammo = reloadGun:GetAmmo()
if arg._pendingDepletionAmmo ~= nil then
local reloadAcknowledgementDeadline = arg._reloadAcknowledgementDeadline
if not (ammo <= 0 and reloadGun:GetAmmoReserve() > 0) then
local flag19 = reloadAcknowledgementDeadline == nil or now2 >= reloadAcknowledgementDeadline
if not flag19 then
local v130 = v86[186]
flag19 = reloadGun:GetExpectedAmmoAfterPendingShots() > v130
end
if flag19 then
arg:_ClearReloadTransport()
return nil
end
return fn36()
end
arg._pendingDepletionAmmo = nil
arg._reloadAcknowledgementDeadline = nil
end
if ammo > 0 or reloadGun:GetAmmoReserve() <= 0 then
arg:_ClearReloadTransport()
return nil
end
local reloadReadyAt = arg._reloadReadyAt
if reloadReadyAt == nil then
reloadReadyAt = now2 + v122.getEstimatedReplicationDelay()
arg._reloadReadyAt = reloadReadyAt
end
local v130 = fn36()
local reloadAcknowledgementDeadline = arg._reloadAcknowledgementDeadline
if now2 >= reloadReadyAt and (reloadAcknowledgementDeadline == nil or now2 >= reloadAcknowledgementDeadline) then
v130.WeaponAction = function()
if reloadGun:Reload() then
arg._reloadAcknowledgementDeadline = os.clock() + v122.getEstimatedRemoteDelay() + v122.getEstimatedReplicationDelay()
end
end
end
return v130
end
if arg2 == nil or arg2.Type ~= "Reload" then
return nil
end
arg._reloadGun = arg2.Item
arg._reloadReadyAt = nil
arg._reloadAcknowledgementDeadline = nil
arg._pendingDepletionAmmo = nil
return fn36()
end
index2._EvadePlan = function(arg, arg2, arg3)
if arg3 == "Off" then
return {}
end
if arg3 == "ProjectileBreaker" then
return { CFrame = arg._projectileBreakerTeleport:Compute(arg2), ShouldSkipDefense = v86[34] }
end
return { CFrame = v121.compute(arg2) }
end
index2._ApplyPlan = function(arg, arg2, arg3, arg4)
local characterController = arg4.CharacterController
local cFrame = arg2.CFrame
if cFrame == nil or arg3 == nil or arg2.ShouldSkipDefense then
characterController:SetServerCFrame(cFrame)
characterController:SendViewAngles(20, arg2.ViewAngles)
return
end
local aliveState = arg3.AliveState
local v130 = v129(arg4.ItemBehaviors)
local v131 = v116.getDefensiveCFrame(cFrame, v130, arg3.FighterState, aliveState.RootPart)
characterController:SetServerCFrame(v131)
if arg2.IsAimPose or arg2.ShouldDefendInPlace then
arg._lastDefensiveViewAngles = v116.getDefensiveViewAngles(v130, arg3.FighterState)
end
characterController:SendViewAngles(v86[9], arg2.ViewAngles or arg._lastDefensiveViewAngles)
end
index2.GetLastTargetWorld = function(arg)
return arg._lastTargetWorld
end
index2._ApplyForcedCrouch = function(arg, arg2)
if arg2 then
arg._stateHook:SetForced("IsCrouching", true)
else
arg._stateHook:ClearForced("IsCrouching")
end
end
index2._Reset = function(arg)
arg:_ClearReloadTransport()
arg._lastTargetWorld = nil
arg._lastDefensiveViewAngles = nil
arg:_ApplyForcedCrouch(false)
arg._meleeStrategy:ResetState()
arg._projectileBreakerTeleport:ResetState()
local innerContext = arg._innerContext
if innerContext == nil then
return
end
innerContext.CharacterController:SetServerCFrame(nil)
innerContext.CharacterController:SendViewAngles(20, nil)
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jO = function()
local jo = tbl17.cache.jO
if not jo then
jo = { c = fn35() }
tbl17.cache.jO = jo
end
return jo.c
end
end
do -- jP
local function fn35()
local v115 = tbl17.f()
tbl17.a()
local index2 = {}
index2.__index = index2
index2.new = function(arg)
return setmetatable({
_manager = v115.new({
DefaultConfig = nil,
CurrentVersion = arg.CurrentVersion,
LegacyVersion = arg.LegacyVersion,
SavePath = arg.SavePath,
Migrations = arg.Migrations,
Serialize = arg.Serialize,
Deserialize = arg.Deserialize,
}),
}, index2)
end
index2.Save = function(arg, arg2, arg3, arg4)
arg._manager:SetData(arg3)
return arg._manager:SaveToFile(arg2, arg4)
end
index2.Load = function(arg, arg2)
return arg._manager:LoadFromFile(arg2)
end
index2.Delete = function(arg, arg2)
return arg._manager:Delete(arg2)
end
index2.List = function(arg)
return arg._manager:AllConfigs()
end
index2.Has = function(arg, arg2)
return table.find(arg:List(), arg2) ~= nil
end
return index2
end
tbl17.jP = function()
local jp = tbl17.cache.jP
if not jp then
local jp2 = { c = fn35() }
tbl17.cache.jP = jp2
jp = jp2
end
return jp.c
end
end
do -- jQ
local function fn35()
local tbl18 = {}
local v115 = buffer.create(v86[83])
local v116 = buffer.create(256)
for i = v86[186], 63 do
local v117 = ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"):byte(i + 1)
buffer.writeu8(v115, i, v117)
buffer.writeu8(v116, v117, i)
end
local v117 = buffer.create(8192)
local v118 = buffer.create(131072)
for i = v86[186], 63 do
local v119 = buffer.readu8(v115, i)
for i2 = 0, 63 do
local v120 = buffer.readu8(v115, i2)
buffer.writeu16(v117, (i * 64 + i2) * 2, v119 + v120 * 256)
buffer.writeu16(v118, (v119 + v120 * 256) * v86[56], i * v86[83] + i2)
end
end
tbl18.encode = function(I)local W=#I;if W==0 then return"";end;local N,P=buffer.fromstring(I),math.floor((W+2)/3);I=P*4;local a=buffer.create(I);for e=0,P-2,1 do local c=bit32.rshift(bit32.byteswap(buffer.readu32(N,e*3)),8);buffer.writeu16(a,e*4,buffer.readu16( v117 ,bit32.rshift(c,12)*2));buffer.writeu16(a,e*4+2,buffer.readu16( v117 ,bit32.band(c,4095)*2));end;local e,c=W%3,I-4;if e==1 then P=buffer.readu8(N,W-1);buffer.writeu16(a,c,buffer.readu16( v117 ,bit32.lshift(P,4)*2));buffer.writeu16(a,c+2,15677);elseif e==2 then local P_181,e_182=buffer.readu8(N,W-2),buffer.readu8(N,W-1);I=bit32.bor(bit32.lshift(P_181,4),bit32.rshift(e_182,4));buffer.writeu16(a,c,buffer.readu16( v117 ,I*2));buffer.writeu8(a,c+2,buffer.readu8( v115 ,bit32.band(bit32.lshift(e_182,2),63)));buffer.writeu8(a,c+3,61);else local I_183=bit32.bor(bit32.lshift(buffer.readu8(N,W-3),16),bit32.lshift(buffer.readu8(N,W-2),8),buffer.readu8(N,W-1));buffer.writeu16(a,c,buffer.readu16( v117 ,bit32.rshift(I_183,12)*2));buffer.writeu16(a,c+2,buffer.readu16( v117 ,bit32.band(I_183,4095)*2));end;return buffer.tostring(a);end
tbl18.decode = function(I)local W=#I;if W==0 then return"";end;local N,P=buffer.fromstring(I),math.floor(W/4);I=if buffer.readu8(N,W-1)==61 then 1 else 0;I=if buffer.readu8(N,W-2)==61 then I+1 else I;W=P*3-I;local a=buffer.create(W);for e=0,P-2,1 do local c=e*4;local E,p=buffer.readu16( v118 ,buffer.readu16(N,c)*2),buffer.readu16( v118 ,buffer.readu16(N,c+2)*2);W=bit32.lshift(E,12)+p;buffer.writeu8(a,e*3,bit32.rshift(W,16));buffer.writeu8(a,e*3+1,bit32.band(bit32.rshift(W,8),255));buffer.writeu8(a,e*3+2,bit32.band(W,255));end;local W_184=(P-1)*4;local e=(P-1)*3;P=bit32.bor(bit32.lshift(buffer.readu8( v116 ,buffer.readu8(N,W_184)),18),bit32.lshift(buffer.readu8( v116 ,buffer.readu8(N,W_184+1)),12),bit32.lshift(buffer.readu8( v116 ,buffer.readu8(N,W_184+2)),6),buffer.readu8( v116 ,buffer.readu8(N,W_184+3)));buffer.writeu8(a,e,bit32.rshift(P,16));if I<=1 then buffer.writeu8(a,e+1,bit32.band(bit32.rshift(P,8),255));if I==0 then buffer.writeu8(a,e+2,bit32.band(P,255));end;end;return buffer.tostring(a);end
return tbl18
end
tbl17.jQ = function()
local jq = tbl17.cache.jQ
if not jq then
local jq2 = { c = fn35() }
tbl17.cache.jQ = jq2
jq = jq2
end
return jq.c
end
end
do -- jR
local function fn35()
local v115 = tbl17.jQ()
tbl17.hM()
local tbl18 = {}
local tbl19 = {
Move = 1,
Jump = 2,
Crouch = 3,
Slide = 4,
Look = 5,
ItemInput = 6,
QuickAttack = v86[122],
Equip = 8,
}
local tbl20 = {}
for k, v116 in tbl19, nil, nil do
tbl20[v116] = k
end
local function fn36(arg, arg2)
local v116 = buffer.len(arg.Buf)
local n = arg.Len + arg2
if n <= v116 then
return
end
while v116 < n do
v116 *= 2
end
local v117 = buffer.create(v116)
buffer.copy(v117, v86[186], arg.Buf, v86[186], arg.Len)
arg.Buf = v117
end
local function fn37(arg, arg2)
fn36(arg, 1)
buffer.writeu8(arg.Buf, arg.Len, arg2)
arg.Len = arg.Len + 1
end
local function fn38(arg, arg2)
fn36(arg, v86[56])
buffer.writeu16(arg.Buf, arg.Len, arg2)
arg.Len = arg.Len + 2
end
local function fn39(arg, arg2)
fn36(arg, 4)
buffer.writeu32(arg.Buf, arg.Len, arg2)
arg.Len = arg.Len + v86[26]
end
local function fn40(arg, arg2)
fn36(arg, 4)
buffer.writef32(arg.Buf, arg.Len, arg2)
arg.Len = arg.Len + 4
end
local function fn41(arg, arg2)
local n = #arg2
fn38(arg, n)
fn36(arg, n)
buffer.writestring(arg.Buf, arg.Len, arg2)
arg.Len = arg.Len + n
end
local function fn42(arg, arg2)
fn40(arg, arg2.X)
fn40(arg, arg2.Y)
fn40(arg, arg2.Z)
end
local function fn43(arg, arg2)
local tbl21 = { arg2:GetComponents() }
for i = v86[63], v86[12] do
fn40(arg, tbl21[i])
end
end
local function fn44(arg, arg2)
fn37(arg, tbl19[arg2.Kind])
if arg2.Kind == "Move" then
fn42(arg, arg2.Direction)
elseif arg2.Kind == "Crouch" then
fn37(arg, arg2.Crouching and v86[63] or 0)
elseif arg2.Kind == "Look" then
fn43(arg, arg2.CFrame)
elseif arg2.Kind == "ItemInput" then
fn41(arg, arg2.InputType)
elseif arg2.Kind == "QuickAttack" then
fn41(arg, arg2.AttackType)
elseif arg2.Kind == "Equip" then
fn39(arg, arg2.Index)
end
end
local function fn45(arg)
local v116 = buffer.readu8(arg.Buf, arg.Off)
arg.Off = arg.Off + v86[63]
return v116
end
local function fn46(arg)
local v116 = buffer.readu16(arg.Buf, arg.Off)
arg.Off = arg.Off + 2
return v116
end
local function fn47(arg)
local v116 = buffer.readu32(arg.Buf, arg.Off)
arg.Off = arg.Off + 4
return v116
end
local function fn48(arg)
local v116 = buffer.readf32(arg.Buf, arg.Off)
arg.Off = arg.Off + 4
return v116
end
local function fn49(arg)
local v116 = fn46(arg)
local v117 = buffer.readstring(arg.Buf, arg.Off, v116)
arg.Off = arg.Off + v116
return v117
end
local function fn50(arg)
return Vector3.new(fn48(arg), fn48(arg), fn48(arg))
end
local function fn51(arg)
local v116 = table.create(12)
for i = 1, 12 do
v116[i] = fn48(arg)
end
return CFrame.new(table.unpack(v116))
end
local function fn52(arg)
local v116 = tbl20[fn45(arg)]
if v116 == "Move" then
return { Kind = "Move", Direction = fn50(arg) }
end
if v116 == "Crouch" then
return { Kind = "Crouch", Crouching = fn45(arg) == 1 }
end
if v116 == "Look" then
return { Kind = "Look", CFrame = fn51(arg) }
end
if v116 == "ItemInput" then
return { Kind = "ItemInput", InputType = fn49(arg) }
end
if v116 == "QuickAttack" then
return { Kind = "QuickAttack", AttackType = fn49(arg) }
end
if v116 == "Equip" then
return { Kind = "Equip", Index = fn47(arg) }
end
if v116 == "Jump" then
return { Kind = "Jump" }
end
return { Kind = "Slide" }
end
tbl18.encode = function(arg)
local tbl21 = { Buf = buffer.create(1024), Len = 0 }
fn37(tbl21, 1)
fn41(tbl21, arg.MapName)
fn43(tbl21, arg.StartCFrame)
fn42(tbl21, arg.DisplayPosition)
local startEquippedIndex = arg.StartEquippedIndex
if startEquippedIndex ~= nil then
fn37(tbl21, v86[63])
fn39(tbl21, startEquippedIndex)
else
fn37(tbl21, 0)
end
local startEquipCooldown = arg.StartEquipCooldown
if startEquipCooldown ~= nil then
fn37(tbl21, 1)
fn40(tbl21, startEquipCooldown)
else
fn37(tbl21, 0)
end
local n = 0
for k in arg.LoadoutRequirementSet, nil, nil do
n += 1
end
fn39(tbl21, n)
for k in arg.LoadoutRequirementSet, nil, nil do
fn41(tbl21, k)
end
local keypoints = arg.Keypoints
fn39(tbl21, #keypoints)
for _, v116 in keypoints, nil, nil do
fn40(tbl21, v116.Offset)
fn44(tbl21, v116.Action)
end
local positions = arg.Positions
fn39(tbl21, #positions)
for _, v116 in positions, nil, nil do
fn40(tbl21, v116.Offset)
fn42(tbl21, v116.Position)
end
local v116 = buffer.create(tbl21.Len)
buffer.copy(v116, v86[186], tbl21.Buf, v86[186], tbl21.Len)
return v115.encode(buffer.tostring(v116))
end
tbl18.decode = function(arg)
local tbl21 = { Buf = buffer.fromstring(v115.decode(arg)), Off = 0 }
local v116 = fn45(tbl21)
assert(v116 == 1, string.format("unsupported recording format version %s", tostring(v116)))
local v117 = fn49(tbl21)
local v118 = fn51(tbl21)
local v119 = fn50(tbl21)
local v120 = nil
if fn45(tbl21) == 1 then
v120 = fn47(tbl21)
end
local v121 = nil
if fn45(tbl21) == 1 then
v121 = fn48(tbl21)
end
local tbl22 = {}
for i = 1, fn47(tbl21) do
local v122 = v86[34]
tbl22[fn49(tbl21)] = v122
end
local v122 = fn47(tbl21)
local v123 = table.create(v122)
for i = 1, v122 do
v123[i] = { Offset = fn48(tbl21), Action = fn52(tbl21) }
end
local v124 = fn47(tbl21)
local v125 = table.create(v124)
for i = 1, v124 do
v125[i] = { Offset = fn48(tbl21), Position = fn50(tbl21) }
end
return {
MapName = v117,
StartCFrame = v118,
DisplayPosition = v119,
StartEquippedIndex = v120,
StartEquipCooldown = v121,
LoadoutRequirementSet = tbl22,
Keypoints = v123,
Positions = v125,
}
end
return tbl18
end
tbl17.jR = function()
local jr = tbl17.cache.jR
if not jr then
jr = { c = fn35() }
tbl17.cache.jR = jr
end
return jr.c
end
end
do -- jS
local function fn35()
local v115 = tbl17.jP()
local v116 = tbl17.jR()
local v117 = tbl17.a()
local v118 = tbl17.g()
tbl17.hM()
local v119 = tbl17.k()
local index2 = {}
index2.__index = index2
index2.new = function()
local v120 = v119.new()
local tbl18 = {
_trove = v120,
_store = v115.new({
SavePath = "kiciarebuild/rivals/movement_recorder",
CurrentVersion = 1,
Serialize = v116.encode,
Deserialize = v116.decode,
}),
_recordingNamesByMap = {},
_recordingByName = {},
Reloaded = v120:Add(v118.new()),
}
setmetatable(tbl18, index2)
tbl18:Reload()
return tbl18
end
index2.Reload = function(arg)
local recordingByName = arg._recordingByName
table.clear(recordingByName)
table.clear(arg._recordingNamesByMap)
for _, v120 in arg._store:List(), nil, nil do
local v121 = arg._store:Load(v120)
if v121.Ok then
local value = v121.Value
value.Name = v120
recordingByName[v120] = value
table.insert(arg:_GetOrCreateNamesForMap(value.MapName), v120)
end
end
arg.Reloaded:Fire()
end
index2._GetOrCreateNamesForMap = function(arg, arg2)
local tbl18 = arg._recordingNamesByMap[arg2]
if tbl18 == nil then
tbl18 = {}
arg._recordingNamesByMap[arg2] = tbl18
end
return tbl18
end
index2.Save = function(arg, name, arg2)
local v120 = arg._store:Save(name, arg2)
if not v120.Ok then
return v117.err("RecordedMovements", "Save", v120.Error.Detail)
end
local v121 = arg._recordingByName[name]
if v121 == nil or v121.MapName ~= arg2.MapName then
if v121 ~= nil then
local v122 = arg._recordingNamesByMap[v121.MapName]
table.remove(v122, table.find(v122, name))
if #v122 == 0 then
arg._recordingNamesByMap[v121.MapName] = nil
end
end
table.insert(arg:_GetOrCreateNamesForMap(arg2.MapName), name)
end
arg2.Name = name
arg._recordingByName[name] = arg2
arg.Reloaded:Fire()
return v117.VoidOk
end
index2.FindByName = function(arg, arg2)
return arg._recordingByName[arg2]
end
index2.GetMaps = function(arg)
local tbl18 = {}
for k in arg._recordingNamesByMap, nil, nil do
table.insert(tbl18, k)
end
table.sort(tbl18)
return tbl18
end
index2.GetNamesForMap = function(arg, arg2)
local v120 = arg._recordingNamesByMap[arg2]
if v120 == nil then
return {}
end
local v121 = table.clone(v120)
table.sort(v121)
return v121
end
index2.FindByMap = function(arg, arg2)
local v120 = arg._recordingNamesByMap[arg2]
if v120 == nil then
return nil
end
local v121 = table.create(#v120)
for _, v122 in v120, nil, nil do
table.insert(v121, arg._recordingByName[v122])
end
return v121
end
index2.Delete = function(arg, arg2)
local v120 = arg._store:Delete(arg2)
if not v120.Ok then
return v117.err("RecordedMovements", "Delete", v120.Error.Detail)
end
local v121 = arg._recordingByName[arg2]
if v121 ~= nil then
arg._recordingByName[arg2] = nil
local v122 = arg:_GetOrCreateNamesForMap(v121.MapName)
table.remove(v122, table.find(v122, arg2))
if #v122 == 0 then
arg._recordingNamesByMap[v121.MapName] = nil
end
arg.Reloaded:Fire()
end
return v117.VoidOk
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jS = function()
local js = tbl17.cache.jS
if not js then
js = { c = fn35() }
tbl17.cache.jS = js
end
return js.c
end
end
do -- jT
local function fn35()
local v115 = tbl17.ad()
tbl17.aM()
tbl17.aO()
local v116 = tbl17.a()
local v117 = tbl17.b2()
local quickAttackFunction = tbl17.aS().QuickAttackFunction
local v118 = cloneref(game:GetService("ReplicatedStorage"))
local index2 = {}
index2.__index = index2
local function fn36(arg)
return {
Remotes = {
Replication = {
Fighter = {
RegisterQuickAttack = { InvokeServer = function(arg2, arg3, ...)
arg(arg3)
local v119 = quickAttackFunction
local invokeServer = v119.InvokeServer
local v120 = table.pack(...)
v120.n = 3 + v120.n - 1
table.move(v120, 1, v120.n, 3, v120)
v120[1] = v119
v120[2] = arg3
return invokeServer(table.unpack(v120, 1, v120.n))
end },
},
},
},
}
end
index2.new = function(arg, arg2)
local tbl18 = { _errorReporter = v115.new(), _restore = nil }
setmetatable(tbl18, index2)
tbl18._errorReporter:ReportResult(tbl18:_Install(arg, arg2))
return tbl18
end
index2._Install = function(arg, arg2, arg3)
for _, v119 in debug.getupvalues(arg2.QuickAttack) do
if type(v119) ~= "table" then
continue
end
for k, v120 in v119, nil, nil do
if typeof(v120) ~= "Instance" or not v117(v120, v118) then
continue
end
arg._restore = { Bundle = v119, Key = k, Original = v120 }
v119[k] = fn36(arg3)
return v116.VoidOk
end
end
return v116.err("QuickAttackHook", "upvalue_scan", "Failed to find ReplicatedStorage upvalue")
end
index2.Destroy = function(arg)
local restore = arg._restore
if restore ~= nil then
arg._restore = nil
restore.Bundle[restore.Key] = restore.Original
end
arg._errorReporter:Destroy()
end
return index2
end
tbl17.jT = function()
local jt = tbl17.cache.jT
if not jt then
local jt2 = { c = fn35() }
tbl17.cache.jT = jt2
jt = jt2
end
return jt.c
end
end
do -- jU
local function fn35()
local v115 = tbl17.cp()
tbl17.cr()
tbl17.aM()
tbl17.dm()
tbl17.cU()
tbl17.aO()
local v116 = tbl17.jT()
tbl17.hM()
local v117 = tbl17.b3()
local inputLibrary = tbl17.aS().InputLibrary
local mechanicsController = tbl17.aS().MechanicsController
local playerModule = tbl17.aS().PlayerModule
local v118 = cloneref(game:GetService("UserInputService"))
local function fn36()
local v119 = v117(playerModule.GetControls, playerModule)
return v117(v119.GetMoveVector, v119)
end
local function fn37()
local currentCamera = workspace.CurrentCamera
local n = currentCamera.ViewportSize / v86[56]
local v119 = currentCamera:ViewportPointToRay(n.X, n.Y)
return v119.Origin + v119.Direction * 100
end
local function fn38(arg, arg2)
return arg * CFrame.fromOrientation(arg2.X, arg2.Y, 0)
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3, arg4, arg5, arg6)
local v119 = arg2:Inverse()
local v120 = v115.get()
local equipped = arg5:GetEquipped()
local index3 = equipped and equipped.Index
local n = nil
if equipped ~= nil then
local v121 = v102(equipped.Inner, "_equip_cooldown")
n = nil
if type(v121) == "number" then
n = math.max(v86[186], v121 - tick())
end
end
local tbl18 = {
_anchorInverse = v119,
_rootPart = arg3.RootPart,
_itemBehaviors = arg5,
_inputBinding = arg6,
_quickAttackHook = nil,
_jumpConnection = nil,
_lastMoveVector = Vector3.zero,
_lastCameraRotation = v120,
_lastEquippedIndex = index3,
_startItemIndex = index3,
_startItemUsed = false,
_lastCrouching = false,
_lastSliding = false,
_lastPositionSampleTime = 0,
_recording = {
MapName = arg,
DisplayPosition = v119 * fn37(),
StartCFrame = v119 * arg3.RootPart.CFrame,
Keypoints = { { Offset = 0, Action = { Kind = "Look", CFrame = fn38(v119, v120) } } },
LoadoutRequirementSet = {},
StartEquippedIndex = index3,
StartEquipCooldown = n,
Positions = {},
},
}
setmetatable(tbl18, index2)
tbl18._quickAttackHook = v116.new(arg4, function(arg7)
tbl18:_Record({ Kind = "QuickAttack", AttackType = arg7 })
end)
tbl18._jumpConnection = v118.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed and v117(inputLibrary.InputIs, inputLibrary, input, "Jump") then
tbl18:_Record({ Kind = "Jump" })
end
end)
arg6:SetHandler(function(arg7)
tbl18:_RecordItemInput(arg7)
end)
arg6:SetEnabled(true)
return tbl18
end
index2.Update = function(arg)
arg:_SampleMoveVector()
arg:_SampleCamera()
arg:_SampleEquipped()
arg:_SampleCrouch()
arg:_SampleSlide()
arg:_SamplePosition()
end
index2._SamplePosition = function(arg)
if arg._startTime == nil then
return
end
local now2 = os.clock()
if now2 - arg._lastPositionSampleTime < 0.1 then
return
end
arg._lastPositionSampleTime = now2
table.insert(arg._recording.Positions, { Offset = arg:_GetOffset(), Position = arg._anchorInverse * arg._rootPart.Position })
end
index2._SampleMoveVector = function(arg)
local v119 = fn36()
if v119 == arg._lastMoveVector then
return
end
arg._lastMoveVector = v119
arg:_Record({ Kind = "Move", Direction = v119 })
end
index2._SampleCrouch = function(arg)
local lastCrouching = v102(mechanicsController, "IsCrouching") == true
if lastCrouching == arg._lastCrouching then
return
end
arg._lastCrouching = lastCrouching
arg:_Record({ Kind = "Crouch", Crouching = lastCrouching })
end
index2._SampleSlide = function(arg)
local lastSliding = v102(mechanicsController, "IsSliding") == true
if lastSliding == arg._lastSliding then
return
end
arg._lastSliding = lastSliding
if lastSliding then
arg:_Record({ Kind = "Slide" })
end
end
index2._DiscardUnusedStartItem = function(arg)
if not (arg._startItemUsed or arg._recording.StartEquippedIndex == nil) then
arg._recording.StartEquippedIndex = nil
arg._recording.StartEquipCooldown = nil
return
end
if true then
return
end
-- (anti-tamper freeze trap removed)
end
index2._SampleEquipped = function(arg)
local equipped = arg._itemBehaviors:GetEquipped()
equipped = equipped and equipped.Index
if equipped == arg._lastEquippedIndex then
return
end
arg._lastEquippedIndex = equipped
arg:_DiscardUnusedStartItem()
if equipped ~= nil then
arg:_Record({ Kind = "Equip", Index = equipped })
end
end
index2._RecordItemInput = function(arg, arg2)
local v119 = arg._itemBehaviors:FindByObjectId(arg2.ObjectId)
if v119 ~= nil then
arg._recording.LoadoutRequirementSet[v119.Name] = true
if v119.Index == arg._startItemIndex then
arg._startItemUsed = v86[34]
end
end
arg:_Record({ Kind = "ItemInput", InputType = arg2.Type })
end
index2._SampleCamera = function(arg)
local v119 = v115.get()
if arg._lastCameraRotation:FuzzyEq(v119) then
return
end
arg._lastCameraRotation = v119
arg:_Record({ Kind = "Look", CFrame = fn38(arg._anchorInverse, v119) })
end
index2._GetOffset = function(arg)
local now2 = os.clock()
local startTime = arg._startTime or now2
arg._startTime = startTime
return now2 - startTime
end
index2._Record = function(arg, arg2)
table.insert(arg._recording.Keypoints, { Offset = arg:_GetOffset(), Action = arg2 })
end
index2.GetRecording = function(arg)
arg:_DiscardUnusedStartItem()
return arg._recording
end
index2.Destroy = function(arg)
arg._inputBinding:Destroy()
arg._quickAttackHook:Destroy()
arg._jumpConnection:Disconnect()
end
return index2
end
tbl17.jU = function()
local ju = tbl17.cache.jU
if not ju then
local ju2 = { c = fn35() }
tbl17.cache.jU = ju2
ju = ju2
end
return ju.c
end
end
do -- jV
local function fn35()
local v115 = tbl17.b3()
local playerModule = tbl17.aS().PlayerModule
local index2 = {}
index2.__index = index2
index2.new = function()
local v116 = v102(v115(playerModule.GetControls, playerModule), "activeController")
assert(v116 ~= nil, "no active controller to hook")
local tbl18 = { _controller = v116, _moveVector = Vector3.zero }
setmetatable(tbl18, index2)
tbl18:_Initialize()
return tbl18
end
index2._Initialize = function(arg)
v103(arg._controller, "GetMoveVector", function()
return arg._moveVector
end)
end
index2.SetMoveVector = function(arg, moveVector)
arg._moveVector = moveVector
end
index2.Destroy = function(arg)
v103(arg._controller, "GetMoveVector", nil)
end
return index2
end
tbl17.jV = function()
local jv = tbl17.cache.jV
if not jv then
local jv2 = { c = fn35() }
tbl17.cache.jV = jv2
jv = jv2
end
return jv.c
end
end
do -- jW
local function fn35()
local v115 = tbl17.co()
local v116 = tbl17.cp()
tbl17.cr()
local v117 = tbl17.bG()
tbl17.aM()
tbl17.cU()
tbl17.aO()
local v118 = tbl17.jV()
tbl17.hM()
local v119 = tbl17.b3()
local mechanicsController = tbl17.aS().MechanicsController
local index2 = {}
index2.__index = index2
local function fn36(arg)
local cFrame = workspace.CurrentCamera.CFrame
local vector = Vector3.new(cFrame.LookVector.X, 0, cFrame.LookVector.Z)
if vector.Magnitude < 0.0001 then
return Vector3.zero
end
local unit = vector.Unit
local v120 = v86[186]
return Vector3.new(arg:Dot(Vector3.new(cFrame.RightVector.X, 0, cFrame.RightVector.Z).Unit), v120, -arg:Dot(unit))
end
local function fn37(arg, arg2, arg3)
return Vector2.new(arg.X + (arg2.X - arg.X) * arg3, arg.Y + ((arg2.Y - arg.Y + 3.1415926535897931) % math.tau - 3.1415926535897931) * arg3)
end
local function fn38(arg, arg2, arg3, arg4)
local vector2 = Vector2.new(arg2.X - arg.X, (arg2.Y - arg.Y + 3.1415926535897931) % math.tau - 3.1415926535897931)
local magnitude = vector2.Magnitude
if magnitude <= 0.0017453292519943296 then
return arg2, true
end
return arg + vector2.Unit * math.min(magnitude * arg3, arg4), false
end
local function fn39(arg, arg2)
return 1 - math.exp(-arg / arg2)
end
local function fn40(arg)
return fn39(arg, v117.Data.Movement.MovementRecorder.LookSmoothing / 100 * 0.3)
end
local function fn41(arg, arg2)
for _, v120 in arg2, nil, nil do
local action = v120.Action
if action.Kind == "Look" then
local v121, v122 = (arg * action.CFrame):ToOrientation()
return Vector2.new(v121, v122)
end
end
return nil
end
index2.new = function(arg, arg2, arg3, arg4, arg5, arg6, arg7)
v115.claim("MovementRecorder.Replay", v86[91])
local startEquippedIndex = arg5.StartEquippedIndex
if startEquippedIndex ~= nil then
task.spawn(v119, arg2.EquipItem, arg2, startEquippedIndex)
end
return setmetatable({
_aliveState = arg,
_clientFighter = arg2,
_itemBehaviors = arg3,
_startEquippedIndex = startEquippedIndex,
_mapAnchor = arg4,
_startCFrame = arg5.StartCFrame,
_keypoints = arg5.Keypoints,
_positions = arg5.Positions,
_positionIndex = v86[63],
_finishedCallback = arg7,
_moveHook = v118.new(),
_isRoundActive = arg6,
_startLookRotation = fn41(arg4, arg5.Keypoints),
_lookRotation = nil,
_state = { Kind = "Aligning", Elapsed = 0, StuckTime = 0, BestDistance = math.huge },
_finished = false,
}, index2)
end
index2._StepAlign = function(arg, arg2, arg3)
local startLookRotation = arg._startLookRotation
local flag19 = true
if startLookRotation ~= nil then
local v120 = v116.get()
local n = math.rad(v117.Data.Movement.MovementRecorder.LookAlignSpeed) * arg3
local v121
v121, flag19 = fn38(v120, startLookRotation, fn40(arg3), n)
v116.set(v121)
end
if not arg._isRoundActive() then
arg._moveHook:SetMoveVector(Vector3.zero)
return false
end
arg2.Elapsed = arg2.Elapsed + arg3
local n = (arg._mapAnchor * arg._startCFrame).Position - arg._aliveState.RootPart.Position
local vector = Vector3.new(n.X, 0, n.Z)
local magnitude = vector.Magnitude
local flag20 = magnitude <= v117.Data.Movement.MovementRecorder.AlignSnapDistance
if flag20 then
arg._moveHook:SetMoveVector(Vector3.zero)
else
arg._moveHook:SetMoveVector(fn36(vector.Unit))
end
if magnitude < arg2.BestDistance - v86[62] then
arg2.BestDistance = magnitude
arg2.StuckTime = v86[186]
else
arg2.StuckTime = arg2.StuckTime + arg3
end
if not (flag20 and flag19 or arg2.StuckTime >= v86[63]) then
return false
end
arg._moveHook:SetMoveVector(Vector3.zero)
return arg:_IsStartItemReady() or arg2.Elapsed >= 3
end
index2._IsStartItemReady = function(arg)
if arg._startEquippedIndex == nil then
return v86[34]
end
local equipped = arg._itemBehaviors:GetEquipped()
if equipped == nil or equipped.Index ~= arg._startEquippedIndex then
return v86[153]
end
local v120 = v102(equipped.Inner, "_equip_cooldown")
return type(v120) ~= "number" or tick() >= v120
end
index2.Update = function(arg, arg2)
local state = arg._state
if state.Kind == "Aligning" then
if not arg:_StepAlign(state, arg2) then
return
end
arg._state = { Kind = "Playing", Offset = v86[186], KeypointIndex = 1 }
end
local state2 = arg._state
if state2.Kind ~= "Playing" then
return
end
state2.Offset = state2.Offset + arg2
if arg:_HasDiverged(state2.Offset) then
arg._finished = v86[34]
arg._finishedCallback("Diverged")
return
end
local keypoints = arg._keypoints
while state2.KeypointIndex <= #keypoints do
local v120 = keypoints[state2.KeypointIndex]
if not (state2.Offset < v120.Offset) then
local action = v120.Action
if action.Kind == "Move" then
arg._moveHook:SetMoveVector(action.Direction)
elseif action.Kind == "Look" then
local v121, v122 = (arg._mapAnchor * action.CFrame):ToOrientation()
arg._lookRotation = Vector2.new(v121, v122)
elseif action.Kind == "Equip" then
task.spawn(v119, arg._clientFighter.EquipItem, arg._clientFighter, action.Index)
elseif action.Kind == "ItemInput" then
task.spawn(v119, arg._clientFighter.Input, arg._clientFighter, action.InputType)
elseif action.Kind == "QuickAttack" then
task.spawn(v119, arg._clientFighter.QuickAttack, arg._clientFighter, action.AttackType)
elseif action.Kind == "Jump" then
if v102(mechanicsController, "IsSliding") == true then
v119(mechanicsController.HighJump, mechanicsController)
else
v119(mechanicsController.DoubleJumpRequest, mechanicsController)
v119(mechanicsController.JumpRequest, mechanicsController)
end
elseif action.Kind == "Crouch" then
v119(mechanicsController.SetCrouching, mechanicsController, action.Crouching)
elseif action.Kind == "Slide" then
task.spawn(v119, mechanicsController.Slide, mechanicsController)
end
state2.KeypointIndex = state2.KeypointIndex + 1
continue
end
break
end
if arg._lookRotation ~= nil then
local lookRotation = arg._lookRotation
v116.set(fn37(v116.get(), lookRotation, fn40(arg2)))
end
if not arg._finished and state2.KeypointIndex > #keypoints then
arg._finished = true
arg._finishedCallback("Completed")
end
end
index2._HasDiverged = function(arg, arg2)
local positions = arg._positions
if #positions == 0 then
return false
end
while arg._positionIndex < #positions and positions[arg._positionIndex + v86[63]].Offset <= arg2 do
arg._positionIndex = arg._positionIndex + v86[63]
end
local v120 = positions[arg._positionIndex]
local v121 = positions[arg._positionIndex + 1]
local position
if v121 == nil then
position = v120.Position
else
local n = v121.Offset - v120.Offset
position = v120.Position:Lerp(v121.Position, n > 0 and math.clamp((arg2 - v120.Offset) / n, v86[186], 1) or 0)
end
return (arg._mapAnchor:PointToWorldSpace(position) - arg._aliveState.RootPart.Position).Magnitude > 15
end
index2.Destroy = function(arg)
v115.release("MovementRecorder.Replay")
arg._moveHook:Destroy()
v119(mechanicsController.SetCrouching, mechanicsController, false)
end
return index2
end
tbl17.jW = function()
local jw = tbl17.cache.jW
if not jw then
local jw2 = { c = fn35() }
tbl17.cache.jW = jw2
jw = jw2
end
return jw.c
end
end
do -- jX
local function fn35()
local v115 = tbl17.A()
tbl17.hM()
local v116 = tbl17.k()
local v117 = cloneref(game:GetService("TextService"))
local font = Font.new("rbxassetid://12187365364", Enum.FontWeight.SemiBold, Enum.FontStyle.Normal)
local v118 = v86[63]
local index2 = {}
index2.__index = index2
local function fn36(arg)
return v117:GetTextSize(arg, v86[149], Enum.Font.GothamMedium, Vector2.new(10000, 24)).X
end
local function createTextLabel(parent, arg, layoutOrder, arg2, text)
local textLabel = Instance.new("TextLabel")
textLabel.LayoutOrder = layoutOrder
textLabel.BackgroundTransparency = 1
textLabel.FontFace = font
textLabel.TextSize = 15
textLabel.Text = text
textLabel.TextXAlignment = Enum.TextXAlignment.Center
textLabel.TextYAlignment = Enum.TextYAlignment.Center
textLabel.Size = UDim2.new(0, math.ceil(fn36(text)) + 2, 1, 0)
arg:Bind(textLabel, v86[167], arg2)
textLabel.Parent = parent
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingBottom = UDim.new(0, v86[56])
uiPadding.Parent = textLabel
return textLabel
end
local function fn37(arg, arg2, arg3)
local billboardGui = Instance.new("BillboardGui")
billboardGui.Name = "Marker"
billboardGui.AlwaysOnTop = v86[34]
billboardGui.LightInfluence = 0
billboardGui.MaxDistance = math.huge
local frame = Instance.new("Frame")
frame.Size = UDim2.fromScale(1, 1)
frame.BackgroundTransparency = 0.25
frame.BorderSizePixel = v86[186]
arg:Bind(frame, "BackgroundColor3", "ElementBackground")
frame.Parent = billboardGui
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, v86[54])
uiCorner.Parent = frame
local instance = Instance.new(v86[113])
instance.PaddingLeft = UDim.new(0, 9)
instance.PaddingRight = UDim.new(0, 9)
instance.Parent = frame
local instance2 = Instance.new(v86[4])
instance2.FillDirection = Enum.FillDirection.Horizontal
instance2.HorizontalAlignment = Enum.HorizontalAlignment.Center
instance2.VerticalAlignment = Enum.VerticalAlignment.Center
instance2.SortOrder = Enum.SortOrder.LayoutOrder
instance2.Padding = UDim.new(0, 6)
instance2.Parent = frame
local imageLabel = Instance.new("ImageLabel")
imageLabel.LayoutOrder = 1
imageLabel.BackgroundTransparency = 1
imageLabel.Size = UDim2.fromOffset(14, 14)
imageLabel.Image = "rbxassetid://137091405832737"
imageLabel.ScaleType = Enum.ScaleType.Fit
arg:Bind(imageLabel, "ImageColor3", "Accent")
imageLabel.Parent = frame
local textColor = createTextLabel(frame, arg, v86[56], "TextColor", tostring(arg2))
local instance3 = Instance.new(v86[128])
instance3.LayoutOrder = v86[155]
instance3.Size = UDim2.fromOffset(v118, 12)
instance3.BorderSizePixel = 0
arg:Bind(instance3, "BackgroundColor3", v86[96])
instance3.Parent = frame
local v119 = createTextLabel(frame, arg, v86[26], v86[96], arg3)
local n = 29 + textColor.Size.X.Offset + v86[54] + v118 + v86[54] + 9
local v120 = nil
local function fn38(text)
if text == v120 then
return
end
v120 = text
local n33 = math.ceil(fn36(text)) + 2
v119.Size = UDim2.new(0, n33, v86[63], v86[186])
v119.Text = text
billboardGui.Size = UDim2.fromOffset(n + n33, v86[61])
end
fn38(arg3)
return billboardGui, fn38
end
local function fn38(arg)
local v119 = math.ceil(arg)
if v119 > 999 then
return "999m+"
end
return v119 .. "m"
end
index2.new = function(arg, arg2)
return setmetatable({ Position = arg, Recordings = arg2, _trove = v116.new(), _billboard = nil, _setDistance = nil }, index2)
end
index2._Build = function(arg)
local trove = arg._trove
local v119 = v115.newBatch(trove)
local v120 = trove:Add(Instance.new("Attachment"))
v120.WorldPosition = arg.Position
v120.Parent = workspace.Terrain
local v121, v122 = fn37(v119, #arg.Recordings, "0m")
v121.Adornee = v120
trove:Add(v121)
v121.Parent = K.hudParent()
arg._billboard = v121
arg._setDistance = v122
return v121
end
index2.Show = function(arg)
(arg._billboard or arg:_Build()).Enabled = v86[34]
end
index2.Hide = function(arg)
local billboard = arg._billboard
if billboard ~= nil then
billboard.Enabled = false
end
end
index2.SetDistance = function(arg, arg2)
local setDistance = arg._setDistance
if setDistance ~= nil then
setDistance(fn38(arg2))
end
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jX = function()
local jx = tbl17.cache.jX
if not jx then
jx = { c = fn35() }
tbl17.cache.jX = jx
end
return jx.c
end
end
do -- jY
local function fn35()
local v115 = tbl17.A()
tbl17.hM()
local v116 = tbl17.k()
local v117 = cloneref(game:GetService("TextService"))
local font = Font.new("rbxassetid://12187365364", Enum.FontWeight.SemiBold, Enum.FontStyle.Normal)
local n = 1
local index2 = {}
index2.__index = index2
local function fn36(arg)
return v117:GetTextSize(arg, 15, Enum.Font.GothamMedium, Vector2.new(10000, 24)).X
end
local function createTextLabel(parent, layoutOrder, text)
local textLabel = Instance.new("TextLabel")
textLabel.LayoutOrder = layoutOrder
textLabel.BackgroundTransparency = 1
textLabel.FontFace = font
textLabel.TextSize = 15
textLabel.Text = text
textLabel.TextColor3 = v115.get(v86[174])
textLabel.TextXAlignment = Enum.TextXAlignment.Center
textLabel.TextYAlignment = Enum.TextYAlignment.Center
local v118 = v86[56]
local v119 = v86[63]
textLabel.Size = UDim2.new(0, math.ceil(fn36(text)) + v118, v119, 0)
textLabel.Parent = parent
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingBottom = UDim.new(0, 2)
uiPadding.Parent = textLabel
return textLabel
end
local function fn37(arg, arg2)
local billboardGui = Instance.new("BillboardGui")
billboardGui.Name = "Route"
billboardGui.AlwaysOnTop = true
billboardGui.LightInfluence = 0
billboardGui.MaxDistance = math.huge
local frame = Instance.new("Frame")
frame.Size = UDim2.fromScale(v86[63], 1)
frame.BackgroundTransparency = 0.25
frame.BorderSizePixel = 0
arg:Bind(frame, "BackgroundColor3", "ElementBackground")
frame.Parent = billboardGui
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(v86[186], 6)
uiCorner.Parent = frame
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingLeft = UDim.new(0, 9)
uiPadding.PaddingRight = UDim.new(0, v86[170])
uiPadding.Parent = frame
local instance = Instance.new(v86[4])
instance.FillDirection = Enum.FillDirection.Horizontal
instance.HorizontalAlignment = Enum.HorizontalAlignment.Center
instance.VerticalAlignment = Enum.VerticalAlignment.Center
instance.SortOrder = Enum.SortOrder.LayoutOrder
instance.Padding = UDim.new(v86[186], v86[54])
instance.Parent = frame
local instance2 = Instance.new(v86[146])
instance2.LayoutOrder = 1
instance2.BackgroundTransparency = 1
instance2.Size = UDim2.fromOffset(14, 14)
instance2.Image = "rbxassetid://121091323240554"
instance2.ScaleType = Enum.ScaleType.Fit
arg:Bind(instance2, "ImageColor3", "Accent")
instance2.Parent = frame
local instance3 = Instance.new(v86[128])
instance3.LayoutOrder = 2
instance3.Size = UDim2.fromOffset(1, 12)
instance3.BorderSizePixel = v86[186]
arg:Bind(instance3, "BackgroundColor3", "Unselected")
instance3.Parent = frame
local v118 = createTextLabel(frame, 3, arg2)
billboardGui.Size = UDim2.fromOffset(29 + n + 6 + v118.Size.X.Offset + 9, 24)
return billboardGui, v118
end
index2.new = function(arg, arg2)
return setmetatable({
_trove = v116.new(),
Recording = arg2,
_build = { Ready = false },
Position = arg * arg2.DisplayPosition,
_activated = false,
_selected = false,
Unfulfillable = v86[153],
}, index2)
end
index2._Build = function(arg)
local trove = arg._trove
local v118 = v115.newBatch(trove)
local v119 = trove:Add(Instance.new("Attachment"))
v119.WorldPosition = arg.Position
v119.Parent = workspace.Terrain
local v120, v121 = fn37(v118, arg.Recording.Name)
v120.Adornee = v119
trove:Add(v120)
v120.Parent = K.hudParent()
return { Ready = v86[34], Billboard = v120, Title = v121 }
end
index2.Show = function(arg)
local build = arg._build
if not build.Ready then
build = arg:_Build()
arg._build = build
end
build.Billboard.Enabled = true
local color
if arg._activated then
color = Color3.new(0, 1, 0)
elseif arg.Unfulfillable then
color = Color3.new(1, 0, 0)
elseif arg._selected then
color = Color3.new(1, 1, 0)
else
color = v115.get("TextColor")
end
build.Title.TextColor3 = color
end
index2.SetActivated = function(arg, activated)
arg._activated = activated
end
index2.SetUnfulfillable = function(arg, unfulfillable)
arg.Unfulfillable = unfulfillable
end
index2.SetSelected = function(arg, selected)
arg._selected = selected
end
index2.Hide = function(arg)
local build = arg._build
if build.Ready then
build.Billboard.Enabled = false
end
end
index2.Destroy = function(arg)
arg._trove:Destroy()
end
return index2
end
tbl17.jY = function()
local jy = tbl17.cache.jY
if not jy then
local jy2 = { c = fn35() }
tbl17.cache.jY = jy2
jy = jy2
end
return jy.c
end
end
do -- jZ
local function fn35()
local v115 = tbl17.bG()
tbl17.dr()
local v116 = tbl17.jX()
tbl17.cX()
tbl17.jS()
local v117 = tbl17.jY()
tbl17.hM()
local v118 = tbl17.k()
local index2 = {}
index2.__index = index2
local function fn36(arg, arg2)
for k in arg.LoadoutRequirementSet, nil, nil do
if not arg2[k] then
return false
end
end
return true
end
index2.new = function(arg, arg2, arg3, arg4)
local v119 = v118.new()
local tbl18 = { _trove = v119, _playerContext = arg2, _mapAnchor = arg4, _markers = {}, _routesByRecording = {} }
setmetatable(tbl18, index2)
local function fn37()
tbl18:_Rebuild(arg:FindByMap(arg3))
end
v119:Connect(arg.Reloaded, fn37)
fn37()
v119:Add(arg2:ObserveContext("movement_recorder.Waypoints", function(arg5, arg6)
local itemBehaviors = arg5.ItemBehaviors
arg6:Connect(itemBehaviors.ItemAdded, function()
tbl18:_RefreshFulfillability()
end)
arg6:Connect(itemBehaviors.ItemRemoved, function()
tbl18:_RefreshFulfillability()
end)
tbl18:_RefreshFulfillability()
end))
v119:Connect(arg2.ContextRemoved, function()
tbl18:_RefreshFulfillability()
end)
return tbl18
end
index2._RefreshFulfillability = function(arg)
local tbl18 = {}
local inner = arg._playerContext.Inner
if inner ~= nil then
for _, v119 in inner.ItemBehaviors:GetItems() do
tbl18[v119.Name] = true
end
end
for k, v119 in arg._routesByRecording, nil, nil do
v119:SetUnfulfillable(not fn36(k, tbl18))
end
end
index2._Clear = function(arg)
for _, v119 in arg._markers, nil, nil do
v119:Destroy()
end
table.clear(arg._markers)
for _, v119 in arg._routesByRecording, nil, nil do
v119:Destroy()
end
table.clear(arg._routesByRecording)
end
index2._Rebuild = function(arg, arg2)
arg:_Clear()
if arg2 == nil then
return
end
local tbl18 = {}
for _, v119 in arg2, nil, nil do
local position = v119.StartCFrame.Position
local str7 = math.floor(position.X / 8) .. "," .. math.floor(position.Y / 8) .. "," .. math.floor(position.Z / v86[162])
local tbl19 = tbl18[str7]
if tbl19 == nil then
tbl19 = {}
tbl18[str7] = tbl19
end
table.insert(tbl19, v119)
end
local mapAnchor = arg._mapAnchor
for _, v119 in tbl18, nil, nil do
local vector = Vector3.zero
for _, v120 in v119, nil, nil do
vector += v120.StartCFrame.Position
arg._routesByRecording[v120] = v117.new(mapAnchor, v120)
end
table.insert(arg._markers, v116.new(mapAnchor:PointToWorldSpace(vector / #v119), v119))
end
arg:_RefreshFulfillability()
end
index2.GetSelectedRecording = function(arg)
local selectedRoute = arg._selectedRoute
return selectedRoute ~= nil and selectedRoute.Recording or nil
end
index2.SetActivatedRecording = function(arg, arg2)
local activatedRoute = arg._activatedRoute
if activatedRoute ~= nil then
activatedRoute:SetActivated(v86[153])
end
if arg2 ~= nil then
local v119 = arg._routesByRecording[arg2]
v119:SetActivated(true)
arg._activatedRoute = v119
else
arg._activatedRoute = nil
end
end
index2.Update = function(arg)
if true then
for _, v119 in arg._markers, nil, nil do
v119:Hide()
end
for _, v119 in arg._routesByRecording, nil, nil do
v119:Hide()
end
local inner = arg._playerContext.Inner
if inner == nil then
return
end
local clientCFrame = inner.CharacterController:GetClientCFrame()
if clientCFrame == nil then
return
end
local position = clientCFrame.Position
local hideUI = v115.Data.Movement.MovementRecorder.HideUI
local activatedRoute = arg._activatedRoute
if activatedRoute ~= nil then
if not hideUI then
activatedRoute:Show()
end
return
end
local v119 = arg:_GetMarkerInProximity(position)
if v119 ~= nil then
local recordings = v119.Recordings
local v120 = arg:_ComputeSelectedRoute(recordings)
if v120 ~= arg._selectedRoute then
arg:_ClearSelectedRoute()
if v120 ~= nil then
arg._selectedRoute = v120
v120:SetSelected(true)
end
end
arg:_ForEachRoute(recordings, function(arg2)
if not hideUI then
arg2:Show()
end
end)
return
end
arg:_ClearSelectedRoute()
if not hideUI then
local renderDistance = v115.Data.Movement.MovementRecorder.RenderDistance
for _, v120 in arg._markers, nil, nil do
local magnitude = (v120.Position - position).Magnitude
if magnitude < renderDistance then
v120:Show()
v120:SetDistance(magnitude)
end
end
end
return
end
-- (anti-tamper freeze trap removed)
end
index2._ForEachRoute = function(arg, arg2, arg3)
for _, v119 in arg2, nil, nil do
arg3(arg._routesByRecording[v119])
end
end
index2._GetMarkerInProximity = function(arg, arg2)
local openDistance = v115.Data.Movement.MovementRecorder.OpenDistance
local huge = math.huge
local v119 = nil
for _, v120 in arg._markers, nil, nil do
local magnitude = (v120.Position - arg2).Magnitude
if magnitude < openDistance and magnitude < huge then
huge = magnitude
v119 = v120
end
end
return v119
end
index2._ComputeSelectedRoute = function(arg, arg2)
local currentCamera = workspace.CurrentCamera
local huge = math.huge
local v119 = nil
for _, v120 in arg2, nil, nil do
local v121 = arg._routesByRecording[v120]
if not v121.Unfulfillable then
local v122 = currentCamera:WorldToViewportPoint(v121.Position)
if not (v122.Z < 0) then
local n = currentCamera.ViewportSize / 2
local magnitude = (Vector2.new(v122.X, v122.Y) - n).Magnitude
if magnitude < huge then
huge = magnitude
v119 = v121
end
end
end
end
return v119
end
index2._ClearSelectedRoute = function(arg)
local selectedRoute = arg._selectedRoute
if selectedRoute ~= nil then
arg._selectedRoute = nil
selectedRoute:SetSelected(false)
end
end
index2.Destroy = function(arg)
arg._trove:Destroy()
arg:_Clear()
end
return index2
end
tbl17.jZ = function()
local jz = tbl17.cache.jZ
if not jz then
local jz2 = { c = fn35() }
tbl17.cache.jZ = jz2
jz = jz2
end
return jz.c
end
end
do -- j_
local function fn35()
tbl17.cr()
local v115 = tbl17.bG()
tbl17.e4()
tbl17.dr()
local v116 = tbl17.cK()
tbl17.dm()
local v117 = tbl17.aB()
tbl17.cX()
local v118 = tbl17.jS()
local v119 = tbl17.jU()
local v120 = tbl17.jW()
tbl17.dv()
tbl17.g()
tbl17.hM()
local v121 = tbl17.k()
local v122 = tbl17.jZ()
local tbl18 = { "Movement", "MovementRecorder", "Record", "Keybind", "State" }
local tbl19 = { "Movement", "MovementRecorder", "Replay", "Keybind", "State" }
local function fn36(arg, arg2)
if not v115.Data.Movement.MovementRecorder.HideNotifications then
v117.get():Notify(arg, arg2)
end
end
local index2 = {}
index2.__index = index2
index2.new = function(arg, arg2, arg3, arg4, arg5)
local movementRecorder = v121.new("movement_recorder")
local v123 = v118.new()
local tbl20 = {
_trove = movementRecorder,
_playerContext = arg,
_duelers = arg2,
_currentMap = arg3,
_persistence = v123,
_inputHook = arg4,
_state = { Kind = "Idle" },
_waypoints = nil,
_lastRecording = nil,
_aliveState = nil,
_replicateBinding = arg5,
_roundActive = v86[153],
_pendingStart = nil,
RecordingsChanged = v123.Reloaded,
}
setmetatable(tbl20, index2)
tbl20:_Initialize(movementRecorder, arg)
return tbl20
end
index2._Initialize = function(arg, arg2, arg3)
arg:_SetupWaypointsCreation(arg2, arg3)
arg:_SetupRoundTracking(arg2)
local function fn37(arg4, arg5, arg6, arg7, arg8)
local tbl20 = { "Movement", "MovementRecorder", arg4, "Keybind", "State" }
arg2:Connect(v115:GetPropertyChangedSignal(tbl20), function(arg9)
if not arg9 then
if arg._pendingStart ~= nil and arg._pendingStart.StatePath == tbl20 then
arg._pendingStart = nil
end
arg8()
return
end
if not v115.Data.Movement.MovementRecorder.Enabled then
task.defer(function()
v115:Set(tbl20, false)
end)
return
end
if not arg6 and not arg:_IsRoundActive() then
if not arg:_IsInMatch() then
fn36("You need to be in a match")
task.defer(function()
v115:Set(tbl20, v86[153])
end)
return
end
arg._pendingStart = { Noun = arg5, StatePath = tbl20, TryStart = arg7 }
fn36(string.format("%s will start when the round begins", tostring(arg5)))
return
end
if not arg7() then
task.defer(function()
v115:Set(tbl20, false)
end)
end
end)
end
fn37("Record", "Recording", false, function()
return arg:_StartRecording()
end, function()
arg:_StopRecording()
end)
fn37("Replay", "Replay", true, function()
local waypoints = arg._waypoints
if waypoints == nil then
return v86[153]
end
local selectedRecording = waypoints:GetSelectedRecording()
if selectedRecording == nil then
return false
end
return arg:_StartReplaying(selectedRecording)
end, function()
arg:_StopReplaying()
end)
arg2:Add(arg3:ObserveContext("movement_recorder.ObserveContext", function(arg4, arg5)
local character = arg4.FighterState.Character
arg5:Connect(character.Created, function(aliveState)
arg._aliveState = aliveState
end)
arg5:Connect(character.Died, function()
arg._aliveState = nil
arg:_Reset(true)
end)
local state = character.State
if state.Alive then
arg._aliveState = state
end
end))
arg2:Connect(arg3.ContextRemoved, function()
arg._aliveState = nil
arg:_Reset()
end)
end
index2._SetupRoundTracking = function(arg, arg2)
local Status = v116.encode("Status")
arg._replicateBinding:SetHandler(function(arg3)
if arg3.Args[1] ~= Status then
return
end
local roundActive = arg3.Args[v86[56]] == "RoundStarted"
local roundActive2 = arg._roundActive
arg._roundActive = roundActive
if roundActive and not roundActive2 then
arg:_OnRoundActivated()
end
end)
arg._replicateBinding:SetEnabled(true)
arg2:Add(arg._replicateBinding)
end
index2._IsInMatch = function(arg)
local localState = arg._duelers.LocalState
return localState ~= nil and localState:GetMapName() ~= nil and arg._currentMap:GetAnchor() ~= nil
end
index2._IsRoundActive = function(arg)
if arg._roundActive then
return true
end
local localState = arg._duelers.LocalState
return localState ~= nil and localState:GetRoundStatus() == "RoundStarted"
end
index2._OnRoundActivated = function(arg)
if arg._pendingStart == nil then
return
end
task.defer(function()
local pendingStart = arg._pendingStart
if pendingStart == nil then
return
end
arg._pendingStart = nil
if not pendingStart.TryStart() then
v115:Set(pendingStart.StatePath, false)
end
end)
end
index2._ClearPending = function(arg)
local pendingStart = arg._pendingStart
if pendingStart == nil then
return
end
arg._pendingStart = nil
v115:Set(pendingStart.StatePath, false)
end
index2._SetupWaypointsCreation = function(arg, arg2, arg3)
local function fn37()
local waypoints = arg._waypoints
if waypoints ~= nil then
arg._waypoints = nil
waypoints:Destroy()
end
end
local function fn38()
if not v115.Data.Movement.MovementRecorder.Enabled then
fn37()
return
end
local anchor = arg._currentMap:GetAnchor()
if anchor == nil then
fn37()
return
end
local localState = arg._duelers.LocalState
if localState == nil then
fn37()
return
end
local mapName = localState:GetMapName()
if mapName == nil then
fn37()
return
end
if arg._waypoints == nil then
arg._waypoints = v122.new(arg._persistence, arg3, mapName, anchor)
end
end
local v123 = arg2:Extend()
local function fn39()
fn37()
fn38()
end
local function fn40(arg4)
v123:Clean()
v123:Connect(arg4.MapChanged, fn39)
end
arg2:Connect(arg._duelers.LocalStateSet, function(arg4)
fn40(arg4)
fn38()
end)
arg2:Connect(arg._duelers.LocalStateRemoved, function()
v123:Clean()
fn37()
end)
local localState = arg._duelers.LocalState
if localState ~= nil then
fn40(localState)
end
arg2:Connect(arg._currentMap.MapAdded, fn38)
arg2:Connect(arg._currentMap.MapRemoved, fn37)
arg2:Connect(v115:GetPropertyChangedSignal({ "Movement", "MovementRecorder", "Enabled" }), fn38)
fn38()
end
index2._ResolveStartContext = function(arg)
local aliveState = arg._aliveState
local localState = arg._duelers.LocalState
local inner = arg._playerContext.Inner
local anchor = arg._currentMap:GetAnchor()
if aliveState == nil or localState == nil or inner == nil or anchor == nil then
fn36("You need to be alive and in a match")
return nil
end
return { AliveState = aliveState, DuelState = localState, InnerContext = inner, MapAnchor = anchor }
end
index2._StartRecording = function(arg)
local v123 = arg:_ResolveStartContext()
if v123 == nil then
return false
end
local mapName = v123.DuelState:GetMapName()
if mapName == nil then
fn36("You need to be alive and in a match")
return v86[153]
end
local kind = arg._state.Kind
if kind ~= "Idle" then
if kind == "Recording" then
fn36("Already recording")
elseif kind == "Replaying" then
fn36("Can't record while replaying")
end
return false
end
local v124 = arg._inputHook:Reserve()
local v125 = v119.new(mapName, v123.MapAnchor, v123.AliveState, v123.InnerContext.FighterState.Inner, v123.InnerContext.ItemBehaviors, v124)
v125:Update()
arg._state = { Kind = "Recording", Recorder = v125 }
fn36("Now recording")
return v86[34]
end
index2._TeardownRecording = function(arg)
local state = arg._state
if state.Kind ~= "Recording" then
return
end
state.Recorder:Destroy()
arg._state = { Kind = "Idle" }
end
index2._StopRecording = function(arg)
local state = arg._state
if state.Kind ~= "Recording" then
return
end
arg._lastRecording = state.Recorder:GetRecording()
arg:_TeardownRecording()
fn36("Recording stopped")
end
index2._StartReplaying = function(arg, arg2)
local v123 = arg:_ResolveStartContext()
if v123 == nil then
return false
end
local kind = arg._state.Kind
if kind ~= "Idle" then
if kind == "Recording" then
fn36("Can't replay while recording")
elseif kind == "Replaying" then
fn36("Already replaying")
end
return v86[153]
end
local waypoints = arg._waypoints
if waypoints ~= nil then
waypoints:SetActivatedRecording(arg2)
end
arg._state = {
Kind = "Replaying",
Replayer = v120.new(v123.AliveState, v123.InnerContext.FighterState.Inner, v123.InnerContext.ItemBehaviors, v123.MapAnchor, arg2, function()
return arg:_IsRoundActive()
end, function(arg3)
arg:_FinishReplaying(arg3)
end),
}
fn36("Now replaying")
return v86[34]
end
index2._TeardownReplay = function(arg)
local state = arg._state
if state.Kind ~= "Replaying" then
return
end
state.Replayer:Destroy()
arg._state = { Kind = "Idle" }
local waypoints = arg._waypoints
if waypoints ~= nil then
waypoints:SetActivatedRecording(nil)
end
end
index2._StopReplaying = function(arg)
if arg._state.Kind ~= "Replaying" then
return
end
arg:_TeardownReplay()
fn36("Stopped replaying")
end
index2._FinishReplaying = function(arg, arg2)
if arg._state.Kind ~= "Replaying" then
return
end
arg:_TeardownReplay()
v115:Set(tbl19, false)
if arg2 == "Diverged" then
fn36("Replay stopped (off course)")
else
fn36("Finished replaying")
end
end
index2._Reset = function(arg, arg2)
arg:_ClearPending()
local kind = arg._state.Kind
if kind == "Idle" then
return
end
if kind == "Recording" then
arg:_TeardownRecording()
v115:Set(tbl18, false)
if arg2 then
fn36("Recording stopped")
end
else
arg:_TeardownReplay()
v115:Set(tbl19, v86[153])
if arg2 then
fn36("Stopped replaying")
end
end
end
index2.SaveRecording = function(arg, arg2)
local lastRecording = arg._lastRecording
if lastRecording == nil then
fn36("No recording to save")
return
end
if not arg._persistence:Save(arg2, lastRecording).Ok then
fn36("Failed to save recording")
return
end
arg._lastRecording = nil
fn36("Recording saved")
end
index2.GetRecordingMaps = function(arg)
return arg._persistence:GetMaps()
end
index2.GetRecordingNames = function(arg, arg2)
return arg._persistence:GetNamesForMap(arg2)
end
index2.ReplayRecording = function(arg, arg2)
if not v115.Data.Movement.MovementRecorder.Enabled then
fn36("Enable Movement Recorder first")
return false
end
if arg2 == "" then
fn36("Select a recording to replay")
return false
end
local v123 = arg._persistence:FindByName(arg2)
if v123 == nil then
fn36("Recording not found")
return false
end
local localState = arg._duelers.LocalState
local mapName = localState ~= nil and localState:GetMapName() or nil
if mapName == nil or arg._currentMap:GetAnchor() == nil then
fn36("You need to be in a match")
return false
end
if v123.MapName ~= mapName then
local v124 = tostring
fn36(string.format("Recording is for %s, not %s", tostring(v123.MapName), v124(mapName)))
return false
end
return arg:_StartReplaying(v123)
end
index2.DeleteRecording = function(arg, arg2)
if not arg._persistence:Delete(arg2).Ok then
fn36("Failed to delete recording")
return
end
fn36("Recording deleted")
end
index2.Update = function(arg, arg2)
local state = arg._state
if state.Kind == "Recording" then
state.Recorder:Update()
elseif state.Kind == "Replaying" then
state.Replayer:Update(arg2)
end
local waypoints = arg._waypoints
if waypoints ~= nil then
if not flag3 then
return
end
waypoints:Update()
end
end
index2.Destroy = function(arg)
arg:_Reset()
arg._trove:Destroy()
local waypoints = arg._waypoints
if waypoints ~= nil then
waypoints:Destroy()
end
end
return index2
end
tbl17.j_ = function()
local j = tbl17.cache.j_
if not j then
local j2 = { c = fn35() }
tbl17.cache.j_ = j2
j = j2
end
return j.c
end
end
do -- j0
local function fn35()
local v115 = tbl17.dO()
local v116 = tbl17.bG()
tbl17.aE()
local index2 = {}
index2.__index = index2
local tbl18 = { "ColorAnimations", "Entries" }
local function fn36(arg, arg2)
local str7 = table.concat(arg, "/")
if arg2 == nil then
return { "ColorAnimations", "Entries", str7 }
end
return { "ColorAnimations", "Entries", str7, arg2 }
end
index2.new = function(arg)
return setmetatable({ _animator = arg }, index2)
end
index2.Get = function(arg, arg2)
local tbl19 = v116:Get(fn36(arg2))
local v117 = v86[68]
tbl19 = type(tbl19) == v117 and tbl19 or {}
local breathingMin = tbl19.BreathingMin
local breathingMax = tbl19.BreathingMax
local tbl20 = { Mode = v115.ParseMode(tbl19.Mode), Speed = type(tbl19.Speed) == "number" and tbl19.Speed or 1 }
local v118 = v86[95]
tbl20.BreathingMin = type(breathingMin) == v118 and breathingMin or nil
tbl20.BreathingMax = type(breathingMax) == "number" and breathingMax or nil
return tbl20
end
index2.SetMode = function(arg, arg2, arg3)
v116:Set(fn36(arg2, "Mode"), arg3)
end
index2.SetSpeed = function(arg, arg2, arg3)
v116:Set(fn36(arg2, "Speed"), arg3)
end
index2.SetBreathing = function(arg, arg2, arg3, arg4)
v116:Set(fn36(arg2, "BreathingMin"), arg3)
v116:Set(fn36(arg2, "BreathingMax"), arg4)
end
index2.Changed = function()
return v116:GetPropertyChangedSignal(tbl18)
end
index2.Apply = function(arg, arg2, arg3, arg4)
local n = 0
if arg3 ~= nil then
n = v116:GetBase(arg3)
local n33 = 0
if type(n) ~= "number" then
n = n33
end
end
arg._animator:SetEntry(arg2, arg3, {
Mode = arg4.Mode,
Speed = arg4.Speed,
BreathingMin = arg4.BreathingMin or n,
BreathingMax = arg4.BreathingMax or 1,
})
end
return index2
end
tbl17.j0 = function()
local j0 = tbl17.cache.j0
if not j0 then
j0 = { c = fn35() }
tbl17.cache.j0 = j0
end
return j0.c
end
end
do -- j1
local function fn35()
local v115 = tbl17.dh()
task.wait()
local v116 = tbl17.di()
local v117 = tbl17.dk()
local v118 = tbl17.dn()
local v119 = tbl17.ds()
local v120 = tbl17.dt()
local v121 = tbl17.dw()
local v122 = tbl17.dx()
local v123 = tbl17.dA()
local v124 = tbl17.dB()
local v125 = tbl17.dM()
local v126 = tbl17.dO()
local v127 = tbl17.bG()
local v128 = tbl17.e0()
task.wait()
local v129 = tbl17.e3()
local v130 = tbl17.e4()
local v131 = tbl17.fm()
local v132 = tbl17.dR()
local v133 = tbl17.fn()
local v134 = tbl17.bI()
local v135 = tbl17.dr()
local v136 = tbl17.fo()
local v137 = tbl17.fx()
local v138 = tbl17.cY()
local v139 = tbl17.c_()
local v140 = tbl17.ad()
local v141 = tbl17.gc()
task.wait()
local v142 = tbl17.gd()
local v143 = tbl17.ge()
local v144 = tbl17.cF()
local v145 = tbl17.az()
tbl17.bO()
local v146 = tbl17.gf()
local v147 = tbl17.n()
local v148 = tbl17.gg()
local v149 = tbl17.e9()
local v150 = tbl17.dm()
local v151 = tbl17.gr()
local v152 = tbl17.gs()
local v153 = tbl17.gw()
local v154 = tbl17.dL()
local v155 = tbl17.dK()
local _v156 = tbl17.gx()
local v157 = tbl17.fj()
local v158 = tbl17.aB()
local v159 = tbl17.gy()
local v160 = tbl17.gz()
local v161 = tbl17.gA()
local v162 = tbl17.gE()
local v163 = tbl17.gJ()
local v164 = tbl17.cX()
local v165 = tbl17.gO()
local v166 = tbl17.gQ()
local v167 = tbl17.dv()
local v168 = tbl17.d9()
local _v169 = tbl17.gR()
local v170 = tbl17.gv()
local v171 = tbl17.gV()
local v172 = tbl17.gY()
local v173 = tbl17.gZ()
local v174 = tbl17.g_()
local v175 = tbl17.g0()
local v176 = tbl17.gT()
tbl17.g1()
local v177 = tbl17.g2()
local v178 = tbl17.eZ()
local v179 = tbl17.hb()
local v180 = tbl17.hc()
local v181 = tbl17.hd()
local v182 = tbl17.hf()
local v183 = tbl17.cZ()
local v184 = tbl17.hK()
local v185 = tbl17.hL()
local v186 = tbl17.jf()
local v187 = tbl17.jg()
return function(arg)
v187()
local storeProfiles = arg.StoreProfiles
local playerRegistry = arg.PlayerRegistry
local playerIdentities = arg.PlayerIdentities
local playerTags = arg.PlayerTags
local decoratorFactory = arg.DecoratorFactory
local generalState = arg.GeneralState
local generalStateData = arg.GeneralStateData
local v188 = v147:Add(v140.new())
if not v188:ReportResult(v145:Initialize()).Ok then
v158.get():Notify("Some fonts may be unavailable")
end
local v189 = v147:Add(v126.new({
WriteColor = function(arg2, arg3)
v127:SetLiveOverride(arg2, arg3)
end,
WriteTransparency = function(arg2, arg3)
v127:SetLiveOverride(arg2, arg3)
end,
RevertColor = function(arg2)
v127:ClearLiveOverride(arg2)
end,
RevertTransparency = function(arg2)
v127:ClearLiveOverride(arg2)
end,
}))
local armAvatarSpoofer = arg.ArmAvatarSpoofer
if armAvatarSpoofer ~= nil then
armAvatarSpoofer()
end
local v190 = v147:Add(v144.new())
local v191 = v147:Add(v135.new())
local v192 = v147:Add(v168.new())
local v193 = v147:Add(v132.new())
local v194 = tbl17.jh()
local v195 = tbl17.jp()
local v196 = v147:Add(v194.new())
v147:Add(v195.new(playerRegistry, v192:Reserve(), v193, v196))
v147:Add(tbl17.jr().new())
v147:Add(tbl17.js().new(v193))
v147:Add(tbl17.jt().new(v193))
local v197 = v147:Add(v124.new(v190, decoratorFactory))
local v198 = v147:Add(v148.new(v190, playerTags))
local v199 = v147:Add(v164.new(v190))
v185(storeProfiles, v147, v199)
local v200 = v147:Add(v138.new(v190, v199))
local v201 = v147:Add(v183.new(v199, v200))
local v202 = v147:Add(v130.new(v199))
local v203 = v147:Add(v176.new(v134.TextIndicatorList))
local v204 = v147:Add(v172.new())
v204:Initialize()
local v205 = v147:Add(v184.new(v204))
v147:Add(v182.new())
v147:Add(v133.new(v199))
local v206 = v147:Add(v173.new(v190))
v147:Add(v119.new(v199, v191)):Initialize()
local v207 = v147:Add(v143.new(v199))
local v208 = v147:Add(v150.new())
v147:Add(v118.new(v208:Reserve(), v199, v190))
local v209 = v147:Add(v167.new())
local v210 = v147:Add(v161.new())
local v211 = v147:Add(v170.new())
local v212 = v147:Add(v149.new())
v188:ReportResult(v153.MigrateSounds(v211))
v188:ReportResult(v153.MigrateImages(v212))
local v213 = v147:Add(v166.new(v209, v199, v211))
local v214 = v147:Add(v165.new(v209, v199, v200, v211))
v147:Add(v122.new(v209:Reserve({ "RespawnNowAnimation" })))
v147:Add(v142.new(v199, v190, v208:Reserve()))
local v215 = v147:Add(v178.new())
local v216 = v147:Add(v155.new(v199, v197))
local v217 = v147:Add(v154.new(v199, v216))
v147:Add(v125.new(v217))
v147:Add(v179.new(v199))
v147:Add(v180.new(function()
return v216:IsLocalViewModelThirdPerson()
end))
v147:Add(v181.new())
v147:Add(v152.new())
v147:Add(tbl17.ju().new(v199))
local v218 = v139.new(v201, v199)
v147:Add(v163.new(v199, v201, v216))
local v219 = v147:Add(v171.new(v190, v199, v218, v208:Reserve(), v203))
local v220 = v147:Add(v115.new(v190, v199, v218))
local v221 = v147:Add(v157.new(v199))
local v222 = v147:Add(v174.new())
local _v223 = v147:Add(v159.new())
local v224 = v147:Add(v131.new(v221, v212, { v220, v219 }))
local v225 = v147:Add(tbl17.jw().new(v190, v199, v218))
local _v226 = v147:Add(v160.new())
local v227 = v147:Add(tbl17.jO().new(v190, playerTags, v199, v222, v210))
local v228 = v147:Add(v177.new(v199, v190, v201))
local v229 = v147:Add(v116.new(v199, v190))
local v230 = v147:Add(v141.new(v190, playerIdentities, v212))
local v231 = v147:Add(v162.new(v199))
local v232 = v147:Add(v175.new(v199, v191))
local v233 = v147:Add(v120.new(v199))
v147:Add(v117.new(v199))
v147:Add(v121.new()):Initialise(v209)
v147:Add(v151.new(v199, v207, v208))
v147:Add(v137.new(v199, v209, v221))
local v234 = v147:Add(v123.new(v209, v199))
local v235 = v209
local reserve = v235.Reserve
local v236 = v147:Add(tbl17.j_().new(v199, v191, v202, v208, reserve(v235, { "DataValueChanged" })))
local v237 = v147:Add(v128.new(v199, v190, v197, v193, v192:Reserve(), v215))
local v238 = v147:Add(v129.new(v237))
local coreLoad = v238:LoadCoreConfig()
if not coreLoad.Ok and isfile and not isfile("kiciahook/rivals_v3/cosmetics/states/core_config.json") then
v238:SaveCoreConfig() -- first run: write the default core config instead of warning
else
v188:ReportResult(coreLoad)
end
local v239 = v147:Add(v146.new())
v239:SetPreCameraRender(function(arg2)
v218:Update()
v220:Update(arg2)
v231:PreCameraRenderUpdate()
end)
v239:SetPreRender(function(arg2)
v205:PreRender(arg2)
v206:PreRender(arg2)
v237:PreRender()
v213:PreRender(arg2)
v214:PreRender(arg2)
v230:Update(arg2)
v216:Update()
v224:Update()
v234:Update(arg2)
v189:Update()
if v236 then
v236:Update(arg2)
end
end)
v239:SetPreSimulation(function(arg2)
v231:PreSimulationUpdate(arg2)
end)
v239:SetHeartbeat(function(arg2)
v199:HeartbeatUpdate()
v190:Update(arg2)
if v225 then
v225:Update(arg2)
end
v229:Update()
if v227 then
v227:Update(arg2)
end
v228:Update(arg2)
v219:Update(arg2)
v232:Update()
v233:Update()
v198:Update(arg2)
v199:FlushViewAngles()
end)
v239:Start()
v186({
Cosmetics = v237,
CosmeticsConfig = v238,
SfxSoundStorage = v211,
ImageStorage = v212,
MovementRecorder = v236,
Skyboxes = v204,
ReactiveStoreAdapter = v147:Add(v136.new(storeProfiles, v127, "rbxassetid://84152083728286")),
ColorAnimation = tbl17.j0().new(v189),
StoreProfiles = storeProfiles,
Aimbot = v220,
SilentAim = v219,
GeneralState = generalState,
GeneralStateData = generalStateData,
PlayerIdentities = playerIdentities,
})
end
end
tbl17.j1 = function()
local j1 = tbl17.cache.j1
if not j1 then
j1 = { c = fn35() }
tbl17.cache.j1 = j1
end
return j1.c
end
end
tbl17.p = function() return nil end
tbl17.aF = function() return nil end
tbl17.cg = function() return nil end
tbl17.ch = function() return nil end
tbl17.aP = function() return nil end
tbl17.aL = function() return nil end
tbl17.aN = function() return nil end
tbl17.aM = function() return nil end
tbl17.aQ = function() return nil end
tbl17.aO = function() return nil end
tbl17.bb = function() return nil end
tbl17.o = function() return nil end
tbl17.aZ = function() return nil end
tbl17.aG = function() return nil end
tbl17.aK = function() return nil end
tbl17.a_ = function() return nil end
tbl17.a0 = function() return nil end
tbl17.a3 = function() return nil end
tbl17.a5 = function() return nil end
tbl17.a9 = function() return nil end
tbl17.ba = function() return nil end
tbl17.bJ = function() return nil end
tbl17.dW = function() return nil end
tbl17.e6 = function() return nil end
tbl17.a4 = function() return nil end
tbl17.fz = function() return nil end
tbl17.fB = function() return nil end
tbl17.bO = function() return nil end
tbl17.gt = function() return nil end
tbl17.gW = function() return nil end
tbl17.g3 = function() return nil end
tbl17.hl = function() return nil end
tbl17.a1 = function() return nil end
tbl17.hB = function() return nil end
tbl17.hN = function() return nil end
tbl17.hM = function() return nil end
tbl17.jx = function() return nil end
-- Lithium's crystal logo (256x256 PNG, base64), used as the menu logo.
local LITHIUM_LOGO_B64 = "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"
--==========================================================================
-- Kicia's bootstrap (b8) and main (j1), as in the dump. Left out of b8:
-- the analytics client (kicia.cc), the Luarmor auto-execute writer and the
-- anti-cheat bypass (b7). Kicia's online user service (eZ) is offline.
--==========================================================================
local GlobalTrove = tbl17.n()
tbl17.w().ensureStorageDirectories("kiciarebuild/rivals")
-- folders the config managers actually save into (they use writefile, which does not create folders)
tbl17.w().ensureStorageDirectories("kiciahook/rivals_v3")
tbl17.w().ensureStorageDirectories("kiciahook/rivals_v3/cosmetics/states")
tbl17.w().ensureStorageDirectories("kiciarebuild/fonts")
tbl17.w().ensureStorageDirectories("kiciarebuild/cache")
for _, sub in ipairs({ "cosmetics/states", "crosshair_textures", "esp_images", "movement_recorder" }) do
tbl17.w().ensureStorageDirectories("kiciarebuild/rivals/" .. sub)
end
-- Lithium logo: written to disk once per load and turned into an asset id
-- for the menu rail and the watermark.
do
local alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
local map = {}
for i = 1, 64 do map[alphabet:byte(i)] = i - 1 end
local function decode(s)
local out = buffer.create(#s * 3 // 4 + 3)
local n = 0
for i = 1, #s, 4 do
local a, b, c, d = s:byte(i, i + 3)
local vc, vd = map[c], map[d]
local v = map[a] * 262144 + map[b] * 4096 + (vc or 0) * 64 + (vd or 0)
buffer.writeu8(out, n, bit32.rshift(v, 16))
n += 1
if vc then buffer.writeu8(out, n, bit32.band(bit32.rshift(v, 8), 255)); n += 1 end
if vd then buffer.writeu8(out, n, bit32.band(v, 255)); n += 1 end
end
return buffer.readstring(out, 0, n)
end
local wrf, gca = K.fn("writefile"), K.fn("getcustomasset") or K.fn("getsynasset")
if wrf and gca then
local path = "kiciarebuild/lithium_logo.png"
local _ok = pcall(wrf, path, decode(LITHIUM_LOGO_B64))
local _ok2, _id = pcall(gca, path)
-- Kicia's original logo is used; the Lithium one is no longer applied.
end
end
-- Kicia's error reporter needs a sink; ours prints to the F9 console.
tbl17.b().use({ Report = function(_, e)
local detail = type(e) == "table" and (e.Detail or e.Operation) or e
warn("[Kicia Rebuild] " .. tostring(detail))
end })
local bootFn = function()
local store = tbl17.bG()
local profiles = GlobalTrove:Add(tbl17.bN().new(store))
store:UseMiddleware(profiles)
local fonts = tbl17.az()
GlobalTrove:Add(tbl17.aB().use(store, { "Notifications" }, { "Theme" }, function(f) return fonts:Get(f) end,
tbl17.bI().Notifications))
local reporter = GlobalTrove:Add(tbl17.ad().new())
local state = GlobalTrove:Add(tbl17.ae().new("kiciarebuild/rivals"))
local stateData = state:Load()
if stateData.AutoLoad and stateData.AutoLoadConfigName ~= nil then
local r = reporter:ReportResult(store:LoadFromFile(stateData.AutoLoadConfigName))
if not r.Ok then
local text = "Failed to auto-load the selected config"
if string.find(r.Error.Detail, "newer than current version", 1, true) ~= nil then
text = "Your selected config was saved by a newer version - update or pick another config"
end
tbl17.aB().get():Notify(text)
elseif #tbl17.bc().takeDroppedPaths() > 0 then
tbl17.aB().get():Notify("Some saved settings could not be restored and were reset to defaults")
end
end
local Theme = tbl17.A()
local theme = store.Data.Theme
if theme ~= nil then
for k, v in next, theme do
if Theme.Tokens[k] ~= nil and typeof(v) == "Color3" then Theme.refresh(k, v) end
end
end
local registry = GlobalTrove:Add(tbl17.bK().new())
local identities = GlobalTrove:Add(tbl17.bL().new(registry))
local tags = GlobalTrove:Add(tbl17.bM().new(registry))
GlobalTrove:Add(tbl17.bR().new(tags, registry))
GlobalTrove:Add(tbl17.bZ().new(identities))
local avatar = GlobalTrove:Add(tbl17.b6().new(registry))
return {
StoreProfiles = profiles,
PlayerRegistry = registry,
PlayerIdentities = identities,
PlayerTags = tags,
DecoratorFactory = avatar ~= nil and avatar:GetDecoratorFactory() or nil,
ArmAvatarSpoofer = function() avatar:Arm() end,
GeneralState = state,
GeneralStateData = stateData,
}
end
function K.Unload()
if K.destroyed then return end
K.destroyed = true
for _, f in ipairs(K.cleanups) do pcall(f) end
pcall(function() GlobalTrove:Destroy() end)
if getgenv().KiciaRebuild == K then getgenv().KiciaRebuild = nil end
end
-- (autoexec fix: game controller modules error when required before the
-- game finishes replicating them, so wait for Controllers before booting)
task.spawn(function()
local _players = game:GetService("Players")
local _wt0 = os.clock()
while not _players.LocalPlayer and os.clock() - _wt0 < 60 do task.wait() end
local _lp = _players.LocalPlayer
if not _lp then warn("[Kicia] ABORTED: no LocalPlayer after 60s"); return end
local _ps = _lp:FindFirstChild("PlayerScripts")
if not _ps then
pcall(function() _lp:WaitForChild("PlayerScripts", 60) end)
_ps = _lp:FindFirstChild("PlayerScripts")
end
if not _ps then warn("[Kicia] ABORTED: no PlayerScripts"); return end
local _ctrl = _ps:FindFirstChild("Controllers")
if _ps and not _ctrl then
print("[Kicia] waiting for PlayerScripts.Controllers ...")
pcall(function() _ps:WaitForChild("Controllers", 30) end)
_ctrl = _ps:FindFirstChild("Controllers")
end
if not _ctrl then
warn("[Kicia] ABORTED: PlayerScripts.Controllers not found. This script is built for Rivals - remove it from autoexec if you are in a different game.")
return
end
-- (no spawn gate: boot ASAP once data is ready)
-- Adaptive fast boot: NO require() calls before boot (hands off the game's
-- enum build). Boot as soon as the client looks alive: spawned + game HUD
-- present. Usually seconds after join; 45s cap, then boot anyway.
print("[Kicia] waiting for client to come alive ...")
local _wt1 = os.clock()
while os.clock() - _wt1 < 45 do
local _ch = _lp.Character
local _pg0 = _lp:FindFirstChild("PlayerGui")
local _spawnedOk = _ch ~= nil and _ch:FindFirstChildOfClass("Humanoid") ~= nil
local _uiOk = false
if _pg0 then
local _n = 0
for _, _c in ipairs(_pg0:GetChildren()) do
if _c:IsA("ScreenGui") then _n = _n + 1 end
end
_uiOk = _n >= 2
end
if _spawnedOk and _uiOk then break end
task.wait(1)
end
print("[Kicia] client alive, booting ...")
print("[Kicia] controllers ready, booting ...")
print("[FIX] auto-exec/color picker by skidcoded")
tbl17.j1()(bootFn())
task.spawn(function()
task.wait(60)
local _pg3 = _lp:FindFirstChild("PlayerGui")
local _ls = _pg3 and _pg3:FindFirstChild("LoadingScreen")
if _ls and _ls:IsA("LayerCollector") and _ls.Enabled then
print("[Kicia] please rejoin it broke lolz.")
_ls.Enabled = false
end
end)
end)