Johannes Loher
b1ed05a796
In the Active Effect Config, there are now additional inputs to configure the effect to be applied to items owned by the actor instead of the actor itself. It is possible to select the items to which to apply the effect via matching by name, or via a condition expression, that provides similar capabilities as the evaluation of mathematical expressions in rolls. Data from the Actor, Item, and Active Effect can be accessed similar to how properties are accessed in roll formulas (using the prefixes `@actor`, `@item`, and `@effect`). For example, in order to apply an effect to all ranged weapons, the conditions would be ```js '@item.type' === 'weapon' && '@item.data.attackType' === 'ranged' ```
178 lines
7.1 KiB
Handlebars
178 lines
7.1 KiB
Handlebars
{{!--
|
|
SPDX-FileCopyrightText: 2022 Johannes Loher
|
|
|
|
SPDX-License-Identifier: MIT
|
|
--}}
|
|
|
|
<form autocomplete="off">
|
|
|
|
<!-- Effect Header -->
|
|
<header class="sheet-header">
|
|
<img class="effect-icon" src="{{ data.icon }}" data-edit="icon">
|
|
<h1 class="effect-title">{{ data.label }}</h1>
|
|
</header>
|
|
|
|
<!-- Effect Configuration Tabs -->
|
|
<nav class="sheet-tabs tabs">
|
|
<a class="item" data-tab="details"><i class="fas fa-book"></i> {{localize "EFFECT.TabDetails"}}</a>
|
|
<a class="item" data-tab="duration"><i class="fas fa-clock"></i> {{localize "EFFECT.TabDuration"}}</a>
|
|
<a class="item" data-tab="effects"><i class="fas fa-cogs"></i> {{localize "EFFECT.TabEffects"}}</a>
|
|
</nav>
|
|
|
|
<!-- Details Tab -->
|
|
<section class="tab" data-tab="details">
|
|
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.Label" }}</label>
|
|
<div class="form-fields">
|
|
<input type="text" name="label" value="{{ data.label }}" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.Icon" }}</label>
|
|
<div class="form-fields">
|
|
{{filePicker target="icon" type="image"}}
|
|
<input class="image" type="text" name="icon" placeholder="path/image.png" value="{{data.icon}}" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.IconTint" }}</label>
|
|
<div class="form-fields">
|
|
<input class="color" type="text" name="tint" value="{{data.tint}}" />
|
|
<input type="color" value="{{data.tint}}" data-edit="tint" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.Disabled" }}</label>
|
|
<div class="form-fields">
|
|
<input type="checkbox" name="disabled" {{ checked data.disabled }} />
|
|
</div>
|
|
</div>
|
|
|
|
{{#if isActorEffect}}
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.Origin" }}</label>
|
|
<div class="form-fields">
|
|
<input type="text" name="origin" value="{{ data.origin }}" disabled />
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if isItemEffect}}
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.Transfer" }}</label>
|
|
<div class="form-fields">
|
|
<input type="checkbox" name="transfer" {{checked data.transfer}} />
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
|
|
<div class="form-group">
|
|
<label>{{ localize "DS4.ActiveEffectApplyToItems" }}</label>
|
|
<div class="form-fields">
|
|
<input type="checkbox" name="flags.ds4.itemEffectConfig.applyToItems" {{checked
|
|
data.flags.ds4.itemEffectConfig.applyToItems}} />
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div
|
|
class="form-group ds4-item-effect-config{{#unless data.flags.ds4.itemEffectConfig.applyToItems}} ds4-hidden{{/unless}}">
|
|
<label>{{ localize "DS4.ActiveEffectItemName" }}</label>
|
|
<div class="form-fields">
|
|
<input type="text" name="flags.ds4.itemEffectConfig.itemName"
|
|
value="{{ data.flags.ds4.itemEffectConfig.itemName }}" />
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="form-group ds4-item-effect-config{{#unless data.flags.ds4.itemEffectConfig.applyToItems}} ds4-hidden{{/unless}}">
|
|
<label>{{ localize "DS4.ActiveEffectItemCondition" }}</label>
|
|
<div class="form-fields">
|
|
<input class="ds4-code-input" type="text" name="flags.ds4.itemEffectConfig.condition"
|
|
value="{{ data.flags.ds4.itemEffectConfig.condition }}" />
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Duration Tab -->
|
|
<section class="tab" data-tab="duration">
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.DurationSecs" }}</label>
|
|
<div class="form-fields">
|
|
<input type="number" name="duration.seconds" value="{{ data.duration.seconds }}" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.StartTime" }}</label>
|
|
<div class="form-fields">
|
|
<input type="number" name="duration.startTime" value="{{ data.duration.startTime }}" />
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.DurationTurns" }}</label>
|
|
<div class="form-fields">
|
|
<label>{{ localize "COMBAT.Rounds" }}</label>
|
|
<input type="number" name="duration.rounds" value="{{ data.duration.rounds }}" />
|
|
<label>{{ localize "COMBAT.Turns" }}</label>
|
|
<input type="number" name="duration.turns" value="{{ data.duration.turns }}" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.Combat" }}</label>
|
|
<div class="form-fields">
|
|
<input type="text" name="duration.combat" value="{{ data.duration.combat }}" disabled />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label>{{ localize "EFFECT.StartTurns" }}</label>
|
|
<div class="form-fields">
|
|
<label>{{ localize "COMBAT.Round" }}</label>
|
|
<input type="number" name="duration.startRound" value="{{ data.duration.startRound }}" />
|
|
<label>{{ localize "COMBAT.Turn" }}</label>
|
|
<input type="number" name="duration.startTurn" value="{{ data.duration.startTurn }}" />
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Effects Tab -->
|
|
<section class="tab" data-tab="effects">
|
|
<header class="effect-change effects-header flexrow">
|
|
<div class="key">{{ localize "EFFECT.ChangeKey" }}</div>
|
|
<div class="mode">{{ localize "EFFECT.ChangeMode" }}</div>
|
|
<div class="value">{{ localize "EFFECT.ChangeValue" }}</div>
|
|
<div class="effect-controls">
|
|
<a class="effect-control" data-action="add"><i class="far fa-plus-square"></i></a>
|
|
</div>
|
|
</header>
|
|
<ol class="changes-list">
|
|
{{#each data.changes as |change i|}}
|
|
<li class="effect-change flexrow" data-index="{{i}}">
|
|
<div class="key">
|
|
<input type="text" name="changes.{{i}}.key" value="{{change.key}}" />
|
|
</div>
|
|
<div class="mode">
|
|
<select name="changes.{{i}}.mode" data-dtype="Number">
|
|
{{selectOptions ../modes selected=change.mode}}
|
|
</select>
|
|
</div>
|
|
<div class="value">
|
|
<input type="text" name="changes.{{i}}.value" value="{{change.value}}" />
|
|
</div>
|
|
<div class="effect-controls">
|
|
<a class="effect-control" data-action="delete"><i class="fas fa-trash"></i></a>
|
|
</div>
|
|
</li>
|
|
{{/each}}
|
|
</ol>
|
|
</section>
|
|
|
|
<footer class="sheet-footer">
|
|
<button type="submit"><i class="fas fa-save"></i> {{localize submitText}}</button>
|
|
</footer>
|
|
</form>
|