This commit is contained in:
2022-01-11 23:35:23 +01:00
parent 1e4b639ec6
commit 3384157580
13 changed files with 361 additions and 162 deletions

View File

@ -4,7 +4,7 @@ import { PegasusActorCreate } from "./pegasus-create-char.js";
/* -------------------------------------------- */
const __level2Dice = [ "d0", "d4", "d6", "d8", "d10", "d12" ];
const __level2DiceValue = [ 0, 4, 6, 8, 10, 12 ];
const __name2DiceValue = { "d0": 0, "d4": 4, "d6": 6, "d8": 8, "d10" : 10, "d12": 12 }
/* -------------------------------------------- */
export class PegasusUtility {
@ -49,6 +49,7 @@ export class PegasusUtility {
static buildDiceLists() {
let maxLevel = game.settings.get("fvtt-pegasus-rpg", "dice-max-level");
let diceList = [ "0" ];
let diceValues = [0];
let diceFoundryList = [ "d0" ];
let diceLevel = 1;
let concat = "";
@ -182,12 +183,11 @@ export class PegasusUtility {
/* -------------------------------------------- */
static getDiceValue( level = 0) {
let locLevel = level
let diceString = this.diceList[level]
let diceTab = diceString.split(" ")
let diceValue = 0
while (locLevel > 0) {
let idx = locLevel % __level2Dice.length
diceValue += __level2DiceValue[idx]
locLevel -= idx
for (let dice of diceTab) {
diceValue += __name2DiceValue[dice]
}
return diceValue
}
@ -358,11 +358,17 @@ export class PegasusUtility {
/* -------------------------------------------- */
static async rollPegasus( rollData ) {
let actor = game.actors.get(rollData.actorId);
let dicePool = [ {name:"stat", level: 0, statmod: 0}, {name: "spec", level: 0}, {name:"bonus", level: 0}, {name:"hindrance", level: 0}, {name:"other", level:0} ];
if (rollData.stat) {
dicePool[0].level += Number(rollData.stat.value);
dicePool[0].statmod = Number(rollData.stat.mod);
}
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);
}
if (rollData.spec) {
dicePool[1].level += Number(rollData.spec.data.level);
}
@ -395,9 +401,14 @@ export class PegasusUtility {
// Final score and keep data
rollData.finalScore = myRoll.total + dicePool[0].statmod;
console.log("ROLLLL!!!!", rollData);
let actor = game.actors.get(rollData.actorId);
if (rollData.damages) {
let dmgFormula = this.getFoundryDiceFromLevel( rollData.damages.value )
let dmgRoll = new Roll(dmgFormula).roll( { async: false} );
await this.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode") );
rollData.dmgResult = dmgRoll.total;
}
this.createChatWithRollMode( rollData.alias, {
content: await renderTemplate(`systems/fvtt-pegasus-rpg/templates/chat-generic-result.html`, rollData)
});