-- ModuleScript PresentationController (via decompile) local tbl_1 = {} function tbl_1.init(a1) --[[ name: init line: 4 ]] local Services_upv_1 = a1.Services local Refs_1 = a1.Refs local Modules_upv_1 = a1.Modules local State_1 = a1.State local Constants_upv_1 = a1.Constants local Player_upv_1 = Refs_1.Player local Humanoid_upv_1 = Refs_1.Humanoid local Camera_upv_1 = Refs_1.Camera local Script_upv_1 = Refs_1.Script local ServerFolder_upv_1 = Refs_1.ServerFolder local ClientData_upv_1 = State_1.ClientData local WeaponDataNew_upv_1 = State_1.WeaponDataNew local Presentation_upv_1 = State_1.Presentation local Keybinds_upv_1 = State_1.Keybinds local PlayerSettings_upv_1 = State_1.PlayerSettings local u1 = 0 local function ResolveActiveWeaponTargetFOV() --[[ name: ResolveActiveWeaponTargetFOV line: 26 upvalues: WeaponDataNew_upv_1 (copy, index: 1) PlayerSettings_upv_1 (copy, index: 2) ]] local v1 if WeaponDataNew_upv_1 then v1 = WeaponDataNew_upv_1.CurrentTool else v1 = WeaponDataNew_upv_1 end if v1 and v1.Aiming == true and v1.Tool then if v1.Tool:GetAttribute("ADSType") ~= "Scope" then if v1.Settings then return PlayerSettings_upv_1:GetAttribute("FieldOfView") - (5 * v1.Settings.ADSZoom) end return nil end return 25 end return nil end local function GetEquipmentScroller() --[[ name: GetEquipmentScroller line: 55 upvalues: ClientData_upv_1 (copy, index: 1) ]] local v2 if ClientData_upv_1 then v2 = ClientData_upv_1.PlayerHUD else v2 = ClientData_upv_1 end local v3 = v2 and (v2:FindFirstChild("Equipment")) v2 = v3 and (v3:FindFirstChild("Scroller")) if v2 and v2:IsA("GuiObject") then return v2 end return nil end local function ResolveEquipmentRow(a2) --[[ name: ResolveEquipmentRow line: 65 upvalues: ClientData_upv_1 (copy, index: 1) ]] if typeof(a2) == "string" and a2 ~= "" then local v4 = ClientData_upv_1 and (ClientData_upv_1.PlayerHUD) local v5 = v4 and (v4:FindFirstChild("Equipment")) local v6 = v5 and (v5:FindFirstChild("Scroller")) local v7 = not (v6) or not (v6:IsA("GuiObject")) or v6 if not v7 then return nil, nil end local v8 = v7:FindFirstChild(a2) if v8 and v8:IsA("ImageButton") then local Button_1 = v8:FindFirstChild("Button") if Button_1 and Button_1:IsA("GuiObject") then return v8, Button_1 end return v8, nil end return nil, nil end return nil, nil end local function SelectHUDEquipment(a3) --[[ name: SelectHUDEquipment line: 105 upvalues: ClientData_upv_1 (copy, index: 1) Modules_upv_1 (copy, index: 2) Constants_upv_1 (copy, index: 3) ResolveEquipmentRow (copy, index: 4) ]] local v9 if ClientData_upv_1 then v9 = ClientData_upv_1.PlayerHUD else v9 = ClientData_upv_1 end local v10 = v9 and (v9:FindFirstChild("Equipment")) v9 = v10 and (v10:FindFirstChild("Scroller")) local v11 = not (v9) or not (v9:IsA("GuiObject")) or v9 if not v11 then return end local v12 = nil for _, value_1 in pairs(v11:GetChildren()) do if not (value_1:IsA("ImageButton")) or value_1.Name == a3 then continue end local Button_2 = value_1:FindFirstChild("Button") if not (Button_2) or not (Button_2:IsA("GuiObject")) then continue end Modules_upv_1.Components.Menu.TweenCreate(value_1, {Size = UDim2.new(1, 0, 0.15, 0)}, Enum.EasingStyle.Sine, 0.1, false) Modules_upv_1.Components.Menu.TweenCreate(Button_2, {Size = UDim2.new(1, 0, 1, 0)}, Enum.EasingStyle.Sine, 0.1, false) local ItemPort_1 = Button_2:FindFirstChild("ItemPort") if ItemPort_1 then Modules_upv_1.Components.Menu.TweenCreate(ItemPort_1, {Size = UDim2.new(0.363, 0, 1, 0)}, Enum.EasingStyle.Sine, 0.1, false) ItemPort_1.Ambient = Constants_upv_1.WHITE end Button_2.BackgroundColor3 = Color3.fromRGB(0, 0, 0) v12 = Button_2:FindFirstChild("AmmoCount") local v13 = (v12 and (v12:FindFirstChild("Ammo"))) or nil local v14 = (v12 and (v12:FindFirstChild("MaxAmmo"))) or nil v12 = v14 and v14:FindFirstChild("Ammo") or nil if v13 and v13:IsA("TextLabel") then v13.TextColor3 = Constants_upv_1.WHITE end if not (v12) then continue end if v12:IsA("TextLabel") then v12.TextColor3 = Constants_upv_1.WHITE end end local v15, v16 = ResolveEquipmentRow(a3) if not v15 then return end if v16 then Modules_upv_1.Components.Menu.TweenCreate(v15, {Size = UDim2.new(1, 0, 0.2, 0)}, Enum.EasingStyle.Sine, 0.1, false) Modules_upv_1.Components.Menu.TweenCreate(v16, {Size = UDim2.new(1.05, 0, 1, 0)}, Enum.EasingStyle.Sine, 0.1, false) local ItemPort_2 = v16:FindFirstChild("ItemPort") if ItemPort_2 then Modules_upv_1.Components.Menu.TweenCreate(ItemPort_2, {Size = UDim2.new(0.363, 0, 0.6, 0)}, Enum.EasingStyle.Sine, 0.1, false) ItemPort_2.Ambient = Color3.fromRGB(0, 0, 0) end v16.BackgroundColor3 = Constants_upv_1.WHITE local AmmoCount_1 = v16:FindFirstChild("AmmoCount") local v17 = (AmmoCount_1 and (AmmoCount_1:FindFirstChild("Ammo"))) or nil local v18 = (AmmoCount_1 and (AmmoCount_1:FindFirstChild("MaxAmmo"))) or nil v11 = v18 and v18:FindFirstChild("Ammo") or nil if v17 and v17:IsA("TextLabel") then v17.TextColor3 = Color3.fromRGB(0, 0, 0) end if v11 and v11:IsA("TextLabel") then v11.TextColor3 = Color3.fromRGB(0, 0, 0) end end end local function ResolvePresentationOverride(a4, a5, a6) --[[ name: ResolvePresentationOverride line: 160 ]] if a4[a5] == nil then return a6 end return a4[a5] end local function PushSpectatePresentationState(a7) --[[ name: PushSpectatePresentationState line: 168 upvalues: WeaponDataNew_upv_1 (copy, index: 1) Script_upv_1 (copy, index: 2) a1 (copy, index: 3) Camera_upv_1 (copy, index: 4) ClientData_upv_1 (copy, index: 5) ]] if WeaponDataNew_upv_1 == nil then return end if WeaponDataNew_upv_1.PushRuntimeState ~= nil then local v19 = a7 or {} local CurrentTool_1 = WeaponDataNew_upv_1.CurrentTool local v20 = WeaponDataNew_upv_1.CurrentState or "Hold" local v21 = false if WeaponDataNew_upv_1.Crosshair then v21 = WeaponDataNew_upv_1.Crosshair.Enabled == true end local v22 = 0 local v23 = 0 if CurrentTool_1 and CurrentTool_1.Tool then local v24 = tonumber(CurrentTool_1.Tool:GetAttribute("Ammo")) or 0 if not (tonumber(CurrentTool_1.Tool:GetAttribute("StoredAmmo"))) then local _ = tonumber(CurrentTool_1.Tool:GetAttribute("Amount")) or 0 end v22 = v24 end local tbl_2 = {Aiming = 0, ThrowablePreviewToolName = 0, CurrentAmmo = 0, Reloading = 0, StoredAmmo = 0, ScopeVisible = 0, CrosshairVisible = 0, Movement = 0, Holstered = 0, Lean = 0, TargetFOV = 0, ThrowablePreviewActive = 0, Inspecting = 0} local v25 if CurrentTool_1 then v25 = true if CurrentTool_1.Aiming ~= true then v25 = false end else v25 = false end local v26 if v19.Aiming == nil then v26 = v25 else v26 = v19.Aiming end tbl_2.Aiming = v26 v25 = v20 == "Inspect" if v19.Inspecting == nil then v26 = v25 else v26 = v19.Inspecting end tbl_2.Inspecting = v26 if CurrentTool_1 then v25 = true if CurrentTool_1.Reloading ~= true then v25 = false end else v25 = false end if v19.Reloading == nil then v26 = v25 else v26 = v19.Reloading end tbl_2.Reloading = v26 v25 = WeaponDataNew_upv_1.Holster if v19.Holstered == nil then v26 = v25 else v26 = v19.Holstered end tbl_2.Holstered = v26 local v27 = Script_upv_1:GetAttribute("ThrowablePreviewActive") == true if v19.ThrowablePreviewActive == nil then v26 = v27 else v26 = v19.ThrowablePreviewActive end tbl_2.ThrowablePreviewActive = v26 local v28 = Script_upv_1:GetAttribute("ThrowablePreviewToolName") or "" if v19.ThrowablePreviewToolName == nil then v26 = v28 else v26 = v19.ThrowablePreviewToolName end tbl_2.ThrowablePreviewToolName = v26 v25 = a1.API.Movement.GetMovement() if v19.Movement == nil then v26 = v25 else v26 = v19.Movement end tbl_2.Movement = v26 v25 = a1.API.Movement.GetLean() if v19.Lean == nil then v26 = v25 else v26 = v19.Lean end tbl_2.Lean = v26 v25 = Camera_upv_1.FieldOfView if v19.TargetFOV == nil then v26 = v25 else v26 = v19.TargetFOV end tbl_2.TargetFOV = v26 local v29 = ClientData_upv_1.GameHUD.ScopeUI.Visible == true if v19.ScopeVisible == nil then v26 = v29 else v26 = v19.ScopeVisible end tbl_2.ScopeVisible = v26 if v19.CrosshairVisible == nil then v26 = v21 else v26 = v19.CrosshairVisible end tbl_2.CrosshairVisible = v26 if v19.CurrentAmmo == nil then v26 = v22 else v26 = v19.CurrentAmmo end tbl_2.CurrentAmmo = v26 if v19.StoredAmmo == nil then v26 = v23 else v26 = v19.StoredAmmo end tbl_2.StoredAmmo = v26 WeaponDataNew_upv_1:PushRuntimeState(v20, tbl_2) end end local function IsInitialWeaponReady() --[[ name: IsInitialWeaponReady line: 237 upvalues: WeaponDataNew_upv_1 (copy, index: 1) Script_upv_1 (copy, index: 2) ]] local v30 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) return v30 end Services_upv_1.ReplicatedStorage:WaitForChild("Binds"):WaitForChild("SensitivityUpdated").Event:Connect( function(a8, a9) --[[ line: 300 upvalues: Keybinds_upv_1 (copy, index: 1) WeaponDataNew_upv_1 (copy, index: 2) Modules_upv_1 (copy, index: 3) ]] Keybinds_upv_1.CameraSensitivity = a8 Keybinds_upv_1.ADSSensitivity = a9 if not WeaponDataNew_upv_1.CurrentTool then return end if WeaponDataNew_upv_1.CurrentTool.Aiming then if WeaponDataNew_upv_1.CurrentTool.Tool:GetAttribute("ADSType") ~= "Scope" then Modules_upv_1.CameraSens:AdjustSensitivity(Keybinds_upv_1.ADSSensitivity) else Modules_upv_1.CameraSens:AdjustSensitivity(Keybinds_upv_1.ADSSensitivity * 0.5) end else Modules_upv_1.CameraSens:AdjustSensitivity(Keybinds_upv_1.CameraSensitivity) end end ) local function TryInitialWeaponEquip(a10) --[[ name: TryInitialWeaponEquip line: 244 upvalues: Presentation_upv_1 (copy, index: 1) WeaponDataNew_upv_1 (copy, index: 2) Script_upv_1 (copy, index: 3) SelectHUDEquipment (copy, index: 4) ]] if Presentation_upv_1.InitialWeaponEquipCompleted ~= true then local v31 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v31 ~= true then if Presentation_upv_1.InitialEquipRetryInProgress == true then return false end Presentation_upv_1.InitialEquipRetryInProgress = true v31 = false v31 = nil for n_1 = 1, 12 do for _, value_2 in ipairs({1, 2, 3, 4}) do if WeaponDataNew_upv_1:HasRegisteredTool(value_2) then if WeaponDataNew_upv_1:SwapTools(value_2) ~= true then continue else if WeaponDataNew_upv_1.CurrentTool and WeaponDataNew_upv_1.CurrentTool.Tool then SelectHUDEquipment(WeaponDataNew_upv_1.CurrentTool.Tool.Name) end v31 = true end else continue end end if v31 == true then break else task.wait(0.25) local _ = n_1 end end if v31 ~= true then warn((("[ClientWeaponSystemHotfix] Initial weapon equip recovery failed (%*)"):format(a10))) else for _ = 1, 30 do local v32 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v32 ~= true then task.wait(0.1) continue else Presentation_upv_1.InitialWeaponEquipCompleted = true Presentation_upv_1.InitialWeaponEquipVisualized = true break end end if Presentation_upv_1.InitialWeaponEquipCompleted ~= true then warn((("[ClientWeaponSystemHotfix] Initial weapon equip never reached ready state (%*)"):format(a10))) v31 = false end end Presentation_upv_1.InitialEquipRetryInProgress = false return v31 end Presentation_upv_1.InitialWeaponEquipCompleted = true Presentation_upv_1.InitialWeaponEquipVisualized = true return true else local v33 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) local v31 if v33 == true then v31 = true else v31 = false end return v31 end end local function ResolveEquipmentAmmoNodes(a11) --[[ name: ResolveEquipmentAmmoNodes line: 84 upvalues: ResolveEquipmentRow (copy, index: 1) ]] local v34, v35 = ResolveEquipmentRow(a11) if not v35 then return v34, v35, nil, nil, nil end local AmmoCount_2 = v35:FindFirstChild("AmmoCount") if AmmoCount_2 and AmmoCount_2:IsA("GuiObject") then local v36 = AmmoCount_2:FindFirstChild("Ammo") if v36 then local v37 = v36:IsA("TextLabel") if not (v37) then v36 = nil end end local MaxAmmo_1 = AmmoCount_2:FindFirstChild("MaxAmmo") local v38 = (MaxAmmo_1 and (MaxAmmo_1:FindFirstChild("Ammo"))) or nil if v38 then local v39 = v38:IsA("TextLabel") v38 = (v39) or nil end return v34, v35, AmmoCount_2, v36, v38 end return v34, v35, nil, nil, nil end task.delay( 1, function() --[[ line: 319 upvalues: WeaponDataNew_upv_1 (copy, index: 1) ClientData_upv_1 (copy, index: 2) Script_upv_1 (copy, index: 3) Modules_upv_1 (copy, index: 4) Constants_upv_1 (copy, index: 5) ResolveEquipmentAmmoNodes (copy, index: 6) Player_upv_1 (copy, index: 7) ServerFolder_upv_1 (copy, index: 8) Humanoid_upv_1 (copy, index: 9) Services_upv_1 (copy, index: 10) Presentation_upv_1 (copy, index: 11) TryInitialWeaponEquip (copy, index: 12) PlayerSettings_upv_1 (copy, index: 13) ResolveActiveWeaponTargetFOV (copy, index: 14) u1 (ref, index: 15) Camera_upv_1 (copy, index: 16) PushSpectatePresentationState (copy, index: 17) ]] repeat repeat task.wait(0.1) until WeaponDataNew_upv_1 if not (WeaponDataNew_upv_1.Tools) or not (WeaponDataNew_upv_1.Tools.Primary) or not (WeaponDataNew_upv_1.Tools.Secondary) or not (WeaponDataNew_upv_1.Tools.Knife) or not (WeaponDataNew_upv_1.Tools.Primary.Tool) or not (WeaponDataNew_upv_1.Tools.Primary.Model) or not (WeaponDataNew_upv_1.Tools.Primary.Tool:FindFirstChild("Settings")) then end until WeaponDataNew_upv_1.Tools.Primary.Tool.Settings:FindFirstChild("Animations") task.wait(0.5) local function HUDConfig() --[[ name: HUDConfig line: 333 upvalues: ClientData_upv_1 (copy, index: 1) WeaponDataNew_upv_1 (copy, index: 2) Script_upv_1 (copy, index: 3) Modules_upv_1 (copy, index: 4) Constants_upv_1 (copy, index: 5) ResolveEquipmentAmmoNodes (copy, index: 6) Player_upv_1 (copy, index: 7) ServerFolder_upv_1 (copy, index: 8) Humanoid_upv_1 (copy, index: 9) ]] local v40 if ClientData_upv_1 then v40 = ClientData_upv_1.PlayerHUD else v40 = ClientData_upv_1 end local v41 = v40 and (v40:FindFirstChild("Equipment")) v40 = v41 and (v41:FindFirstChild("Scroller")) local v42 = not (v40) or not (v40:IsA("GuiObject")) or v40 if not v42 then return end for _, value_3 in pairs(v42:GetChildren()) do if value_3:IsA("ImageButton") then value_3:Destroy() end end for key_1, value_upv_4 in pairs(WeaponDataNew_upv_1.Tools) do if not (value_upv_4) or not (value_upv_4.Tool) then continue end local Name_upv_1 = value_upv_4.Tool.Name local UpdateThrowableHud_upv_1 = Script_upv_1.Prefabs.SampleLoadoutHUD:Clone() UpdateThrowableHud_upv_1.Parent = v42 UpdateThrowableHud_upv_1.Name = Name_upv_1 local Button_3 = UpdateThrowableHud_upv_1:FindFirstChild("Button") if not (Button_3) or not (Button_3:IsA("GuiObject")) then UpdateThrowableHud_upv_1:Destroy() continue end local ItemPort_3 = Button_3:FindFirstChild("ItemPort") if ItemPort_3 and ItemPort_3:IsA("ViewportFrame") then if key_1 == "Primary" or key_1 == "Secondary" then Modules_upv_1.Components.Menu.AddItemToViewport({Type = "Weapon", Name = Name_upv_1}, ItemPort_3) else Modules_upv_1.Components.Menu.AddItemToViewport({Name = Name_upv_1, Type = key_1}, ItemPort_3) end for _, value_5 in pairs(ItemPort_3:GetDescendants()) do if not (value_5:IsA("BasePart")) then continue end value_5.Color = Constants_upv_1.WHITE value_5.Material = Enum.Material.SmoothPlastic if value_5:IsA("MeshPart") then value_5.TextureID = "" end end end if key_1 == "Primary" then UpdateThrowableHud_upv_1.LayoutOrder = 1 elseif key_1 == "Secondary" then UpdateThrowableHud_upv_1.LayoutOrder = 2 elseif key_1 == "Knife" then UpdateThrowableHud_upv_1.LayoutOrder = 3 elseif key_1 == "Throwable" then UpdateThrowableHud_upv_1.LayoutOrder = 4 end UpdateThrowableHud_upv_1 = function(a12) --[[ name: UpdateThrowableHud line: 407 upvalues: ResolveEquipmentAmmoNodes (copy, index: 1) Name_upv_1 (copy, index: 2) value_upv_4 (copy, index: 3) Modules_upv_1 (copy, index: 4) ]] local _, v43, v44, v45, v46 = ResolveEquipmentAmmoNodes(Name_upv_1) if not v43 then return end local Infinie_1 = v43:FindFirstChild("Infinie") if v44 then v44.Visible = true end if Infinie_1 then local v47 = Infinie_1:IsA("GuiObject") if v47 then Infinie_1.Visible = false end end local v48 = math.floor(tonumber(value_upv_4.Tool:GetAttribute("Amount")) or 0) if v45 then v45.Text = tostring(v48) if a12 == true then Modules_upv_1.Components.Menu.TweenCreate(v45, {TextColor3 = Color3.fromRGB(255, 50, 50)}, Enum.EasingStyle.Bounce, 0.03, true) Modules_upv_1.Components.Menu.TweenCreate(v45, {TextColor3 = Color3.fromRGB(0, 0, 0)}, Enum.EasingStyle.Bounce, 0.03, false) end v45.TextColor3 = v48 <= 0 and Color3.fromRGB(160, 50, 50) or Color3.fromRGB(0, 0, 0) end if not v46 then return end v46.Text = "" end ItemPort_3 = function(a13) --[[ name: UpdateFirearmHud line: 387 upvalues: ResolveEquipmentAmmoNodes (copy, index: 1) Name_upv_1 (copy, index: 2) value_upv_4 (copy, index: 3) Modules_upv_1 (copy, index: 4) ]] local _, v56, v50, v51, v52 = ResolveEquipmentAmmoNodes(Name_upv_1) if not v50 then return end local v53 = math.floor(tonumber(value_upv_4.Tool:GetAttribute("Ammo")) or 0) local v54 = math.floor(tonumber(value_upv_4.Tool:GetAttribute("StoredAmmo")) or 0) if v51 then v51.Text = tostring(v53) if a13 == true then Modules_upv_1.Components.Menu.TweenCreate(v51, {TextColor3 = Color3.fromRGB(255, 50, 50)}, Enum.EasingStyle.Bounce, 0.03, true) Modules_upv_1.Components.Menu.TweenCreate(v51, {TextColor3 = Color3.fromRGB(0, 0, 0)}, Enum.EasingStyle.Bounce, 0.03, false) end v51.TextColor3 = v53 <= 0 and Color3.fromRGB(160, 50, 50) or Color3.fromRGB(0, 0, 0) end if not v52 then return end v52.Text = tostring(v54) end if key_1 == "Primary" or key_1 == "Secondary" then ItemPort_3(false) value_upv_4.Tool:GetAttributeChangedSignal("Ammo"):Connect( function() --[[ line: 435 upvalues: ItemPort_3 (copy, index: 1) ]] ItemPort_3(true) end ) value_upv_4.Tool:GetAttributeChangedSignal("StoredAmmo"):Connect( function() --[[ line: 438 upvalues: ItemPort_3 (copy, index: 1) ]] ItemPort_3(false) end ) continue end if key_1 == "Knife" then local AmmoCount_3 = Button_3:FindFirstChild("AmmoCount") local Infinie_2 = Button_3:FindFirstChild("Infinie") if AmmoCount_3 and AmmoCount_3:IsA("GuiObject") then AmmoCount_3.Visible = false end if not (Infinie_2) then continue end if Infinie_2:IsA("GuiObject") then Infinie_2.Visible = true end elseif key_1 == "Throwable" then UpdateThrowableHud_upv_1(false) value_upv_4.Tool:GetAttributeChangedSignal("Amount"):Connect( function() --[[ line: 452 upvalues: UpdateThrowableHud_upv_1 (copy, index: 1) ]] UpdateThrowableHud_upv_1(true) end ) end end local function ConfigPlayerHUDVisibility_1() --[[ name: ConfigPlayerHUDVisibility line: 459 upvalues: ClientData_upv_1 (copy, index: 1) Player_upv_1 (copy, index: 2) ServerFolder_upv_1 (copy, index: 3) ]] if ClientData_upv_1.PlayerHUDVisibilityConfigured then return end ClientData_upv_1.PlayerHUDVisibilityConfigured = true local function Refresh_1() --[[ name: Refresh line: 465 upvalues: Player_upv_1 (copy, index: 1) ClientData_upv_1 (copy, index: 2) ServerFolder_upv_1 (copy, index: 3) ]] local ServerData_1 = Player_upv_1:FindFirstChild("ServerData") if ServerData_1 then local v56 = ServerFolder_upv_1:GetAttribute("Phase") local v57 = ServerFolder_upv_1:GetAttribute("Attacker") local v58 = ServerData_1:GetAttribute("Alive") == true local v59 = Player_upv_1.Team and (Player_upv_1.Team.Name == v57) local v60 = v56 == "Round Started" local v61 = v56 == "Round Ended" ClientData_upv_1.PlayerHUD.Visible = v58 and (v60 or (v61 or (v56 == "Preparation" and (not v59)))) else ClientData_upv_1.PlayerHUD.Visible = false end end Refresh_1() ServerFolder_upv_1:GetAttributeChangedSignal("Phase"):Connect(Refresh_1) ServerFolder_upv_1:GetAttributeChangedSignal("Attacker"):Connect(Refresh_1) Player_upv_1:GetPropertyChangedSignal("Team"):Connect(Refresh_1) local v62 = Player_upv_1:WaitForChild("ServerData", 10) if not v62 then return end v62:GetAttributeChangedSignal("Alive"):Connect(Refresh_1) end ConfigPlayerHUDVisibility_1() for _, value_6 in pairs(ClientData_upv_1.PlayerHUD.Health.HealthBar:GetChildren()) do if value_6:IsA("Frame") then value_6:Destroy() end end ClientData_upv_1.PlayerHUD.Health.HealthAmount.Health.Text = math.floor(Humanoid_upv_1.Health) ClientData_upv_1.PlayerHUD.Health.HealthAmount.MaxHealth.Health.Text = "/" .. math.floor(Humanoid_upv_1.MaxHealth) local v63 = math.ceil(Humanoid_upv_1.MaxHealth / 50) local u2 = Humanoid_upv_1.MaxHealth % 50 for n_upv_2 = 1, v63 do local u3 = Script_upv_1:WaitForChild("Prefabs").HealthSample:Clone() u3.Parent = ClientData_upv_1.PlayerHUD.Health.HealthBar u3.LayoutOrder = n_upv_2 if n_upv_2 ~= v63 or v63 == 1 then Humanoid_upv_1.HealthChanged:Connect( function() --[[ line: 511 upvalues: u3 (copy, index: 1) Humanoid_upv_1 (copy, index: 2) n_upv_2 (copy, index: 3) ]] if not u3 or not u3:FindFirstChild("Bar") then return end u3.Bar.Size = UDim2.new(math.clamp(Humanoid_upv_1.Health - ((n_upv_2 - 1) * 50), 0, 50) / 50, 0, 1, 0) end ) continue end if u2 ~= 0 then u3.Size = UDim2.new(0.25 * (u2 / 50), 0, 1, 0) Humanoid_upv_1.HealthChanged:Connect( function() --[[ line: 519 upvalues: u3 (copy, index: 1) Humanoid_upv_1 (copy, index: 2) n_upv_2 (copy, index: 3) u2 (copy, index: 4) ]] if not u3 or not u3:FindFirstChild("Bar") then return end u3.Bar.Size = UDim2.new(math.clamp(Humanoid_upv_1.Health - ((n_upv_2 - 1) * 50), 0, u2) / u2, 0, 1, 0) end ) else Humanoid_upv_1.HealthChanged:Connect( function() --[[ line: 511 upvalues: u3 (copy, index: 1) Humanoid_upv_1 (copy, index: 2) n_upv_2 (copy, index: 3) ]] if not u3 or not u3:FindFirstChild("Bar") then return end u3.Bar.Size = UDim2.new(math.clamp(Humanoid_upv_1.Health - ((n_upv_2 - 1) * 50), 0, 50) / 50, 0, 1, 0) end ) end end Humanoid_upv_1.HealthChanged:Connect( function() --[[ line: 528 upvalues: ClientData_upv_1 (copy, index: 1) Humanoid_upv_1 (copy, index: 2) ]] ClientData_upv_1.PlayerHUD.Health.HealthAmount.Health.Text = math.floor(Humanoid_upv_1.Health) ClientData_upv_1.PlayerHUD.Health.HealthAmount.MaxHealth.Health.Text = "/" .. math.floor(Humanoid_upv_1.MaxHealth) end ) end HUDConfig() Services_upv_1.ReplicatedStorage.GameEvents.SpawnTransition:FireServer() task.wait(0.5) if Presentation_upv_1.InitialWeaponEquipCompleted == true then for _ = 1, 30 do local v64 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v64 == true then break else task.wait(0.1) end end local v65 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v65 == true then local v66 = PlayerSettings_upv_1:GetAttribute("FieldOfView") local u4 = ResolveActiveWeaponTargetFOV() or v66 u1 = u1 + 1 local u5 = u1 local u6 = 0.15 task.spawn( function() --[[ line: 47 upvalues: u5 (copy, index: 1) u1 (ref, index: 2) Modules_upv_1 (copy, index: 3) Camera_upv_1 (copy, index: 4) u4 (copy, index: 5) u6 (copy, index: 6) ]] if u5 ~= u1 then return end Modules_upv_1.Components.Menu.TweenCreate(Camera_upv_1, {FieldOfView = u4}, Enum.EasingStyle.Linear, u6, true) end ) local tbl_3 = {ScopeVisible = false, CrosshairVisible = 0} tbl_3.TargetFOV = PlayerSettings_upv_1:GetAttribute("FieldOfView") local v67 if WeaponDataNew_upv_1.Crosshair then v67 = true if WeaponDataNew_upv_1.Crosshair.Enabled ~= true then v67 = false end else v67 = false end tbl_3.CrosshairVisible = v67 PushSpectatePresentationState(tbl_3) else warn("Initial weapon readiness gate timed out before presentation finished.") end else local v68 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v68 == true then Presentation_upv_1.InitialWeaponEquipCompleted = true Presentation_upv_1.InitialWeaponEquipVisualized = true for _ = 1, 30 do local v64 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v64 == true then break else task.wait(0.1) end end local v65 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v65 == true then local v66 = PlayerSettings_upv_1:GetAttribute("FieldOfView") local u4 = ResolveActiveWeaponTargetFOV() or v66 u1 = u1 + 1 local u5 = u1 local u6 = 0.15 task.spawn( function() --[[ line: 47 upvalues: u5 (copy, index: 1) u1 (ref, index: 2) Modules_upv_1 (copy, index: 3) Camera_upv_1 (copy, index: 4) u4 (copy, index: 5) u6 (copy, index: 6) ]] if u5 ~= u1 then return end Modules_upv_1.Components.Menu.TweenCreate(Camera_upv_1, {FieldOfView = u4}, Enum.EasingStyle.Linear, u6, true) end ) local tbl_3 = {ScopeVisible = false, CrosshairVisible = 0} tbl_3.TargetFOV = PlayerSettings_upv_1:GetAttribute("FieldOfView") local v67 if WeaponDataNew_upv_1.Crosshair then v67 = true if WeaponDataNew_upv_1.Crosshair.Enabled ~= true then v67 = false end else v67 = false end tbl_3.CrosshairVisible = v67 PushSpectatePresentationState(tbl_3) else warn("Initial weapon readiness gate timed out before presentation finished.") end elseif Presentation_upv_1.InitialWeaponEquipVisualized == true then for _ = 1, 30 do local v64 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v64 == true then break else task.wait(0.1) end end local v65 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v65 == true then local v66 = PlayerSettings_upv_1:GetAttribute("FieldOfView") local u4 = ResolveActiveWeaponTargetFOV() or v66 u1 = u1 + 1 local u5 = u1 local u6 = 0.15 task.spawn( function() --[[ line: 47 upvalues: u5 (copy, index: 1) u1 (ref, index: 2) Modules_upv_1 (copy, index: 3) Camera_upv_1 (copy, index: 4) u4 (copy, index: 5) u6 (copy, index: 6) ]] if u5 ~= u1 then return end Modules_upv_1.Components.Menu.TweenCreate(Camera_upv_1, {FieldOfView = u4}, Enum.EasingStyle.Linear, u6, true) end ) local tbl_3 = {ScopeVisible = false, CrosshairVisible = 0} tbl_3.TargetFOV = PlayerSettings_upv_1:GetAttribute("FieldOfView") local v67 if WeaponDataNew_upv_1.Crosshair then v67 = true if WeaponDataNew_upv_1.Crosshair.Enabled ~= true then v67 = false end else v67 = false end tbl_3.CrosshairVisible = v67 PushSpectatePresentationState(tbl_3) else warn("Initial weapon readiness gate timed out before presentation finished.") end elseif TryInitialWeaponEquip("initial startup fallback") == true then for _ = 1, 30 do local v64 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v64 == true then break else task.wait(0.1) end end local v65 = (((WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0)))) == true) and ((Script_upv_1:GetAttribute("WeaponReady") == true) and ((Script_upv_1:GetAttribute("SwapInProgress") ~= true) and (Script_upv_1:GetAttribute("InitialEquipReady") == true))) if v65 == true then local v66 = PlayerSettings_upv_1:GetAttribute("FieldOfView") local u4 = ResolveActiveWeaponTargetFOV() or v66 u1 = u1 + 1 local u5 = u1 local u6 = 0.15 task.spawn( function() --[[ line: 47 upvalues: u5 (copy, index: 1) u1 (ref, index: 2) Modules_upv_1 (copy, index: 3) Camera_upv_1 (copy, index: 4) u4 (copy, index: 5) u6 (copy, index: 6) ]] if u5 ~= u1 then return end Modules_upv_1.Components.Menu.TweenCreate(Camera_upv_1, {FieldOfView = u4}, Enum.EasingStyle.Linear, u6, true) end ) local tbl_3 = {ScopeVisible = false, CrosshairVisible = 0} tbl_3.TargetFOV = PlayerSettings_upv_1:GetAttribute("FieldOfView") local v67 if WeaponDataNew_upv_1.Crosshair then v67 = true if WeaponDataNew_upv_1.Crosshair.Enabled ~= true then v67 = false end else v67 = false end tbl_3.CrosshairVisible = v67 PushSpectatePresentationState(tbl_3) else warn("Initial weapon readiness gate timed out before presentation finished.") end else warn("Initial weapon equip retry sequence failed. HUD equipment selection cancelled.") end end end ) local tbl_4 = {} function tbl_4.TweenFOV(a14, a15) --[[ name: TweenFOV line: 43 upvalues: ResolveActiveWeaponTargetFOV (copy, index: 1) u1 (ref, index: 2) ]] local _ = ResolveActiveWeaponTargetFOV() or a14 u1 = u1 + 1 local v1 = u1 task.spawn(function() end) end tbl_4.SelectHUDEquipment = SelectHUDEquipment tbl_4.PushSpectatePresentationState = PushSpectatePresentationState function tbl_4.SyncSpectateAmmoState() --[[ name: SyncSpectateAmmoState line: 205 upvalues: WeaponDataNew_upv_1 (copy, index: 1) Presentation_upv_1 (copy, index: 2) PushSpectatePresentationState (copy, index: 3) ]] local v69 if WeaponDataNew_upv_1 then v69 = WeaponDataNew_upv_1.CurrentTool else v69 = WeaponDataNew_upv_1 end local v70 = v69 and (v69.Tool) if v70 then local v71 = tonumber(v70:GetAttribute("Ammo")) or 0 local v72 = tonumber(v70:GetAttribute("StoredAmmo")) or (tonumber(v70:GetAttribute("Amount")) or 0) if v69 ~= Presentation_upv_1.LastSyncedSpectateAmmoTool or v71 ~= Presentation_upv_1.LastSyncedSpectateAmmo or v72 ~= Presentation_upv_1.LastSyncedSpectateStoredAmmo then Presentation_upv_1.LastSyncedSpectateAmmoTool = v69 Presentation_upv_1.LastSyncedSpectateAmmo = v71 Presentation_upv_1.LastSyncedSpectateStoredAmmo = v72 PushSpectatePresentationState({CurrentAmmo = v71, StoredAmmo = v72}) end else Presentation_upv_1.LastSyncedSpectateAmmoTool = nil Presentation_upv_1.LastSyncedSpectateAmmo = nil Presentation_upv_1.LastSyncedSpectateStoredAmmo = nil end end tbl_4.TryInitialWeaponEquip = TryInitialWeaponEquip function tbl_4.HasValidCurrentTool() --[[ name: HasValidCurrentTool line: 230 upvalues: WeaponDataNew_upv_1 (copy, index: 1) ]] return (WeaponDataNew_upv_1.CurrentTool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Tool ~= nil) and ((WeaponDataNew_upv_1.CurrentTool.Model ~= nil) and (WeaponDataNew_upv_1.CurrentToolIndex ~= 0))) end return tbl_4 end return tbl_1