The carried-treasure dot becomes the owner's chest

A gold dot said 'carrying' but never whose. The badge on the carrier's
shoulder is now the treasure owner's colored chest — always the drawn
SVG chest, which stays legible at badge size in either art mode. The
dot survives only as a fallback for a treasure the view cannot resolve.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc
This commit is contained in:
Eric Wagoner
2026-08-17 23:23:55 -04:00
co-authored by Claude Fable 5
parent 3dcdf50498
commit 4a5baed853
+17 -1
View File
@@ -533,7 +533,19 @@
<text x="0" y="4" class="wizard-label">{p.id[0]?.toUpperCase()}</text>
{/if}
{#if p.carriedTreasureId}
<circle cx={CELL * 0.26} cy={CELL * 0.26} r={5} class="carried" />
{@const carriedT = view.treasures.find((t) => t.id === p.carriedTreasureId)}
{#if carriedT}
<!-- Whose gold: the owner's chest rides the carrier's shoulder.
Always the drawn chest — legible at badge size, either art mode. -->
<TokenArt
href={`/tokens-svg/treasure-${sharedColorIndex(view, carriedT.owner) % 6}.svg`}
x={CELL * 0.10} y={CELL * 0.06}
width={CELL * 0.36} height={CELL * 0.36}
cls="carried-chest"
/>
{:else}
<circle cx={CELL * 0.26} cy={CELL * 0.26} r={5} class="carried" />
{/if}
{/if}
</g>
</g>
@@ -834,6 +846,10 @@
text-anchor: middle; pointer-events: none;
}
.carried { fill: gold; stroke: #111; stroke-width: 1; }
:global(.carried-chest) {
filter: drop-shadow(0.5px 1px 1px rgba(0, 0, 0, 0.55));
pointer-events: none;
}
.crack {
stroke: #efe8d4;
stroke-width: 2;