Commit Graph

75 Commits

Author SHA1 Message Date
Brian Fertig 3da9d5c527 feat: overhaul campaign UI with CRT terminal aesthetic and balance skills
- **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.
2026-03-26 21:31:51 -06:00
Brian Fertig 5a67484240 feat: implement comprehensive battle and campaign tutorial system
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.
2026-03-25 22:06:04 -06:00
Brian Fertig 4eb4d7f278 Add IntroScene with video playback and skip functionality
- 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
2026-03-25 20:47:18 -06:00
Brian Fertig 12adbe60bf feat: double health values for specific card variants
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.
2026-03-25 20:26:00 -06:00
Brian Fertig 662147cdfb bump mission gold rewards and hive_link values; unlock all faction commanders on first campaign clear; enhance Fusion Lab UI 2026-03-25 19:32:50 -06:00
Brian Fertig b336f60197 ```text
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.
```
2026-03-25 17:52:49 -06:00
Brian Fertig 0dfe54d547 refactor(cards): replace bloodrage/rupture with enfeeble/weaken skills
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.
2026-03-24 23:23:13 -06:00
Brian Fertig e731b87e9d Changes to combat and cards 2026-03-24 20:55:08 -06:00
Brian Fertig d17379ca57 feat(deckbuilder): add unsaved changes warning and rebalance vampire cards
- **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.
2026-03-24 19:30:35 -06:00
Brian Fertig 52808806a8 feat(combat): rename "valor" to "legion" and add parallel "all" weaken animation
- 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.
2026-03-24 18:46:16 -06:00
Brian Fertig b2c55d903a chore(battle): initialize result state flag in BattleScene
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.
2026-03-24 18:05:53 -06:00
Brian Fertig 547196f709 feat(combat): Add pre-battle strike resolution for commanders
- 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.
2026-03-23 22:54:39 -06:00
Brian Fertig 313f14b956 Changes 2026-03-23 22:31:50 -06:00
Brian Fertig eabf10ca4a feat: add store audio effects and rebalance card stats
- 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.
2026-03-23 18:50:22 -06:00
Brian Fertig 6c8b236e86 feat(bloodthirsty): add new commanders, cards, and update mission rosters
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.
2026-03-22 19:22:06 -06:00
Brian Fertig 480f1ce354 feat: add new Raider commanders, units, and Rupture/Weaken skill systems
- 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.
2026-03-22 17:51:06 -06:00
Brian Fertig 739cf18603 bump mission rewards and add first-clear card logic
- 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.
2026-03-22 14:54:40 -06:00
Brian Fertig 8b6ccba887 bump mission rewards and add first-clear card logic
- 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.
2026-03-22 12:51:43 -06:00
Brian Fertig 126182aa19 feat: add new Imperial cards and level filter to Collection Scene
- 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.
2026-03-22 12:15:59 -06:00
Brian Fertig 1c202adf1f Updated card order, collection view and card images. 2026-03-22 11:08:11 -06:00
Brian Fertig 9c3f7bd424 feat: add Imperial faction Chapter 5 campaign, cards, and missions
- Adds `campaign_imperial` (Level 5) with 8 missions (mission_030 to mission_037)
- Introduces 4 new Imperial Commander cards:
  - Iron Centurion (imp_cmd_2)
  - Grand Marshal Kyra (imp_cmd_3)
  - Imperator Dravus (imp_cmd_4)
- Adds 4 new Imperial Assault cards:
  - Imperial Dreadnought (imp_dreadnought_1)
  - Centurion Guard (imp_centurion_1)
  - Orbital Striker (imp_orbital_1)
  - Praetorian Elite (imp_praetorian_1)
