
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)
I figured it out before this script came along, and I copied another script and used Gemini to do it, and it worked
I got banned for 6 months by Roblox, so now I only use clone accounts and grind until I get Conjuror.
Gemini can't do it from scratch, so I had to copy the script for Gemini to use, and I copied it from randomuser42.
It will hit all enemies if that enemy can take damage from the unit.
I have all units expect blud and friend
can you make rocks not target punishment in 3 star reinbo if possible
@hhhhhhhjwj2o2i3 Yes, we can wait for AbsolutelyNoIdea to fix it.
@hhhhhhhjwj2o2i3 Right now im trying to make it ACTUALLY hit all enemies but sure i could try that too.
@AbsolutelyNoIdea ok ty
@AbsolutelyNoIdea Take your time man. Your already awesome :3
Now you're the only one still working on the tbb script; everyone else is either not working or not online.
do you have discord?
Not to bother but how is it customizable? Great script though
It only works sometimes, and if there are many slingers, it will still hit.
@tgddgu3 It works only if the enemies are far enough so for It to work decently you need to meatshield
@AbsolutelyNoIdea I don't know, but Soccer Battler and Slinger don't deal enough damage, so they're actually useless in many stages because you rarely bring both and they can ruin some guide.
Can you make add Grenade Battler + Arson Battler mod
does anyone have a script that makes 2 star unknwon obrjcst easier
@Hwbeifon4b no have
This doesn't work anymore, well on conjuror
Can someone make a 2/3 stars Chronos math solver?
Chapter 5 update has patch some script
This script can make some enemies can't damage my battler