{weapons.length} weapons · {achievements.length} achievements
{#if !data.user}sign in to save your progress.
{/if} {#if saveError}{saveError}
{/if}{bar.label}
{bar.achieved ? '✓' : `${percent(bar.value, bar.total)}%`}
{bar.value} of {bar.total}
{[...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) ) )}{#each group.tiers as { tier, count } (tier.key)} {tier.label} {count?.achieved ? '✓' : `${count?.value}/${count?.total}`} {/each}
| weapon | {#each group.milestones as milestone (milestone.key)}{milestone.label} | {/each}
|---|---|
| {weapon.name} {#if weapon.postLaunch}DLC{/if} {#if tiers.length}{tiers.map((tier) => tier.label).join(' · ')}{/if} | {#each group.milestones as milestone (milestone.key)}{#if appliesTo(milestone, weapon)} toggle(weapon.id, milestone.key, event.currentTarget.checked)} /> {:else}—{/if} | {/each}
all done.
{/if}{list.filter((item) => isDone(item.id, 'done')).length} of {list.length}