Commit Graph

69 Commits

Author SHA1 Message Date
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
Brian Fertig eb214fce26 More changes prep 2026-03-15 12:26:28 -06:00
Brian Fertig e012cda336 feat: enhance card armor values and add retro VHS menu effects
- Updated `data/cards.json` to significantly increase armor values across all card tiers and types for better survivability balance.
- Refined skill descriptions in `data/skills.json` (Pierce, Berserk, Protect, Jam, Enfeeble) to clarify mechanics like "this turn" vs "permanent" effects and added flavor text.
- Added video background support to `MainMenuScene.js` using the new `tyrants-edge-menu.mp4` asset.
- Implemented retro VHS visual overlays on the menu: scanlines, stepped vignette, rolling tracking bar, and random screen flickers for atmospheric effect.
2026-03-15 10:32:27 -06:00
Brian Fertig e9b7a51b32 Refactor combat: move `drain` to pre-battle phase and rebalance card stats
- Change `drain` skill trigger from `preAttack` to `preBattle`, resolving it against the opposing lane/commander before attacks begin.
- Update combat engine to collect and emit `drainFires` in the pre-battle sequence, including death events for drained targets.
- Rebalance card stats across all factions with higher attack/health/armor values and scaled skill magnitudes to match new combat pacing.
- Improve UI label positioning for ATK/ARM/HP on CardObject to handle dynamic text widths.
2026-03-15 09:18:24 -06:00
Brian Fertig b81aa03db6 Refactored Campaign 2 missions 2026-03-15 08:30:02 -06:00
Brian Fertig d6682baa66 feat: Add Bloodthirsty faction campaign with new cards, skills, and animations
- Added 13 new Bloodthirsty cards (common to legendary) including Countess Vireska commander
- Implemented 4 new skills: siphon, drain, bloodpact, and bloodrage with full combat engine support
- Created Chapter 2 campaign (8 missions) with progressive difficulty and unique lore entries
- Added corresponding audio effects (bloodrage.mp3, drain.mp3, siphon.mp3) and card art assets
- Implemented visual animations for all new skills:
  - Drain: projectile to primary target + splash damage to neighbors + green heal return particles
  - Siphon: blood-red projectile with glow effect that heals attacker
  - Bloodpact: red flash for HP loss followed by ATK gain animation (handles self-destruction)
  - Bloodrage: red pulse and ATK boost display when below 50% HP
- Updated CombatEngine to handle preBattle death checks (bloodpact can kill cards immediately)
- Modified BattleScene to sequence new skill animations within the combat flow
2026-03-14 21:56:19 -06:00
Brian Fertig 390d55c7b2 feat(battle): add faction-specific randomized battle backgrounds
Introduces dynamic background images for `BattleScene` based on the opponent's faction (Imperial, Raider, Bloodthirsty). The system:
- Defines a configuration of 3 variant assets per faction.
- Selects a random variant during the preload phase if the opponent's commander card is available.
- Renders the selected background with a dimming overlay in `create`, falling back to the solid color if no image is loaded or defined.

Includes new asset files: `imperial_03.png` and `raider_03.png`.
2026-03-14 17:21:07 -06:00