Skip to content

Add spirit ghost aura visuals for The Beyond cards#4149

Open
wdqin wants to merge 1 commit intohalogenandtoast:mainfrom
wdqin:enhancement/spirit-deck-effects
Open

Add spirit ghost aura visuals for The Beyond cards#4149
wdqin wants to merge 1 commit intohalogenandtoast:mainfrom
wdqin:enhancement/spirit-deck-effects

Conversation

@wdqin
Copy link
Copy Markdown

@wdqin wdqin commented Apr 1, 2026

Title:
Add ghost aura visuals for The Beyond spirit deck and manifested spirits

Related Issue ID: 3993
#3993

Summary:
This is a visual enhancement that displays cards related to Jim's spirit deck in a fancy way. It adds ghost aura visuals for Parallel Jim Culver’s The Beyond: Bleak Netherworld, covering both the hidden spirit deck in the player area and manifested spirits that enter play from it.

It's not a bug fix, but a nice to have.

Problem:
The spirit deck and manifested spirits had no visual distinction in the UI, so it was hard to tell at a glance which cards were part of The Beyond’s spirit system.

There was also an implementation constraint: hidden spirit deck cards must not leak any card-specific information, while manifested spirits should be allowed to have distinct visual treatment because they are already public.

Change:

Added frontend support for decoding AttachedToAsset placements instead of collapsing them into a generic fallback
Added spirit-visual helpers to detect:

  • The Beyond spirit deck host
  • manifested spirit assets via IsSpirit
  • manifested spirit enemies attached to The Beyond
    Added a reusable GhostOrbit visual component
    Added ghost SVG assets for spirit visuals
    Applied ghost aura visuals to:
  • The Beyond spirit deck in the player area
  • manifested spirit assets
  • manifested spirit enemies attached to The Beyond
    Kept the hidden spirit deck on a fixed ghost style so it does not reveal deck contents
    Used different ghost SVGs and desynchronized animation timing for manifested spirits based on public cardCode
    Tuned the ghost motion range to stay closer to the card frame

Implementation references:
This change follows the existing frontend rendering flow for runtime card state in:

Placement decoding
Asset.vue
Enemy.vue

Files changed:

frontend/src/arkham/types/Placement.ts
frontend/src/arkham/spiritVisuals.ts
frontend/src/arkham/components/GhostOrbit.vue
frontend/src/arkham/components/Asset.vue
frontend/src/arkham/components/Enemy.vue
frontend/src/assets/ghost-orbit-1.svg
frontend/src/assets/ghost-orbit-2.svg
frontend/src/assets/ghost-orbit-3.svg

Test coverage:
Added validation coverage through manual runtime verification for:

The Beyond spirit deck showing a ghost aura in the player area
manifested spirit assets showing ghost aura automatically
manifested spirit enemies attached to The Beyond showing ghost aura automatically
hidden spirit deck visuals not changing based on unrevealed card contents
manifested spirit animations not moving in perfect sync
ghost motion staying within a tighter range around the card

Validation:
Ran:
npm run build

Result:
Build passed successfully.

Screenshot 2026-04-01 at 11 41 57 AM

I also verified in-game that the spirit deck uses a fixed ghost style, while manifested spirit cards use distinct ghost variants and no longer animate in perfect sync.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant