Commit Graph

26 Commits

Author SHA1 Message Date
Brian Fertig 223c1fd191 Implement dynamic leader hiring costs and improved assignment UI
- Add scaling leader hire costs based on number of leaders already owned (costScalePerOwned: 0.5), making it progressively more expensive to hire multiple leaders and preventing cheap roster stockpiling
- Add leaderHireCost() function in VegaLogic.js to calculate scaled hire costs
- Add unassignLeader() function to allow removing leader assignments
- Update AI in VegaLeaders.js to use dynamic pricing when deciding to hire leaders
- Add research videos for ursaal, kkrix, and mekhan factions
- Enhance leader screen UI with:
  - Dynamic cost display reflecting current scaling
  - Fleet labeling showing ship composition and location
  - Assign/Reassign buttons with list picker for colonies (admins) and fleets (captains)
  - Unassign button for posted leaders
  - Better location display for assigned leaders
2026-08-08 14:10:32 -06:00
Brian Fertig b721b6221e feat(mastervega): expand diplomacy, trade, espionage, and map rendering
- Add full diplomacy subsystem: tiered gifts (BC payments with diminishing returns), trade agreements (passive BC income, coexists with treaties, cancelled on war), and espionage mission toggles (Off/Steal/Sabotage) in the Audience screen.
- Implement whole-galaxy diplomacy passes: border and fleet proximity tension, fleet intrusion tracking with escalating penalties and force-opened Audience complaints, and "enemy of my enemy" attitude triangulation.
- Update Audience screen UI with new action buttons, gift picker, intelligence toggle, and species-specific chat dialogue for all diplomacy events.
- Add research choice prompts for ambiguous tech frontier picks, surfaced before the turn report.
- Improve star map: Delaunay triangulation for controlled-space range darkness, staggered docked fleet markers, expanded pan slack to clear UI chrome, and zoom-aware colony info labels.
- Backward-compatible save serialization for new diplomacy fields.
- Add comprehensive test coverage for all new logic, chat completeness, and AI soak validation.
2026-08-08 13:44:14 -06:00
Brian Fertig d8d127f33a feat(mastervega): add research choice prompts, Delaunay-controlled-space corridors, and map UX improvements
- Introduce VegaResearchChoiceScreen for ambiguous tech selections: when
  a player completes research that opens a 2+ way choice rung, they're
  prompted before the turn report to pick their next technology.

- Add VegaDelaunay.js (Bowyer-Watson Delaunay triangulation) and use it
  in VegaStarMap to draw "controlled space" corridors/fills between the
  player's own colonized stars instead of a blanket radius.

- Improve star map UX: stagger docked fleet markers per-star, add
  PAN_SLACK so edge stars can be dragged out from under the side panel,
  and show colony info bars at mid-zooms with text only at near-zoom.

- Add `closable` option to modalShell so forced-choice screens can
  suppress the ✕ button.

- Export buildVideoPanel from VegaResearchScreen for reuse by the new
  choice screen.

- Update artwork JSON: rrashaa and cerebrai audience videos now use
  species-specific clips; add intro-human.mp3 and new video assets.

- Add tests for openResearchChoices and pendingResearchChoices filtering
  logic in verifyMasterOfVega.js.
2026-08-08 08:39:45 -06:00
Brian Fertig 582b9acfc7 feat(mastervega): add second branching pass with 20+ new alternate techs and fieldTechLevel
- Add 21 new alternate techs across all 6 fields (computers, construction,
  forcefields, planetology, propulsion, weapons), using icon frames 78-96
- Set research video paths for human and kestrelli species
- Expand tech sprite sheet from 8 to 10 rows to accommodate new frames
- Add fieldTechLevel() to VegaLogic: displays per-field level as highest
  known tier × 5 plus extra known techs below the frontier
- Display field level in research screen headers
- Add verification tests for 3-way branching rungs, fieldTechLevel calculations,
  and refine availability roll tests to measure unbranched rungs only
