MC Quick

{{ getUIText('assemble') }}

{{ currentDeckName || 'Untitled Deck' }}
{{ deckCount }}/50

{{ getUIText('select_identity') }}

{{ getUIText('choose_hero') }}

{{ getLoc(hero.card, 'Name') || hero.name }}

{{ getUIText('no_cards_match') }}

{{ getUIText('deck_issues') }}

  • {{ warn }}

{{ getUIText('collection_warning') }}

  • {{ warn }}

{{ getUIText('identity') }}

{{ getLoc(item.card, 'Name') || item.card.Name }}

{{ getLocalizedTypeName(item.card.Type) }}

{{ getUIText('side_deck') }} {{ getUIText('exempt') }}

{{ getLoc(item.card, 'Name') || item.card.Name }}

{{ getLocalizedTypeName(item.card.Type) }} [{{ fmtCost(item.card['Card Cost']) }}]

x{{ item.count }}

{{ getUIText('hero_deck') }} ({{ signatureCount }}/15)

{{ getLoc(item.card, 'Name') || item.card.Name }}

{{ getLocalizedTypeName(item.card.Type) }} [{{ fmtCost(item.card['Card Cost']) }}]

x{{ item.count }}

{{ getUIText('player_cards') }} ({{ playerDeckCount }})

{{ getUIText('deck_empty') }}

{{ getLoc(item.card, 'Name') || item.card.Name }}

{{ getLocalizedAspectName(item.card.Aspect) }} • {{ getLocalizedTypeName(item.card.Type) }} [{{ fmtCost(item.card['Card Cost']) }}]

{{ item.count }}

{{ getUIText('filters_sort') }}

{{ getUIText('language') }}

{{ getUIText('card_type') }}

{{ getUIText('resource_type') }}

{{ getUIText('sort_by') }}

{{ getUIText('packs_by_wave') }}

{{ collectionPacks.length }} {{ getUIText('packs_saved') }}
{{ wave }}

MarvelCDB

MarvelCDB
{{ marvelcdbAuthChecking ? getUIText('marvelcdb_checking') : (marvelcdbAccount.connected ? getUIText('marvelcdb_connected') : getUIText('marvelcdb_not_connected')) }}

{{ getUIText('offline_mode') }}

{{ getUIText('app_version') }}: {{ appVersion }}

{{ getUIText('changelog') }}
v3.3.14
  • MarvelCDB imports resolve reprinted card codes to MCQuick cards and preserve original MarvelCDB print codes when saving back
  • Guide translations updated for the current MarvelCDB connection and private deck workflow
v3.3.12
  • Checks linked MarvelCDB decks before updating so deleted decks use MCQuick's save-as-new recovery prompt
v3.3.11
  • Decks manager now separates local and MarvelCDB deck lists
  • MarvelCDB save flow supports save-as-new, linked deck updates, and selected deck overwrite
  • MarvelCDB updates preserve existing deck tags
  • Deleted linked MarvelCDB decks can be recovered by saving as new and refreshing the link
  • MarvelCDB import/save handles linked two-sided cards correctly
  • Vision's Intangible/Dense mass form card now displays and flips correctly
  • Test mode supports identity/form flipping, Add to Hand, deck shuffle, and discard shuffle-in
v3.3.0
  • MarvelCDB account connection, private deck loading, and save support
v3.2.3
  • Mobile rules index no longer hides the top search result
  • Psi-Bow Attack now sorts under Mental resource correctly
  • Service worker cache refreshed for the latest app files
v3.2.0
  • Filter by resource type (Energy, Mental, Physical, Wild)
  • Wonder Man & Hercules hero packs added
  • Feedback button on filters page
v3.1.0
  • Import decks from MarvelCDB (URL or ID)
  • Browse trending & recent MarvelCDB decks
  • Mulligan support in draw simulator
  • Duplicate saved decks
  • Save & filter by your collection
  • Collection-aware deck warnings
  • In-app guide
v3.0
  • Rules reference viewer
  • Share/import decks via link
  • 5-language support
  • Offline PWA with image caching
  • Deck stats & validation

{{ getUIText('deck_library') }}

{{ getUIText('no_saved_decks') }}
{{ deck.name }}
{{ deck.hero }} • {{ deck.date }}
MarvelCDB
{{ marvelcdbAuthChecking ? getUIText('marvelcdb_checking') : (marvelcdbAccount.connected ? getUIText('marvelcdb_connected') : getUIText('marvelcdb_not_connected')) }}
{{ getUIText('marvelcdb_fetching') }}
{{ getUIText('marvelcdb_no_my_decks') }}
{{ deck.name }}
{{ deck.hero_name }} #{{ deck.id }}
{{ getUIText('marvelcdb_overwrite_blocked_short') }}

{{ getUIText('autofill') }}

{{ getUIText('autofill_desc') }}

{{ getUIText('install_app') }}

1

2

1

2

{{ getUIText('change_hero') }}

{{ getUIText('keep_cards_desc') }}

{{ getUIText('import_deck') || 'Import Deck' }}

{{ importPayload ? importPayload.name : '' }}

MarvelCDB

