Conjuror, Newell, dodgeball, slingshot and soccer mod.
Key Required

Conjuror, Newell, dodgeball, slingshot and soccer mod.

The Battle BricksAbsolutelyNoIdeaAbsolutelyNoIdea 4.1K views 1.3K executesUpdated May 22, 2026
5.0/ 5(3 votes)
30100% Positive
Lua Script•371 lines (11431 chars)
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)

Features & Information

So, this script makes the enemies teleport to the middle and teleports the projectiles there, its customizable so you can make It ignore specific enemies Please read this, this script was not tested since i am banned from the battle bricks.
#TBB

Community Comments (23)

AbcdjxkxAbcdjxkxMay 23, 2026

I figured it out before this script came along, and I copied another script and used Gemini to do it, and it worked

Replying to @Abcdjxkx
AbcdjxkxAbcdjxkxMay 23, 2026

I got banned for 6 months by Roblox, so now I only use clone accounts and grind until I get Conjuror.

AbcdjxkxAbcdjxkxMay 23, 2026

Gemini can't do it from scratch, so I had to copy the script for Gemini to use, and I copied it from randomuser42.

AbcdjxkxAbcdjxkxMay 23, 2026

It will hit all enemies if that enemy can take damage from the unit.

hhhhhhhjwj2o2i3hhhhhhhjwj2o2i3May 23, 2026

I have all units expect blud and friend

hhhhhhhjwj2o2i3hhhhhhhjwj2o2i3May 23, 2026

can you make rocks not target punishment in 3 star reinbo if possible

Replying to @hhhhhhhjwj2o2i3
tgddgu3tgddgu3May 23, 2026

@hhhhhhhjwj2o2i3 Yes, we can wait for AbsolutelyNoIdea to fix it.

Replying to @hhhhhhhjwj2o2i3
AbsolutelyNoIdeaAbsolutelyNoIdeaMay 23, 2026

@hhhhhhhjwj2o2i3 Right now im trying to make it ACTUALLY hit all enemies but sure i could try that too.

Replying to @AbsolutelyNoIdea
hhhhhhhjwj2o2i3hhhhhhhjwj2o2i3May 23, 2026

@AbsolutelyNoIdea ok ty

Replying to @AbsolutelyNoIdea
Foxxy_Foxxy_May 24, 2026

@AbsolutelyNoIdea Take your time man. Your already awesome :3

Replying to @AbsolutelyNoIdea
tgddgu3tgddgu3May 24, 2026

Now you're the only one still working on the tbb script; everyone else is either not working or not online.

awesomedude312awesomedude312May 24, 2026

do you have discord?

Random_BludRandom_BludMay 26, 2026

Not to bother but how is it customizable? Great script though

tgddgu3tgddgu3May 31, 2026

It only works sometimes, and if there are many slingers, it will still hit.

Replying to @tgddgu3
AbsolutelyNoIdeaAbsolutelyNoIdeaMay 31, 2026

@tgddgu3 It works only if the enemies are far enough so for It to work decently you need to meatshield

Replying to @AbsolutelyNoIdea
tgddgu3tgddgu3May 31, 2026

@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.

haitrieuluckyvuihaitrieuluckyvuiJun 2, 2026

Can you make add Grenade Battler + Arson Battler mod

Hwbeifon4bHwbeifon4bJun 13, 2026

does anyone have a script that makes 2 star unknwon obrjcst easier

Replying to @Hwbeifon4b
tgddgu3tgddgu3Jun 16, 2026

@Hwbeifon4b no have

BraindeadOnMyHeadBraindeadOnMyHeadJun 20, 2026

This doesn't work anymore, well on conjuror

IeatbricksforlunchIeatbricksforlunchJun 20, 2026

Can someone make a 2/3 stars Chronos math solver?

tgddgu3tgddgu3Jun 21, 2026(edited)

Chapter 5 update has patch some script

Noob_in_forsakenNoob_in_forsakenJun 25, 2026

This script can make some enemies can't damage my battler

More Scripts for The Battle Bricks