Skip to content

Fix/3992 taboo_id to meta.extra_deck cards during decklist loading#4147

Open
wdqin wants to merge 1 commit intohalogenandtoast:mainfrom
wdqin:fix/3992-rook-taboo-not-recognized-in-jim-deck
Open

Fix/3992 taboo_id to meta.extra_deck cards during decklist loading#4147
wdqin wants to merge 1 commit intohalogenandtoast:mainfrom
wdqin:fix/3992-rook-taboo-not-recognized-in-jim-deck

Conversation

@wdqin
Copy link
Copy Markdown

@wdqin wdqin commented Apr 1, 2026

Title:
Apply taboo_id to meta.extra_deck cards during decklist loading

Issue ID: 3992
#3992

Summary:
This fixes decklist loading so cards loaded from meta.extra_deck receive taboo_id exactly the same way cards loaded from main-deck slots and sideSlots already do.

Problem:
The bug showed up with side-deck style cards serialized through meta.extra_deck, such as Parallel Jim Culver spirit-deck cards. That code path applied owner and customizations, but never applied taboo_id, so taboo-sensitive cards were loaded as their original versions.

For example, Mr. Rook loaded from meta.extra_deck ended up with tabooList = null and mutated = null, even when the investigator deck itself was using TabooList23.

Change:

Added Arkham.Card.PlayerCard.setTaboo (fromTabooId $ taboo_id decklist) to the meta.extra_deck branch of loadExtraDeck
Kept the existing sideSlots path unchanged
Added regression coverage for both:

  • meta.extra_deck applying taboo correctly
  • sideSlots continuing to apply taboo correctly

Implementation references:
This change follows the same decklist-loading pattern already used by existing card-loading logic in:

loadDecklistCards
main-deck slots
extra-deck sideSlots

Files changed:

backend/arkham-api/library/Arkham/Decklist.hs
backend/arkham-api/tests/Arkham/DecklistSpec.hs

Test coverage:
Added regression coverage for:

loading 05153 from meta.extra_deck with taboo_id = 23 sets pcTabooList = Just TabooList23
loading 05153 from meta.extra_deck with taboo_id = 23 sets pcMutated = Just "Mutated20"
loading the same card from sideSlots still preserves the existing taboo behavior

Validation:
Ran:
stack test arkham-api:spec --test-arguments='--match "loadDecklist"'

Result:
I started a new campaign with the same imported deck. Mr.Rook is now tabooed correctly from the spirit deck.
Screenshot 2026-04-01 at 10 35 43 AM

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