if game.PlaceId ~= 10834586502 then return end getgenv().ProjectileAuraConfig = getgenv().ProjectileAuraConfig or {} local Config = getgenv().ProjectileAuraConfig Config.IHATEYOUSOMUCH = Config.IHATEYOUSOMUCH or { Enabled = true, Betty = true, Warhead = true } Config.Theseshouldntbetargettedimo = Config.Theseshouldntbetargettedimo or { Enabled = true, Punishment = true, Bloodhorn = true } Config.RandomizedProjectiles = { Enabled = true, List = { ["Kunai"] = true, ["Shuriken"] = true, ["LilCesuspot"] = true } } if getgenv().ProjectileAuraLoaded then return end getgenv().ProjectileAuraLoaded = true local Workspace, RunService = game:GetService("Workspace"), game:GetService("RunService") local EnemyFolder = Workspace:WaitForChild("NPCFolders"):WaitForChild("EnemyFolder") local ProjectileFolder = Workspace:WaitForChild("Projectile") local trackedProjectiles, deletionProjectiles, projectileModes = {}, {}, {} local block, timerRemaining, isActive = nil, 0, false local function GetValidEnemies() local list = {} for _, e in ipairs(EnemyFolder:GetChildren()) do local h, r = e:FindFirstChild("Humanoid"), e:FindFirstChild("HumanoidRootPart") if h and h.Health > 0 and r and not (Config.Theseshouldntbetargettedimo.Enabled and Config.Theseshouldntbetargettedimo[e.Name]) then table.insert(list, e) end end return list end local function GetStrongestEnemy() local list = GetValidEnemies() if #list == 0 then return nil end local strongestEnemy = nil local maxHealth = -1 for _, enemy in ipairs(list) do local humanoid = enemy:FindFirstChild("Humanoid") if humanoid then local totalHealth = humanoid.MaxHealth + humanoid.Health if totalHealth > maxHealth then maxHealth = totalHealth strongestEnemy = enemy end end end return strongestEnemy or list[1] end local function GetMainTarget() if Config.IHATEYOUSOMUCH.Enabled then for _, e in ipairs(EnemyFolder:GetChildren()) do if Config.IHATEYOUSOMUCH[e.Name] and e:FindFirstChild("Humanoid") and e.Humanoid.Health > 0 then return e end end end return GetStrongestEnemy() end local function IsTracked(p) return p.Name == "Cesuspot" or p.Name == "Superball" or p.Name == "Pellet" or p.Name == "Soccerball" or p.Name == "Volleyball" or p.Name == "Basketball" or p.Name == "Brew" or p.Name == "Cola" or p.Name == "Goala" or p.Name == "Molotov" or p.Name == "Grenade" or p.Name == "LabTable" or p.Name == "Rocket" or p.Name == "BigRocket" or p.Name == "Iceball" or p.Name == "BigIceball" or p.Name == "WoodArrow" or p.Name == "Paintball" or p.Name == "BigFireball" or p.Name == "Bigfireball" or p.Name == "Fireball" or p.Name == "Duck" or p.Name == "EvilDuck" or p.Name == "CrimsonBall" or p.Name == "SorcusBlade" or p.Name == "MagicBall" or p.Name == "SorcusEgg" or p.Name == "SuperSorcusBlade" or p.Name == "BigStunpellet" or p.Name == "Stunpellet" or p.Name == "CesusBomb" or p.Name == "Bacon" or p.Name == "TumorePellet" or p.Name == "Puck" or p.Name == "NoirBiograft" or p.Name == "Noir" or p.Name == "Goobab" or p.Name == "ElectricFist" or Config.RandomizedProjectiles.List[p.Name] end local function checkDeletion(p) local d = { "GrandPiano", "LabTable", "ExplodeCannonBall", "SuperExplodeCannonBall", "Arrow", "PirateJuice", "Hyperlaser", "BiggerRocket", "Biggerrocket", "LightBomb", "EpicKunai", "EpicKatana", "RottenEgg", "Hellball", "BigHellball", "Piano", "Execnade", "BigHellBall", "HellRocket", "Hellrocket", "MisterSkull", "ZetaRocket", "Hand", "Hellhand", "HellHand", "HyperBomb", "SuperStar", "TNT", "ZombieBomb", "ElectricRock", "FreedomRocket", "Landmine", "Paintnade", "ThrowingAxe", "BigGhostwalker", "Ghostwalker", "GlowBoxingGlove", "Flashbang", "TrollPie", "TinyBomb", "SmallStar", "Rock" } for _, name in ipairs(d) do if p.Name == name then p.Anchored = true; deletionProjectiles[p] = true; return end end end local function Setup(p) p.CanCollide, p.CanTouch, p.Massless, p.Transparency = false, true, true, 1 p.AssemblyLinearVelocity = Vector3.zero end ProjectileFolder.ChildAdded:Connect(function(c) if not c:IsA("BasePart") then return end checkDeletion(c) if c.Name == "StoneFist" or c.Name == "Teapot" or c.Name == "FireTeapot" then if not block then block = Instance.new("Part", Workspace); block.Anchored, block.Transparency, block.Size, block.CFrame = true, 1, Vector3.new(6,6,6), CFrame.new(0, -0.25, 1.23) end timerRemaining, isActive = 0.8, true elseif IsTracked(c) then Setup(c); trackedProjectiles[c] = true end end) for _, v in ipairs(ProjectileFolder:GetChildren()) do if v:IsA("BasePart") then checkDeletion(v); if IsTracked(v) then Setup(v); trackedProjectiles[v] = true end end end RunService.Heartbeat:Connect(function(dt) for p in pairs(deletionProjectiles) do if p and p.Parent then p.CFrame += Vector3.new(0, -100, 0) else deletionProjectiles[p] = nil end end if isActive then timerRemaining -= dt; isActive = timerRemaining > 0 end for obj in pairs(trackedProjectiles) do if not obj or not obj.Parent then trackedProjectiles[obj] = nil; projectileModes[obj] = nil else local target = GetMainTarget() if target and target:FindFirstChild("HumanoidRootPart") then obj.CFrame = target.HumanoidRootPart.CFrame end end end end)