forked from public/foundryvtt-reve-de-dragon
#51 Gestion des bonus de cases
This commit is contained in:
@ -13,6 +13,7 @@ import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||
import { RdDDice } from "./rdd-dice.js";
|
||||
import { RdDRollTables } from "./rdd-rolltables.js";
|
||||
import { ChatUtility } from "./chat-utility.js";
|
||||
import { RdDItemSort } from "./item-sort.js";
|
||||
|
||||
export class RdDActor extends Actor {
|
||||
|
||||
@ -135,9 +136,13 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async performRoll(rollData, attacker = undefined) {
|
||||
|
||||
// Cas des bonus de cases pour les sorts
|
||||
let sortBonus = 0;
|
||||
if (rollData.selectedSort) {
|
||||
sortBonus = RdDItemSort.getCaseBonus( rollData.selectedSort, rollData.coord );
|
||||
}
|
||||
// garder le résultat
|
||||
rollData.rolled = await RdDResolutionTable.roll(rollData.caracValue, rollData.finalLevel);
|
||||
|
||||
rollData.rolled = await RdDResolutionTable.roll(rollData.caracValue, rollData.finalLevel, sortBonus);
|
||||
|
||||
//console.log("performRoll", rollData)
|
||||
if ( !rollData.attackerRoll) {// Store in the registry if not a defense roll
|
||||
@ -313,8 +318,11 @@ export class RdDActor extends Actor {
|
||||
if (rolled.isPart) {
|
||||
coutReve = Math.max(Math.ceil(coutReve / 2), 1);
|
||||
}
|
||||
// Incrémenter/gére le bonus de case
|
||||
RdDItemSort.incrementBonusCase(this, sort, rollData.coord);
|
||||
|
||||
if (myReve.value > coutReve){
|
||||
explications += "<br>Réussite du sort: " + coutReve + " points de Rêve sont dépensés";
|
||||
explications += "<br>Réussite du sort: " + coutReve + " points de Rêve sont dépensés (Bonus de case : +" + rolled.bonus + "%)";
|
||||
|
||||
if (rollData.isSortReserve) {
|
||||
// Mise en réserve
|
||||
@ -354,6 +362,7 @@ export class RdDActor extends Actor {
|
||||
return explications
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async dormirChateauDormant() {
|
||||
let message = {
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
|
||||
@ -373,6 +382,7 @@ export class RdDActor extends Actor {
|
||||
ChatMessage.create( message );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _recupererBlessures(message, type, liste, moindres) {
|
||||
let count = 0;
|
||||
const definitions = RdDUtility.getDefinitionsBlessures();
|
||||
@ -813,7 +823,7 @@ export class RdDActor extends Actor {
|
||||
let refoulement = duplicate(this.data.data.reve.refoulement);
|
||||
refoulement.value = refoulement.value + value;
|
||||
|
||||
let total = new Roll("d20").roll().total;
|
||||
let total = new Roll("1d20").roll().total;
|
||||
if ( total <= refoulement.value ) {
|
||||
refoulement.value = 0;
|
||||
this.ajouterSouffle();
|
||||
@ -926,7 +936,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
testSiSonne( sante, endurance )
|
||||
{
|
||||
let result = new Roll("d20").roll().total;
|
||||
let result = new Roll("1d20").roll().total;
|
||||
if ( result <= endurance)
|
||||
sante.sonne.value = false;
|
||||
if ( result > endurance || result == 20) // 20 is always a failure
|
||||
|
Reference in New Issue
Block a user