Nombreuses corrections sur les fiches settlement/NPC

This commit is contained in:
2026-03-22 21:35:47 +01:00
parent ec291e9c60
commit b46c6d804c
51 changed files with 2892 additions and 227 deletions

View File

@@ -66,10 +66,4 @@
{{/if}}
</fieldset>
{{!-- Background --}}
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Background"}}</legend>
{{formInput systemFields.background enriched=enrichedBackground value=system.background name="system.background" toggled=true}}
</fieldset>
</section>

View File

@@ -1,4 +1,8 @@
<section data-tab="notes" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Background"}}</legend>
{{formInput systemFields.background enriched=enrichedBackground value=system.background name="system.background" toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Description"}}</legend>
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}

View File

@@ -1,29 +1,41 @@
<section data-tab="combat" class="tab">
<section data-tab="combat" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<div class="initiative-bar">
<a data-action="rollInitiative" class="initiative-roll-btn" data-tooltip="{{localize 'OATHHAMMER.Roll.InitiativeHint'}}">
<i class="fa-solid fa-swords"></i> {{localize "OATHHAMMER.Dialog.RollInitiative"}}
</a>
{{#if combatantInitiative}}<span class="initiative-score" data-tooltip="{{localize 'OATHHAMMER.Label.Initiative'}}">⚔ {{combatantInitiative}}</span>{{/if}}
</div>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Weapons"}}</legend>
{{#if weapons.length}}
<ul class="item-list">
{{#each weapons as |weapon|}}
<li class="item-entry flexrow" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}">
<img src="{{weapon.img}}" class="item-img" />
<span class="item-name">{{weapon.name}}</span>
<span class="item-detail">{{weapon.system.damageLabel}}</span>
<span class="item-detail">AP: {{weapon.system.ap}}</span>
{{#unless ../isPlayMode}}
<a data-action="edit" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-trash"></i></a>
{{/unless}}
<legend>{{localize "OATHHAMMER.Label.Attacks"}}
{{#unless isPlayMode}}<a data-action="createNpcAttack" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
</legend>
{{#if npcAttacks.length}}
<ul class="item-list item-list--npc-attack">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.Damage"}}</span>
<span title="Armor Penetration">AP</span>
<span></span>
</li>
{{#each npcAttacks as |attack|}}
<li class="item-entry" data-item-id="{{attack.id}}" data-item-uuid="{{attack.uuid}}">
<img src="{{attack.img}}" class="item-img" />
<span class="item-name" {{#if attack._descTooltip}}data-tooltip="{{attack._descTooltip}}"{{/if}}>{{attack.name}}</span>
<span class="item-detail">{{attack.system.damageLabel}}</span>
<span class="item-detail">{{#if attack.system.ap}}{{attack.system.ap}}{{else}}{{/if}}</span>
<div class="item-actions">
<a data-action="rollNpcAttack" data-item-id="{{attack.id}}" data-tooltip="{{localize 'OATHHAMMER.Dialog.Damage'}}"><i class="fa-solid fa-burst"></i></a>
<a data-action="edit" data-item-id="{{attack.id}}" data-item-uuid="{{attack.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{attack.id}}" data-item-uuid="{{attack.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoWeapons"}}</p>
<p class="no-items">{{localize "OATHHAMMER.Label.NoAttacks"}}</p>
{{/if}}
</fieldset>
</section>

View File

@@ -0,0 +1,65 @@
<section data-tab="equipment" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
{{#unless isPlayMode}}
<p class="settlement-hint">{{localize "OATHHAMMER.Label.EquipmentNPCHint"}}</p>
{{/unless}}
{{! Armor }}
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Armor"}}</legend>
{{#if armors.length}}
<ul class="item-list item-list--npc-armor">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>AV</span>
<span>{{localize "OATHHAMMER.Label.Penalty"}}</span>
<span></span>
</li>
{{#each armors as |armor|}}
<li class="item-entry" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}">
<img src="{{armor.img}}" class="item-img" />
<span class="item-name">{{armor.name}}</span>
<span class="item-detail">{{armor.system.armorValue}}</span>
<span class="item-detail">{{#if armor.system.penalty}}{{armor.system.penalty}}{{else}}{{/if}}</span>
<div class="item-actions">
{{#unless ../isPlayMode}}
<a data-action="edit" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-trash"></i></a>
{{/unless}}
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoArmor"}}</p>
{{/if}}
</fieldset>
{{! Equipment }}
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Equipment"}}</legend>
{{#if equipment.length}}
<ul class="item-list item-list--npc-equip">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span></span>
</li>
{{#each equipment as |item|}}
<li class="item-entry" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
<img src="{{item.img}}" class="item-img" />
<span class="item-name">{{item.name}}</span>
<div class="item-actions">
{{#unless ../isPlayMode}}
<a data-action="edit" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}"><i class="fa-solid fa-trash"></i></a>
{{/unless}}
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoEquipment"}}</p>
{{/if}}
</fieldset>
</section>

View File

@@ -0,0 +1,69 @@
<section data-tab="magic" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Spells"}}
{{#unless isPlayMode}}<a data-action="createSpell" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
</legend>
{{#if spells.length}}
<ul class="item-list item-list--spell">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>DV</span>
<span>{{localize "OATHHAMMER.Label.Tradition"}}</span>
<span>{{localize "OATHHAMMER.Label.Range"}}</span>
<span>{{localize "OATHHAMMER.Label.Duration"}}</span>
<span></span>
</li>
{{#each spells as |spell|}}
<li class="item-entry" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}">
<img src="{{spell.img}}" class="item-img" />
<span class="item-name" {{#if spell._descTooltip}}data-tooltip="{{spell._descTooltip}}"{{/if}}>{{spell.name}}</span>
<span class="item-detail">{{spell.system.difficultyValue}}</span>
<span class="item-type">{{localize spell.system.tradition}}</span>
<span class="item-detail item-detail--small">{{#if spell.system.range}}{{spell.system.range}}{{else}}{{/if}}</span>
<span class="item-detail item-detail--small">{{#if spell.system.duration}}{{spell.system.duration}}{{else}}{{/if}}</span>
<div class="item-actions">
<a data-action="castNPCSpell" data-item-id="{{spell.id}}" title="{{localize 'OATHHAMMER.Action.CastSpell'}}"><i class="fa-solid fa-wand-sparkles spell-cast-icon"></i></a>
<a data-action="edit" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{spell.id}}" data-item-uuid="{{spell.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoSpells"}}</p>
{{/if}}
</fieldset>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Miracles"}}
{{#unless isPlayMode}}<a data-action="createMiracle" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
</legend>
{{#if miracles.length}}
<ul class="item-list item-list--miracle">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.DivineTradition"}}</span>
<span></span>
</li>
{{#each miracles as |miracle|}}
<li class="item-entry" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}">
<img src="{{miracle.img}}" class="item-img" />
<span class="item-name" {{#if miracle._descTooltip}}data-tooltip="{{miracle._descTooltip}}"{{/if}}>{{miracle.name}}</span>
<span class="item-detail">{{miracle.system.divineTradition}}</span>
<div class="item-actions">
<a data-action="castNPCMiracle" data-item-id="{{miracle.id}}" title="{{localize 'OATHHAMMER.Action.InvokeMiracle'}}"><i class="fa-solid fa-hands-praying miracle-cast-icon"></i></a>
<a data-action="edit" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{miracle.id}}" data-item-uuid="{{miracle.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoMiracles"}}</p>
{{/if}}
</fieldset>
</section>

View File

@@ -1,4 +1,4 @@
<section data-tab="notes" class="tab">
<section data-tab="notes" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Description"}}</legend>
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}

View File

@@ -1,26 +1,24 @@
<section class="npc-main npc-main-{{ifThen isPlayMode 'play' 'edit'}}">
<fieldset>
<legend>{{localize "OATHHAMMER.Label.NPC"}}</legend>
<legend>
{{#if isPlayMode}}
<span class="npc-subtype-badge npc-subtype-{{system.subtype}}">
{{localize (lookup subtypeLabels system.subtype)}}
</span>
{{else}}
<select name="system.subtype" class="npc-subtype-select">
{{selectOptions subtypeChoices selected=system.subtype}}
</select>
{{/if}}
</legend>
<div class="npc-pc flexrow">
<!-- LEFT: portrait only -->
<div class="npc-left">
<img class="actor-img" src="{{actor.img}}" data-edit="img" data-action="editImage" data-tooltip="{{actor.name}}" />
<fieldset>
<div class="flexrow character-resource">
<span class="resource-label">{{localize "OATHHAMMER.Label.Grit"}}</span>
{{formInput systemFields.grit.fields.value value=system.grit.value name="system.grit.value" disabled=isPlayMode}}
<span>/</span>
<input type="text" value="{{system.grit.max}}" disabled />
</div>
<div class="flexrow character-resource">
<span class="resource-label">{{localize "OATHHAMMER.Label.Defense"}}</span>
{{formInput systemFields.defense.fields.value value=system.defense.value name="system.defense.value" disabled=isPlayMode}}
</div>
<div class="flexrow character-resource">
<span class="resource-label">{{localize "OATHHAMMER.Label.Movement"}}</span>
{{formInput systemFields.movement.fields.base value=system.movement.base name="system.movement.base" disabled=isPlayMode}}
</div>
</fieldset>
</div>
<!-- RIGHT: name + vitals grid + stats -->
<div class="npc-right">
<div class="character-name">
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
@@ -28,39 +26,49 @@
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
</a>
</div>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Stats"}}</legend>
<div class="flexrow">
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.CR"}}</label>
{{formInput systemFields.challengeRating value=system.challengeRating name="system.challengeRating" disabled=isPlayMode}}
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.AttackBonus"}}</label>
{{formInput systemFields.attackBonus value=system.attackBonus name="system.attackBonus" disabled=isPlayMode}}
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.DamageBonus"}}</label>
{{formInput systemFields.damageBonus value=system.damageBonus name="system.damageBonus" disabled=isPlayMode}}
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.InitiativeBonus"}}</label>
{{formInput systemFields.initiativeBonus value=system.initiativeBonus name="system.initiativeBonus" disabled=isPlayMode}}
</div>
<!-- Vitals: 2×2 grid -->
<div class="npc-vitals-grid">
<div class="npc-vital npc-vital-grit">
<span class="vital-label">{{localize "OATHHAMMER.Label.Grit"}}</span>
<span class="vital-value">
<a class="grit-btn" data-action="adjustGrit" data-delta="-1" data-tooltip="1"></a>
<input type="number" class="npc-num-input" name="system.grit.value" value="{{system.grit.value}}" min="0" />
<span class="res-sep">/</span>
{{formInput systemFields.grit.fields.max value=system.grit.max name="system.grit.max" disabled=isPlayMode}}
<a class="grit-btn" data-action="adjustGrit" data-delta="1" data-tooltip="+1">+</a>
</span>
</div>
</fieldset>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Attributes"}}</legend>
<div class="attributes-grid">
{{#each system.attributes as |attr key|}}
<div class="attribute-box">
<label>{{localize (concat "OATHHAMMER.Attribute." (capitalize key))}}</label>
{{formInput (lookup ../systemFields.attributes.fields key).fields.rank value=attr.rank name=(concat "system.attributes." key ".rank") disabled=../isPlayMode}}
</div>
{{/each}}
<div class="npc-vital">
<span class="vital-label{{#if isPlayMode}} vital-roll-label{{/if}}"
{{#if isPlayMode}}data-action="rollArmor" data-tooltip="OATHHAMMER.Tooltip.RollArmor"{{/if}}>
{{#if isPlayMode}}<i class="fa-solid fa-dice-d6"></i>{{/if}}
{{localize "OATHHAMMER.Label.ArmorDice"}}
</span>
<span class="vital-value">
<input type="number" class="npc-num-input" name="system.armorDice.value" value="{{system.armorDice.value}}" min="0" {{#if isPlayMode}}disabled{{/if}} />
{{#if isPlayMode}}
<span class="npc-color-badge">{{armorDiceEmoji}}</span>
{{else}}
<select name="system.armorDice.colorDiceType" class="npc-color-select">
{{selectOptions colorChoices selected=system.armorDice.colorDiceType}}
</select>
{{/if}}
</span>
</div>
</fieldset>
</div>
<div class="npc-vital">
<span class="vital-label">{{localize "OATHHAMMER.Label.Movement"}}</span>
<span class="vital-value">
{{formInput systemFields.movement.fields.base value=system.movement.base name="system.movement.base" disabled=isPlayMode}}
</span>
</div>
</div><!-- /npc-vitals-grid -->
</div><!-- /npc-right -->
</div>
</fieldset>
</section>

View File

@@ -0,0 +1,39 @@
<section data-tab="skills" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
{{#unless isPlayMode}}
<p class="settlement-hint">{{localize "OATHHAMMER.Label.SkillNPCHint"}}</p>
{{/unless}}
{{#if skills.length}}
<ul class="item-list item-list--npc-skill">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span data-tooltip="{{localize 'OATHHAMMER.Label.DicePool'}}">{{localize "OATHHAMMER.Label.DicePool"}}</span>
<span>{{localize "OATHHAMMER.Label.Threshold"}}</span>
<span></span>
<span></span>
</li>
{{#each skills as |skill|}}
<li class="item-entry" data-item-id="{{skill.id}}" data-item-uuid="{{skill.uuid}}">
<span class="npc-skill-color npc-skill-color-{{skill.system.colorDiceType}}"
data-tooltip="{{skill.system.colorType}} ({{skill.system.threshold}})">
{{skill.system.colorEmoji}}
</span>
<span class="item-name">{{skill.name}}</span>
<span class="item-detail">{{skill.system.dicePool}}d</span>
<span class="item-detail">{{skill.system.threshold}}</span>
<a class="npc-skill-roll-btn" data-action="rollSkillNPC"
data-item-id="{{skill.id}}" data-item-uuid="{{skill.uuid}}"
data-tooltip="{{localize 'OATHHAMMER.Roll.RollSkill'}}">
<i class="fa-solid fa-dice-d6"></i>
</a>
<div class="item-actions">
<a data-action="edit" data-item-id="{{skill.id}}" data-item-uuid="{{skill.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{skill.id}}" data-item-uuid="{{skill.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoSkills"}}</p>
{{/if}}
</section>

View File

@@ -0,0 +1,36 @@
<section data-tab="traits" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
{{#unless isPlayMode}}
<p class="settlement-hint">{{localize "OATHHAMMER.Label.TraitNPCHint"}}</p>
{{/unless}}
{{#if traits.length}}
<ul class="item-list item-list--npc-trait">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.Type"}}</span>
<span></span>
</li>
{{#each traits as |trait|}}
<li class="item-entry" data-item-id="{{trait.id}}" data-item-uuid="{{trait.uuid}}">
<img src="{{trait.img}}" class="item-img" />
<span class="item-name" {{#if trait._descTooltip}}data-tooltip="{{trait._descTooltip}}"{{/if}}>{{trait.name}}</span>
{{#if trait.system.traitType}}
<span class="npc-trait-type-badge npc-trait-type-{{trait.system.traitType}}">
{{localize (lookup ../traitTypeLabels trait.system.traitType)}}
</span>
{{else}}
<span></span>
{{/if}}
<div class="item-actions">
{{#unless ../isPlayMode}}
<a data-action="edit" data-item-id="{{trait.id}}" data-item-uuid="{{trait.uuid}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{trait.id}}" data-item-uuid="{{trait.uuid}}"><i class="fa-solid fa-trash"></i></a>
{{/unless}}
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoTraits"}}</p>
{{/if}}
</section>

View File

@@ -1,5 +1,12 @@
<section data-tab="buildings" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<p class="settlement-hint">{{localize "OATHHAMMER.Settlement.BuildingHint"}}</p>
<div class="settlement-buildings-header">
<p class="settlement-hint">{{localize "OATHHAMMER.Settlement.BuildingHint"}}</p>
{{#if hasTaxBuildings}}
<a data-action="collectTaxes" class="collect-taxes-btn" data-tooltip="{{localize 'OATHHAMMER.Settlement.CollectTaxesTooltip'}}">
<i class="fa-solid fa-coins"></i> {{localize "OATHHAMMER.Settlement.CollectTaxes"}}
</a>
{{/if}}
</div>
{{#if buildings.length}}
<ul class="item-list item-list--buildings">
@@ -14,7 +21,7 @@
{{#each buildings as |building|}}
<li class="item-entry {{#if building.system.constructed}}building-constructed{{/if}}" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}">
<img src="{{building.img}}" class="item-img" />
<span class="item-name" data-tooltip="{{building.name}}">{{building.name}}</span>
<span class="item-name" {{#if building._descTooltip}}data-tooltip="{{building._descTooltip}}"{{else}}data-tooltip="{{building.name}}"{{/if}}>{{building.name}}</span>
<span class="item-constructed">
{{#unless ../isPlayMode}}
<a data-action="toggleConstructed" data-item-id="{{building.id}}" class="construct-toggle">
@@ -30,7 +37,7 @@
<span class="item-cost">{{building.system.cost}} gp</span>
<div class="item-actions">
<a data-action="edit" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}"><i class="fa-solid fa-edit"></i></a>
{{#unless ../isPlayMode}}<a data-action="delete" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}"><i class="fa-solid fa-trash"></i></a>{{/unless}}
<a data-action="delete" data-item-id="{{building.id}}" data-item-uuid="{{building.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}

View File

@@ -0,0 +1,36 @@
<section data-tab="garrison" data-group="{{tab.group}}" class="tab {{tab.cssClass}}">
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Garrison"}}
{{#unless isPlayMode}}<a data-action="createRegiment" class="create-btn"><i class="fa-solid fa-plus"></i></a>{{/unless}}
</legend>
{{#if regiments.length}}
<ul class="item-list item-list--regiment">
<li class="item-list-header">
<span></span>
<span class="col-name">{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.GritMax"}}</span>
<span>{{localize "OATHHAMMER.Label.ArmorDice"}}</span>
<span>{{localize "OATHHAMMER.Label.Movement"}}</span>
<span></span>
</li>
{{#each regiments as |regiment|}}
<li class="item-entry" data-item-id="{{regiment.id}}" data-item-uuid="{{regiment.uuid}}">
<img src="{{regiment.img}}" class="item-img" />
<span class="item-name">{{regiment.name}}</span>
<span class="item-detail">{{regiment.system.grit.max}}</span>
<span class="item-detail">{{regiment.system.armorLabel}}</span>
<span class="item-detail">{{regiment.system.movement}} ft</span>
<div class="item-actions">
<a data-action="edit" data-item-id="{{regiment.id}}" data-item-uuid="{{regiment.uuid}}" data-tooltip="{{localize 'OATHHAMMER.Label.Edit'}}"><i class="fa-solid fa-edit"></i></a>
<a data-action="delete" data-item-id="{{regiment.id}}" data-item-uuid="{{regiment.uuid}}" data-tooltip="{{localize 'OATHHAMMER.Label.Delete'}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoRegiments"}}</p>
{{/if}}
</fieldset>
</section>

View File

@@ -18,7 +18,7 @@
<span class="item-type">{{weapon.system.weaponType}}</span>
<div class="item-actions">
<a data-action="edit" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-edit"></i></a>
{{#unless ../isPlayMode}}<a data-action="delete" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-trash"></i></a>{{/unless}}
<a data-action="delete" data-item-id="{{weapon.id}}" data-item-uuid="{{weapon.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
@@ -43,7 +43,7 @@
<span class="item-type">{{localize armor.system.armorType}}</span>
<div class="item-actions">
<a data-action="edit" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-edit"></i></a>
{{#unless ../isPlayMode}}<a data-action="delete" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-trash"></i></a>{{/unless}}
<a data-action="delete" data-item-id="{{armor.id}}" data-item-uuid="{{armor.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}
@@ -78,7 +78,7 @@
</span>
<div class="item-actions">
<a data-action="edit" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-edit"></i></a>
{{#unless ../isPlayMode}}<a data-action="delete" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-trash"></i></a>{{/unless}}
<a data-action="delete" data-item-id="{{equip.id}}" data-item-uuid="{{equip.uuid}}"><i class="fa-solid fa-trash"></i></a>
</div>
</li>
{{/each}}

View File

@@ -11,22 +11,6 @@
<a data-action="adjustCurrency" data-field="system.currency.gold" data-delta="1" class="qty-btn">+</a>
</div>
</div>
<div class="currency-item">
<label>{{localize "OATHHAMMER.Currency.SP"}}</label>
<div class="currency-stepper">
<a data-action="adjustCurrency" data-field="system.currency.silver" data-delta="-1" class="qty-btn"></a>
{{formInput systemFields.currency.fields.silver value=system.currency.silver name="system.currency.silver"}}
<a data-action="adjustCurrency" data-field="system.currency.silver" data-delta="1" class="qty-btn">+</a>
</div>
</div>
<div class="currency-item">
<label>{{localize "OATHHAMMER.Currency.CP"}}</label>
<div class="currency-stepper">
<a data-action="adjustCurrency" data-field="system.currency.copper" data-delta="-1" class="qty-btn"></a>
{{formInput systemFields.currency.fields.copper value=system.currency.copper name="system.currency.copper"}}
<a data-action="adjustCurrency" data-field="system.currency.copper" data-delta="1" class="qty-btn">+</a>
</div>
</div>
</div>
</fieldset>

View File

@@ -14,10 +14,6 @@
</a>
</div>
<div class="settlement-stats flexrow">
<div class="stat-item">
<label>{{localize "OATHHAMMER.Label.Renown"}}</label>
{{formInput systemFields.renown value=system.renown name="system.renown" disabled=isPlayMode}}
</div>
<div class="stat-item">
<label>{{localize "OATHHAMMER.Label.Territory"}}</label>
{{formInput systemFields.territory value=system.territory name="system.territory" disabled=isPlayMode}}

View File

@@ -0,0 +1,38 @@
<section class="item-sheet-common npcattack-sheet">
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}}
</div>
<div class="npcattack-stats">
<div class="form-group">
<label>{{localize "OATHHAMMER.NpcAttack.FIELDS.damageDice.label"}}</label>
<div class="form-fields">
<select name="system.damageDice">
{{selectOptions dicePoolChoices selected=system.damageDice}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.NpcAttack.FIELDS.colorDiceType.label"}}</label>
<div class="form-fields">
<select name="system.colorDiceType">
{{selectOptions colorChoices selected=system.colorDiceType}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.NpcAttack.FIELDS.ap.label"}}</label>
<div class="form-fields">
<select name="system.ap">
{{selectOptions apChoices selected=system.ap}}
</select>
</div>
</div>
</div>
<fieldset>
<legend>{{localize "OATHHAMMER.NpcAttack.FIELDS.description.label"}}</legend>
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
</fieldset>
</section>

View File

@@ -0,0 +1,122 @@
<section class="item-sheet-common regiment-sheet">
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}}
</div>
<fieldset class="regiment-stats">
<legend>{{localize "OATHHAMMER.Label.Stats"}}</legend>
<div class="regiment-stats-row">
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.GritMax"}}</label>
<div class="form-fields">
<input type="number" name="system.grit.max" value="{{system.grit.max}}" min="0" max="200" />
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.ArmorDice"}}</label>
<div class="form-fields regiment-armor-fields">
<input type="number" name="system.armorDice.value" value="{{system.armorDice.value}}" min="0" max="20" />
<select name="system.armorDice.colorDiceType">
{{selectOptions colorChoices selected=system.armorDice.colorDiceType}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.Movement"}}</label>
<div class="form-fields">
<input type="number" name="system.movement" value="{{system.movement}}" min="0" max="500" /> ft
</div>
</div>
</div>
</fieldset>
<fieldset class="regiment-skills">
<legend>
{{localize "OATHHAMMER.Tab.Skills"}}
<a data-action="addSkill" class="create-btn" data-tooltip="{{localize 'OATHHAMMER.NewItem.RegimentSkill'}}"><i class="fa-solid fa-plus"></i></a>
</legend>
{{#if system.skills.length}}
<div class="regiment-skill-header regiment-skill-row">
<span>{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.Rank"}}</span>
<span>{{localize "OATHHAMMER.Label.DiceColor"}}</span>
<span></span>
</div>
{{#each system.skills as |skill idx|}}
<div class="regiment-skill-row" data-idx="{{idx}}">
<input type="text" name="system.skills.{{idx}}.name" value="{{skill.name}}" placeholder="{{localize 'OATHHAMMER.Label.SkillName'}}" />
<input type="number" name="system.skills.{{idx}}.value" value="{{skill.value}}" min="1" max="6" />
<select name="system.skills.{{idx}}.colorDiceType">
{{selectOptions ../colorChoices selected=skill.colorDiceType}}
</select>
<a data-action="removeSkill" data-idx="{{idx}}" class="item-delete"><i class="fa-solid fa-times"></i></a>
</div>
{{/each}}
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoSkills"}}</p>
{{/if}}
</fieldset>
<fieldset class="regiment-attacks">
<legend>
{{localize "OATHHAMMER.Label.Attacks"}}
<a data-action="addAttack" class="create-btn" data-tooltip="{{localize 'OATHHAMMER.NewItem.RegimentAttack'}}"><i class="fa-solid fa-plus"></i></a>
</legend>
{{#if system.attacks.length}}
<div class="regiment-attack-header regiment-attack-row">
<span>{{localize "OATHHAMMER.Label.Name"}}</span>
<span>{{localize "OATHHAMMER.Label.Dice"}}</span>
<span>{{localize "OATHHAMMER.Label.DiceColor"}}</span>
<span>AP</span>
<span>{{localize "OATHHAMMER.Label.Special"}}</span>
<span></span>
</div>
{{#each system.attacks as |attack idx|}}
<div class="regiment-attack-row" data-idx="{{idx}}">
<input type="text" name="system.attacks.{{idx}}.name" value="{{attack.name}}" placeholder="{{localize 'OATHHAMMER.Label.AttackName'}}" />
<select name="system.attacks.{{idx}}.damageDice">
{{selectOptions ../dicePoolChoices selected=attack.damageDice}}
</select>
<select name="system.attacks.{{idx}}.colorDiceType">
{{selectOptions ../colorChoices selected=attack.colorDiceType}}
</select>
<select name="system.attacks.{{idx}}.ap">
{{selectOptions ../apChoices selected=attack.ap}}
</select>
<input type="text" name="system.attacks.{{idx}}.special" value="{{attack.special}}" placeholder="—" />
<a data-action="removeAttack" data-idx="{{idx}}" class="item-delete"><i class="fa-solid fa-times"></i></a>
</div>
{{/each}}
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoAttacks"}}</p>
{{/if}}
</fieldset>
<fieldset class="regiment-traits">
<legend>
{{localize "OATHHAMMER.Tab.Traits"}}
<a data-action="addTrait" class="create-btn" data-tooltip="{{localize 'OATHHAMMER.NewItem.RegimentTrait'}}"><i class="fa-solid fa-plus"></i></a>
</legend>
{{#if system.traits.length}}
{{#each system.traits as |trait idx|}}
<div class="regiment-trait-row" data-idx="{{idx}}">
<input type="text" name="system.traits.{{idx}}.name" value="{{trait.name}}" placeholder="{{localize 'OATHHAMMER.Label.TraitName'}}" />
<input type="text" name="system.traits.{{idx}}.description" value="{{trait.description}}" placeholder="{{localize 'OATHHAMMER.Label.Description'}}" />
<a data-action="removeTrait" data-idx="{{idx}}" class="item-delete"><i class="fa-solid fa-times"></i></a>
</div>
{{/each}}
{{else}}
<p class="no-items">{{localize "OATHHAMMER.Label.NoTraits"}}</p>
{{/if}}
</fieldset>
<fieldset>
<legend>{{localize "OATHHAMMER.Label.Description"}}</legend>
<prose-mirror name="system.description" toggled="false" collaborate="false">
{{{system.description}}}
</prose-mirror>
</fieldset>
</section>

View File

@@ -0,0 +1,38 @@
<section class="item-sheet-common skillnpc-sheet">
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
{{formInput fields.name value=source.name}}
</div>
<div class="skillnpc-stats">
<div class="form-group">
<label>{{localize "OATHHAMMER.SkillNPC.FIELDS.dicePool.label"}}</label>
<div class="form-fields">
<select name="system.dicePool">
{{selectOptions dicePoolChoices selected=system.dicePool}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.SkillNPC.FIELDS.colorDiceType.label"}}</label>
<div class="form-fields">
<select name="system.colorDiceType">
{{selectOptions colorChoices selected=system.colorDiceType}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.SkillNPC.FIELDS.skillRef.label"}}</label>
<div class="form-fields">
<select name="system.skillRef">
{{selectOptions skillRefChoices selected=system.skillRef}}
</select>
</div>
</div>
</div>
<fieldset>
<legend>{{localize "OATHHAMMER.SkillNPC.FIELDS.description.label"}}</legend>
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
</fieldset>
</section>

View File

@@ -6,6 +6,14 @@
<div class="flexrow">
<div class="align-top">
{{formField systemFields.proficiencyGroup value=system.proficiencyGroup name="system.proficiencyGroup" localize=true}}
<div class="form-group">
<label>{{localize "OATHHAMMER.Weapon.FIELDS.skillOverride.label"}}</label>
<div class="form-fields">
<select name="system.skillOverride">
{{selectOptions skillChoices selected=system.skillOverride}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Weapon.FIELDS.damageMod.label"}}</label>
<div class="form-fields">
@@ -43,12 +51,29 @@
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
</fieldset>
{{#if system.isMagic}}
<fieldset>
<fieldset class="enchantment-fieldset">
<legend>{{localize "OATHHAMMER.Label.Enchantment"}}</legend>
<div class="flexrow">
{{formField systemFields.magicQuality value=system.magicQuality name="system.magicQuality" localize=true}}
{{formField systemFields.isCursed value=system.isCursed name="system.isCursed"}}
{{formField systemFields.classRestriction value=system.classRestriction name="system.classRestriction"}}
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.MagicQuality"}}</label>
<div class="form-fields">
<select name="system.magicQuality">
<option value="">—</option>
{{selectOptions systemFields.magicQuality.choices selected=system.magicQuality localize=true}}
</select>
</div>
<label class="enchant-cursed-label">
<input type="checkbox" name="system.isCursed" {{checked system.isCursed}}>
{{localize "OATHHAMMER.Label.Cursed"}}
</label>
</div>
<div class="form-group">
<label>{{localize "OATHHAMMER.Label.ClassRestriction"}}</label>
<div class="form-fields">
<select name="system.classRestriction">
<option value="">— {{localize "OATHHAMMER.ClassRestriction.None"}} —</option>
{{selectOptions classRestrictionChoices selected=system.classRestriction localize=true}}
</select>
</div>
</div>
{{formInput systemFields.magicEffect enriched=enrichedMagicEffect value=system.magicEffect name="system.magicEffect" toggled=true}}
</fieldset>

View File

@@ -0,0 +1,49 @@
<div class="oh-roll-dialog oh-weapon-dialog">
<div class="weapon-header">
<img src="{{itemImg}}" class="weapon-img-sm" alt="{{itemName}}" />
<div class="weapon-header-info">
<span class="weapon-name-lg">{{itemName}}</span>
<div class="weapon-badges">
{{#if dv}}<span class="roll-color-badge color-badge-white">DV {{dv}}</span>{{/if}}
</div>
</div>
</div>
<fieldset class="attack-options-block">
<legend>{{localize "OATHHAMMER.Dialog.Options"}}</legend>
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.DicePool"}}</label>
<select name="dicePool">
{{#each poolOptions}}<option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option>{{/each}}
</select>
</div>
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.Modifier"}}</label>
<select name="bonus">
{{#each bonusOptions}}<option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option>{{/each}}
</select>
</div>
{{#if showColor}}
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.DiceColor"}}</label>
<select name="colorOverride">
<option value="">— {{localize "OATHHAMMER.Dialog.Default"}} (white) —</option>
{{selectOptions colorChoices selected=""}}
</select>
</div>
{{/if}}
</fieldset>
<fieldset class="roll-visibility-block">
<legend>{{localize "OATHHAMMER.Dialog.Visibility"}}</legend>
<select name="visibility">
{{selectOptions rollModes selected=visibility localize=true}}
</select>
</fieldset>
</div>

View File

@@ -0,0 +1,40 @@
<div class="oh-roll-dialog oh-weapon-dialog">
<div class="weapon-header">
<img src="{{skillImg}}" class="weapon-img-sm" alt="{{skillName}}" />
<div class="weapon-header-info">
<span class="weapon-name-lg">{{skillName}}</span>
<div class="weapon-badges">
<span class="roll-color-badge color-badge-{{colorType}}">{{colorEmoji}} {{dicePool}}d6 ({{threshold}}+)</span>
</div>
</div>
</div>
<fieldset class="attack-options-block">
<legend>{{localize "OATHHAMMER.Dialog.Options"}}</legend>
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.Modifier"}}</label>
<select name="bonus">
{{#each bonusOptions}}<option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option>{{/each}}
</select>
</div>
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.DiceColor"}}</label>
<select name="colorOverride">
<option value="">— {{localize "OATHHAMMER.Dialog.Default"}} ({{colorType}}) —</option>
{{selectOptions colorChoices selected=colorType}}
</select>
</div>
</fieldset>
<fieldset class="roll-visibility-block">
<legend>{{localize "OATHHAMMER.Dialog.Visibility"}}</legend>
<select name="visibility">
{{selectOptions rollModes selected=visibility localize=true}}
</select>
</fieldset>
</div>

View File

@@ -0,0 +1,31 @@
<div class="oh-roll-dialog oh-weapon-dialog">
<div class="weapon-header">
<img src="{{weaponImg}}" class="weapon-img-sm" alt="{{weaponName}}" />
<div class="weapon-header-info">
<span class="weapon-name-lg">{{weaponName}}</span>
<div class="weapon-badges">
<span class="roll-color-badge color-badge-white">⬜ {{basePool}}d6 (4+)</span>
<span class="damage-formula-badge">{{rollType}}</span>
</div>
</div>
</div>
<fieldset class="attack-options-block">
<legend>{{localize "OATHHAMMER.Dialog.Modifier"}}</legend>
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.AttackModifier"}}</label>
<select name="bonus">
{{#each bonusOptions}}<option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option>{{/each}}
</select>
</div>
</fieldset>
<fieldset class="roll-visibility-block">
<legend>{{localize "OATHHAMMER.Dialog.Visibility"}}</legend>
<select name="visibility">
{{selectOptions rollModes selected=visibility localize=true}}
</select>
</fieldset>
</div>