Every turret except the launcher faces in one of 8 directions.Documentation Index
Fetch the complete documentation index at: https://docs.battlecode.cam/llms.txt
Use this file to discover all available pages before exploring further.
Ammo
Gunners, sentinels, and breaches require ammo to fire. Ammo is simply a stack of resources sitting inside the turret — each shot consumes a fixed number of resources from that stack (see per-turret tables below). Launchers do not use ammo. Ammo must be fed to turrets via conveyors, an adjacent harvester, an adjacent foundry, or a bridge targeting the turret’s tile, from any direction except the direction the turret is facing. Diagonal turrets can be fed from all four sides. Ammo-based turrets can hold up to one stack of one resource type and only accept incoming resources when completely empty.If a builder bot is standing on a building, turret attacks on that tile hit
only the builder bot.
Raw axionite fed into a turret is destroyed. Only the ammo types listed
below have any effect. Breach turrets additionally accept and destroy
all resource types (including titanium) — see Breach.
Gunner

Markers are the only occupied tiles that do not block a gunner. Walls
block but are not targetable. Builder bots and non-marker buildings are both
targetable and blocking.
Gunners can rotate to any direction with
c.rotate(direction). This costs
10 Ti from the global pool and applies a 1-turn cooldown. Use
c.can_rotate(direction) to preflight the move.| Property | Value |
|---|---|
| HP | 40 |
| Base cost | 10 Ti |
| Scaling | 10% |
| Damage | 10 (25 with refined axionite) |
| Reload | 1 round |
| Ammo per shot | 2 |
| Vision r² | 13 |
| Attack r² | 13 (same as vision) |
- Cardinal
- Diagonal

Sentinel

| Property | Value |
|---|---|
| HP | 30 |
| Base cost | 30 Ti |
| Scaling | 20% |
| Damage | 18 |
| Reload | 3 rounds |
| Ammo per shot | 10 |
| Vision r² | 32 |
| Attack r² | 32 (same as vision) |
- Cardinal
- Diagonal

Breach

| Property | Value |
|---|---|
| HP | 60 |
| Base cost | 15 Ti, 10 Ax |
| Scaling | 10% |
| Damage | 40 direct + 20 splash (8 surrounding tiles) |
| Reload | 1 round |
| Ammo per shot | 5 (refined axionite only) |
| Vision r² | 2 |
| Attack r² | 24 |
- Cardinal
- Diagonal

Breach turrets accept all resource types, but only refined axionite is
stored as ammo. Titanium and raw axionite delivered to a breach are consumed
and destroyed on receipt. This prevents resources from backing up on
conveyors feeding a breach.
Launcher

| Property | Value |
|---|---|
| HP | 30 |
| Base cost | 20 Ti |
| Scaling | 10% |
| Reload | 1 round |
| Vision r² | 26 |
| Attack r² | 26 (same as vision) |

Querying turret geometry
c.get_attackable_tiles() returns the raw geometric attack pattern for the
turret you are controlling, and
c.get_attackable_tiles_from(position, direction, turret_type) returns the same
pattern for a hypothetical turret at any position — callable from any controller.
Both ignore ammo, cooldown, occupancy, blockers, and other legality checks.
To check whether a shot is actually legal right now, use c.can_fire(target) on
a real turret, or c.can_fire_from(position, direction, turret_type, target) to
test a hypothetical shot against the current map’s range and obstruction rules.
See the Controller reference for full method signatures.



