Gestion des traits d'arme et des munitions
This commit is contained in:
@@ -97,7 +97,7 @@ export default class TravellerCreatureSheet extends MGT2ActorSheet {
|
||||
|
||||
// ───────────────────────────────────────────────────────── Roll Helpers
|
||||
|
||||
static async #postCreatureRoll({ actor, roll, rollLabel, dm, difficulty, difficultyLabel, rollMode, extraTooltip }) {
|
||||
static async #postCreatureRoll({ actor, roll, rollLabel, dm, difficulty, difficultyLabel, rollMode, extraTooltip, damageFormula }) {
|
||||
const diffTarget = MGT2Helper.getDifficultyValue(difficulty ?? "Average");
|
||||
const hasDifficulty = !!difficulty;
|
||||
const success = hasDifficulty ? roll.total >= diffTarget : true;
|
||||
@@ -111,6 +111,8 @@ export default class TravellerCreatureSheet extends MGT2ActorSheet {
|
||||
if (extraTooltip) breakdownParts.push(extraTooltip);
|
||||
const rollBreakdown = breakdownParts.join(" | ");
|
||||
|
||||
const showRollDamage = success && !!damageFormula;
|
||||
|
||||
const chatData = {
|
||||
creatureName: actor.name,
|
||||
creatureImg: actor.img,
|
||||
@@ -126,6 +128,7 @@ export default class TravellerCreatureSheet extends MGT2ActorSheet {
|
||||
effect: hasDifficulty ? effect : null,
|
||||
effectStr: hasDifficulty ? effectStr : null,
|
||||
modifiers: dm !== 0 ? [`DM ${dm >= 0 ? "+" : ""}${dm}`] : [],
|
||||
showRollDamage,
|
||||
};
|
||||
|
||||
const chatContent = await renderTemplate(
|
||||
@@ -133,11 +136,23 @@ export default class TravellerCreatureSheet extends MGT2ActorSheet {
|
||||
chatData
|
||||
);
|
||||
|
||||
const flags = showRollDamage ? {
|
||||
mgt2: {
|
||||
damage: {
|
||||
formula: normalizeDice(damageFormula),
|
||||
effect,
|
||||
rollObjectName: actor.name,
|
||||
rollTypeName: rollLabel,
|
||||
}
|
||||
}
|
||||
} : {};
|
||||
|
||||
await ChatMessage.create({
|
||||
content: chatContent,
|
||||
speaker: ChatMessage.getSpeaker({ actor }),
|
||||
rolls: [roll],
|
||||
rollMode: rollMode ?? game.settings.get("core", "rollMode"),
|
||||
flags,
|
||||
});
|
||||
|
||||
return { success, effect, total: roll.total };
|
||||
@@ -238,24 +253,14 @@ export default class TravellerCreatureSheet extends MGT2ActorSheet {
|
||||
if (chosenSkill) tooltipParts.push(`${chosenSkill.name} ${skillLevel >= 0 ? "+" : ""}${skillLevel}`);
|
||||
if (customDM !== 0) tooltipParts.push(`MD perso ${customDM >= 0 ? "+" : ""}${customDM}`);
|
||||
|
||||
const { success } = await TravellerCreatureSheet.#postCreatureRoll({
|
||||
await TravellerCreatureSheet.#postCreatureRoll({
|
||||
actor, roll, rollLabel,
|
||||
dm,
|
||||
difficulty: result.difficulty,
|
||||
rollMode: result.rollMode,
|
||||
extraTooltip: tooltipParts.join(" | "),
|
||||
damageFormula: attack.damage || null,
|
||||
});
|
||||
|
||||
// Roll damage only on success
|
||||
if (success && attack.damage) {
|
||||
const dmgFormula = normalizeDice(attack.damage);
|
||||
const dmgRoll = await new Roll(dmgFormula).evaluate();
|
||||
await dmgRoll.toMessage({
|
||||
speaker: ChatMessage.getSpeaker({ actor }),
|
||||
flavor: `<strong>${actor.name}</strong> — ${game.i18n.localize("MGT2.Chat.Weapon.Damage")}: ${attack.name} (${attack.damage})`,
|
||||
rollMode: result.rollMode ?? game.settings.get("core", "rollMode"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ───────────────────────────────────────────────────────── CRUD Handlers
|
||||
|
||||
Reference in New Issue
Block a user