All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

297 lines
14 KiB

<form autocomplete="off" onsubmit="event.preventDefault();">
<div class="attribute-rows">
<header class="row{{#if manual}} not-eligible{{/if}}">
<div class="row-heading">
<h3>{{localize "PF2E.Actor.Character.AttributeBuilder.Title"}}</h3>
</div>
<div class="attributes">
{{#each attributeModifiers as |attribute key|}}
<div class="row-column">
<h3>{{localize (concat "PF2E.AbilityId." key)}}</h3>
</div>
{{/each}}
</div>
</header>
<!-- ANCESTRY BOOSTS -->
<section class="row{{#if manual}} not-eligible{{/if}}" data-section="ancestry">
{{#if ancestryBoosts}}
<div class="row-heading">
{{#if ancestryBoosts.remaining}}<div class="remaining extra">{{ancestryBoosts.remaining}}</div>{{/if}}
<img class="" src="{{ancestry.img}}" title="{{ancestry.name}}" width="32" height="32" loading="lazy"/>
<div class="label">
<div class="title">{{localize "TYPES.Item.ancestry"}}</div>
<div class="description" data-tooltip-content="#{{actor.id}}-ancestry-tooltip">{{ancestry.name}}</div>
<label class="extra">
{{localize "PF2E.Actor.Character.AttributeBuilder.AlternateBoostsLabel"}}<input type="checkbox" {{checked ancestryBoosts.alternate}} data-action="toggle-alternate-ancestry-boosts">
</label>
</div>
</div>
{{else}}
<div class="row-heading">
<div class="label">
<div class="title">{{localize "TYPES.Item.ancestry"}}</div>
<div class="description">{{localize "PF2E.Actor.Character.AttributeBuilder.NotSelected"}}</div>
</div>
</div>
{{/if}}
{{> attributeRow buttons=ancestryBoosts.buttons fallback="PF2E.Actor.Character.AttributeBuilder.AncestryMissingHelp"}}
<div class="hover-content" id="{{actor.id}}-ancestry-tooltip">
<h2>{{localize "PF2E.Actor.Character.AttributeBuilder.Boosts"}}</h2>
<ul class="boost-details">
{{#each ancestryBoosts.labels as |boost|}}
<li><i class="fas fa-circle"></i>{{boost}}</li>
{{/each}}
</ul>
<h2>{{localize "PF2E.Actor.Character.AttributeBuilder.Flaws"}}</h2>
<ul class="boost-details">
{{#each ancestryBoosts.flawLabels as |flaw|}}
<li><i class="fas fa-circle"></i>{{flaw}}</li>
{{/each}}
</ul>
</div>
</section>
<!-- ANCESTRY VOLUNTARY FLAWS -->
<section class="row{{#if manual}} not-eligible{{/if}} voluntary-flaw-row" data-section="voluntary">
{{#if ancestry}}
<div class="row-heading">
{{#if voluntaryFlaws.remaining}}<div class="remaining extra">{{voluntaryFlaws.remaining}}</div>{{/if}}
<div class="label">
<div class="description" data-tooltip-content="#{{actor.id}}-voluntary-flaw-tooltip">
{{localize "PF2E.Actor.Character.AttributeBuilder.VoluntaryFlaw.Title"}}
</div>
<label class="extra" data-tooltip-content="#{{actor.id}}-legacy-voluntary-flaw-tooltip">
{{localize "PF2E.Actor.Character.AttributeBuilder.LegacyFlaws"}} <i class="fa-solid fa-info-circle small"></i>
<input type="checkbox" data-action="toggle-legacy-voluntary-flaw" {{checked legacyFlaws}}>
</label>
</div>
</div>
{{> attributeRow buttons=voluntaryFlaws.buttons}}
{{/if}}
<div class="hover-content" id="{{actor.id}}-voluntary-flaw-tooltip">{{localize "PF2E.Actor.Character.AttributeBuilder.VoluntaryFlaw.Description"}}</div>
<div class="hover-content" id="{{actor.id}}-legacy-voluntary-flaw-tooltip">{{localize "PF2E.Actor.Character.AttributeBuilder.VoluntaryFlaw.LegacyDescription"}}</div>
</section>
<hr />
<!-- BACKGROUND BOOSTS -->
<section class="row{{#if manual}} not-eligible{{/if}}" data-section="background">
{{#if backgroundBoosts}}
<div class="row-heading" data-tooltip-content="#{{actor.id}}-background-tooltip">
{{#if backgroundBoosts.remaining}}<div class="remaining extra">{{backgroundBoosts.remaining}}</div>{{/if}}
<img class="" src="{{background.img}}" title="{{background.name}}" width="32" height="32" loading="lazy"/>
<div class="label">
<div class="title">{{localize "PF2E.Background"}}</div>
<div class="description">{{background.name}}</div>
</div>
</div>
{{else}}
<div class="row-heading">
<div class="label">
<div class="title">{{localize "TYPES.Item.background"}}</div>
<div class="description">{{localize "PF2E.Actor.Character.AttributeBuilder.NotSelected"}}</div>
</div>
</div>
{{/if}}
{{> attributeRow buttons=backgroundBoosts.buttons fallback="PF2E.Actor.Character.AttributeBuilder.BackgroundMissingHelp"}}
<div class="hover-content" id="{{actor.id}}-background-tooltip">
{{#if backgroundBoosts.tooltip}}
{{backgroundBoosts.tooltip}}
{{else}}
<h2>{{localize "PF2E.Actor.Character.AttributeBuilder.Boosts"}}</h2>
<ul class="boost-details">
{{#each backgroundBoosts.labels as |boost|}}
{{#if boost}}
<li><i class="fa-solid fa-circle"></i>{{boost}}</li>
{{/if}}
{{/each}}
</ul>
{{/if}}
</div>
</section>
<hr />
<!-- CLASS BOOSTS -->
<section class="row{{#if manual}} not-eligible{{/if}}">
{{#if class}}
<div class="row-heading">
<img class="" src="{{class.img}}" title="{{ancestry.name}}" width="32" height="32" loading="lazy" />
<div>
<div class="title">{{localize "PF2E.Class"}}</div>
<div class="description">{{class.name}}</div>
</div>
</div>
<div class="attributes">
{{#each attributes as |key attribute|}}
<div class="row-column">
<button type="button" data-action="class-key-attribute" data-key="{{key}}" data-attribute="{{attribute}}"
class="boost key-attribute
{{~#if (not (includes ../keyOptions attribute))}} hidden{{/if}}
{{~#if (eq ../class.system.keyAbility.selected attribute)}} selected{{/if}}
{{~#if ../manual}} hidden{{/if}}"
>
<i class="fa-solid fa-fw fa-key key-attribute"></i>
<span>{{localize "PF2E.Actor.Character.AttributeBuilder.KeyIcon"}}</span>
</button>
</div>
{{/each}}
</div>
{{else}}
<div class="row-heading">
<div class="label">
<div class="title">{{localize "TYPES.Item.class"}}</div>
<div class="description">{{localize "PF2E.Actor.Character.AttributeBuilder.NotSelected"}}</div>
</div>
</div>
<div class="full-row">{{localize "PF2E.Actor.Character.AttributeBuilder.ClassMissingHelp"}}</div>
{{/if}}
</section>
<hr />
<div class="row{{#if manual}} not-eligible{{/if}}">
<div class="row-heading">
<div class="label">
<div class="title">{{localize "PF2E.AbilityFree"}}</div>
</div>
</div>
</div>
{{#each levelBoosts as |boosts|}}
<section
class="row{{#if ../manual}} not-eligible{{/if}}{{#if (not boosts.eligible)}} not-eligible{{/if}}"
{{#if boosts.isApex}}data-section="apex"{{else}}data-level="{{boosts.level}}"{{/if~}}
>
<div class="row-heading">
{{#if remaining}}<div class="remaining extra">{{remaining}}</div>{{/if}}
<div class="label">
<div class="description">
{{~#if (eq boosts.level 17)~}}
{{localize "PF2E.TraitApex"}}
{{~else if (eq boosts.minLevel boosts.level)~}}
{{localize "PF2E.LevelN" level=boosts.level}}
{{~else~}}
{{localize "PF2E.LevelRange" minLevel=boosts.minLevel level=boosts.level}}
{{~/if~}}
</div>
</div>
</div>
{{> attributeRow buttons=boosts.buttons isApex=boosts.isApex}}
</section>
{{/each}}
<section class="row summary-row">
<div class="row-heading">
<aside class="hint-container">
<h3>{{localize "PF2E.Actor.Character.AttributeBuilder.InputMethod.Title"}}</h3>
<p>{{localize "PF2E.Actor.Character.AttributeBuilder.InputMethod.Description"}}</p>
<label>
<input type="checkbox" name="toggle-manual-mode"{{checked manual}}>
{{localize "PF2E.Actor.Character.AttributeBuilder.InputMethod.Manual"}}
</label>
</aside>
</div>
<div class="attributes">
{{#each attributeModifiers as |attribute key|}}
<div class="row-column">
{{#if ../manual}}
<button type="button" data-action="class-key-attribute" data-key="{{lookup ../attributes key}}" data-attribute="{{key}}"
class="boost{{#if (eq ../manualKeyAttribute key)}} selected{{/if}}"
tabindex="-1"
>
<i class="fa-solid fa-fw fa-key"></i>
<span>{{localize "PF2E.Actor.Character.AttributeBuilder.KeyIcon"}}</span>
</button>
<input type="text" data-property="system.abilities.{{key}}.mod" name="system.abilities.{{key}}.mod" value="{{attribute.mod}}" data-dtype="Number" placeholder="0" step="0.5">
{{else}}
<button type="button" class="boost hidden"></button>
<div class="value">{{attribute.mod}}</div>
{{/if}}
<h4>{{localize attribute.label}}</h4>
</div>
{{/each}}
<button class="complete" type="button" data-action="close">{{localize "PF2E.Actor.Character.AttributeBuilder.Complete"}}</button>
</div>
</section>
</div>
<div class="row background-stripes">
<div class="row-heading"></div>
<div class="attributes">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</form>
{{#*inline "attributeRow"}}
{{#if buttons}}
<div class="attributes">
{{#each buttons as |state|}}
<div class="row-column">
{{#if ../isApex}}
{{> boostButton type="apex" attribute=state.ability button=state.boost}}
{{else}}
{{#if flaw}}
{{> boostButton type="flaw" attribute=state.ability button=state.flaw}}
{{/if}}
{{#if boost}}
{{> boostButton type="boost" attribute=state.ability button=state.boost}}
{{/if}}
{{/if}}
</div>
{{/each}}
</div>
{{else if fallback}}
<div class="full-row">{{localize fallback}}</div>
{{/if}}
{{/inline}}
{{#*inline "boostButton"}}
{{#if button.second}}
<div class="flaw-buttons">
{{> boostButtonSingle button=button type=type number="first"}}
{{> boostButtonSingle button=button.second type=type number="second"}}
</div>
{{else}}
{{> boostButtonSingle button=button type=type}}
{{/if}}
{{#*inline "boostButtonSingle"}}
<button
type="button"
data-attribute="{{attribute}}"
data-action="{{type}}"
class="tooltip boost-button {{type}} {{number}}{{#if button.selected}} selected{{#if button.partial}} partial{{/if}}{{/if}}{{#if button.locked}} locked{{/if}}"
{{disabled (and button.disabled (not button.selected))}}
>
{{#if button.locked}}<i class="fa-solid fa-lock"></i>{{/if}}
{{#if (eq number "second")}}
<span>x2</span>
{{else if (eq type "flaw")}}
<span>{{localize "PF2E.Actor.Character.AttributeBuilder.Flaw"}}</span>
{{else}}
<span>
{{~#if button.partial~}}
{{localize "PF2E.Actor.Character.AttributeBuilder.Partial"}}
{{~else if (eq type "apex")~}}
{{localize "PF2E.Actor.Character.AttributeBuilder.Increase"}}
{{~else~}}
{{localize "PF2E.Actor.Character.AttributeBuilder.Boost"}}
{{~/if~}}
</span>
{{/if}}
</button>
{{/inline}}
{{/inline}}