Prompt: --// Renders

Response:
local L_161_

L_103_:connect(function()
	if L_15_ then
		L_156_, L_157_ = L_156_ or 0, L_157_ or 0
		if L_159_ == nil or L_158_ == nil then
			L_159_ = L_45_.C0
			L_158_ = L_45_.C1
		end

		local L_271_ = (math.sin(L_150_ * L_152_ / 2) * L_151_)
		local L_272_ = (math.sin(L_150_ * L_152_) * L_151_)
		local L_273_ = CFrame.new(L_271_, L_272_, 0.02)

		local L_274_ = (math.sin(L_146_ * L_149_ / 2) * L_148_)
		local L_275_ = (math.cos(L_146_ * L_149_) * L_148_)
		local L_276_ = CFrame.new(L_274_, L_275_, 0.02)

		if L_143_ then
			L_150_ = L_150_ + .017
			if L_24_.WalkAnimEnabled == true then
				L_144_ = L_273_
			else
				L_144_ = CFrame.new()
			end
		else
			L_150_ = 0
			L_144_ = CFrame.new()
		end

		L_142_.t = Vector3.new(L_137_, L_138_, 0)
		local L_277_ = L_142_.p
		local L_278_ = L_277_.X / L_139_ * (L_61_ and L_141_ or L_140_)
		local L_279_ = L_277_.Y / L_139_ * (L_61_ and L_141_ or L_140_)

		L_5_.CFrame = L_5_.CFrame:lerp(L_5_.CFrame * L_145_, 0.2)

		if L_61_ then
			L_133_ = CFrame.Angles(math.rad(-L_278_), math.rad(L_278_), math.rad(L_279_)) * CFrame.fromAxisAngle(Vector3.new(5, 0, -1), math.rad(L_278_))
			L_146_ = 0
			L_147_ = CFrame.new()
		elseif not L_61_ then
			L_133_ = CFrame.Angles(math.rad(-L_279_), math.rad(-L_278_), math.rad(-L_278_)) * CFrame.fromAxisAngle(L_44_.Position, math.rad(-L_279_))
			L_146_ = L_146_ + 0.017
			L_147_ = L_276_
		end

		if L_24_.SwayEnabled ==  true then
			L_45_.C0 = L_45_.C0:lerp(L_159_ * L_133_ * L_144_ * L_147_, 0.1)
		else
			L_45_.C0 = L_45_.C0:lerp(L_159_ * L_144_, 0.1)
		end

		if L_64_ and not L_67_ and L_69_ and not L_61_ and not L_63_ and not Shooting then
			L_45_.C1 = L_45_.C1:lerp(L_45_.C0 * L_24_.SprintPos, 0.1)
		elseif not L_64_ and not L_67_ and not L_69_ and not L_61_ and not L_63_ and not Shooting and not L_76_ then
			L_45_.C1 = L_45_.C1:lerp(CFrame.new(), 0.1)
		end

		if L_61_ and not L_64_ then
			if not L_62_ then
				L_87_ = L_24_.AimCamRecoil
				L_86_ = L_24_.AimGunRecoil
				L_88_ = L_24_.AimKickback
			elseif L_62_ then
				if L_90_ == 1 then
					L_87_ = L_24_.AimCamRecoil / 1.5
					L_86_ = L_24_.AimGunRecoil / 1.5
					L_88_ = L_24_.AimKickback / 1.5
				end

				if L_90_ == 2 then
					L_87_ = L_24_.AimCamRecoil / 2
					L_86_ = L_24_.AimGunRecoil / 2
					L_88_ = L_24_.AimKickback / 2
				end
			end

			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_45_.C1 = L_45_.C1:lerp(L_45_.C0 * L_53_.CFrame:toObjectSpace(L_44_.CFrame), L_24_.AimSpeed)

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_51_
			end
		elseif not L_61_ and not L_64_ and L_15_ and not L_76_ then
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_45_.C1 = L_45_.C1:lerp(CFrame.new(), L_24_.UnaimSpeed)

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_52_
			end

			if not L_62_ then
				L_87_ = L_24_.camrecoil
				L_86_ = L_24_.gunrecoil
				L_88_ = L_24_.Kickback
			elseif L_62_ then
				if L_90_ == 1 then
					L_87_ = L_24_.camrecoil / 1.5
					L_86_ = L_24_.gunrecoil / 1.5
					L_88_ = L_24_.Kickback / 1.5
				end

				if L_90_ == 2 then
					L_87_ = L_24_.camrecoil / 2
					L_86_ = L_24_.gunrecoil / 2
					L_88_ = L_24_.Kickback / 2
				end
			end
		end

		if Recoiling then
			L_145_ = CFrame.Angles(L_87_, 0, 0)
			--cam.CoordinateFrame = cam.CoordinateFrame *  CFrame.fromEulerAnglesXYZ(math.rad(camrecoil*math.random(0,3)), math.rad(camrecoil*math.random(-1,1)), math.rad(camrecoil*math.random(-1,1)))
			L_45_.C0 = L_45_.C0:lerp(L_45_.C0 * CFrame.new(0, 0, L_86_) * CFrame.Angles(-math.rad(L_88_), 0, 0), 0.3)
		elseif not Recoiling then
			L_145_ = CFrame.Angles(0, 0, 0)
			L_45_.C0 = L_45_.C0:lerp(CFrame.new(), 0.2)
		end

		if L_62_ then
			L_3_:WaitForChild('Humanoid').Jump = false
		end

		if L_15_ then
			L_5_.FieldOfView = L_5_.FieldOfView * (1 - L_24_.ZoomSpeed) + (L_94_ * L_24_.ZoomSpeed)
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
				L_87_ = L_24_.AimCamRecoil
				L_86_ = L_24_.AimGunRecoil
				L_88_ = L_24_.AimKickback

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_51_
			elseif (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 and not L_61_ and not L_62_ then
				L_87_ = L_24_.camrecoil
				L_86_ = L_24_.gunrecoil
				L_88_ = L_24_.Kickback

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_52_
			end
		end

		if L_15_ and L_24_.CameraGo then --and (char.Head.Position - cam.CoordinateFrame.p).magnitude < 2 then
			L_4_.TargetFilter = game.Workspace
			local L_280_ =  L_3_:WaitForChild("HumanoidRootPart").CFrame * CFrame.new(0, 1.5, 0) * CFrame.new(L_3_:WaitForChild("Humanoid").CameraOffset)
			L_48_.C0 = L_8_.CFrame:toObjectSpace(L_280_)
			L_48_.C1 = CFrame.Angles(-math.asin((L_4_.Hit.p - L_4_.Origin.p).unit.y), 0, 0)
			L_104_.MouseIconEnabled = false
		end

		if L_15_ and (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
			if L_4_.Icon ~= "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon then
				L_4_.Icon = "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon
			end
			L_104_.MouseIconEnabled = true

			if L_3_:FindFirstChild('Right Arm') and L_3_:FindFirstChild('Left Arm') then
				L_3_['Right Arm'].LocalTransparencyModifier = 1
				L_3_['Left Arm'].LocalTransparencyModifier = 1
			end
		end;
	end
end)


Prompt: --[[Initialize]]

Response:
	script.Parent:WaitForChild("A-Chassis Interface")
	script.Parent:WaitForChild("Plugins")
	script.Parent:WaitForChild("README")

	local car=script.Parent.Parent
	local _Tune=require(script.Parent)

	wait(_Tune.LoadDelay)

	--Weight Scaling
	local weightScaling = _Tune.WeightScaling
	if not workspace:PGSIsEnabled() then
		weightScaling = _Tune.LegacyScaling
	end

	local Drive=car.Wheels:GetChildren()

	--Remove Existing Mass
	function DReduce(p)
		for i,v in pairs(p:GetChildren())do
			if v:IsA("BasePart") then
				if v.CustomPhysicalProperties == nil then v.CustomPhysicalProperties = PhysicalProperties.new(v.Material) end
				v.CustomPhysicalProperties = PhysicalProperties.new(
					0,
					v.CustomPhysicalProperties.Friction,
					v.CustomPhysicalProperties.Elasticity,
					v.CustomPhysicalProperties.FrictionWeight,
					v.CustomPhysicalProperties.ElasticityWeight
				)
			end
			DReduce(v)
		end
	end
	DReduce(car)


Prompt: -- set up keyframe name triggers

Response:
if (currentAnimKeyframeHandler ~= nil) then
currentAnimKeyframeHandler:disconnect()
end
currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
end
end


Prompt: --	print(p2)

Response:
	local v2 = u1.Directory.Eggs[p2];

	local l__isGolden__3 = v2.isGolden;
	local v4 = p2 == "Exclusive Egg";
	local v5 = v2.drops;
	if type(v5) == "string" then
		v5 = u1.Directory.Eggs[v5].drops;
	end;
	local u6 = u1.Functions.CloneTable(v5);
	local v6 = u1.Gamepasses.Owns(p1, l__ID__3);
	--local v7 = u1.Gamepasses.Owns(p1, l__ID__4);
	--local v8 = u1.Upgrades.Get(p1, "Halloween Legendary Pets");
	--local v9 = u1.Upgrades.Get(p1, "Halloween Mythical Pets");
	local v10
	if l__isGolden__3 then
		v10 = "Golden Eggs";
	else
		v10 = "Eggs";
	end;
	local u7 = (u1.Boosts.Has(p1, "Super Lucky") and u1.Settings.SuperLuckyMult or 0) + (u1.Boosts.Has(p1, "Ultra Lucky") and u1.Settings.UltraLuckyMult or 0) + (u1.Gamepasses.Owns(p1, l__ID__2) and u1.Settings.LuckyPassMult or 0) + ( u1.Settings.LuckyMult or 0)
	local function u8(p4)
		local v11 = 0;
		for v12, v13 in pairs(u6) do
			local v14, v15 = unpack(v13);
			v11 = v11 + v15;
		end;
		for v16, v17 in pairs(u6) do
			local v18, v19 = unpack(v17);
			if v19 / v11 <= 0.05 then
				local v20 = u6[v16];
				v20[2] = v20[2] * p4;
			end;
		end;
	end;
	local function u9(p5, p6)
		for v21, v22 in pairs(u6) do
			local v23, v24 = unpack(v22);
			if u1.Directory.Pets[v23].rarity == p5 then
				local v25 = u6[v21];
				v25[2] = v25[2] * p6;
			end;
		end;
	end;
	if not v4 then
		(function()
			if u7 > 0 then
				u8(u7);
			end;
			if v6 then
				u9("Mythical", u1.Settings.MythicalHunterMult);
			end;
			--if v8 > 0 then
			--	u9("Legendary", 1 + v8 * 0.2);
			--end;
			--if v9 > 0 then
			--	u9("Mythical", 1 + v9 * 0.2);
			--end;
			--if u1.Mastery.HasPerk(p1, v10, 3) then
			--	u8(2);
			--	return;
		---	end;
			--if u1.Mastery.HasPerk(p1, v10, 1) then
			--	u8(1.33);
			--end;
		end)();
	end;
	local function v26()
		local v27 = u1.Functions.Lottery(unpack(u6));
		local v28 = u1.Directory.Pets[v27];
		if not v28 then
			print("Pet does not exist (" .. v27 .. " from egg " .. p2 .. ")", true);
			return false;
		end;
		local v29 = false;
		local v30 = false;
		local v31 = false;
		local v32 = false;
		local v33 = u1.Settings.MagicEggsChances.Golden;
		local v34 = u1.Settings.MagicEggsChances.Rainbow;
		--if u1.Mastery.HasPerk(p1, v10, 5) then
			--if l__isGolden__3 then
			--	v32 = true;
			--	v34 = v34 * 1.2;
			--else
			--	v31 = true;
			---	v33 = v33 * 1.2;
			--end;
		--end;
		--if v7 then
		--	v32 = true;
	--		v31 = true;
	--	end;
		if v31 or v32 then
			local v35 = u5:NextNumber() * 100;
			if v35 <= v34 and v32 then
				v30 = true;
			elseif v35 <= v33 and v31 then
				v29 = true;
			end;
		end;
		if not v30 and l__isGolden__3 and u5:NextNumber(0, 100) <= u1.Settings.GoldenEggChance then
			v29 = true;
		end;
		if v4 then
			v29 = false;
			v30 = false;
		end;
		local v36 = {};
		if v30 then
			v36.r = true;
			v36.s = v28.strengthMax * u1.Settings.RainbowPetsMult;
		elseif v29 then
			v36.g = true;
			v36.s = v28.strengthMax * u1.Settings.GoldPetsMult;
		end;
		local v37, v38 = u1.Pets.Create(p1, v27, v36);
		if not v37 then
			return false;
		end;
		u1.Signal.Fire("Hatched Pet", p1, p2, v38);
		local l__rarity__10 = v28.rarity;

		coroutine.wrap(function()
			u1.Functions.Wait(3);
			if u1.Shared.PetRarityNumbers[l__rarity__10] >= 3 then
				RareHatchChatMessage(v37, v36);
			end;
			if l__rarity__10 == "Rare" then
				u1.Achievements.Add(p1, "Rare Pets", 1);
				return;
			end;
			if l__rarity__10 == "Epic" then
				u1.Achievements.Add(p1, "Epic Pets", 1);
				return;
			end;
			if l__rarity__10 == "Legendary" then
				u1.Achievements.Add(p1, "Legendary Pets", 1);
				return;
			end;
			if l__rarity__10 == "Mythical" then
				u1.Achievements.Add(p1, "Mythical Pets", 1);
				return;
			end;
			if l__rarity__10 == "Exclusive" then

			end;
		end)();
		return v38;
	end;
	local v39 = {};
	for v40 = 1, p3 do
		local v41 = v26();
		if v41 then
			table.insert(v39, v41);
		end;
	end;
	u1.Network.Fire("Open Egg", p1, p2, v39);
	return true;
end;
local l__ID__11 = u1.Directory.Gamepasses["Triple Egg"].ID;
local u12 = {};
function v1.Buy(p7, p8, p9)
	local v42 = u1.Saving.Get(p7);
	local v43 = u1.Directory.Eggs[p8];
	if not v42 or not v43 then
		return false;
	end;
	local v44
	if p9 then
		v44 = 3;
	else
		v44 = 1;
	end;
	local v45 = v43.cost * v44;
	local l__currency__46 = v43.currency;
	local l__area__47 = v43.area;
	local l__areaRequired__48 = v43.areaRequired;
	local l__areaEggsRequired__49 = v43.areaEggsRequired;
	if not v43.hatchable or v43.disabled then
		return false;
	end;
	local v50
	if v43.isGolden then
		v50 = "Golden Eggs";
	else
		v50 = "Eggs";
	end;
	--if u1.Mastery.HasPerk(p7, v50, 4) then
	--	local v51
	--	if v43.isGolden then
		--	v51 = 0.85;
	--	else
	--		v51 = 0.8;
	--	end;
	--	v45 = v45 * v51;
	--elseif u1.Mastery.HasPerk(p7, v50, 2) then
		--local v52
		--if v43.isGolden then
		--	v52 = 0.95;
		--else
		--	v52 = 0.9;
	---	end;
	--	v45 = v45 * v52;


Prompt: --[[ Constants ]]

Response:
--
local SHIFT_LOCK_OFF = ''
local SHIFT_LOCK_ON = ''
local SHIFT_LOCK_CURSOR = ''


Prompt: -- Gets a part from the cache, or creates one if no more are available.

Response:
function PartCacheStatic:GetPart(): BasePart
	assert(getmetatable(self) == PartCacheStatic, ERR_NOT_INSTANCE:format("GetPart", "PartCache.new"))

	if #self.Open == 0 then
		warn("No parts available in the cache! Creating [" .. self.ExpansionSize .. "] new part instance(s) - this amount can be edited by changing the ExpansionSize property of the PartCache instance... (This cache now contains a grand total of " .. tostring(#self.Open + #self.InUse + self.ExpansionSize) .. " parts.)")
		for i = 1, self.ExpansionSize, 1 do
			table.insert(self.Open, MakeFromTemplate(self.Template, self.CurrentCacheParent))
		end
	end
	local part = self.Open[#self.Open]
	self.Open[#self.Open] = nil
	table.insert(self.InUse, part)
	return part
end


Prompt: --// Renders

Response:
local L_150_

L_95_:connect(function()
	if L_15_ then
		L_145_, L_146_ = L_145_ or 0, L_146_ or 0
		if L_148_ == nil or L_147_ == nil then
			L_148_ = L_44_.C0
			L_147_ = L_44_.C1
		end

		local L_256_ = (math.sin(L_139_ * L_141_ / 2) * L_140_)
		local L_257_ = (math.sin(L_139_ * L_141_) * L_140_)
		local L_258_ = CFrame.new(L_256_, L_257_, 0.02)

		local L_259_ = (math.sin(L_135_ * L_138_ / 2) * L_137_)
		local L_260_ = (math.cos(L_135_ * L_138_) * L_137_)
		local L_261_ = CFrame.new(L_259_, L_260_, 0.02)

		if L_132_ then
			L_139_ = L_139_ + .017
			if L_24_.WalkAnimEnabled == true then
				L_133_ = L_258_
			else
				L_133_ = CFrame.new()
			end
		else
			L_139_ = 0
			L_133_ = CFrame.new()
		end

		L_131_.t = Vector3.new(L_126_, L_127_, 0)
		local L_262_ = L_131_.p
		local L_263_ = L_262_.X / L_128_ * (L_60_ and L_130_ or L_129_)
		local L_264_ = L_262_.Y / L_128_ * (L_60_ and L_130_ or L_129_)

		L_5_.CFrame = L_5_.CFrame:lerp(L_5_.CFrame * L_134_, 0.2)

		if L_60_ then
			L_122_ = CFrame.Angles(math.rad(-L_263_), math.rad(L_263_), math.rad(L_264_)) * CFrame.fromAxisAngle(Vector3.new(5, 0, -1), math.rad(L_263_))
			L_135_ = 0
			L_136_ = CFrame.new()
		elseif not L_60_ then
			L_122_ = CFrame.Angles(math.rad(-L_264_), math.rad(-L_263_), math.rad(-L_263_)) * CFrame.fromAxisAngle(L_43_.Position, math.rad(-L_264_))
			L_135_ = L_135_ + 0.017
			L_136_ = L_261_
		end

		if L_24_.SwayEnabled ==  true then
			L_44_.C0 = L_44_.C0:lerp(L_148_ * L_122_ * L_133_ * L_136_, 0.1)
		else
			L_44_.C0 = L_44_.C0:lerp(L_148_ * L_133_, 0.1)
		end

		if L_63_ and not L_66_ and L_68_ and not L_60_ and not L_62_ and not Shooting then
			L_44_.C1 = L_44_.C1:lerp(L_44_.C0 * L_24_.SprintPos, 0.1)
		elseif not L_63_ and not L_66_ and not L_68_ and not L_60_ and not L_62_ and not Shooting then
			L_44_.C1 = L_44_.C1:lerp(CFrame.new(), 0.1)
		end

		if L_60_ and not L_63_ then
			if not L_61_ then
				L_81_ = L_24_.AimCamRecoil
				L_80_ = L_24_.AimGunRecoil
				L_82_ = L_24_.AimKickback
			end

			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_44_.C1 = L_44_.C1:lerp(L_44_.C0 * CFrame.new(L_119_.position), L_24_.AimSpeed)

				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_50_
				L_96_.MouseDeltaSensitivity = L_50_
			end
		elseif not L_60_ and not L_63_ and L_15_ then
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_44_.C1 = L_44_.C1:lerp(CFrame.new(L_119_.position) * L_120_, L_24_.UnaimSpeed)

				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_50_
				L_96_.MouseDeltaSensitivity = L_51_
			end
		end

		if Recoiling then
			L_134_ = CFrame.Angles(L_81_, 0, 0)
			--cam.CoordinateFrame = cam.CoordinateFrame *  CFrame.fromEulerAnglesXYZ(math.rad(camrecoil*math.random(0,3)), math.rad(camrecoil*math.random(-1,1)), math.rad(camrecoil*math.random(-1,1)))
			L_44_.C0 = L_44_.C0:lerp(L_44_.C0 * CFrame.new(0, 0, L_80_) * CFrame.Angles(-math.rad(L_82_), 0, 0), 0.3)
		elseif not Recoiling then
			L_134_ = CFrame.Angles(0, 0, 0)
			L_44_.C0 = L_44_.C0:lerp(CFrame.new(), 0.2)
		end

		if L_61_ then
			L_3_:WaitForChild('Humanoid').Jump = false
		end

		if L_15_ then
			L_5_.FieldOfView = L_5_.FieldOfView * (1 - L_24_.ZoomSpeed) + (L_88_ * L_24_.ZoomSpeed)
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
				L_81_ = L_24_.AimCamRecoil
				L_80_ = L_24_.AimGunRecoil
				L_82_ = L_24_.AimKickback

				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_50_
				L_96_.MouseDeltaSensitivity = L_50_
			elseif (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 and not L_60_ and not L_61_ then
				L_81_ = L_24_.camrecoil
				L_80_ = L_24_.gunrecoil
				L_82_ = L_24_.Kickback

				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_41_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_50_
				L_96_.MouseDeltaSensitivity = L_51_
			end
		end

		if L_15_ and L_24_.CameraGo then --and (char.Head.Position - cam.CoordinateFrame.p).magnitude < 2 then
			L_4_.TargetFilter = game.Workspace
			local L_265_ =  L_3_:WaitForChild("HumanoidRootPart").CFrame * CFrame.new(0, 1.5, 0) * CFrame.new(L_3_:WaitForChild("Humanoid").CameraOffset)
			L_47_.C0 = L_8_.CFrame:toObjectSpace(L_265_)
			L_47_.C1 = CFrame.Angles(-math.asin((L_4_.Hit.p - L_4_.Origin.p).unit.y), 0, 0)
			L_96_.MouseIconEnabled = false
		end

		if L_15_ and (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
			L_4_.Icon = "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon
			L_96_.MouseIconEnabled = true

			if L_3_:FindFirstChild('Right Arm') and L_3_:FindFirstChild('Left Arm') then
				L_3_['Right Arm'].LocalTransparencyModifier = 1
				L_3_['Left Arm'].LocalTransparencyModifier = 1
			end
		end;
	end
end)


Prompt:
-- Do not run the ErrorReporter in Studio
-- TEMP:2019-10-24:  Disabled because error reporter sends too many errors and may cause slowdown

Response:
if true or RunService:IsStudio() then
	return
end


Prompt: -- deviation END

Response:
local ReactLazy = require(script.ReactLazy)
export type LazyComponent<T, P> = ReactLazy.LazyComponent<T, P>

local SharedModule = require(Packages.Shared)
export type StatelessFunctionalComponent<P> = SharedModule.React_StatelessFunctionalComponent<P>


Prompt: --// Animations

Response:
local L_154_

function IdleAnim(L_303_arg1)
	L_24_.IdleAnim(L_3_, L_154_, {
		L_44_,
		L_45_,
		L_46_
	});
end;

function EquipAnim(L_304_arg1)
	L_24_.EquipAnim(L_3_, L_154_, {
		L_44_
	});
end;

function UnequipAnim(L_305_arg1)
	L_24_.UnequipAnim(L_3_, L_154_, {
		L_44_
	});
end;

function FireModeAnim(L_306_arg1)
	L_24_.FireModeAnim(L_3_, L_154_, {
		L_44_,
		L_46_,
		L_45_,
		L_54_
	});
end

function ReloadAnim(L_307_arg1)
	L_24_.ReloadAnim(L_3_, L_154_, {
		L_44_,
		L_45_,
		L_46_,
		L_57_,
		L_3_:WaitForChild('Left Arm'),
		L_54_,
		L_48_,
		L_3_:WaitForChild('Right Arm'),
		L_42_
	});
end;

function BoltingBackAnim(L_308_arg1)
	L_24_.BoltingBackAnim(L_3_, L_154_, {
		L_48_
	});
end

function BoltingForwardAnim(L_309_arg1)
	L_24_.BoltingForwardAnim(L_3_, L_154_, {
		L_48_
	});
end

function BoltingForwardAnim(L_310_arg1)
	L_24_.BoltingForwardAnim(L_3_, L_154_, {
		L_48_
	});
end

function BoltBackAnim(L_311_arg1)
	L_24_.BoltBackAnim(L_3_, L_154_, {
		L_48_,
		L_46_,
		L_45_,
		L_44_,
		L_58_
	});
end

function BoltForwardAnim(L_312_arg1)
	L_24_.BoltForwardAnim(L_3_, L_154_, {
		L_48_,
		L_46_,
		L_45_,
		L_44_,
		L_58_
	});
end

function InspectAnim(L_313_arg1)
	L_24_.InspectAnim(L_3_, L_154_, {
		L_46_,
		L_45_
	});
end

function nadeReload(L_314_arg1)
	L_24_.nadeReload(L_3_, L_154_, {
		L_45_,
		L_46_
	});
end


Prompt: --Text alignment default properties

Response:
defaults.ContainerHorizontalAlignment = "Left" -- Align,ent of text within frame container
defaults.ContainerVerticalAlignment = "Center"
defaults.TextYAlignment = "Bottom" -- Alignment of the text on the line, only makes a difference if the line has variable text sizes


Prompt: --Do not edit anything below, or it will break.

Response:
while true do
wait()
if script.Parent.Button.Value.Value == true then
on()
elseif script.Parent.Button.Value.Value == false then
off()
end
end


Prompt: --Leave this

Response:
Heat = 0

if GUI then
	script.Parent.Visible = true
else
	script.Parent.Visible = false
end


Prompt: -- services

Response: local ReplicatedStorage	= game:GetService("ReplicatedStorage")


Response:
	,EnableHolster = false
	,HolsterTo = 'Torso'				 -- Put the name of the body part you wanna holster to
	,HolsterPos = CFrame.new(0,0,0) * CFrame.Angles(math.rad(0),math.rad(0),math.rad(0))

	,RightArmPos = CFrame.new(-0.85, -0.2, -1.2) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))	--Server
	,LeftArmPos = CFrame.new(1.05,1,-1.4) * CFrame.Angles(math.rad(-100),math.rad(25),math.rad(-20))	--server

	,ServerGunPos = CFrame.new(-.3, -1, -0.4) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))
	,GunPos = CFrame.new(0.15, -0.15, 1) * CFrame.Angles(math.rad(90), math.rad(0), math.rad(0))

	,RightPos = CFrame.new(-.65, -0.2, -1) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))	--Client
	,LeftPos = CFrame.new(1.2,0.15,-1.6) * CFrame.Angles(math.rad(-120),math.rad(35),math.rad(-20))	--Client
}

return Config


Prompt: --Rescripted by Luckymaxer

Response:
Tool = script.Parent
Handle = Tool:WaitForChild("Handle")

Players = game:GetService("Players")

Sounds = {
	CoilSound = Handle:WaitForChild("CoilSound"),
}

Gravity = 196.20
JumpHeightPercentage = 0.25

ToolEquipped = false

function GetAllConnectedParts(Object)
	local Parts = {}
	local function GetConnectedParts(Object)
		for i, v in pairs(Object:GetConnectedParts()) do
			local Ignore = false
			for ii, vv in pairs(Parts) do
				if v == vv then
					Ignore = true
				end
			end
			if not Ignore then
				table.insert(Parts, v)
				GetConnectedParts(v)
			end
		end
	end
	GetConnectedParts(Object)
	return Parts
end

function SetGravityEffect()
	if not GravityEffect or not GravityEffect.Parent then
		GravityEffect = Instance.new("BodyForce")
		GravityEffect.Name = "GravityCoilEffect"
		GravityEffect.Parent = Torso
	end
	local TotalMass = 0
	local ConnectedParts = GetAllConnectedParts(Torso)
	for i, v in pairs(ConnectedParts) do
		if v:IsA("BasePart") then
			TotalMass = (TotalMass + v:GetMass())
		end
	end
	local TotalMass = (TotalMass * 196.20 * (1 - JumpHeightPercentage))
	GravityEffect.force = Vector3.new(0, TotalMass, 0)
end

function HandleGravityEffect(Enabled)
	if not CheckIfAlive() then
		return
	end
	for i, v in pairs(Torso:GetChildren()) do
		if v:IsA("BodyForce") then
			v:Destroy()
		end
	end
	for i, v in pairs({ToolUnequipped, DescendantAdded, DescendantRemoving}) do
		if v then
			v:disconnect()
		end
	end
	if Enabled then
		CurrentlyEquipped = true
		ToolUnequipped = Tool.Unequipped:connect(function()
			CurrentlyEquipped = false
		end)
		SetGravityEffect()
		DescendantAdded = Character.DescendantAdded:connect(function()
			wait()
			if not CurrentlyEquipped or not CheckIfAlive() then
				return
			end
			SetGravityEffect()
		end)
		DescendantRemoving = Character.DescendantRemoving:connect(function()
			wait()
			if not CurrentlyEquipped or not CheckIfAlive() then
				return
			end
			SetGravityEffect()
		end)
	end
end

function CheckIfAlive()
	return (((Character and Character.Parent and Humanoid and Humanoid.Parent and Humanoid.Health > 0 and Torso and Torso.Parent and Player and Player.Parent) and true) or false)
end

function Equipped(Mouse)
	Character = Tool.Parent
	Humanoid = Character:FindFirstChild("Humanoid")
	Torso = Character:FindFirstChild("Torso")
	Player = Players:GetPlayerFromCharacter(Character)
	if not CheckIfAlive() then
		return
	end
	if HumanoidDied then
		HumanoidDied:disconnect()
	end
	HumanoidDied = Humanoid.Died:connect(function()
		if GravityEffect and GravityEffect.Parent then
			GravityEffect:Destroy()
		end
	end)
	Sounds.CoilSound:Play()
	HandleGravityEffect(true)
	ToolEquipped = true
end

function Unequipped()
	if HumanoidDied then
		HumanoidDied:disconnect()
	end
	HandleGravityEffect(false)
	ToolEquipped = false
end

Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)