- Configures mission progression, opponents, rewards, and lore entries
- Sets starter rewards for the campaign including Imperial Trooper, Gunner, and Guardian cards
2026-03-22 09:20:11 -06:00
Brian Fertig b2981cd389 chore: update combat engine formatting and battle scene animations
- 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`.
2026-03-22 08:29:22 -06:00
Brian Fertig 1c99dc233d feat(combat): expand skill copying and fix drain animation signature
- 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.
2026-03-21 20:29:38 -06:00
Brian Fertig 440662df72 adjusted hacked strike damage 2026-03-21 20:12:55 -06:00
Brian Fertig ff4a7eebf0 Implement hacked Berserk and Flurry skills with animations
- CombatEngine:
  - Handle hacked `berserk` by adding `hackSkill.value` to attacker's current attack and logging the event.
  - Handle hacked `flurry` by injecting a temporary passive skill (+1 extra attack) that is removed after the attack resolves.
- BattleScene:
  - Include `smiteTick` in pre-battle event filtering.
  - Add `smiteApply` and `smiteApplyAll` to on-attack-all event tracking.
  - Increase smite projectile size (sprite 38) from 80x80 to 180x180.
  - Enhance smite damage animation: pulse sprite 39 twice over 1s, synchronize with HP loss, and enforce minimum timing before proceeding or playing death/hive-link animations.
  - Add visual and text feedback for `berserk` (animate attack gain) and `flurry` (status text) in fire animations.
2026-03-21 20:00:46 -06:00
Brian Fertig 82f871abfb feat(combat): add hack support for new skills and fix sound playback
- Extend `CombatEngine` to support hacking `strike`, `jam`, `venom`, `smite`, and `molt` skills, including single and area-of-effect variants.
- Add logic to process deaths and carapace gain for hacked `strikeAll` attacks.
- Update `BattleScene` to handle animation sequences for the new hacked skills (`strikeAll`, `jam`, `venom`, `venomAll`, `smite`, `smiteAll`, `molt`).
- Fix sound effect playback by removing redundant existence checks (`if (this.sound.get(...))`), ensuring sounds play reliably.
2026-03-21 19:31:04 -06:00
Brian Fertig 69df7c5793 chore: update Righteous campaign missions and enhance ability animations
- Updated `data/missions.json` to increase difficulty in Chapter 4:
  - Expanded enemy card pools with higher-tier units (Templars, Purifiers, Prophets, Archangels, Seraphs).
  - Increased gold rewards for missions 022 through 028.
  - Updated mission descriptions and lore to reflect the escalation.

- Enhanced `src/scenes/BattleScene.js` animations for Righteous abilities:
  - Refactored `smite` animations to use new sprite frames (38, 39) and split cast/damage logic.
  - Updated `overcharge` to use sprite 40/41 with pulse effects and integrated HP loss/ATK gain animations.
  - Updated `fortify` to use sprite 37 with projectile travel and pulse effects, integrating armor gain animation.
  - Updated `hack` to use sprite 42 with a 3-cycle pulse before executing copied skills.

- Added new audio assets:
  - `fortify.mp3`, `hack.mp3`, `overcharge.mp3`, `smite-cast.mp3`, `smite-damage.mp3`.
- Updated `src/scenes/BootScene.js` to load the new audio files and removed deprecated smite sounds.
- Updated `assets/images/spritesheets/attacks.png` and `.psd` to include new animation frames.
2026-03-21 18:45:15 -06:00
Brian Fertig 71d291f814 feat: add Righteous faction assets and enhance Sanctify animations
- Add new audio and image assets for the Righteous faction:
  - FX: sanctify.mp3
  - Cards: Archangel, Commander (x3), Inquisitor, Judicator, Prophet, Purifier, Seraph, Templar
  - UI: right_01.png, right_02.png, right_03.png
- Update battle backgrounds to include the 'righteous' theme.
- Fix CombatEngine to pass actual enemy lanes to commander offensive buff collection, ensuring all-targeting skills function correctly.
- Refactor Sanctify animations in BattleScene:
  - Introduce `_doSanctifySpriteTo` to animate a projectile flying from source to target.
  - Animate sprite 35 flying in, shaking on impact, swapping to sprite 36, and fading out.
  - Apply the new animation logic to both single-target and multi-target Sanctify effects.
- Update attack spritesheet to support the new animation frames.
2026-03-21 16:37:39 -06:00
Brian Fertig 77bbef1e5b Campaign 4 2026-03-21 15:07:09 -06:00
Brian Fertig 8a31c2504e feat(combat): persist carapace armor gain to baseArmor
Update `CombatEngine._applyCarapace` to increment `card.baseArmor` alongside `currentArmor` and `card.armor` when carapace effects trigger. This ensures the armor gain is tracked as a permanent base stat increase rather than just a temporary effect. The debug log has also been updated to reflect the new `baseArmor` value.
2026-03-21 13:00:16 -06:00
Brian Fertig ad4db7f541 feat(combat): implement pre-battle healing with animations and audio
Moves the `heal` skill trigger from `on_attack` to `preBattle`, allowing cards to restore HP before combat begins. Updates `data/cards.json` to reflect new skill configurations (changing `strike`/`armored` to `swipe`/`heal` for specific cards).

Changes include:
- **Data**: Updated `skills.json` descriptions and triggers. Modified `cards.json` to use the new `heal` skill with `preBattle` trigger.
- **Engine**: Refactored `CombatEngine` to collect `healFires` during pre-battle processing and removed legacy `healAll` event logic from the attack phase.
- **Logic**: Updated `SkillProcessor` to track heal targets and amounts in the context for animation purposes.
- **Visuals**: Added `sfx_heal` audio asset and implemented new animation sequences in `BattleScene` (`_processHealFires`, `_animateHealFire`, `_doHealSpriteAndHP`) featuring flying sprites, HP text pulses, and floating damage numbers.
- **State Management**: Added `_restoreHealForDisplay` and `_reapplyHeal` to handle state snapshots correctly during the pre-battle render phase.
2026-03-21 12:32:21 -06:00
Brian Fertig bb61298038 feat: increase strike damage values and implement hive_link passive for Swarm
- Updated `strike` damage values in `data/cards.json` to 10, 20, 30, and 40 respectively.
- Added `hive_link` passive skill to Swarm cards with scaling values (1, 2, 4, 8).
- Modified `CombatEngine.js` to process `hive_link` skills during the `_processOnDeath` phase, ensuring the passive effect triggers when Swarm units die.
2026-03-21 11:55:46 -06:00
Brian Fertig 7237d23363 Add carapace animation and handle hive_link ATK buff restoration
- Implement `_animateCarapace` handler in the event switch to support the new carapace effect.
- Update `_restoreBuffsForDisplay` to temporarily undo `hive_link` ATK gains, ensuring pre-battle animations display the correct pre-buff values.
- Update `_reapplyBuffs` to re-apply `hive_link` ATK gains after state rendering, ensuring the data model is correct for subsequent animations like `animateBerserkGain`.
- Update comments to reflect that `hive_link` is now included in the list of buffs temporarily undone for display purposes.
2026-03-21 11:35:57 -06:00
Brian Fertig 776eb9c4bd bump: adjust card stats and fix drain death event handling
- Updated `data/cards.json`:
  - Increased `strike` values for several cards (6→9, 12→16, 24→25, 3→4, 5→12, 7→20, 10→28).
  - Increased `swipe` values (5→7, 7→10, 10→15).
  - Boosted `armor` for specific cards (7→10, 10→15, 15→20).

- Fixed `src/combat/CombatEngine.js`:
  - Corrected drain death event logic to properly identify the dead side and allies.
  - Added calls to `_processOnDeath` when a card or splash target is destroyed by drain effects.

- Enhanced `src/objects/CardObject.js`:
  - Updated `animateBerserkGain` to accept an optional `finalValue` parameter, ensuring the ATK text displays the correct value after the animation completes.

- Refined `src/scenes/BattleScene.js`:
  - Fixed ATK display logic for Swarm effects to correctly show the buffed value during the attack animation.
  - Integrated Hive Link animations into the death sequence for both standard attacks and pre-battle deaths, ensuring effects play before the next round proceeds.
2026-03-21 11:18:15 -06:00
Brian Fertig 35e995aff1 feat(xeno): add faction assets, skills, and combat mechanics
Introduces the Xeno faction with new commanders, units, and mechanics.
- Adds audio SFX for skills: `bloodpact`, `burrow`, `carapace`, `hive_link`,
  `molt-stage1`, `molt-stage2`, `swarm`, `venom-apply`, `venom-effect`.
- Adds Xeno card data to `cards.json` (commanders, assault, token units).
- Updates `skills.json`: changes `swarm` trigger from `preBattle` to `preAttack`.
- Implements combat logic in `CombatEngine.js`:
  - New `_burrowPhase` to decrement burrow stacks post-battle.
  - Burrowed units now take half damage from direct attacks.
  - Venom kills now trigger `on_death` and `hive_link` events.
  - `swarm` buff now applies in `preAttack` and reverts in `postAttack`.
- Updates `CardObject.js`: replaces burrow overlay with a stack-count badge.
- Updates `BattleScene.js`:
  - Animations for `swarm` surge/revert, `hive_link` pulses, `venom` ticks,
    `carapace`, `molt`, and `burrow` ticks.
  - Chains `hive_link` animations immediately after death explosions.
  - Adds SFX playback for all new skill effects.
2026-03-21 10:12:10 -06:00
Brian Fertig 87e6b8f28b refactor(combat): restructure pre-battle phases and implement Xeno mechanics
Reorganize the combat turn sequence to handle Venom, Carapace, and Molt effects within the `_preBattlePhase`. This ensures damage and stat changes occur before buffs and attacks, allowing for accurate pre-attack animations and logic.

Key changes:
- **CombatEngine.js**:
  - Extracted `_moltPhase` and `_tryCarapace` to handle armor gain and HP conversion separately from the main attack loop.
  - Moved Venom and Molt execution to `_preBattlePhase` to run before `_commanderSkillPhase` and `_attackPhase`.
  - Updated pre-attack logic to capture `carapaceGain` for animation purposes without emitting duplicate events.
  - Added `moltRestore` logic to regenerate a fresh shell for attackers before they strike.
- **SkillProcessor.js**:
  - Adjusted `venom` skill logic to update stacks only if the target is below the new value, preventing redundant updates.
- **BattleScene.js**:
  - Updated event filtering and animation pipelines to handle `venomTick`, `carapace`, and `molt` events during the pre-battle sequence.
  - Added visual effects (sprites 27-31) and tween animations for Venom application, Carapace hardening, and Molt shedding/restoration.
  - Implemented `_restoreMoltForDisplay` and `_reapplyMolt` to ensure the UI renders pre-combat states correctly before animating changes.
- **CardManager.js**:
  - Added `baseArmor` tracking to support Carapace cap calculations.
- **Data**:
  - Updated `missions.json` to refine Xeno enemy lineups for missions 014 through 020.
  - Updated Xeno card assets and UI images.
2026-03-20 21:52:34 -06:00
Brian Fertig 1dca6ff81a Collection Scene Refactor 2026-03-17 14:43:27 -06:00
Brian Fertig 0f1db0884c Campaign 3 2026-03-17 14:22:15 -06:00
Brian Fertig eb62ba972d feat(combat): skip skill resolution for cards with active delay
Adds a check in `CombatEngine.js` to prevent cards with `currentDelay > 0` from resolving their `preBattle` skills. This ensures that delayed units do not trigger abilities until their delay counter has expired.
2026-03-17 12:31:57 -06:00
Brian Fertig c3e56fd6aa Balance adjustments: buff armor/delay on artillery units; rework rally to include caster when `all` is true and scale strike values; nerf flurry damage; simplify counter and bloodpact damage calculations. 2026-03-16 21:33:31 -06:00
Brian Fertig 14aaf03b33 refactor: adjust drain skill values, fix delay tick timing, and update buff display logic
- Reduced `drain` skill values in `cards.json` to balance the new damage distribution (50% primary, 25% neighbors).
- Updated `drain` description in `skills.json` to reflect the split damage calculation.
- Fixed `_activationPhase()` in `CombatEngine.js` to only tick cards currently on the field, excluding hand cards. Hand card delays now decrement during the deploy phase (`beginCommit`) to prevent newly deployed cards from losing a delay turn immediately upon entry.
- Modified `bloodpact` in `SkillProcessor.js` to permanently reduce max HP, not just current HP.
- Added temporary buff tracking for `bloodrage` in `SkillProcessor.js`.
- Updated `BattleScene.js` to temporarily restore pre-buff stats (ATK/ARM) before rendering the state, ensuring visual animations correctly display stat gains rather than showing already-modified values. Added `_restoreBuffsForDisplay` and `_reapplyBuffs` helpers.
2026-03-16 19:33:45 -06:00
Brian Fertig fc5babf5a3 refactor(combat): move Bloodrage and Legion to preBattle phase with animations
- Updated `data/cards.json` to change triggers for Bloodrage from `passive` to `preBattle`, and renamed Strike skills to Legion with `preBattle` trigger.
- Refactored `CombatEngine.js` and `SkillProcessor.js`:
  - Removed ad-hoc event pushing for Bloodrage during the attack phase.
  - Moved Legion and Bloodrage processing into the `_preBattlePhase` to generate buff events that are animated before combat resolves.
  - Added logic to track temporary buffs in `_tempBuffs` for Legion.
- Enhanced `BattleScene.js`:
  - Implemented new animations for Legion (cycling flexing arm sprite) and Bloodrage (pulsing red sprite).
  - Added support for restoring and re-applying Drain effects during the pre-battle display phase to ensure correct visual state before animation.
  - Updated sound loading in `BootScene.js` for new `legion` and `bloodrage` effects.
2026-03-15 21:55:36 -06:00
Brian Fertig 217bf1148e ```
Refactor pack system to faction-specific packs with slot-based drops

