== Enemy intent multi-action display ==

Some enemies fire secondary effects on top of their primary intent — Heavy Mech summons Scout Drones at 50% HP, EMP Walker attacks AND self-buffs Strength, bosses self-buff every other turn — and these were INVISIBLE to the player. The intent preview only showed the primary action. Result: players got blindsided by surprise summons and stat changes.

Now the intent preview surfaces these as additional lines below the primary intent: ATTACK 18

  • WEAK +2 (existing dual-action rider, was already shown)
  • SUMMON x2 (NEW — predicts the HP-threshold summon)
  • STRENGTH +4 (NEW — predicts self-buff when not the primary)

Implementation:

  • CombatEnemy.cs: new secondaryIntentLabels List. Cleared at the start of every DetermineIntent. Populated AFTER the primary intent is decided by checking the same conditions CombatManager’s TrySummon and self-buff paths use. So the telegraph is one turn EARLIER than the actual fire — players see the warning, then it happens next turn.
  • EnemyUI.cs: UpdateIntentDisplay refactored to compute primary text
    • color, then append each secondary label as “<size=75%><color=#FFA040>+ LABEL”. Matches the existing applyDebuffsOnAttack rider pattern visually.

Boss summon telegraph (Singularity / Reality Breach) is the single biggest player-facing improvement: previously 100% invisible.

== UnlockPicker: real card frames + gear/event art ==

The token unlock screen rendered every choice as text-only tiles — no card art, no gear art, no event banner. Players couldn’t tell what they were unlocking without reading every word. Worse, the visual divergence from the in-combat card design made the unlock picker feel like a different game’s UI.

Fix: type-switch BuildChoicePanel into three branches:

  1. CardData → instantiates CombatUIManager.SharedCardPrefab inside the choice panel (same pattern the shop already uses for card slots). Player sees the EXACT card frame + rarity tint + art + stats they’ll see in-hand. Falls back to text rendering if the prefab cache is empty (cold-boot meta unlock before first combat).

  2. GearData → loads Resources/GearArt/{slug}.png as a centered square thumbnail above the description. Tinted-accent placeholder if the art is missing.

  3. GameEvent → loads Resources/EventArt/{slug}.png as a wide banner above the description, with a soft tint overlay for title legibility. Same banner art the player sees during the actual event encounter.

Total scope: ~50 lines added to UnlockPickerUI, no new prefabs, no asset changes. Two new static helpers (LoadGearArt, LoadEventArt) co-located with the picker since both follow the same name-to-slug convention used elsewhere.

Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]


Commit 564940d by astafford8488.