Prompt: ----- Initialize -----

Response:
if IsStudio == true then
	IsLiveCheckActive = true
	task.spawn(function()
		local status, message = pcall(function()
			-- This will error if current instance has no Studio API access:
			DataStoreService:GetDataStore("____PS"):SetAsync("____PS", os.time())
		end)
		local no_internet_access = status == false and string.find(message, "ConnectFail", 1, true) ~= nil
		if no_internet_access == true then
			warn("[ProfileService]: No internet access - check your network connection")
		end
		if status == false and
			(string.find(message, "403", 1, true) ~= nil or -- Cannot write to DataStore from studio if API access is not enabled
				string.find(message, "must publish", 1, true) ~= nil or -- Game must be published to access live keys
				no_internet_access == true) then -- No internet access

			UseMockDataStore = true
			ProfileService._use_mock_data_store = true
			print("[ProfileService]: Roblox API services unavailable - data will not be saved")
		else
			--print("[ProfileService]: Roblox API services available - data will be saved")
		end
		IsLiveCheckActive = false
	end)
end


Prompt: --// Renders

Response:
local L_164_

L_106_:connect(function()
	if L_15_ then
		L_159_, L_160_ = L_159_ or 0, L_160_ or 0
		if L_162_ == nil or L_161_ == nil then
			L_162_ = L_45_.C0
			L_161_ = L_45_.C1
		end

		local L_274_ = (math.sin(L_153_ * L_155_ / 2) * L_154_)
		local L_275_ = (math.sin(L_153_ * L_155_) * L_154_)
		local L_276_ = CFrame.new(L_274_, L_275_, 0.02)

		local L_277_ = (math.sin(L_153_ * L_155_ / 2) * L_154_)
		local L_278_ = (math.sin(L_153_ * L_155_) * L_154_)
		local L_279_ = CFrame.new(L_274_, L_275_, 0.02) * CFrame.Angles((math.cos(L_153_ * L_155_) * L_154_), (math.cos(L_153_ * L_155_ / 2) * L_154_), 0)

		local L_280_ = (math.sin(L_149_ * L_152_ / 2) * L_151_)
		local L_281_ = (math.cos(L_149_ * L_152_) * L_151_)
		local L_282_ = CFrame.new(L_280_, L_281_, 0.02)

		if L_146_ then
			L_153_ = L_153_ + .017
			if L_24_.WalkAnimEnabled == true then
				if L_24_.TacticalModeEnabled then
					L_147_ = L_279_
				else
					L_147_ = L_276_
				end
			else
				L_147_ = CFrame.new()
			end
		else
			L_153_ = 0
			L_147_ = CFrame.new()
		end

		L_145_.t = Vector3.new(L_140_, L_141_, 0)
		local L_283_ = L_145_.p
		local L_284_ = L_283_.X / L_142_ * (L_64_ and L_144_ or L_143_)
		local L_285_ = L_283_.Y / L_142_ * (L_64_ and L_144_ or L_143_)

		L_5_.CFrame = L_5_.CFrame:lerp(L_5_.CFrame * L_148_, 0.2)

		if L_64_ then
			L_136_ = CFrame.Angles(math.rad(-L_284_), math.rad(L_284_), math.rad(L_285_)) * CFrame.fromAxisAngle(Vector3.new(5, 0, -1), math.rad(L_284_))
			L_149_ = 0
			L_150_ = CFrame.new()
		elseif not L_64_ then
			L_136_ = CFrame.Angles(math.rad(-L_285_), math.rad(-L_284_), math.rad(-L_284_)) * CFrame.fromAxisAngle(L_44_.Position, math.rad(-L_285_))
			L_149_ = L_149_ + 0.017
			L_150_ = L_282_
		end

		if L_24_.SwayEnabled ==  true then
			L_45_.C0 = L_45_.C0:lerp(L_162_ * L_136_ * L_147_ * L_150_, 0.1)
		else
			L_45_.C0 = L_45_.C0:lerp(L_162_ * L_147_, 0.1)
		end

		if L_67_ and not L_70_ and L_72_ and not L_64_ and not L_66_ and not Shooting then
			L_45_.C1 = L_45_.C1:lerp(L_45_.C0 * L_24_.SprintPos, 0.1)
		elseif not L_67_ and not L_70_ and not L_72_ and not L_64_ and not L_66_ and not Shooting and not L_79_ then
			L_45_.C1 = L_45_.C1:lerp(CFrame.new() * L_134_, 0.05)
		end

		if L_64_ and not L_67_ then
			if not L_65_ then
				L_90_ = L_24_.AimCamRecoil
				L_89_ = L_24_.AimGunRecoil
				L_91_ = L_24_.AimKickback
			elseif L_65_ then
				if L_93_ == 1 then
					L_90_ = L_24_.AimCamRecoil / 1.5
					L_89_ = L_24_.AimGunRecoil / 1.5
					L_91_ = L_24_.AimKickback / 1.5
				end

				if L_93_ == 2 then
					L_90_ = L_24_.AimCamRecoil / 2
					L_89_ = L_24_.AimGunRecoil / 2
					L_91_ = L_24_.AimKickback / 2
				end
			end

			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_45_.C1 = L_45_.C1:lerp(L_45_.C0 * L_56_.CFrame:toObjectSpace(L_44_.CFrame), L_24_.AimSpeed)

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_107_.MouseDeltaSensitivity = L_51_
			end
		elseif not L_64_ and not L_67_ and L_15_ and not L_79_ then
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_45_.C1 = L_45_.C1:lerp(CFrame.new() * L_134_, L_24_.UnaimSpeed)

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_107_.MouseDeltaSensitivity = L_52_
			end

			if not L_65_ then
				L_90_ = L_24_.camrecoil
				L_89_ = L_24_.gunrecoil
				L_91_ = L_24_.Kickback
			elseif L_65_ then
				if L_93_ == 1 then
					L_90_ = L_24_.camrecoil / 1.5
					L_89_ = L_24_.gunrecoil / 1.5
					L_91_ = L_24_.Kickback / 1.5
				end

				if L_93_ == 2 then
					L_90_ = L_24_.camrecoil / 2
					L_89_ = L_24_.gunrecoil / 2
					L_91_ = L_24_.Kickback / 2
				end
			end
		end

		if Recoiling then
			if not L_64_ then
				L_148_ = CFrame.fromEulerAnglesXYZ(math.rad(L_90_ * math.random(0, L_24_.CamShake)), math.rad(L_90_ * math.random(-L_24_.CamShake, L_24_.CamShake)), math.rad(L_90_ * math.random(-L_24_.CamShake, L_24_.CamShake)))--CFrame.Angles(camrecoil,0,0)
			else
				L_148_ = CFrame.fromEulerAnglesXYZ(math.rad(L_90_ * math.random(0, L_24_.AimCamShake)), math.rad(L_90_ * math.random(-L_24_.AimCamShake, L_24_.AimCamShake)), math.rad(L_90_ * math.random(-L_24_.AimCamShake, L_24_.AimCamShake)))
			end
			--cam.CoordinateFrame = cam.CoordinateFrame *  CFrame.fromEulerAnglesXYZ(math.rad(camrecoil*math.random(0,3)), math.rad(camrecoil*math.random(-1,1)), math.rad(camrecoil*math.random(-1,1)))
			L_45_.C0 = L_45_.C0:lerp(L_45_.C0 * CFrame.new(0, 0, L_89_) * CFrame.Angles(-math.rad(L_91_), 0, 0), 0.3)
		elseif not Recoiling then
			L_148_ = CFrame.Angles(0, 0, 0)
			L_45_.C0 = L_45_.C0:lerp(CFrame.new(), 0.2)
		end

		if L_65_ then
			L_3_:WaitForChild('Humanoid').Jump = false
		end

		if L_15_ then
			L_5_.FieldOfView = L_5_.FieldOfView * (1 - L_24_.ZoomSpeed) + (L_97_ * L_24_.ZoomSpeed)
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
				L_90_ = L_24_.AimCamRecoil
				L_89_ = L_24_.AimGunRecoil
				L_91_ = L_24_.AimKickback

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_107_.MouseDeltaSensitivity = L_51_
			elseif (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 and not L_64_ and not L_65_ then
				L_90_ = L_24_.camrecoil
				L_89_ = L_24_.gunrecoil
				L_91_ = L_24_.Kickback

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_107_.MouseDeltaSensitivity = L_52_
			end
		end

		if L_15_ and L_24_.CameraGo then --and (char.Head.Position - cam.CoordinateFrame.p).magnitude < 2 then
			L_4_.TargetFilter = game.Workspace
			local L_286_ =  L_3_:WaitForChild("HumanoidRootPart").CFrame * CFrame.new(0, 1.5, 0) * CFrame.new(L_3_:WaitForChild("Humanoid").CameraOffset)
			L_48_.C0 = L_8_.CFrame:toObjectSpace(L_286_)
			L_48_.C1 = CFrame.Angles(-math.asin((L_4_.Hit.p - L_4_.Origin.p).unit.y), 0, 0)
			L_107_.MouseIconEnabled = false
		end

		if L_15_ and (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
			if L_4_.Icon ~= "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon then
				L_4_.Icon = "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon
			end
			L_107_.MouseIconEnabled = true

			if L_3_:FindFirstChild('Right Arm') and L_3_:FindFirstChild('Left Arm') then
				L_3_['Right Arm'].LocalTransparencyModifier = 1
				L_3_['Left Arm'].LocalTransparencyModifier = 1
			end
		end;
	end
end)


Response:
equiped=false
sp=script.Parent
RayLength=1000
Spread=0
enabled=true
reloading=false
down=false
r=game:service("RunService")
last=0
last2=0
last3=0
last4=0
last5=0
last6=0

Bullet=Instance.new("Part")
Bullet.Name="Bullet"
Bullet.BrickColor=BrickColor.new("New Yeller")
Bullet.Anchored=true
Bullet.CanCollide=false
Bullet.Locked=true
Bullet.Size=Vector3.new(1,1,1)


Prompt: -- print("hit: ", hit," hit.Parent: " ,hit.Parent.Name)

Response:
	local target= hit.Parent.Name
	-- print("Bullet hit - ",target)

	local human	= Instance.new("Humanoid")
	human.Parent = bullet

	if target == bullet.Owner.Value then -- свой игрок


Prompt: --------------------[ RELOAD FUNCTIONS ]----------------------------------------------

Response:
function ReloadAnim()
	TweenJoint(LWeld2, CF(), CF(), Sine, 0.15)
	TweenJoint(RWeld2, CF(), CF(), Sine, 0.15)
	local Speed = S.ReloadTime / 2
	local Mag_Parts = {}

	for _, Obj in pairs(Gun:GetChildren()) do
		if Obj.Name == "Mag" and Obj:IsA("BasePart") then
			INSERT(Mag_Parts, {Original = Obj, Clone1 = Obj:Clone(), Clone2 = Obj:Clone()})
		end
	end

	local W1 = nil
	local W2 = nil

	local SequenceTable = {

		function()

			for Index, Mag in pairs(Mag_Parts) do
				Mag.Original.Transparency = 1
				Mag.Clone1.Parent = Gun_Ignore
				Mag.Clone1.CanCollide = true

				if Index ~= 1 then
					local W = Instance.new("Weld")
					W.Part0 = Mag_Parts[1].Clone1
					W.Part1 = Mag.Clone1
					W.C0 = Mag_Parts[1].Clone1.CFrame:toObjectSpace(Mag.Clone1.CFrame)
					W.Parent = Mag_Parts[1].Clone1
				end
			end

			W1 = Instance.new("Weld")
			W1.Part0 = Mag_Parts[1].Clone1
			W1.Part1 = Handle
			W1.C0 = Mag_Parts[1].Original.CFrame:toObjectSpace(Handle.CFrame)
			W1.Parent = Mag_Parts[1].Clone1

			TweenJoint(LWeld, ArmC0[1], CF(0, 0.61, 0) * CFANG(RAD(70), 0, 0), Linear, 0.5 * Speed)
			TweenJoint(RWeld, ArmC0[2], CF(0.4, 0.09, -0.21) * CFANG(RAD(-20), RAD(3), 0), Linear, 0.5 * Speed)
			TweenJoint(Grip, Grip.C0, CFANG(0, RAD(10), 0), Linear, 0.5 * Speed)
			wait(0.5 * Speed)

		end;

		function()

			TweenJoint(RWeld, ArmC0[2], CF(0.4, -0.01, -0.31) * CFANG(RAD(-22), RAD(3), 0), Sine, 0.3 * Speed)
			wait(0.2 * Speed)

		end;

		function()

			W1:Destroy()
			Mag_Parts[1].Clone1.Velocity = Handle.Velocity + Handle.CFrame:vectorToWorldSpace(VEC3(0,-1,0)) * 20
			spawn(function()
				while Mag_Parts[1].Clone1.Velocity.magnitude > 0.1 do wait() end
				for _, Mag in pairs(Mag_Parts) do
					Mag.Clone1.Anchored = true
					Mag.Clone1:BreakJoints()
				end
			end)

			for Index, Mag in pairs(Mag_Parts) do
				Mag.Clone2.Parent = Gun_Ignore

				if Index ~= 1 then
					local W = Instance.new("Weld")
					W.Part0 = Mag_Parts[1].Clone2
					W.Part1 = Mag.Clone2
					W.C0 = Mag_Parts[1].Clone2.CFrame:toObjectSpace(Mag.Clone2.CFrame)
					W.Parent = Mag_Parts[1].Clone2
				end
			end

			W2 = Instance.new("Weld")
			W2.Part0 = FakeLArm
			W2.Part1 = Mag_Parts[1].Clone2
			W2.C0 = CF(0, -1, 0) * CFANG(RAD(-90), 0, 0)
			W2.Parent = FakeLArm
			wait(0.1)

		end;

		function()

			local FakeLArmCF = LWeld.Part0.CFrame * ArmC0[1] * (CF(0.3, 1.85, -0.31) * CFANG(RAD(-20), RAD(30), RAD(-60))):inverse()
			local FakeRArmCF = RWeld.Part0.CFrame * ArmC0[2] * (CF(0.4, -0.1, -0.21) * CFANG(RAD(-20), RAD(5), RAD(10))):inverse()
			local HandleCF = FakeRArm.CFrame:toObjectSpace(Grip.Part0.CFrame * Grip.C0)
			local Mag_Original_CF = Handle.CFrame:toObjectSpace(Mag_Parts[1].Original.CFrame)
			local MagC0 = FakeLArmCF:toObjectSpace(FakeRArmCF * HandleCF * Mag_Original_CF)

			TweenJoint(LWeld, ArmC0[1], CF(0.3, 1.85, -0.31) * CFANG(RAD(-20), RAD(30), RAD(-60)), Sine, 0.6 * Speed)
			TweenJoint(RWeld, ArmC0[2], CF(0.4, -0.1, -0.21) * CFANG(RAD(-20), RAD(5), RAD(10)), Sine, 0.6 * Speed)
			TweenJoint(Grip, Grip.C0, CF(), Sine, 0.6 * Speed)
			TweenJoint(W2, MagC0, CF(), Sine, 0.6 * Speed)
			wait(0.7 * Speed)

		end;

		function()

			for _, Mag in pairs(Mag_Parts) do
				Mag.Original.Transparency = 0
				Mag.Clone2:Destroy()
			end

			TweenJoint(LWeld, ArmC0[1], S.ArmC1_UnAimed.Left, Sine, 0.5 * Speed)
			TweenJoint(RWeld, ArmC0[2], S.ArmC1_UnAimed.Right, Sine, 0.5 * Speed)
			TweenJoint(Grip, Grip.C0, CFANG(0, RAD(20), 0), Sine, 0.5 * Speed)
			wait(0.5 * Speed)

		end;

	}

	for _,ReloadFunction in pairs(SequenceTable) do
		if BreakReload then
			break
		end
		ReloadFunction()
	end

	if W1 then W1:Destroy() end
	if W2 then W2:Destroy() end
	for _, Mag in pairs(Mag_Parts) do
		Mag.Clone1:Destroy()
		Mag.Clone2:Destroy()
	end
end

function Reload()
	Running = false
	if Ammo.Value < ClipSize.Value and (not Reloading) and StoredAmmo.Value > 0 then
		AmmoInClip = (AmmoInClip == 0 and Ammo.Value or AmmoInClip)
		Ammo.Value = 0
		Reloading = true
		if Aimed then UnAimGun(S.ReloadAnimation) end
		Gui_Clone.CrossHair.Reload.Visible = true
		if Handle:FindFirstChild("ReloadSound") then Handle.ReloadSound:Play() end
		if S.ReloadAnimation then
			wait()
			ReloadAnim()
		else
			local StartReload = tick()
			while true do
				if BreakReload then break end
				if (tick() - StartReload) >= S.ReloadTime then break end
				RS:wait()
			end
		end
		if (not BreakReload) then
			if StoredAmmo.Value >= ClipSize.Value then
				Ammo.Value = ClipSize.Value
				if AmmoInClip > 0 then
					StoredAmmo.Value = StoredAmmo.Value - (ClipSize.Value - AmmoInClip)
				else
					StoredAmmo.Value = StoredAmmo.Value - ClipSize.Value
				end
			elseif StoredAmmo.Value < ClipSize.Value and StoredAmmo.Value > 0 then
				Ammo.Value = StoredAmmo.Value
				StoredAmmo.Value = 0
			end
		end
		BreakReload = false
		Reloading = false
		if Selected then
			AmmoInClip = 0
			Gui_Clone.CrossHair.Reload.Visible = false
		end
	end
end


Prompt: -- Listen for errors fired from the server

Response: ScriptContext.Error:Connect(onError)


Prompt:
--///////////////////////// Constructors
--//////////////////////////////////////

Response:
function module.new(vChatService, name, welcomeMessage, channelNameColor)
	local obj = setmetatable({}, methods)

	obj.ChatService = vChatService

	obj.Name = name
	obj.WelcomeMessage = welcomeMessage or ""
	obj.GetWelcomeMessageFunction = nil
	obj.ChannelNameColor = channelNameColor

	obj.Joinable = true
	obj.Leavable = true
	obj.AutoJoin = false
	obj.Private = false

	obj.Speakers = {}
	obj.Mutes = {}

	obj.MaxHistory = 200
	obj.HistoryIndex = 0
	obj.ChatHistory = {}

	obj.FilterMessageFunctions = Util:NewSortedFunctionContainer()
	obj.ProcessCommandsFunctions = Util:NewSortedFunctionContainer()

	-- Make sure to destroy added binadable events in the InternalDestroy method.
	obj.eDestroyed = Instance.new("BindableEvent")
	obj.eMessagePosted = Instance.new("BindableEvent")
	obj.eSpeakerJoined = Instance.new("BindableEvent")
	obj.eSpeakerLeft = Instance.new("BindableEvent")
	obj.eSpeakerMuted = Instance.new("BindableEvent")
	obj.eSpeakerUnmuted = Instance.new("BindableEvent")

	obj.MessagePosted = obj.eMessagePosted.Event
	obj.SpeakerJoined = obj.eSpeakerJoined.Event
	obj.SpeakerLeft = obj.eSpeakerLeft.Event
	obj.SpeakerMuted = obj.eSpeakerMuted.Event
	obj.SpeakerUnmuted = obj.eSpeakerUnmuted.Event
	obj.Destroyed = obj.eDestroyed.Event

	return obj
end

return module


Prompt: -- no touchy

Response:
local path = pfs:CreatePath()
local waypoint
local currentWaypointIndex
local target

function findNearestTorso(pos)
	local list = game.Workspace:children()
	local torso = nil
	local dist = Settings.WalkDistance.Value
	local temp = nil
	local human = nil
	local temp2 = nil
	for x = 1, #list do
		temp2 = list[x]
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
			temp = temp2:findFirstChild("HumanoidRootPart")
			human = temp2:findFirstChild("Humanoid")
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0) and players:GetPlayerFromCharacter(human.Parent)~= nil then
				if (temp.Position - pos).magnitude < dist then
					torso = temp
					dist = (temp.Position - pos).magnitude
				end
			end
		end
	end
	return torso
end


Prompt: -- << SETTINGS >>

Response:
Settings={
	-- <Prefix>
	Prefix			=";" ;			-- The character used to begin each command

	-- <Owner chat colour>
	OwnerChatColour = "y" ;			--w/r/g/b/p/y    OR    white/red/green/blue/purple/yellow

	-- <Donor Perks>   **Please keep enabled to help support the development of HD Admin Commands**
	DonorItem 		= true ;
	DonorItemId 	= 10472779 ;
	DonorCommands 	= true ;

	-- <Other>
	CmdBar			= true ;		-- Enabled/disales the cmdbar - press @ to open the cmdbar
	HDIcon			= true ;		-- The HD Icon in the corner of screen (helps support the development HD Admin Commands)
	AutoPrompt		= true ;		-- This prompts all players to take a free copy of the model. Set to 'false' to disable.
	FreeAdmin		= false ;		-- Allows everyone in server to have the chosen admin. e.g.' FreeAdmin = "VIP" '. Set to False if not. You can not set to 'Owner'.
	NoticeSound		= 261082034 ;	-- Notification sound ID
	NoticeSoundVol	= 0.5 ;			-- How loud the notification sound is. Must be between 0 and 1.
	ErrorSound		= 138090596 ;	-- Error sound ID
	ErrorSoundVol	= 0.5 ;			-- How loud the error sound is. Must be between 0 and 1.
}																																																											;


Prompt:
-- # CODE BELOW # --
-- ^    Do not change anything else

Response:
local GoreFolder = game.ReplicatedStorage["Gore by Leveled Development"];
local Core = require(GoreFolder.Modules.Core);

local Character = script.Parent.Parent;

function Load()
	local Humanoid = Character:FindFirstChild("Humanoid");
	repeat wait() until Humanoid;

	local NewDescription = Humanoid:GetAppliedDescription();
	NewDescription.Head = 0;
	NewDescription.LeftArm = 0;
	NewDescription.RightArm = 0;
	NewDescription.LeftLeg = 0;
	NewDescription.RightLeg = 0;
	NewDescription.Torso = 0;
	Humanoid:ApplyDescription(NewDescription);
end;

Load();
Character.Humanoid.Died:Connect(function()
	delay(game:GetService("Players").RespawnTime, function()
		Load();
	end);
end);


Prompt: --Loop For Making Rays For The Bullet's Trajectory

Response:
local fallOfShot = 4.75

for i = 1, 120 do
	local thisOffset = offset + Vector3.new(0, yOffset*(i-fallOfShot), 0)
	local travelRay = Ray.new(point1,thisOffset)
	local hit, position = workspace:FindPartOnRay(travelRay, parts.Parent)

	local distance 		= (position - point1).magnitude
	round.Size				= Vector3.new(1.1, distance, 1.1)
	round.CFrame			= CFrame.new(position, point1)
								* CFrame.new(0, 0, -distance/2)
								* CFrame.Angles(math.rad(90),0,0)
	round.Parent			= workspace
	point1					= point1 + thisOffset

	if hit then
		round:remove()
		local e = Instance.new("Explosion")
		e.BlastRadius = 5
		e.BlastPressure = 10
		e.Position = position
		e.Parent = workspace
		e.DestroyJointRadiusPercent = 0

			if hit and hit.Parent then
		if hit.Parent:FindFirstChild("Humanoid") then
			return hit.Parent.Humanoid
		elseif hit.Parent.Parent:FindFirstChild("Humanoid") then
			return hit.Parent.Parent.Humanoid

		elseif (hit.Parent.Name ==  "Hull") or (hit.Parent.Name ==  "Turret") or (hit.Parent.Name ==  "Gun") or (hit.Parent.Name ==  "Parts") then
			print("You Have Damaged a Vehicle")
			local HitSound = hit.Parent:findFirstChild("Pen"):Clone()
			HitSound.Parent = hit
			HitSound:Play()
			hit.Parent.Parent:findFirstChild("Damage").Value = hit.Parent.Parent:findFirstChild("Damage").Value - damage
			if hit.Parent.Parent:findFirstChild("Damage").Value<1 and hit.Parent.Parent:findFirstChild("Destroyed").Value == false then

			local DestroyScript = hit.Parent.Parent:findFirstChild("DestroyScript"):clone()
			DestroyScript.Parent = hit.Parent.Parent
			DestroyScript.Disabled = false

			print("Vehicle Disabled")

			end

		elseif hit.Name == "Left Arm" or hit.Name == "Left Leg" or hit.Name == "Right Arm" or hit.Name == "Right Leg" or hit.Name == "Torso" or hit.Name == "HumanoidRootPart" then
			hit.Parent:findFirstChild("Humanoid").Health = hit.Parent:findFirstChild("Humanoid").Health - damage
			print("Direct Hit a Player lmao")

		elseif hit.Parent.Name == "Face" then
			hit.Parent.Parent:findFirstChild("Humanoid").Health = hit.Parent.Parent:findFirstChild("Humanoid").Health - dealingdamage
			print("Direct Hit a Morph of a Player lmao")

		end
		end

		local players = game.Players:getChildren()
		for i = 1, #players do

			-- if players[i].TeamColor ~= script.Parent.Parent.Tank.Value then --if he's not an ally
				character = players[i].Character
				torso = character:findFirstChild'Torso'
				if character and torso then

						torsoPos = torso.Position
						origPos = round.Position

						local ray = Ray.new(origPos, torsoPos-origPos)
						local hit, position = game.Workspace:FindPartOnRayWithIgnoreList(ray,ignoreList)
						if hit then
							if hit.Parent == character then
								human = hit.Parent:findFirstChild("Humanoid")
								human2 = hit.Parent.Parent:findFirstChild("Humanoid")
								if human then
									distance = (position-origPos).magnitude


Prompt:
-- Keeps track of which players are currently playing the game and associating
-- words with each player so they can guess what was assigned to them.

Response:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")

local Cryo = require(ReplicatedStorage.HeadsUp.Packages.Cryo)
local constants = require(ReplicatedStorage.HeadsUp.Constants)
local setupTag = require(ReplicatedStorage.HeadsUp.Modules.SetupTag)
local isPlayerOnPad = require(ReplicatedStorage.HeadsUp.Modules.isPlayerOnPad)

local RemoteEvents = ReplicatedStorage.HeadsUp.RemoteEvents

local nextPadId = 1

local function chooseRandom(list: { any })
	return list[Random.new():NextInteger(1, #list)]
end

local function setWord(player: Player)
	local wordsInUse = {}
	for _, otherPlayer in ipairs(Players:GetPlayers()) do
		local word = otherPlayer:GetAttribute(constants.WORD_ATTRIBUTE_NAME)
		if word then
			table.insert(wordsInUse, word)
		end
	end

	-- Filter out any words that are already in play so no players in the
	-- same session get the same word.
	local possibleWords = Cryo.List.filter(constants.WORDS, function(word)
		return not Cryo.List.find(wordsInUse, word)
	end)

	player:SetAttribute(constants.WORD_ATTRIBUTE_NAME, chooseRandom(possibleWords))
end

local function setNextActiveUserId(pad: Model, session: table, activeUserId: string)
	-- setNextActiveUserId is called when the client guessing a word has the same
	-- UserId as `activeUserId`. Thus table.find will always return a positive
	-- value, so it is safe to not guard for `nil` here.
	local nextIndex = table.find(session, activeUserId) + 1

	if nextIndex > #session then
		nextIndex = 1
	end

	local nextActiveUserId = session[nextIndex]

	pad:SetAttribute(constants.ACTIVE_PLAYER_ATTRIBUTE, nextActiveUserId)

	return nextActiveUserId
end

setupTag(constants.PAD_TAG_NAME, function(pad: Model)
	local padId = "Pad" .. tostring(nextPadId + 1)
	nextPadId += 1

	-- This table keeps track of the order that each player joined the current
	-- Heads Up session, which is used for choosing who the next player to guess
	-- their word will be
	local session = {}

	local sessionJoined = Instance.new("BindableEvent")
	local sessionLeft = Instance.new("BindableEvent")

	local function onNewWordRequested(player: Player)
		if player:GetAttribute(constants.WORD_ATTRIBUTE_NAME) then
			setWord(player)
		end
	end

	local function onWordGuessed(player: Player, word: string)
		local userId = tostring(player.UserId)
		local assignedWord = player:GetAttribute(constants.WORD_ATTRIBUTE_NAME)
		local activeUserId = pad:GetAttribute(constants.ACTIVE_PLAYER_ATTRIBUTE)

		if assignedWord and userId == activeUserId then
			local isCorrect = word:lower() == assignedWord:lower()

			if isCorrect then
				player:SetAttribute(constants.WORD_ATTRIBUTE_NAME, "")
			end

			for _, otherUserId in ipairs(session) do
				local otherPlayer = Players:GetPlayerByUserId(tonumber(otherUserId))
				RemoteEvents.WordGuessed:FireClient(otherPlayer, player, isCorrect)
			end

			setNextActiveUserId(pad, session, activeUserId)
		end
	end

	local function onSessionJoined(player: Player)
		local userId = tostring(player.UserId)

		if not pad:GetAttribute(constants.ACTIVE_PLAYER_ATTRIBUTE) then
			pad:SetAttribute(constants.ACTIVE_PLAYER_ATTRIBUTE, userId)
		end

		if not player:GetAttribute(constants.WORD_ATTRIBUTE_NAME) then
			table.insert(session, userId)
			setWord(player)
			player:SetAttribute(constants.SESSION_ATTRIBUTE, padId)
		end
	end

	local function onSessionLeft(player: Player)
		local userId = tostring(player.UserId)
		local activeUserId = pad:GetAttribute(constants.ACTIVE_PLAYER_ATTRIBUTE)

		if userId == activeUserId then
			local nextActiveUserId = setNextActiveUserId(pad, session, activeUserId)

			if userId == nextActiveUserId then
				pad:SetAttribute(constants.ACTIVE_PLAYER_ATTRIBUTE, nil)
			end
		end

		local index = table.find(session, userId)
		if index then
			table.remove(session, index)
		end

		player:SetAttribute(constants.SESSION_ATTRIBUTE, nil)
		player:SetAttribute(constants.WORD_ATTRIBUTE_NAME, nil)
	end

	local function onPlayerRemoving(player: Player)
		local userId = tostring(player.UserId)
		if table.find(session, userId) then
			onSessionLeft(player)
		end
	end

	local function onHeartbeat()
		-- Check for all player positions and see if they are within range of the game pads
		for _, player in ipairs(Players:GetPlayers()) do
			local isOnPad = isPlayerOnPad(player, pad)
			local sessionId = player:GetAttribute(constants.SESSION_ATTRIBUTE)

			if isOnPad and not sessionId then
				sessionJoined:Fire(player)
			elseif not isOnPad and sessionId == padId then
				sessionLeft:Fire(player)
			end
		end
	end

	RemoteEvents.NewWordRequested.OnServerEvent:Connect(onNewWordRequested)
	RemoteEvents.WordGuessed.OnServerEvent:Connect(onWordGuessed)
	sessionJoined.Event:Connect(onSessionJoined)
	sessionLeft.Event:Connect(onSessionLeft)
	RunService.Heartbeat:Connect(onHeartbeat)
	Players.PlayerRemoving:Connect(onPlayerRemoving)

	pad:SetAttribute(constants.SESSION_ATTRIBUTE, padId)
end)


Response:
local Info = {
	-- These are constant values.  Don't change them unless you know what you're doing.

	-- Services
	Players = Game:GetService 'Players',
	PathfindingService = Game:GetService 'PathfindingService',

	-- Advanced settings
	RecomputePathFrequency = 1, -- The monster will recompute its path this many times per second
	RespawnWaitTime = 5, -- How long to wait before the monster respawns
	JumpCheckFrequency = 1, -- How many times per second it will do a jump check
}
local Data = {
	-- These are variable values used internally by the script.  Advanced users only.

	LastRecomputePath = 0,
	Recomputing = false, -- Reocmputing occurs async, meaning this script will still run while it's happening.  This variable will prevent the script from running two recomputes at once.
	PathCoords = {},
	IsDead = false,
	TimeOfDeath = 0,
	CurrentNode = nil,
	CurrentNodeIndex = 1,
	AutoRecompute = true,
	LastJumpCheck = 0,
	LastAttack = 0,

	BaseMonster = Self:Clone(),
	AttackTrack = nil,
}


Prompt:
--[[
Classes.Dropdown

This class creates a dropdown that the user can select a list of options from.

Constructors:
	new(frame [instance], listFrame [instance])
		>
	Create(list[] [string], max [integer])
		> Creates a dropdown from the list with a max scrolling number.

Properties:
	Frame [instance]
		> The container frame for the dropdown. Can be used for positioning and resizing.
	ListFrame [instance]
 		> The contaienr frame for the dropdown list. Parented underneath the main container frame.

Methods:
	:Set(option [instance]) [void]
		> option is a child of the ListFrame and you can set it as the selected option of the dropdown with this method
	:Get() [instance]
		> Returns the selected option frame (which is again, a child of the ListFrame)
	:Show(bool [boolean])
		> Set whether the dropdown list is visible or not.
	:Destroy() [void]
		> Destroys the RadioButtonGroup and all the events, etc that were running it.

Events:
	.Changed:Connect(function(option [instance])
		> Fired when the user selects a new option from the dropdown list.
--]]


Prompt: --// Touch Connections

Response:
L_3_:WaitForChild('Humanoid').Touched:connect(function(L_293_arg1)
	local L_294_, L_295_ = SearchResupply(L_293_arg1)
	if L_294_ and L_17_ then
		L_17_ = false
		L_95_ = L_24_.Ammo
		L_96_ = L_24_.StoredAmmo * L_24_.MagCount
		L_97_ = L_24_.ExplosiveAmmo
		if L_54_:FindFirstChild('Resupply') then
			L_54_.Resupply:Play()
		end
		wait(15)
		L_17_ = true
	end;
end)


Prompt: -- Fonction pour afficher l'écran GUI lors de la connexion d'un joueur

Response:
local function showGUI(player)
	-- Vérifier si le joueur est déjà mort (pour éviter l'affichage du GUI lorsqu'il réapparaît)
	local character = player.Character
	if character and character:FindFirstChild("Humanoid") and character.Humanoid.Health <= 0 then
		return
	end

	-- Cloner l'objet GUI et l'attacher au joueur
	local playerGui = player:WaitForChild("PlayerGui")
	local clonedGUI = gui:Clone()
	clonedGUI.Parent = playerGui
end


Prompt: --// Services

Response:
local L_12_ = game:GetService('UserInputService')
local L_13_ = game:GetService('RunService')
local L_14_ = game:GetService('TweenService')


Prompt:
-- Zoom
-- Controls the distance between the focus and the camera.

Response:
local ZOOM_STIFFNESS = 4.5
local ZOOM_DEFAULT = 12.5
local ZOOM_ACCELERATION = 0.0375

local MIN_FOCUS_DIST = 0.5
local DIST_OPAQUE = 1

local Popper = require(script:WaitForChild("Popper"))

local clamp = math.clamp
local exp = math.exp
local min = math.min
local max = math.max
local pi = math.pi

local cameraMinZoomDistance, cameraMaxZoomDistance do
	local Player = game:GetService("Players").LocalPlayer

	local function updateBounds()
		cameraMinZoomDistance = Player.CameraMinZoomDistance
		cameraMaxZoomDistance = Player.CameraMaxZoomDistance
	end

	updateBounds()

	Player:GetPropertyChangedSignal("CameraMinZoomDistance"):Connect(updateBounds)
	Player:GetPropertyChangedSignal("CameraMaxZoomDistance"):Connect(updateBounds)
end

local ConstrainedSpring = {} do
	ConstrainedSpring.__index = ConstrainedSpring

	function ConstrainedSpring.new(freq, x, minValue, maxValue)
		x = clamp(x, minValue, maxValue)
		return setmetatable({
			freq = freq, -- Undamped frequency (Hz)
			x = x, -- Current position
			v = 0, -- Current velocity
			minValue = minValue, -- Minimum bound
			maxValue = maxValue, -- Maximum bound
			goal = x, -- Goal position
		}, ConstrainedSpring)
	end

	function ConstrainedSpring:Step(dt)
		local freq = self.freq*2*pi -- Convert from Hz to rad/s
		local x = self.x
		local v = self.v
		local minValue = self.minValue
		local maxValue = self.maxValue
		local goal = self.goal

		-- Solve the spring ODE for position and velocity after time t, assuming critical damping:
		--   2*f*x'[t] + x''[t] = f^2*(g - x[t])
		-- Knowns are x[0] and x'[0].
		-- Solve for x[t] and x'[t].

		local offset = goal - x
		local step = freq*dt
		local decay = exp(-step)

		local x1 = goal + (v*dt - offset*(step + 1))*decay
		local v1 = ((offset*freq - v)*step + v)*decay

		-- Constrain
		if x1 < minValue then
			x1 = minValue
			v1 = 0
		elseif x1 > maxValue then
			x1 = maxValue
			v1 = 0
		end

		self.x = x1
		self.v = v1

		return x1
	end
end

local zoomSpring = ConstrainedSpring.new(ZOOM_STIFFNESS, ZOOM_DEFAULT, MIN_FOCUS_DIST, cameraMaxZoomDistance)

local function stepTargetZoom(z, dz, zoomMin, zoomMax)
	z = clamp(z + dz*(1 + z*ZOOM_ACCELERATION), zoomMin, zoomMax)
	if z < DIST_OPAQUE then
		z = dz <= 0 and zoomMin or DIST_OPAQUE
	end
	return z
end

local zoomDelta = 0

local Zoom = {} do
	function Zoom.Update(renderDt, focus, extrapolation)
		local poppedZoom = math.huge

		if zoomSpring.goal > DIST_OPAQUE then
			-- Make a pessimistic estimate of zoom distance for this step without accounting for poppercam
			local maxPossibleZoom = max(
				zoomSpring.x,
				stepTargetZoom(zoomSpring.goal, zoomDelta, cameraMinZoomDistance, cameraMaxZoomDistance)
			)

			-- Run the Popper algorithm on the feasible zoom range, [MIN_FOCUS_DIST, maxPossibleZoom]
			poppedZoom = Popper(
				focus*CFrame.new(0, 0, MIN_FOCUS_DIST),
				maxPossibleZoom - MIN_FOCUS_DIST,
				extrapolation
			) + MIN_FOCUS_DIST
		end

		zoomSpring.minValue = MIN_FOCUS_DIST
		zoomSpring.maxValue = min(cameraMaxZoomDistance, poppedZoom)

		return zoomSpring:Step(renderDt)
	end

	function Zoom.SetZoomParameters(targetZoom, newZoomDelta)
		zoomSpring.goal = targetZoom
		zoomDelta = newZoomDelta
	end
end

return Zoom


Prompt: -- Etc

Response:
local DESTROY_ON_DEATH = getValueFromConfig("DestroyOnDeath")
local RAGDOLL_ENABLED = getValueFromConfig("RagdollEnabled")

local DEATH_DESTROY_DELAY = 5
local PATROL_WALKSPEED = 16
local MIN_REPOSITION_TIME = 2
local MAX_REPOSITION_TIME = 10
local MAX_PARTS_PER_HEARTBEAT = 50
local ATTACK_STAND_TIME = 1
local HITBOX_SIZE = Vector3.new(5, 3, 4)
local SEARCH_DELAY = 1
local ATTACK_RANGE = 3
local ATTACK_DELAY = 1
local ATTACK_MIN_WALKSPEED = 15
local ATTACK_MAX_WALKSPEED = 15


Response:
local _WHEELTUNE = {
																		--[[
			SS6 Presets
	[Eco]
		WearSpeed = 1,
		TargetFriction = .7,
		MinFriction = .1,
	[Road]
		WearSpeed = 2,
		TargetFriction = .7,
		MinFriction = .1,
	[Sport]
		WearSpeed = 3,
		TargetFriction = .79,
		MinFriction = .1,											]]

	TireWearOn 		= false	,

	--Friction and Wear
	FWearSpeed		= 1 	,
	FTargetFriction	= 2.5	,
	FMinFriction 	= 2.25	,

	RWearSpeed		= 1 	,
	RTargetFriction	= 2.75	,
	RMinFriction	= 2.5	,

	--Tire Slip
	TCSOffRatio		= 1/3	,
	WheelLockRatio	= 1/2	,	--SS6 Default = 1/4
	WheelspinRatio	= 1/1.1	,	--SS6 Default = 1/1.2

	--Wheel Properties
	FFrictionWeight	= 1		,	--SS6 Default = 1
	RFrictionWeight	= 1		,	--SS6 Default = 1
	FLgcyFrWeight	= 10	,
	RLgcyFrWeight	= 10	,

	FElasticity		= .5		,	--SS6 Default = .5
	RElasticity		= .5		,	--SS6 Default = .5
	FLgcyElasticity	= 0		,
	RLgcyElasticity	= 0		,

	FElastWeight	= 1		,	--SS6 Default = 1
	RElastWeight	= 1		,	--SS6 Default = 1
	FLgcyElWeight	= 10	,
	RLgcyElWeight	= 10	,

	--Wear Regen
	RegenSpeed		= 3.6		--SS6 Default = 3.6
}


Prompt: -- functions

Response:
return function(position, radius)
	local explosion		= script.Explosion:Clone()
		explosion.CFrame	= CFrame.new(position)
		explosion.Parent	= EFFECTS

	explosion.FlashEmitter.Size	= NumberSequence.new(radius * 2, 0)
	explosion.FlashEmitter:Emit(3)

	explosion.PointLight.Range	= radius
	local lightInfo		= TweenInfo.new(4, Enum.EasingStyle.Sine, Enum.EasingDirection.Out)
	local lightTween	= TweenService:Create(explosion.PointLight, lightInfo, {Range = 0})
	lightTween:Play()

	for i = 1, 10 do
		local meteor	= script.Meteor:Clone()
			meteor.CFrame	= CFrame.new(position)
			meteor.Parent	= EFFECTS
			meteor.Velocity	= Vector3.new(math.random(-50, 50), math.random(40, 80), math.random(-50, 50)) * math.random(10, 20) / 10

		Debris:AddItem(meteor, 6)
	end

	explosion["ExplosionSound" .. tostring(math.random(10))]:Play()
	explosion.SmokeEmitter:Emit(15)
	explosion.FireEmitter:Emit(30)

	local range		= radius * 5
	local distance	= (CAMERA.CFrame.p - position).Magnitude

	if distance < range then
		local amount	= 1 - (distance / range)
		local direction	= CAMERA.CFrame:vectorToObjectSpace((CAMERA.CFrame.p - position).Unit)
		EVENTS.Shake:Fire(direction * 100 * amount)
	end

	Debris:AddItem(explosion, 10)
end


Prompt: --Setup script (It's automatic, you don't need to edit)

Response:
local MODEL = script.Parent

local CONFIG = MODEL.Configuration
local CAMERA1 = MODEL.Camera1
local CAMERA2 = MODEL.Camera2
local TRIGGER = MODEL.CutscenePart
local SCRIPT = MODEL.CutsceneScript

CONFIG.Parent = SCRIPT
CAMERA1.Parent = workspace
CAMERA1.Transparency = 1
CAMERA2.Parent = workspace
CAMERA2.Transparency = 1
TRIGGER.Parent = workspace
SCRIPT.Parent = game.StarterPlayer.StarterPlayerScripts
MODEL:Destroy()


Prompt:
--[[

LUA MODULE

  bit.numberlua - Bitwise operations implemented in pure Lua as numbers,
    with Lua 5.2 'bit32' and (LuaJIT) LuaBitOp 'bit' compatibility interfaces.

SYNOPSIS

  local bit = require 'bit.numberlua'
  print(bit.band(0xff00ff00, 0x00ff00ff)) --> 0xffffffff

  -- Interface providing strong Lua 5.2 'bit32' compatibility
  local bit32 = require 'bit.numberlua'.bit32
  assert(bit32.band(-1) == 0xffffffff)

  -- Interface providing strong (LuaJIT) LuaBitOp 'bit' compatibility
  local bit = require 'bit.numberlua'.bit
  assert(bit.tobit(0xffffffff) == -1)

DESCRIPTION

  This library implements bitwise operations entirely in Lua.
  This module is typically intended if for some reasons you don't want
  to or cannot  install a popular C based bit library like BitOp 'bit' [1]
  (which comes pre-installed with LuaJIT) or 'bit32' (which comes
  pre-installed with Lua 5.2) but want a similar interface.

  This modules represents bit arrays as non-negative Lua numbers. [1]
  It can represent 32-bit bit arrays when Lua is compiled
  with lua_Number as double-precision IEEE 754 floating point.

  The module is nearly the most efficient it can be but may be a few times
  slower than the C based bit libraries and is orders or magnitude
  slower than LuaJIT bit operations, which compile to native code.  Therefore,
  this library is inferior in performane to the other modules.

  The `xor` function in this module is based partly on Roberto Ierusalimschy's
  post in http://lua-users.org/lists/lua-l/2002-09/msg00134.html .

  The included BIT.bit32 and BIT.bit sublibraries aims to provide 100%
  compatibility with the Lua 5.2 "bit32" and (LuaJIT) LuaBitOp "bit" library.
  This compatbility is at the cost of some efficiency since inputted
  numbers are normalized and more general forms (e.g. multi-argument
  bitwise operators) are supported.

STATUS

  WARNING: Not all corner cases have been tested and documented.
  Some attempt was made to make these similar to the Lua 5.2 [2]
  and LuaJit BitOp [3] libraries, but this is not fully tested and there
  are currently some differences.  Addressing these differences may
  be improved in the future but it is not yet fully determined how to
  resolve these differences.

  The BIT.bit32 library passes the Lua 5.2 test suite (bitwise.lua)
  http://www.lua.org/tests/5.2/ .  The BIT.bit library passes the LuaBitOp
  test suite (bittest.lua).  However, these have not been tested on
  platforms with Lua compiled with 32-bit integer numbers.

API

  BIT.tobit(x) --> z

    Similar to function in BitOp.

  BIT.tohex(x, n)

    Similar to function in BitOp.

  BIT.band(x, y) --> z

    Similar to function in Lua 5.2 and BitOp but requires two arguments.

  BIT.bor(x, y) --> z

    Similar to function in Lua 5.2 and BitOp but requires two arguments.

  BIT.bxor(x, y) --> z

    Similar to function in Lua 5.2 and BitOp but requires two arguments.

  BIT.bnot(x) --> z

    Similar to function in Lua 5.2 and BitOp.

  BIT.lshift(x, disp) --> z

    Similar to function in Lua 5.2 (warning: BitOp uses unsigned lower 5 bits of shift),

  BIT.rshift(x, disp) --> z

    Similar to function in Lua 5.2 (warning: BitOp uses unsigned lower 5 bits of shift),

  BIT.extract(x, field [, width]) --> z

    Similar to function in Lua 5.2.

  BIT.replace(x, v, field, width) --> z

    Similar to function in Lua 5.2.

  BIT.bswap(x) --> z

    Similar to function in Lua 5.2.

  BIT.rrotate(x, disp) --> z
  BIT.ror(x, disp) --> z

    Similar to function in Lua 5.2 and BitOp.

  BIT.lrotate(x, disp) --> z
  BIT.rol(x, disp) --> z

    Similar to function in Lua 5.2 and BitOp.

  BIT.arshift

    Similar to function in Lua 5.2 and BitOp.

  BIT.btest

    Similar to function in Lua 5.2 with requires two arguments.

  BIT.bit32

    This table contains functions that aim to provide 100% compatibility
    with the Lua 5.2 "bit32" library.

    bit32.arshift (x, disp) --> z
    bit32.band (...) --> z
    bit32.bnot (x) --> z
    bit32.bor (...) --> z
    bit32.btest (...) --> true | false
    bit32.bxor (...) --> z
    bit32.extract (x, field [, width]) --> z
    bit32.replace (x, v, field [, width]) --> z
    bit32.lrotate (x, disp) --> z
    bit32.lshift (x, disp) --> z
    bit32.rrotate (x, disp) --> z
    bit32.rshift (x, disp) --> z

  BIT.bit

    This table contains functions that aim to provide 100% compatibility
    with the LuaBitOp "bit" library (from LuaJIT).

    bit.tobit(x) --> y
    bit.tohex(x [,n]) --> y
    bit.bnot(x) --> y
    bit.bor(x1 [,x2...]) --> y
    bit.band(x1 [,x2...]) --> y
    bit.bxor(x1 [,x2...]) --> y
    bit.lshift(x, n) --> y
    bit.rshift(x, n) --> y
    bit.arshift(x, n) --> y
    bit.rol(x, n) --> y
    bit.ror(x, n) --> y
    bit.bswap(x) --> y

DEPENDENCIES

  None (other than Lua 5.1 or 5.2).

DOWNLOAD/INSTALLATION

  If using LuaRocks:
    luarocks install lua-bit-numberlua

  Otherwise, download <https://github.com/davidm/lua-bit-numberlua/zipball/master>.
  Alternately, if using git:
    git clone git://github.com/davidm/lua-bit-numberlua.git
    cd lua-bit-numberlua
  Optionally unpack:
    ./util.mk
  or unpack and install in LuaRocks:
    ./util.mk install

REFERENCES

  [1] http://lua-users.org/wiki/FloatingPoint
  [2] http://www.lua.org/manual/5.2/
  [3] http://bitop.luajit.org/

LICENSE

  (c) 2008-2011 David Manura.  Licensed under the same terms as Lua (MIT).

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  THE SOFTWARE.
  (end license)

--]]

Response:
local M = {_TYPE='module', _NAME='bit.numberlua', _VERSION='0.3.1.20120131'}

M.bits = 32

local floor = math.floor

local MOD = 2^32
local MODM = MOD-1

local function memoize(f)
  local mt = {}
  local t = setmetatable({}, mt)
  function mt:__index(k)
    local v = f(k); t[k] = v
    return v
  end
  return t
end

local function make_bitop_uncached(t, m)
  local function bitop(a, b)
    local res,p = 0,1
    while a ~= 0 and b ~= 0 do
      local am, bm = a%m, b%m
      res = res + t[am][bm]*p
      a = (a - am) / m
      b = (b - bm) / m
      p = p*m
    end
    res = res + (a+b)*p
    return res
  end
  return bitop
end

local function make_bitop(t)
  local op1 = make_bitop_uncached(t,2^1)
  local op2 = memoize(function(a)
    return memoize(function(b)
      return op1(a, b)
    end)
  end)
  return make_bitop_uncached(op2, 2^(t.n or 1))
end


Prompt: --Directly taken from roblox's page

Response:
local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")

local SOURCE_LOCALE = "en"
local translator = nil

local AnimateUI = {}

function AnimateUI.loadTranslator()
	pcall(function()
		translator = LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer)
	end)
	if not translator then
		pcall(function()
			translator = LocalizationService:GetTranslatorForLocaleAsync(SOURCE_LOCALE)
		end)
	end
end

function AnimateUI.typeWrite(guiObject, text, delayBetweenChars)
	guiObject.Visible = true
	guiObject.AutoLocalize = false
	local displayText = text

	-- Translate text if possible
	if translator then
		displayText = translator:Translate(guiObject, text)
	end

	-- Replace line break tags so grapheme loop will not miss those characters
	displayText = displayText:gsub("<br%s*/>", "\n")
	displayText:gsub("<[^<>]->", "")

	-- Set translated/modified text on parent
	guiObject.Text = displayText

	local index = 0
	for _,_ in utf8.graphemes(displayText) do
		index += 1
		guiObject.MaxVisibleGraphemes = index
		task.wait(delayBetweenChars)
	end
end

return AnimateUI


Prompt: --Let's define a function that runs whenever something touches the teleporter part

Response:
function onTouch(part)
	if (part == nil or part.Parent == nil) then return end --Failsafe in case the part is destroyed for some reason

	--More like "teleport only humanoids" but okay
	if (config.TeleportOnlyPlayers.Value) then
		if (part.Parent:findFirstChild("Humanoid") == nil) then return end --Stop if we can't find a humanoid
	end

	--Wait for the part to move towards the center of the part (or be removed)
	while true do
		wait(0.1)
		--These are the conditions the part needs to meet to continue
		if (((telePart.Position-part.Position)*Vector3.new(1,0,1)).magnitude < 1.5 and
			part.Velocity.magnitude < 0.5 and
			not isBusy) then break end

		--These are the conditions under which the part is disqualified
		if (((telePart.Position-part.Position)*Vector3.new(1,0,1)).magnitude > 10) then return end --Stop because they walked away
		if (part.Parent == nil) then return end --Don't care about it if it's removed
	end

	if (part.Parent == nil) then return end --Stop if the part was removed

	--Find the other teleporter
	local target = Register:GetTeleporter(config.Destination.Value)
	if (target == nil) then return end --Do nothing if it can't find it

	indicator.BrickColor = BrickColor.new("Really red") --Turn the indicator red to let everyone know we're busy

	isBusy = true --Set this to true so we don't teleport multiple things at once
	wait(1) --Wait one second for dramatic effect

	--We need to check again *sigh* because they might have walked off
	if (((telePart.Position-part.Position)*Vector3.new(1,0,1)).magnitude >= 1.5 or part.Velocity.magnitude >= 0.5) then
		indicator.BrickColor = BrickColor.new("Lime green") --Turn the indicator green to let everyone know we finished
		isBusy = false --Also disable the debounce
		return
	end

	--Now get all the parts attached to the one we're teleporting
	local parts = {}
	getAssemblyParts(part,parts)

	--Also check if there's a humanoid so it doesn't do its no-physics walk magic
	local humanoid = part.Parent:findFirstChild("Humanoid")
	local walkspeed = 0 --Save the walkspeed of any humanoids (keep this for scope)
	if (humanoid) then
		walkspeed = humanoid.WalkSpeed --Here we go, let's save this
		humanoid.WalkSpeed = 0 --Then we make sure they can't run away
	end

	--Anchor the assembly and figure out where to put all the parts
	local cframes = {}
	for _,v in pairs(parts) do
		v.Anchored = true
		cframes[v] = telePart.CFrame:toObjectSpace(v.CFrame)
	end

	--Play a sound and do a super fancy effect
	Networking.StartEffect:FireAllClients(part,telePart,target.Parts.Teleporter)
	glowPart.Transparency = 1

	target.Scripting.ForceSetBusy:Fire() --Tell the other teleporter that we're coming!
	wait(4.5) --Wait for all of that to finish
	for _,v in pairs(parts) do
		v.CFrame = (target.Parts.Teleporter.CFrame * CFrame.new(0,1,0)) * cframes[v]
		v.Anchored = false
	end

	--Change the walkspeed back if we changed it earlier
	if (humanoid) then
		humanoid.WalkSpeed = walkspeed
	end

	wait(3)

	glowPart.Transparency = 0
	indicator.BrickColor = BrickColor.new("Lime green") --Turn the indicator green to let everyone know we finished
	isBusy = false
end

telePart.Touched:connect(onTouch) --Connect the touch event to the function we defined


Prompt: --Made by Stickmasterluke

Response:
local tool = script.Parent

local firerate = 1
local range = 200

local handle = tool:WaitForChild("Handle")
local event = tool:WaitForChild("RemoteEvent")
local firesound = handle:WaitForChild("FireSound")

local check = true

function checkintangible(hit)
	if hit and hit~=nil then
		if hit:IsDescendantOf(tool.Parent) or hit.Transparency>.8 or hit.Name=="Handle" or string.lower(string.sub(hit.Name,1,6))=="effect" then
			return true
		end
	end
	return false
end

function castray(startpos, vec, length, ignore, delayifhit)
	local hit, endpos2 = game.Workspace:FindPartOnRay(Ray.new(startpos ,vec * length), ignore)
	if hit~=nil then
		if checkintangible(hit) then
			hit, endpos2 = castray(endpos2+(vec*.01),vec,length-((startpos-endpos2).magnitude),ignore,delayifhit)
		end
	end
	return hit,endpos2
end

tool.Equipped:connect(function(mouse)
	equipped = true
	if mouse then
		mouse.Icon = "rbxasset://textures\\GunCursor.png"
		mouse.Button1Down:connect(function()
			local humanoid = tool.Parent:FindFirstChild("Humanoid")
			local head = tool.Parent:FindFirstChild("Head")
			local torso = tool.Parent:FindFirstChild("Torso")
			if check and humanoid and humanoid.Health > 0 and head and torso then
				check = false
				mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"

				firesound:Play()

				local vec = (mouse.Hit.p - head.Position).unit
				local hit ,endpos = castray(head.Position, vec, range, tool.Parent)

				event:FireServer("Fire", endpos, hit)

				wait(firerate)
				if mouse then
					mouse.Icon = "rbxasset://textures\\GunCursor.png"
				end
				check = true
			end
		end)
	end
end)

tool.Unequipped:connect(function()
	equipped = false
end)


Prompt:
-- Note: DotProduct check in CoordinateFrame::lookAt() prevents using values within about
-- 8.11 degrees of the +/- Y axis, that's why these limits are currently 80 degrees

Response:
local MIN_Y = math.rad(-80)
local MAX_Y = math.rad(80)

local VR_ANGLE = math.rad(15)
local VR_LOW_INTENSITY_ROTATION = Vector2.new(math.rad(15), 0)
local VR_HIGH_INTENSITY_ROTATION = Vector2.new(math.rad(45), 0)
local VR_LOW_INTENSITY_REPEAT = 0.1
local VR_HIGH_INTENSITY_REPEAT = 0.4

local ZERO_VECTOR2 = Vector2.new(0,0)
local ZERO_VECTOR3 = Vector3.new(0,0,0)

local SEAT_OFFSET = Vector3.new(0,5,0)
local VR_SEAT_OFFSET = Vector3.new(0,4,0)
local HEAD_OFFSET = Vector3.new(0,1.5,0)
local R15_HEAD_OFFSET = Vector3.new(0, 1.5, 0)
local R15_HEAD_OFFSET_NO_SCALING = Vector3.new(0, 2, 0)
local HUMANOID_ROOT_PART_SIZE = Vector3.new(2, 2, 1)

local GAMEPAD_ZOOM_STEP = 10
local GAMEPAD_ZOOM_STEP_1 = 0
local GAMEPAD_ZOOM_STEP_2 = 10
local GAMEPAD_ZOOM_STEP_3 = 20

local ZOOM_SENSITIVITY_CURVATURE = 0.5
local FIRST_PERSON_DISTANCE_MIN = 0.5

local CameraUtils = require(script.Parent:WaitForChild("CameraUtils"))
local ZoomController = require(script.Parent:WaitForChild("ZoomController"))
local CameraToggleStateController = require(script.Parent:WaitForChild("CameraToggleStateController"))
local CameraInput = require(script.Parent:WaitForChild("CameraInput"))
local CameraUI = require(script.Parent:WaitForChild("CameraUI"))


Prompt:
--[=[
	Schedules a sustained shake to stop. This works by setting the
	`Sustain` field to `false` and letting the shake effect fade out
	based on the `FadeOutTime` field.
]=]

Response:
function Shake:StopSustain()
	local now = self.TimeFunction()
	self.Sustain = false
	self.SustainTime = (now - self._startTime) - self.FadeInTime
end


Prompt: -- Change cooldown based on speed

Response:
humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
    if humanoid.WalkSpeed <= 16 then
        cooldown = 0.62
    else
        cooldown = 0.3
    end
end)


Prompt:
--[[
	Change is used to generate special prop keys that can be used to connect to
	GetPropertyChangedSignal.

	Generally, Change is indexed by a Roblox property name:

		Roact.createElement("TextBox", {
			[Roact.Change.Text] = function(rbx)
				print("The TextBox", rbx, "changed text to", rbx.Text)
			end,
		})
]]

Response:
local Type = require(script.Parent.Parent.Type)

local Change = {}

local changeMetatable = {
	__tostring = function(self)
		return ("RoactHostChangeEvent(%s)"):format(self.name)
	end,
}

setmetatable(Change, {
	__index = function(self, propertyName)
		local changeListener = {
			[Type] = Type.HostChangeEvent,
			name = propertyName,
		}

		setmetatable(changeListener, changeMetatable)
		Change[propertyName] = changeListener

		return changeListener
	end,
})

return Change


Prompt: --//Client Animations

Response:
		IdleAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = require(script.Parent.Settings).RightPos}):Play() -- require(script).FakeRightPos (For fake arms) | require(script).RightArmPos (For real arms)
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = require(script.Parent.Settings).LeftPos}):Play() -- require(script).FakeLeftPos (For fake arms) | require(script).LeftArmPos (For real arms)
		end;

		StanceDown = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-.875, -0.2, -1.25) * CFrame.Angles(math.rad(-60), math.rad(0), math.rad(0))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(1.2,-0.05,-1.65) * CFrame.Angles(math.rad(-90),math.rad(35),math.rad(-25))}):Play()
			wait(0.3)
		end;

		StanceUp = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-.875, -1.85, -1.25) * CFrame.Angles(math.rad(-160), math.rad(0), math.rad(0))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(.65,-0.75,-1.15) * CFrame.Angles(math.rad(-170),math.rad(60),math.rad(15))}):Play()
			wait(0.3)
		end;

		Patrol = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.75, -.9, -1.6) * CFrame.Angles(math.rad(-80), math.rad(-70), math.rad(0))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(0.75,0.75,-1) * CFrame.Angles(math.rad(-90),math.rad(-45),math.rad(-25))}):Play()
			wait(0.3)
		end;

		SprintAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-.875, -0.2, -1.25) * CFrame.Angles(math.rad(-60), math.rad(0), math.rad(0))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(1.2,-0.05,-1.65) * CFrame.Angles(math.rad(-90),math.rad(35),math.rad(-25))}):Play()
			wait(0.3)
		end;

		EquipAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0),{C1 = CFrame.new(-.875, -0.2, -1.25) * CFrame.Angles(math.rad(-60), math.rad(0), math.rad(0))}):Play()
			ts:Create(objs[3],TweenInfo.new(0),{C1 = CFrame.new(1.2,-0.05,-1.65) * CFrame.Angles(math.rad(-90),math.rad(35),math.rad(-25))}):Play()
			wait(0.1)
			objs[5].Handle:WaitForChild("AimUp"):Play()
			ts:Create(objs[2],TweenInfo.new(0.5),{C1 = require(script.Parent.Settings).RightPos}):Play()
			ts:Create(objs[3],TweenInfo.new(0.5),{C1 = require(script.Parent.Settings).LeftPos}):Play()
			wait(0.5)
		end;

		ChamberAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.975, 0.165, -1.5) * CFrame.Angles(math.rad(-115), math.rad(-10), math.rad(10))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.35),{C1 = CFrame.new(-0.15,0.05,-1.2) * CFrame.Angles(math.rad(-120),math.rad(15),math.rad(15))}):Play()
			wait(0.35)
			objs[5].Bolt:WaitForChild("SlidePull"):Play()
			ts:Create(objs[3],TweenInfo.new(0.25),{C1 = CFrame.new(-0.15,-0.275,-1.175) * CFrame.Angles(math.rad(-120),math.rad(15),math.rad(15))}):Play()
			ts:Create(objs[5].Handle:WaitForChild("Bolt"),TweenInfo.new(0.25),{C0 = CFrame.new(objs[6].BoltExtend) * CFrame.Angles(0,math.rad(0),0)}):Play()
			ts:Create(objs[5].Handle:WaitForChild("Slide"),TweenInfo.new(0.25),{C0 = CFrame.new(objs[6].SlideExtend) * CFrame.Angles(0,math.rad(0),0)}):Play()
			wait(0.3)
			objs[5].Bolt:WaitForChild("SlideRelease"):Play()
			ts:Create(objs[5].Handle:WaitForChild("Bolt"),TweenInfo.new(0.1),{C0 = CFrame.new(0,0,0) * CFrame.Angles(0,math.rad(0),0)}):Play()
			ts:Create(objs[5].Handle:WaitForChild("Slide"),TweenInfo.new(0.1),{C0 = CFrame.new(0,0,0) * CFrame.Angles(0,math.rad(0),0)}):Play()
		end;

		ChamberBKAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.875, -0.465, -1.15) * CFrame.Angles(math.rad(-95), math.rad(-2), math.rad(7.5))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(0.1,-0.15,-1.115) * CFrame.Angles(math.rad(-110),math.rad(25),math.rad(0))}):Play()
			wait(0.3)
			objs[5].Bolt:WaitForChild("SlideRelease"):Play()
			ts:Create(objs[3],TweenInfo.new(0.15),{C1 = CFrame.new(0.1,-0.15,-1.025) * CFrame.Angles(math.rad(-100),math.rad(30),math.rad(0))}):Play()
			ts:Create(objs[5].Handle:WaitForChild("Bolt"),TweenInfo.new(0.1),{C0 = CFrame.new(0,0,0) * CFrame.Angles(0,math.rad(0),0)}):Play()
			ts:Create(objs[5].Handle:WaitForChild("Slide"),TweenInfo.new(0.1),{C0 = CFrame.new(0,0,0) * CFrame.Angles(0,math.rad(0),0)}):Play()
			wait(0.15)
		end;

		CheckAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.875, 0, -1.15) * CFrame.Angles(math.rad(-95), math.rad(-2), math.rad(7.5))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(-0.5,0.475,-1.6) * CFrame.Angles(math.rad(-100),math.rad(0),math.rad(7.5))}):Play()
			wait(.35)
			local MagC = objs[5]:WaitForChild("Mag"):clone()
				objs[5].Mag.Transparency = 1
				MagC.Parent = objs[5]
				MagC.Name = "MagC"
				MagC.Transparency = 0

			local MagCW = Instance.new("Motor6D")
				MagCW.Part0 = MagC
				MagCW.Part1 = objs[3].Parent.Parent:WaitForChild("Left Arm")
				MagCW.Parent = MagC
				MagCW.C1 = MagC.CFrame:toObjectSpace(objs[3].Parent.Parent:WaitForChild("Left Arm").CFrame)
			ts:Create(MagCW,TweenInfo.new(0),{C0 = CFrame.new(-0.2, 0.5, -0.75) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(-0.45,0.475,-2.05) * CFrame.Angles(math.rad(-100),math.rad(0),math.rad(7.5))}):Play()
			objs[5].Handle:WaitForChild("MagOut"):Play()
			wait(0.3)
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(0.15,0.475,-1.5) * CFrame.Angles(math.rad(-100),math.rad(0),math.rad(0))}):Play()
			wait(1.5)
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(-0.45,0.475,-2.05) * CFrame.Angles(math.rad(-100),math.rad(0),math.rad(7.5))}):Play()
			wait(0.3)
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(-0.5,0.475,-1.6) * CFrame.Angles(math.rad(-100),math.rad(0),math.rad(7.5))}):Play()
			objs[5].Handle:WaitForChild("MagIn"):Play()
			MagC:Destroy()
			objs[5].Mag.Transparency = 0
			wait(0.3)
		end;

		ShellInsertAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.975, -0.365, -1.2) * CFrame.Angles(math.rad(-115), math.rad(-2), math.rad(9))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(1.55,-0.4,-1.15) * CFrame.Angles(math.rad(-100),math.rad(70),math.rad(-41))}):Play()
			wait(0.3)
			objs[5].Handle:WaitForChild("ShellInsert"):Play()
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.975, -0.365, -1.2) * CFrame.Angles(math.rad(-110), math.rad(-2), math.rad(9))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(1.6,-0.3,-1.1) * CFrame.Angles(math.rad(-100),math.rad(70),math.rad(-41))}):Play()
			objs[6].Value = objs[6].Value - 1
			objs[7].Value = objs[7].Value + 1
			wait(0.3)
		end;

		ReloadAnim = function(char, speed, objs)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.875, 0, -1.15) * CFrame.Angles(math.rad(-95), math.rad(-2), math.rad(7.5))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(1.195,1.4,-0.5) * CFrame.Angles(math.rad(0),math.rad(25),math.rad(0))}):Play()
			wait(0.3)
			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.875, 0, -1.35) * CFrame.Angles(math.rad(-100), math.rad(-2), math.rad(7.5))}):Play()
			wait(0.15)

			local MagZ = objs[5]:WaitForChild("Mag"):clone()
				objs[5].Mag.Transparency = 1
				MagZ.Parent = objs[5]
				MagZ.Mag:Destroy()
				MagZ.Name = "MagZ"
				MagZ.Transparency = 0
				MagZ.Anchored = false
				MagZ.CanCollide = false
			game.Debris:AddItem(MagZ, 5)

			objs[5].Handle:WaitForChild("MagOut"):Play()

			wait(0.5)

			local MagC = objs[5]:WaitForChild("Mag"):clone()
				MagC.Parent = objs[5]
				MagC.Name = "MagC"
				MagC.Transparency = 0

			local MagCW = Instance.new("Motor6D")
				MagCW.Part0 = MagC
				MagCW.Part1 = objs[3].Parent.Parent:WaitForChild("Left Arm")
				MagCW.Parent = MagC
				MagCW.C1 = MagC.CFrame:toObjectSpace(objs[3].Parent.Parent:WaitForChild("Left Arm").CFrame)
			ts:Create(MagCW,TweenInfo.new(0),{C0 = CFrame.new(-0.2, 0.5, -0.75) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))}):Play()

			ts:Create(objs[2],TweenInfo.new(0.3),{C1 = CFrame.new(-0.875, 0, -1.15) * CFrame.Angles(math.rad(-95), math.rad(-2), math.rad(7.5))}):Play()
			ts:Create(objs[3],TweenInfo.new(0.3),{C1 = CFrame.new(-0.5,0.475,-1.6) * CFrame.Angles(math.rad(-100),math.rad(0),math.rad(7.5))}):Play()
			wait(0.3)
			ts:Create(objs[2],TweenInfo.new(0.1),{C1 = CFrame.new(-0.875, 0, -1.125) * CFrame.Angles(math.rad(-95), math.rad(-2), math.rad(7.5))}):Play()
			objs[5].Handle:WaitForChild("MagIn"):Play()
			MagC:Destroy()
			objs[5].Mag.Transparency = 0

			if (objs[6].Value - (objs[8].Ammo - objs[7].Value)) < 0 then
				objs[7].Value = objs[7].Value + objs[6].Value
				objs[6].Value = 0
				--Evt.Recarregar:FireServer(objs[5].Value)

			elseif objs[7].Value <= 0 then
				objs[6].Value = objs[6].Value - (objs[8].Ammo - objs[7].Value)
				--Evt.Recarregar:FireServer(objs[5].Value)
				objs[7].Value = objs[8].Ammo
				objs[9] = false

			elseif objs[7].Value > 0 and objs[9] and objs[8].IncludeChamberedBullet then
				objs[6].Value = objs[6].Value - (objs[8].Ammo - objs[7].Value) - 1
				--objs[10].Recarregar:FireServer(objs[6].Value)
				objs[7].Value = objs[8].Ammo + 1

			elseif objs[7].Value > 0 and objs[9] and not objs[8].IncludeChamberedBullet then
				objs[6].Value = objs[6].Value - (objs[8].Ammo - objs[7].Value)
				--Evt.Recarregar:FireServer(objs[5].Value)
				objs[7].Value = objs[8].Ammo
			end
			wait(0.55)
		end;


