mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-17 23:49:02 +01:00
Initial
This commit is contained in:
parent
b6195127fe
commit
0c742eb91b
5 changed files with 200 additions and 131 deletions
|
|
@ -345,6 +345,37 @@ export const refreshTypes = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const featureTokenTypes = {
|
||||||
|
tide: {
|
||||||
|
id: 'tide',
|
||||||
|
label: 'Tide',
|
||||||
|
group: 'TYPES.Actor.character'
|
||||||
|
},
|
||||||
|
chaos: {
|
||||||
|
id: 'chaos',
|
||||||
|
label: 'Chaos',
|
||||||
|
group: 'TYPES.Actor.character'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const featureDiceTypes = {
|
||||||
|
prayer: {
|
||||||
|
id: 'prayer',
|
||||||
|
label: 'Prayer Dice',
|
||||||
|
group: 'TYPES.Actor.character'
|
||||||
|
},
|
||||||
|
favor: {
|
||||||
|
id: 'favor',
|
||||||
|
label: 'Favor Points',
|
||||||
|
group: 'TYPES.Actor.character'
|
||||||
|
},
|
||||||
|
slayer: {
|
||||||
|
id: 'slayer',
|
||||||
|
label: 'Slayer Dice',
|
||||||
|
group: 'TYPES.Actor.character'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const abilityCosts = {
|
export const abilityCosts = {
|
||||||
hp: {
|
hp: {
|
||||||
id: 'hp',
|
id: 'hp',
|
||||||
|
|
@ -366,36 +397,13 @@ export const abilityCosts = {
|
||||||
label: 'Armor Stack',
|
label: 'Armor Stack',
|
||||||
group: 'TYPES.Actor.character'
|
group: 'TYPES.Actor.character'
|
||||||
},
|
},
|
||||||
prayer: {
|
|
||||||
id: 'prayer',
|
|
||||||
label: 'Prayer Dice',
|
|
||||||
group: 'TYPES.Actor.character'
|
|
||||||
},
|
|
||||||
favor: {
|
|
||||||
id: 'favor',
|
|
||||||
label: 'Favor Points',
|
|
||||||
group: 'TYPES.Actor.character'
|
|
||||||
},
|
|
||||||
slayer: {
|
|
||||||
id: 'slayer',
|
|
||||||
label: 'Slayer Dice',
|
|
||||||
group: 'TYPES.Actor.character'
|
|
||||||
},
|
|
||||||
tide: {
|
|
||||||
id: 'tide',
|
|
||||||
label: 'Tide',
|
|
||||||
group: 'TYPES.Actor.character'
|
|
||||||
},
|
|
||||||
chaos: {
|
|
||||||
id: 'chaos',
|
|
||||||
label: 'Chaos',
|
|
||||||
group: 'TYPES.Actor.character'
|
|
||||||
},
|
|
||||||
fear: {
|
fear: {
|
||||||
id: 'fear',
|
id: 'fear',
|
||||||
label: 'Fear',
|
label: 'Fear',
|
||||||
group: 'TYPES.Actor.adversary'
|
group: 'TYPES.Actor.adversary'
|
||||||
}
|
},
|
||||||
|
...featureTokenTypes,
|
||||||
|
...featureDiceTypes
|
||||||
};
|
};
|
||||||
|
|
||||||
export const countdownTypes = {
|
export const countdownTypes = {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,18 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel {
|
||||||
|
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
static defineSchema() {
|
static defineSchema() {
|
||||||
const schema = {};
|
const schema = {
|
||||||
|
uses: new fields.SchemaField({
|
||||||
|
value: new fields.NumberField({ nullable: true, initial: null }),
|
||||||
|
max: new fields.NumberField({ nullable: true, initial: null }),
|
||||||
|
icon: new fields.StringField({ initial: 'fa-solid fa-hashtag' }),
|
||||||
|
recovery: new fields.StringField({
|
||||||
|
choices: CONFIG.DH.GENERAL.refreshTypes,
|
||||||
|
initial: null,
|
||||||
|
nullable: true
|
||||||
|
})
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
if (this.metadata.hasDescription) schema.description = new fields.HTMLField({ required: true, nullable: true });
|
if (this.metadata.hasDescription) schema.description = new fields.HTMLField({ required: true, nullable: true });
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,20 @@
|
||||||
export default class RegisterHandlebarsHelpers {
|
export default class RegisterHandlebarsHelpers {
|
||||||
static registerHelpers() {
|
static registerHelpers() {
|
||||||
Handlebars.registerHelper({
|
Handlebars.registerHelper({
|
||||||
|
emptyObject: this.emptyObject,
|
||||||
add: this.add,
|
add: this.add,
|
||||||
includes: this.includes,
|
includes: this.includes,
|
||||||
times: this.times,
|
times: this.times,
|
||||||
damageFormula: this.damageFormula,
|
damageFormula: this.damageFormula,
|
||||||
damageSymbols: this.damageSymbols,
|
damageSymbols: this.damageSymbols,
|
||||||
tertiary: this.tertiary,
|
tertiary: this.tertiary
|
||||||
signedNumber: this.signedNumber
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static emptyObject(a) {
|
||||||
|
return !a || typeof a !== 'object' || Object.keys(a).length === 0;
|
||||||
|
}
|
||||||
|
|
||||||
static add(a, b) {
|
static add(a, b) {
|
||||||
const aNum = Number.parseInt(a);
|
const aNum = Number.parseInt(a);
|
||||||
const bNum = Number.parseInt(b);
|
const bNum = Number.parseInt(b);
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,19 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-label-wrapper {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 60px;
|
||||||
|
}
|
||||||
|
|
||||||
.item-label {
|
.item-label {
|
||||||
font-family: @font-body;
|
font-family: @font-body;
|
||||||
align-self: center;
|
align-self: center;
|
||||||
|
|
||||||
|
&.fullWidth {
|
||||||
|
grid-column: span 2;
|
||||||
|
}
|
||||||
|
|
||||||
.item-name {
|
.item-name {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
@ -58,6 +67,31 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-tokens {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
|
|
||||||
|
.item-token {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
|
||||||
|
i {
|
||||||
|
flex: none;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
&::-webkit-outer-spin-button {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.controls {
|
.controls {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
<li class="inventory-item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-type="{{type}}">
|
<li class="inventory-item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-type="{{type}}">
|
||||||
<img src="{{item.img}}" class="item-img {{#if isActor}}actor-img{{/if}}" data-action="useItem" {{#if (not noTooltip)}}data-tooltip="{{concat "#item#" item.uuid}}"{{/if}} />
|
<img src="{{item.img}}" class="item-img {{#if isActor}}actor-img{{/if}}" data-action="useItem" {{#if (not noTooltip)}}data-tooltip="{{concat "#item#" item.uuid}}"{{/if}} />
|
||||||
<div class="item-label">
|
<div class="item-label-wrapper">
|
||||||
|
<div class="item-label {{#if (emptyObject item.system.tokens)}}fullWidth{{/if}}">
|
||||||
{{#if isCompanion}}
|
{{#if isCompanion}}
|
||||||
<a class="item-name" data-action="attackRoll">{{item.name}}</a>
|
<a class="item-name" data-action="attackRoll">{{item.name}}</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
@ -122,6 +123,17 @@
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
{{#unless (emptyObject item.system.tokens)}}
|
||||||
|
<div class="item-tokens">
|
||||||
|
{{#each item.system.tokens as | token |}}
|
||||||
|
<div class="item-token">
|
||||||
|
<i class="fa-solid fa-hashtag"></i>
|
||||||
|
<input type="number" value="{{token.value}}" step="1" min="0" max="10" />
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/unless}}
|
||||||
|
</div>
|
||||||
{{#unless hideControls}}
|
{{#unless hideControls}}
|
||||||
{{#if isActor}}
|
{{#if isActor}}
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue