Modifier-card feedback: play toast + persistent ACTIVE BUFFS panel#46
Merged
Conversation
Modifier cards (Damage Boost, Range Extend, Rapid Fire, Enemy Slow, Gold Interest, Shield Wall, …) applied silently — nothing on the board changes, so the player got zero indication the card did anything or what is currently active. Two-part fix: - Instant toast on play: any non-tower card now fires onNonTowerCardPlayed, surfacing a notification with the card name + effect summary (e.g. "Damage Boost · All towers +25% for 2 waves"). - Persistent "ACTIVE BUFFS" HUD panel: a left-column panel lists every active card modifier with its value and remaining duration (waves / turns / charges), derived from CardEffectService.getActiveModifiers() via a new buff-display model. Only player-facing buffs are shown; archetype/keyword sentinels are filtered out. 8316 specs green (+28), lint clean, build clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploying novarise with
|
| Latest commit: |
ff26b5a
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7d3edb45.novarise.pages.dev |
| Branch Preview URL: | https://feat-modifier-feedback.novarise.pages.dev |
…d-card bug Experience QA (trace every player action → "what do they see?") found one functional P0 and a class of silent-action / dead-click / no-feedback gaps, the same flavor as the modifier-card bug. P0 — elevation-target cards were dead via the UI: onTilePlace guarded on the terraform-only getPendingTileTargetCard(), so clicking a tile with Raise Platform / Cliffside / Gravity Well / King of the Hill / etc. pending fell through to tower placement and silently did nothing. Now routes both terraform AND elevation cards to resolveTileTarget (guard: hasPendingCard && !selectedTowerType). Unit specs missed it because they call resolveTileTarget directly. Feedback added: blocked-play toasts (non-combat play, salvage/fortify/detonate/ epidemic/conduit with no valid target — now validated before energy spend); tile-target "click a tile" mode banner + active-card dim + End-Turn disabled while pending; relic/ascension HUD chips now open the pause menu (were dead clicks); use-item success/failure feedback; upgrade-while-broke toast; terraform/ elevation success toast; card Leak-Block / Orogeny relic / NOVA Sovereign enrage toasts (+ enrage screen-shake); rest-site upgrade confirmation; archetype buffs (Cartographer Seal / Labyrinth Mind / Architect / Hive Mind) now show a persistent chip; tutorial START_WAVE no longer self-dismisses; victory/defeat music fades under the overlay; stuck-hand text hint. Event gamble outcomes now show the REAL win/loss: the panel previews the single seeded RunService roll (previewEventGamble) which resolveEvent then reuses — one deterministic roll, display == applied result (was a cosmetic Math.random that could contradict the seeded outcome). 8379 specs green, lint clean, AOT build clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grid pinned the version string to the bottom row with a 1fr gap, pushing the title + menu into the upper-middle with dead space pooling below. Switch the container to flex centre (both axes) and make the version string an absolute footer so the content block sits dead-centre. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Angular component hosts default to display:inline; the landing host being
inline let the container be sized by content rather than the viewport,
offsetting the centred title + menu to the right. Add :host{display:block;
width:100%} and an explicit container width:100%.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Root cause (confirmed via headless render): .landing-content is a grid with only rows defined, so its single implicit column was auto-sized to the intrinsic width of the NOVARISE wordmark (~930px) and anchored at the box's left edge — pushing every row right of centre even though the box itself was centred. grid-template-columns: minmax(0, 1fr) pins the column to the box width so justify-items:center centres the rows (the wordmark overflows symmetrically). Combined with the earlier host/flex fixes the title screen is now centred on both axes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…treatment Card-play and combat toasts rendered bottom-right, overlapping the R/V/pause control cluster and the draw/discard/exhaust pile counters. Move the toast stack to the open band below the End Turn button (top-centre), clear of every corner cluster on desktop and mobile. Visual: replace the washed-out 10%-opacity box (no blur) with real glass — a dark translucent base, backdrop blur, a defined edge, a depth shadow, and a type-coloured left accent stripe (purple/gold/violet/cyan) for character without a glow. Slide-in retargeted to a downward motion; mobile width clamped. Applies to every in-combat toast. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tices Replace the top-center glass toast with a card-shaped notice that rises from above the hand and fades over its lifetime. Notched angular frame (clip-path) with an accent edge over a dark interior, matching the card silhouette language. Accent color keys off toast type. Rise+fade duration binds to each toast's own duration so the motion spans its full life. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the reported gap: playing a modifier card (Damage Boost etc.) gave zero feedback — nothing on the board changes, no toast, no indicator, so it felt like nothing happened and you couldn't see what was active.
Two parts
onNonTowerCardPlayedcallback (CardPlayService stays decoupled from the notification service).CardEffectService.getActiveModifiers()via a newbuff-displaymodel. Only player-facing buffs are shown (archetype/keyword sentinels filtered out). Uses a cheap getter (no observable wiring) consistent with the component's other HUD getters.8316 specs green (+28), lint clean, build clean.
/play, play a Damage Boost, and check: does the toast read well, and is the panel well-placed / not overlapping?🤖 Generated with Claude Code