{{ getUIText('marvelcdb_fetching') }}
{{ marvelcdbSearch ? getUIText('no_cards_match') : getUIText('marvelcdb_no_decks') }}
{{ mdeck.name }}
{{ mdeck.hero_name }} {{ getAspectFromMeta(mdeck.meta) }} {{ mdeck.tags }}
Full Card
{{ selectedCard.Health }}

{{ getLoc(selectedCard, 'Name') }}

{{ getLoc(selectedCard, 'Keywords') || selectedCard.Keywords }}

{{ getLoc(selectedCard, 'Subname') }}

{{ getLoc(selectedCard, 'Card Text') }}

{{ getLoc(selectedCard, 'Flavor Text') }}

No translation available in this language.

{{ getCardCount(selectedCard) }}
{{ selectedCard.Thwart }}
{{ selectedCard.Attack }}
{{ selectedCard.Defense }}
{{ selectedCard.Health }}
{{ selectedCard['Card Cost'] !== undefined && selectedCard['Card Cost'] !== '' ? parseInt(selectedCard['Card Cost']) : '-' }}
{{ getLoc(selectedCard, 'Name') || selectedCard.Name }} {{ getLoc(selectedCard, 'Subname') || selectedCard.Subname }}
{{ selectedCard.Type }}

{{ getLoc(selectedCard, 'Keywords') || selectedCard.Keywords }}

{{ getLoc(selectedCard, 'Card Text') || selectedCard['Card Text'] }}

{{ getLoc(selectedCard, 'Name') || selectedCard.Name }}

{{ getLocalizedPackName(selectedCard.Pack) }} • {{ getLocalizedTypeName(selectedCard.Type) }}

{{ getUIText('related_rules') }}

{{ getUIText('stats') }}

Cost Curve Avg: {{ avgCost }}

{{ count }}
{{ cost === '3' ? '3+' : cost }}

Types

{{ getLocalizedTypeName(type) }} {{ count }}

Aspects

{{ getLocalizedAspectName(aspect) }} {{ count }}

Resources

{{ deckResourceBalance.Physical }}
Phys
{{ deckResourceBalance.Energy }}
Engy
{{ deckResourceBalance.Mental }}
Ment
{{ deckResourceBalance.Wild }}
Wild

{{ getUIText('test') }}

{{ getUIText('test_empty') }}
{{ getUIText('test_deck') }}
{{ testDeck.length }}
{{ testIdentityCard && testIdentityCard.Type === 'Hero' ? getUIText('test_hero') : getUIText('test_alterego') }} {{ (testIdentityIndex + 1) }}/{{ testIdentitiesSorted.length }}
{{ getUIText('test_flip') }}
{{ getUIText('test_empty') }}
{{ getUIText('test_discard') }}
{{ testDiscard.length }}
{{ getUIText('test_target_discard') }}
{{ getUIText('test_hand') }} ({{ testHand.length }}/{{ testHandSize }}) → {{ getUIText('test_target_hand') }}
{{ getUIText('test_hand_empty') }}
{{ getUIText('test_play_area') }} ({{ testPlay.length }}) → {{ getUIText('test_target_play') }}
{{ getUIText('test_zone_empty') }}
{{ getUIText('test_perm') }}

{{ testViewer === 'deck' ? getUIText('test_deck') : getUIText('test_discard') }} ({{ (testViewer === 'deck' ? testDeck : testDiscard).length }})

{{ getUIText('test_empty') }}
{{ getUIText('test_top') }}

{{ getUIText('save_options_title') }}

{{ getUIText('save_options_desc') }}

{{ modalState.title }}

{{ modalState.message }}

{{ toastMsg }}

{{ getUIText('export') }}

{{ getUIText('share_header') }}
{{ getUIText('export_header') }}

{{ getUIText('guide') }}

{{ getUIText('guide_browsing') }}

  • {{ getUIText('guide_browsing_1') }}
  • {{ getUIText('guide_browsing_2') }}
  • {{ getUIText('guide_browsing_3') }}

{{ getUIText('guide_deck') }}

  • {{ getUIText('guide_deck_1') }}
  • {{ getUIText('guide_deck_2') }}
  • {{ getUIText('guide_deck_3') }}
  • {{ getUIText('guide_deck_4') }}
  • {{ getUIText('guide_deck_5') }}
  • {{ getUIText('guide_deck_6') }}

{{ getUIText('guide_sharing') }}

  • {{ getUIText('guide_sharing_1') }}
  • {{ getUIText('guide_sharing_2') }}
  • {{ getUIText('guide_sharing_3') }}

{{ getUIText('guide_filters') }}

  • {{ getUIText('guide_filters_1') }}
  • {{ getUIText('guide_filters_2') }}
  • {{ getUIText('guide_filters_3') }}

MarvelCDB

  • {{ getUIText('guide_mcdb_1') }}
  • {{ getUIText('guide_mcdb_2') }}
  • {{ getUIText('guide_mcdb_3') }}
  • {{ getUIText('guide_mcdb_4') }}
  • {{ getUIText('guide_mcdb_5') }}
  • {{ getUIText('guide_mcdb_6') }}