2026-08-07 22:28:13 -06:00
Brian Fertig 27aff33429 feat(mastervega): redesign research screen tech tree and add direct navigation
- Replace vertical "research ladder" list with a visual tech tree rendered as
  connected node badges showing prerequisites and branch structure
- Add `initialField` parameter to `openResearchScreen` to open on a specific
  category instead of always defaulting to the first one
- Add "View Research" shortcut button on turn report when a tech completes,
  jumping directly to that field
- Add Cerebrai species research video (research-cerebrai.mp4)
2026-08-07 21:49:03 -06:00
Brian Fertig d16e699a8d Updated videos and tweaks 2026-08-07 19:52:30 -06:00
Brian Fertig 35cc4d2446 Updates to speech and video 2026-08-07 14:03:28 -06:00
Brian Fertig c52b5c6429 feat: add colony naming system and species lore conversations
Introduce colony naming with a 50-name bank per species, shuffled
per-empire and displayed as defaults in naming prompts. Colony names
now appear across all UI layers (star map, side panel, colony view,
system view) with the astronomical designation as fallback.

Add three pure-flavor conversation topics to diplomacy: "Their People"
(neutral+), "Their Homeworld" (friendly), and "A Story" (friendly).
Each diplomacy-capable species receives unique lore-rich responses
(3 variants each) reflecting their culture, homeworld, and history.

Other changes:
- Switch ursaal videos from generic "human" assets to species-specific
- Widen diplomacy buttons to 200px; add auto-shrink for long labels
- Add ±5 population transport buttons to colony view
- Validate colonyNames (50+ entries, no duplicates)
- Enforce minimum lore variant counts in verification
2026-08-06 21:34:46 -06:00
Brian Fertig 2f99d5ce68 **Update vega ship graphics**
Updated ship artwork in assets/images/vega/ships.psd and regenerated ships.png.
2026-08-05 23:50:03 -06:00
Brian Fertig df4c1d7b02 refactor: lazy-load audience mood clips one at a time instead of pre-warming all three
Replace the eager `ensureAudienceVideos()` warm-up (which loaded all three
mood clips per species upfront) with on-demand JIT loading — only the mood
about to be shown is fetched. This saves several megabytes per species since
most conversations never cycle through all moods.

- Remove `ensureAudienceVideos()` and its call in `openAudienceScreen()`
- Load each mood clip only when `show()` is first called for that mood
- Show a letterboxed placeholder for the very first clip until the fetch lands
- Keep whatever is already on screen while a new mood loads in the background
- Add `destroy()` guard to prevent in-flight fetches from mutating a torn-down
  container when the audience screen is closed

Also ship the dedicated Kestrelli audience clips (angry, neutral, happy) to
replace the previous human fallback videos for that species.
2026-08-05 23:08:18 -06:00
Brian Fertig 7e7956d86d feat: add population transport and audience video replay
- Add Colony Transport ('poptransport') hull, dispatched directly in transit
  from a Send Population order rather than built from the queue. Shares the
  Troop Transport's hull art and uses the colony ship's commander clip.
- Implement VegaLogic sendPopulation/deliverPopulation flow: clamped to
  maxSendablePopulation (leaves 0.5 floor), creates poptransport fleet
  immediately, auto-delivers on arrival capped at destination max pop.
- Add Send Population button and overlay picker in colony view with
  destination list, ETA display, amount dial, and MAX button.
- Log populationSent/populationDelivered events in the turn report.
- Refactor VegaAudience mood visuals to play-once-and-hold-last-frame with
  a clickable replay badge, mirroring VegaColonyIntro's video contract.
- Seed human audience mood clips (angry/neutral/happy) into artwork config
  as placeholders for all diplomacy-capable species.
- Add verification tests for poptransport mechanics and video aliasing.
2026-08-05 21:11:37 -06:00
Brian Fertig 1251da186c feat(mastervega): overhaul contact system and add full-screen Audience diplomacy
- Rewrite contact detection from proximity-based (parsec-range) to
  star-scoped: empires now meet by sharing a system (colonies or fleets),
  making first-contact a visible event rather than a silent background
  check.

