← game tracker

{data.game.shortName}

{weapons.length} weapons · {achievements.length} achievements

{#if !data.user}

sign in to save your progress.

{/if} {#if saveError}{/if}
{#each bars as bar (bar.label)}

{bar.label}

{bar.achieved ? '✓' : `${percent(bar.value, bar.total)}%`}

{bar.value} of {bar.total}

{/each}
{#each tabs as name (name)} {/each}
{#if tab === 'weapons'} {#if rules.tiers.length || rules.milestones.length}

{[...rules.milestones, ...rules.tiers] .filter((rule) => rule.description) .map((rule) => `${rule.label}: ${rule.description}`) .join('. ')}. DLC weapons don’t count toward class or overall camos.

{/if} {#each classes as group (group.name)} {@const rows = group.list.filter( (weapon) => !hideDone || group.milestones.some( (milestone) => appliesTo(milestone, weapon) && !isDone(weapon.id, milestone.key) ) )}

{group.name}

{#each group.tiers as { tier, count } (tier.key)} {tier.label} {count?.achieved ? '✓' : `${count?.value}/${count?.total}`} {/each}

{#if rows.length} {#each group.milestones as milestone (milestone.key)}{/each} {#each rows as weapon (weapon.id)} {@const tiers = summary.mastery.weaponTiers(weapon)} {#each group.milestones as milestone (milestone.key)} {/each} {/each}
weapon{milestone.label}
{weapon.name} {#if weapon.postLaunch}DLC{/if} {#if tiers.length}{tiers.map((tier) => tier.label).join(' · ')}{/if} {#if appliesTo(milestone, weapon)} toggle(weapon.id, milestone.key, event.currentTarget.checked)} /> {:else}—{/if}
{:else}

all done.

{/if}
{/each} {:else} {#each categories as [category, list] (category)} {@const rows = list.filter((item) => !hideDone || !isDone(item.id, 'done'))}

{category}

{list.filter((item) => isDone(item.id, 'done')).length} of {list.length}

{/each} {/if}