- Split standard pack into 5 faction-specific packs (imperial, raider, bloodthirsty, xeno, righteous)
- Each pack has 3 guaranteed common slots + 1 special slot with tiered rarity distribution
- Packs unlock by completing their respective campaign missions
- Updated StoreScene to display faction colors, unlock status, and support pack opening animations

Fix bloodpact skill trigger timing and mechanics

- Changed bloodpact from preBattle to preAttack trigger (now fires per attack instead of once per turn)
- Reduced HP cost to 50% of value (was 100%), maintaining same ATK gain
- Moved bloodpact processing from _collectPreBattleFires to _buildPendingAttacks
- Added death check for self-killed cards during preAttack phase

Update drain skill description and trigger

- Changed drain from preBattle to preAttack trigger
- Updated description to clarify it targets the opposing card and its neighbors

Add fusion activation video and enhanced reveal effects

- Added forge2.mp4 for fusion animation (swaps with idle forge during activation)
- Implemented 3-phase energy vortex effect: particle streams, lightning bolts, convergence flash
- Faction-colored effects based on selected stack's faction

Update attack spritesheet and card data

- Updated attacks.png/psd with new bloodpact visual (frame 24)
- Changed all bloodpact skill triggers in cards.json from preBattle to preAttack
```
2026-03-15 18:28:33 -06:00
Brian Fertig b03f7f9f5e Refactored Leveling System 2026-03-15 16:05:24 -06:00
Brian Fertig c2b5e79d08 feat: use player level when creating card instances in UI scenes
Updated CollectionScene, DeckBuilderScene, and FusionScene to pass the current player level (this.save.level) instead of hardcoded level 1 when creating card instances for display. This ensures cards shown in collection views, deck builder previews, and fusion interfaces reflect their actual stats based on the player's progression.
2026-03-15 15:32:46 -06:00
Brian Fertig d3f9facb4a feat: Update card skills, mission rosters, and enhance DeckBuilder UI
- **Data Updates**:
  - `cards.json`: Changed a skill from `rally` (preBattle) to `strike` (preAttack) with global effect.
  - `missions.json`: Swapped opponent cards in the raider mission roster (`raider_berserker_1` -> `raider_grunt_1`, `raider_reaver_1` -> `raider_scout_1`).

- **DeckBuilderScene.js Enhancements**:
  - **Visual Feedback**: Distinguishes between "unavailable" (greyed out) and "deck full" states. Cards remain visible when the deck is full, but the Add button turns red.
  - **Fusion Lab Integration**: Adds a pulsing "Fusion Available" overlay on assault cards where the player has 3+ spare copies, linking directly to the `FusionScene`.
  - **Button States**: Refined Add button logic to display specific messages for available, deck-full, and unavailable states with corresponding colors.
2026-03-15 15:23:25 -06:00
Brian Fertig 20e05116fe Two small changes 2026-03-15 14:11:14 -06:00
Brian Fertig c4e967c72c feat(ui): add custom fonts and apply Audiowide/RaiderCrusader across all scenes
- Add `Audiowide-Regular.ttf` and `raidercrusader.ttf` to assets/fonts.
- Update Phaser version to v3.90.0 in index.html.
- Load custom fonts in BootScene.preload().
- Apply `fontFamily: 'Audiowide'` to standard UI text (stats, labels, menus).
- Apply `fontFamily: 'RaiderCrusader'` to prominent titles and large display text (main menu, victory/defeat, pack labels).
- Consistently update text styles in CardObject, CardTooltip, HealthBar, and all scene files.
2026-03-15 13:57:59 -06:00
Brian Fertig 4c0e7eb77c Encrypted Saves 2026-03-15 13:38:58 -06:00
Brian Fertig 46524c6f6b feat: add video background with scanlines to menu scenes
Replaces static backgrounds in CollectionScene, DeckBuilderScene, FusionScene, and StoreScene with a looping "corridors" video. Adds a dark tint overlay (55% opacity) and CRT-style scanlines for visual consistency. Implements state persistence by saving and restoring the video playback time via the scene registry to maintain continuity across scene transitions.
2026-03-15 12:39:40 -06:00