Generic roll and update items

This commit is contained in:
2022-01-13 16:13:00 +01:00
parent 9111a73555
commit b4a06a5049
13 changed files with 167 additions and 18 deletions

View File

@@ -2,6 +2,7 @@
import { PegasusActorCreate } from "./pegasus-create-char.js";
import { PegasusUtility } from "./pegasus-utility.js";
import { PegasusRollDialog } from "./pegasus-roll-dialog.js";
/* -------------------------------------------- */
export class PegasusCommands {
@@ -10,6 +11,7 @@ export class PegasusCommands {
if (!game.system.pegasus.commands) {
const pegasusCommands = new PegasusCommands();
pegasusCommands.registerCommand({ path: ["/char"], func: (content, msg, params) => pegasusCommands.createChar(msg), descr: "Create a new character" });
pegasusCommands.registerCommand({ path: ["/pool"], func: (content, msg, params) => pegasusCommands.poolRoll(msg), descr: "Generic Roll Window" });
game.system.pegasus.commands = pegasusCommands;
}
}
@@ -102,7 +104,26 @@ export class PegasusCommands {
static _chatAnswer(msg, content) {
msg.whisper = [game.user.id];
msg.content = content;
ChatMessage.create(msg);
ChatMessage.create(msg);
}
/* -------------------------------------------- */
async poolRoll( msg) {
let rollData = {
rollId:randomID(16),
alias: "Generic Roll",
rollMode: game.settings.get("core", "rollMode"),
optionsDiceList: PegasusUtility.getOptionsDiceList(),
statDicesLevel: 0,
specDicesLevel: 0,
bonusDicesLevel: 0,
hindranceDicesLevel: 0,
otherDicesLevel: 0,
}
rollData.mode = "generic"
rollData.title = `Generic Pool Roll`;
let rollDialog = await PegasusRollDialog.create( this, rollData);
rollDialog.render( true );
}
}

View File

@@ -7,7 +7,10 @@ export class PegasusRollDialog extends Dialog {
let html
let options = { classes: ["WotGdialog"], width: 420, height: 320, 'z-index': 99999 };
if ( rollData.mode == "stat" || rollData.mode == "MR") {
if ( rollData.mode == "generic" ) {
html = await renderTemplate('systems/fvtt-pegasus-rpg/templates/roll-dialog-generic.html', rollData);
options.height = 320;
} else if ( rollData.mode == "stat" || rollData.mode == "MR") {
html = await renderTemplate('systems/fvtt-pegasus-rpg/templates/roll-dialog-stat.html', rollData);
options.height = 320;
} else if (rollData.mode == "spec") {
@@ -65,6 +68,12 @@ export class PegasusRollDialog extends Dialog {
html.find('#specList').change((event) => {
this.rollData.selectedSpec = event.currentTarget.value;
});
html.find('#statDicesLevel').change((event) => {
this.rollData.statDicesLevel = Number(event.currentTarget.value);
});
html.find('#specDicesLevel').change((event) => {
this.rollData.specDicesLevel = Number(event.currentTarget.value);
});
html.find('#bonusDicesLevel').change((event) => {
this.rollData.bonusDicesLevel = Number(event.currentTarget.value);
});

View File

@@ -374,6 +374,9 @@ export class PegasusUtility {
dicePool[0].level += Number(rollData.stat.value);
dicePool[0].statmod = Number(rollData.stat.mod);
}
if ( rollData.statDicesLevel) {
dicePool[0].level = rollData.statDicesLevel;
}
if (rollData.selectedSpec && rollData.selectedSpec != "0") {
rollData.spec = rollData.specList.find( item => item._id == rollData.selectedSpec);
rollData.spec.data.dice = PegasusUtility.getDiceFromLevel(rollData.spec.data.level);
@@ -381,6 +384,9 @@ export class PegasusUtility {
if (rollData.spec) {
dicePool[1].level += Number(rollData.spec.data.level);
}
if ( rollData.specDicesLevel) {
dicePool[0].level = rollData.specDicesLevel;
}
if (rollData.bonusDicesLevel) {
dicePool[2].level += Number(rollData.bonusDicesLevel);
}