Prompt:
--[=[
	@class ClientComm
	@client
]=]

Response:
local ClientComm = {}
ClientComm.__index = ClientComm


Prompt: --- Runs hooks matching name and returns nil for ok or a string for cancellation

Response:
function Dispatcher:RunHooks(hookName, ...)
	if not self.Registry.Hooks[hookName] then
		error(("Invalid hook name: %q"):format(hookName), 2)
	end

	for _, hook in ipairs(self.Registry.Hooks[hookName]) do
		local value = hook.callback(...)

		if value ~= nil then
			return tostring(value)
		end
	end
end

function Dispatcher:PushHistory(text)
	assert(RunService:IsClient(), "PushHistory may only be used from the client.")

	local history = self:GetHistory()

	-- Remove duplicates
	if Util.TrimString(text) == "" or text == history[#history] then
		return
	end

	history[#history + 1] = text

	TeleportService:SetTeleportSetting(HISTORY_SETTING_NAME, history)
end

function Dispatcher:GetHistory()
	assert(RunService:IsClient(), "GetHistory may only be used from the client.")

	return TeleportService:GetTeleportSetting(HISTORY_SETTING_NAME) or {}
end

return function (cmdr)
	Dispatcher.Cmdr = cmdr
	Dispatcher.Registry = cmdr.Registry

	return Dispatcher
end