- Add full-screen Audience interface (VegaAudience.js) with species-specific
  mood videos (or letterboxed portrait fallbacks), a typewriter chat log,
  and contextual action buttons. Auto-opens on first contact via a queue
  system in MasterOfVegaGame.

- Add VegaChat.js with unique dialogue pools for all 9 diplomacy-capable
  species across 18+ situations (first contact, peace/alliance offers,
  war declarations, tech trades, accept/reject responses, etc.).

- Introduce held diplomacy offers: AI proposals to the human are queued
  (pendingOffers) instead of auto-resolved, with player Accept/Reject
  buttons in the Audience screen and automatic expiry after 6 turns.

- Add audienceVideos config and JIT-loading infrastructure in VegaArt.js.

- Add ship videos for kkrix and mekhan species.

- Simplify openDiplomacyScreen to a single "Seek Audience" button.

- Fix colony view to filter out 'starbase' from building display list.

- Add comprehensive verification in tools/verifyMasterOfVega.js for
  contact system, held offers, chat completeness, audience videos,
  and serialization of new state fields.

- Remove obsolete contactRange rule from mastervega-rules.json.
2026-08-05 19:59:58 -06:00
Brian Fertig 01c5957b59 Update to Vega Ship and Videos 2026-08-04 19:55:04 -06:00
Brian Fertig f9df69b09f feat(mastervega): add full-screen colony-founding vignette with on-demand video clips
Replace the turn-report "New Turn" popup row with a cinematic vignette that
plays the moment the player plants a colony: the soundtrack ducks, the world's
1920×1080 backdrop fills the screen, a 960×544 clip of this world being settled
plays in a framed window, and the founding numbers are read out underneath.

Key changes:
- Add `colonyVideos` block (15 clips, one per colonisable planet type) to
  artwork JSON; clips are fetched just-in-time via ensureColonyVideo() when a
  colony ship reaches a settleable world, keeping the set (~19 MB) out of the
  eager manifest
- Add `vega-colony-cue` audio to the eager manifest for the founding soundtrack
- Remove `colonised` from NOTABLE_TYPES and TYPE_LABEL so the event is no longer
  announced twice (once in the vignette, once in the turn report)
- Add `sourceWidth()` guard in VegaArt.js to fix a Phaser Video placeholder
  width bug exposed by the non-square 960×544 colony clips (2.5× scale issue)
- Apply `sourceWidth()` to portrait and commander video scaling paths as well
- Add depth entry `intro: 78` to VegaScreens.js for the vignette overlay
- Add section 6b to the verifier: checks manifest exclusion, key conventions,
  sourceWidth() behavior, turn-report classification, and colony stats

See build-plan trap #23 for the full sourceWidth() explanation.
2026-08-03 23:31:28 -06:00
Brian Fertig ee7a3214fd feat: add Kestrelli faction ships and update related assets
- Add ship definitions for Kestrelli faction (scout, colonyship, transport,
  frigate, destroyer, cruiser, battleship) to artwork configuration
- Update character sprite (char-kestralli.png) and video (char-kestrelli.mp4)
- Update ships sprite sheet and PSD source file
2026-08-02 19:54:07 -06:00
Brian Fertig 6a0e8bfc47 feat(master-vega): add ship assets, jungle world, and species selection flow
- Add human ship spritesheet (ships.png) and increase frame size to 192x192
- Add jungle world background texture (world-jungle-01.png)
- Add human ship animation videos (scout, frigate, destroyer, cruiser,
  battleship, transport, colony)
