DsN OK, objets uniques, règles de campagne
Release Creation / build (release) Successful in 1m26s

This commit is contained in:
2026-05-03 21:51:35 +02:00
parent 8fb27c2e82
commit 755c349078
27 changed files with 1149 additions and 162 deletions
+16 -12
View File
@@ -14,12 +14,14 @@ import { DonjonEtCieUtility } from "./donjon-et-cie-utility.mjs";
import { DONJON_ET_CIE } from "./donjon-et-cie-config.mjs";
export class DonjonEtCieRolls {
static async #createChatCard(actor, template, context) {
static async #createChatCard(actor, template, context, { rolls = [] } = {}) {
const content = await foundry.applications.handlebars.renderTemplate(template, context);
const validRolls = rolls.filter((roll) => roll instanceof Roll);
await ChatMessage.create({
speaker: ChatMessage.getSpeaker({ actor }),
user: game.user.id,
content
content,
rolls: validRolls
});
}
@@ -68,7 +70,7 @@ export class DonjonEtCieRolls {
const kept = this.#selectKeptValue(values, mode, "low");
const success = kept <= target;
return { characteristic, characteristicKey, target, values, kept, success, mode, isNaturalOne: kept === 1, isNaturalTwenty: kept === 20 };
return { characteristic, characteristicKey, target, values, kept, success, mode, roll, isNaturalOne: kept === 1, isNaturalTwenty: kept === 20 };
}
static async #resolveFavorBoost(actor, favorKey, mode = "normal") {
@@ -101,6 +103,7 @@ export class DonjonEtCieRolls {
effectiveMode: this.#applyFavorMode(mode),
modeBefore: mode,
modeAfter: this.#applyFavorMode(mode),
rolls: resolved.rolls,
note: degraded
? "Le coup de pouce reste anonyme : un collegue du departement a donne l'info utile."
: "Le coup de pouce tient bon : nommez le collegue, ses trois traits et la relation pour le trombinoscope."
@@ -129,7 +132,7 @@ export class DonjonEtCieRolls {
after: DonjonEtCieUtility.formatUsageDie(after),
autoSpent: true,
note: "La faveur est brulee pour obtenir directement l'aide souhaitee, a la discretion du MJ."
});
}, { rolls: [] });
return { key: favorKey, label, before, after };
}
@@ -172,6 +175,7 @@ export class DonjonEtCieRolls {
before: focusDelta,
after,
degraded,
rolls: resolved.rolls,
values: resolved.values
};
}
@@ -208,7 +212,7 @@ export class DonjonEtCieRolls {
{ label: game.i18n.localize("DNC.Chat.After"), value: DonjonEtCieUtility.formatUsageDie(favor.after) }
] : [])
]
});
}, { rolls: [...(favor?.rolls ?? []), result.roll] });
return { ...result, favor, mode: effectiveMode };
}
@@ -246,7 +250,7 @@ export class DonjonEtCieRolls {
mode: result.mode,
modeLabel: this.#getModeLabel(result.mode),
syncedCombat
});
}, { rolls: result.rolls });
return { total: result.kept, die, dieValues, dex, bonus: sheetBonus, mode: result.mode, syncedCombat };
}
@@ -271,7 +275,7 @@ export class DonjonEtCieRolls {
formula: roll.formula,
total: roll.total,
dieValues
});
}, { rolls: [roll] });
return { formula: roll.formula, total: roll.total, dieValues };
}
@@ -318,7 +322,7 @@ export class DonjonEtCieRolls {
{ label: game.i18n.localize("DNC.Chat.After"), value: DonjonEtCieUtility.formatUsageDie(favor.after) }
] : [])
]
});
}, { rolls: [...(favor?.rolls ?? []), result.roll] });
return { ...result, favor, mode: effectiveMode };
}
@@ -351,7 +355,7 @@ export class DonjonEtCieRolls {
sourceLabel: item.name,
targets,
hasTargets: targets.length > 0
});
}, { rolls: result.rolls });
return { total: result.kept, formula: result.formula, bonus: totalBonus, values: result.values, mode: result.mode };
}
@@ -483,7 +487,7 @@ export class DonjonEtCieRolls {
focusDegraded: focus.degraded,
spentPv,
remainingPv
});
}, { rolls: [...(favor?.rolls ?? []), ...(focus.rolls ?? []), result.roll] });
return { ...result, success, spentPv, remainingPv, cost, focus, focusSpent, focusRemaining, favor, mode: effectiveMode };
}
@@ -514,7 +518,7 @@ export class DonjonEtCieRolls {
degraded,
exhausted: after < 4,
itemName: item.name
});
}, { rolls: resolved.rolls });
return { result, before, after, degraded, chaosEntry };
}
@@ -552,7 +556,7 @@ export class DonjonEtCieRolls {
protectionStored: item.type === "armure" ? result : null,
degraded,
exhausted: after === 0
});
}, { rolls: resolved.rolls });
return { result, values: resolved.values, mode: resolved.mode, before, after, degraded };
}