BasilBot -- SSCAIT / BASIL submission
====================================

Race:    ZERG
Author:  Max Parker (KriptSkitty)
Type:    Java (JBWAPI 2.2.0), runnable JAR, Java 8 bytecode (class major 52)
BWAPI:   4.4.0  (BWAPI.dll md5 cf7a19fe79fad87f88177c6e327eaedc)

WHAT IT PLAYS
-------------
A 4-Pool all-in Zergling rush. No gas, Spawning Pool at 4 Drones, one Drone
replaced, then every larva becomes Zerglings for the rest of the game. The army
attacks at 6 Zerglings and does not regroup.

Combat uses a squad-level "surround": the whole pack commits to ONE target and
encircles it, rather than each unit picking its own. Measured, that ordering
matters more than the individual policies -- per-unit priority targeting scored
WORSE than no micro at all (45% vs 70%), because it spreads a six-Zergling rush
across six victims; concentration plus encircling scored 85%.

Measured against the built-in AI on (2)Benzene, 20 games each:
  vs Terran   100%  (20/20, 95% CI 84-100%)
  vs Zerg     100%  (20/20, 95% CI 84-100%)
  vs Protoss   85%  (17/20, 95% CI 64-95%)
  overall      95%  (57/60)

HOW IT IS BUILT
---------------
BasilBot is an ENGINE rather than a hardcoded strategy. It provides:
  - per-unit behaviours re-evaluated at 24fps (roles, patrol/guard/raid, and
    combat policies: focus fire with attacker caps, staging, kiting, surround)
  - an ordered build queue, standing production targets, and "someone build here"
    tasks assigned to the least-busy worker
  - race-agnostic mechanics via a RaceKit adapter (larva-morph vs train, supply
    as unit vs building, add-ons, Pylon power, static defence and its tech gates)

The strategy is a SCRIPT of commands interpreted by that engine -- the same
commands a human operator can issue -- with triggers such as
"when have pool -> keep ling 99" and "when have ling >= 6 -> attack".
The script for our race is bundled inside the jar at /scripts/zerg-default.txt,
so the bot is fully autonomous with no command line arguments.

LADDER BEHAVIOUR
----------------
  - Prints NOTHING to stdout. Console output is opt-in via -Dbasilbot.verbose=true
    and is used only by the local test harness.
  - Performs NO file I/O. The operator bridge is opt-in via -Dbasilbot.liveDir.
  - Uses no cheats or flags. The practice-range mode (-Dbasilbot.sandbox) is off
    by default and is never enabled in a submitted build.

THIRD-PARTY CODE
----------------
  - JBWAPI (github.com/JavaBWAPI/JBWAPI), the Java BWAPI binding.
  - BWEM (bundled with JBWAPI) for map/base analysis only.
No code is derived from another bot.
