
Keyless

if game.PlaceId ~= 10834586502 then
return
end
getgenv().ProjectileAuraConfig = getgenv().ProjectileAuraConfig or {}
local Config = getgenv().ProjectileAuraConfig
Config.TargetMode = Config.TargetMode or 4
-- What this thing does is change the way it targets enemies, 1 for Closest, 2 for Farthest, 3 for Weakest, 4 for strongest and 5 for random
Config.IHATEYOUSOMUCH = Config.IHATEYOUSOMUCH or {
Enabled = true, -- I hate these enemies so much, but if you wanna aggro other enemies add them, or if you don't want to aggro any specific enemy at all set this to false
Betty = true,
Warhead = true
}
Config.Theseshouldntbetargettedimo = Config.Theseshouldntbetargettedimo or {
Enabled = true, -- i think that if you target bloodhorn but there is just Newell to attack the bloodhorn well its pretty much ggs, you can set this to false or add more enemies to ignore
Punishment = true,
Bloodhorn = true
}
if getgenv().ProjectileAuraLoaded then
return
end
getgenv().ProjectileAuraLoaded = true
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local NPCFolders = Workspace:WaitForChild("NPCFolders")
local EnemyFolder = NPCFolders:WaitForChild("EnemyFolder")
local ProjectileFolder = Workspace:WaitForChild("Projectile")
local block
local timerRemaining = 0
local UNFREEZE_TIMER = 0.8
local isActive = false
local frozen = {}
local trackedProjectiles = {}
local function ShouldIgnoreEnemy(Enemy)
if not Config.Theseshouldntbetargettedimo.Enabled then
return false
end
return Config.Theseshouldntbetargettedimo[Enemy.Name]
end
local function GetCharacterRoot()
local Character = LocalPlayer.Character
if not Character then
return nil
end
return Character:FindFirstChild("HumanoidRootPart")
end
local function GetAllValidEnemies()
local ValidEnemies = {}
for _, Enemy in ipairs(EnemyFolder:GetChildren()) do
if not ShouldIgnoreEnemy(Enemy) then
local Humanoid = Enemy:FindFirstChild("Humanoid")
local RootPart = Enemy:FindFirstChild("HumanoidRootPart")
if Humanoid and Humanoid.Health > 0 and RootPart then
table.insert(ValidEnemies, Enemy)
end
end
end
return ValidEnemies
end
local function GetMainTarget()
if Config.IHATEYOUSOMUCH.Enabled then
for _, Enemy in ipairs(EnemyFolder:GetChildren()) do
if Config.IHATEYOUSOMUCH[Enemy.Name] then
local Humanoid = Enemy:FindFirstChild("Humanoid")
if Humanoid and Humanoid.Health > 0 then
return Enemy
end
end
end
end
local ValidEnemies = GetAllValidEnemies()
if #ValidEnemies <= 0 then
return nil
end
local CharacterRoot = GetCharacterRoot()
if Config.TargetMode == 1 and CharacterRoot then
local ClosestEnemy = nil
local ClosestDistance = math.huge
for _, Enemy in ipairs(ValidEnemies) do
local RootPart = Enemy:FindFirstChild("HumanoidRootPart")
if RootPart then
local Distance = (CharacterRoot.Position - RootPart.Position).Magnitude
if Distance < ClosestDistance then
ClosestDistance = Distance
ClosestEnemy = Enemy
end
end
end
return ClosestEnemy
end
if Config.TargetMode == 2 and CharacterRoot then
local FarthestEnemy = nil
local FarthestDistance = -math.huge
for _, Enemy in ipairs(ValidEnemies) do
local RootPart = Enemy:FindFirstChild("HumanoidRootPart")
if RootPart then
local Distance = (CharacterRoot.Position - RootPart.Position).Magnitude
if Distance > FarthestDistance then
FarthestDistance = Distance
FarthestEnemy = Enemy
end
end
end
return FarthestEnemy
end
if Config.TargetMode == 3 then
local WeakestEnemy = nil
local LowestHealth = math.huge
for _, Enemy in ipairs(ValidEnemies) do
local Humanoid = Enemy:FindFirstChild("Humanoid")
if Humanoid and Humanoid.Health < LowestHealth then
LowestHealth = Humanoid.Health
WeakestEnemy = Enemy
end
end
return WeakestEnemy
end
if Config.TargetMode == 4 then
local StrongestEnemy = nil
local HighestHealth = -math.huge
for _, Enemy in ipairs(ValidEnemies) do
local Humanoid = Enemy:FindFirstChild("Humanoid")
if Humanoid and Humanoid.Health > HighestHealth then
HighestHealth = Humanoid.Health
StrongestEnemy = Enemy
end
end
return StrongestEnemy
end
if Config.TargetMode == 5 then
return ValidEnemies[math.random(1, #ValidEnemies)]
end
return ValidEnemies[1]
end
local function createBlock()
if block and block.Parent then return block end
block = Instance.new("Part")
block.Name = "Block of Doom"
block.Anchored = true
block.CanCollide = false
block.CanTouch = false
block.CanQuery = false
block.Transparency = 1
block.Size = Vector3.new(6, 6, 6)
block.CFrame = CFrame.new(0, -0.250244379, 1.2336266)
block.Parent = Workspace
return block
end
local function getOffset(index)
local perLayer = 5
local layer = math.floor((index - 1) / perLayer)
local pos = (index - 1) % perLayer
local angle = (pos / perLayer) * math.pi * 2
local horizontalRadius = 0.22
local x = math.cos(angle) * horizontalRadius
local z = math.sin(angle) * horizontalRadius
local y = layer * 2.5
return Vector3.new(x, y, z)
end
local function teleportAllFists()
if not block or not block.Parent then return end
for _, v in ipairs(ProjectileFolder:GetChildren()) do
if v:IsA("BasePart") and (v.Name == "StoneFist" or v.Name == "Teapot" or v.Name == "FireTeapot") then
v.CFrame = block.CFrame
v.AssemblyLinearVelocity = Vector3.zero
v.AssemblyAngularVelocity = Vector3.zero
end
end
end
local function gatherEnemies()
if not block or not block.Parent then return end
local enemies = {}
for _, npc in ipairs(EnemyFolder:GetChildren()) do
local root = npc:FindFirstChild("HumanoidRootPart")
local hum = npc:FindFirstChildOfClass("Humanoid")
if root and hum and hum.Health > 0 and not ShouldIgnoreEnemy(npc) then
table.insert(enemies, npc)
end
end
for i, npc in ipairs(enemies) do
local root = npc:FindFirstChild("HumanoidRootPart")
if not root then continue end
if not frozen[npc] then
frozen[npc] = root.CFrame
end
root.CFrame = block.CFrame * CFrame.new(getOffset(i))
root.AssemblyLinearVelocity = Vector3.zero
root.AssemblyAngularVelocity = Vector3.zero
end
end
local function keepIgnoredEnemiesAway()
if not block or not block.Parent then return end
for _, npc in ipairs(EnemyFolder:GetChildren()) do
if ShouldIgnoreEnemy(npc) then
local root = npc:FindFirstChild("HumanoidRootPart")
local hum = npc:FindFirstChild("Humanoid")
if root and hum and hum.Health > 0 then
local distToBlock = (root.Position - block.Position).Magnitude
if distToBlock < 15 then
local direction = (root.Position - block.Position).Unit
root.CFrame = CFrame.new(block.Position + direction * 20) * CFrame.fromMatrix(Vector3.new(), root.CFrame.RightVector, root.CFrame.UpVector)
end
end
end
end
end
local function releaseEnemies()
for npc, originalCFrame in pairs(frozen) do
if npc and npc.Parent then
local root = npc:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = originalCFrame
root.AssemblyLinearVelocity = Vector3.zero
root.AssemblyAngularVelocity = Vector3.zero
end
end
end
table.clear(frozen)
end
local function activate()
createBlock()
timerRemaining = UNFREEZE_TIMER
isActive = true
end
local function SetupProjectile(Projectile)
Projectile.CanCollide = false
Projectile.CanTouch = true
Projectile.Massless = true
Projectile.Transparency = 1
Projectile.AssemblyLinearVelocity = Vector3.zero
Projectile.AssemblyAngularVelocity = Vector3.zero
end
local function TeleportProjectile(Projectile, TargetRoot)
Projectile.CFrame = TargetRoot.CFrame
Projectile.AssemblyLinearVelocity = Vector3.zero
Projectile.AssemblyAngularVelocity = Vector3.zero
end
local function IsEnemyFreezeProjectile(Projectile)
return Projectile.Name == "StoneFist"
or Projectile.Name == "Teapot"
or Projectile.Name == "FireTeapot"
end
local function IsTargetOnlyProjectile(Projectile)
return Projectile.Name == "Superball"
or Projectile.Name == "Pellet"
or Projectile.Name == "Soccerball"
end
local function IsValidProjectile(Projectile)
return IsEnemyFreezeProjectile(Projectile) or IsTargetOnlyProjectile(Projectile)
end
local function resize(obj)
if obj:IsA("BasePart") then
obj.Size = Vector3.new(0.000001, 0.000001, 0.000001)
elseif obj:IsA("Model") then
for _, d in ipairs(obj:GetDescendants()) do
if d:IsA("BasePart") then
d.Size = Vector3.new(0.000001, 0.000001, 0.000001)
end
end
end
end
for _, v in ipairs(ProjectileFolder:GetChildren()) do
if v:IsA("BasePart") then
if IsEnemyFreezeProjectile(v) then
activate()
end
if IsValidProjectile(v) then
SetupProjectile(v)
if IsTargetOnlyProjectile(v) then
resize(v)
trackedProjectiles[v] = true
end
end
end
end
ProjectileFolder.ChildAdded:Connect(function(child)
if child:IsA("BasePart") then
if IsEnemyFreezeProjectile(child) then
activate()
end
if IsValidProjectile(child) then
SetupProjectile(child)
if IsTargetOnlyProjectile(child) then
resize(child)
task.wait()
trackedProjectiles[child] = true
end
end
end
end)
RunService.Heartbeat:Connect(function(dt)
if isActive then
timerRemaining -= dt
teleportAllFists()
gatherEnemies()
keepIgnoredEnemiesAway()
if timerRemaining <= 0 then
releaseEnemies()
isActive = false
timerRemaining = 0
end
end
local TargetEnemy = GetMainTarget()
if TargetEnemy then
local TargetRoot = TargetEnemy:FindFirstChild("HumanoidRootPart")
if TargetRoot then
for obj in pairs(trackedProjectiles) do
if not obj or not obj.Parent then
trackedProjectiles[obj] = nil
elseif obj:IsA("BasePart") then
TeleportProjectile(obj, TargetRoot)
end
end
end
end
end)
script.AncestryChanged:Connect(function(_, parent)
if parent == nil then
releaseEnemies()
if block and block.Parent then block:Destroy() end
table.clear(trackedProjectiles)
end
end)
Holy OP
does this still works?
It still works and there's going to be more new but I have to fix some bugs due to battle bricks having updates
@JkgYT make kill all script or inf bricks
@Gubleyyy that's patched, and INF bricks would only be client
What does this do I don’t wanna risk an data wipe
@janieadams123 it teleports the Projectiles to the strongest enemys and when it detects a enemy projectiles it teleports them underground -100Y until it des*s