refactor: strip _garage suffix from adversarial test bots

Renames PatternMover_garage → PatternMover, RandomMover_garage → RandomMover,
WaveSurfer_garage → WaveSurfer. Updates all .json, .sh, .nimble, and config.nims
files to match TR Booter naming convention (directory name = bot name).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-20 10:50:32 +02:00
parent 1eaaadf627
commit 63db0a4439
21 changed files with 0 additions and 33 deletions
@@ -0,0 +1,75 @@
# PatternMover — repeats a fixed movement sequence, head-on firing.
# Purpose: test pattern-matching gun.
import std/[math, os]
import tankroyale_botapi
const botJsonPath = currentSourcePath().parentDir / "PatternMover.json"
# Sequence: (distance, turn_deg) pairs
type Step = tuple[dist: float, turn: float]
const STEPS: array[6, Step] = [
(100.0, 0.0),
( 0.0, 45.0),
( 50.0, 0.0),
( 0.0, -90.0),
( 75.0, 0.0),
( 0.0, 30.0),
]
type PatternMover = ref object of Bot
stepIdx: int
remaining: float # distance left in current move step, or turn degrees
inTurn: bool # true while executing a turn sub-step
method onRoundStarted*(bot: PatternMover, e: RoundStartedEvent) =
setAdjustGunForBodyTurn(true)
setAdjustRadarForBodyTurn(true)
setAdjustRadarForGunTurn(true)
bot.stepIdx = 0
bot.remaining = STEPS[0].dist
bot.inTurn = false
method onScannedBot*(bot: PatternMover, e: ScannedBotEvent) =
let bearing = directionTo(getX(), getY(), e.x, e.y)
let gunDelta = normalizeRelativeAngle(bearing - getGunDirection())
setGunTurnRate(gunDelta.clamp(-MAX_GUN_TURN_RATE, MAX_GUN_TURN_RATE))
if abs(gunDelta) < 10.0 and getGunHeat() <= 0.0:
discard setFire(1.0)
proc advanceStep(bot: PatternMover) =
bot.stepIdx = (bot.stepIdx + 1) mod STEPS.len
let s = STEPS[bot.stepIdx]
if s.dist > 0.0:
bot.inTurn = false
bot.remaining = s.dist
else:
bot.inTurn = true
bot.remaining = abs(s.turn)
method run*(bot: PatternMover) =
while isRunning():
setRadarTurnRate(45.0)
if bot.inTurn:
let s = STEPS[bot.stepIdx]
let sign = if s.turn >= 0: 1.0 else: -1.0
let rate = min(bot.remaining, MAX_TURN_RATE)
setTurnRate(sign * rate)
setTargetSpeed(0.0)
bot.remaining -= rate
if bot.remaining <= 0.0:
advanceStep(bot)
else:
let rate = min(bot.remaining, 8.0)
setTargetSpeed(8.0)
setTurnRate(0.0)
bot.remaining -= rate
if bot.remaining <= 0.0:
advanceStep(bot)
go()
when isMainModule:
var bot = PatternMover()
start(bot, botJsonPath)