-- ModuleScript GunClientCore (via decompile, truncated) return function(a1) --[[ line: 3 ]] local u22 local HttpService_1 = game:GetService("HttpService") local GuiService_1 = game:GetService("GuiService") local RunService_upv_1 = game:GetService("RunService") local UserInputService_upv_1 = game:GetService("UserInputService") local TweenService_upv_1 = game:GetService("TweenService") local Debris_upv_1 = game:GetService("Debris") local Workspace_upv_1 = game:GetService("Workspace") local ReplicatedStorage_1 = game:GetService("ReplicatedStorage") local Players_1 = game:GetService("Players") local Lighting_upv_1 = game:GetService("Lighting") local Miscs_upv_1 = ReplicatedStorage_1:WaitForChild("Miscs") local Modules_1 = ReplicatedStorage_1:WaitForChild("Framework"):WaitForChild("Modules") local Events_1 = ReplicatedStorage_1:WaitForChild("Events") local Remotes_1 = ReplicatedStorage_1:WaitForChild("Remotes") local Parent_upv_1 = a1.Parent local AnimationFolder_1 = Parent_upv_1:WaitForChild("AnimationFolder") local ValueFolder_1 = Parent_upv_1:WaitForChild("ValueFolder") local LocalPlayer_upv_1 = Players_1.LocalPlayer local u1, u2, u3 = (function() --[[ name: liveCharacter line: 25 upvalues: LocalPlayer_upv_1 (copy, index: 1) Parent_upv_1 (copy, index: 2) ]] local v1 = 0 local v2, v3, v4, v5 = nil, nil, nil, nil while true do v2 = LocalPlayer_upv_1.Character if v2 then v2 = (v2.Parent) or LocalPlayer_upv_1.CharacterAdded:Wait() v3 = v2:WaitForChild("Humanoid", 5) v4 = v2:WaitForChild("HumanoidRootPart", 5) v5 = false if v2 == LocalPlayer_upv_1.Character then v5 = v2.Parent ~= nil end if not (v5) or not (v3) then v1 = v1 + 1 if v1 == 3 then warn(Parent_upv_1.Name .. " is waiting for a live character with a HumanoidRootPart") end if v5 then task.wait(0.5) else LocalPlayer_upv_1.CharacterAdded:Wait() end continue end local v6 = v3:IsA("Humanoid") if not (v6) or not (v3.Health > 0) or not (v4) then v1 = v1 + 1 if v1 == 3 then warn(Parent_upv_1.Name .. " is waiting for a live character with a HumanoidRootPart") end if v5 then task.wait(0.5) else LocalPlayer_upv_1.CharacterAdded:Wait() end continue end local v7 = v4:IsA("BasePart") if v7 then break end v1 = v1 + 1 if v1 == 3 then warn(Parent_upv_1.Name .. " is waiting for a live character with a HumanoidRootPart") end if v5 then task.wait(0.5) else LocalPlayer_upv_1.CharacterAdded:Wait() end continue else v2 = LocalPlayer_upv_1.CharacterAdded:Wait() v3 = v2:WaitForChild("Humanoid", 5) v4 = v2:WaitForChild("HumanoidRootPart", 5) v5 = false if v2 == LocalPlayer_upv_1.Character then v5 = v2.Parent ~= nil end if not (v5) or not (v3) then v1 = v1 + 1 if v1 == 3 then warn(Parent_upv_1.Name .. " is waiting for a live character with a HumanoidRootPart") end if v5 then task.wait(0.5) else LocalPlayer_upv_1.CharacterAdded:Wait() end continue end local v6 = v3:IsA("Humanoid") if not (v6) or not (v3.Health > 0) or not (v4) then v1 = v1 + 1 if v1 == 3 then warn(Parent_upv_1.Name .. " is waiting for a live character with a HumanoidRootPart") end if v5 then task.wait(0.5) else LocalPlayer_upv_1.CharacterAdded:Wait() end continue end local v7 = v4:IsA("BasePart") if v7 then break end v1 = v1 + 1 if v1 == 3 then warn(Parent_upv_1.Name .. " is waiting for a live character with a HumanoidRootPart") end if v5 then task.wait(0.5) else LocalPlayer_upv_1.CharacterAdded:Wait() end end end return v2, v3, v4 end)() local u4 = u1:FindFirstChild("Torso") or (u1:FindFirstChild("UpperTorso")) local PlayerGui_1 = LocalPlayer_upv_1:WaitForChild("PlayerGui") local u5 = LocalPlayer_upv_1:GetMouse() local CurrentCamera_upv_1 = Workspace_upv_1.CurrentCamera local GunServer_1 = Parent_upv_1:WaitForChild("GunServer") local GunGUI_upv_1 = a1:WaitForChild("GunGUI") local tbl_upv_1 = {} tbl_upv_1.AimButton = GunGUI_upv_1.MobileButtons.AimButton tbl_upv_1.FireButton = GunGUI_upv_1.MobileButtons.FireButton tbl_upv_1.HoldDownButton = GunGUI_upv_1.MobileButtons.HoldDownButton tbl_upv_1.InspectButton = GunGUI_upv_1.MobileButtons.InspectButton tbl_upv_1.ReloadButton = GunGUI_upv_1.MobileButtons.ReloadButton tbl_upv_1.SwitchButton = GunGUI_upv_1.MobileButtons.SwitchButton tbl_upv_1.MeleeButton = GunGUI_upv_1.MobileButtons.MeleeButton tbl_upv_1.AltButton = GunGUI_upv_1.MobileButtons.AltButton local u6 = nil if UserInputService_upv_1.TouchEnabled then local _ = PlayerGui_1:WaitForChild("TouchGui"):WaitForChild("TouchControlFrame"):WaitForChild("JumpButton") end local MarkerEvent_1 = a1:WaitForChild("MarkerEvent") local ChangeMagAndAmmo_upv_1 = GunServer_1:WaitForChild("ChangeMagAndAmmo") local GunVisualEffects_1 = Miscs_upv_1.GunVisualEffects local Setting_upv_1 = Modules_1.Weapons.WeaponSettings.Gun[Parent_upv_1.Name].Setting local u7 = require(Setting_upv_1) local CreateBlur_upv_1 = require(Modules_1.Effects.CreateBlur) local SmokeTrail_upv_1 = require(Modules_1.Effects.SmokeTrail) local DamageModule_upv_1 = require(Modules_1.Weapons.DamageModule) local Utilities_1 = require(Modules_1.Util.Utilities) local Thread_upv_1 = Utilities_1.Thread local ProjectileMotion_upv_1 = Utilities_1.ProjectileMotion local Math_upv_1 = Utilities_1.Math local gunEvent_upv_1 = Events_1.gunEvent local InflictTarget_upv_1 = Remotes_1.InflictTarget local ShatterGlass_upv_1 = Remotes_1.ShatterGlass local VisualizeBeam_upv_1 = Remotes_1.VisualizeBeam local VisibleMuzzle_upv_1 = Remotes_1.VisibleMuzzle local u8 = HttpService_1:GenerateGUID() local u9 = "UpdateGun_" .. u8 local u10 = ((u7.UseCommonVisualEffects) and (GunVisualEffects_1.Common)) or (GunVisualEffects_1[Parent_upv_1.Name]) local u11 = nil local u12 = nil local u13 = nil local u14 = nil local u15 = nil local tbl_upv_2 = {} local tbl_upv_3 = {} local tbl_upv_4 = {} local tbl_upv_5 = {} local tbl_upv_6 = {} local tbl_upv_7 = {} local tbl_upv_8 = {} local tbl_upv_9 = {} local u16 = ((GunGUI_upv_1.IgnoreGuiInset) and (GuiService_1:GetGuiInset())) or (Vector2.new(0, 0)) local u17 = GunGUI_upv_1.AbsoluteSize.Y + u16.Y + 100 local TargetMarker_upv_1 = a1:WaitForChild("TargetMarker") local u18 = nil local tbl_upv_10 = {HoldDown = false, Charged = false, ActuallyEquipped = false, AimDown = false, Reloading = false, Alting = false, Scoping = false, Equipped = false, Inspecting = false, Enabled = true, CanBeCooledDown = true, CurrentRate = 0, CanCancelReload = false, TwoDeeShellCount = 0, LastRate = 0, ElapsedTime = 0, Switching = false, Overheated = false, Down = false, Charging = false} tbl_upv_10.InitialSensitivity = UserInputService_upv_1.MouseDeltaSensitivity local u19 = nil local u20 = nil local u21 = OverlapParams.new() u21.FilterType = Enum.RaycastFilterType.Exclude u21.FilterDescendantsInstances = {CurrentCamera_upv_1, Parent_upv_1, u1} u21.MaxParts = 0 u21.CollisionGroup = "Default" local v8 = Setting_upv_1:GetChildren() table.sort( v8, function(a2, a3) --[[ line: 165 ]] local v9 = tonumber(a2.Name) < tonumber(a3.Name) return v9 end ) for key_1, u22 in ipairs(v8) do table.insert(tbl_upv_4, require(u22)) local v10 = ValueFolder_1:WaitForChild(tostring(key_1)) table.insert(tbl_upv_5, {Heat = 0, FireAnimIndex = 1, FireMode = 1, ShotgunPumpinAnimIndex = 1, ElapsedCooldownTime = 0, ShotsForDepletion = 0, AimFireAnimIndex = 1, HandleIndex = 1, ShotID = 0, ChargeLevel = 0, Mag = v10:WaitForChild("Mag").Value, Ammo = v10:WaitForChild("Ammo").Value, MaxAmmo = tbl_upv_4[key_1].MaxAmmo, FireModes = tbl_upv_4[key_1].FireModes}) end for n_1 = 1, #tbl_upv_4 do local v11 = AnimationFolder_1:WaitForChild(tostring(n_1)) local tbl_11 = {} if tbl_upv_4[n_1].EquippedAnimationID ~= nil then tbl_11.EquippedAnim = v11:WaitForChild("EquippedAnim") tbl_11.EquippedAnim = u2:LoadAnimation(tbl_11.EquippedAnim) end if tbl_upv_4[n_1].IdleAnimationID ~= nil then tbl_11.IdleAnim = v11:WaitForChild("IdleAnim") tbl_11.IdleAnim = u2:LoadAnimation(tbl_11.IdleAnim) end if #tbl_upv_4[n_1].FireAnimations > 0 then local FireAnimations_1 = v11:WaitForChild("FireAnimations") tbl_11.FireAnims = {} for u23, u24 in ipairs(tbl_upv_4[n_1].FireAnimations) do if u24.FireAnimationID ~= nil then local tbl_12 = {u2:LoadAnimation(FireAnimations_1:WaitForChild("FireAnim_" .. u23)), u24.FireAnimationSpeed} table.insert(tbl_11.FireAnims, tbl_12) end end end if #tbl_upv_4[n_1].ShotgunPumpinAnimations > 0 then local ShotgunPumpinAnimations_1 = v11:WaitForChild("ShotgunPumpinAnimations") tbl_11.ShotgunPumpinAnims = {} for u23, u24 in ipairs(tbl_upv_4[n_1].ShotgunPumpinAnimations) do if u24.ShotgunPumpinAnimationID ~= nil then local tbl_13 = {u2:LoadAnimation(ShotgunPumpinAnimations_1:WaitForChild("ShotgunPumpinAnim_" .. u23)), u24.ShotgunPumpinAnimationSpeed} table.insert(tbl_11.ShotgunPumpinAnims, tbl_13) end end end if tbl_upv_4[n_1].ShotgunClipinAnimationID ~= nil then tbl_11.ShotgunClipinAnim = v11:WaitForChild("ShotgunClipinAnim") tbl_11.ShotgunClipinAnim = u2:LoadAnimation(tbl_11.ShotgunClipinAnim) end if tbl_upv_4[n_1].ReloadAnimationID ~= nil then tbl_11.ReloadAnim = v11:WaitForChild("ReloadAnim") tbl_11.ReloadAnim = u2:LoadAnimation(tbl_11.ReloadAnim) end if tbl_upv_4[n_1].HoldDownAnimationID ~= nil then tbl_11.HoldDownAnim = v11:WaitForChild("HoldDownAnim") tbl_11.HoldDownAnim = u2:LoadAnimation(tbl_11.HoldDownAnim) end if tbl_upv_4[n_1].AimAnimationsEnabled and tbl_upv_4[n_1].AimIdleAnimationID ~= nil then tbl_11.AimIdleAnim = v11:WaitForChild("AimIdleAnim") tbl_11.AimIdleAnim = u2:LoadAnimation(tbl_11.AimIdleAnim) end if tbl_upv_4[n_1].AimAnimationsEnabled and #tbl_upv_4[n_1].AimFireAnimations > 0 then local AimFireAnimations_1 = v11:WaitForChild("AimFireAnimations") tbl_11.AimFireAnims = {} for u23, u24 in ipairs(tbl_upv_4[n_1].AimFireAnimations) do if u24.AimFireAnimationID ~= nil then local tbl_14 = {u2:LoadAnimation(AimFireAnimations_1:WaitForChild("AimFireAnim_" .. u23)), u24.AimFireAnimationSpeed} table.insert(tbl_11.AimFireAnims, tbl_14) end end end if tbl_upv_4[n_1].AimAnimationsEnabled and tbl_upv_4[n_1].AimChargingAnimationID ~= nil then tbl_11.AimChargingAnim = v11:WaitForChild("AimChargingAnim") tbl_11.AimChargingAnim = u2:LoadAnimation(tbl_11.AimChargingAnim) end if tbl_upv_4[n_1].TacticalReloadAnimationEnabled and tbl_upv_4[n_1].TacticalReloadAnimationID ~= nil then tbl_11.TacticalReloadAnim = v11:WaitForChild("TacticalReloadAnim") tbl_11.TacticalReloadAnim = u2:LoadAnimation(tbl_11.TacticalReloadAnim) end if tbl_upv_4[n_1].InspectAnimationEnabled and tbl_upv_4[n_1].InspectAnimationID ~= nil then tbl_11.InspectAnim = v11:WaitForChild("InspectAnim") tbl_11.InspectAnim = u2:LoadAnimation(tbl_11.InspectAnim) end if tbl_upv_4[n_1].ShotgunReload and tbl_upv_4[n_1].PreShotgunReload and tbl_upv_4[n_1].PreShotgunReloadAnimationID ~= nil then tbl_11.PreShotgunReloadAnim = v11:WaitForChild("PreShotgunReloadAnim") tbl_11.PreShotgunReloadAnim = u2:LoadAnimation(tbl_11.PreShotgunReloadAnim) end if tbl_upv_4[n_1].MinigunRevUpAnimationID ~= nil then tbl_11.MinigunRevUpAnim = v11:WaitForChild("MinigunRevUpAnim") tbl_11.MinigunRevUpAnim = u2:LoadAnimation(tbl_11.MinigunRevUpAnim) end if tbl_upv_4[n_1].MinigunRevDownAnimationID ~= nil then tbl_11.MinigunRevDownAnim = v11:WaitForChild("MinigunRevDownAnim") tbl_11.MinigunRevDownAnim = u2:LoadAnimation(tbl_11.MinigunRevDownAnim) end if tbl_upv_4[n_1].ChargingAnimationEnabled and tbl_upv_4[n_1].ChargingAnimationID ~= nil then tbl_11.ChargingAnim = v11:WaitForChild("ChargingAnim") tbl_11.ChargingAnim = u2:LoadAnimation(tbl_11.ChargingAnim) end if tbl_upv_4[n_1].SelectiveFireEnabled and tbl_upv_4[n_1].SwitchAnimationID ~= nil then tbl_11.SwitchAnim = v11:WaitForChild("SwitchAnim") tbl_11.SwitchAnim = u2:LoadAnimation(tbl_11.SwitchAnim) end if tbl_upv_4[n_1].BatteryEnabled and tbl_upv_4[n_1].OverheatAnimationID ~= nil then tbl_11.OverheatAnim = v11:WaitForChild("OverheatAnim") tbl_11.OverheatAnim = u2:LoadAnimation(tbl_11.OverheatAnim) end if tbl_upv_4[n_1].MeleeAttackEnabled and tbl_upv_4[n_1].MeleeAttackAnimationID ~= nil then tbl_11.MeleeAttackAnim = v11:WaitForChild("MeleeAttackAnim") tbl_11.MeleeAttackAnim = u2:LoadAnimation(tbl_11.MeleeAttackAnim) end if u7.AltFire and tbl_upv_4[n_1].AltAnimationID ~= nil then tbl_11.AltAnim = v11:WaitForChild("AltAnim") tbl_11.AltAnim = u2:LoadAnimation(tbl_11.AltAnim) end if tbl_upv_4[n_1].LaserBeamStartupAnimationID ~= nil then tbl_11.LaserBeamStartupAnim = v11:WaitForChild("LaserBeamStartupAnim") tbl_11.LaserBeamStartupAnim = u2:LoadAnimation(tbl_11.LaserBeamStartupAnim) end if tbl_upv_4[n_1].LaserBeamLoopAnimationID ~= nil then tbl_11.LaserBeamLoopAnim = v11:WaitForChild("LaserBeamLoopAnim") tbl_11.LaserBeamLoopAnim = u2:LoadAnimation(tbl_11.LaserBeamLoopAnim) end if tbl_upv_4[n_1].LaserBeamStopAnimationID ~= nil then tbl_11.LaserBeamStopAnim = v11:WaitForChild("LaserBeamStopAnim") tbl_11.LaserBeamStopAnim = u2:LoadAnimation(tbl_11.LaserBeamStopAnim) end table.insert(tbl_upv_3, tbl_11) end local u25 = 1 local u26 = tbl_upv_4[u25] local u27 = tbl_upv_5[u25] local u28 = tbl_upv_3[u25] if u7.UniversalAmmoEnabled then local tbl_15 = {} tbl_15.Ammo = ValueFolder_1.Ammo.Value tbl_15.MaxAmmo = u7.MaxAmmo u22 = tbl_15 else u22 = u27 end local u29 = Parent_upv_1:FindFirstChild(u26.Handles[1], true) local u30 = nil local u31 = nil if u26.AimAnimationsEnabled then local u23 = #u28.AimFireAnims > 0 and u28.AimFireAnims[1][1] or nil u23 = #u28.AimFireAnims > 0 and u28.AimFireAnims[1][2] or nil end local u23 = ((#u28.FireAnims > 0) and (u28.FireAnims[1][1])) or nil local u24 = ((#u28.FireAnims > 0) and (u28.FireAnims[1][2])) or nil local u32 = ((#u28.ShotgunPumpinAnims > 0) and (u28.ShotgunPumpinAnims[1][1])) or nil local u33 = ((#u28.ShotgunPumpinAnims > 0) and (u28.ShotgunPumpinAnims[1][2])) or nil local tbl_upv_16 = {} local u34 = Instance.new("Attachment") u34.Name = "CrosshairPointAttachment" local v12 = u10 local v13 = u10:FindFirstChild(u26.ModuleName) if v13 then v12 = u10[u26.ModuleName] end for _, value_1 in pairs(v12.LaserBeamEffect.HitEffect:GetChildren()) do if value_1.ClassName == "ParticleEmitter" then local v14 = value_1:Clone() v14.Enabled = true v14.Parent = u34 end end for _, value_2 in pairs(u10.LaserBeamEffect.LaserBeams:GetChildren()) do if value_2.ClassName == "Beam" then table.insert(tbl_upv_16, (value_2:Clone())) end end local function FindAnimationNameForKeyframe(a4) --[[ name: FindAnimationNameForKeyframe line: 375 upvalues: u26 (ref, index: 1) tbl_upv_6 (copy, index: 2) ]] if not u26.AnimationKeyframes[a4.Name] then return end table.insert(tbl_upv_6, {a4, u26.AnimationKeyframes[a4.Name]}) end local v15 = nil for _, value_3 in pairs(u28) do if typeof(value_3) == "table" then for v17, value_4 in pairs(value_3) do v15 = value_4[1] if u26.AnimationKeyframes[v15.Name] then table.insert(tbl_upv_6, {v15, u26.AnimationKeyframes[v15.Name]}) end end elseif u26.AnimationKeyframes[value_3.Name] then table.insert(tbl_upv_6, {value_3, u26.AnimationKeyframes[value_3.Name]}) end end if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for n_2 = 1, u26.AmmoPerMag do local v16 = GunGUI_upv_1.MagCartridge.UIGridLayout.Template:Clone() v16.Name = n_2 v16.LayoutOrder = n_2 v16.Parent = GunGUI_upv_1.MagCartridge end end GunGUI_upv_1.Scanner.Size = UDim2.fromScale(u26.ScanFrameWidth * 1.25, u26.ScanFrameHeight * 1.25) GunGUI_upv_1.Scanner.UIStroke.Transparency = 1 GunGUI_upv_1.Scanner.Message.TextStrokeTransparency = 1 GunGUI_upv_1.Scanner.Message.TextTransparency = 1 local Spring_1 = Utilities_1.Spring local u35 = Vector2.new() local u36 = Spring_1.spring.new(Vector3.new(0, 200, 0)) u36.s = u26.ScopeSwaySpeed u36.d = u26.ScopeSwayDamper local u37 = Spring_1.spring.new(Vector3.new()) u37.s = u26.ScopeKnockbackSpeed u37.d = u26.ScopeKnockbackDamper local u38 = Spring_1.spring.new(Vector3.new()) u38.s = u26.RecoilSpeed u38.d = u26.RecoilDamper local u39 = Spring_1.spring.new(0) u39.s = 10 u39.d = 0.8 u39.t = 1 local u40 = Spring_1.spring.new(0) u40.s = 12 u40.d = 0.65 local function SetCrossScale(a5) --[[ name: SetCrossScale line: 436 upvalues: u39 (copy, index: 1) ]] u39.t = a5 end local function SetCrossSize(a6) --[[ name: SetCrossSize line: 440 upvalues: u40 (copy, index: 1) ]] u40.t = a6 end local function SetCrossSettings(a7, a8, a9) --[[ name: SetCrossSettings line: 444 upvalues: u40 (copy, index: 1) ]] u40.t = a7 u40.s = a8 u40.d = a9 end local function Random2DDirection(a10, a11, a12) --[[ name: Random2DDirection line: 450 ]] return Vector2.new(a11, a12) * (a10 or 1) end local function AddressTableValue(a13, a14) --[[ name: AddressTableValue line: 454 upvalues: u26 (ref, index: 1) u27 (ref, index: 2) ]] if a13 ~= nil and u26.ChargedShotAdvanceEnabled then local v17 = ((u27.ChargeLevel == 1) and (a13.Level1)) or (((u27.ChargeLevel == 2) and (a13.Level2)) or (((u27.ChargeLevel == 3) and (a13.Level3)) or a14)) return v17 end return a14 end local function PopulateHumanoids(a15) --[[ name: PopulateHumanoids line: 467 upvalues: DamageModule_upv_1 (copy, index: 1) u1 (copy, index: 2) u26 (ref, index: 3) PopulateHumanoids (copy, index: 4) ]] if a15.ClassName == "Humanoid" and DamageModule_upv_1.CanDamage(a15.Parent, u1, u26.FriendlyFire) then table.insert(Humanoids, a15) end for _, value_5 in ipairs(a15:GetChildren()) do PopulateHumanoids(value_5) end end local function CastRay(a16, a17, a18, a19, a20, a21) --[[ name: CastRay line: 478 upvalues: Workspace_upv_1 (copy, index: 1) u29 (ref, index: 2) u25 (ref, index: 3) u3 (copy, index: 4) CastRay (copy, index: 5) u19 (ref, index: 6) Lighting_upv_1 (copy, index: 7) u20 (ref, index: 8) TweenService_upv_1 (copy, index: 9) DamageModule_upv_1 (copy, index: 10) u1 (copy, index: 11) u26 (ref, index: 12) ]] local v24 local v18 = nil if a16 ~= "Tip" then local v19, v20, v21, v22 repeat v19, v20, v21, v22 = Workspace_upv_1:FindPartOnRayWithIgnoreList(Ray.new(a17, a18 * a19), a20, false, a21) local v23 = v19 if v23 then v19 = v23:FindFirstAncestorOfClass("Model") v20 = v19 and (v19:FindFirstChildOfClass("Humanoid")) v21 = v19:FindFirstAncestorOfClass("Tool") if v19.Transparency > 0.75 or v19.Name == "Missile" or v19.Name == "Handle" or v19.Name == "Effect" or v19.Name == "Bullet" or v19.Name == "Laser" or string.lower(v19.Name) == "water" or v19.Name == "Rail" or v19.Name == "Arrow" then table.insert(a20, v19) v24 = false elseif v20 then if (v20.Health <= 0) or not DamageModule_upv_1.CanDamage(v19, u1, u26.FriendlyFire) then table.insert(a20, v19) v24 = false elseif u26.IgnoreHumanoids or v21 then table.insert(a20, v19) v24 = false else v24 = true end elseif v25 then table.insert(a20, v19) v24 = false else v24 = true end else v24 = true end until v24 return v19, v20, v21, v22 else local v18, v26, v27, v28 = Workspace_upv_1:FindPartOnRayWithIgnoreList(Ray.new(a17, a18 * a19), a20, false, a21) local v29 = nil if v18 then v29 = u29:FindFirstChild("GunFirePoint" .. u25) local v30, v31 = nil, nil if v29 ~= nil then local WorldCFrame_1 = v29.WorldCFrame v30 = WorldCFrame_1.Position local LookVector_1 = WorldCFrame_1.LookVector local v32 = math.abs((u3.Position - v30):Dot(LookVector_1)) + 1 local v33, v31 = Workspace_upv_1:FindPartOnRayWithIgnoreList(Ray.new(v30 - (LookVector_1.Unit * v32), LookVector_1.Unit * v32), a20, false, a21) if v33 and math.abs((v30 - v31).Magnitude) > 0 then return CastRay(a16, v26 + (a18 * 0.01), a18, a19 - (a17 - v26).Magnitude, a20, a21) end end end if v18 and v18.Name == "Head" and v18:FindFirstAncestorOfClass("Model") and v18:FindFirstAncestorOfClass("Model"):FindFirstChildOfClass("Humanoid").Health <= 0 then if u19 then u19:Cancel() Lighting_upv_1.ColorCorrection.Saturation = 0.5 end if u20 then u20:Cancel() workspace.CurrentCamera.FieldOfView = 70 end local tbl_17 = {Saturation = -0.3} u19 = TweenService_upv_1:Create(Lighting_upv_1.ColorCorrection, TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, true), tbl_17) local tbl_18 = {FieldOfView = 68} u20 = TweenService_upv_1:Create(workspace.CurrentCamera, TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, true), tbl_18) u19:Play() u20:Play() end return v18, v26, v27, v28 end end local function Get3DPosition(a22, a23) --[[ name: Get3DPosition line: 583 upvalues: CurrentCamera_upv_1 (copy, index: 1) u2 (copy, index: 2) CastRay (copy, index: 3) Parent_upv_1 (copy, index: 4) u1 (copy, index: 5) ]] local v34 = CurrentCamera_upv_1:ScreenPointToRay(a23.X, a23.Y) local v35 = (not (u2.SeatPart)) or (u2.SeatPart:FindFirstAncestorOfClass("Model")) local _, v36 = CastRay(a22, CurrentCamera_upv_1.CFrame.p, (v34.Origin + v34.Direction - CurrentCamera_upv_1.CFrame.p).Unit, 5000, {CurrentCamera_upv_1, Parent_upv_1, u1, v35}, true) return v36 end local function Get3DPosition2() --[[ name: Get3DPosition2 line: 601 upvalues: u26 (ref, index: 1) u7 (copy, index: 2) Get3DPosition (copy, index: 3) GunGUI_upv_1 (copy, index: 4) u29 (ref, index: 5) u25 (ref, index: 6) u2 (copy, index: 7) CastRay (copy, index: 8) CurrentCamera_upv_1 (copy, index: 9) Parent_upv_1 (copy, index: 10) u1 (copy, index: 11) ]] local v37 = ((u26.LaserBeam) and "Beam") or "Tip" if u7.DirectShootingAt == "None" then return (Get3DPosition(v37, GunGUI_upv_1.Crosshair.AbsolutePosition)) end local v38 = u29:FindFirstChild("GunFirePoint" .. u25) if v38 == nil then return (Get3DPosition(v37, GunGUI_upv_1.Crosshair.AbsolutePosition)) end local p_1 = (v38.WorldCFrame * CFrame.new(0, 0, -5000)).p p_1 = (not (u2.SeatPart)) or (u2.SeatPart:FindFirstAncestorOfClass("Model")) local _, v39 = CastRay("Direct", v38.WorldPosition, (p_1 - v38.WorldPosition).Unit, 5000, {CurrentCamera_upv_1, Parent_upv_1, u1, p_1}, true) if u7.DirectShootingAt == "Both" then return v39 elseif u7.DirectShootingAt == "FirstPerson" then if (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude <= 2 then return v39 end return (Get3DPosition(v37, GunGUI_upv_1.Crosshair.AbsolutePosition)) elseif u7.DirectShootingAt == "ThirdPerson" then if (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude > 2 then return v39 end return (Get3DPosition(v37, GunGUI_upv_1.Crosshair.AbsolutePosition)) end end local function CheckPartInScanner(a24) --[[ name: CheckPartInScanner line: 646 upvalues: CurrentCamera_upv_1 (copy, index: 1) GunGUI_upv_1 (copy, index: 2) ]] if a24 then local v40, v41 = CurrentCamera_upv_1:WorldToScreenPoint(a24.Position) if v41 then local AbsoluteSize_1 = GunGUI_upv_1.Scanner.AbsoluteSize local AbsolutePosition_1 = GunGUI_upv_1.Scanner.AbsolutePosition return (AbsolutePosition_1.X < v40.X) and ((AbsolutePosition_1.Y < v40.Y) and ((v40.X < AbsolutePosition_1.X + AbsoluteSize_1.X) and (v40.Y < AbsolutePosition_1.Y + AbsoluteSize_1.Y))) end end return false end local function FindNearestEntity() --[[ name: FindNearestEntity line: 661 upvalues: PopulateHumanoids (copy, index: 1) Workspace_upv_1 (copy, index: 2) u1 (copy, index: 3) Get3DPosition (copy, index: 4) GunGUI_upv_1 (copy, index: 5) u26 (ref, index: 6) CheckPartInScanner (copy, index: 7) DamageModule_upv_1 (copy, index: 8) ]] Humanoids = {} PopulateHumanoids(Workspace_upv_1) local v42 = nil local v43 = nil local v44 = nil local v45 = nil v42, v43, v44 = v42, v43, v44 for _, value_6 in ipairs(Humanoids) do local v46 = value_6.Parent:FindFirstChild("HumanoidRootPart") or (value_6.Parent:FindFirstChild("Torso") or (value_6.Parent:FindFirstChild("UpperTorso"))) if not (value_6) or not (v46) then continue end local Magnitude_1 = (u1.Head.Position - v46.Position).Magnitude local v47 = Get3DPosition("Tip", GunGUI_upv_1.Crosshair.AbsolutePosition) v45 = (Magnitude_1 < u26.LockOnDistance + (v46.Size.Magnitude / 2.5)) and ((((((v47 - u1.Head.Position).Unit * Magnitude_1) + u1.Head.Position) - v46.Position).Magnitude < u26.LockOnRadius) and (value_6.Health > 0)) if u26.HoldAndReleaseEnabled and not (u26.SelectiveFireEnabled) and u26.LockOnScan then v45 = Magnitude_1 < u26.LockOnDistance + v46.Size.Magnitude / 2.5 and CheckPartInScanner(v46) and value_6.Health > 0 end if not (v45) then continue end local v49 = DamageModule_upv_1.CanDamage(value_6.Parent, u1, u26.FriendlyFire) if v49 then v42, v43, v44 = value_6.Parent, value_6, v46 end end return v42, v43, v44 end local function UpdateGUI() --[[ name: UpdateGUI line: 702 upvalues: GunGUI_upv_1 (copy, index: 1) u27 (ref, index: 2) u26 (ref, index: 3) u22 (ref, index: 4) tbl_upv_10 (copy, index: 5) u7 (copy, index: 6) UserInputService_upv_1 (copy, index: 7) tbl_upv_1 (copy, index: 8) ]] GunGUI_upv_1.Frame.Mag.Fill:TweenSize(UDim2.new(u27.Mag / u26.AmmoPerMag, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true) GunGUI_upv_1.Frame.Ammo.Fill:TweenSize(UDim2.new(u22.Ammo / u22.MaxAmmo, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true) GunGUI_upv_1.Frame.Heat.Fill:TweenSize(UDim2.new(u27.Heat / u26.MaxHeat, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true) GunGUI_upv_1.Frame.Mag.Current.Text = u27.Mag GunGUI_upv_1.Frame.Mag.Max.Text = u26.AmmoPerMag GunGUI_upv_1.Frame.Mag.FireMode.Text = u26.FireModeTexts[u27.FireMode] GunGUI_upv_1.Frame.Ammo.Current.Text = u22.Ammo GunGUI_upv_1.Frame.Ammo.Max.Text = u22.MaxAmmo GunGUI_upv_1.Frame.Heat.Current.Text = u27.Heat GunGUI_upv_1.Frame.Heat.Max.Text = u26.MaxHeat GunGUI_upv_1.Frame.Heat.FireMode.Text = u26.FireModeTexts[u27.FireMode] GunGUI_upv_1.Frame.Mag.Current.Visible = not tbl_upv_10.Reloading GunGUI_upv_1.Frame.Mag.Max.Visible = not tbl_upv_10.Reloading GunGUI_upv_1.Frame.Mag.Frame.Visible = not tbl_upv_10.Reloading GunGUI_upv_1.Frame.Mag.Reloading.Visible = tbl_upv_10.Reloading GunGUI_upv_1.Frame.Mag.FireMode.Visible = u26.SelectiveFireEnabled local Current_1 = GunGUI_upv_1.Frame.Ammo.Current local v50 = u22.Ammo <= 0 Current_1.Visible = not v50 local Max_1 = GunGUI_upv_1.Frame.Ammo.Max local v51 = u22.Ammo <= 0 Max_1.Visible = not v51 local Frame_1 = GunGUI_upv_1.Frame.Ammo.Frame local v52 = u22.Ammo <= 0 Frame_1.Visible = not v52 local NoMoreAmmo_1 = GunGUI_upv_1.Frame.Ammo.NoMoreAmmo NoMoreAmmo_1.Visible = u22.Ammo <= 0 GunGUI_upv_1.Frame.Heat.Visible = u26.BatteryEnabled GunGUI_upv_1.Frame.Heat.Current.Visible = not tbl_upv_10.Overheated GunGUI_upv_1.Frame.Heat.Max.Visible = not tbl_upv_10.Overheated GunGUI_upv_1.Frame.Heat.Frame.Visible = not tbl_upv_10.Overheated GunGUI_upv_1.Frame.Heat.Overheated.Visible = tbl_upv_10.Overheated GunGUI_upv_1.Frame.Heat.FireMode.Visible = u26.SelectiveFireEnabled local ChargeBar_1 = GunGUI_upv_1.ChargeBar ChargeBar_1.Visible = u26.ChargedShotAdvanceEnabled or (u26.HoldAndReleaseEnabled and (not u26.LockOnScan)) GunGUI_upv_1.ChargeBar.Level1.Visible = not u26.HoldAndReleaseEnabled GunGUI_upv_1.ChargeBar.Level2.Visible = not u26.HoldAndReleaseEnabled GunGUI_upv_1.ChargeBar.Level1.Position = UDim2.new(u26.Level1ChargingTime / u26.AdvancedChargingTime, 0, 0.5, 0) GunGUI_upv_1.ChargeBar.Level2.Position = UDim2.new(u26.Level2ChargingTime / u26.AdvancedChargingTime, 0, 0.5, 0) local ChargeBar_2 = GunGUI_upv_1.ChargeBar ChargeBar_2.Position = u7.MagCartridge and UDim2.new(1, -260, 1, -70) or UDim2.new(1, -260, 1, -35) GunGUI_upv_1.MagCartridge.Visible = u7.MagCartridge GunGUI_upv_1.Frame.Mag.Visible = not u26.BatteryEnabled local Ammo_1 = GunGUI_upv_1.Frame.Ammo Ammo_1.Visible = u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled GunGUI_upv_1.Frame.Heat.Visible = u26.BatteryEnabled local Frame_2 = GunGUI_upv_1.Frame Frame_2.Size = (u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled) and UDim2.new(0, 250, 0, 100) or UDim2.new(0, 250, 0, 55) local Frame_3 = GunGUI_upv_1.Frame local v56 = nil if u26.ChargedShotAdvanceEnabled or u26.HoldAndReleaseEnabled and not (u26.LockOnScan) then if u7.MagCartridge then if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then v56 = UDim2.new(1, -260, 1, -190) if v56 then Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end end v56 = UDim2.new(1, -260, 1, -140) if not v56 then if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then v56 = UDim2.new(1, -260, 1, -150) if v56 then Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end end v56 = UDim2.new(1, -260, 1, -105) if not v56 then if u7.MagCartridge then if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then v56 = UDim2.new(1, -260, 1, -150) if v56 then Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end end v56 = UDim2.new(1, -260, 1, -105) v56 = v56 or (((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) and (UDim2.new(1, -260, 1, -110))) or (UDim2.new(1, -260, 1, -65)) else v56 = (((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) and (UDim2.new(1, -260, 1, -110))) or (UDim2.new(1, -260, 1, -65)) end end end else if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then v56 = UDim2.new(1, -260, 1, -150) if v56 then Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end end v56 = UDim2.new(1, -260, 1, -105) if not v56 then if u7.MagCartridge then if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then v56 = UDim2.new(1, -260, 1, -150) if v56 then Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end end v56 = UDim2.new(1, -260, 1, -105) v56 = v56 or (((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) and (UDim2.new(1, -260, 1, -110))) or (UDim2.new(1, -260, 1, -65)) else v56 = (((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) and (UDim2.new(1, -260, 1, -110))) or (UDim2.new(1, -260, 1, -65)) end end end Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end local _, v57 = nil, nil if u7.MagCartridge then if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then v57 = UDim2.new(1, -260, 1, -150) if v57 then Frame_3.Position = v57 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire return end end v57 = UDim2.new(1, -260, 1, -105) v57 = v57 or (((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) and (UDim2.new(1, -260, 1, -110))) or (UDim2.new(1, -260, 1, -65)) else v57 = (((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) and (UDim2.new(1, -260, 1, -110))) or (UDim2.new(1, -260, 1, -65)) end Frame_3.Position = v56 GunGUI_upv_1.MobileButtons.Visible = UserInputService_upv_1.TouchEnabled local AimButton_1 = tbl_upv_1.AimButton AimButton_1.Visible = u26.SniperEnabled or (u26.IronsightEnabled) tbl_upv_1.HoldDownButton.Visible = u26.HoldDownEnabled tbl_upv_1.InspectButton.Visible = u26.InspectAnimationEnabled tbl_upv_1.SwitchButton.Visible = u26.SelectiveFireEnabled tbl_upv_1.ReloadButton.Visible = not u26.BatteryEnabled tbl_upv_1.MeleeButton.Visible = u26.MeleeAttackEnabled tbl_upv_1.AltButton.Visible = u7.AltFire end local function RenderScope() --[[ name: RenderScope line: 840 upvalues: u37 (copy, index: 1) ]] u37.t = u37.t:Lerp(Vector3.new(), 0.2) end local function UpdateCrosshair() --[[ name: UpdateCrosshair line: 812 upvalues: UserInputService_upv_1 (copy, index: 1) u1 (copy, index: 2) CurrentCamera_upv_1 (copy, index: 3) GunGUI_upv_1 (copy, index: 4) u5 (copy, index: 5) ]] if #UserInputService_upv_1:GetConnectedGamepads() > 0 then if (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude > 2 then GunGUI_upv_1.Crosshair.Position = UDim2.new(0.5, 0, 0.35, -50) else GunGUI_upv_1.Crosshair.Position = UDim2.new(0.5, -1, 0.5, -19) end else if not UserInputService_upv_1.MouseEnabled or not UserInputService_upv_1.KeyboardEnabled then if UserInputService_upv_1.TouchEnabled and not (UserInputService_upv_1.MouseEnabled) and not (UserInputService_upv_1.KeyboardEnabled) and (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude > 2 then GunGUI_upv_1.Crosshair.Position = UDim2.new(0.5, 0, 0.4, -50) return end if UserInputService_upv_1.TouchEnabled and not (UserInputService_upv_1.MouseEnabled) and not (UserInputService_upv_1.KeyboardEnabled) and (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude <= 2 then GunGUI_upv_1.Crosshair.Position = UDim2.new(0.5, -1, 0.5, -19) end return end GunGUI_upv_1.Crosshair.Position = UDim2.new(0, u5.X, 0, u5.Y) end end local function RenderMouse() --[[ name: RenderMouse line: 844 upvalues: UserInputService_upv_1 (copy, index: 1) u26 (ref, index: 2) GunGUI_upv_1 (copy, index: 3) tbl_upv_10 (copy, index: 4) u36 (copy, index: 5) u37 (copy, index: 6) u5 (copy, index: 7) u35 (ref, index: 8) u7 (copy, index: 9) UpdateCrosshair (copy, index: 10) u29 (ref, index: 11) u25 (ref, index: 12) CurrentCamera_upv_1 (copy, index: 13) u1 (copy, index: 14) u27 (ref, index: 15) FindNearestEntity (copy, index: 16) u18 (ref, index: 17) TargetMarker_upv_1 (copy, index: 18) a1 (copy, index: 19) ]] local v58 = UserInputService_upv_1:GetMouseDelta() / u26.ScopeSensitive local v59 = GunGUI_upv_1.Scope.AbsoluteSize.X * 0.5 if tbl_upv_10.Scoping and UserInputService_upv_1.MouseEnabled and UserInputService_upv_1.KeyboardEnabled then GunGUI_upv_1.Scope.Position = UDim2.new(0, u36.p.X + (u37.p.Y * 1000), 0, u36.p.Y + (u37.p.X * 200)) u36.t = Vector3.new((u5.X - v59) - v58.X, (u5.Y - v59) - v58.Y, 0) u35 = Vector2.new(u5.X, u5.Y) elseif tbl_upv_10.Scoping and UserInputService_upv_1.TouchEnabled and not (UserInputService_upv_1.MouseEnabled) and not (UserInputService_upv_1.KeyboardEnabled) then GunGUI_upv_1.Scope.Position = UDim2.new(0, u36.p.X + (u37.p.Y * 1000), 0, u36.p.Y + (u37.p.X * 200)) u36.t = Vector3.new((GunGUI_upv_1.Crosshair.AbsolutePosition.X - v59) - v58.X, (GunGUI_upv_1.Crosshair.AbsolutePosition.Y - v59) - v58.Y, 0) u35 = Vector2.new(GunGUI_upv_1.Crosshair.AbsolutePosition.X, GunGUI_upv_1.Crosshair.AbsolutePosition.Y) end GunGUI_upv_1.Scope.Visible = tbl_upv_10.Scoping if tbl_upv_10.Scoping then GunGUI_upv_1.Crosshair.Main.Visible = false else GunGUI_upv_1.Crosshair.Main.Visible = true u36.t = Vector3.new(600, 200, 0) end local v60 = nil if u7.DirectShootingAt ~= "None" then v60 = u29:FindFirstChild("GunFirePoint" .. u25) if v60 == nil then UpdateCrosshair() else local v61 = CurrentCamera_upv_1:WorldToScreenPoint((v60.WorldCFrame * CFrame.new(0, 0, -5000)).p) if u7.DirectShootingAt == "Both" then GunGUI_upv_1.Crosshair.Position = UDim2.fromOffset(v61.X, v61.Y) elseif u7.DirectShootingAt ~= "FirstPerson" then if u7.DirectShootingAt == "ThirdPerson" then if (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude > 2 then GunGUI_upv_1.Crosshair.Position = UDim2.fromOffset(v61.X, v61.Y) else UpdateCrosshair() end end elseif (u1.Head.Position - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude <= 2 then GunGUI_upv_1.Crosshair.Position = UDim2.fromOffset(v61.X, v61.Y) else UpdateCrosshair() end end else UpdateCrosshair() end GunGUI_upv_1.Scanner.Position = UDim2.fromOffset(GunGUI_upv_1.Crosshair.AbsolutePosition.X, GunGUI_upv_1.Crosshair.AbsolutePosition.Y) local Homing_1 = u26.ChargeAlterTable.Homing local Homing_2 = u26.Homing local v62 if Homing_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then v62 = ((u27.ChargeLevel == 1) and (Homing_1.Level1)) or (((u27.ChargeLevel == 2) and (Homing_1.Level2)) or (((u27.ChargeLevel == 3) and (Homing_1.Level3)) or Homing_2)) else v62 = Homing_2 end if not v62 or not u26.LockOnOnHovering or (u26.HitscanMode) then return end if not (u26.LockOnScan) then local v63, v64, v65 = FindNearestEntity() if v63 and v64 and v65 then u18 = v63 TargetMarker_upv_1.Parent = GunGUI_upv_1 TargetMarker_upv_1.Adornee = v65 TargetMarker_upv_1.Enabled = true return end u18 = nil TargetMarker_upv_1.Enabled = false TargetMarker_upv_1.Parent = a1 TargetMarker_upv_1.Adornee = nil end end local function RenderCam() --[[ name: RenderCam line: 930 upvalues: CurrentCamera_upv_1 (copy, index: 1) u38 (copy, index: 2) ]] CurrentCamera_upv_1.CoordinateFrame = CurrentCamera_upv_1.CoordinateFrame * CFrame.Angles(u38.p.X, u38.p.Y, u38.p.Z) end local function RenderRate(a25) --[[ name: RenderRate line: 946 upvalues: tbl_upv_10 (copy, index: 1) ]] tbl_upv_10.ElapsedTime = tbl_upv_10.ElapsedTime + a25 if not (tbl_upv_10.ElapsedTime >= 1) then return end tbl_upv_10.ElapsedTime = 0 tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate - tbl_upv_10.LastRate tbl_upv_10.LastRate = tbl_upv_10.CurrentRate end local function RenderMotion() --[[ name: RenderMotion line: 955 upvalues: u11 (ref, index: 1) u12 (ref, index: 2) u13 (ref, index: 3) Get3DPosition2 (copy, index: 4) u29 (ref, index: 5) u25 (ref, index: 6) ProjectileMotion_upv_1 (copy, index: 7) u26 (ref, index: 8) u27 (ref, index: 9) ]] if not u11 or not u12 then return end if u13 then local LookVector_2 = Get3DPosition2() LookVector_2 = CFrame.new(u29:FindFirstChild("GunFirePoint" .. u25).WorldPosition, LookVector_2).LookVector if LookVector_2 then local UpdateProjectilePath_1 = ProjectileMotion_upv_1.UpdateProjectilePath local WorldPosition_1 = u29:FindFirstChild("GunFirePoint" .. u25).WorldPosition local v66 = u26.ChargeAlterTable.BulletSpeed local BulletSpeed_1 = u26.BulletSpeed local v67 = nil if v66 == nil or not (u26.ChargedShotAdvanceEnabled) then v67 = BulletSpeed_1 elseif u27.ChargeLevel == 1 then v67 = v66.Level1 if not (v67) then if u27.ChargeLevel == 2 then v67 = v66.Level2 if not v67 then if u27.ChargeLevel ~= 3 then v67 = BulletSpeed_1 else v67 = v66.Level3 v67 = v67 or BulletSpeed_1 end end elseif u27.ChargeLevel ~= 3 then v67 = BulletSpeed_1 else v67 = v66.Level3 v67 = v67 or BulletSpeed_1 end end elseif u27.ChargeLevel == 2 then v67 = v66.Level2 if not v67 then if u27.ChargeLevel ~= 3 then v67 = BulletSpeed_1 else v67 = v66.Level3 v67 = v67 or BulletSpeed_1 end end elseif u27.ChargeLevel ~= 3 then v67 = BulletSpeed_1 else v67 = v66.Level3 v67 = v67 or BulletSpeed_1 end local v68 = LookVector_2 * v67 local v69 = 3 local Acceleration_1 = u26.ChargeAlterTable.Acceleration local Acceleration_2 = u26.Acceleration if Acceleration_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then local v70 = nil if u27.ChargeLevel ~= 1 then local v71 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then v66 = Acceleration_2 else _ = Acceleration_1.Level3 v66 = Acceleration_1.Level3 or Acceleration_2 end else v71 = Acceleration_1.Level2 if v71 then v66 = v71 else local _ if u27.ChargeLevel ~= 3 then v66 = Acceleration_2 else _ = Acceleration_1.Level3 v66 = Acceleration_1.Level3 or Acceleration_2 end end end else v70 = Acceleration_1.Level1 if v70 then v66 = v70 else local v71 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then v66 = Acceleration_2 else _ = Acceleration_1.Level3 v66 = Acceleration_1.Level3 or Acceleration_2 end else v71 = Acceleration_1.Level2 if v71 then v66 = v71 else local _ if u27.ChargeLevel ~= 3 then v66 = Acceleration_2 else _ = Acceleration_1.Level3 v66 = Acceleration_1.Level3 or Acceleration_2 end end end end end else v66 = Acceleration_2 end UpdateProjectilePath_1(u11, u12, u13, WorldPosition_1, v68, v69, v66) end end end local function RenderCooldown(a26) --[[ name: RenderCooldown line: 982 upvalues: u27 (ref, index: 1) u26 (ref, index: 2) tbl_upv_10 (copy, index: 3) UpdateGUI (copy, index: 4) ]] u27.ElapsedCooldownTime = u27.ElapsedCooldownTime + a26 if not (u26.CooldownTime <= u27.ElapsedCooldownTime) then return end u27.ElapsedCooldownTime = 0 if (tbl_upv_10.Down) or (tbl_upv_10.Overheated) or not tbl_upv_10.CanBeCooledDown or not (u27.Heat > 0) then return end u27.Heat = math.clamp(u27.Heat - u26.CooldownRate, 0, u26.MaxHeat) UpdateGUI() end local function VisibleMuzz(a27, a28) --[[ name: VisibleMuzz line: 1065 upvalues: Thread_upv_1 (copy, index: 1) ]] for _, value_upv_7 in pairs(a27:GetChildren()) do if value_upv_7.ClassName ~= "ParticleEmitter" then continue end if not (value_upv_7:FindFirstChild("EmitCount")) then value_upv_7.Enabled = a28 continue end if a28 then Thread_upv_1:Delay( 0.01, function() --[[ line: 1070 upvalues: value_upv_7 (copy, index: 1) ]] value_upv_7:Emit(value_upv_7.EmitCount.Value) end ) end end end local function MarkHit(a29, a30, a31) --[[ name: MarkHit line: 1081 upvalues: GunGUI_upv_1 (copy, index: 1) TweenService_upv_1 (copy, index: 2) u19 (ref, index: 3) Lighting_upv_1 (copy, index: 4) u20 (ref, index: 5) LocalPlayer_upv_1 (copy, index: 6) ]] if not a29.HitmarkerEnabled then return end if a31 then GunGUI_upv_1.Crosshair.Hitmarker.ImageColor3 = a29.HitmarkerColor GunGUI_upv_1.Crosshair.Hitmarker.ImageTransparency = 0 local tbl_19 = {ImageTransparency = 1} TweenService_upv_1:Create(GunGUI_upv_1.Crosshair.Hitmarker, TweenInfo.new(a29.HitmarkerFadeTime, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), tbl_19):Play() else if a30 then if u19 then u19:Cancel() Lighting_upv_1.ColorCorrection.Saturation = 0.5 end if u20 then u20:Cancel() workspace.CurrentCamera.FieldOfView = 70 end local tbl_20 = {Saturation = -0.3} u19 = TweenService_upv_1:Create(Lighting_upv_1.ColorCorrection, TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, true), tbl_20) local tbl_21 = {FieldOfView = 68} u20 = TweenService_upv_1:Create(workspace.CurrentCamera, TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, true), tbl_21) u19:Play() u20:Play() GunGUI_upv_1.Crosshair.Hitmarker.ImageColor3 = a29.HitmarkerColorHS GunGUI_upv_1.Crosshair.Hitmarker.ImageTransparency = 0 tbl_21 = {ImageTransparency = 1} TweenService_upv_1:Create(GunGUI_upv_1.Crosshair.Hitmarker, TweenInfo.new(a29.HitmarkerFadeTimeHS, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), tbl_21):Play() else GunGUI_upv_1.Crosshair.Hitmarker.ImageColor3 = a29.HitmarkerColor GunGUI_upv_1.Crosshair.Hitmarker.ImageTransparency = 0 local tbl_22 = {ImageTransparency = 1} TweenService_upv_1:Create(GunGUI_upv_1.Crosshair.Hitmarker, TweenInfo.new(a29.HitmarkerFadeTime, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), tbl_22):Play() end local u41 = GunGUI_upv_1.Crosshair.MarkerSound:Clone() u41.SoundId = "rbxassetid://" .. a29.HitmarkerSoundIDs[math.random(1, #a29.HitmarkerSoundIDs)] u41.PlaybackSpeed = (a30 and (a29.HitmarkerSoundPitchHS)) or (a29.HitmarkerSoundPitch) u41.Parent = LocalPlayer_upv_1.PlayerGui u41:Play() u41.Ended:Connect( function() --[[ line: 1151 upvalues: u41 (copy, index: 1) ]] u41:Destroy() end ) end end local function EjectShell(a32) --[[ name: EjectShell line: 1157 upvalues: u26 (ref, index: 1) u27 (ref, index: 2) u10 (copy, index: 3) u25 (ref, index: 4) Thread_upv_1 (copy, index: 5) Debris_upv_1 (copy, index: 6) Miscs_upv_1 (copy, index: 7) CurrentCamera_upv_1 (copy, index: 8) u1 (copy, index: 9) ]] local u42 = u26.ChargeAlterTable.BulletShellEnabled local BulletShellEnabled_1 = u26.BulletShellEnabled local Spawner_upv_1 if u42 ~= nil and (u26.ChargedShotAdvanceEnabled) then Spawner_upv_1 = ((u27.ChargeLevel == 1) and (u42.Level1)) or (((u27.ChargeLevel == 2) and (u42.Level2)) or (((u27.ChargeLevel == 3) and (u42.Level3)) or BulletShellEnabled_1)) else Spawner_upv_1 = BulletShellEnabled_1 end if Spawner_upv_1 then local BulletShellParticles_1 = u26.ChargeAlterTable.BulletShellParticles local BulletShellParticles_2 = u26.BulletShellParticles if BulletShellParticles_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then Spawner_upv_1 = ((u27.ChargeLevel == 1) and (BulletShellParticles_1.Level1)) or (((u27.ChargeLevel == 2) and (BulletShellParticles_1.Level2)) or (((u27.ChargeLevel == 3) and (BulletShellParticles_1.Level3)) or BulletShellParticles_2)) else Spawner_upv_1 = BulletShellParticles_2 end if Spawner_upv_1 then Spawner_upv_1 = function() --[[ name: Spawner line: 1170 upvalues: u10 (copy, index: 1) u26 (ref, index: 2) u27 (ref, index: 3) a32 (copy, index: 4) u25 (ref, index: 5) Thread_upv_1 (copy, index: 6) Debris_upv_1 (copy, index: 7) ]] local v72 = u10:FindFirstChild(u26.ModuleName) local v73 if v72 then v73 = u10[u26.ModuleName] else v73 = u10 end local v74 = v73.ShellEjectEffect if u26.ChargedShotAdvanceEnabled then if u27.ChargeLevel == 1 then local ShellEjectEffectLvl1_1 = v73:FindFirstChild("ShellEjectEffectLvl1") if ShellEjectEffectLvl1_1 then v74 = v73.ShellEjectEffectLvl1 end elseif u27.ChargeLevel == 2 then local ShellEjectEffectLvl2_1 = v73:FindFirstChild("ShellEjectEffectLvl2") if ShellEjectEffectLvl2_1 then v74 = v73.ShellEjectEffectLvl2 end elseif u27.ChargeLevel == 3 then local ShellEjectEffectLvl3_1 = v73:FindFirstChild("ShellEjectEffectLvl3") if ShellEjectEffectLvl3_1 then v74 = v73.ShellEjectEffectLvl3 end end end for _, value_8 in pairs(v74:GetChildren()) do if value_8.ClassName ~= "ParticleEmitter" then continue end local u43 = 1 local u44 = value_8:Clone() u44.Parent = a32["ShellEjectParticlePoint" .. u25] if u44:FindFirstChild("EmitCount") then local v75 = u44.EmitCount.Value end Thread_upv_1:Delay( 0.01, function() --[[ line: 1199 upvalues: u44 (copy, index: 1) u43 (ref, index: 2) Debris_upv_1 (copy, index: 3) ]] u44:Emit(u43) Debris_upv_1:AddItem(u44, u44.Lifetime.Max) end ) end end Thread_upv_1:Spawn(Spawner_upv_1) end u42 = u26.ChargeAlterTable.RadomizeRotVelocity local RadomizeRotVelocity_1 = u26.RadomizeRotVelocity if u42 ~= nil and (u26.ChargedShotAdvanceEnabled) then Spawner_upv_1 = ((u27.ChargeLevel == 1) and (u42.Level1)) or (((u27.ChargeLevel == 2) and (u42.Level2)) or (((u27.ChargeLevel == 3) and (u42.Level3)) or RadomizeRotVelocity_1)) else Spawner_upv_1 = RadomizeRotVelocity_1 end local v75 = a32["ShellEjectPoint" .. u25] local u45 = Miscs_upv_1.BulletShells local BulletShellType_1 = u26.ChargeAlterTable.BulletShellType local BulletShellType_2 = u26.BulletShellType local v76 = BulletShellType_1 ~= nil and (u26.ChargedShotAdvanceEnabled) or BulletShellType_2 local u46 = u45[v76]:Clone() u46.CFrame = v75.WorldCFrame local AllowCollide_1 = u26.ChargeAlterTable.AllowCollide local u47 = u26.AllowCollide if AllowCollide_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then u45 = ((u27.ChargeLevel == 1) and (AllowCollide_1.Level1)) or (((u27.ChargeLevel == 2) and (AllowCollide_1.Level2)) or (((u27.ChargeLevel == 3) and (AllowCollide_1.Level3)) or u47)) else u45 = u47 end u46.CanCollide = u45 local LookVector_3 = v75.WorldCFrame.LookVector local BulletShellVelocity_1 = u26.ChargeAlterTable.BulletShellVelocity local BulletShellVelocity_2 = u26.BulletShellVelocity if BulletShellVelocity_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then u47 = ((u27.ChargeLevel == 1) and (BulletShellVelocity_1.Level1)) or (((u27.ChargeLevel == 2) and (BulletShellVelocity_1.Level2)) or (((u27.ChargeLevel == 3) and (BulletShellVelocity_1.Level3)) or BulletShellVelocity_2)) else u47 = BulletShellVelocity_2 end u46.Velocity = LookVector_3 * u47 LookVector_3 = (Spawner_upv_1 and (v75.WorldCFrame.XVector)) or (v75.WorldCFrame.LookVector) local v77 = u26.ChargeAlterTable.BulletShellRotVelocity local BulletShellRotVelocity_1 = u26.BulletShellRotVelocity if v77 ~= nil and (u26.ChargedShotAdvanceEnabled) then local v78 = nil if u27.ChargeLevel ~= 1 then local v79 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then u47 = BulletShellRotVelocity_1 else _ = v77.Level3 u47 = v77.Level3 or BulletShellRotVelocity_1 end else v79 = v77.Level2 if v79 then u47 = v79 else local _ if u27.ChargeLevel ~= 3 then u47 = BulletShellRotVelocity_1 else _ = v77.Level3 u47 = v77.Level3 or BulletShellRotVelocity_1 end end end else v78 = v77.Level1 if v78 then u47 = v78 else local v79 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then u47 = BulletShellRotVelocity_1 else _ = v77.Level3 u47 = v77.Level3 or BulletShellRotVelocity_1 end else v79 = v77.Level2 if v79 then u47 = v79 else local _ if u27.ChargeLevel ~= 3 then u47 = BulletShellRotVelocity_1 else _ = v77.Level3 u47 = v77.Level3 or BulletShellRotVelocity_1 end end end end end else u47 = BulletShellRotVelocity_1 end u46.RotVelocity = LookVector_3 * u47 u46.Parent = CurrentCamera_upv_1 local BulletShellHitSoundEnabled_1 = u26.ChargeAlterTable.BulletShellHitSoundEnabled u47 = u26.BulletShellHitSoundEnabled if BulletShellHitSoundEnabled_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then u45 = ((u27.ChargeLevel == 1) and (BulletShellHitSoundEnabled_1.Level1)) or (((u27.ChargeLevel == 2) and (BulletShellHitSoundEnabled_1.Level2)) or (((u27.ChargeLevel == 3) and (BulletShellHitSoundEnabled_1.Level3)) or u47)) else u45 = u47 end local u48 if u45 then u45 = u26.ChargeAlterTable.BulletShellHitSoundIDs local BulletShellHitSoundIDs_1 = u26.BulletShellHitSoundIDs if u45 ~= nil and (u26.ChargedShotAdvanceEnabled) then u42 = ((u27.ChargeLevel == 1) and (u45.Level1)) or (((u27.ChargeLevel == 2) and (u45.Level2)) or (((u27.ChargeLevel == 3) and (u45.Level3)) or BulletShellHitSoundIDs_1)) else u42 = BulletShellHitSoundIDs_1 end u45 = u26.ChargeAlterTable.BulletShellHitSoundVolume local BulletShellHitSoundVolume_1 = u26.BulletShellHitSoundVolume if u45 ~= nil and (u26.ChargedShotAdvanceEnabled) then Spawner_upv_1 = ((u27.ChargeLevel == 1) and (u45.Level1)) or (((u27.ChargeLevel == 2) and (u45.Level2)) or (((u27.ChargeLevel == 3) and (u45.Level3)) or BulletShellHitSoundVolume_1)) else Spawner_upv_1 = BulletShellHitSoundVolume_1 end u48 = u26.ChargeAlterTable.BulletShellHitSoundPitchMin u47 = u26.BulletShellHitSoundPitchMin if u48 ~= nil and u26.ChargedShotAdvanceEnabled then u45 = ((u27.ChargeLevel == 1) and (u48.Level1)) or (((u27.ChargeLevel == 2) and (u48.Level2)) or (((u27.ChargeLevel == 3) and (u48.Level3)) or u47)) end u47 = u26.ChargeAlterTable.BulletShellHitSoundPitchMax local BulletShellHitSoundPitchMax_1 = u26.BulletShellHitSoundPitchMax if u47 ~= nil and (u26.ChargedShotAdvanceEnabled) then u48 = ((u27.ChargeLevel == 1) and (u47.Level1)) or (((u27.ChargeLevel == 2) and (u47.Level2)) or (((u27.ChargeLevel == 3) and (u47.Level3)) or BulletShellHitSoundPitchMax_1)) else u48 = BulletShellHitSoundPitchMax_1 end u47 = nil local v80 = u46.Touched:Connect( function(a33) --[[ line: 1257 upvalues: u1 (copy, index: 1) u42 (copy, index: 2) u45 (copy, index: 3) u48 (copy, index: 4) Spawner_upv_1 (copy, index: 5) u46 (copy, index: 6) u47 (ref, index: 7) ]] if not (a33:IsDescendantOf(u1)) then local v81 = Instance.new("Sound") v81.SoundId = "rbxassetid://" .. u42[math.random(1, #u42)] v81.PlaybackSpeed = Random.new():NextNumber(u45, u48) v81.Volume = Spawner_upv_1 v81.Parent = u46 v81:Play() u47:Disconnect() u47 = nil end end ) u47 = v80 end local DisappearTime_1 = u26.ChargeAlterTable.DisappearTime local DisappearTime_2 = u26.DisappearTime if DisappearTime_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then v77 = ((u27.ChargeLevel == 1) and (DisappearTime_1.Level1)) or (((u27.ChargeLevel == 2) and (DisappearTime_1.Level2)) or (((u27.ChargeLevel == 3) and (DisappearTime_1.Level3)) or DisappearTime_2)) else v77 = DisappearTime_2 end Debris_upv_1:AddItem(u46, v77) end end local function RecoilCamera() --[[ name: RecoilCamera line: 1279 upvalues: u26 (ref, index: 1) CreateBlur_upv_1 (copy, index: 2) u27 (ref, index: 3) tbl_upv_10 (copy, index: 4) Math_upv_1 (copy, index: 5) u37 (copy, index: 6) u38 (copy, index: 7) Thread_upv_1 (copy, index: 8) ]] if u26.CameraRecoilingEnabled then CreateBlur_upv_1.Create() local Recoil_1 = u26.ChargeAlterTable.Recoil local Recoil_2 = u26.Recoil local v82 if Recoil_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then v82 = ((u27.ChargeLevel == 1) and (Recoil_1.Level1)) or (((u27.ChargeLevel == 2) and (Recoil_1.Level2)) or (((u27.ChargeLevel == 3) and (Recoil_1.Level3)) or Recoil_2)) else v82 = Recoil_2 end local v83 = ((tbl_upv_10.AimDown) and (1 - u26.RecoilRedution)) or 1 local v84 = v82 * v83 local v85 = math.rad(v84 * Math_upv_1.Randomize2(u26.AngleX_Min, u26.AngleX_Max, u26.Accuracy)) local v86 = math.rad(v84 * Math_upv_1.Randomize2(u26.AngleY_Min, u26.AngleY_Max, u26.Accuracy)) local v87 = math.rad(v84 * Math_upv_1.Randomize2(u26.AngleZ_Min, u26.AngleZ_Max, u26.Accuracy)) u37:Accelerate((Vector3.new(-v85 * u26.ScopeKnockbackMultiplier, -v86 * u26.ScopeKnockbackMultiplier, 0))) u38:Accelerate((Vector3.new(v85, v86, v87))) Thread_upv_1:Wait(0.03) u38:Accelerate((Vector3.new(-v85, -v86, 0))) end end local function SelfKnockback(a34, a35) --[[ name: SelfKnockback line: 1321 upvalues: u26 (ref, index: 1) u27 (ref, index: 2) u2 (copy, index: 3) u4 (copy, index: 4) Debris_upv_1 (copy, index: 5) ]] local v88 = u26.ChargeAlterTable.SelfKnockbackPower local SelfKnockbackPower_1 = u26.SelfKnockbackPower local v89 if v88 ~= nil and (u26.ChargedShotAdvanceEnabled) then v89 = ((u27.ChargeLevel == 1) and (v88.Level1)) or (((u27.ChargeLevel == 2) and (v88.Level2)) or (((u27.ChargeLevel == 3) and (v88.Level3)) or SelfKnockbackPower_1)) else v89 = SelfKnockbackPower_1 end local v90 = u26.ChargeAlterTable.SelfKnockbackMultiplier local SelfKnockbackMultiplier_1 = u26.SelfKnockbackMultiplier if v90 ~= nil and (u26.ChargedShotAdvanceEnabled) then v88 = ((u27.ChargeLevel == 1) and (v90.Level1)) or (((u27.ChargeLevel == 2) and (v90.Level2)) or (((u27.ChargeLevel == 3) and (v90.Level3)) or SelfKnockbackMultiplier_1)) else v88 = SelfKnockbackMultiplier_1 end local SelfKnockbackRedution_1 = u26.ChargeAlterTable.SelfKnockbackRedution local SelfKnockbackRedution_2 = u26.SelfKnockbackRedution if SelfKnockbackRedution_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then v90 = ((u27.ChargeLevel == 1) and (SelfKnockbackRedution_1.Level1)) or (((u27.ChargeLevel == 2) and (SelfKnockbackRedution_1.Level2)) or (((u27.ChargeLevel == 3) and (SelfKnockbackRedution_1.Level3)) or SelfKnockbackRedution_2)) else v90 = SelfKnockbackRedution_2 end local v91 = ((u2:GetState() ~= Enum.HumanoidStateType.Freefall) and (v89 * v88 * (1 - v90))) or (v89 * v88) v90 = (a34 - a35).Unit local v92 = u4.Velocity - Vector3.new(0, u4.Velocity.Y, 0) + Vector3.new(v90.X, 0, v90.Z) * -v91 local v93 = Instance.new("BodyVelocity") v93.MaxForce = Vector3.new(inf, 0, inf) v93.Velocity = v92 v93.Parent = u4 u4.Velocity = u4.Velocity + (Vector3.new(0, v90.Y * 2, 0) * -v91) Debris_upv_1:AddItem(v93, 0.25) end local function Fire(a36, a37, a38) --[[ name: Fire line: 1404 upvalues: u26 (ref, index: 1) tbl_upv_10 (copy, index: 2) u30 (ref, index: 3) u31 (ref, index: 4) u23 (ref, index: 5) u24 (ref, index: 6) u28 (ref, index: 7) u25 (ref, index: 8) u10 (copy, index: 9) u27 (ref, index: 10) gunEvent_upv_1 (copy, index: 11) Parent_upv_1 (copy, index: 12) u18 (ref, index: 13) Thread_upv_1 (copy, index: 14) RecoilCamera (copy, index: 15) u40 (copy, index: 16) ]] if not (u26.AimAnimationsEnabled) or tbl_upv_10.AimDown ~= true then if u23 then u23:Play(nil, nil, u24) end elseif u30 then u30:Play(nil, nil, u31) end if u28.MinigunRevUpAnim and u28.MinigunRevUpAnim.IsPlaying then u28.MinigunRevUpAnim:Stop() end local FireSounds_1 = a36[u25].FireSounds local v94 = u10 local v95 = u10:FindFirstChild(u26.ModuleName) if v95 then v94 = u10[u26.ModuleName] end local MuzzleEffect_1 = v94.MuzzleEffect local HitEffect_1 = v94.HitEffect local BloodEffect_1 = v94.BloodEffect local ExplosionEffect_1 = v94.ExplosionEffect local v96 = v94.GoreEffect if u26.ChargedShotAdvanceEnabled then if u27.ChargeLevel == 1 then if a36[u25]:FindFirstChild("FireSoundsLvl1") then local _ = a36[u25].FireSoundsLvl1 end if v94:FindFirstChild("MuzzleEffectLvl1") then local _ = v94.MuzzleEffectLvl1 end if v94:FindFirstChild("HitEffectLvl1") then local _ = v94.HitEffectLvl1 end if v94:FindFirstChild("BloodEffectLvl1") then local _ = v94.BloodEffectLvl1 end if v94:FindFirstChild("ExplosionEffectLvl1") then local _ = v94.ExplosionEffectLvl1 end local GoreEffectLvl1_1 = v94:FindFirstChild("GoreEffectLvl1") if GoreEffectLvl1_1 then v96 = v94.GoreEffectLvl1 end elseif u27.ChargeLevel == 2 then if a36[u25]:FindFirstChild("FireSoundsLvl2") then local _ = a36[u25].FireSoundsLvl2 end if v94:FindFirstChild("MuzzleEffectLvl2") then local _ = v94.MuzzleEffectLvl2 end if v94:FindFirstChild("HitEffectLvl2") then local _ = v94.HitEffectLvl2 end if v94:FindFirstChild("BloodEffectLvl2") then local _ = v94.BloodEffectLvl2 end if v94:FindFirstChild("ExplosionEffectLvl2") then local _ = v94.ExplosionEffectLvl2 end local GoreEffectLvl2_1 = v94:FindFirstChild("GoreEffectLvl2") if GoreEffectLvl2_1 then v96 = v94.GoreEffectLvl2 end elseif u27.ChargeLevel == 3 then if a36[u25]:FindFirstChild("FireSoundsLvl3") then local _ = a36[u25].FireSoundsLvl3 end if v94:FindFirstChild("MuzzleEffectLvl3") then local _ = v94.MuzzleEffectLvl3 end if v94:FindFirstChild("HitEffectLvl3") then local _ = v94.HitEffectLvl3 end if v94:FindFirstChild("BloodEffectLvl3") then local _ = v94.BloodEffectLvl3 end if v94:FindFirstChild("ExplosionEffectLvl3") then local _ = v94.ExplosionEffectLvl3 end local GoreEffectLvl3_1 = v94:FindFirstChild("GoreEffectLvl3") if GoreEffectLvl3_1 then v96 = v94.GoreEffectLvl3 end end end v94 = FireSounds_1:GetChildren() local v97 = v94[math.random(1, #v94)] local v98, v99 = nil, nil if v97 ~= nil then local v100 = "PlayAudio" local tbl_23 = {DistantSoundVolume = 0, DistantSoundIds = 0} tbl_23.Instance = v97 tbl_23.Origin = a36:FindFirstChild("GunMuzzlePoint" .. u25) tbl_23.Echo = u26.EchoEffect tbl_23.Silenced = u26.SilenceEffect v98 = u26.ChargeAlterTable.DistantSoundIds local DistantSoundIds_1 = u26.DistantSoundIds local v101 = nil if v98 == nil or not (u26.ChargedShotAdvanceEnabled) then v101 = DistantSoundIds_1 elseif u27.ChargeLevel ~= 1 then local v102 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundIds_1 else _ = v98.Level3 v101 = v98.Level3 or DistantSoundIds_1 end else v102 = v98.Level2 if v102 then v101 = v102 else local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundIds_1 else _ = v98.Level3 v101 = v98.Level3 or DistantSoundIds_1 end end end else v101 = v98.Level1 if not (v101) then local v102 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundIds_1 else _ = v98.Level3 v101 = v98.Level3 or DistantSoundIds_1 end else v102 = v98.Level2 if v102 then v101 = v102 else local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundIds_1 else _ = v98.Level3 v101 = v98.Level3 or DistantSoundIds_1 end end end end end tbl_23.DistantSoundIds = v101 v99 = u26.ChargeAlterTable.DistantSoundVolume local DistantSoundVolume_1 = u26.DistantSoundVolume if v99 ~= nil and (u26.ChargedShotAdvanceEnabled) then local v103 = nil if u27.ChargeLevel ~= 1 then local v104 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundVolume_1 else _ = v99.Level3 v101 = v99.Level3 or DistantSoundVolume_1 end else v104 = v99.Level2 if v104 then v101 = v104 else local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundVolume_1 else _ = v99.Level3 v101 = v99.Level3 or DistantSoundVolume_1 end end end else v103 = v99.Level1 if v103 then v101 = v103 else local v104 = nil if u27.ChargeLevel ~= 2 then local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundVolume_1 else _ = v99.Level3 v101 = v99.Level3 or DistantSoundVolume_1 end else v104 = v99.Level2 if v104 then v101 = v104 else local _ if u27.ChargeLevel ~= 3 then v101 = DistantSoundVolume_1 else _ = v99.Level3 v101 = v99.Level3 or DistantSoundVolume_1 end end end end end else v101 = DistantSoundVolume_1 end tbl_23.DistantSoundVolume = v101 local v105 = nil if u26.LowAmmo then v105 = {} v105.CurrentAmmo = u27.Mag v105.AmmoPerMag = u26.AmmoPerMag v105.Instance = a36[u25].LowAmmoSound v105.Origin = a36:FindFirstChild("GunMuzzlePoint" .. u25) v105.RaisePitch = u26.RaisePitch v101 = v105 or nil else v101 = nil end gunEvent_upv_1:Fire(v100, tbl_23, v101, true) end local v106 = a36:FindFirstChild("GunFirePoint" .. u25) local v107 = a36:FindFirstChild("GunMuzzlePoint" .. u25) local tbl_24 = {LockedEntity = 0} tbl_24.MuzzleFolder = MuzzleEffect_1 tbl_24.HitEffectFolder = HitEffect_1 tbl_24.BloodEffectFolder = BloodEffect_1 tbl_24.ExplosionEffectFolder = ExplosionEffect_1 tbl_24.GoreEffect = v96 tbl_24.ChargeLevel = u27.ChargeLevel tbl_24.LockedEntity = a38 or u18 gunEvent_upv_1:Fire("VisualizeBullet", Parent_upv_1, a36, u26, a37, v106, v107, tbl_24, true) Thread_upv_1:Spawn(RecoilCamera) local CrossExpansion_1 = u26.ChargeAlterTable.CrossExpansion local CrossExpansion_2 = u26.CrossExpansion local v108 if CrossExpansion_1 ~= nil and (u26.ChargedShotAdvanceEnabled) then v108 = ((u27.ChargeLevel == 1) and (CrossExpansion_1.Level1)) or (((u27.ChargeLevel == 2) and (CrossExpansion_1.Level2)) or (((u27.ChargeLevel == 3) and (CrossExpansion_1.Level3)) or CrossExpansion_2)) else v108 = CrossExpansion_2 end u40:Accelerate(v108) end local function CycleHandles() --[[ name: CycleHandles line: 1540 upvalues: u27 (ref, index: 1) u26 (ref, index: 2) u29 (ref, index: 3) Parent_upv_1 (copy, index: 4) u28 (ref, index: 5) u30 (ref, index: 6) u31 (ref, index: 7) u23 (ref, index: 8) u24 (ref, index: 9) u32 (ref, index: 10) u33 (ref, index: 11) ]] u27.HandleIndex = (u27.HandleIndex % #u26.Handles) + 1 u29 = Parent_upv_1:FindFirstChild(u26.Handles[u27.HandleIndex], true) if u26.AimAnimationsEnabled and #u28.AimFireAnims > 0 then u27.AimFireAnimIndex = (u27.AimFireAnimIndex % #u28.AimFireAnims) + 1 u30 = u28.AimFireAnims[u27.AimFireAnimIndex][1] u31 = u28.AimFireAnims[u27.AimFireAnimIndex][2] end if #u28.FireAnims > 0 then u27.FireAnimIndex = (u27.FireAnimIndex % #u28.FireAnims) + 1 u23 = u28.FireAnims[u27.FireAnimIndex][1] u24 = u28.FireAnims[u27.FireAnimIndex][2] end if not (#u28.ShotgunPumpinAnims > 0) then return end u27.ShotgunPumpinAnimIndex = (u27.ShotgunPumpinAnimIndex % #u28.ShotgunPumpinAnims) + 1 u32 = u28.ShotgunPumpinAnims[u27.ShotgunPumpinAnimIndex][1] u33 = u28.ShotgunPumpinAnims[u27.ShotgunPumpinAnimIndex][2] end local function Overheat() --[[ name: Overheat line: 1570 upvalues: tbl_upv_10 (copy, index: 1) u22 (ref, index: 2) u7 (copy, index: 3) u26 (ref, index: 4) u27 (ref, index: 5) u28 (ref, index: 6) TweenService_upv_1 (copy, index: 7) CurrentCamera_upv_1 (copy, index: 8) u39 (copy, index: 9) LocalPlayer_upv_1 (copy, index: 10) UserInputService_upv_1 (copy, index: 11) UpdateGUI (copy, index: 12) u29 (ref, index: 13) u25 (ref, index: 14) Thread_upv_1 (copy, index: 15) ]] if not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or (tbl_upv_10.Overheated) then return end if u22.Ammo > 0 then if not (u26.MaxHeat <= u27.Heat) then return end tbl_upv_10.Overheated = true if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if tbl_upv_10.AimDown then TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 if u26.AimAnimationsEnabled and u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end end tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end UpdateGUI() if tbl_upv_10.ActuallyEquipped then if u28.OverheatAnim then u28.OverheatAnim:Play(nil, nil, u26.OverheatAnimationSpeed) end u29[u25].OverheatSound:Play() end for _ = 1, u26.MaxHeat do Thread_upv_1:Wait(u26.OverheatTime / u26.MaxHeat) u27.Heat = u27.Heat - 1 UpdateGUI() if u27.Heat == 0 then tbl_upv_10.Overheated = false break end end tbl_upv_10.Overheated = false UpdateGUI() elseif not u7.UniversalAmmoEnabled and not u26.LimitedAmmoEnabled and (u26.MaxHeat <= u27.Heat) then tbl_upv_10.Overheated = true if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if tbl_upv_10.AimDown then TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 if u26.AimAnimationsEnabled and u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end end tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end UpdateGUI() if tbl_upv_10.ActuallyEquipped then if u28.OverheatAnim then u28.OverheatAnim:Play(nil, nil, u26.OverheatAnimationSpeed) end u29[u25].OverheatSound:Play() end for _ = 1, u26.MaxHeat do Thread_upv_1:Wait(u26.OverheatTime / u26.MaxHeat) u27.Heat = u27.Heat - 1 UpdateGUI() if u27.Heat == 0 then tbl_upv_10.Overheated = false break end end tbl_upv_10.Overheated = false UpdateGUI() end end local function CreateTwoDeeShell(a39, a40, a41, a42, a43, a44) --[[ name: CreateTwoDeeShell line: 1349 upvalues: tbl_upv_10 (copy, index: 1) u7 (copy, index: 2) tbl_upv_8 (copy, index: 3) u16 (copy, index: 4) GunGUI_upv_1 (copy, index: 5) Thread_upv_1 (copy, index: 6) TweenService_upv_1 (copy, index: 7) ]] local v109 = u7.MaxCount <= tbl_upv_10.TwoDeeShellCount if v109 and u7.RemoveOldAtMax then local v110 = math.random() if v110 then v110 = math.random(1, u7.MaxCount) for key_2, _ in pairs(tbl_upv_8) do v110 = v110 - 1 if v110 <= 0 then key_2:Destroy() tbl_upv_10.TwoDeeShellCount = tbl_upv_10.TwoDeeShellCount - 1 tbl_upv_8[key_2] = nil v109 = u7.MaxCount <= tbl_upv_10.TwoDeeShellCount break end end end end if not (v109) then tbl_upv_10.TwoDeeShellCount = tbl_upv_10.TwoDeeShellCount + 1 local u49 = a40.X + a41.X / 2 local u50 = a40.Y + a41.Y / 2 local tbl_25 = {Vel = 0, Pos = 0} tbl_25.RotVel = ((math.random() * 2) - 1) * u7.MaxRotationSpeed tbl_25.Rot = a39 local v111 = (a40 and (Vector2.new(u49, u50))) or (Vector2.new(0, 0)) tbl_25.Pos = v111 + u16 tbl_25.Vel = a42 or Vector2.new(0, 0) local v113 = GunGUI_upv_1.MagCartridge.UIGridLayout.Shell if a43 == "bullet" then v113 = GunGUI_upv_1.MagCartridge.UIGridLayout.Template end local v114 = v113:Clone() v114.Rotation = a39 tbl_upv_8[v114] = tbl_25 v114.Parent = GunGUI_upv_1 if not a44 then return end Thread_upv_1:Spawn( function() --[[ line: 1385 upvalues: GunGUI_upv_1 (copy, index: 1) u49 (copy, index: 2) u50 (copy, index: 3) TweenService_upv_1 (copy, index: 4) ]] local v115 = GunGUI_upv_1.MagCartridge.UIGridLayout.Shockwave:Clone() local v116 = math.rad(math.random(360)) v115.Position = UDim2.new(0, u49, 0, u50) v115.Rotation = math.deg(v116) v115.Parent = GunGUI_upv_1 local v117 = TweenService_upv_1:Create(v115, TweenInfo.new(0.25, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageTransparency = 1, Size = UDim2.new(0, 50, 0, 50)}) v117:Play() v117.Completed:Wait() v115:Destroy() end ) end end local function Reload() --[[ name: Reload line: 1630 upvalues: tbl_upv_10 (copy, index: 1) u22 (ref, index: 2) u7 (copy, index: 3) u26 (ref, index: 4) u27 (ref, index: 5) u28 (ref, index: 6) TweenService_upv_1 (copy, index: 7) CurrentCamera_upv_1 (copy, index: 8) u39 (copy, index: 9) LocalPlayer_upv_1 (copy, index: 10) UserInputService_upv_1 (copy, index: 11) UpdateGUI (copy, index: 12) u29 (ref, index: 13) u25 (ref, index: 14) Thread_upv_1 (copy, index: 15) ChangeMagAndAmmo_upv_1 (copy, index: 16) GunGUI_upv_1 (copy, index: 17) CreateTwoDeeShell (copy, index: 18) ]] if not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or (tbl_upv_10.Reloading) then return end if u22.Ammo > 0 then if u27.Mag < u26.AmmoPerMag then tbl_upv_10.Reloading = true if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if tbl_upv_10.AimDown then TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 if u26.AimAnimationsEnabled and u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end end tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end UpdateGUI() if u26.ShotgunReload then if u26.PreShotgunReload then if tbl_upv_10.ActuallyEquipped then if u28.PreShotgunReloadAnim then u28.PreShotgunReloadAnim:Play(nil, nil, u26.PreShotgunReloadAnimationSpeed) end u29[u25].PreReloadSound:Play() end local v118 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end local v119 = os.clock() - v118 if not (u26.PreShotgunReloadSpeed <= v119) then continue end for n_3 = 1, u26.AmmoPerMag - u27.Mag do if tbl_upv_10.ActuallyEquipped then if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() end local v120 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end local v121 = os.clock() - v120 if not (u26.ShellClipinSpeed <= v121) then continue end if tbl_upv_10.CanCancelReload or not (u27.Mag < u26.AmmoPerMag) then break end if tbl_upv_10.ActuallyEquipped then if u7.UniversalAmmoEnabled then if u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end elseif not u26.LimitedAmmoEnabled or u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then if tbl_upv_10.ActuallyEquipped and not (u22.Ammo <= 0) then local v122 = n_3 -- NumForNext n_3 = v122 + v124 (limit v123) if not (tbl_upv_10.ActuallyEquipped) then v120 = os.clock() continue end if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() v120 = os.clock() end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped or not tbl_upv_10.ActuallyEquipped then break end end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.ShotgunClipinAnim and u28.ShotgunClipinAnim.IsPlaying then u28.ShotgunClipinAnim:Stop() end if u29[u25].ShotgunClipin.Playing then u29[u25].ShotgunClipin:Stop() end end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.PreShotgunReloadAnim and u28.PreShotgunReloadAnim.IsPlaying then u28.PreShotgunReloadAnim:Stop() end if u29[u25].PreReloadSound.Playing then u29[u25].PreReloadSound:Stop() end end end for n_3 = 1, u26.AmmoPerMag - u27.Mag do if tbl_upv_10.ActuallyEquipped then if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() end local v120 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end local v121 = os.clock() - v120 if not (u26.ShellClipinSpeed <= v121) then continue end if tbl_upv_10.CanCancelReload or not (u27.Mag < u26.AmmoPerMag) then break end if tbl_upv_10.ActuallyEquipped then if u7.UniversalAmmoEnabled then if u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end elseif not u26.LimitedAmmoEnabled or u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then if tbl_upv_10.ActuallyEquipped and not (u22.Ammo <= 0) then local v122 = n_3 -- NumForNext n_3 = v122 + v124 (limit v123) if not (tbl_upv_10.ActuallyEquipped) then v120 = os.clock() continue end if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() v120 = os.clock() end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped or not tbl_upv_10.ActuallyEquipped then break end end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.ShotgunClipinAnim and u28.ShotgunClipinAnim.IsPlaying then u28.ShotgunClipinAnim:Stop() end if u29[u25].ShotgunClipin.Playing then u29[u25].ShotgunClipin:Stop() end end end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() end elseif not u7.UniversalAmmoEnabled and not u26.LimitedAmmoEnabled then if u27.Mag < u26.AmmoPerMag then tbl_upv_10.Reloading = true if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if tbl_upv_10.AimDown then TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 if u26.AimAnimationsEnabled and u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end end tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end UpdateGUI() if u26.ShotgunReload then if u26.PreShotgunReload then if tbl_upv_10.ActuallyEquipped then if u28.PreShotgunReloadAnim then u28.PreShotgunReloadAnim:Play(nil, nil, u26.PreShotgunReloadAnimationSpeed) end u29[u25].PreReloadSound:Play() end local v118 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end local v119 = os.clock() - v118 if not (u26.PreShotgunReloadSpeed <= v119) then continue end for n_3 = 1, u26.AmmoPerMag - u27.Mag do if tbl_upv_10.ActuallyEquipped then if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() end local v120 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end local v121 = os.clock() - v120 if not (u26.ShellClipinSpeed <= v121) then continue end if tbl_upv_10.CanCancelReload or not (u27.Mag < u26.AmmoPerMag) then break end if tbl_upv_10.ActuallyEquipped then if u7.UniversalAmmoEnabled then if u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end elseif not u26.LimitedAmmoEnabled or u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then if tbl_upv_10.ActuallyEquipped and not (u22.Ammo <= 0) then local v122 = n_3 -- NumForNext n_3 = v122 + v124 (limit v123) if not (tbl_upv_10.ActuallyEquipped) then v120 = os.clock() continue end if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() v120 = os.clock() end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped or not tbl_upv_10.ActuallyEquipped then break end end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.ShotgunClipinAnim and u28.ShotgunClipinAnim.IsPlaying then u28.ShotgunClipinAnim:Stop() end if u29[u25].ShotgunClipin.Playing then u29[u25].ShotgunClipin:Stop() end end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.PreShotgunReloadAnim and u28.PreShotgunReloadAnim.IsPlaying then u28.PreShotgunReloadAnim:Stop() end if u29[u25].PreReloadSound.Playing then u29[u25].PreReloadSound:Stop() end end end for n_3 = 1, u26.AmmoPerMag - u27.Mag do if tbl_upv_10.ActuallyEquipped then if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() end local v120 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end local v121 = os.clock() - v120 if not (u26.ShellClipinSpeed <= v121) then continue end if tbl_upv_10.CanCancelReload or not (u27.Mag < u26.AmmoPerMag) then break end if tbl_upv_10.ActuallyEquipped then if u7.UniversalAmmoEnabled then if u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end elseif not u26.LimitedAmmoEnabled or u22.Ammo > 0 then u27.Mag = u27.Mag + 1 u22.Ammo = u22.Ammo - 1 ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) if u7.MagCartridge and not (u26.BatteryEnabled) then for n_4 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_4].Visible = true end end UpdateGUI() end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then if tbl_upv_10.ActuallyEquipped and not (u22.Ammo <= 0) then local v122 = n_3 -- NumForNext n_3 = v122 + v124 (limit v123) if not (tbl_upv_10.ActuallyEquipped) then v120 = os.clock() continue end if u28.ShotgunClipinAnim then u28.ShotgunClipinAnim:Play(nil, nil, u26.ShotgunClipinAnimationSpeed) end u29[u25].ShotgunClipin:Play() v120 = os.clock() end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped or not tbl_upv_10.ActuallyEquipped then break end end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.ShotgunClipinAnim and u28.ShotgunClipinAnim.IsPlaying then u28.ShotgunClipinAnim:Stop() end if u29[u25].ShotgunClipin.Playing then u29[u25].ShotgunClipin:Stop() end end end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) then if u26.TacticalReloadAnimationEnabled and u27.Mag > 0 then if u28.TacticalReloadAnim then u28.TacticalReloadAnim:Play(nil, nil, u26.TacticalReloadAnimationSpeed) end u29[u25].TacticalReloadSound:Play() else if u28.ReloadAnim then u28.ReloadAnim:Play(nil, nil, u26.ReloadAnimationSpeed) end u29[u25].ReloadSound:Play() game.ReplicatedStorage.Remotes.ReloadMagDrop:FireServer(u26.ReloadAnimationSpeed) end end local v125 = (((u27.Mag > 0) and (u26.TacticalReloadAnimationEnabled)) and (u26.TacticalReloadTime)) or (u26.ReloadTime) local v126 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.CanCancelReload then break end if not (v125 <= os.clock() - v126) then continue end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() return end if tbl_upv_10.ActuallyEquipped and tbl_upv_10.CanCancelReload then if u28.TacticalReloadAnim and u28.TacticalReloadAnim.IsPlaying then u28.TacticalReloadAnim:Stop() end if u29[u25].TacticalReloadSound.Playing then u29[u25].TacticalReloadSound:Stop() end if u28.ReloadAnim and u28.ReloadAnim.IsPlaying then u28.ReloadAnim:Stop() end if u29[u25].ReloadSound.Playing then u29[u25].ReloadSound:Stop() end end if tbl_upv_10.ActuallyEquipped and not (tbl_upv_10.CanCancelReload) and not (u26.ShotgunReload) then if u7.MagCartridge and u7.DropAllRemainingBullets and not (u26.BatteryEnabled) then for n_5 = 1, u27.Mag do local v127 = GunGUI_upv_1.MagCartridge:FindFirstChild(n_5) CreateTwoDeeShell(v127.Rotation, v127.AbsolutePosition, v127.AbsoluteSize, (Vector2.new(math.random(u7.DropXMin, u7.DropXMax), math.random(u7.DropYMin, u7.DropYMax)) * (u7.DropVelocity or 1)) * (math.random() ^ 0.5), "bullet") end end if u7.UniversalAmmoEnabled or u26.LimitedAmmoEnabled then local v128 = math.min(u26.AmmoPerMag - u27.Mag, u22.Ammo) u27.Mag = u27.Mag + v128 u22.Ammo = u22.Ammo - v128 else u27.Mag = u26.AmmoPerMag end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) end tbl_upv_10.Reloading = false tbl_upv_10.CanCancelReload = false if u7.MagCartridge and not (u26.BatteryEnabled) then for n_6 = 1, u27.Mag do GunGUI_upv_1.MagCartridge[n_6].Visible = true end end UpdateGUI() end end end local function OnTooglingAiming() --[[ name: OnTooglingAiming line: 1886 upvalues: tbl_upv_10 (copy, index: 1) u26 (ref, index: 2) CurrentCamera_upv_1 (copy, index: 3) TweenService_upv_1 (copy, index: 4) u39 (copy, index: 5) u28 (ref, index: 6) LocalPlayer_upv_1 (copy, index: 7) UserInputService_upv_1 (copy, index: 8) Thread_upv_1 (copy, index: 9) GunGUI_upv_1 (copy, index: 10) ]] if not (tbl_upv_10.Reloading) and not (tbl_upv_10.Overheated) and not (tbl_upv_10.HoldDown) and not (tbl_upv_10.Alting) and not (tbl_upv_10.AimDown) and tbl_upv_10.ActuallyEquipped and u26.IronsightEnabled and (CurrentCamera_upv_1.Focus.p - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude <= 1 then local v129 = TweenInfo.new(u26.TweenLength, u26.EasingStyle, u26.EasingDirection) local tbl_26 = {} tbl_26.FieldOfView = u26.FieldOfViewIS TweenService_upv_1:Create(CurrentCamera_upv_1, v129, tbl_26):Play() u39.t = u26.CrossScaleIS if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if u26.AimAnimationsEnabled and u28.IdleAnim and u28.IdleAnim.IsPlaying then u28.IdleAnim:Stop() if u28.AimIdleAnim then u28.AimIdleAnim:Play(nil, nil, u26.AimIdleAnimationSpeed) end end LocalPlayer_upv_1.CameraMode = Enum.CameraMode.LockFirstPerson UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity * u26.MouseSensitiveIS tbl_upv_10.AimDown = true return end if not tbl_upv_10.Reloading and not tbl_upv_10.Overheated and not tbl_upv_10.HoldDown and not tbl_upv_10.Alting and tbl_upv_10.AimDown and tbl_upv_10.ActuallyEquipped and u26.SniperEnabled and (CurrentCamera_upv_1.Focus.p - CurrentCamera_upv_1.CoordinateFrame.p).Magnitude <= 1 then local v130 = TweenInfo.new(u26.TweenLength, u26.EasingStyle, u26.EasingDirection) local tbl_27 = {} tbl_27.FieldOfView = u26.FieldOfViewS TweenService_upv_1:Create(CurrentCamera_upv_1, v130, tbl_27):Play() u39.t = u26.CrossScaleS if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if u26.AimAnimationsEnabled and u28.IdleAnim and u28.IdleAnim.IsPlaying then u28.IdleAnim:Stop() if u28.AimIdleAnim then u28.AimIdleAnim:Play(nil, nil, u26.AimIdleAnimationSpeed) end end tbl_upv_10.AimDown = true local v131 = os.clock() local v132 repeat Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) and not (tbl_upv_10.AimDown) then break end v132 = os.clock() - v131 until u26.ScopeDelay <= v132 if not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.AimDown then return end local u51 = GunGUI_upv_1.Scope.ZoomSound:Clone() u51.Parent = LocalPlayer_upv_1.PlayerGui u51:Play() u51.Ended:Connect( function() --[[ line: 1969 upvalues: u51 (copy, index: 1) ]] u51:Destroy() end ) LocalPlayer_upv_1.CameraMode = Enum.CameraMode.LockFirstPerson UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity * u26.MouseSensitiveS tbl_upv_10.Scoping = true else TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 if u26.AimAnimationsEnabled and u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end end tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end end local function OnHoldingDown() --[[ name: OnHoldingDown line: 2005 upvalues: u26 (ref, index: 1) tbl_upv_10 (copy, index: 2) u28 (ref, index: 3) TweenService_upv_1 (copy, index: 4) CurrentCamera_upv_1 (copy, index: 5) u39 (copy, index: 6) LocalPlayer_upv_1 (copy, index: 7) UserInputService_upv_1 (copy, index: 8) ]] if not u26.HoldDownEnabled or (tbl_upv_10.Reloading) or (tbl_upv_10.Overheated) or not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled then return end if tbl_upv_10.HoldDown then tbl_upv_10.HoldDown = false if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end if not u28.HoldDownAnim or not u28.HoldDownAnim.IsPlaying then return end u28.HoldDownAnim:Stop() else tbl_upv_10.HoldDown = true if u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() end if u28.IdleAnim and u28.IdleAnim.IsPlaying then u28.IdleAnim:Stop() end if u28.HoldDownAnim then u28.HoldDownAnim:Play(nil, nil, u26.HoldDownAnimationSpeed) end if not tbl_upv_10.AimDown then return end TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end end local function OnInspecting() --[[ name: OnInspecting line: 2053 upvalues: tbl_upv_10 (copy, index: 1) u26 (ref, index: 2) u28 (ref, index: 3) Thread_upv_1 (copy, index: 4) ]] if (tbl_upv_10.Reloading) or (tbl_upv_10.Overheated) or not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or (tbl_upv_10.AimDown) or (tbl_upv_10.Inspecting) or (tbl_upv_10.Switching) or (tbl_upv_10.Alting) then return end if u26.InspectAnimationEnabled then tbl_upv_10.Inspecting = true if u28.InspectAnim then u28.InspectAnim:Play(nil, nil, u26.InspectAnimationSpeed) end local v133 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.Reloading or tbl_upv_10.Overheated or not (tbl_upv_10.Enabled) or tbl_upv_10.AimDown or tbl_upv_10.Switching then break end local v134 = os.clock() - v133 if u28.InspectAnim.Length / u28.InspectAnim.Speed <= v134 then break end end tbl_upv_10.Inspecting = false end end local function OnSwitching() --[[ name: OnSwitching line: 2088 upvalues: tbl_upv_10 (copy, index: 1) u26 (ref, index: 2) u28 (ref, index: 3) Thread_upv_1 (copy, index: 4) u29 (ref, index: 5) u25 (ref, index: 6) u27 (ref, index: 7) UpdateGUI (copy, index: 8) ]] if (tbl_upv_10.Reloading) or (tbl_upv_10.Overheated) or not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or (tbl_upv_10.Inspecting) or (tbl_upv_10.Switching) or (tbl_upv_10.Alting) then return end if u26.SelectiveFireEnabled then tbl_upv_10.Switching = true if u28.SwitchAnim then u28.SwitchAnim:Play(nil, nil, u26.SwitchAnimationSpeed) end local v135 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.Reloading or tbl_upv_10.Overheated or not (tbl_upv_10.Enabled) or tbl_upv_10.Inspecting then break end local v136 = os.clock() - v135 if u26.SwitchTime <= v136 then break end end tbl_upv_10.Switching = false if not tbl_upv_10.ActuallyEquipped or (tbl_upv_10.Reloading) or (tbl_upv_10.Overheated) or not tbl_upv_10.Enabled or (tbl_upv_10.Inspecting) then return end u29[u25].SwitchSound:Play() u27.FireMode = (u27.FireMode % #u27.FireModes) + 1 UpdateGUI() end end local function OnAlting() --[[ name: OnAlting line: 2131 upvalues: u7 (copy, index: 1) Setting_upv_1 (copy, index: 2) tbl_upv_10 (copy, index: 3) u28 (ref, index: 4) TweenService_upv_1 (copy, index: 5) CurrentCamera_upv_1 (copy, index: 6) u26 (ref, index: 7) u39 (copy, index: 8) LocalPlayer_upv_1 (copy, index: 9) UserInputService_upv_1 (copy, index: 10) u29 (ref, index: 11) u25 (ref, index: 12) Thread_upv_1 (copy, index: 13) u18 (ref, index: 14) TargetMarker_upv_1 (copy, index: 15) a1 (copy, index: 16) u11 (ref, index: 17) u12 (ref, index: 18) u13 (ref, index: 19) Parent_upv_1 (copy, index: 20) tbl_upv_4 (copy, index: 21) u27 (ref, index: 22) tbl_upv_5 (copy, index: 23) tbl_upv_3 (copy, index: 24) u22 (ref, index: 25) u30 (ref, index: 26) u31 (ref, index: 27) u23 (ref, index: 28) u24 (ref, index: 29) u32 (ref, index: 30) u33 (ref, index: 31) u36 (copy, index: 32) u37 (copy, index: 33) u38 (copy, index: 34) tbl_upv_16 (copy, index: 35) u34 (copy, index: 36) u10 (copy, index: 37) tbl_upv_6 (copy, index: 38) tbl_upv_7 (copy, index: 39) GunGUI_upv_1 (copy, index: 40) SmokeTrail_upv_1 (copy, index: 41) ProjectileMotion_upv_1 (copy, index: 42) UpdateGUI (copy, index: 43) u40 (copy, index: 44) Reload (copy, index: 45) ]] local value_upv_17 if not u7.AltFire or not (#Setting_upv_1:GetChildren() > 1) or (tbl_upv_10.Reloading) or (tbl_upv_10.Overheated) or not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or (tbl_upv_10.Inspecting) or (tbl_upv_10.Alting) then return end if not (tbl_upv_10.Switching) then tbl_upv_10.Alting = true if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if tbl_upv_10.AimDown then TweenService_upv_1:Create(CurrentCamera_upv_1, TweenInfo.new(u26.TweenLengthNAD, u26.EasingStyleNAD, u26.EasingDirectionNAD), {FieldOfView = 70}):Play() u39.t = 1 if u26.AimAnimationsEnabled and u28.AimIdleAnim and u28.AimIdleAnim.IsPlaying then u28.AimIdleAnim:Stop() if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end end tbl_upv_10.Scoping = false LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic UserInputService_upv_1.MouseDeltaSensitivity = tbl_upv_10.InitialSensitivity tbl_upv_10.AimDown = false end if u28.AltAnim then u28.AltAnim:Play(nil, nil, u26.AltAnimationSpeed) end u29[u25].AltSound:Play() local v137 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) or tbl_upv_10.Reloading or tbl_upv_10.Overheated or not (tbl_upv_10.Enabled) or tbl_upv_10.Inspecting then break end local v138 = os.clock() - v137 if u26.AltTime <= v138 then break end end tbl_upv_10.Alting = false if not tbl_upv_10.ActuallyEquipped or (tbl_upv_10.Reloading) or (tbl_upv_10.Overheated) or not tbl_upv_10.Enabled then return end if not (tbl_upv_10.Inspecting) then u18 = nil TargetMarker_upv_1.Enabled = false TargetMarker_upv_1.Parent = a1 TargetMarker_upv_1.Adornee = nil if u11 then u11:Destroy() u11 = nil end if u12 then u12:Destroy() u12 = nil end if u13 then u13:Destroy() u13 = nil end for _, value_9 in pairs(u28) do if typeof(value_9) == "table" then for v156, value_10 in pairs(value_9) do if value_10[1].IsPlaying then value_10[1]:Stop() end end elseif value_9.IsPlaying then value_9:Stop() end end u29 = Parent_upv_1:FindFirstChild(u26.Handles[1], true) tbl_upv_10.CurrentRate = 0 tbl_upv_10.LastRate = 0 tbl_upv_10.ElapsedTime = 0 u25 = u25 % #Setting_upv_1:GetChildren() + 1 u26 = tbl_upv_4[u25] u27 = tbl_upv_5[u25] u28 = tbl_upv_3[u25] if not (u7.UniversalAmmoEnabled) then u22 = u27 end u27.HandleIndex = 1 u27.FireAnimIndex = 1 u27.AimFireAnimIndex = 1 u27.ShotgunPumpinAnimIndex = 1 if u26.AimAnimationsEnabled then local v139 = #u28.AimFireAnims > 0 and u28.AimFireAnims[1][1] or nil u30 = v139 local v140 = #u28.AimFireAnims > 0 and u28.AimFireAnims[1][2] or nil u31 = v140 end local v141 = ((#u28.FireAnims > 0) and (u28.FireAnims[1][1])) or nil u23 = v141 local v142 = ((#u28.FireAnims > 0) and (u28.FireAnims[1][2])) or nil u24 = v142 local v143 = ((#u28.ShotgunPumpinAnims > 0) and (u28.ShotgunPumpinAnims[1][1])) or nil u32 = v143 local v144 = ((#u28.ShotgunPumpinAnims > 0) and (u28.ShotgunPumpinAnims[1][2])) or nil u33 = v144 u36.s = u26.ScopeSwaySpeed u36.d = u26.ScopeSwayDamper u37.s = u26.ScopeKnockbackSpeed u37.d = u26.ScopeKnockbackDamper u38.s = u26.RecoilSpeed u38.d = u26.RecoilDamper for key_3, value_11 in pairs(tbl_upv_16) do if value_11 then value_11:Destroy() end table.remove(tbl_upv_16, key_3) end u34:ClearAllChildren() local v145 = u10:FindFirstChild(u26.ModuleName) local v146 if v145 then v146 = u10[u26.ModuleName] else v146 = u10 end for _, value_12 in pairs(v146.LaserBeamEffect.HitEffect:GetChildren()) do if value_12.ClassName == "ParticleEmitter" then local v147 = value_12:Clone() v147.Enabled = true v147.Parent = u34 end end for _, value_13 in pairs(u10.LaserBeamEffect.LaserBeams:GetChildren()) do if value_13.ClassName == "Beam" then table.insert(tbl_upv_16, (value_13:Clone())) end end table.clear(tbl_upv_6) local v148 = nil for _, value_14 in pairs(u28) do if typeof(value_14) == "table" then for v157, value_15 in pairs(value_14) do v148 = value_15[1] if u26.AnimationKeyframes[v148.Name] then table.insert(tbl_upv_6, {v148, u26.AnimationKeyframes[v148.Name]}) end end elseif u26.AnimationKeyframes[value_14.Name] then table.insert(tbl_upv_6, {value_14, u26.AnimationKeyframes[value_14.Name]}) end end for key_4, value_16 in pairs(tbl_upv_7) do value_16:Disconnect() table.remove(tbl_upv_7, key_4) end for _, value_upv_17 in pairs(tbl_upv_6) do table.insert( tbl_upv_7, value_upv_17[1]:GetMarkerReachedSignal("AnimationEvents"):Connect( function(a45) --[[ line: 2320 upvalues: value_upv_17 (copy, index: 1) Parent_upv_1 (copy, index: 2) ]] if not value_upv_17[2][a45] then return end value_upv_17[2][a45](a45, Parent_upv_1) end ) ) end if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for _, value_18 in pairs(GunGUI_upv_1.MagCartridge:GetChildren()) do if not (value_18:IsA("UIGridLayout")) then value_18:Destroy() end end for n_7 = 1, u26.AmmoPerMag do local v149 = GunGUI_upv_1.MagCartridge.UIGridLayout.Template:Clone() v149.Name = n_7 v149.LayoutOrder = n_7 if u27.Mag < n_7 then v149.Visible = false end v149.Parent = GunGUI_upv_1.MagCartridge end end GunGUI_upv_1.Scanner.Size = UDim2.fromScale(u26.ScanFrameWidth * 1.25, u26.ScanFrameHeight * 1.25) GunGUI_upv_1.Scanner.UIStroke.Transparency = 1 GunGUI_upv_1.Scanner.Message.TextStrokeTransparency = 1 GunGUI_upv_1.Scanner.Message.TextTransparency = 1 SmokeTrail_upv_1:StopEmission() local v150 = nil if u26.ProjectileMotion then local v151 = u10:FindFirstChild(u26.ModuleName) local v152 if v151 then v152 = u10[u26.ModuleName] else v152 = u10 end local ShowProjectilePath_1 = ProjectileMotion_upv_1.ShowProjectilePath local v153 = v152.MotionBeam local WorldPosition_2 = u29:FindFirstChild("GunFirePoint" .. u25).WorldPosition value_upv_17 = Vector3.new() local v154 = 3 v150 = u26.ChargeAlterTable.Acceleration local Acceleration_3 = u26.Acceleration local v155 = nil if v150 == nil or not (u26.ChargedShotAdvanceEnabled) then v155 = Acceleration_3 elseif u27.ChargeLevel == 1 then v155 = v150.Level1 if not (v155) then if u27.ChargeLevel == 2 then v155 = v150.Level2 if not v155 then if u27.ChargeLevel ~= 3 then v155 = Acceleration_3 else v155 = v150.Level3 v155 = v155 or Acceleration_3 end end elseif u27.ChargeLevel ~= 3 then v155 = Acceleration_3 else v155 = v150.Level3 v155 = v155 or Acceleration_3 end end elseif u27.ChargeLevel == 2 then v155 = v150.Level2 if not v155 then if u27.ChargeLevel ~= 3 then v155 = Acceleration_3 else v155 = v150.Level3 v155 = v155 or Acceleration_3 end end elseif u27.ChargeLevel ~= 3 then v155 = Acceleration_3 else v155 = v150.Level3 v155 = v155 or Acceleration_3 end u11, u12, u13 = ShowProjectilePath_1(v153, WorldPosition_2, value_upv_17, v154, v155) end if u28.IdleAnim then u28.IdleAnim:Play(nil, nil, u26.IdleAnimationSpeed) end if u26.AmmoPerMag ~= math.huge and u26.MaxHeat ~= math.huge then GunGUI_upv_1.Frame.Visible = true end UpdateGUI() local CrossSize_1 = u26.CrossSize local CrossSpeed_1 = u26.CrossSpeed local v153 = u26.CrossDamper u40.t = CrossSize_1 u40.s = CrossSpeed_1 u40.d = v153 if not tbl_upv_10.ActuallyEquipped or not u7.AutoReload or (tbl_upv_10.Reloading) or not (u22.Ammo > 0) and ((u7.UniversalAmmoEnabled) or (u26.LimitedAmmoEnabled)) or not (u27.Mag <= 0) then return end Reload() end end end local function OnFiring() --[[ name: OnFiring line: 2406 upvalues: u26 (ref, index: 1) tbl_upv_10 (copy, index: 2) u27 (ref, index: 3) u2 (copy, index: 4) u7 (copy, index: 5) u28 (ref, index: 6) u29 (ref, index: 7) u25 (ref, index: 8) Thread_upv_1 (copy, index: 9) Get3DPosition2 (copy, index: 10) CastRay (copy, index: 11) CurrentCamera_upv_1 (copy, index: 12) Parent_upv_1 (copy, index: 13) u1 (copy, index: 14) VisibleMuzz (copy, index: 15) VisibleMuzzle_upv_1 (copy, index: 16) tbl_upv_16 (copy, index: 17) u34 (copy, index: 18) u15 (ref, index: 19) Miscs_upv_1 (copy, index: 20) tbl_upv_2 (copy, index: 21) TweenService_upv_1 (copy, index: 22) Workspace_upv_1 (copy, index: 23) u14 (ref, index: 24) u10 (copy, index: 25) VisualizeBeam_upv_1 (copy, index: 26) u8 (copy, index: 27) ShatterGlass_upv_1 (copy, index: 28) InflictTarget_upv_1 (copy, index: 29) MarkHit (copy, index: 30) u19 (ref, index: 31) Lighting_upv_1 (copy, index: 32) u20 (ref, index: 33) u22 (ref, index: 34) GunGUI_upv_1 (copy, index: 35) CreateTwoDeeShell (copy, index: 36) ChangeMagAndAmmo_upv_1 (copy, index: 37) UpdateGUI (copy, index: 38) u21 (copy, index: 39) tbl_upv_9 (copy, index: 40) SmokeTrail_upv_1 (copy, index: 41) Overheat (copy, index: 42) Reload (copy, index: 43) EjectShell (copy, index: 44) SelfKnockback (copy, index: 45) u4 (copy, index: 46) Fire (copy, index: 47) CycleHandles (copy, index: 48) u32 (ref, index: 49) u33 (ref, index: 50) FindNearestEntity (copy, index: 51) TargetMarker_upv_1 (copy, index: 52) CheckPartInScanner (copy, index: 53) ]] local v180, v260, v246 if u26.LaserBeam then tbl_upv_10.Down = true if not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or not tbl_upv_10.Down or tbl_upv_10.Overheated or tbl_upv_10.HoldDown or tbl_upv_10.Switching or tbl_upv_10.Alting or not (u27.Mag > 0) or not (u27.Heat < u26.MaxHeat) or not (u2.Health > 0) then return end if u7.CancelReload then if tbl_upv_10.Reloading and not (tbl_upv_10.CanCancelReload) then tbl_upv_10.CanCancelReload = true end elseif tbl_upv_10.Reloading then return end tbl_upv_10.Enabled = false if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if u26.LaserBeamStartupDelay > 0 then if u28.LaserBeamStartupAnim and not (u28.LaserBeamStartupAnim.IsPlaying) then u28.LaserBeamStartupAnim:Play(nil, nil, u26.LaserBeamStartupAnimationSpeed) end if tbl_upv_10.ActuallyEquipped and u29[u25]:FindFirstChild("BeamStartupSound") then u29[u25].BeamStartupSound:Play() end Thread_upv_1:Wait(u26.LaserBeamStartupDelay) end local v156 = false local v157 = u29:FindFirstChild("GunMuzzlePoint" .. u25) local v158 = u29:FindFirstChild("GunFirePoint" .. u25) local v159, u52 = nil, nil while tbl_upv_10.ActuallyEquipped and not tbl_upv_10.Reloading and not tbl_upv_10.Overheated and not tbl_upv_10.HoldDown and (tbl_upv_10.Down) and not tbl_upv_10.Switching and not tbl_upv_10.Alting and (u27.Mag > 0) and (u27.Heat < u26.MaxHeat) do local v160, v161 if not (u2.Health > 0) then break end if u28.LaserBeamLoopAnim and not (u28.LaserBeamLoopAnim.IsPlaying) then u28.LaserBeamLoopAnim:Play(nil, nil, u26.LaserBeamLoopAnimationSpeed) end if not (u29[u25].BeamLoopSound.Playing) or not (u29[u25].BeamLoopSound.Looped) then u29[u25].BeamLoopSound:Play() end local Unit_upv_1 = (Get3DPosition2() - v158.WorldPosition).Unit local v162 = (not (u2.SeatPart)) or (u2.SeatPart:FindFirstAncestorOfClass("Model")) local u53, v163 = CastRay("Beam", v158.WorldPosition, Unit_upv_1, u26.LaserBeamRange, {CurrentCamera_upv_1, Parent_upv_1, u1, v162}, true) if not v156 then local v164 = true u29[u25].BeamFireSound:Play() VisibleMuzz(v157, true) VisibleMuzzle_upv_1:FireServer(v157, true) for v307, value_19 in pairs(tbl_upv_16) do if value_19 then value_19.Parent = u29 value_19.Attachment0 = v158 value_19.Attachment1 = u34 end end if u26.LaserTrailEnabled then u15 = Miscs_upv_1[u26.LaserTrailShape .. "Segment"]:Clone() if u26.RandomizeLaserColorIn == "None" then u15.Color = u26.LaserTrailColor end u15.Material = u26.LaserTrailMaterial u15.Reflectance = u26.LaserTrailReflectance u15.Transparency = u26.LaserTrailTransparency local v165 = u15 v165.Size = u26.LaserTrailShape == "Cone" and Vector3.new(u26.LaserTrailWidth, (v158.WorldPosition - v163).Magnitude, u26.LaserTrailHeight) or Vector3.new((v158.WorldPosition - v163).Magnitude, u26.LaserTrailHeight, u26.LaserTrailWidth) local v167 = u15 local v168 = CFrame.new((v158.WorldPosition + v163) * 0.5, v163) if u26.LaserTrailShape ~= "Cone" then local Angles_1 = CFrame.Angles v159 = CFrame.Angles(0, 1.5707963267948966, 0) v159 = Angles_1 else u52 = CFrame.Angles(1.5707963267948966, 0, 0) if not u52 then local Angles_1 = CFrame.Angles v159 = CFrame.Angles(0, 1.5707963267948966, 0) v159 = Angles_1 end end v167.CFrame = v168 * v159 u15.Parent = CurrentCamera_upv_1 end v156 = v164 end if u15 then if u26.RandomizeLaserColorIn ~= "None" then u15.Color = Color3.fromHSV((os.clock() % u26.LaserColorCycleTime) / u26.LaserColorCycleTime, 1, 1) end local v169 = u15 v169.Size = u26.LaserTrailShape == "Cone" and Vector3.new(u26.LaserTrailWidth, (v158.WorldPosition - v163).Magnitude, u26.LaserTrailHeight) or Vector3.new((v158.WorldPosition - v163).Magnitude, u26.LaserTrailHeight, u26.LaserTrailWidth) local v171 = u15 local v172 = CFrame.new((v158.WorldPosition + v163) * 0.5, v163) if u26.LaserTrailShape ~= "Cone" then local Angles_2 = CFrame.Angles v159 = CFrame.Angles(0, 1.5707963267948966, 0) v159 = Angles_2 else u52 = CFrame.Angles(1.5707963267948966, 0, 0) if not (u52) then local Angles_2 = CFrame.Angles v159 = CFrame.Angles(0, 1.5707963267948966, 0) v159 = Angles_2 else v159 = u52 end end v171.CFrame = v172 * v159 end if u26.LightningBoltEnabled then local tbl_28 = {} local BoltRadius_1 = u26.BoltRadius for n_8 = 1, u26.BoltCount do if n_8 ~= 1 then table.insert(tbl_28, CFrame.new(math.random(-BoltRadius_1, BoltRadius_1), math.random(-BoltRadius_1, BoltRadius_1), 0)) else table.insert(tbl_28, CFrame.new(0, 0, 0)) end end for v308, value_20 in ipairs(tbl_28) do local p_2 = (CFrame.new(v158.WorldPosition, v158.WorldPosition + Unit_upv_1) * value_20).p local p_3 = (CFrame.new(v163, v163 + Unit_upv_1) * value_20).p local Magnitude_2 = (p_3 - p_2).Magnitude local v173 = Color3.new(math.random(), math.random(), math.random()) local v174 = p_2 for n_9 = 0, Magnitude_2, 10 do local v175 = CFrame.new(p_2, p_3) * CFrame.new(0, 0, -n_9 - 10) * CFrame.new(-2 + (math.random() * u26.BoltWideness), -2 + (math.random() * u26.BoltWideness), -2 + (math.random() * u26.BoltWideness)) local u54 = Miscs_upv_1[u26.BoltShape .. "Segment"]:Clone() if u26.RandomizeBoltColorIn == "None" then u54.Color = u26.BoltColor elseif u26.RandomizeBoltColorIn == "Whole" then u54.Color = v173 elseif u26.RandomizeBoltColorIn == "Segment" then u54.Color = Color3.new(math.random(), math.random(), math.random()) end u54.Material = u26.BoltMaterial u54.Reflectance = u26.BoltReflectance u54.Transparency = u26.BoltTransparency if Magnitude_2 < n_9 + 10 then local v176 = CFrame.new(v174, p_3) * CFrame.new(0, 0, -(v174 - p_3).Magnitude / 2) local v177 = ((u26.BoltShape == "Cone") and (CFrame.Angles(1.5707963267948966, 0, 0))) or (CFrame.Angles(0, 1.5707963267948966, 0)) u54.CFrame = v176 * v177 else local v178 = CFrame.new(v174, v175.p) * CFrame.new(0, 0, -(v174 - v175.p).Magnitude / 2) local v179 = ((u26.BoltShape == "Cone") and (CFrame.Angles(1.5707963267948966, 0, 0))) or (CFrame.Angles(0, 1.5707963267948966, 0)) u54.CFrame = v178 * v179 end if Magnitude_2 < n_9 + 10 then v180 = ((u26.BoltShape == "Cone") and (Vector3.new(u26.BoltWidth, (v174 - p_3).Magnitude, u26.BoltHeight))) or (Vector3.new((v174 - p_3).Magnitude, u26.BoltHeight, u26.BoltWidth)) else v180 = ((u26.BoltShape == "Cone") and (Vector3.new(u26.BoltWidth, (v174 - v175.p).Magnitude, u26.BoltHeight))) or (Vector3.new((v174 - v175.p).Magnitude, u26.BoltHeight, u26.BoltWidth)) end u54.Size = v180 u54.Parent = CurrentCamera_upv_1 table.insert(tbl_upv_2, u54) Thread_upv_1:Delay( u26.BoltVisibleTime, function() --[[ line: 2655 upvalues: u26 (ref, index: 1) u54 (copy, index: 2) TweenService_upv_1 (copy, index: 3) tbl_upv_2 (copy, index: 4) ]] local v181, v182 = nil, nil if u26.BoltFadeTime > 0 then local Size_1 = u54.Size local v183 = ((u26.ScaleBolt) and (Vector3.new(1, u26.BoltScaleMultiplier, u26.BoltScaleMultiplier))) or Vector3.new(1, 1, 1) local v184 = TweenService_upv_1:Create(u54, TweenInfo.new(u26.BoltFadeTime, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Transparency = 1, Size = Size_1 * v183}) v184:Play() v184.Completed:Wait() v182 = table.find(tbl_upv_2, u54) if v182 then table.remove(tbl_upv_2, v182) end else v181 = table.find(tbl_upv_2, u54) if v181 then table.remove(tbl_upv_2, v181) end end u54:Destroy() end ) v174 = v175.p end end end u34.Parent = Workspace_upv_1.Terrain u34.WorldCFrame = CFrame.new(v163) if u26.LookAtInput then v157.CFrame = v157.Parent.CFrame:toObjectSpace(CFrame.lookAt(v157.WorldPosition, v163)) u34.WorldCFrame = CFrame.new(v163, Unit_upv_1) end u14 = {ChargeLevel = u27.ChargeLevel} v160 = os.clock() if v160 - (tbl_upv_10.LastUpdate or 0) > 0.1 then tbl_upv_10.LastUpdate = v160 v159 = u10:FindFirstChild(u26.ModuleName) local v185 if v159 then v185 = u10[u26.ModuleName] else v185 = u10 end VisualizeBeam_upv_1:FireServer(true, {Id = u8, ClientModule = u26, LaserBeams = v185.LaserBeamEffect.LaserBeams, HitEffect = v185.LaserBeamEffect.HitEffect, CrosshairPosition = v163, Handle = u29, MuzzlePoint = v157, FirePoint = v158}) end v161 = os.clock() if u26.LaserTrailDamageRate < v161 - (tbl_upv_10.LastUpdate2 or 0) then tbl_upv_10.LastUpdate2 = v161 if u53 then if u53.Name == "_glass" and (u26.CanBreakGlass) then ShatterGlass_upv_1:FireServer(u53, v163, Unit_upv_1) else local v186 = u53:FindFirstAncestorOfClass("Model") u52 = v186 if u52 then local v309 = v186:FindFirstChildOfClass("Humanoid") end local u55 = v186 and (v186:FindFirstChild("HumanoidRootPart") or (v186:FindFirstChild("Head"))) if u52 and u52.Health > 0 and u55 then if u52.Health > 0 then Thread_upv_1:Spawn( function() --[[ line: 2750 upvalues: InflictTarget_upv_1 (copy, index: 1) Parent_upv_1 (copy, index: 2) u26 (ref, index: 3) u52 (copy, index: 4) u55 (copy, index: 5) u53 (copy, index: 6) u14 (ref, index: 7) ]] InflictTarget_upv_1:InvokeServer("GunLaser", Parent_upv_1, u26, u52, u55, u53, u53.Size, u14) end ) MarkHit(u26, false) end elseif u52 and u55 and u53.Name == "Head" then if u19 then u19:Cancel() Lighting_upv_1.ColorCorrection.Saturation = 0.5 end if u20 then u20:Cancel() workspace.CurrentCamera.FieldOfView = 70 end local tbl_29 = {Saturation = -0.3} u19 = TweenService_upv_1:Create(Lighting_upv_1.ColorCorrection, TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, true), tbl_29) local tbl_30 = {FieldOfView = 68} u20 = TweenService_upv_1:Create(workspace.CurrentCamera, TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, 0, true), tbl_30) u19:Play() u20:Play() end end end if u26.BatteryEnabled then u27.ShotsForDepletion = u27.ShotsForDepletion + 1 if u26.ShotsForDepletion <= u27.ShotsForDepletion then u27.ShotsForDepletion = 0 u22.Ammo = math.clamp(u22.Ammo - Random.new():NextInteger(u26.MinDepletion, u26.MaxDepletion), 0, u22.MaxAmmo) end u27.Heat = math.clamp(u27.Heat + Random.new():NextInteger(u26.HeatPerFireMin, u26.HeatPerFireMax), 0, u26.MaxHeat) else local Mag_1 = u27.Mag u27.Mag = math.clamp(u27.Mag - u26.AmmoCost, 0, u26.AmmoPerMag) if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for n_10 = 0, (Mag_1 - u27.Mag) - 1 do local v187 = GunGUI_upv_1.MagCartridge:FindFirstChild(Mag_1 - n_10) if u7.Ejection then CreateTwoDeeShell(v187.Rotation, v187.AbsolutePosition, v187.AbsoluteSize, (Vector2.new(math.random(u7.XMin, u7.XMax), math.random(u7.YMin, u7.YMax)) * (u7.Velocity or 1)) * (math.random() ^ 0.5), "shell", u7.Shockwave) end v187.Visible = false end end end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) Thread_upv_1:Spawn( function() --[[ line: 2865 upvalues: tbl_upv_10 (copy, index: 1) u27 (ref, index: 2) u26 (ref, index: 3) Thread_upv_1 (copy, index: 4) ]] tbl_upv_10.CanBeCooledDown = false u27.ShotID = u27.ShotID + 1 local ShotID_1 = u27.ShotID local TimeBeforeCooldown_1 = u26.TimeBeforeCooldown local v188 = os.clock() while true do Thread_upv_1:Wait() if ShotID_1 ~= u27.ShotID or TimeBeforeCooldown_1 <= os.clock() - v188 then break end end local v189 = (ShotID_1 ~= u27.ShotID) and true if (v189) then return end tbl_upv_10.CanBeCooledDown = true end ) UpdateGUI() end if not (u15) or not (u26.DamageableLaserTrail) then tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate + u26.SmokeTrailRateIncrement Thread_upv_1:Wait() continue end for v310, value_upv_21 in pairs(Workspace_upv_1:GetPartsInPart(u15, u21)) do if not (value_upv_21) or not (value_upv_21.Parent) then continue end local v190 = value_upv_21:FindFirstAncestorOfClass("Model") local u56 = v190 and (v190:FindFirstChildOfClass("Humanoid")) Unit_upv_1 = v190 and (v190:FindFirstChild("HumanoidRootPart") or (value_upv_21.Parent:FindFirstChild("Head"))) if not (u56) or u56.Parent == u1 or not (Unit_upv_1) or not (u56.Health > 0) or table.find(tbl_upv_9, u56) then continue end table.insert(tbl_upv_9, u56) Thread_upv_1:Spawn( function() --[[ line: 2903 upvalues: InflictTarget_upv_1 (copy, index: 1) Parent_upv_1 (copy, index: 2) u26 (ref, index: 3) u56 (copy, index: 4) Unit_upv_1 (copy, index: 5) value_upv_21 (copy, index: 6) u14 (ref, index: 7) ]] InflictTarget_upv_1:InvokeServer("GunLaser", Parent_upv_1, u26, u56, Unit_upv_1, value_upv_21, value_upv_21.Size, u14) end ) MarkHit(u26, false) if u26.LaserTrailConstantDamage then Thread_upv_1:Delay( u26.LaserTrailDamageRate, function() --[[ line: 2917 upvalues: tbl_upv_9 (copy, index: 1) u56 (copy, index: 2) ]] local v191 = table.find(tbl_upv_9, u56) if not v191 then return end table.remove(tbl_upv_9, v191) end ) end end tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate + u26.SmokeTrailRateIncrement Thread_upv_1:Wait() end if u14 then VisualizeBeam_upv_1:FireServer(false, {Id = u8, ClientModule = u26}) u14 = nil end for _, value_22 in pairs(tbl_upv_16) do if value_22 then value_22.Attachment0 = nil value_22.Attachment1 = nil value_22.Parent = nil end end if u15 then Thread_upv_1:Spawn( function() --[[ line: 2951 upvalues: u15 (ref, index: 1) u26 (ref, index: 2) TweenService_upv_1 (copy, index: 3) ]] if u26.LaserTrailFadeTime > 0 then local Size_2 = u15.Size local v192 = ((u26.ScaleLaserTrail) and (Vector3.new(1, u26.LaserTrailScaleMultiplier, u26.LaserTrailScaleMultiplier))) or Vector3.new(1, 1, 1) local v193 = TweenService_upv_1:Create(u15, TweenInfo.new(u26.LaserTrailFadeTime, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Transparency = 1, Size = Size_2 * v192}) v193:Play() v193.Completed:Wait() end u15:Destroy() end ) u15 = nil end if u34 then u34.Parent = nil end for _, value_23 in pairs(v157:GetChildren()) do if value_23.ClassName ~= "ParticleEmitter" then continue end if not (value_23:FindFirstChild("EmitCount")) then value_23.Enabled = false end end VisibleMuzzle_upv_1:FireServer(v157, false) if (u26.BatteryEnabled and u26.MaxHeat <= u27.Heat or u27.Mag <= 0) and u26.MaximumRate <= tbl_upv_10.CurrentRate and u26.SmokeTrailEnabled then Thread_upv_1:Spawn( function() --[[ line: 2995 upvalues: SmokeTrail_upv_1 (copy, index: 1) u29 (ref, index: 2) u25 (ref, index: 3) u26 (ref, index: 4) ]] SmokeTrail_upv_1:StopEmission() SmokeTrail_upv_1:EmitSmokeTrail(u29["SmokeTrail" .. u25], u26.MaximumTime) end ) end if u29[u25].BeamLoopSound.Playing and u29[u25].BeamLoopSound.Looped then u29[u25].BeamLoopSound:Stop() end if u28.LaserBeamLoopAnim and u28.LaserBeamLoopAnim.IsPlaying then u28.LaserBeamLoopAnim:Stop() end if u28.LaserBeamStartupAnim and u28.LaserBeamStartupAnim.IsPlaying then u28.LaserBeamStartupAnim:Stop() end if u29[u25].BeamFireSound.Playing then u29[u25].BeamFireSound:Stop() end if tbl_upv_10.ActuallyEquipped and u29[u25]:FindFirstChild("BeamEndSound") then u29[u25].BeamEndSound:Play() end local v194 = false if tbl_upv_10.ActuallyEquipped and u26.BatteryEnabled and u26.MaxHeat <= u27.Heat then local v195 = true tbl_upv_10.Enabled = true Thread_upv_1:Spawn(Overheat) v194 = v195 end if not v194 then if tbl_upv_10.ActuallyEquipped and u28.LaserBeamStopAnim and not (u28.LaserBeamStopAnim.IsPlaying) then u28.LaserBeamStopAnim:Play(nil, nil, u26.LaserBeamStopAnimationSpeed) end Thread_upv_1:Wait(u26.LaserBeamStopDelay) tbl_upv_10.Enabled = true if tbl_upv_10.ActuallyEquipped and u7.AutoReload and u27.Mag <= 0 then Reload() end end return end if u26.ChargedShotAdvanceEnabled then if u26.SelectiveFireEnabled then if u26.HoldAndReleaseEnabled then if u26.SelectiveFireEnabled then tbl_upv_10.Down = true local v196 = false if not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or not tbl_upv_10.Down or tbl_upv_10.Overheated or tbl_upv_10.HoldDown or tbl_upv_10.Switching or tbl_upv_10.Alting or not (u27.Mag > 0) or not (u27.Heat < u26.MaxHeat) or not (u2.Health > 0) then return end if u7.CancelReload then if tbl_upv_10.Reloading and not (tbl_upv_10.CanCancelReload) then tbl_upv_10.CanCancelReload = true end elseif tbl_upv_10.Reloading then return end tbl_upv_10.Enabled = false if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if u26.ChargedShotEnabled then if tbl_upv_10.ActuallyEquipped and u29[u25]:FindFirstChild("ChargeSound") then u29[u25].ChargeSound:Play() end Thread_upv_1:Wait(u26.ChargingTime) v196 = true end if u26.MinigunEnabled then if u28.MinigunRevUpAnim and not (u28.MinigunRevUpAnim.IsPlaying) then u28.MinigunRevUpAnim:Play(nil, nil, u26.MinigunRevUpAnimationSpeed) end if tbl_upv_10.ActuallyEquipped and u29[u25]:FindFirstChild("WindUp") then u29[u25].WindUp:Play() end Thread_upv_1:Wait(u26.DelayBeforeFiring) end while tbl_upv_10.ActuallyEquipped and not tbl_upv_10.Overheated and not tbl_upv_10.HoldDown do if tbl_upv_10.Down then if tbl_upv_10.Switching or tbl_upv_10.Alting or not (u27.Mag > 0) or not (u27.Heat < u26.MaxHeat) then break end local v197, v198 = nil, nil if not (u2.Health > 0) then break end local v199 = false local v200 if u26.SelectiveFireEnabled then v200 = ((u27.FireModes[u27.FireMode] ~= true) and (u27.FireModes[u27.FireMode])) or 1 else v200 = ((u26.BurstFireEnabled) and (u26.BulletPerBurst)) or 1 end for _ = 1, v200 do if not (tbl_upv_10.ActuallyEquipped) then break end local tbl_31 = {} if not (u26.ShotgunPump) then Thread_upv_1:Spawn( function() --[[ line: 4133 upvalues: Thread_upv_1 (copy, index: 1) tbl_upv_10 (copy, index: 2) u26 (ref, index: 3) EjectShell (copy, index: 4) u29 (ref, index: 5) ]] local v201 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v202 = os.clock() - v201 if u26.BulletShellDelay <= v202 then break end end if not tbl_upv_10.ActuallyEquipped then return end EjectShell(u29) end ) end tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate + u26.SmokeTrailRateIncrement local v203 = Get3DPosition2() local v204 = ((u26.ShotgunEnabled) and (u26.BulletPerShot)) or 1 for n_11 = 1, v204 do local v205 = u26.Spread * 10 local v206 = (((tbl_upv_10.AimDown) and (1 - u26.SpreadRedutionIS)) and (1 - u26.SpreadRedutionS)) or 1 local v207 = v205 * v206 local v208 = CFrame.new(u29:FindFirstChild("GunFirePoint" .. u25).WorldPosition, v203) v197 = u26.ChargeAlterTable.SpreadPattern local SpreadPattern_1 = u26.SpreadPattern local v209 = nil if v197 == nil or not (u26.ChargedShotAdvanceEnabled) then v209 = SpreadPattern_1 v198 = u26.ChargeAlterTable.ShotgunPattern local ShotgunPattern_1 = u26.ShotgunPattern if v198 == nil or not (u26.ChargedShotAdvanceEnabled) then v197 = ShotgunPattern_1 if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end v197 = ((u27.ChargeLevel == 1) and (v198.Level1)) or (((u27.ChargeLevel == 2) and (v198.Level2)) or (((u27.ChargeLevel == 3) and (v198.Level3)) or ShotgunPattern_1)) if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end v209 = ((u27.ChargeLevel == 1) and (v197.Level1)) or (((u27.ChargeLevel == 2) and (v197.Level2)) or (((u27.ChargeLevel == 3) and (v197.Level3)) or SpreadPattern_1)) v198 = u26.ChargeAlterTable.ShotgunPattern local ShotgunPattern_1 = u26.ShotgunPattern if v198 == nil or not (u26.ChargedShotAdvanceEnabled) then v197 = ShotgunPattern_1 if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end v197 = ((u27.ChargeLevel == 1) and (v198.Level1)) or (((u27.ChargeLevel == 2) and (v198.Level2)) or (((u27.ChargeLevel == 3) and (v198.Level3)) or ShotgunPattern_1)) if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end if u26.SelfKnockback then SelfKnockback(v203, u4.Position) end Fire(u29, tbl_31) if u26.BatteryEnabled then u27.ShotsForDepletion = u27.ShotsForDepletion + 1 if u26.ShotsForDepletion <= u27.ShotsForDepletion then u27.ShotsForDepletion = 0 u22.Ammo = math.clamp(u22.Ammo - Random.new():NextInteger(u26.MinDepletion, u26.MaxDepletion), 0, u22.MaxAmmo) end u27.Heat = math.clamp(u27.Heat + Random.new():NextInteger(u26.HeatPerFireMin, u26.HeatPerFireMax), 0, u26.MaxHeat) else local Mag_2 = u27.Mag u27.Mag = math.clamp(u27.Mag - u26.AmmoCost, 0, u26.AmmoPerMag) if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for n_12 = 0, (Mag_2 - u27.Mag) - 1 do local v210 = GunGUI_upv_1.MagCartridge:FindFirstChild(Mag_2 - n_12) if u7.Ejection then CreateTwoDeeShell(v210.Rotation, v210.AbsolutePosition, v210.AbsoluteSize, (Vector2.new(math.random(u7.XMin, u7.XMax), math.random(u7.YMin, u7.YMax)) * (u7.Velocity or 1)) * (math.random() ^ 0.5), "shell", u7.Shockwave) end v210.Visible = false end end end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) Thread_upv_1:Spawn( function() --[[ line: 4257 upvalues: tbl_upv_10 (copy, index: 1) u27 (ref, index: 2) u26 (ref, index: 3) Thread_upv_1 (copy, index: 4) ]] tbl_upv_10.CanBeCooledDown = false u27.ShotID = u27.ShotID + 1 local ShotID_2 = u27.ShotID local TimeBeforeCooldown_2 = u26.TimeBeforeCooldown local v211 = os.clock() while true do Thread_upv_1:Wait() if ShotID_2 ~= u27.ShotID or TimeBeforeCooldown_2 <= os.clock() - v211 then break end end local v212 = (ShotID_2 ~= u27.ShotID) and true if (v212) then return end tbl_upv_10.CanBeCooledDown = true end ) UpdateGUI() if u26.BurstFireEnabled and not (u26.SelectiveFireEnabled) then if u26.CycleHandles then CycleHandles() end local v213 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v214 = os.clock() - v213 if u26.BurstRate <= v214 then break end end end if u26.SelectiveFireEnabled then if u26.CycleHandles then CycleHandles() end local v213 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v214 = os.clock() - v213 if u26.BurstRates[u27.FireMode] <= v214 then break end end end if u26.BatteryEnabled and u26.MaxHeat <= u27.Heat or not u26.BatteryEnabled and u27.Mag <= 0 then break end end if not (u26.ShotgunPump) and (not (u26.SelectiveFireEnabled) and not (u26.BurstFireEnabled) or not (u26.CycleHandles)) then CycleHandles() end if (u26.BatteryEnabled and u26.MaxHeat <= u27.Heat or u27.Mag <= 0) and u26.MaximumRate <= tbl_upv_10.CurrentRate and u26.SmokeTrailEnabled then Thread_upv_1:Spawn( function() --[[ line: 4336 upvalues: SmokeTrail_upv_1 (copy, index: 1) u29 (ref, index: 2) u25 (ref, index: 3) u26 (ref, index: 4) ]] SmokeTrail_upv_1:StopEmission() SmokeTrail_upv_1:EmitSmokeTrail(u29["SmokeTrail" .. u25], u26.MaximumTime) end ) end if not (u26.BatteryEnabled) or not (u26.MaxHeat <= u27.Heat) then local v215 = ((u26.SelectiveFireEnabled) and (u26.FireRates[u27.FireMode])) or (u26.FireRate) Thread_upv_1:Wait(v215) if u26.SelectiveFireEnabled then if u27.FireModes[u27.FireMode] ~= true then break else v196 = v199 continue end elseif u26.Auto then v196 = v199 continue else break end end else if not (v196) or tbl_upv_10.Switching or tbl_upv_10.Alting or not (u27.Mag > 0) or not (u27.Heat < u26.MaxHeat) then break end local v197, v198 = nil, nil if not (u2.Health > 0) then break end local v199 = false local v200 if u26.SelectiveFireEnabled then v200 = ((u27.FireModes[u27.FireMode] ~= true) and (u27.FireModes[u27.FireMode])) or 1 else v200 = ((u26.BurstFireEnabled) and (u26.BulletPerBurst)) or 1 end for _ = 1, v200 do if not (tbl_upv_10.ActuallyEquipped) then break end local tbl_31 = {} if not (u26.ShotgunPump) then Thread_upv_1:Spawn( function() --[[ line: 4133 upvalues: Thread_upv_1 (copy, index: 1) tbl_upv_10 (copy, index: 2) u26 (ref, index: 3) EjectShell (copy, index: 4) u29 (ref, index: 5) ]] local v201 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v202 = os.clock() - v201 if u26.BulletShellDelay <= v202 then break end end if not tbl_upv_10.ActuallyEquipped then return end EjectShell(u29) end ) end tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate + u26.SmokeTrailRateIncrement local v203 = Get3DPosition2() local v204 = ((u26.ShotgunEnabled) and (u26.BulletPerShot)) or 1 for n_11 = 1, v204 do local v205 = u26.Spread * 10 local v206 = (((tbl_upv_10.AimDown) and (1 - u26.SpreadRedutionIS)) and (1 - u26.SpreadRedutionS)) or 1 local v207 = v205 * v206 local v208 = CFrame.new(u29:FindFirstChild("GunFirePoint" .. u25).WorldPosition, v203) v197 = u26.ChargeAlterTable.SpreadPattern local SpreadPattern_1 = u26.SpreadPattern local v209 = nil if v197 == nil or not (u26.ChargedShotAdvanceEnabled) then v209 = SpreadPattern_1 v198 = u26.ChargeAlterTable.ShotgunPattern local ShotgunPattern_1 = u26.ShotgunPattern if v198 == nil or not (u26.ChargedShotAdvanceEnabled) then v197 = ShotgunPattern_1 if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end v197 = ((u27.ChargeLevel == 1) and (v198.Level1)) or (((u27.ChargeLevel == 2) and (v198.Level2)) or (((u27.ChargeLevel == 3) and (v198.Level3)) or ShotgunPattern_1)) if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end v209 = ((u27.ChargeLevel == 1) and (v197.Level1)) or (((u27.ChargeLevel == 2) and (v197.Level2)) or (((u27.ChargeLevel == 3) and (v197.Level3)) or SpreadPattern_1)) v198 = u26.ChargeAlterTable.ShotgunPattern local ShotgunPattern_1 = u26.ShotgunPattern if v198 == nil or not (u26.ChargedShotAdvanceEnabled) then v197 = ShotgunPattern_1 if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end v197 = ((u27.ChargeLevel == 1) and (v198.Level1)) or (((u27.ChargeLevel == 2) and (v198.Level2)) or (((u27.ChargeLevel == 3) and (v198.Level3)) or ShotgunPattern_1)) if not (v197) then v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) table.insert(tbl_31, v208.LookVector) continue end if #v209 > 0 then v208 = v208 * CFrame.Angles(math.rad((v207 * v209[n_11][2]) / 50), math.rad((v207 * v209[n_11][1]) / 50), 0) else v208 = v208 * CFrame.Angles(math.rad(math.random(-v207, v207) / 50), math.rad(math.random(-v207, v207) / 50), 0) end table.insert(tbl_31, v208.LookVector) end if u26.SelfKnockback then SelfKnockback(v203, u4.Position) end Fire(u29, tbl_31) if u26.BatteryEnabled then u27.ShotsForDepletion = u27.ShotsForDepletion + 1 if u26.ShotsForDepletion <= u27.ShotsForDepletion then u27.ShotsForDepletion = 0 u22.Ammo = math.clamp(u22.Ammo - Random.new():NextInteger(u26.MinDepletion, u26.MaxDepletion), 0, u22.MaxAmmo) end u27.Heat = math.clamp(u27.Heat + Random.new():NextInteger(u26.HeatPerFireMin, u26.HeatPerFireMax), 0, u26.MaxHeat) else local Mag_2 = u27.Mag u27.Mag = math.clamp(u27.Mag - u26.AmmoCost, 0, u26.AmmoPerMag) if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for n_12 = 0, (Mag_2 - u27.Mag) - 1 do local v210 = GunGUI_upv_1.MagCartridge:FindFirstChild(Mag_2 - n_12) if u7.Ejection then CreateTwoDeeShell(v210.Rotation, v210.AbsolutePosition, v210.AbsoluteSize, (Vector2.new(math.random(u7.XMin, u7.XMax), math.random(u7.YMin, u7.YMax)) * (u7.Velocity or 1)) * (math.random() ^ 0.5), "shell", u7.Shockwave) end v210.Visible = false end end end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) Thread_upv_1:Spawn( function() --[[ line: 4257 upvalues: tbl_upv_10 (copy, index: 1) u27 (ref, index: 2) u26 (ref, index: 3) Thread_upv_1 (copy, index: 4) ]] tbl_upv_10.CanBeCooledDown = false u27.ShotID = u27.ShotID + 1 local ShotID_2 = u27.ShotID local TimeBeforeCooldown_2 = u26.TimeBeforeCooldown local v211 = os.clock() while true do Thread_upv_1:Wait() if ShotID_2 ~= u27.ShotID or TimeBeforeCooldown_2 <= os.clock() - v211 then break end end local v212 = (ShotID_2 ~= u27.ShotID) and true if (v212) then return end tbl_upv_10.CanBeCooledDown = true end ) UpdateGUI() if u26.BurstFireEnabled and not (u26.SelectiveFireEnabled) then if u26.CycleHandles then CycleHandles() end local v213 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v214 = os.clock() - v213 if u26.BurstRate <= v214 then break end end end if u26.SelectiveFireEnabled then if u26.CycleHandles then CycleHandles() end local v213 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v214 = os.clock() - v213 if u26.BurstRates[u27.FireMode] <= v214 then break end end end if u26.BatteryEnabled and u26.MaxHeat <= u27.Heat or not u26.BatteryEnabled and u27.Mag <= 0 then break end end if not (u26.ShotgunPump) and (not (u26.SelectiveFireEnabled) and not (u26.BurstFireEnabled) or not (u26.CycleHandles)) then CycleHandles() end if (u26.BatteryEnabled and u26.MaxHeat <= u27.Heat or u27.Mag <= 0) and u26.MaximumRate <= tbl_upv_10.CurrentRate and u26.SmokeTrailEnabled then Thread_upv_1:Spawn( function() --[[ line: 4336 upvalues: SmokeTrail_upv_1 (copy, index: 1) u29 (ref, index: 2) u25 (ref, index: 3) u26 (ref, index: 4) ]] SmokeTrail_upv_1:StopEmission() SmokeTrail_upv_1:EmitSmokeTrail(u29["SmokeTrail" .. u25], u26.MaximumTime) end ) end if not (u26.BatteryEnabled) or not (u26.MaxHeat <= u27.Heat) then local v215 = ((u26.SelectiveFireEnabled) and (u26.FireRates[u27.FireMode])) or (u26.FireRate) Thread_upv_1:Wait(v215) if u26.SelectiveFireEnabled then if u27.FireModes[u27.FireMode] ~= true then break else v196 = v199 continue end elseif u26.Auto then v196 = v199 continue else break end end end break end if u26.MinigunEnabled and tbl_upv_10.ActuallyEquipped and u29[u25]:FindFirstChild("WindDown") then u29[u25].WindDown:Play() end local v216 = false if tbl_upv_10.ActuallyEquipped and u26.BatteryEnabled and u26.MaxHeat <= u27.Heat then local v217 = true tbl_upv_10.Enabled = true Thread_upv_1:Spawn(Overheat) v216 = v217 end if not (v216) then if u26.MinigunEnabled then if tbl_upv_10.ActuallyEquipped and u28.MinigunRevDownAnim and not (u28.MinigunRevDownAnim.IsPlaying) then u28.MinigunRevDownAnim:Play(nil, nil, u26.MinigunRevDownAnimationSpeed) end if u28.MinigunRevUpAnim and u28.MinigunRevUpAnim.IsPlaying then u28.MinigunRevUpAnim:Stop() end Thread_upv_1:Wait(u26.DelayAfterFiring) end if u26.ShotgunPump then if tbl_upv_10.ActuallyEquipped then if u32 then u32:Play(nil, nil, u33) end if u29[u25]:FindFirstChild("PumpSound") then u29[u25].PumpSound:Play() end Thread_upv_1:Spawn( function() --[[ line: 4418 upvalues: Thread_upv_1 (copy, index: 1) tbl_upv_10 (copy, index: 2) u26 (ref, index: 3) EjectShell (copy, index: 4) u29 (ref, index: 5) ]] local v218 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v219 = os.clock() - v218 if u26.BulletShellDelay <= v219 then break end end if not tbl_upv_10.ActuallyEquipped then return end EjectShell(u29) end ) end if not (u26.SelectiveFireEnabled) and not (u26.BurstFireEnabled) or not (u26.CycleHandles) then CycleHandles() end Thread_upv_1:Wait(u26.ShotgunPumpinSpeed) end tbl_upv_10.Enabled = true if tbl_upv_10.ActuallyEquipped and u7.AutoReload and u27.Mag <= 0 then Reload() end end else tbl_upv_10.Charging = true if not tbl_upv_10.ActuallyEquipped or not tbl_upv_10.Enabled or not tbl_upv_10.Charging or tbl_upv_10.Overheated or tbl_upv_10.HoldDown or tbl_upv_10.Switching or tbl_upv_10.Alting or not (u27.Mag > 0) or not (u27.Heat < u26.MaxHeat) or not (u2.Health > 0) then return end if u7.CancelReload then if tbl_upv_10.Reloading and not (tbl_upv_10.CanCancelReload) then tbl_upv_10.CanCancelReload = true end elseif tbl_upv_10.Reloading then return end tbl_upv_10.Enabled = false if u28.InspectAnim and u28.InspectAnim.IsPlaying then u28.InspectAnim:Stop() end if not (u26.AimAnimationsEnabled) or not (tbl_upv_10.AimDown) then if u28.ChargingAnim and not (u28.ChargingAnim.IsPlaying) then u28.ChargingAnim:Play(nil, nil, u26.ChargingAnimationSpeed) end elseif u28.AimChargingAnim and not (u28.AimChargingAnim.IsPlaying) then u28.AimChargingAnim:Play(nil, nil, u26.AimChargingAnimationSpeed) end local ChargingSound_1 = u29[u25]:FindFirstChild("ChargingSound") local v220 = os.clock() local v221 = os.clock() local v222 = false local tbl_32 = {} local v223 = 0 repeat if u26.LockOnScan then tbl_upv_10.Charged = true local v224 = os.clock() - v220 if u26.TimeBeforeScan <= v224 then if not v222 then v222 = true v221 = os.clock() GunGUI_upv_1.Scanner.Scan:Play() GunGUI_upv_1.Scanner.Message.Text = "Searching targets... (0/" .. u26.MaximumTargets .. ")" local v225 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tbl_33 = {} tbl_33.Size = UDim2.fromScale(u26.ScanFrameWidth, u26.ScanFrameHeight) TweenService_upv_1:Create(GunGUI_upv_1.Scanner, v225, tbl_33):Play() local tbl_34 = {Transparency = 0} TweenService_upv_1:Create(GunGUI_upv_1.Scanner.UIStroke, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), tbl_34):Play() local tbl_35 = {TextTransparency = 0, TextStrokeTransparency = 0.75} TweenService_upv_1:Create(GunGUI_upv_1.Scanner.Message, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), tbl_35):Play() end local v226 = os.clock() - v221 if u26.ScanRate <= v226 then v221 = os.clock() local v227, v228, v229 = FindNearestEntity() if v227 and v228 and v229 and v223 < u26.MaximumTargets then v223 = v223 + 1 if v223 < u26.MaximumTargets then GunGUI_upv_1.Scanner.LockOn:Play() GunGUI_upv_1.Scanner.Message.Text = "Searching targets... (" .. v223 .. "/" .. u26.MaximumTargets .. ")" else GunGUI_upv_1.Scanner.LockOnFull:Play() GunGUI_upv_1.Scanner.Message.Text = "Ready! (" .. v223 .. "/" .. u26.MaximumTargets .. ")" end local v230 = TargetMarker_upv_1:Clone() v230.Parent = GunGUI_upv_1 v230.Adornee = v229 v230.Enabled = true table.insert(tbl_32, {TargetEntity = v227, TargetTorso = v229, TargetMarker = v230}) end end for key_5, value_24 in pairs(tbl_32) do if not (value_24.TargetEntity) or not (value_24.TargetTorso) then v223 = v223 - 1 GunGUI_upv_1.Scanner.Message.Text = "Searching targets... (" .. v223 .. "/" .. u26.MaximumTargets .. ")" if value_24.TargetMarker then value_24.TargetMarker:Destroy() end table.remove(tbl_32, key_5) end local v231 = CheckPartInScanner(value_24.TargetTorso) if v231 then continue end v223 = v223 - 1 GunGUI_upv_1.Scanner.Message.Text = "Searching targets... (" .. v223 .. "/" .. u26.MaximumTargets .. ")" if value_24.TargetMarker then value_24.TargetMarker:Destroy() end table.remove(tbl_32, key_5) end end else local v232 = os.clock() - v220 if not (tbl_upv_10.Charged) and u26.HoldingTime <= v232 then tbl_upv_10.Charged = true GunGUI_upv_1.ChargeBar.ChargeLevel3:Play() GunGUI_upv_1.ChargeBar.Shine.UIGradient.Offset = Vector2.new(-1, 0) local v233 = TweenInfo.new(0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.Out) local tbl_36 = {} tbl_36.Offset = Vector2.new(1, 0) TweenService_upv_1:Create(GunGUI_upv_1.ChargeBar.Shine.UIGradient, v233, tbl_36):Play() end local v234 = math.min(v232 / u26.HoldingTime, 1) if v234 < 0.5 then GunGUI_upv_1.ChargeBar.Fill.BackgroundColor3 = Color3.new(1, v234 * 2, 0) else GunGUI_upv_1.ChargeBar.Fill.BackgroundColor3 = Color3.new(1 - ((v234 - 0.5) / 0.5), 1, 0) end GunGUI_upv_1.ChargeBar.Fill.Size = UDim2.new(v234, 0, 1, 0) if ChargingSound_1 then if not (ChargingSound_1.Playing) then ChargingSound_1:Play() end if u26.ChargingSoundIncreasePitch then ChargingSound_1.PlaybackSpeed = u26.ChargingSoundPitchRange[1] + (v234 * (u26.ChargingSoundPitchRange[2] - u26.ChargingSoundPitchRange[1])) end end end Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end until not (tbl_upv_10.Charging) if u28.AimChargingAnim and u28.AimChargingAnim.IsPlaying then u28.AimChargingAnim:Stop(0) end if u28.ChargingAnim and u28.ChargingAnim.IsPlaying then u28.ChargingAnim:Stop(0) end if u26.LockOnScan then GunGUI_upv_1.Scanner.Message.Text = "" local v235 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tbl_37 = {} tbl_37.Size = UDim2.fromScale(u26.ScanFrameWidth * 1.25, u26.ScanFrameHeight * 1.25) TweenService_upv_1:Create(GunGUI_upv_1.Scanner, v235, tbl_37):Play() local tbl_38 = {Transparency = 1} TweenService_upv_1:Create(GunGUI_upv_1.Scanner.UIStroke, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), tbl_38):Play() local tbl_39 = {TextTransparency = 1, TextStrokeTransparency = 1} TweenService_upv_1:Create(GunGUI_upv_1.Scanner.Message, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), tbl_39):Play() for _, value_25 in pairs(tbl_32) do if value_25.TargetMarker then value_25.TargetMarker:Destroy() end end else GunGUI_upv_1.ChargeBar.Fill.Size = UDim2.new(0, 0, 1, 0) if ChargingSound_1 then if ChargingSound_1.Playing then ChargingSound_1:Stop() end if u26.ChargingSoundIncreasePitch then ChargingSound_1.PlaybackSpeed = u26.ChargingSoundPitchRange[1] end end end if not (tbl_upv_10.ActuallyEquipped) then tbl_upv_10.Charged = false tbl_upv_10.Enabled = true end if not tbl_upv_10.ActuallyEquipped or tbl_upv_10.Enabled or tbl_upv_10.Charging or not tbl_upv_10.Charged or tbl_upv_10.Reloading or tbl_upv_10.Overheated or tbl_upv_10.HoldDown or tbl_upv_10.Switching or tbl_upv_10.Alting or not (u27.Mag > 0) or not (u27.Heat < u26.MaxHeat) or not (u2.Health > 0) then return end tbl_upv_10.Charged = false local v236 if u26.LockOnScan then v236 = ((v223 > 0) and v223) or 1 else v236 = ((u26.BurstFireEnabled) and (u26.BulletPerBurst)) or 1 end local v237 = nil for n_13 = 1, v236 do local v238, v239 = nil, nil if not (tbl_upv_10.ActuallyEquipped) then break end v222 = {} if not (u26.ShotgunPump) then Thread_upv_1:Spawn( function() --[[ line: 3780 upvalues: Thread_upv_1 (copy, index: 1) tbl_upv_10 (copy, index: 2) u26 (ref, index: 3) EjectShell (copy, index: 4) u29 (ref, index: 5) ]] local v240 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v241 = os.clock() - v240 if u26.BulletShellDelay <= v241 then break end end if not tbl_upv_10.ActuallyEquipped then return end EjectShell(u29) end ) end tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate + u26.SmokeTrailRateIncrement if u26.LockOnScan and #tbl_32 > 0 then if tbl_32[n_13].TargetTorso then v221 = tbl_32[n_13].TargetTorso.Position if not v221 then v221 = Get3DPosition2() if not v221 then v242 = Get3DPosition2() v221 = v242 end end else v221 = Get3DPosition2() if not v221 then local v242 = Get3DPosition2() v221 = v242 end end else local v242 = Get3DPosition2() v221 = v242 end local v242 = ((u26.ShotgunEnabled) and (u26.BulletPerShot)) or 1 for n_14 = 1, v242 do v237 = u26.Spread * 10 local v243 = (((tbl_upv_10.AimDown) and (1 - u26.SpreadRedutionIS)) and (1 - u26.SpreadRedutionS)) or 1 local v244 = v237 * v243 local v245 = CFrame.new(u29:FindFirstChild("GunFirePoint" .. u25).WorldPosition, v221) v238 = u26.ChargeAlterTable.SpreadPattern local SpreadPattern_2 = u26.SpreadPattern if v238 == nil or not (u26.ChargedShotAdvanceEnabled) then v237 = SpreadPattern_2 v239 = u26.ChargeAlterTable.ShotgunPattern local ShotgunPattern_2 = u26.ShotgunPattern if v239 == nil or not (u26.ChargedShotAdvanceEnabled) then v238 = ShotgunPattern_2 if not (v238) then v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) table.insert(v222, v245.LookVector) continue end if #v237 > 0 then v245 = v245 * CFrame.Angles(math.rad(v244 * v237[n_14][2] / 50), math.rad(v244 * v237[n_14][1] / 50), 0) else v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) end table.insert(v222, v245.LookVector) end v238 = ((u27.ChargeLevel == 1) and (v239.Level1)) or (((u27.ChargeLevel == 2) and (v239.Level2)) or (((u27.ChargeLevel == 3) and (v239.Level3)) or ShotgunPattern_2)) if not (v238) then v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) table.insert(v222, v245.LookVector) continue end if #v237 > 0 then v245 = v245 * CFrame.Angles(math.rad(v244 * v237[n_14][2] / 50), math.rad(v244 * v237[n_14][1] / 50), 0) else v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) end table.insert(v222, v245.LookVector) end v237 = ((u27.ChargeLevel == 1) and (v238.Level1)) or (((u27.ChargeLevel == 2) and (v238.Level2)) or (((u27.ChargeLevel == 3) and (v238.Level3)) or SpreadPattern_2)) v239 = u26.ChargeAlterTable.ShotgunPattern local ShotgunPattern_2 = u26.ShotgunPattern if v239 == nil or not (u26.ChargedShotAdvanceEnabled) then v238 = ShotgunPattern_2 if not (v238) then v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) table.insert(v222, v245.LookVector) continue end if #v237 > 0 then v245 = v245 * CFrame.Angles(math.rad((v244 * v237[n_14][2]) / 50), math.rad((v244 * v237[n_14][1]) / 50), 0) else v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) end table.insert(v222, v245.LookVector) end v238 = ((u27.ChargeLevel == 1) and (v239.Level1)) or (((u27.ChargeLevel == 2) and (v239.Level2)) or (((u27.ChargeLevel == 3) and (v239.Level3)) or ShotgunPattern_2)) if not (v238) then v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) table.insert(v222, v245.LookVector) continue end if #v237 > 0 then v245 = v245 * CFrame.Angles(math.rad(v244 * v237[n_14][2] / 50), math.rad(v244 * v237[n_14][1] / 50), 0) else v245 = v245 * CFrame.Angles(math.rad(math.random(-v244, v244) / 50), math.rad(math.random(-v244, v244) / 50), 0) end table.insert(v222, v245.LookVector) end if u26.SelfKnockback then SelfKnockback(v221, u4.Position) end v246 = u29 v237 = (((u26.LockOnScan) and (#tbl_32 > 0)) and (tbl_32[n_13].TargetEntity)) or nil Fire(v246, v222, v237) if u26.BatteryEnabled then u27.ShotsForDepletion = u27.ShotsForDepletion + 1 if u26.ShotsForDepletion <= u27.ShotsForDepletion then u27.ShotsForDepletion = 0 u22.Ammo = math.clamp(u22.Ammo - Random.new():NextInteger(u26.MinDepletion, u26.MaxDepletion), 0, u22.MaxAmmo) end u27.Heat = math.clamp(u27.Heat + Random.new():NextInteger(u26.HeatPerFireMin, u26.HeatPerFireMax), 0, u26.MaxHeat) else v222 = u27.Mag u27.Mag = math.clamp(u27.Mag - u26.AmmoCost, 0, u26.AmmoPerMag) if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for n_15 = 0, (v222 - u27.Mag) - 1 do v221 = GunGUI_upv_1.MagCartridge:FindFirstChild(v222 - n_15) if u7.Ejection then CreateTwoDeeShell(v221.Rotation, v221.AbsolutePosition, v221.AbsoluteSize, (Vector2.new(math.random(u7.XMin, u7.XMax), math.random(u7.YMin, u7.YMax)) * (u7.Velocity or 1)) * (math.random() ^ 0.5), "shell", u7.Shockwave) end v221.Visible = false end end end ChangeMagAndAmmo_upv_1:FireServer(u25, u27.Mag, u22.Ammo) Thread_upv_1:Spawn( function() --[[ line: 3912 upvalues: tbl_upv_10 (copy, index: 1) u27 (ref, index: 2) u26 (ref, index: 3) Thread_upv_1 (copy, index: 4) ]] tbl_upv_10.CanBeCooledDown = false u27.ShotID = u27.ShotID + 1 local ShotID_3 = u27.ShotID local TimeBeforeCooldown_3 = u26.TimeBeforeCooldown local v247 = os.clock() while true do Thread_upv_1:Wait() if ShotID_3 ~= u27.ShotID or TimeBeforeCooldown_3 <= os.clock() - v247 then break end end local v248 = (ShotID_3 ~= u27.ShotID) and true if (v248) then return end tbl_upv_10.CanBeCooledDown = true end ) UpdateGUI() local v249 = nil if u26.LockOnScan then if u26.CycleHandles then CycleHandles() end local v250 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end v246 = os.clock() - v250 if not (u26.LockOnScanBurstRate <= v246) then continue end v249 = n_13 if u26.BatteryEnabled then if not (u26.MaxHeat <= u27.Heat) then -- NumForNext n_13 = v249 + v252 (limit v251) if tbl_upv_10.ActuallyEquipped then v222 = {} if not (u26.ShotgunPump) then Thread_upv_1:Spawn( function() --[[ line: 3780 upvalues: Thread_upv_1 (copy, index: 1) tbl_upv_10 (copy, index: 2) u26 (ref, index: 3) EjectShell (copy, index: 4) u29 (ref, index: 5) ]] local v240 = os.clock() while true do Thread_upv_1:Wait() if not (tbl_upv_10.ActuallyEquipped) then break end local v241 = os.clock() - v240 if u26.BulletShellDelay <= v241 then break end end if not tbl_upv_10.ActuallyEquipped then return end EjectShell(u29) end ) end tbl_upv_10.CurrentRate = tbl_upv_10.CurrentRate + u26.SmokeTrailRateIncrement if u26.LockOnScan and #tbl_32 > 0 then if tbl_32[n_13].TargetTorso then v221 = tbl_32[n_13].TargetTorso.Position if not v221 then v221 = Get3DPosition2() if not v221 then v242 = Get3DPosition2() v221 = v242 end end else v221 = Get3DPosition2() if not v221 then v242 = Get3DPosition2() v221 = v242 end end else v242 = Get3DPosition2() v221 = v242 end v242 = ((u26.ShotgunEnabled) and (u26.BulletPerShot)) or 1 for n_14 = 1, v242 do end if u26.SelfKnockback then SelfKnockback(v221, u4.Position) end v246 = u29 v237 = (((u26.LockOnScan) and (#tbl_32 > 0)) and (tbl_32[n_13].TargetEntity)) or nil Fire(v246, v222, v237) if u26.BatteryEnabled then u27.ShotsForDepletion = u27.ShotsForDepletion + 1 if u26.ShotsForDepletion <= u27.ShotsForDepletion then u27.ShotsForDepletion = 0 u22.Ammo = math.clamp(u22.Ammo - Random.new():NextInteger(u26.MinDepletion, u26.MaxDepletion), 0, u22.MaxAmmo) end u27.Heat = math.clamp(u27.Heat + Random.new():NextInteger(u26.HeatPerFireMin, u26.HeatPerFireMax), 0, u26.MaxHeat) else v222 = u27.Mag u27.Mag = math.clamp(u27.Mag - u26.AmmoCost, 0, u26.AmmoPerMag) if u7.MagCartridge and not (u26.BatteryEnabled) and u26.AmmoPerMag ~= math.huge then for n_15 = 0, (v222 - u27.Mag) - 1 do v221 = GunGUI_upv_1.MagCartridge:FindFirstChild(v222 - n_15) if u7.Ejection then CreateTwoDeeShell(v221.Rotation, v221.AbsolutePosition, v221.AbsoluteSize, (Vector2.new(math.random(u7.XMin, u7.XMax), math.random(u7.YMin, u7.YMax)) * (u7.Velocity or 1)) * (math.random() ^ 0.5), "shell", u7.Shockwave) end v221.Visible = false end end end --[[ goto label_442 ]]-- end end elseif not (u27.Mag <= 0) then -- NumForNext n_13 = v249 + v252 (limit v251) if tbl_upv_10.ActuallyEquipped then v222 = {} if not (u26.ShotgunPump) then