forked from GitHub-Mirrors/foundry-sw5e

System main update to be inline with dnd5e 1.1.1 Added active effects to as many sheets as I thought applicable. Please check loot, I made an attempt but it may be broken All .less .css and actor .html updates were made to the old actors. New actors may be broken with this update removed templates\actors\oldActor\parts\actor-effects.html for newer templates\actors\parts\active-effects.html removed module\apps\cast-dialog, templates\apps\cast-cast.html, and templates\items\cast.html. I do not think they are used, I think they were deprecated when powers were treated as items, if not we can add them back in. **NOTE** REQUIRES Foundry 0.7.6
133 lines
3.8 KiB
JavaScript
133 lines
3.8 KiB
JavaScript
import LongRestDialog from "./long-rest.js";
|
|
|
|
/**
|
|
* A helper Dialog subclass for rolling Hit Dice on short rest
|
|
* @extends {Dialog}
|
|
*/
|
|
export default class ShortRestDialog extends Dialog {
|
|
constructor(actor, dialogData={}, options={}) {
|
|
super(dialogData, options);
|
|
|
|
/**
|
|
* Store a reference to the Actor entity which is resting
|
|
* @type {Actor}
|
|
*/
|
|
this.actor = actor;
|
|
|
|
/**
|
|
* Track the most recently used HD denomination for re-rendering the form
|
|
* @type {string}
|
|
*/
|
|
this._denom = null;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/** @override */
|
|
static get defaultOptions() {
|
|
return mergeObject(super.defaultOptions, {
|
|
template: "systems/sw5e/templates/apps/short-rest.html",
|
|
classes: ["sw5e", "dialog"]
|
|
});
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/** @override */
|
|
getData() {
|
|
const data = super.getData();
|
|
|
|
// Determine Hit Dice
|
|
data.availableHD = this.actor.data.items.reduce((hd, item) => {
|
|
if ( item.type === "class" ) {
|
|
const d = item.data;
|
|
const denom = d.hitDice || "d6";
|
|
const available = parseInt(d.levels || 1) - parseInt(d.hitDiceUsed || 0);
|
|
hd[denom] = denom in hd ? hd[denom] + available : available;
|
|
}
|
|
return hd;
|
|
}, {});
|
|
data.canRoll = this.actor.data.data.attributes.hd > 0;
|
|
data.denomination = this._denom;
|
|
|
|
// Determine rest type
|
|
const variant = game.settings.get("sw5e", "restVariant");
|
|
data.promptNewDay = variant !== "epic"; // It's never a new day when only resting 1 minute
|
|
data.newDay = false; // It may be a new day, but not by default
|
|
return data;
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
/** @override */
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
let btn = html.find("#roll-hd");
|
|
btn.click(this._onRollHitDie.bind(this));
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* Handle rolling a Hit Die as part of a Short Rest action
|
|
* @param {Event} event The triggering click event
|
|
* @private
|
|
*/
|
|
async _onRollHitDie(event) {
|
|
event.preventDefault();
|
|
const btn = event.currentTarget;
|
|
this._denom = btn.form.hd.value;
|
|
await this.actor.rollHitDie(this._denom);
|
|
this.render();
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* A helper constructor function which displays the Short Rest dialog and returns a Promise once it's workflow has
|
|
* been resolved.
|
|
* @param {Actor5e} actor
|
|
* @return {Promise}
|
|
*/
|
|
static async shortRestDialog({actor}={}) {
|
|
return new Promise((resolve, reject) => {
|
|
const dlg = new this(actor, {
|
|
title: "Short Rest",
|
|
buttons: {
|
|
rest: {
|
|
icon: '<i class="fas fa-bed"></i>',
|
|
label: "Rest",
|
|
callback: html => {
|
|
let newDay = false;
|
|
if (game.settings.get("sw5e", "restVariant") === "gritty")
|
|
newDay = html.find('input[name="newDay"]')[0].checked;
|
|
resolve(newDay);
|
|
}
|
|
},
|
|
cancel: {
|
|
icon: '<i class="fas fa-times"></i>',
|
|
label: "Cancel",
|
|
callback: reject
|
|
}
|
|
},
|
|
close: reject
|
|
});
|
|
dlg.render(true);
|
|
});
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/**
|
|
* A helper constructor function which displays the Long Rest confirmation dialog and returns a Promise once it's
|
|
* workflow has been resolved.
|
|
* @deprecated
|
|
* @param {Actor5e} actor
|
|
* @return {Promise}
|
|
*/
|
|
static async longRestDialog({actor}={}) {
|
|
console.warn("WARNING! ShortRestDialog.longRestDialog has been deprecated, use LongRestDialog.longRestDialog instead.");
|
|
return LongRestDialog.longRestDialog(...arguments);
|
|
}
|
|
}
|