Merge branch 'main' into feature/style-tooltips

This commit is contained in:
Murilo Brito 2025-12-23 19:27:50 -03:00 committed by GitHub
commit 5a9ad904be
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
236 changed files with 2521 additions and 927 deletions

View file

@ -2,7 +2,7 @@
<div class="dialog-header-inner">
<h1>
{{#if reactionOverride}}
{{localize "DAGGERHEART.CONFIG.ActionType.reaction"}}
{{localize "DAGGERHEART.CONFIG.FeatureForm.reaction"}}
{{else}}
{{ifThen rollConfig.headerTitle rollConfig.headerTitle rollConfig.title}}
{{/if}}

View file

@ -1,9 +1,26 @@
<div>
<div class="item-transfer-container">
<input type="range" step="1" min="0" max="{{item.system.quantity}}" name="quantity" value="{{quantity}}" />
<input type="text" value="{{quantity}}" class="number-display" />
<div class="dialog-content standard-form">
<div class="summary">
<img class="actor-img" src="{{originActor.img}}" />
<div class="granted-item">
{{#if itemImage}}
<img src="{{itemImage}}" />
{{else}}
<i inert class="currency-icon {{currencyIcon}}"></i>
{{/if}}
<i inert class="fa-solid fa-hand-holding"></i>
</div>
<img class="actor-img" src="{{targetActor.img}}" />
</div>
<footer class="item-sheet-footer">
<button type="button" data-action="finish">{{localize "DAGGERHEART.APPLICATIONS.ItemTransfer.transfer"}}</button>
</footer>
<div class="form-group">
<label>{{localize "DAGGERHEART.GENERAL.quantity"}}</label>
<div class="form-fields">
<range-picker step="1" min="1" max="{{max}}" name="quantity" value="{{max}}"></range-picker>
</div>
</div>
</div>
<div class="dialog-buttons">
<button type="button" data-action="finish">
<i inert class="fa-solid fa-gift"></i>
{{localize "DAGGERHEART.APPLICATIONS.ItemTransfer.transfer"}}
</button>
</div>

View file

@ -25,6 +25,20 @@
{{/each}}
</fieldset>
<fieldset class="three-columns">
<legend>
{{localize "Token Sizes"}}
<a data-action="resetTokenSizes"><i class="fa-solid fa-arrow-rotate-left"></i></a>
</legend>
{{formGroup settingFields.schema.fields.tokenSizes.fields.tiny value=settingFields._source.tokenSizes.tiny localize=true}}
{{formGroup settingFields.schema.fields.tokenSizes.fields.small value=settingFields._source.tokenSizes.small localize=true}}
{{formGroup settingFields.schema.fields.tokenSizes.fields.medium value=settingFields._source.tokenSizes.medium localize=true}}
{{formGroup settingFields.schema.fields.tokenSizes.fields.large value=settingFields._source.tokenSizes.large localize=true}}
{{formGroup settingFields.schema.fields.tokenSizes.fields.huge value=settingFields._source.tokenSizes.huge localize=true}}
{{formGroup settingFields.schema.fields.tokenSizes.fields.gargantuan value=settingFields._source.tokenSizes.gargantuan localize=true}}
</fieldset>
<fieldset>
<legend>
{{localize "DAGGERHEART.SETTINGS.Homebrew.currency.title"}}

View file

@ -7,7 +7,6 @@
<legend>{{localize "DAGGERHEART.GENERAL.identify"}}</legend>
{{formField fields.name value=source.name label="Name" name="name"}}
{{formField fields.img value=source.img label="Icon" name="img"}}
{{formField fields.actionType value=source.actionType label="Type" name="actionType" localize=true}}
{{formField fields.chatDisplay value=source.chatDisplay name="chatDisplay" classes="checkbox" localize=true}}
</fieldset>
<fieldset class="action-category">

View file

@ -13,6 +13,7 @@
{{/if}}
{{formGroup systemFields.difficulty value=document._source.system.difficulty localize=true}}
</div>
{{formGroup systemFields.size value=document._source.system.size label=(localize "DAGGERHEART.GENERAL.tokenSize") localize=true}}
{{formField systemFields.description value=document._source.system.description label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.description.label")}}
{{formField systemFields.motivesAndTactics value=document._source.system.motivesAndTactics label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.motivesAndTactics.label")}}
</fieldset>
@ -21,12 +22,12 @@
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.HitPoints.plural"}}</legend>
{{formGroup systemFields.resources.fields.hitPoints.fields.value value=document._source.system.resources.hitPoints.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.hitPoints.value.label")}}
{{formGroup systemFields.resources.fields.hitPoints.fields.max value=document._source.system.resources.hitPoints.max}}
{{formGroup systemFields.resources.fields.hitPoints.fields.max value=document._source.system.resources.hitPoints.max label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.hitPoints.max.label")}}
</fieldset>
<fieldset class="flex">
<legend>{{localize "DAGGERHEART.GENERAL.stress"}}</legend>
{{formGroup systemFields.resources.fields.stress.fields.value value=document._source.system.resources.stress.value label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.stress.value.label")}}
{{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max}}
{{formGroup systemFields.resources.fields.stress.fields.max value=document._source.system.resources.stress.max label=(localize "DAGGERHEART.ACTORS.Adversary.FIELDS.resources.stress.max.label")}}
</fieldset>
</div>

View file

@ -0,0 +1,82 @@
<div class="tab scrollable{{#if tab.active}} active{{/if}}" data-group="{{tab.group}}" data-tab="{{tab.id}}">
{{formGroup fields.texture.fields.src value=source.texture.src rootId=rootId}}
{{#if randomImgEnabled}}
{{formGroup fields.randomImg value=source.randomImg classes="slim" rootId=rootId}}
{{else if hasAlternates}}
<div class="form-group">
<label for="{{rootId}}-alternateImages">{{localize "TOKEN.ImageAlts"}}</label>
<select id="{{rootId}}-alternateImages" class="alternate-images" name="alternateImages">
{{selectOptions alternateImages selected=source.texture.src blank=""}}
</select>
</div>
{{/if}}
<div class="form-group slim" {{#if actorSizeUsed}}data-tooltip="{{localize "DAGGERHEART.APPLICATIONS.TokenConfig.actorSizeUsed"}}"{{/if}}>
<label>
{{localize "TOKEN.Dimensions"}} <span class="units">({{localize "GridSpaces"}})</span>
{{#if actorSizeUsed}}
<i class="fa-solid fa-lock"></i>
{{/if}}
</label>
<div class="form-fields">
<label for="{{rootId}}-width">{{localize "DOCUMENT.FIELDS.width.label"}}</label>
{{formInput fields.width value=source.width id=(concat rootId "-width") disabled=actorSizeUsed}}
<label for="{{rootId}}-height">{{localize "DOCUMENT.FIELDS.height.label"}}</label>
{{formInput fields.height value=source.height id=(concat rootId "-height") disabled=actorSizeUsed}}
</div>
</div>
{{#if shapes}}
{{formGroup fields.shape value=source.shape choices=shapes classes="slim" rootId=rootId}}
{{/if}}
{{formGroup fields.texture.fields.fit value=source.texture.fit choices=textureFitModes classes="slim" rootId=rootId}}
<div class="form-group slim">
<label>{{localize "Anchor"}}</label>
<div class="form-fields">
<label for="{{rootId}}-anchorX">{{localize "TOKEN.FIELDS.texture.anchorX.label"}}</label>
{{formInput fields.texture.fields.anchorX value=source.texture.anchorX id=(concat rootId "-anchorX")
placeholder="0.5"}}
<label for="{{rootId}}-anchorY">{{localize "TOKEN.FIELDS.texture.anchorY.label"}}</label>
{{formInput fields.texture.fields.anchorY value=source.texture.anchorY id=(concat rootId "-anchorY")
placeholder="0.5"}}
</div>
<p class="hint">{{localize "TOKEN.AnchorHint"}}</p>
</div>
<div class="form-group">
<label for="{{rootId}}-scale">{{localize "Scale"}} <span class="units">({{localize "Ratio"}})</span></label>
<div class="form-fields">
<range-picker id="{{rootId}}-scale" name="scale" value={{scale}} min="0.2" max="3" step="0.05"></range-picker>
</div>
</div>
<div class="form-group slim">
<label>{{localize "TOKEN.Mirror"}}</label>
<div class="form-fields">
<label class="checkbox" for="{{rootId}}-mirrorX">
{{localize "TOKEN.MirrorX"}}
<input type="checkbox" id="{{rootId}}-mirrorX" name="mirrorX" {{checked mirrorX}}>
</label>
<label class="checkbox" for="{{rootId}}-mirrorY">
{{localize "TOKEN.MirrorY"}}
<input type="checkbox" id="{{rootId}}-mirrorY" name="mirrorY" {{checked mirrorY}}>
</label>
</div>
</div>
{{formGroup fields.texture.fields.tint value=source.texture.tint placeholder="#ffffff" rootId=rootId}}
{{formGroup fields.alpha value=source.alpha step=0.05 rootId=rootId}}
{{formGroup fields.lockRotation value=source.lockRotation rootId=rootId}}
<fieldset>
<legend>{{localize "TOKEN.RING.SHEET.legend"}}</legend>
{{formGroup fields.ring.fields.enabled value=source.ring.enabled rootId=rootId}}
{{formGroup fields.ring.fields.colors.fields.ring value=source.ring.colors.ring rootId=rootId}}
{{formGroup fields.ring.fields.colors.fields.background value=source.ring.colors.background rootId=rootId}}
{{formGroup fields.ring.fields.subject.fields.texture value=source.ring.subject.texture rootId=rootId}}
{{formGroup fields.ring.fields.subject.fields.scale value=source.ring.subject.scale max=3 step=0.02 rootId=rootId}}
{{formGroup fields.ring.fields.effects value=source.ring.effects input=ringEffectsInput stacked=true rootId=rootId}}
</fieldset>
</div>

View file

@ -1,10 +1,7 @@
<header class='adversary-header-sheet'>
<line-div></line-div>
<div class="name-row">
<h1 class='actor-name'>
<input type='text' name='name' value='{{source.name}}' placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}"
/>
</h1>
<h1 class='input actor-name' contenteditable="plaintext-only" data-property="name" placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}">{{source.name}}</h1>
</div>
<div class="tags">
<div class="tag">
@ -21,6 +18,14 @@
<span>/{{localize "DAGGERHEART.GENERAL.HitPoints.short"}}</span>
</div>
{{/if}}
<div class="tag" data-tooltip="DAGGERHEART.UI.Tooltip.tokenSize">
<i class="fa-solid fa-circle-user"></i>
{{#unless (eq source.system.size 'custom')}}
<span>{{localize (concat "DAGGERHEART.CONFIG.TokenSize." source.system.size)}}</span>
{{else}}
<span>{{source.prototypeToken.width}}x{{source.prototypeToken.height}}</span>
{{/unless}}
</div>
</div>
<line-div></line-div>
<div class="adversary-info">

View file

@ -1,15 +1,7 @@
<header class="character-header-sheet">
<line-div></line-div>
<div class="name-row">
<h1 class='actor-name'>
<input
type='text'
name='name'
value='{{document.name}}'
placeholder='{{localize "DAGGERHEART.GENERAL.actorName"}}'
/>
</h1>
<h1 class="actor-name input" contenteditable="plaintext-only" data-property="name" placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}">{{source.name}}</h1>
<div class='level-div'>
<h3 class='label'>
{{#if (or document.system.needsCharacterSetup document.system.levelData.canLevelUp)}}

View file

@ -14,10 +14,10 @@
{{#if this.inventory.hasCurrency}}
<div class="currency-section">
{{#each this.inventory.currencies as | currency |}}
{{#each this.inventory.currencies as |currency key|}}
{{#if currency.enabled}}
<div class="input">
<span>
<div class="input currency" data-currency="{{key}}">
<span class="drag-handle">
<i class="{{currency.icon}}" inert></i> {{localize currency.label}}
</span>
<input type="text" name="{{currency.field.fieldPath}}" data-allow-delta value="{{currency.value}}" data-dtype="Number" min="0" step="1" />

View file

@ -17,10 +17,10 @@
{{#if inventory.hasCurrency}}
<div class="currency-section">
{{#each this.inventory.currencies as | currency |}}
{{#each this.inventory.currencies as |currency key|}}
{{#if currency.enabled}}
<div class="input">
<span>
<div class="input currency" data-currency="{{key}}">
<span class="drag-handle">
<i class="{{currency.icon}}" inert></i> {{localize currency.label}}
</span>
<input type="text" name="{{currency.field.fieldPath}}" data-allow-delta value="{{currency.value}}" data-dtype="Number" min="0" step="1" />

View file

@ -18,12 +18,12 @@ Parameters:
--}}
<li class="inventory-item" data-item-id="{{item.id}}" {{#if (or (eq type 'action' ) (eq type 'attack' ))}}
data-action-id="{{item.id}}" {{/if}} data-item-uuid="{{item.uuid}}" data-type="{{type}}" data-no-compendium-edit="{{noCompendiumEdit}}" draggable="true">
data-action-id="{{item.id}}" {{/if}} data-item-uuid="{{item.uuid}}" data-type="{{type}}" data-no-compendium-edit="{{noCompendiumEdit}}">
<div class="inventory-item-header {{#if hideContextMenu}}padded{{/if}}" {{#unless noExtensible}}data-action="toggleExtended" {{/unless}}>
{{!-- Image --}}
<div class="img-portait" data-action='{{ifThen (or (hasProperty item "use") (eq type "attack")) "useItem" (ifThen
(hasProperty item "toChat" ) "toChat" "editDoc" ) }}' {{#unless hideTooltip}} {{#if (eq type 'attack' )}}
data-tooltip="#attack#{{item.actor.uuid}}" {{else}} data-tooltip="#item#{{item.uuid}}" {{/if}} {{/unless}}>
data-tooltip="#attack#{{item.actor.uuid}}" {{else}} data-tooltip="#item#{{item.uuid}}" {{/if}} {{/unless}} draggable="true">
<img src="{{item.img}}" class="item-img {{#if isActor}}actor-img{{/if}}" />
{{#if (or item.system.actionsList.size item.system.actionsList.length item.actionType)}}
{{#if @root.isNPC}}
@ -35,7 +35,7 @@ Parameters:
</div>
{{!-- Name & Tags --}}
<div class="item-label">
<div class="item-label" draggable="true">
{{!-- Item Name --}}
<span class="item-name">{{localize item.name}} {{#unless (or noExtensible (not item.system.description))}}<span class="expanded-icon"><i class="fa-solid fa-expand"></i></span>{{/unless}}</span>
@ -49,6 +49,19 @@ Parameters:
{{tag}}
</div>
{{/each}}
{{!-- Feature Form Tag Start --}}
{{#if (eq ../type 'feature')}}
{{#if (or (eq @root.document.type 'adversary') (eq @root.document.type 'environment'))}}
{{#if system.featureForm}}
<div class="tag feature-form">
<span class="recall-value">{{localize (concat "DAGGERHEART.CONFIG.FeatureForm." system.featureForm)}}</span>
</div>
{{/if}}
{{/if}}
{{/if}}
{{!-- Feature Form Tag End --}}
</div>
{{/if}}
{{/with}}
@ -61,7 +74,7 @@ Parameters:
{{/if}}
{{#if (and (not hideResources) (gte item.system.quantity 0))}}
<div class="item-resource">
<input type="number" class="inventory-item-quantity" value="{{item.system.quantity}}" min="0" />
<input type="number" id="{{item.uuid}}-quantity" class="inventory-item-quantity" value="{{item.system.quantity}}" min="0" />
</div>
{{/if}}
@ -145,10 +158,12 @@ Parameters:
<div class="item-button">
{{#if (and (eq action.type 'beastform') @root.beastformActive)}}
<button type="button" data-action="cancelBeastform" data-item-uuid="{{action.uuid}}">
<i class="fa-solid {{action.typeIcon}} action-icon"></i>
{{localize "DAGGERHEART.ACTORS.Character.cancelBeastform"}}
</button>
{{else}}
<button type="button" data-action="useItem" data-item-uuid="{{action.uuid}}">
<i class="fa-solid {{action.typeIcon}} action-icon"></i>
{{action.name}}
</button>
{{/if}}

View file

@ -67,6 +67,21 @@
</div>
{{/if}}
{{/if}}
<!-- Feature Form Tags for adversary/environment actors -->
{{#if (eq type 'feature')}}
{{#if (or (eq @root.document.type 'adversary') (eq @root.document.type 'environment'))}}
{{#if item.system.featureForm}}
<div class="item-tags">
<div class="tag">
<span class="recall-label">{{localize "DAGGERHEART.CONFIG.FeatureForm.label"}}: </span>
<span class="recall-value">{{localize (concat "DAGGERHEART.CONFIG.FeatureForm." item.system.featureForm)}}</span>
</div>
</div>
{{/if}}
{{/if}}
{{/if}}
{{#if (eq type 'domainCard')}}
{{#if isSidebar}}
<div class="item-labels">
@ -121,7 +136,7 @@
{{localize (concat 'DAGGERHEART.ACTIONS.TYPES.' item.type '.name')}}
</div>
<div class="tag">
{{localize (concat 'DAGGERHEART.CONFIG.ActionType.' item.actionType)}}
{{localize (concat 'DAGGERHEART.CONFIG.FeatureForm.' item.actionType)}}
</div>
</div>
{{/if}}
@ -131,7 +146,7 @@
{{localize 'DAGGERHEART.GENERAL.unarmed'}}
</div>
<div class="tag">
{{localize 'DAGGERHEART.CONFIG.ActionType.action'}}
{{localize 'DAGGERHEART.CONFIG.FeatureForm.action'}}
</div>
</div>
{{/if}}

View file

@ -1,7 +1,7 @@
{{#if (eq item.system.resource.type 'simple')}}
<div class="item-resource">
<i class="{{#if item.system.resource.icon}}{{item.system.resource.icon}}{{else}}fa-solid fa-hashtag{{/if}}"></i>
<input type="number" class="inventory-item-resource" value="{{item.system.resource.value}}" min="0" max="{{rollParsed item.system.resource.max item.actor item true}}" />
<input type="number" id="{{item.uuid}}-resource" class="inventory-item-resource" value="{{item.system.resource.value}}" min="0" max="{{rollParsed item.system.resource.max item.actor item true}}" />
</div>
{{else if (eq item.system.resource.type 'diceValue')}}
<div class="item-resources">

View file

@ -20,18 +20,35 @@
{{/unless}}
{{/if}}
<fieldset class="two-columns even">
<fieldset>
<legend>{{localize "DAGGERHEART.ITEMS.Beastform.tokenTitle"}}</legend>
{{#unless (eq source.system.beastformType 'evolved')}}
<div class="full-width">
{{formGroup systemFields.tokenImg value=source.system.tokenImg localize=true}}
</div>
<div class="full-width">
{{formGroup systemFields.tokenImg value=source.system.tokenImg localize=true}}
</div>
<div class="full-width">
{{formGroup systemFields.tokenRingImg value=source.system.tokenRingImg localize=true}}
</div>
{{formGroup systemFields.tokenSize.fields.height value=source.system.tokenSize.height localize=true placeholder=(localize "DAGGERHEART.ITEMS.Beastform.FIELDS.tokenSize.placeholder") }}
{{formGroup systemFields.tokenSize.fields.width value=source.system.tokenSize.width localize=true placeholder=(localize "DAGGERHEART.ITEMS.Beastform.FIELDS.tokenSize.placeholder")}}
<div class="full-width">
{{formGroup systemFields.tokenRingImg value=source.system.tokenRingImg localize=true}}
</div>
<div class="nest-inputs">
{{formGroup systemFields.tokenSize.fields.size value=source.system.tokenSize.size label=(localize "DAGGERHEART.GENERAL.tokenSize") localize=true }}
{{formGroup
systemFields.tokenSize.fields.height
value=source.system.tokenSize.height
localize=true
placeholder=(localize (ifThen dimensionsDisabled "DAGGERHEART.ITEMS.Beastform.FIELDS.tokenSize.disabledPlaceholder" "DAGGERHEART.ITEMS.Beastform.FIELDS.tokenSize.placeholder"))
disabled=dimensionsDisabled
}}
{{formGroup
systemFields.tokenSize.fields.width
value=source.system.tokenSize.width
localize=true
placeholder=(localize (ifThen dimensionsDisabled "DAGGERHEART.ITEMS.Beastform.FIELDS.tokenSize.disabledPlaceholder" "DAGGERHEART.ITEMS.Beastform.FIELDS.tokenSize.placeholder"))
disabled=dimensionsDisabled
}}
</div>
{{else}}
<span class="hint">{{localize "DAGGERHEART.ITEMS.Beastform.evolvedTokenHint"}}</span>
{{/unless}}
</fieldset>
</section>

View file

@ -4,7 +4,7 @@
<line-div></line-div>
<h1 class='item-name'><input type='text' name='name' value='{{source.name}}' /></h1>
<div class='item-description'>
<h3>{{localize 'TYPES.Item.feature'}}</h3>
<h3>{{localize (concat 'DAGGERHEART.CONFIG.FeatureForm.' source.system.featureForm)}} {{localize 'TYPES.Item.feature'}}</h3>
</div>
</div>
</header>

View file

@ -3,5 +3,12 @@
data-tab='{{tabs.settings.id}}'
data-group='{{tabs.settings.group}}'
>
{{#if (or (eq document.parent.type "adversary") (eq document.parent.type "environment"))}}
<fieldset class="two-columns">
<legend>{{localize "DAGGERHEART.GENERAL.general"}}</legend>
<span>{{localize "DAGGERHEART.CONFIG.FeatureForm.label"}}</span>
{{formInput document.system.schema.fields.featureForm value=document.system.featureForm choices=featureFormChoices localize=true}}
</fieldset>
{{/if}}
{{> "systems/daggerheart/templates/sheets/global/partials/resource-section/resource-section.hbs" }}
</section>

View file

@ -29,7 +29,7 @@
<div class="roll-target" data-token="{{id}}">
<img class="target-img" src="{{img}}">
<div class="target-data">
<div class="target-name" data-perm-id="{{actorId}}"><span>{{name}}</span></div>
<div class="target-name"><span>{{name}}</span></div>
{{#if (and ../hasRoll (hasProperty this "hit"))}}
<div class="target-hit-status {{#if hit}}is-hit{{else}}is-miss{{/if}}" data-perm-id="{{actorId}}" data-perm-hidden="true">
{{#if hit}}