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.
- 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.
- 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.
- 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.
- 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.
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.
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.
- 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.
- 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.
- 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.
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.
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.
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.
- 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.
- 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.
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
```
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.
- **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.
- 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.
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.
- 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.
- 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.
- 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
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`.