- Foundry v13/v14 compatibility (verified on 14.364) - Complete "Ringworld '84" retheme: CSS custom properties, warm space-black + bronze + ring-arc amber palette, uniform across sheets, dialogs, chat cards, hit-location picker, and impulse HUD - Fix HP damage evaporating on re-prepare: maximums always derived, current values source-authoritative, with a one-time world migration - Ammunition tracking: per-attack consumption, reload button, ammo badge; empty weapons block attacks - Energy weapons auto-link a carried power pack instead of failing - Special Success rolls damage dice twice; fumbles flag GM adjudication (both toggleable world settings) - Defender Dodge prompt before damage (special hits need special dodge) - Damage Mod and derived rolls always recompute; shown read-only - Creature sheet rebuilt to full parity: characteristics, derived rolls, body-schema hit grid with AP totals, weapons/armor/skills - Seeded "Ringworld GM Reference" journal (outcomes, impulses, attack workflow, wounds, 1984 quirks, quick start) - Shared characteristic-check dialog between explorer and creature Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
55 lines
2.3 KiB
Handlebars
55 lines
2.3 KiB
Handlebars
<div class="ringworld-chat-card ringworld-chat-attack">
|
|
<header class="rw-chat-header">
|
|
<img class="rw-chat-actor-img" src="{{actorImg}}" alt="{{actorName}}" />
|
|
<div class="rw-chat-header-text">
|
|
<h3>{{actorName}} attacks {{targetName}}</h3>
|
|
<p class="rw-chat-outcome {{#if isSuccess}}success{{else}}failure{{/if}} {{#if isSpecial}}special{{/if}} {{#if isFumble}}fumble{{/if}}">{{attackOutcomeLabel}}</p>
|
|
</div>
|
|
</header>
|
|
|
|
<div class="rw-chat-tags">
|
|
<span class="rw-chat-tag">
|
|
{{#if weaponImg}}<img class="rw-chat-tag-img" src="{{weaponImg}}" alt="{{weaponName}}" />{{/if}}
|
|
<strong>Weapon</strong>: {{weaponName}}
|
|
</span>
|
|
<span class="rw-chat-tag">
|
|
{{#if skillImg}}<img class="rw-chat-tag-img" src="{{skillImg}}" alt="{{skillName}}" />{{/if}}
|
|
<strong>Skill</strong>: {{skillName}}
|
|
</span>
|
|
</div>
|
|
|
|
<p><strong>Attack:</strong> {{attackRoll}} vs {{attackTarget}}</p>
|
|
|
|
{{#if dodge}}
|
|
<p class="rw-chat-hitline rw-chat-dodge {{#if dodge.negated}}dodged{{/if}}">
|
|
<span class="rw-chat-hit-label">Dodge</span>
|
|
<span class="rw-chat-hit-roll">{{dodge.roll}} vs {{dodge.target}} —</span>
|
|
<span class="rw-chat-hit-value">{{#if dodge.negated}}Evaded{{else}}{{#if dodge.success}}Not enough{{else}}Failed{{/if}}{{/if}}</span>
|
|
</p>
|
|
{{/if}}
|
|
|
|
{{#if isSuccess}}
|
|
<p class="rw-chat-hitline">
|
|
<span class="rw-chat-hit-label">Hit Location</span>
|
|
<span class="rw-chat-hit-value">{{hitLocationLabel}}</span>{{#if hitLocationRoll}} <span class="rw-chat-hit-roll">(rolled {{hitLocationRoll}})</span>{{/if}}
|
|
</p>
|
|
<p class="rw-chat-damage-line">
|
|
<span class="rw-chat-damage-label">Total Damage</span>
|
|
<span class="rw-chat-damage-value">{{finalDamage}}</span>
|
|
<span class="rw-chat-damage-breakdown">({{rawDamage}} - {{armor}} armor)</span>
|
|
</p>
|
|
{{#if hasTarget}}
|
|
<p><strong>Remaining Location HP:</strong> {{remainingLocationHp}}</p>
|
|
<p><strong>Remaining General HP:</strong> {{remainingGeneralHp}}</p>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if energyCost}}
|
|
<p><strong>Energy:</strong> {{energySourceLabel}} spent {{energyCost}}, remaining {{energyRemaining}}</p>
|
|
{{/if}}
|
|
{{#if ammoUsed}}
|
|
<p><strong>Ammo:</strong> spent {{ammoCost}}, remaining {{ammoRemaining}}</p>
|
|
{{/if}}
|
|
<p class="rw-chat-notes">{{notes}}</p>
|
|
</div>
|