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 feat(master-vega): overhaul bombard/invasion UX, consequences, and battle logic 2026-08-14 23:17:31 -06:00
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