Enemy intent: surface secondary actions; UnlockPicker: real card frames
== Enemy intent multi-action display ==
== 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
secondaryIntentLabelsList. 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:
-
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).
-
GearData → loads Resources/GearArt/{slug}.png as a centered square thumbnail above the description. Tinted-accent placeholder if the art is missing.
-
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.