- Enable species card selection with required choice before starting game
- Disable "Begin" button until a species is selected
- Add title logo breathing animation and light sweep effect on landing screen
- Reposition title and start button on landing layout
2026-08-02 14:07:53 -06:00
Brian Fertig d789da4582 feat(masterofvega): add species portraits, speech, landing screen, and music
- Add video, still, and procedural three-tier portrait system for all 10 species
- Add species-specific speech clips and UI voiceover (SpeechQueue integration)
- Add landing screen with New Game / Resume / Return to Arcade buttons
- Add species detail pop-over with animated expand/collapse and auto-introduction
- Add game-specific soundtrack (masterofvega-music.json, 4 tracks)
- Add video asset type support in assetLoader and PreloadScene
- Add portraitVideos and portraitStills sections to artwork manifest
- Add verification for portraits, speech clips, and music tracks
- Update sprites.md with documentation for new assets and filenames
2026-08-02 00:04:06 -06:00
Brian Fertig 96179fe6f0 Character Portraits for Vega 2026-08-01 22:18:03 -06:00
Brian Fertig fa4ef2233b feat(peggle): overhaul 7 powers with enhanced mechanics, visuals, and audio
Add character assets (sprites/videos) and sound effects for Aiko, Blackwind,
DV-8-2303, Kage, Nadia, Nicole, and Steve.

Power overhauls:
- Extreme Ball: lasts 2 shots, cascade splits into 4 balls on 2nd bounces
- Cannonball: adds Space Blast-style explosion on green peg trigger
- Beam Up: retargets to a clear-path orange peg on return
- Overclock: lasts 2 shots, grants free ball every 6 pegs, pitch-rising hum
- Laser Sweep: follow-up sweep on random orange peg after 1s delay
- Shadow Slash: follow-up slash on random orange peg after 1s delay
- Cosmic Bloom: adds small Space Blast around green peg
- Rewind: glitch effect, portal opens targeting clear orange peg, refunds on drain

Add visual effects (shockwave rings, portal animation, glitch bars, split
particles), happy reaction dedup per ball, and comprehensive verification
tests for all new mechanics.
2026-07-12 15:29:55 -06:00
Brian Fertig 3942b0b89e Peggle Adjustments 2026-07-12 09:14:06 -06:00
Brian Fertig bb91a21c8d feat(peggle): weighted orange selection, Body Slam physics rework, and level adjustments
- Replace uniform orange peg selection with weighted sampling, favoring circle pegs over brick sections (~2:1 ratio) to keep gameplay peg-centric
- Rework Body Slam (The Smasher) power to launch at 0.7× speed with reduced gravity, aligning physics with updated power documentation
- Adjust orange/green peg counts for levels 26, 27, 30, and 32 to fine-tune difficulty
- Add Maurice character assets (PNG & MP4)
- Clean up redundant portrait emotion triggers and add verification tests for weighted sampling and slam ball behavior
2026-07-12 00:42:13 -06:00
Brian Fertig 733406a2a5 Added a bunch more levels 2026-07-11 23:36:01 -06:00
Brian Fertig cb5c2ec5fe Rename Video 2026-07-11 17:39:56 -06:00
Brian Fertig 51199534a6 More powers and videos 2026-07-11 17:22:40 -06:00
Brian Fertig fba1f0c53d feat(peggle): expand to 25 levels with friend intros and redesigned level select
Expand Peggle from 5 to 25 levels (5 per friend) with unique shapes and
progressive difficulty. Each friend block (Ethel, Kona, Zanthor, Fireball,
Victor) gets distinct names, backgrounds, and level layouts.

- Redesign level select: one row per friend showing portrait, name, power,
  and their 5 level tiles
- Add friend intro screens: video (or portrait fallback), bio, and power
  explainer before each friend's first level
- Intros skip on replay/try-again; input hold prevents accidental cannon
  launches after UI clicks
- Add intro videos for Ethel and Kona; document the video system
- Update level generator with `pentagram()` helper and 5 variants per friend
- Verify block integrity, intro markers (1,6,11,16,21), and level name uniqueness
2026-07-11 16:42:44 -06:00
Brian Fertig 52c78ae86a Major Port 2026-06-28 19:27:29 -06:00