Update actor sheet

This commit is contained in:
2025-12-20 00:09:42 +01:00
parent 65dfb3ddff
commit 189b03ca91
24 changed files with 4669 additions and 1791 deletions
+287 -450
View File
@@ -1,461 +1,298 @@
<section
class="character-main character-main-{{ifThen isPlayMode 'play' 'edit'}}"
>
{{log "character-main" this}}
<fieldset>
<legend>{{localize "PRISMRPG.Label.pc"}}</legend>
<div class="character-pc character-pc-{{ifThen isPlayMode 'play' 'edit'}}">
<div class="character-left">
<div class="character-left-image">
<img
class="character-img"
src="{{actor.img}}"
data-edit="img"
data-action="editImage"
data-tooltip="{{actor.name}}"
/>
</div>
<fieldset class="">
<div class="flexrow character-hp">
<span class="name">{{localize "PRISMRPG.Label.HP"}}</span>
{{formInput
systemFields.hp.fields.value
value=system.hp.value
disabled=isPlayMode
classes="character-hp-value"
}}
&nbsp;/&nbsp;
{{formInput
systemFields.hp.fields.max
value=system.hp.max
disabled=isPlayMode
classes="character-hp-value"
}}
</div>
<div class="flexrow character-hp">
<span class="name">{{localize "PRISMRPG.Label.grit"}}</span>
{{formInput
systemFields.grit.fields.current
value=system.grit.current
disabled=isPlayMode
classes="character-hp"
}}
<span class="name">{{localize "PRISMRPG.Label.earned"}}</span>
{{formInput
systemFields.grit.fields.earned
value=system.grit.earned
disabled=isPlayMode
classes="character-hp"
}}
</div>
<div class="flexrow character-hp">
<span class="name">{{localize "PRISMRPG.Label.luck"}}</span>
{{formInput
systemFields.luck.fields.current
value=system.luck.current
disabled=isPlayMode
classes="character-hp"
}}
<span class="name">{{localize "PRISMRPG.Label.earned"}}</span>
{{formInput
systemFields.luck.fields.earned
value=system.luck.earned
disabled=isPlayMode
classes="character-hp"
}}
</div>
<div class="flexrow">
<span class="">{{localize
"PRISMRPG.Label.damageResistanceShort"
}}</span>
{{formInput
systemFields.hp.fields.damageResistance
value=system.hp.fields.damageResistance
disabled=isPlayMode
classes="character-hp"
}}
</div>
</fieldset>
<section class="character-main-v2">
{{log "character-main-v2" this}}
<div class="character-sheet-wrapper">
{{! Character Header with Name }}
<div class="character-header">
<div class="character-name-banner">
{{formInput
fields.name
value=source.name
rootId=partId
disabled=isPlayMode
placeholder="Character Name"
}}
</div>
<div class="character-right">
<div class="character-name">
{{formInput
fields.name
value=source.name
rootId=partId
disabled=isPlayMode
}}
<a
class="control"
data-action="toggleSheet"
data-tooltip="PRISMRPG.ToggleSheet"
data-tooltip-direction="UP"
>
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
</a>
</div>
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
<div class="character-toggle-controls">
<a
class="control"
data-action="toggleSheet"
data-tooltip="PRISMRPG.ToggleSheet"
data-tooltip-direction="UP"
>
<legend>{{localize "PRISMRPG.Label.Saves"}}</legend>
<div class="character-saves">
<div class="character-save">
<span class="name"><a
class="rollable"
data-roll-type="save"
data-roll-key="will"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "PRISMRPG.Label.saves.will"}}
</a></span>
{{formField
systemFields.saves.fields.will.fields.value
value=system.saves.will.value
disabled=true
}}
<span class="name">
<a
class="rollable"
data-roll-type="save"
data-roll-key="dodge"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "PRISMRPG.Label.saves.dodge"}}
</a>
</span>
{{formField
systemFields.saves.fields.dodge.fields.value
value=system.saves.dodge.value
disabled=true
}}
<span class="name">
<a
class="rollable"
data-roll-type="save"
data-roll-key="toughness"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "PRISMRPG.Label.saves.toughness"}}
</a>
</span>
{{formField
systemFields.saves.fields.toughness.fields.value
value=system.saves.toughness.value
disabled=true
}}
</div>
<div class="character-save">
<span class="name">
<a
class="rollable"
data-roll-type="save"
data-roll-key="contagion"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "PRISMRPG.Label.saves.contagion"}}
</a>
</span>
{{formField
systemFields.saves.fields.contagion.fields.value
value=system.saves.contagion.value
disabled=true
}}
<span class="name">
<a
class="rollable"
data-roll-type="save"
data-roll-key="poison"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "PRISMRPG.Label.saves.poison"}}
</a>
</span>
{{formField
systemFields.saves.fields.poison.fields.value
value=system.saves.poison.value
disabled=true
}}
<!--
<span class="name-pain">
<a class="rollable" data-roll-type="save" data-roll-key="pain" data-roll-dice="D12"><i
class="lf-roll-small fa-solid fa-dice-d12"></i>
{{localize "PRISMRPG.Label.saves.pain"}}
</a>
</span>
<span class="name-pain">
<a class="rollable" data-roll-type="save" data-roll-key="pain" data-roll-dice="D20"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "PRISMRPG.Label.saves.pain"}}
</a>
</span>
{{formField systemFields.saves.fields.pain.fields.value value=system.saves.pain.value disabled=true}}
<span data-tooltip="Pain save if wound exceeds">
{{formField systemFields.hp.fields.painDamage value=system.hp.painDamage disabled=isPlayMode
tooltip="Pain Damage"}}
</span>
-->
</div>
</div>
</fieldset>
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "PRISMRPG.Label.Challenges"}}</legend>
<div class="character-challenges">
<div class="character-challenge">
<span class="name"><a
class="rollable"
data-roll-type="challenge"
data-roll-key="str"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"PRISMRPG.Label.challenges.strength"
}}</a></span>
{{formField
systemFields.challenges.fields.str.fields.value
value=system.challenges.str.value
disabled=true
}}
<span class="name"><a
class="rollable"
data-roll-type="challenge"
data-roll-key="agility"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"PRISMRPG.Label.challenges.agility"
}}</a></span>
{{formField
systemFields.challenges.fields.agility.fields.value
value=system.challenges.agility.value
disabled=true
}}
<span class="name"><a
class="rollable"
data-roll-type="challenge"
data-roll-key="dying"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"PRISMRPG.Label.challenges.dying"
}}</a></span>
{{formField
systemFields.challenges.fields.dying.fields.value
value=system.challenges.dying.value
disabled=true
}}
</div>
</div>
</fieldset>
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "PRISMRPG.Label.Movement"}}</legend>
<div class="character-movements">
<div class="character-movement">
<span class="name">{{localize
"PRISMRPG.Label.movement.walk"
}}</span>
{{formField
systemFields.movement.fields.walk
value=system.movement.walk
disabled=isPlayMode
}}
<span class="name">{{localize
"PRISMRPG.Label.movement.jog"
}}</span>
{{formField
systemFields.movement.fields.jog
value=system.movement.jog
disabled=isPlayMode
}}
<span class="name">{{localize
"PRISMRPG.Label.movement.run"
}}</span>
{{formField
systemFields.movement.fields.run
value=system.movement.run
disabled=isPlayMode
}}
<span class="name">{{localize
"PRISMRPG.Label.movement.sprint"
}}</span>
{{formField
systemFields.movement.fields.sprint
value=system.movement.sprint
disabled=isPlayMode
}}
</div>
<div class="character-movement">
<span class="name">{{localize
"PRISMRPG.Label.movement.jumpBroad"
}}</span>
{{formField
systemFields.jump.fields.broad
value=system.jump.broad
disabled=isPlayMode
}}
<span class="name">{{localize
"PRISMRPG.Label.movement.jumpRunning"
}}</span>
{{formField
systemFields.jump.fields.running
value=system.jump.running
disabled=isPlayMode
}}
<span class="name">{{localize
"PRISMRPG.Label.movement.jumpVertical"
}}</span>
{{formField
systemFields.jump.fields.vertical
value=system.jump.vertical
disabled=isPlayMode
}}
</div>
</div>
</fieldset>
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
</a>
</div>
</div>
</fieldset>
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "PRISMRPG.Label.characteristics"}}</legend>
<div class="character-characteristic">
<span>{{localize "PRISMRPG.Label.str"}}</span>
{{formField
systemFields.characteristics.fields.str.fields.value
value=system.characteristics.str.value
disabled=isPlayMode
data-char-id="str"
}}
{{formField
systemFields.characteristics.fields.str.fields.percent
value=system.characteristics.str.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "PRISMRPG.Label.int"}}</span>
{{formField
systemFields.characteristics.fields.int.fields.value
value=system.characteristics.int.value
disabled=isPlayMode
data-char-id="int"
}}
<div class="character-main-grid">
{{! Left Column - Portrait, Attributes & HP }}
<div class="character-left-column">
{{! Portrait + HP column }}
<div class="portrait-hp-column">
{{! Portrait }}
<div class="character-portrait">
<img
class="character-img"
src="{{actor.img}}"
data-edit="img"
data-action="editImage"
data-tooltip="{{actor.name}}"
/>
</div>
{{formField
systemFields.characteristics.fields.int.fields.percent
value=system.characteristics.int.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "PRISMRPG.Label.wis"}}</span>
{{formField
systemFields.characteristics.fields.wis.fields.value
value=system.characteristics.wis.value
disabled=isPlayMode
data-char-id="wis"
}}
{{formField
systemFields.characteristics.fields.wis.fields.percent
value=system.characteristics.wis.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "PRISMRPG.Label.dex"}}</span>
{{formField
systemFields.characteristics.fields.dex.fields.value
value=system.characteristics.dex.value
disabled=isPlayMode
data-char-id="wis"
}}
{{formField
systemFields.characteristics.fields.dex.fields.percent
value=system.characteristics.dex.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "PRISMRPG.Label.con"}}</span>
{{formField
systemFields.characteristics.fields.con.fields.value
value=system.characteristics.con.value
disabled=isPlayMode
data-char-id="con"
}}
{{formField
systemFields.characteristics.fields.con.fields.percent
value=system.characteristics.con.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "PRISMRPG.Label.cha"}}</span>
{{formField
systemFields.characteristics.fields.cha.fields.value
value=system.characteristics.cha.value
disabled=isPlayMode
data-char-id="cha"
}}
{{formField
systemFields.characteristics.fields.cha.fields.percent
value=system.characteristics.cha.percent
disabled=isPlayMode
type="number"
}}
</div>
</fieldset>
{{!-- Sub-Attributes (Prism RPG) --}}
<fieldset
class="character-subattributes character-subattributes-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "PRISMRPG.Label.subAttributes"}}</legend>
<div class="subattributes-grid">
{{#each config.SUB_ATTRIBUTES as |subAttr|}}
<div class="character-subattribute" data-tooltip="{{localize subAttr.description}}">
<span class="subattr-label">{{localize subAttr.label}}</span>
<span class="subattr-value">{{lookup (lookup ../system.subAttributes subAttr.id) 'value'}}</span>
<span class="subattr-parents">({{#each subAttr.parents}}{{localize (concat "PRISMRPG.Label." this)}}{{#unless @last}}/{{/unless}}{{/each}})</span>
{{! HP Shields (3 shields) - Below portrait }}
<div class="hp-shields-section">
<div class="hp-shields">
<div class="hp-item">
<div class="hp-label">HP</div>
<div class="hp-value">
{{formInput
systemFields.hp.fields.value
value=system.hp.value
disabled=isPlayMode
}}
</div>
<div class="hp-separator">/</div>
<div class="hp-max">
{{formInput
systemFields.hp.fields.max
value=system.hp.max
disabled=isPlayMode
}}
</div>
</div>
<div class="hp-item">
<div class="hp-label">MAGIC</div>
<div class="hp-value">
{{formInput
systemFields.magicPoints.fields.value
value=system.magicPoints.value
disabled=isPlayMode
}}
</div>
<div class="hp-separator">/</div>
<div class="hp-max">
{{formInput
systemFields.magicPoints.fields.max
value=system.magicPoints.max
disabled=isPlayMode
}}
</div>
</div>
<div class="hp-item">
<div class="hp-label">ARMOR</div>
<div class="hp-value">
{{formInput
systemFields.armorPoints.fields.value
value=system.armorPoints.value
disabled=isPlayMode
}}
</div>
<div class="hp-separator">/</div>
<div class="hp-max">
{{formInput
systemFields.armorPoints.fields.max
value=system.armorPoints.max
disabled=isPlayMode
}}
</div>
</div>
</div>
</div>
</div>
{{/each}}
{{! Core Attributes (STR, DEX, CON, INT, WIS, CHA) }}
<div class="character-attributes">
<div class="attribute-shield">
<div class="attribute-label">
<a class="rollable" data-roll-type="characteristic" data-roll-key="str">
<i class="fa-duotone fa-solid fa-dice-d20"></i>
STR
</a>
</div>
<div class="attribute-value">
{{formInput
systemFields.characteristics.fields.str.fields.value
value=system.characteristics.str.value
disabled=isPlayMode
}}
</div>
<div class="attribute-save" data-tooltip="Saving">
{{formInput
systemFields.saves.fields.str.fields.value
value=system.saves.str.value
disabled=true
}}
</div>
</div>
<div class="attribute-shield">
<div class="attribute-label">
<a class="rollable" data-roll-type="characteristic" data-roll-key="dex">
<i class="fa-duotone fa-solid fa-dice-d20"></i>
DEX
</a>
</div>
<div class="attribute-value">
{{formInput
systemFields.characteristics.fields.dex.fields.value
value=system.characteristics.dex.value
disabled=isPlayMode
}}
</div>
<div class="attribute-save" data-tooltip="Saving">
{{formInput
systemFields.saves.fields.dex.fields.value
value=system.saves.dex.value
disabled=true
}}
</div>
</div>
<div class="attribute-shield">
<div class="attribute-label">
<a class="rollable" data-roll-type="characteristic" data-roll-key="con">
<i class="fa-duotone fa-solid fa-dice-d20"></i>
CON
</a>
</div>
<div class="attribute-value">
{{formInput
systemFields.characteristics.fields.con.fields.value
value=system.characteristics.con.value
disabled=isPlayMode
}}
</div>
<div class="attribute-save" data-tooltip="Saving">
{{formInput
systemFields.saves.fields.con.fields.value
value=system.saves.con.value
disabled=true
}}
</div>
</div>
<div class="attribute-shield">
<div class="attribute-label">
<a class="rollable" data-roll-type="characteristic" data-roll-key="int">
<i class="fa-duotone fa-solid fa-dice-d20"></i>
INT
</a>
</div>
<div class="attribute-value">
{{formInput
systemFields.characteristics.fields.int.fields.value
value=system.characteristics.int.value
disabled=isPlayMode
}}
</div>
<div class="attribute-save" data-tooltip="Saving">
{{formInput
systemFields.saves.fields.int.fields.value
value=system.saves.int.value
disabled=true
}}
</div>
</div>
<div class="attribute-shield">
<div class="attribute-label">
<a class="rollable" data-roll-type="characteristic" data-roll-key="wis">
<i class="fa-duotone fa-solid fa-dice-d20"></i>
WIS
</a>
</div>
<div class="attribute-value">
{{formInput
systemFields.characteristics.fields.wis.fields.value
value=system.characteristics.wis.value
disabled=isPlayMode
}}
</div>
<div class="attribute-save" data-tooltip="Saving">
{{formInput
systemFields.saves.fields.wis.fields.value
value=system.saves.wis.value
disabled=true
}}
</div>
</div>
<div class="attribute-shield">
<div class="attribute-label">
<a class="rollable" data-roll-type="characteristic" data-roll-key="cha">
<i class="fa-duotone fa-solid fa-dice-d20"></i>
CHA
</a>
</div>
<div class="attribute-value">
{{formInput
systemFields.characteristics.fields.cha.fields.value
value=system.characteristics.cha.value
disabled=isPlayMode
}}
</div>
<div class="attribute-save" data-tooltip="Saving">
{{formInput
systemFields.saves.fields.cha.fields.value
value=system.saves.cha.value
disabled=true
}}
</div>
</div>
</div>
</div>
{{! Right Column - Race, Classes }}
<div class="character-right-column">
{{! Race }}
<div class="race-section">
<div class="race-box">
<h3 class="section-title">Race</h3>
{{#if race}}
<div class="race-item" data-item-id="{{race.id}}" data-item-uuid="{{race.uuid}}">
<img class="item-img" src="{{race.img}}" data-tooltip="{{race.name}}" />
<div class="race-name">{{race.name}}</div>
<div class="controls">
<a data-tooltip="{{localize 'PRISMRPG.Edit'}}" data-action="edit" data-item-id="{{race.id}}"
data-item-uuid="{{race.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'PRISMRPG.Delete'}}" data-action="delete" data-item-id="{{race.id}}"
data-item-uuid="{{race.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{else}}
<div class="no-race">
<p>{{localize "PRISMRPG.Message.dropRace"}}</p>
</div>
{{/if}}
</div>
</div>
{{! Classes (Three boxes) }}
<div class="classes-section">
{{#each classSlots as |classItem index|}}
<div class="class-box">
<h4 class="class-label">Class {{add index 1}}</h4>
<div class="class-content">
{{#if classItem}}
<div class="class-item" data-item-id="{{classItem.id}}" data-item-uuid="{{classItem.uuid}}">
<img class="item-img" src="{{classItem.img}}" data-tooltip="{{classItem.name}}" />
<div class="class-name">{{classItem.name}}</div>
<div class="controls">
<a data-tooltip="{{localize 'PRISMRPG.Edit'}}" data-action="edit" data-item-id="{{classItem.id}}"
data-item-uuid="{{classItem.uuid}}"><i class="fas fa-edit"></i></a>
<a data-tooltip="{{localize 'PRISMRPG.Delete'}}" data-action="delete" data-item-id="{{classItem.id}}"
data-item-uuid="{{classItem.uuid}}"><i class="fas fa-trash"></i></a>
</div>
</div>
{{else}}
<div class="no-class">
<p>{{localize "PRISMRPG.Message.dropClass"}}</p>
</div>
{{/if}}
</div>
</div>
{{/each}}
</div>
</div>
</div>
</fieldset>
</div>
</div>
</section>
+2 -60
View File
@@ -1,68 +1,10 @@
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="skills" data-group="sheet">
<div class="main-div">
{{!-- Core Skill Selection (Prism RPG) --}}
<fieldset class="core-skill-selection">
<legend data-tooltip="{{localize 'PRISMRPG.Tooltip.coreSkill'}}" data-tooltip-direction="UP">
{{localize "PRISMRPG.Label.coreSkill"}}
</legend>
<div class="core-skill-info">
{{#if system.coreSkill.skill}}
<div class="selected-core-skill">
<span class="core-skill-name">{{localize (concat "PRISMRPG.CoreSkill." system.coreSkill.skill)}}</span>
<span class="core-skill-bonus">+5 {{localize "PRISMRPG.Label.basicChecks"}}</span>
{{#if system.coreSkill.attributeChoice}}
<span class="attribute-bonus">+2 {{localize (concat "PRISMRPG.Label." system.coreSkill.attributeChoice)}}</span>
{{/if}}
<span class="advanced-checks">{{localize "PRISMRPG.Label.advancedChecksEnabled"}}</span>
</div>
{{else}}
<div class="no-core-skill">
<p>{{localize "PRISMRPG.Message.selectCoreSkill"}}</p>
<select name="system.coreSkill.skill" {{#if isPlayMode}}disabled{{/if}}>
<option value="">{{localize "PRISMRPG.Label.chooseSkill"}}</option>
{{#each config.CORE_SKILLS as |skill skillId|}}
<option value="{{skillId}}">{{localize skill.label}}</option>
{{/each}}
</select>
</div>
{{/if}}
</div>
</fieldset>
{{!-- Available Core Skills Reference --}}
<fieldset class="core-skills-list">
<legend data-tooltip="{{localize 'PRISMRPG.Tooltip.coreSkills'}}" data-tooltip-direction="UP">
{{localize "PRISMRPG.Label.availableCoreSkills"}}
</legend>
<div class="skills-grid">
{{#each config.CORE_SKILLS as |skill skillId|}}
<div class="core-skill-item {{#if (eq ../system.coreSkill.skill skillId)}}selected{{/if}}"
data-skill-id="{{skillId}}">
<div class="skill-header">
<span class="skill-name">{{localize skill.label}}</span>
{{#if (eq ../system.coreSkill.skill skillId)}}
<span class="badge-core">{{localize "PRISMRPG.Label.yourCoreSkill"}}</span>
{{/if}}
</div>
<div class="skill-attributes">
<span class="attribute-choices-label">{{localize "PRISMRPG.Label.attributeChoices"}}:</span>
{{#each skill.attributeChoices as |attr|}}
<span class="attribute-choice {{#if (eq ../../system.coreSkill.attributeChoice attr)}}chosen{{/if}}">
{{localize (concat "PRISMRPG.Label." attr)}}
</span>
{{#unless @last}}/{{/unless}}
{{/each}}
</div>
</div>
{{/each}}
</div>
</fieldset>
{{!-- Skills Items (if any) --}}
{{!-- Skills Items --}}
<fieldset>
<legend data-tooltip="{{localize 'PRISMRPG.Tooltip.skills'}}" data-tooltip-direction="UP">
{{localize "PRISMRPG.Label.customSkills"}}
{{localize "PRISMRPG.Label.skills"}}
</legend>
<div class="skills">
{{#each skills as |item|}}
+257
View File
@@ -0,0 +1,257 @@
<section class="character-subattributes tab" data-group="sheet" data-tab="subattributes">
{{log "character-subattributes" this}}
<div class="subattributes-content">
<h2 class="section-header">
<i class="fa-solid fa-diagram-project"></i>
Sub-Attributes
</h2>
<p class="section-description">
Sub-attributes are derived from the average of two primary characteristics.
</p>
<div class="subattributes-list">
{{#each (entries config.SUB_ATTRIBUTES) as |entry|}}
{{#with entry.1 as |subAttr|}}
<div class="subattribute-item">
<div class="subattribute-header">
<div class="subattribute-name">
<i class="fa-solid fa-circle-nodes"></i>
<span>{{localize subAttr.label}}</span>
</div>
<div class="subattribute-value">
<input
type="text"
value="{{lookup ../system.subAttributes subAttr.id 'value'}}"
disabled
readonly
/>
</div>
</div>
<div class="subattribute-details">
<div class="subattribute-parents">
<span class="parent-label">From:</span>
{{#each subAttr.parents as |parentKey|}}
<span class="parent-char">
{{uppercase parentKey}}
({{lookup ../../system.characteristics parentKey 'value'}})
</span>
{{/each}}
</div>
<div class="subattribute-description">
{{localize subAttr.description}}
</div>
</div>
</div>
{{/with}}
{{/each}}
</div>
</div>
</section>
<div class="subattributes-wrapper">
{{! Character Header with Age, Length, Weight, Sex, Skin, Hair }}
<div class="character-bio-header">
<div class="bio-row">
<div class="bio-field">
<label>Age</label>
{{formInput
systemFields.bio.fields.age
value=system.bio.age
disabled=isPlayMode
}}
</div>
<div class="bio-field">
<label>Length</label>
{{formInput
systemFields.bio.fields.length
value=system.bio.length
disabled=isPlayMode
}}
</div>
<div class="bio-field">
<label>Weight</label>
{{formInput
systemFields.bio.fields.weight
value=system.bio.weight
disabled=isPlayMode
}}
</div>
</div>
<div class="bio-row">
<div class="bio-field">
<label>Sex</label>
{{formInput
systemFields.bio.fields.sex
value=system.bio.sex
disabled=isPlayMode
}}
</div>
<div class="bio-field">
<label>Skin</label>
{{formInput
systemFields.bio.fields.skin
value=system.bio.skin
disabled=isPlayMode
}}
</div>
<div class="bio-field">
<label>Hair</label>
{{formInput
systemFields.bio.fields.hair
value=system.bio.hair
disabled=isPlayMode
}}
</div>
</div>
</div>
{{! Sub-Attributes Table }}
<div class="subattributes-section">
<h3 class="section-title">Sub-Attribute</h3>
<div class="subattributes-table">
<div class="subattr-column">
<div class="subattr-header">Prowess</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.prowess
value=system.subattributes.prowess
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Vigor</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.vigor
value=system.subattributes.vigor
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Competence</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.competence
value=system.subattributes.competence
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Authority</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.authority
value=system.subattributes.authority
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Presence</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.presence
value=system.subattributes.presence
disabled=isPlayMode
}}
</div>
</div>
<div class="subattr-column">
<div class="subattr-header">Willpower</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.willpower
value=system.subattributes.willpower
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Resilience</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.resilience
value=system.subattributes.resilience
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Cunning</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.cunning
value=system.subattributes.cunning
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Guile</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.guile
value=system.subattributes.guile
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Sovereignty</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.sovereignty
value=system.subattributes.sovereignty
disabled=isPlayMode
}}
</div>
</div>
<div class="subattr-column">
<div class="subattr-header">Stamina</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.stamina
value=system.subattributes.stamina
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Initiative</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.initiative
value=system.subattributes.initiative
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Wit</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.wit
value=system.subattributes.wit
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Grace</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.grace
value=system.subattributes.grace
disabled=isPlayMode
}}
</div>
<div class="subattr-header">Tenacity</div>
<div class="subattr-cell">
{{formInput
systemFields.subattributes.fields.tenacity
value=system.subattributes.tenacity
disabled=isPlayMode
}}
</div>
</div>
</div>
</div>
{{! Proficiencies Section }}
<div class="proficiencies-section">
<h3 class="section-title">Proficiencies</h3>
<div class="proficiencies-box">
{{formInput
systemFields.proficiencies
value=system.proficiencies
disabled=isPlayMode
type="textarea"
}}
</div>
</div>
</div>
</section>
+48
View File
@@ -0,0 +1,48 @@
<section class="character-subattributes tab" data-group="sheet" data-tab="subattributes">
<div class="subattributes-content">
<h2 class="section-header">
<i class="fa-solid fa-diagram-project"></i>
Sub-Attributes
</h2>
<p class="section-description">
Sub-attributes are derived from the average of two primary characteristics.
</p>
<div class="subattributes-list">
{{#each (entries config.SUB_ATTRIBUTES) as |entry|}}
{{#with entry.[1] as |subAttr|}}
<div class="subattribute-item">
<div class="subattribute-header">
<div class="subattribute-name">
<i class="fa-solid fa-circle-nodes"></i>
<span>{{localize subAttr.label}}</span>
</div>
<div class="subattribute-value">
<input
type="text"
value="{{lookup ../system.subAttributes subAttr.id 'value'}}"
disabled
readonly
/>
</div>
</div>
<div class="subattribute-details">
<div class="subattribute-parents">
<span class="parent-label">From:</span>
{{#each subAttr.parents as |parentKey|}}
<span class="parent-char">
{{uppercase parentKey}}
({{lookup ../../system.characteristics parentKey 'value'}})
</span>
{{/each}}
</div>
<div class="subattribute-description">
{{localize subAttr.description}}
</div>
</div>
</div>
{{/with}}
{{/each}}
</div>
</div>
</section>
+119
View File
@@ -0,0 +1,119 @@
<div class="prismrpg-roll-dialog">
<fieldSet class="">
<legend>{{localize (concat "PRISMRPG.Label." rollType)}} - {{actorName}}</legend>
{{#if rollTarget.tokenId}}
<div class="dialog-save">
<a class="goto-token-button" data-action="gotoToken" data-token-id="{{rollTarget.tokenId}}">{{localize
"PRISMRPG.Label.gotoToken"}} </a>
</div>
{{/if}}
{{#if (match rollType "attack")}}
<div class="dialog-save">Attack roll ! - {{rollTarget.name}}</div>
{{/if}}
{{#if (match rollType "defense")}}
<div class="dialog-save">Defense roll ! - {{rollTarget.name}}</div>
{{/if}}
{{#if hasModifier}}
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}} + {{baseValue}}</div>
{{else}}
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}}</div>
{{/if}}
{{#if rollTarget.weapon}}
<div class="dialog-save">{{localize "PRISMRPG.Label.baseModifier"}} : {{rollTarget.charModifier}}</div>
<div class="dialog-save">{{localize "PRISMRPG.Label.weapon"}} : {{rollTarget.weapon.name}}</div>
<div class="dialog-save">{{localize "PRISMRPG.Label.skill"}} : {{rollTarget.name}}</div>
<div class="dialog-save">{{localize "PRISMRPG.Label.skillBonus"}} : {{rollTarget.weaponSkillModifier}}</div>
{{/if}}
{{#if (match rollType "attack")}}
<div class="dialog-save">Add Granted Attack Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{#if rollTarget.weapon}}
{{#if (eq rollTarget.weapon.system.weaponType "melee")}}
{{else}}
<div class="dialog-save">Point Blank Range Attack
<input type="checkbox" data-action="selectPointBlank" name="pointBlankV">
</div>
<div class="dialog-save">Beyond Skill Range Attack
<input type="checkbox" data-action="selectBeyondSkill" name="beyondSkillV">
</div>
<div class="dialog-save">Let it Fly (Pure D20E)
<input type="checkbox" data-action="selectLetItFly" name="letItFlyV">
</div>
<div class="dialog-save">Aiming
<select name="attackerAim" data-tooltip-direction="UP">
{{selectOptions attackerAimChoices selected=attackerAim}}
</select>
</div>
{{/if}}
{{/if}}
{{/if}}
{{#if (match rollType "defense")}}
<div class="dialog-save">Add Granted Defense Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{/if}}
{{#if (match rollType "damage")}}
<div class="dialog-save">Add Granted Damage Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{/if}}
{{#if rollTarget.staticModifier}}
<div class="dialog-save">Static modifier : +{{rollTarget.staticModifier}}</div>
{{/if}}
</fieldSet>
{{#if hasFavor}}
<fieldSet class="dialog-favor">
<legend>{{localize "PRISMRPG.Roll.favorDisfavor"}}</legend>
<select name="favor" class="favor-choice" data-tooltip-direction="UP">
{{selectOptions choiceFavor selected=favor}}
</select>
</fieldSet>
{{/if}}
{{#if hasModifier}}
<fieldSet class="dialog-modifier">
<legend>{{localize "PRISMRPG.Roll.modifierBonusMalus"}}</legend>
<select name="modifier" data-tooltip-direction="UP">
{{selectOptions choiceModifier selected=modifier}}
</select>
{{#if (eq rollType "save")}}
{{#if rollTarget.magicUser}}
<div>
<span>Save against spell (+{{rollTarget.actorModifiers.saveModifier}}) ?</span>
<input type="checkbox" name="saveSpellCheck" data-action="saveSpellCheck">
</div>
{{/if}}
{{/if}}
</fieldSet>
{{/if}}
{{#if hasChangeDice}}
<fieldSet class="dialog-modifier">
<legend>{{localize "PRISMRPG.Roll.changeDice"}}</legend>
<select name="changeDice" data-tooltip-direction="UP">
{{selectOptions choiceDice selected=changeDice}}
</select>
</fieldSet>
{{/if}}
<fieldSet>
<legend>{{localize "PRISMRPG.Roll.visibility"}}</legend>
<select name="visibility">
{{selectOptions rollModes selected=visibility localize=true}}
</select>
</fieldSet>
</div>
+45 -99
View File
@@ -1,111 +1,59 @@
<div class="prismrpg-roll-dialog">
<fieldSet class="">
<legend>{{localize (concat "PRISMRPG.Label." rollType)}} - {{actorName}}</legend>
{{#if rollTarget.tokenId}}
<div class="dialog-save">
<a class="goto-token-button" data-action="gotoToken" data-token-id="{{rollTarget.tokenId}}">{{localize
"PRISMRPG.Label.gotoToken"}} </a>
</div>
{{/if}}
{{#if (match rollType "attack")}}
<div class="dialog-save">Attack roll ! - {{rollTarget.name}}</div>
{{/if}}
{{#if (match rollType "defense")}}
<div class="dialog-save">Defense roll ! - {{rollTarget.name}}</div>
{{/if}}
<fieldSet>
<legend>{{localize (concat "PRISMRPG.Label." rollType)}}
-
{{actorName}}</legend>
{{#if hasModifier}}
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}} + {{baseValue}}</div>
<div class="dialog-save">
<strong>{{upperFirst rollName}}</strong>
:
{{dice}}
+
{{baseValue}}
</div>
{{else}}
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}}</div>
{{/if}}
{{#if rollTarget.weapon}}
<div class="dialog-save">{{localize "PRISMRPG.Label.baseModifier"}} : {{rollTarget.charModifier}}</div>
<div class="dialog-save">{{localize "PRISMRPG.Label.weapon"}} : {{rollTarget.weapon.name}}</div>
<div class="dialog-save">{{localize "PRISMRPG.Label.skill"}} : {{rollTarget.name}}</div>
<div class="dialog-save">{{localize "PRISMRPG.Label.skillBonus"}} : {{rollTarget.weaponSkillModifier}}</div>
<div class="dialog-save">
<strong>{{upperFirst rollName}}</strong>
:
{{dice}}
</div>
{{/if}}
{{#if (match rollType "attack")}}
<div class="dialog-save">Add Granted Attack Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{#if rollTarget.weapon}}
{{#if (eq rollTarget.weapon.system.weaponType "melee")}}
{{else}}
<div class="dialog-save">Point Blank Range Attack
<input type="checkbox" data-action="selectPointBlank" name="pointBlankV">
</div>
<div class="dialog-save">Beyond Skill Range Attack
<input type="checkbox" data-action="selectBeyondSkill" name="beyondSkillV">
</div>
<div class="dialog-save">Let it Fly (Pure D20E)
<input type="checkbox" data-action="selectLetItFly" name="letItFlyV">
</div>
<div class="dialog-save">Aiming
<select name="attackerAim" data-tooltip-direction="UP">
{{selectOptions attackerAimChoices selected=attackerAim}}
<div class="dialog-save">
{{localize "PRISMRPG.Label.weapon"}}
:
{{rollTarget.weapon.name}}
</div>
<div class="dialog-save">
{{localize "PRISMRPG.Label.skill"}}
:
{{rollTarget.name}}
</div>
{{/if}}
</fieldSet>
{{#if hasAdvantage}}
<fieldSet class="dialog-advantage">
<legend>{{localize "PRISMRPG.Roll.advantageDisadvantage"}}</legend>
<select
name="advantage"
class="advantage-choice"
data-tooltip-direction="UP"
>
{{selectOptions choiceAdvantage selected=advantage}}
</select>
</div>
{{/if}}
{{/if}}
{{/if}}
{{#if (match rollType "defense")}}
<div class="dialog-save">Add Granted Defense Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{/if}}
{{#if (match rollType "damage")}}
<div class="dialog-save">Add Granted Damage Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{/if}}
{{#if rollTarget.staticModifier}}
<div class="dialog-save">Static modifier : +{{rollTarget.staticModifier}}</div>
{{/if}}
</fieldSet>
{{#if hasFavor}}
<fieldSet class="dialog-favor">
<legend>{{localize "PRISMRPG.Roll.favorDisfavor"}}</legend>
<select name="favor" class="favor-choice" data-tooltip-direction="UP">
{{selectOptions choiceFavor selected=favor}}
</select>
</fieldSet>
</fieldSet>
{{/if}}
{{#if hasModifier}}
<fieldSet class="dialog-modifier">
<legend>{{localize "PRISMRPG.Roll.modifierBonusMalus"}}</legend>
<select name="modifier" data-tooltip-direction="UP">
{{selectOptions choiceModifier selected=modifier}}
</select>
{{#if (eq rollType "save")}}
{{#if rollTarget.magicUser}}
<div>
<span>Save against spell (+{{rollTarget.actorModifiers.saveModifier}}) ?</span>
<input type="checkbox" name="saveSpellCheck" data-action="saveSpellCheck">
</div>
{{/if}}
{{/if}}
</fieldSet>
{{/if}}
{{#if hasChangeDice}}
<fieldSet class="dialog-modifier">
<legend>{{localize "PRISMRPG.Roll.changeDice"}}</legend>
<select name="changeDice" data-tooltip-direction="UP">
{{selectOptions choiceDice selected=changeDice}}
</select>
</fieldSet>
<fieldSet class="dialog-modifier">
<legend>{{localize "PRISMRPG.Roll.modifierBonusMalus"}}</legend>
<select name="modifier" data-tooltip-direction="UP">
{{selectOptions choiceModifier selected=modifier}}
</select>
</fieldSet>
{{/if}}
<fieldSet>
@@ -114,6 +62,4 @@
{{selectOptions rollModes selected=visibility localize=true}}
</select>
</fieldSet>
</div>