fertig-classic-games/data
Brian Fertig 347957bd84 TAL: smooth obstacle collision push + in-place building upgrades (upgradesFrom)
Movement & collision:
- stepSeparation (TALogic) replaces the hard "snap unit to nearest clear
  tile centre" correction with a circle-vs-blocked-tile push proportional
  to overlap, damped by separationStiffness — no more teleport-yank,
  corner-bouncing, or stalling in exact-width corridors (caught as an
  AI-vs-AI win-rate regression in testing).
- servicePathQueue now routes at a unit's exact required clearance instead
  of padding +1, so traffic spreads across all passable tiles rather than
  funneling into a few wide chokepoint corridors.
- TAArt's structure painter falls back to a generic spinning glyph for
  topperFrame buildings.

Upgrades (new rule: upgradesFrom):
- A building may be placed directly on top of a friendly building it
  names at the same tile/footprint, consuming it for a 50% refund of the
  replaced building's OWN cost (not a price discount) — implemented via
  TALogic.findUpgradeTarget and an army-aware canPlaceAt.
- New definitions: nuclearplant (upgrades energygen, frame 22) and
  advancedmassgen (upgrades massgen, frame 24).
- compileRules (TARules) validates upgradesFrom references and topperFrame;
  sprites.md documents the semantics.
- New map m06 "Annihilation" (medium, snowfields, Klaxon skill 5, seed
  90123 — pre-vetted from the original sweep for early-economy balance).

Tests (tools/verifyTotalAnnihilation.js):
- Section 4d: pathfinding routes around obstacles and a unit threads a
  corridor exactly its own width.
- Section 5b: obstacle push is a bounded per-tick nudge (not a
  teleport), settles clear without oscillation, a unit ordered past an
  obstacle arrives, and no stuck-give-up flagging.
- Upgrade suite: exact 50% refund credited in place, fresh-ground builds
  still work, enemy-owned and mismatched-type targets rejected, reverse
  nuclearplant/energygen pairing, and canPlaceAt without an army never
  grants upgrade placements.
2026-08-16 18:59:30 -06:00
..
crosswords
…
wordlists
…
advancewars-artwork.json
…
advancewars-campaign.json
…
advancewars-rules.json
…
adventure-music.json
…
arcadedark-music.json
…
balatro-artwork.json
…
blockfighter.json
…
bloxorz.json
…
bookwork.json
…
card-backs.json
…
chinese-music.json
…
civilization-artwork.json
…
civilization-rules.json
…
colorado-defense-cities.json
…
colored-playfields.json
…
dotlink.json
…
dungeonboss-artwork.json
…
hacker-music.json
…
jewelquest.json
…
jumble-riddles.json
…
jumble.json
…
katamino.json
…
masterofvega-music.json
…
mastervega-artwork.json
…
mastervega-rules.json feat(mastervega): add morale bonus system and espionage restraint diplomacy 2026-08-16 08:12:16 -06:00
music.json
…
nintendo-music.json
…
opponents.json
…
playfields.json
…
puddingmonsters.json
…
shift-artwork.json
…
slots-artwork.json
…
spireclimb-artwork.json
…
star-control-ships.json
…
superkart-artwork.json
…
superkart-racers.json
…
superkart-rules.json
…
swdbg-artwork.json
…
swdbg-cards.json
…
tetrisattack-artwork.json
…
tetrisattack-puzzles.json
…
tetrisattack.json
…
totalannihilation-artwork.json totalannihilation: add building upgrades and spinning toppers 2026-08-16 15:35:31 -06:00
totalannihilation-campaign.json TAL: smooth obstacle collision push + in-place building upgrades (upgradesFrom) 2026-08-16 18:59:30 -06:00
totalannihilation-rules.json totalannihilation: add building upgrades and spinning toppers 2026-08-16 15:35:31 -06:00
zuma-music.json
…