#51 Gestion des bonus de cases

This commit is contained in:
2020-12-04 20:52:04 +01:00
parent a831e8b0b2
commit ca84b593ec
11 changed files with 185 additions and 22 deletions

View File

@ -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