feat!: migrate to v12
BREAKING CHANGE: Support for v11 has been dropped
This commit is contained in:
parent
1dd2705bf1
commit
6ac9f49463
13 changed files with 52 additions and 89 deletions
eslint.config.js
src/dice
system.jsontemplates
dialogs
sheets
active-effect
actor/components
item/components
|
@ -33,8 +33,6 @@ const foundryGlobals = {
|
|||
renderTemplate: false,
|
||||
TokenDocument: false,
|
||||
Roll: false,
|
||||
PoolTerm: false,
|
||||
DiceTerm: false,
|
||||
TextEditor: false,
|
||||
CONST: false,
|
||||
getProperty: false,
|
||||
|
|
|
@ -15,7 +15,7 @@ import { evaluateCheck, getRequiredNumberOfDice } from "./check-evaluation";
|
|||
* - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19`
|
||||
* - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5`
|
||||
*/
|
||||
export class DS4Check extends DiceTerm {
|
||||
export class DS4Check extends foundry.dice.terms.DiceTerm {
|
||||
constructor({ modifiers = [], results = [], options } = {}) {
|
||||
super({
|
||||
faces: 20,
|
||||
|
@ -86,8 +86,15 @@ export class DS4Check extends DiceTerm {
|
|||
}
|
||||
|
||||
/** @override */
|
||||
_evaluateSync({ minimize = false, maximize = false } = {}) {
|
||||
super._evaluateSync({ minimize, maximize });
|
||||
_evaluateSync(options = {}) {
|
||||
super._evaluateSync(options);
|
||||
this.evaluateResults();
|
||||
return this;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
async _evaluateAsync(options = {}) {
|
||||
await super._evaluateAsync(options);
|
||||
this.evaluateResults();
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -7,14 +7,14 @@ import { getGame } from "../utils/utils";
|
|||
import { DS4Check } from "./check";
|
||||
|
||||
export function registerSlayingDiceModifier() {
|
||||
PoolTerm.MODIFIERS.x = slay;
|
||||
foundry.dice.terms.PoolTerm.MODIFIERS.x = slay;
|
||||
}
|
||||
|
||||
/**
|
||||
* @this {PoolTerm}
|
||||
* @param {string} modifier
|
||||
*/
|
||||
function slay(modifier) {
|
||||
async function slay(modifier) {
|
||||
const rgx = /[xX]/;
|
||||
const match = modifier.match(rgx);
|
||||
if (!match || !this.rolls) return;
|
||||
|
@ -25,7 +25,7 @@ function slay(modifier) {
|
|||
checked++;
|
||||
if (diceTerm instanceof DS4Check && diceTerm.coup) {
|
||||
const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`;
|
||||
const additionalRoll = Roll.create(formula).evaluate({ async: false });
|
||||
const additionalRoll = await Roll.create(formula).evaluate();
|
||||
|
||||
this.rolls.push(additionalRoll);
|
||||
this.results.push({ result: additionalRoll.total ?? 0, active: true });
|
||||
|
|
11
system.json
11
system.json
|
@ -40,8 +40,8 @@
|
|||
}
|
||||
},
|
||||
"compatibility": {
|
||||
"minimum": "11.305",
|
||||
"verified": "11"
|
||||
"minimum": "12.331",
|
||||
"verified": "12"
|
||||
},
|
||||
"esmodules": ["ds4.js"],
|
||||
"styles": ["css/ds4.css"],
|
||||
|
@ -118,9 +118,10 @@
|
|||
"manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json",
|
||||
"download": "https://git.f3l.de/dungeonslayers/ds4/releases/download/1.21.1/ds4.zip",
|
||||
"initiative": "@combatValues.initiative.total",
|
||||
"gridDistance": 1,
|
||||
"gridUnits": "m",
|
||||
"grid": {
|
||||
"distance": 1,
|
||||
"units": "m"
|
||||
},
|
||||
"primaryTokenAttribute": "combatValues.hitPoints",
|
||||
"manifestPlusVersion": "1.2.0",
|
||||
"url": "https://git.f3l.de/dungeonslayers/ds4"
|
||||
}
|
||||
|
|
|
@ -25,11 +25,7 @@ SPDX-License-Identifier: MIT
|
|||
<label for="check-modifier-{{id}}">{{localize "DS4.DialogRollOptionsCheckModifierLabel"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="check-modifier-{{id}}" name="check-modifier" data-dtype="String">
|
||||
{{#select "custom"}}
|
||||
{{#each checkModifiers as |checkModifier|}}
|
||||
<option value="{{checkModifier.value}}">{{checkModifier.label}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions checkModifiers selected="custom"}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -52,11 +48,7 @@ SPDX-License-Identifier: MIT
|
|||
<label for="roll-mode-{{id}}">{{localize "DS4.DialogRollOptionsRollModeLabel"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="roll-mode-{{id}}" name="roll-mode" data-dtype="String">
|
||||
{{#select rollMode}}
|
||||
{{#each rollModes as |rollModeValue rollModeKey|}}
|
||||
<option value="{{rollModeKey}}">{{localize rollModeValue}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions rollModes selected=rollMode localize=true}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -8,14 +8,14 @@ SPDX-License-Identifier: MIT
|
|||
|
||||
<!-- Effect Header -->
|
||||
<header class="sheet-header">
|
||||
<img class="effect-icon" src="{{ data.icon }}" data-edit="icon">
|
||||
<img class="effect-img" src="{{ data.img }}" data-edit="img">
|
||||
<h1 class="effect-title">
|
||||
<input name="name" type="text" value="{{data.name}}" placeholder="{{ localize 'Name' }}" />
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<!-- Effect Configuration Tabs -->
|
||||
<nav class="sheet-tabs tabs">
|
||||
<nav class="sheet-tabs tabs" aria-role="{{localize 'SHEETS.FormNavLabel'}}">
|
||||
<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>
|
||||
|
@ -24,9 +24,9 @@ SPDX-License-Identifier: MIT
|
|||
<!-- Details Tab -->
|
||||
<section class="tab" data-tab="details">
|
||||
<div class="form-group">
|
||||
<label>{{ localize "EFFECT.IconTint" }}</label>
|
||||
<label>{{ localize "EFFECT.Tint" }}</label>
|
||||
<div class="form-fields">
|
||||
{{colorPicker name="tint" value=data.tint}}
|
||||
<color-picker name="tint" value="{{data.tint}}" placeholder="#ffffff"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -38,9 +38,7 @@ SPDX-License-Identifier: MIT
|
|||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "EFFECT.Disabled" }}</label>
|
||||
<div class="form-fields">
|
||||
<input type="checkbox" name="disabled" {{ checked data.disabled }} />
|
||||
</div>
|
||||
<input type="checkbox" name="disabled" {{ checked data.disabled }}/>
|
||||
</div>
|
||||
|
||||
{{#if isActorEffect}}
|
||||
|
@ -62,6 +60,17 @@ SPDX-License-Identifier: MIT
|
|||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="form-group">
|
||||
<label>Status Conditions</label>
|
||||
<div class="form-fields">
|
||||
<multi-select name="statuses">
|
||||
{{#each statuses as |status|}}
|
||||
<option value="{{status.id}}" {{status.selected}}>{{status.label}}</option>
|
||||
{{/each}}
|
||||
</multi-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DS4.ActiveEffectApplyToItems" }}</label>
|
||||
<div class="form-fields">
|
||||
|
|
|
@ -12,11 +12,7 @@ SPDX-License-Identifier: MIT
|
|||
for="system.baseInfo.creatureType-{{data._id}}">{{config.i18n.creatureBaseInfo.creatureType}}</label>
|
||||
<select class="ds4-actor-properties__property-select" id="system.baseInfo.creatureType-{{data._id}}"
|
||||
name="system.baseInfo.creatureType" data-dtype="String">
|
||||
{{#select data.system.baseInfo.creatureType}}
|
||||
{{#each config.i18n.creatureTypes as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.creatureTypes selected=data.system.baseInfo.creatureType}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="ds4-actor-properties__property">
|
||||
|
@ -36,11 +32,7 @@ SPDX-License-Identifier: MIT
|
|||
for="system.baseInfo.sizeCategory-{{data._id}}">{{config.i18n.creatureBaseInfo.sizeCategory}}</label>
|
||||
<select class="ds4-actor-properties__property-select" id="system.baseInfo.sizeCategory-{{data._id}}"
|
||||
name="system.baseInfo.sizeCategory" data-dtype="String">
|
||||
{{#select data.system.baseInfo.sizeCategory}}
|
||||
{{#each config.i18n.creatureSizeCategories as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.creatureSizeCategories selected=data.system.baseInfo.sizeCategory}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="ds4-actor-properties__property">
|
||||
|
|
|
@ -18,8 +18,8 @@ SPDX-License-Identifier: MIT
|
|||
{{!-- active --}}
|
||||
{{#if effectData.active}}<i class="fas fa-check"></i>{{else}}<i class="fas fa-ban"></i>{{/if}}
|
||||
|
||||
{{!-- icon --}}
|
||||
{{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.icon
|
||||
{{!-- img --}}
|
||||
{{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img
|
||||
alt=(localize "DS4.DocumentImageAltText" name=effectData.label) title=effectData.label}}
|
||||
|
||||
{{!-- name --}}
|
||||
|
|
|
@ -9,8 +9,8 @@ SPDX-License-Identifier: MIT
|
|||
!-- @param effectData: The data of the item.
|
||||
--}}
|
||||
<li class="ds4-embedded-document-list__row effect" data-effect-id="{{effectData._id}}">
|
||||
{{!-- icon --}}
|
||||
{{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.icon
|
||||
{{!-- img --}}
|
||||
{{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img
|
||||
alt=(localize "DS4.DocumentImageAltText" name=effectData.name) title=effectData.name}}
|
||||
|
||||
{{!-- name --}}
|
||||
|
|
|
@ -10,11 +10,7 @@ SPDX-License-Identifier: MIT
|
|||
<label for="system.armorType-{{data._id}}">{{localize "DS4.ArmorType"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="system.armorType-{{data._id}}" name="system.armorType" data-dtype="String">
|
||||
{{#select data.system.armorType}}
|
||||
{{#each config.i18n.armorTypes as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.armorTypes selected=data.system.armorType}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -22,11 +18,7 @@ SPDX-License-Identifier: MIT
|
|||
<label for="system.armorMaterialType-{{data._id}}">{{localize "DS4.ArmorMaterialType"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="system.armorMaterialType-{{data._id}}" name="system.armorMaterialType" data-dtype="String">
|
||||
{{#select data.system.armorMaterialType}}
|
||||
{{#each config.i18n.armorMaterialTypes as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.armorMaterialTypes selected=data.system.armorMaterialType}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,11 +15,7 @@ SPDX-License-Identifier: MIT
|
|||
<label for="system.availability-{{data._id}}">{{localize "DS4.ItemAvailability"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="system.availability-{{data._id}}" name="system.availability" data-dtype="String">
|
||||
{{#select data.system.availability}}
|
||||
{{#each config.i18n.itemAvailabilities as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.itemAvailabilities selected=data.system.availability}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -29,11 +29,7 @@ SPDX-License-Identifier: MIT
|
|||
"DS4.SpellType"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="system.spellType-{{data._id}}" name="system.spellType" data-dtype="String">
|
||||
{{#select data.system.spellType}}
|
||||
{{#each config.i18n.spellTypes as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.spellTypes selected=data.system.spellType}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -43,11 +39,7 @@ SPDX-License-Identifier: MIT
|
|||
<input data-dtype="String" type="text" name="system.maxDistance.value"
|
||||
value="{{data.system.maxDistance.value}}" />
|
||||
<select name="system.maxDistance.unit" data-dtype="String">
|
||||
{{#select data.system.maxDistance.unit}}
|
||||
{{#each config.i18n.distanceUnits as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.distanceUnits selected=data.system.maxDistance.unit}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -57,11 +49,7 @@ SPDX-License-Identifier: MIT
|
|||
<input data-dtype="String" type="text" name="system.effectRadius.value"
|
||||
value="{{data.system.effectRadius.value}}" />
|
||||
<select name="system.effectRadius.unit" data-dtype="String">
|
||||
{{#select data.system.effectRadius.unit}}
|
||||
{{#each config.i18n.distanceUnits as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.distanceUnits selected=data.system.effectRadius.unit}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -70,11 +58,7 @@ SPDX-License-Identifier: MIT
|
|||
<div class="form-fields">
|
||||
<input data-dtype="String" type="text" name="system.duration.value" value="{{data.system.duration.value}}" />
|
||||
<select name="system.duration.unit" data-dtype="String">
|
||||
{{#select data.system.duration.unit}}
|
||||
{{#each config.i18n.temporalUnits as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.temporalUnits selected=data.system.duration.unit}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -83,11 +67,7 @@ SPDX-License-Identifier: MIT
|
|||
title="{{localize 'DS4.CooldownDurationDescription'}}">{{localize "DS4.CooldownDuration"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="system.cooldownDuration-{{data._id}}" name="system.cooldownDuration" data-dtype="String">
|
||||
{{#select data.system.cooldownDuration}}
|
||||
{{#each config.i18n.cooldownDurations as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.cooldownDurations selected=data.system.cooldownDuration}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -10,11 +10,7 @@ SPDX-License-Identifier: MIT
|
|||
<label for="system.attackType-{{data._id}}">{{localize "DS4.AttackType"}}</label>
|
||||
<div class="form-fields">
|
||||
<select id="system.attackType-{{data._id}}" name="system.attackType" data-dtype="String">
|
||||
{{#select data.system.attackType}}
|
||||
{{#each config.i18n.attackTypes as |value key|}}
|
||||
<option value="{{key}}">{{value}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{selectOptions config.i18n.attackTypes selected=data.system.attackType}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue