- Introduces `winType` field to track victory conditions (commander/depletion/overwhelm)
- Implements `_overwhelmCheck()` logic to detect when one side exhausts all resources while the other retains combat capability
- Adds `_animateOverwhelm()` sequence: banner, rally, strikes, HP drain, and commander defeat with shake/flash/particle effects
- Updates `BattleResultScene` to show "VICTORY BY OVERWHELM!" / "OVERWHELMED" titles and annotate report accordingly
- Introduces `winType` field to track victory conditions (commander/depletion/overwhelm)
- Implements `_overwhelmCheck()` logic to detect when one side exhausts all resources while the other retains combat capability
- Adds `_animateOverwhelm()` sequence: banner, rally, strikes, HP drain, and commander defeat with shake/flash/particle effects
- Updates `BattleResultScene` to show "VICTORY BY OVERWHELM!" / "OVERWHELMED" titles and annotate report accordingly
- Adjusted skill effect values (strike, pierce, counter, heal, etc.) to be ~20-50% higher per rarity/level
- Updated unit attack/health stats for several cards (e.g., Hive Queen, Carapace units) to match new power curve
- Improved draft UX in alternating mode by auto-scrolling to current section and caching section positions for smoother tween-based navigation
- Doubled base strike/hack/fortify/protect/counter/heal values across enemy cards to increase challenge
- Applied exponential scaling (×2, ×3, ×4) for higher-tier enemies and boss variants
- Fixed Unicode em-dash in bloodlord flavor text
- Add 'smite' damage-over-time skill with single/all-target support and animation
- Rename 'enfeeble' to 'hive_link' on xeno cards; add persistent ATK gain on death
- Replace some enfeeble instances with new 'wound' skill (applied on_attack)
- Adjust cleanse trigger from preBattle to postBattle, reduce values
- Rebalance overcharge/fortify/heal/smite skill distributions across factions
- Update all card flavor texts for thematic consistency and personality
- Fix wound badge positioning and origin in CardObject display
- Speed up strike/smite animations (2000→500ms, 500→250ms, etc.)
- Add smiteFires to pre-battle event flow with restore/reapply logic
- Replace enfeeble skill with wound (value adjusted per card) across multiple enemy cards in data/cards.json
- Add venom preBattle skill to several enemy cards (3/6/12 stacks)
- Add burrow all: true skill to multiple enemy cards (1–3 turns)
- Add cleanse and hive_link skills to hive-related enemies with postBattle trigger
- In CombatEngine.js: implement _applyCommanderBurrowBonus for deploying/spawned cards
- Implement commander hive_link all: boost surviving allies' ATK when any card dies
- In SkillProcessor.js: update all all-targeting skills (strike, pierce, mortar, jam, weaken) to skip targets with burrowTurns > 0
- Add venom skill support with stack handling and prevStacks tracking for display restoration
- In BattleScene.js: extend preBattle event handling to include venomFires; fix hive_link deadCardId resolution
- Replace budget-based drafting with structured rarity-phase progression (legendary→epic→rare→common)
- Add phase tracking (`currentPhaseRarity`, `playerRemainingPicks`, `aiRemainingPicks`)
- Update card pool generation to respect target counts per rarity
- Refactor UI to show per-rarity pick progress instead of budget bars
- Adjust AI draft logic to prioritize current phase rarity and fallback safely
- Rename "Difficulty" selector to "Deck Strength" with clearer labels (Beginner/Medium/Advanced/Legendary)
- Apply consistent wound stacking calculation across all targets (including commander)
- Enforce skill.value as upper bound for wounds applied, accounting for existing wound stacks
- Prevent negative or zero wound applications by early-returning when toApply <= 0
- Add hpBefore/hpAfter fields to woundTick/venomTick/smiteTick events for accurate damage tracking
- Introduce CardObject.refreshStatsOnly() to update ATK/ARM/DLY/skills without touching HP or badges
- Refactor BattleScene._refreshCardAfterAttack() and related methods to use refreshStatsOnly()
instead of full refresh, preserving HP animations and badge timing
- Update animateHPLoss calls to pass hpBefore/hpAfter for precise progress tracking
- Fix berserk animation to correctly rewind before animating ATK gain
- Remove redundant commander HP bar updates during attacks (handled by preAttack skills)
- Add _restoreSiegeFiresForDisplay/_reapplySiegeFires to temporarily undo siege damage for display
This change separates stat updates from HP management, ensuring animations and UI remain
consistent with the combat engine's state transitions.
- Add alternating draft where player and AI take turns picking commander then cards
- Implement shared card pool tracking with "taken" state overlays in card grid
- Introduce dual-deck panel showing both sides' budgets, commanders, and card lists
- Refactor AI draft logic into state machine with `_playerPick`, `_aiPickCommander`, and `_aiPickOneCard`
- Add status banner indicating whose turn it is, with pulsing animation on AI turns
- Adjust card skill values in `cards.json` (e.g., rally: 3→4, heal upgrades, strike boosts)
- Pass `refresh` flag (default `true`) to `_buildPanel` calls for both player and opponent panels
- Skip `_refreshPanelHighlights()` call within `_buildPanel` when `refresh=false`
- Call `_refreshPanelHighlights()` once after building both panels to avoid redundant updates
- Added `skirmish_decks.json` with 8 premade decks across difficulty levels (Easy to Legendary)
- Implemented `SkirmishDeckSelectScene` for choosing player/opponent decks (draft or premade)
- Implemented `SkirmishDraftScene` with interactive card drafting, budget system, and AI opponent deck generation
- Updated `BattleScene` to support skirmish mode with custom decks and gold rewards (200/400)
- Updated `BattleResultScene` to return players to SkirmishSetup for quick replay
- Integrated new scenes into game flow via config and BootScene data loading
- Added DECK_BUILDER_INTRO (7) and COLLECTION_INTRO (8) stages to TutorialManager.STAGES
- Implemented 3-phase Deck Builder tutorial in DeckBuilderScene with dimming overlays, pulsing arrows, and step-by-step guidance for deck management
- Added full-screen tutorial flow in MainMenuScene for both Deck Builder intro (with interactive button override) and Collection intro (highlighting save/restore buttons)
- Integrated tutorial progression logic to advance users through remaining stages after Fusion Intro
- Extended TutorialManager to support new stages 5–6 and added hasFusibleCards() helper
- Integrated Store tutorial in MainMenuScene (triggered when gold > 400, redirects to Store)
- Added full interactive tutorial overlay in StoreScene highlighting imperial pack purchase flow
- Implemented Fusion Scene’s two-phase tutorial: phase 1 highlights fusible stacks with pulsing borders/arrows; phase 2 exposes forge video, preview, and Fuse button with instructions
- Updated BattleResultScene to redirect to Main Menu if gold > 400 and store tutorial incomplete, allowing Store scene to show its own tutorial next
- Completed stage 6 when player clicks Fuse button in FusionScene
- Add new BattleResultScene to handle post-battle victory/defeat sequence
- Include animated terminal-style debrief with stats, rating, and card/commander unlocks
- Support dynamic commander videos (victory/defeated) with fallback placeholders
- Implement gold counter animation and card reveal system with rarity effects
- Add victory/defeat music assets and integrate into result flow
BattleScene changes:
- Track all battle events across turns for detailed post-battle stats
- Transition to BattleResultScene instead of showing inline results
- Preserve save logic (gold, cards, unlocks) in result scene transition
BootScene changes:
- Load victory/defeat music assets for result scene playback
- Skip delay tick for AI cards just deployed in opponent-first turns to prevent unfair free activation
- Group consecutive "strike all" pre-battle fires to execute them in parallel, matching player card behavior
- Add new mission briefing videos (mission_030 through mission_037)
- Balance card stats: reduce fortify values, increase strike damage and armor values across multiple cards
- Adjust heal values for support units
- Significantly reduce gold rewards for missions 030–036 (from ~2800–3400 to 800), with mission 037 reward set to 1600
- Extend video preload loop in CampaignScene.js to include new mission videos
- Update applyWound/applyVenom/applySmite to include commanders in target lists
- Add 'wound' skill support for commanders with 'on_attack' trigger during preBattle
- Implement wound stack capping for commanders (max = skill.value)
- Extend preBattle event structure with woundFires array
- Add animation and state restoration logic for preBattle wound applications
This enables commander cards to apply wound stacks before combat begins, with proper
stack limits and UI feedback.
- Add permanent +1 baseArmor bonus on each molt to enable compound armor growth across multiple molts
- Track molt activation with _moltZeroed flag to ensure armor restoration only occurs after a molt event
- Extend protect/fortify skills to also boost baseArmor when applied after a molt (to preserve interim boosts)
- Update card venom values for progressive difficulty curve
- Adjust mission rewards and replace bt_hemomancer_1 with bt_hemorrhage_1 in reward pool
- Add 23 new mission briefing videos (mission_001 through mission_023)
This refines the molt mechanic to support long-term armor progression while maintaining balance across campaigns.
- Add binary assets: `assets/video/mission_001.mp4` through `mission_005.mp4`
- Update `CampaignScene.preload()` to dynamically load all mission videos
- Modify briefing display logic to show the loaded video when available, hiding offline/file placeholders
- **UI Overhaul**: Replaced static backgrounds with animated video loops and scanline overlays in `CampaignScene` and `CampaignSelectScene`.
- **Terminal Interface**: Implemented a "Tactical Operations Terminal" in the campaign mission view featuring amber CRT styling, typing text effects, vignettes, and flicker animations.
- **Mission Briefing**: Added interactive mission selection that renders detailed briefings, lore, and reward manifests within the terminal interface.
- **Balance Changes**: Doubled the values for `siege`, `mortar`, `venom`, and `smite` skills in `data/cards.json` across all tiers.
- **Tutorial Updates**: Adjusted tutorial overlays and positioning to match the new layout and UI elements.
Adds a multi-stage tutorial system to guide new players through the core game mechanics:
- **Save System**: Bumps save version to 3 and adds `tutorialProgress` tracking with migration logic for existing saves.
- **MainMenuScene**: Introduces Stage 1 (Campaign Intro) overlay directing users to start the campaign.
- **CampaignSelectScene**: Adds Stage 2 overlay highlighting the "Raider Uprising" campaign selection.
- **CampaignScene**: Adds Stage 3 overlay explaining mission selection within a campaign.
- **BattleScene**: Implements Stages 4 & 5:
- **Battle Intro**: Step-by-step walkthrough of Commander cards, explaining ATK, ARM, HP, DLY, and Skills.
- **Battlefield Guide**: Visual explanation of the 4-lane system, card combat mechanics, unblocked attacks, and the "Next Turn" flow.
All tutorial overlays include interactive "Continue" or direct-action buttons, animated indicators, and depth management to prevent interaction with the underlying game state until the tutorial step is complete.
- Introduce `IntroScene` to play `assets/video/intro.mp4` before the main menu
- Implement dynamic video scaling to fit screen dimensions
- Add skip prompt (Space/Click) that appears after first interaction
- Move main menu music initialization to `MainMenuScene` for proper lifecycle management
- Update scene flow: `BootScene` → `IntroScene` → `MainMenuScene`
- Include fallback handling for video errors and metadata loading
Updated the `health` attribute for multiple card entries in `data/cards.json` by multiplying the existing values by 2. This change affects various tiers and variants across the dataset, likely to rebalance durability or reflect a new scaling requirement.
Changes include:
- Adjusted health for cards previously at 57, 62, 68, 85, 88, 93, 102, 127, 132, 139, 140, 152, and other values.
- All modified entries now have doubled health while retaining original attack, armor, delay, and skill configurations.
bump skill values and rename 'siege' to 'jam' in cards.json
Updated strike, weaken, and siege skill values across multiple cards to
reflect new balance adjustments. Renamed the 'siege' skill to 'jam' in
several entries while also increasing its associated values.
Changes include:
- Increased 'strike' values in preAttack triggers for various cards.
- Increased 'weaken' values in preBattle triggers.
- Renamed 'siege' to 'jam' and adjusted values in preBattle triggers.
- Updated base attack stats for affected cards.
```
Updated the skill sets for multiple cards to replace the "bloodrage" and "rupture"
abilities with "enfeeble" and "weaken". The new skills are configured to trigger
"preBattle" and apply to "all" targets, adjusting their values accordingly.
- **DeckBuilderScene**:
- Introduced `hasUnsavedChanges` state to track modifications.
- Added visual indicators: an "Unsaved Changes" badge in the deck panel and dynamic styling for the Save button.
- Implemented a confirmation modal when attempting to leave the scene with unsaved changes.
- Fixed scroll position restoration after re-rendering the card grid.
- **Data (cards.json)**:
- Rebalanced Vampire cards by swapping `drain` and `rupture` values (reduced drain, increased rupture).
- Increased `rupture` values across higher-tier vampire cards (3, 6, 10, 15) to enhance their late-game scaling.
- Updated `data/cards.json` to rename the `valor` skill to `legion`, change its trigger to `preBattle`, and adjust `strike` values across multiple card tiers.
- Reduced the `enfeeble` skill value from 3 to 1 in `data/cards.json`.
- Enhanced `weaken` skill tracking in `CombatEngine.js` and `SkillProcessor.js` by adding an `isAll` flag to distinguish area-of-effect weaken effects.
- Refactored `BattleScene.js` to group consecutive "all" weaken fires and animate them in parallel via a new `_animateWeakenFireAll` method, improving visual feedback and performance for multi-target weaken effects.
Adds `_resultShown` property to `BattleScene` constructor, initializing it to `false`. This flag tracks whether the battle result has been displayed and is reset when a new mission begins.
- Extend `CombatEngine._resolvePreBattleSkills` to capture `strike` and `strike-all` skills from commanders during the `preBattle` phase.
- Introduce `strikeFires` to track strike hits, including damage, targets, and commander status.
- Update `BattleScene._processPreBattleSequence` to handle and animate `strikeFires` alongside other pre-battle effects.
- Ensure death events are correctly processed for non-commander targets destroyed by pre-battle strikes.
- Added new audio files for store interactions: `buy.mp3`, `card.mp3`, and `card-bonus.mp3`.
- Updated `BootScene` to preload the new sound effects.
- Implemented sound triggers in `StoreScene`:
- Plays `sfx_store_buy` upon purchasing cards.
- Plays `sfx_store_card` when revealing a card.
- Plays `sfx_store_card_bonus` for rare, epic, and legendary cards.
- Rebalanced `data/cards.json` to adjust game mechanics:
- Set `attack` to `0` for all legendary card levels.
- Reduced `health` values across all card tiers.
- Standardized `delay` values to `0` or `1` for most cards, removing high delay values.
Adds two new legendary commanders: "Blood Sovereign" (bt_cmd_2) and "The Hemorrharch" (bt_cmd_3).
Introduces six new cards:
- Common: Bloodsucker (bt_bloodsucker_1)
- Epic: Hemorrhage (bt_hemorrhage_1)
- Rare: Crimson Stalker (bt_crimson_stalker_1)
- Legendary: Crimson Fury (bt_crimson_fury_1), Blood Martyr (bt_blood_martyr_1), Sanguine Bastion (bt_sanguine_bastion_1)
Updates `data/missions.json` to integrate new commanders and cards into opponent rosters for missions 006 through 013, replacing placeholder or previous units to reflect the expanded faction lineup. Includes corresponding card art assets.
- Added two new legendary Raider commanders: Warboss Kragath (Weaken + Strike) and Scar-Queen Vex (Enfeeble + Rupture).
- Introduced new Raider units across all rarities: Brute, Cutpurse, Berserker, Cutthroat, Marauder, Scavenger, Defiler, Warlord, Reaver, Warband Breaker, Carnage, Overlord, Ravager, Iron Destroyer, and Skulltaker.
- Implemented full Rupture mechanics:
- Added `ruptureStacks` tracking and pre-battle damage phase that can kill units.
- New `rupture` skill logic with single-target and `all` variants, including burrow immunity.
- Visuals: rupture stack badge on cards, knife throw animations for application, and pulsing heart effect for tick damage.
- Audio: new SFX for rupture cast and damage.
- Implemented Weaken mechanics:
- Reduces target Armor and Attack (split 50/50) with clamping to non-negative values.
- Added `weakenFires` event tracking and pre-battle animation with stat reduction visuals.
- Audio: new SFX for weaken cast.
- Updated missions to feature new commanders and units, and increased gold rewards.
- Updated `attacks.png` and `attacks.psd` spritesheets with new effect frames (knife, heart).
- Updated `data/cards.json` and `data/missions.json` with new entries and rebalanced values.
- Increased gold rewards for several Imperial missions to improve progression pacing.
- Reformatted `missions.json` for consistency (multi-line arrays).
- Set default starting gold to 300 in `SaveManager`.
- Implemented first-clear-only card rewards in `BattleScene`; subsequent wins grant gold but no duplicate cards.
- Added consolation gold (50% of mission reward) on defeat.
- Fixed `CollectionScene` input priority and improved terminal typing speed and line wrapping.
- Increased gold rewards for several Imperial missions to improve progression pacing.
- Reformatted `missions.json` for consistency (multi-line arrays).
- Set default starting gold to 300 in `SaveManager`.
- Implemented first-clear-only card rewards in `BattleScene`; subsequent wins grant gold but no duplicate cards.
- Added consolation gold (50% of mission reward) on defeat.
- Fixed `CollectionScene` input priority and improved terminal typing speed and line wrapping.
- Added 5 new Imperial cards: Imperial Medic, Imperial Legionnaire, Signal Jammer, Valor Knight, and Imperial Warbanner with unique skills (heal, legion, jam, valor, strike).
- Updated CollectionScene to include a level filter (Lv 1–5) allowing users to preview card stats at different levels.
- Modified card rendering and terminal output to reflect the selected level dynamically.
- Adjusted grid padding to accommodate the new level filter buttons.
- Normalize whitespace and alignment in `src/combat/CombatEngine.js` (variable assignments and filter calls).
- Extend projectile tween duration in `src/scenes/BattleScene.js` from 350ms to 2000ms for smoother visual effect.
- Adjust sprite pulse animation scale range from 0.8–1.5 to 0.5–1.0 for a more subtle effect.
- Update binary assets: new `smite2.mp3`, modified `fortify.mp3` and `smite-cast.mp3`, updated `attacks.png` and `attacks.psd`, removed duplicate `attacks (1).png`.
- Updated `SkillProcessor` to allow copying of `preBattle` and `on_attack` triggered skills in addition to `preAttack`, broadening the scope of the `hack` skill.
- Fixed the `_animateDrainFire` call in `BattleScene` to pass the `fire.source` (attacker) as the first argument, ensuring the animation has access to the correct source entity.