fertig-classic-games/tools
Brian Fertig 6a24ccd137 feat(mastervega): add advisor recommendation system with lazy diplomacy music loading
Introduce an advisor recommendation system that suggests colony focus
(improvement, research, fleet, growth, trade, defense) and allocation
slider presets (growth, production, military, research, default) for
each colony. Recommendations are computed by pure heuristics that
consider population levels, factory utilization, empire-wide fleet
strength, war status, and building availability.

UI changes:
- Colony Focus and Allocation Focus flyouts display "YOUR ADVISORS
  RECOMMEND" banners with explanatory text and pulsing arrow indicators
  pointing at the recommended row.
- Selecting a recommendation arms quiet-period tracking (15 turns) so
  advisors don't nag immediately after the player makes a choice.
- `checkAdvisorRecommendations` fires once-a-turn `advisorRecommendation`
  events when current settings diverge from live recommendations. Events
  use dedup markers (`focusNotifiedValue`, `allocNotifiedKey`) that clear
  on match, ensuring a persisting mismatch doesn't repeat every turn but
  a later divergence is reported fresh.
- Turn report screen gains an "Advisor Recommendation" event type with a
  "View Colony" shortcut button.

Performance change:
- Stop eager-loading `diplomacy.bySpecies` music tracks in
  `assetManifest.js`. A playthrough may contact only a handful of the
  nine species, so pre-fetching all nine at room entry wastes bandwidth.
  `VegaMusic`'s own `new Audio()` at `setDiplomacy()` time is the actual
  fetch — this manifest was only ever a race to get there first.

Logic changes:
- Extract shared building-ID lists and a `firstEligibleBuildingId` helper
  to eliminate duplication between auto-queue pickers and the recommendation
  heuristics.
- Add `advisor` tracking object to every colony (with migration in
  `deserialize`).
2026-08-08 22:07:51 -06:00
..
data
lib feat(totalannihilation): add flight animation and factory production dials 2026-08-01 09:41:03 -06:00
bloxorzMap.js
buildCommonWords.js
fetchStarControlAssets.js
genBloxorz.js
genDotLink.js
genExcitebikeTracks.js
genGooTower.js
genJumble.js
genKatamino.js
genMiniCrossword.js
genPeggleLevels.js
genPuddingMonsters.js
genRushHour.js
genSpireClimbCreatures.js
genSuperKartTracks.js
genTACampaign.js feat(totalannihilation): overhaul flight model to strafing behavior 2026-08-01 13:15:58 -06:00
genTetrisAttackPuzzles.js
genZuma.js
readExcitebikeMaps.js
verifyAdvanceWars.js
verifyBalatro.js
verifyBejeweled.js
verifyBlockFighter.js
verifyBloxorz.js
verifyBookwork.js
verifyCanasta.js
verifyCivilization.js feat: add barbarian raiders system with warlord ransoms 2026-08-01 18:18:36 -06:00
verifyColoradoDefense.js
verifyCribbage.js
verifyDotLink.js
verifyDungeonBoss.js
verifyExcitebike.js feat(excitebike): add cool-zone speed boost and cooldown feedback 2026-08-01 15:44:17 -06:00
verifyGinRummy.js
verifyGooTower.js
verifyJewelQuest.js
verifyJumble.js
verifyMahjong.js
verifyMahjongMatch.js
verifyMasterOfVega.js feat(mastervega): add advisor recommendation system with lazy diplomacy music loading 2026-08-08 22:07:51 -06:00
verifyMiniMotorways.js
verifyPaiGowPoker.js
verifyPeggle.js
verifyPuddingMonsters.js
verifyRisk.js
verifyRummikub.js
verifyRushHour.js
verifySWDBG.js
verifySlots.js
verifySpireClimb.js
verifyStarControl.js
verifySuperKart.js
verifyTempest.js
verifyTetrisAttack.js
verifyTotalAnnihilation.js feat: add radar detection system with jamming and contacts 2026-08-01 14:51:05 -06:00
verifyZuma.js