Shop (NodeMapUI.ShowShopOverlay — the ACTUAL shop, vs. the unused ShopUI.cs I’d mistakenly edited earlier):

  • Cards now instantiate the real combat card prefab via CombatUIManager.SharedCardPrefab with CardUI.Setup, matching the upgrade picker / remove screen / victory screen. Dim to 0.55 alpha when unaffordable. Fallback flat tile kept for the edge case where combat never ran.
  • Gear gets a styled sci-fi frame: dark glass body + rarity full- border + accent top band with slot tag + art slot (loads from Resources/GearArt/{slug} via new LoadGearArt helper) + name + description + green/grey BUY button band.
  • GearData.artwork (NonSerialized) added as runtime cache for lazy-loaded gear sprite lookup.

Event screen:

  • Description panel now auto-resizes to fit its text. Panel stays anchored at the top, bottom edge moves down based on TMP.preferredHeight after two frames of layout. Clamped so it can’t overrun the first choice button. Short events read compact, long events don’t clip.
  • Description panel got an explicit full-border to match the sci- fi kit style used across title/choice panels.

Card text:

  • Added {shield} placeholder support to CardData.GetFormatted- Description (was missing — that’s why Barrier+ / Arcane Shield+ / Frost Nova+ / etc. still showed base values on upgrade).
  • Also added {hits} for multi-hit cards.
  • Updated Barrier / Arcane Shield / Frost Nova / Cleansing Arc / Pulse to use {shield} in their descriptions. Power cards with per-turn / per-card shield stay hardcoded (not upgraded).

Gear art pipeline:

  • tools/generate_gear_art.py — mirrors generate_event_art.py. ~50 prompts, one per gear item. Runs via Gemini 3 Pro Image. Output lands in tools/test_output/gear_art/; copy to Assets/Resources/GearArt/ to activate in shop + inventory.

Commit 7f33f3d by astafford8488.