custom roll parameters are now passed as properties of the options parameter object;

this seems to be how other systems do it
This commit is contained in:
jalensailin
2023-09-19 16:25:02 -04:00
parent 939cf54a1b
commit 2b8c6abeea
2 changed files with 26 additions and 22 deletions
+11 -21
View File
@@ -210,7 +210,7 @@ export class DeltaGreenActorSheet extends ActorSheet {
});
// Rollable abilities - bind to everything with the 'Rollable' class
html.find('.rollable').mouseup(this._onRoll.bind(this));
html.find('.rollable').click(this._onRoll.bind(this));
// Macro for toggling an item's equipped state
html.find('.equipped-item').mousedown(this._onEquippedStatusChange.bind(this));
@@ -604,12 +604,21 @@ export class DeltaGreenActorSheet extends ActorSheet {
return;
}
const item = this.actor.items.get(dataset.iid);
const rollOptions = {
rollType: dataset.rolltype,
key: dataset.key,
actor: this.actor,
item
}
switch (dataset.rolltype) {
case "stat":
case "skill":
case "typedskill":
case "weapon":
case "sanity": {
const roll = new DGPercentileRoll(dataset.rolltype, dataset.key, this.actor);
const roll = new DGPercentileRoll("1D100", {}, rollOptions);
if (event.shiftKey || event.which === 3) {
const dialogData = await roll.showDialog(dataset.key);
if (!dialogData) return;
@@ -618,22 +627,6 @@ export class DeltaGreenActorSheet extends ActorSheet {
roll.toChat();
break;
}
case "weapon": {
if (!dataset.iid) {
return ui.notifications.error("No item id provided.")
}
const item = this.actor.items.get(dataset.iid);
const roll = new DGPercentileRoll(dataset.rolltype, dataset.key, this.actor, item);
if (event.shiftKey || event.which === 3) {
const dialogData = await roll.showDialog(dataset.key);
if (!dialogData) return;
roll.modifier += dialogData.targetModifier;
}
roll.toChat();
break;
}
case "damage": {
let diceFormula = dataset.roll;
let skillType = dataset.key;
@@ -644,19 +637,16 @@ export class DeltaGreenActorSheet extends ActorSheet {
sendDamageRollToChat(this.actor, diceFormula, game.settings.get("core", "rollMode"));
break;
}
case "lethality": {
sendLethalityTestToChat(this.actor, game.settings.get("core", "rollMode"));
break;
}
case "sanitydamage":{
const lowRollFormula = dataset.roll;
const highRollFormula = dataset.roll2;
sendSanityDamageToChat(this.actor, lowRollFormula, highRollFormula, game.settings.get("core", "rollMode"))
break;
}
default:
break;
}
+15 -1
View File
@@ -3,8 +3,22 @@
import {localizeWithFallback} from "../other/utility-functions.js"
export class DGPercentileRoll extends Roll {
constructor(rollType, key, actor, item, options) {
/**
* In order for all of our custom data to persist, our constructor must use the same parameters as its parent class.
* So, even though percentile rolls will always have a formula of "1d100" and we don't use the `data` object,
* we still have to keep them as parameters.
*
* @param {string} formula Unused - The string formula to parse (from Foundry) - Always "1d100" for percentile rolls.
* @param {Object} data Unused - The data object against which to parse attributes within the formula
* @param {Object} [options] Additional data which is preserved in the database
* @param {Number} [options.rollType] The type of roll (stat, skill, sanity, etc).
* @param {String} [options.key] The key of the skill, stat, etc. to use as a basis for this roll.
* @param {DeltaGreenActor} [options.actor] The actor that this roll originates from.
* @param {DeltaGreenItem} [options.item] Optional - The item from which the roll originates.
*/
constructor(formula = "1D100", data = {}, options) {
super("1D100", {}, options);
const { rollType, key, actor, item } = options;
this.type = rollType;
this.key = key;
this.actor = actor;