-- ModuleScript Weapon (via decompile) local ReplicatedStorage_upv_1 = game:GetService("ReplicatedStorage") local CollectionService_upv_1 = game:GetService("CollectionService") local RunService_upv_1 = game:GetService("RunService") local SoundService_upv_1 = game:GetService("SoundService") local Players_upv_1 = game:GetService("Players") local Config_upv_1 = require(ReplicatedStorage_upv_1.Config) local Utility_upv_1 = require(ReplicatedStorage_upv_1:WaitForChild("Modules"):WaitForChild("Utility")) local _ = require(ReplicatedStorage_upv_1.Modules.TypeModules.Types) local v1 = ReplicatedStorage_upv_1:WaitForChild("Server") local tbl_1 = {"Front", "Back", "Right", "Left", "Top", "Bottom"} local tbl_upv_2 = {"Sight", "Muzzle", "Grip", "Charm", "Extra"} local tbl_upv_3 = {"Laser", "Tactical Light"} table.freeze(tbl_1) table.freeze(tbl_upv_2) local tbl_upv_4 = {} local function applyRuntimePartProperties(a1, a2, a3) --[[ name: applyRuntimePartProperties line: 34 ]] a1.Anchored = a2 a1.CanCollide = a3 a1.CanTouch = false a1.CanQuery = false a1.CastShadow = false a1.Massless = true a1.AudioCanCollide = false end local function initializeExtraAttachment(a1) --[[ name: initializeExtraAttachment line: 58 upvalues: tbl_upv_3 (copy, index: 1) CollectionService_upv_1 (copy, index: 2) RunService_upv_1 (copy, index: 3) Config_upv_1 (copy, index: 4) ]] local v1 = false for _, value_1 in tbl_upv_3 do if CollectionService_upv_1:HasTag(a1, value_1) then v1 = true break end end if v1 ~= true then return end a1:SetAttribute("Active", false) a1:SetAttribute("HideForOwner", false) a1:SetAttribute("LaserHitPosition", nil) a1:SetAttribute("TargetPosition", nil) if RunService_upv_1:IsClient() and workspace.CurrentCamera and a1:IsDescendantOf(workspace.CurrentCamera) and a1:GetAttribute("__WeaponExtraComponentInitialized") ~= true then a1:SetAttribute("__WeaponExtraComponentInitialized", true) Config_upv_1.AddComponents(a1) end end function tbl_upv_4.InitializeExtraAttachment(a1) --[[ name: InitializeExtraAttachment line: 85 upvalues: initializeExtraAttachment (copy, index: 1) ]] initializeExtraAttachment(a1) end local function getTaggedExtra(a1) --[[ name: getTaggedExtra line: 44 upvalues: tbl_upv_3 (copy, index: 1) CollectionService_upv_1 (copy, index: 2) ]] for _, value_2 in a1:GetDescendants() do if not (value_2:IsA("Model")) then continue end for v1, value_3 in tbl_upv_3 do if not (CollectionService_upv_1:HasTag(value_2, value_3)) then continue end return value_2, value_3 end end return nil, nil end function tbl_upv_4.GetWeaponExtra(a1) --[[ name: GetWeaponExtra line: 89 upvalues: getTaggedExtra (copy, index: 1) ]] return getTaggedExtra(a1) end function tbl_upv_4.HasLaser(a1) --[[ name: HasLaser line: 93 upvalues: getTaggedExtra (copy, index: 1) ]] local _, v2 = getTaggedExtra(a1) return v2 == "Laser" end function tbl_upv_4.SetExtraTarget(a1, a2) --[[ name: SetExtraTarget line: 98 upvalues: getTaggedExtra (copy, index: 1) ]] local v3, v4 = getTaggedExtra(a1) if v3 and v4 == "Laser" then if v3:GetAttribute("LaserHitPosition") ~= a2 then v3:SetAttribute("LaserHitPosition", a2) end if v3:GetAttribute("TargetPosition") ~= nil then v3:SetAttribute("TargetPosition", nil) end return true end return false end function tbl_upv_4.SetExtraState(a1, a2, a3) --[[ name: SetExtraState line: 115 upvalues: getTaggedExtra (copy, index: 1) tbl_upv_4 (copy, index: 2) ]] local v5 = getTaggedExtra(a1) if v5 then if v5:GetAttribute("Active") ~= a2 then v5:SetAttribute("Active", a2) end if a3 ~= nil and v5:GetAttribute("HideForOwner") ~= a3 then v5:SetAttribute("HideForOwner", a3) end if a2 ~= true then tbl_upv_4.SetExtraTarget(a1, nil) end return true end return false end function tbl_upv_4.SetExclusiveExtraState(a1, a2, a3) --[[ name: SetExclusiveExtraState line: 136 upvalues: tbl_upv_4 (copy, index: 1) ]] local v6 = nil for _, value_4 in pairs(a1) do if not (value_4) or value_4.Parent == nil then continue end local v7 = value_4 == a2 local SetExtraState_1 = tbl_upv_4.SetExtraState if not (v7) then v6 = false SetExtraState_1(value_4, v7, v6) continue end v6 = a3 or false SetExtraState_1(value_4, v7, v6) end end function tbl_upv_4.SetAttachmentSkins(a1, a2, a3) --[[ name: SetAttachmentSkins line: 145 upvalues: Utility_upv_1 (copy, index: 1) ReplicatedStorage_upv_1 (copy, index: 2) ]] local v8, _ = nil, nil for v11, value_5 in a1:GetChildren() do if not (value_5:IsA("Model")) then continue end local v9 = value_5:GetAttribute("Type") if not (v9) then continue end v8 = true if a3 ~= "Primary" then v8 = a3 == "Secondary" end if not (v8) then Utility_upv_1.warnCustom("WeaponClass is not valid: " .. tostring(a3)) continue end v8 = a2:GetAttribute(a3 .. v9 .. "Skin") if not (v8) or v8 == "" then continue end local v10 = ReplicatedStorage_upv_1.Items.AttachmentSkin:FindFirstChild(v8) if v10 then v8 = v10.Texture for v12, value_6 in value_5:GetChildren() do if value_6:IsA("MeshPart") then value_6.TextureID = v8 end end continue else warn(Utility_upv_1.formatWarnInstanceIsNil("ReplicatedStorage.Items.AttachmentSkin", tostring(v8))) return end end end function tbl_upv_4.SetSkinOnWep(a1, a2) --[[ name: SetSkinOnWep line: 172 upvalues: Utility_upv_1 (copy, index: 1) ReplicatedStorage_upv_1 (copy, index: 2) ]] if a1 then if a2 then if a2 == "" then return end local v11 = ReplicatedStorage_upv_1.Items.Skin:FindFirstChild(a2) if v11 then local v12 = nil for _, value_7 in a1:GetChildren() do if value_7:IsA("Script") or value_7:IsA("Model") or value_7 == a1.Handle then continue end local Name_1 = value_7.Name v12 = true if Name_1 ~= "Body" then v12 = true if Name_1 ~= "TopCover" then v12 = Name_1 == "Iron Sight" end end if value_7.Color == a1.Handle.Color or value_7.Color ~= a1.Handle.Color and (v12) then for v13, value_8 in value_7:GetChildren() do if value_8:IsA("Texture") then value_8:Destroy() end end if value_7:IsA("MeshPart") then value_7.TextureID = v11.Texture value_7.Color = Color3.new(1, 1, 1) end end end else warn(Utility_upv_1.formatWarnInstanceIsNil("ReplicatedStorage.Items.Skin", a2, "Could not find a weapon skin with given name")) end else warn(Utility_upv_1.warnCustom("Argument skin is nil")) end else warn(Utility_upv_1.warnCustom("Argument weaponModel is nil")) end end function tbl_upv_4.WeldToSomething(a1, a2) --[[ name: WeldToSomething line: 228 ]] local v13 = Instance.new("WeldConstraint") v13.Part0 = a1 v13.Part1 = a2 v13.Parent = a2 end function tbl_upv_4.WeldWeapon(a1) --[[ name: WeldWeapon line: 235 upvalues: tbl_upv_4 (copy, index: 1) ]] if not (a1.PrimaryPart) then a1.PrimaryPart = a1.Handle end for _, value_9 in a1:GetDescendants() do if not (value_9:IsA("BasePart")) then continue end local Name_2 = value_9.Name if Name_2 == "Magazine" then local v14 = Instance.new("Motor6D") v14.Name = value_9.Name .. "Motor" v14.Part0 = a1.PrimaryPart v14.Part1 = value_9 v14.C0 = a1.PrimaryPart.CFrame:ToObjectSpace(value_9.CFrame) v14.Parent = a1.PrimaryPart value_9.Anchored = false value_9.CanCollide = false value_9.CanTouch = false value_9.CanQuery = false value_9.CastShadow = false value_9.Massless = true value_9.AudioCanCollide = false continue end if Name_2 ~= "TopCover" then tbl_upv_4.WeldToSomething(value_9, a1.PrimaryPart) value_9.Massless = true else local v14 = Instance.new("Motor6D") v14.Name = value_9.Name .. "Motor" v14.Part0 = a1.PrimaryPart v14.Part1 = value_9 v14.C0 = a1.PrimaryPart.CFrame:ToObjectSpace(value_9.CFrame) v14.Parent = a1.PrimaryPart end value_9.Anchored = false value_9.CanCollide = false value_9.CanTouch = false value_9.CanQuery = false value_9.CastShadow = false value_9.Massless = true value_9.AudioCanCollide = false end end function tbl_upv_4.GetWeaponsOfClass(a1) --[[ name: GetWeaponsOfClass line: 259 upvalues: ReplicatedStorage_upv_1 (copy, index: 1) ]] local tbl_5 = {} for _, value_10 in ReplicatedStorage_upv_1.Items.Weapon:GetChildren() do if value_10:GetAttribute("Class") == a1 then table.insert(tbl_5, value_10) end end return tbl_5 end function tbl_upv_4.GetSightsOfClass(a1) --[[ name: GetSightsOfClass line: 271 upvalues: ReplicatedStorage_upv_1 (copy, index: 1) ]] local tbl_6 = {} for _, value_11 in ReplicatedStorage_upv_1.Items.Sight:GetChildren() do if value_11:GetAttribute("Class") == a1 then table.insert(tbl_6, value_11) end end return tbl_6 end function tbl_upv_4.GetSkinOfRarity(a1) --[[ name: GetSkinOfRarity line: 283 upvalues: ReplicatedStorage_upv_1 (copy, index: 1) ]] local tbl_7 = {} for _, value_12 in ReplicatedStorage_upv_1.Items.Skin:GetChildren() do if value_12:GetAttribute("Rarity") == a1 then table.insert(tbl_7, value_12) end end return tbl_7 end function tbl_upv_4.SetModelProperties(a1, a2, a3) --[[ name: SetModelProperties line: 295 ]] for _, value_13 in a1:GetDescendants() do if value_13:IsA("BasePart") then value_13.Anchored = a2 value_13.CanCollide = a3 value_13.CanTouch = false value_13.CanQuery = false value_13.CastShadow = false value_13.Massless = true value_13.AudioCanCollide = false end end end function tbl_upv_4.WeldModel(a1, a2, a3) --[[ name: WeldModel line: 302 upvalues: tbl_upv_4 (copy, index: 1) ]] a1.PrimaryPart = a2 for _, value_14 in a1:GetDescendants() do if value_14:IsA("BasePart") then tbl_upv_4.WeldToSomething(value_14, a2) value_14.Massless = true value_14.AudioCanCollide = false end end local v15 = Instance.new("WeldConstraint") v15.Part0 = a1.PrimaryPart v15.Part1 = a2 v15.Parent = a2 if (a3) then return end for _, value_15 in a1:GetDescendants() do if value_15:IsA("BasePart") then value_15.Anchored = false value_15.CanCollide = false value_15.CanTouch = false value_15.CanQuery = false value_15.CastShadow = false value_15.Massless = true value_15.AudioCanCollide = false end end end function tbl_upv_4.WeldToHandle(a1, a2, a3) --[[ name: WeldToHandle line: 325 upvalues: tbl_upv_4 (copy, index: 1) ]] a1.PrimaryPart = a1.Base for _, value_16 in a1:GetDescendants() do if value_16:IsA("BasePart") then tbl_upv_4.WeldToSomething(value_16, a1.PrimaryPart) value_16.Massless = true value_16.AudioCanCollide = false value_16.Anchored = a3 == true value_16.CanCollide = false value_16.CanTouch = false value_16.CanQuery = false value_16.CastShadow = false value_16.Massless = true value_16.AudioCanCollide = false end end local v16 = Instance.new("WeldConstraint", a2) v16.Part0 = a1.PrimaryPart v16.Part1 = a2 if a3 ~= false then return end for _, value_17 in a1:GetDescendants() do if value_17:IsA("BasePart") then value_17.Anchored = false value_17.CanCollide = false value_17.CanTouch = false value_17.CanQuery = false value_17.CastShadow = false value_17.Massless = true value_17.AudioCanCollide = false end end end function tbl_upv_4.SetAttachmentOnWep(a1, a2, a3, a4) --[[ name: SetAttachmentOnWep line: 348 upvalues: Utility_upv_1 (copy, index: 1) ReplicatedStorage_upv_1 (copy, index: 2) tbl_upv_4 (copy, index: 3) initializeExtraAttachment (copy, index: 4) ]] if a3 then for _, value_18 in a1:GetChildren() do if ReplicatedStorage_upv_1.Items[a2]:FindFirstChild(value_18.Name) ~= nil then value_18:Destroy() end end if a3 == "" then return end local v17 = ReplicatedStorage_upv_1.Items[a2]:FindFirstChild(a3) if v17 then local v18 = a1.Nodes:FindFirstChild(a2) local v19 = nil if v18 ~= nil then local u1 = v17:Clone() u1.Parent = a1 if a2 == "Charm" then task.delay( 1, function() --[[ line: 373 upvalues: u1 (copy, index: 1) a4 (copy, index: 2) ]] local v20 = u1:FindFirstChild("Glow", true) if v20 then v20.Parent = a4.Character or a4.CharacterAdded:Wait() end end ) end if u1.PrimaryPart == nil then u1.PrimaryPart = u1.Base end u1:SetPrimaryPartCFrame(v18.CFrame) if a2 == "Sight" and (a1:FindFirstChild("TopCover")) then tbl_upv_4.WeldToHandle(u1, a1:FindFirstChild("TopCover"), false) else tbl_upv_4.WeldToHandle(u1, a1.PrimaryPart, false) end if a2 == "Sight" then for _, value_19 in a1:GetChildren() do if value_19.Name == "Iron Sight" then value_19:Destroy() continue end if value_19.Name == "Aim" then value_19:Destroy() u1.Aim:SetAttribute("AimZ", u1:GetAttribute("AimZ")) u1.Aim.Parent = a1 end end if u1:FindFirstChild("Front") ~= nil then v19 = u1:FindFirstChild("Front") end end if a2 == "Extra" and (a4) or u1:GetAttribute("Owner") and a4 then u1:SetAttribute("Owner", a4.Name) end if a2 == "Extra" then initializeExtraAttachment(u1) end end return v19 end warn(Utility_upv_1.formatWarnInstanceIsNil("ReplicatedStorage.Items." .. tostring(a2), tostring(a3))) else warn(Utility_upv_1.warnCustom("arg attachment is nil")) end end function tbl_upv_4.SetPlayerArmSkin(a1, a2) --[[ name: SetPlayerArmSkin line: 425 upvalues: Utility_upv_1 (copy, index: 1) ReplicatedStorage_upv_1 (copy, index: 2) ]] local Top_1 = a1:FindFirstChild("Top") if Top_1 then Top_1:Destroy() end local PlayerData_1 = a2:FindFirstChild("PlayerData") if PlayerData_1 then local v22 = ReplicatedStorage_upv_1.Items.Top:FindFirstChild(PlayerData_1.Loadout[PlayerData_1.Settings:GetAttribute("LoadoutName") or "Default"]:GetAttribute("Top")):Clone() v22.Parent = a1 v22.Name = "Top" else warn(Utility_upv_1.formatWarnInstanceIsNil("Player", "PlayerData")) end end function tbl_upv_4.SetFullAttachmentOnWeapon(a1, a2) --[[ name: SetFullAttachmentOnWeapon line: 439 upvalues: Utility_upv_1 (copy, index: 1) ReplicatedStorage_upv_1 (copy, index: 2) tbl_upv_2 (copy, index: 3) tbl_upv_4 (copy, index: 4) ]] local PlayerData_2 = a2:FindFirstChild("PlayerData") if PlayerData_2 then if a2:FindFirstChild("ServerData") then local v23 = PlayerData_2.Loadout[PlayerData_2.Settings:GetAttribute("LoadoutName")] or (PlayerData_2.Loadout.Default) local v24 = ReplicatedStorage_upv_1.Items.Weapon[a1.Name]:GetAttribute("Class") local v25 = nil local v26 = 0 local v27 = 0 local v28 = 0 local v29 = 0 local v30 = 0 for _, value_20 in tbl_upv_2 do if value_20 ~= "Sight" then tbl_upv_4.SetAttachmentOnWep(a1, value_20, v23:GetAttribute(v24 .. value_20), a2) else v25 = tbl_upv_4.SetAttachmentOnWep(a1, value_20, v23:GetAttribute(v24 .. value_20), a2) end local v31 = v23:GetAttribute(v24 .. value_20) if not (v31) then continue end local v32 = ReplicatedStorage_upv_1.Items[value_20]:FindFirstChild(v23:GetAttribute(v24 .. value_20)) if v32 then local v33 = v26 + (v32:GetAttribute("Horizontal") or 0) v27 = v27 + (v32:GetAttribute("Vertical") or 0) v28 = v28 + (v32:GetAttribute("SuppressFlash") or 0) v29 = v29 + (v32:GetAttribute("SuppressSound") or 0) v30 = v30 + (v32:GetAttribute("HipFireReduction") or 0) v26 = v33 end end a1:SetAttribute("Horizontal", v26) a1:SetAttribute("Vertical", v27) a1:SetAttribute("SuppressFlash", v28) a1:SetAttribute("SuppressSound", v29) a1:SetAttribute("HipFireReduction", v30) return v25, v26, v27, v28, v29, v30 end warn(Utility_upv_1.formatWarnInstanceIsNil("Player", "ServerData")) else warn(Utility_upv_1.formatWarnInstanceIsNil("Player", "PlayerData")) end end function tbl_upv_4.RemoveSurfaceGui(a1) --[[ name: RemoveSurfaceGui line: 497 ]] for _, value_21 in a1:GetDescendants() do if value_21:IsA("SurfaceGui") then value_21.Enabled = false end end end function tbl_upv_4.SetupWeaponEffects(a1) --[[ name: SetupWeaponEffects line: 505 ]] local v34 = script.Aim:Clone() v34.Name = "AimUp" v34.Parent = a1.Handle local v35 = script.Aim:Clone() v35.Name = "AimDown" v35.Parent = a1.Handle script.Suppressor:Clone().Parent = a1.Handle for _, value_22 in script.Muzzle:GetChildren() do value_22:Clone().Parent = a1.Handle.FirePoint end end local u2 = 0 local function bindPooledSound(a1) --[[ name: bindPooledSound line: 523 ]] if a1:GetAttribute("__PooledSoundBound") == true then return end a1:SetAttribute("__PooledSoundBound", true) a1.Ended:Connect( function() --[[ line: 529 upvalues: a1 (copy, index: 1) ]] if not a1.Parent then return end a1:SetAttribute("Playing", false) a1.TimePosition = 0 end ) end local function getSoundPolicy(a1, a2) --[[ name: getSoundPolicy line: 539 upvalues: Config_upv_1 (copy, index: 1) ]] local v36 = Config_upv_1.WeaponSoundPoolSize or 6 local v37 = Config_upv_1.MaxSimultaneousGunfireVoices or 3 local v38 = workspace.CurrentCamera local v39 = (v38 ~= nil) and (a2:IsDescendantOf(v38)) local v40 = true if a1.Name == "Fire" then v38 = v40 else v38 = a1.Name == "Suppressor" end local v41 = a1.Name == "GunClick" if v38 then if v39 then v37 = Config_upv_1.LocalGunfireMaxVoices or v37 else v37 = Config_upv_1.RemoteGunfireMaxVoices or v37 end return v36, v37, Config_upv_1.GunfireVoiceSteal == true end if v41 then v37 = Config_upv_1.GunClickMaxVoices or 1 end return v36, v37, false end local function acquirePooledSound(a1, a2, a3, a4, a5) --[[ name: acquirePooledSound line: 563 upvalues: bindPooledSound (copy, index: 1) ]] local v42 = nil local v43 = nil local v44 = math.huge local v45 = 0 local v46 = 0 for _, value_23 in a2:GetChildren() do local v47 = value_23:IsA("Sound") if not (v47) or value_23.Name ~= a1.Name then continue end v45 = v45 + 1 bindPooledSound(value_23) if value_23:GetAttribute("Playing") == true then v46 = v46 + 1 local v48 = value_23:GetAttribute("__LastPlaySerial") or 0 if v43 == nil or v48 < v44 then v43, v44 = value_23, v48 end elseif v42 == nil then v42 = value_23 end end if v42 then return v42 end if v45 < a3 and v46 < a4 then v44 = a1:Clone() v44.Parent = a2 bindPooledSound(v44) return v44 elseif a5 == true and v43 ~= nil then return v43 else return nil end end function tbl_upv_4.AddSFX(a1, a2, a3, a4) --[[ name: AddSFX line: 607 upvalues: getSoundPolicy (copy, index: 1) acquirePooledSound (copy, index: 2) Players_upv_1 (copy, index: 3) u2 (ref, index: 4) SoundService_upv_1 (copy, index: 5) ]] if not a1 then return end if a2 then local v49, v50, v51 = getSoundPolicy(a1, a2) local u3 = acquirePooledSound(a1, a2, v49, v50, v51) if u3 == nil then return end u3:Stop() u3.TimePosition = 0 u3.SoundId = a1.SoundId u3.RollOffMaxDistance = a1.RollOffMaxDistance u3.RollOffMinDistance = a1.RollOffMinDistance u3.RollOffMode = a1.RollOffMode u3.EmitterSize = a1.EmitterSize if Players_upv_1.LocalPlayer and Players_upv_1.LocalPlayer:FindFirstChild("PlayerData") and Players_upv_1.LocalPlayer.PlayerData:FindFirstChild("Settings") then local _ = Players_upv_1.LocalPlayer.PlayerData.Settings:GetAttribute("MasterVolume") or 1 end local PlaybackSpeed_1 = a1.PlaybackSpeed local v52 = (a4 and (PlaybackSpeed_1 + math.random(-100, 100) / 1000)) or PlaybackSpeed_1 u2 = u2 + 1 u3:SetAttribute("__LastPlaySerial", u2) u3.PlaybackSpeed = v52 u3.Volume = (a1.Volume * (a3 or 1)) * 1 u3:SetAttribute("Playing", true) SoundService_upv_1:PlayLocalSound(u3) task.delay( math.max(u3.TimeLength / math.max(u3.PlaybackSpeed, 0.05), 0.05), function() --[[ line: 643 upvalues: u3 (copy, index: 1) ]] if not u3.Parent or u3.IsPlaying == true then return end u3:SetAttribute("Playing", false) u3.TimePosition = 0 end ) end end function tbl_upv_4.MuzzleShootEffect(a1) --[[ name: MuzzleShootEffect line: 652 upvalues: tbl_upv_4 (copy, index: 1) ]] local Handle_upv_1 = a1:FindFirstChild("Handle") if Handle_upv_1 == nil then return nil end local v53 = a1:GetAttribute("SuppressFlash") or 0 local u4 = a1:GetAttribute("SuppressSound") or 0 local FirePoint_1 = Handle_upv_1:FindFirstChild("FirePoint") local u5 = FirePoint_1 and (FirePoint_1:FindFirstChild("Light")) local _ = FirePoint_1 and (FirePoint_1:FindFirstChild("Flash")) local v54 = FirePoint_1 and (FirePoint_1:FindFirstChild("Flash2")) local u6 = FirePoint_1 and (FirePoint_1:FindFirstChild("Smoke")) local u7 = FirePoint_1 or Handle_upv_1 if u5 and u5:IsA("Light") then u5.Brightness = math.clamp(1 - v53, 0, 1) u5.Enabled = true end if v53 < 0.5 then if FirePoint_1 and FirePoint_1:IsA("ParticleEmitter") then FirePoint_1:Emit(1) end if FirePoint_1 and FirePoint_1:IsA("ParticleEmitter") then FirePoint_1:Emit(1) end end if u6 and u6:IsA("ParticleEmitter") then u6.Enabled = true end delay( 0.05, function() --[[ line: 684 upvalues: u5 (copy, index: 1) u6 (copy, index: 2) Handle_upv_1 (copy, index: 3) tbl_upv_4 (copy, index: 4) u7 (copy, index: 5) u4 (copy, index: 6) ]] if u5 and u5.Parent then u5.Enabled = false end if u6 and u6.Parent then u6.Enabled = false end if not Handle_upv_1:FindFirstChild("Fire") then return end tbl_upv_4.AddSFX(Handle_upv_1.Fire, u7, math.clamp((1 - u4) / 2, 0, 1), true) if not (u4 >= 0.5) or not Handle_upv_1:FindFirstChild("Suppressor") then return end tbl_upv_4.AddSFX(Handle_upv_1.Suppressor, u7, math.clamp(1 - u4, 0, 1), true) end ) end return tbl_upv_4