Penetrating explosions are now functional, added formatting for explosions
This commit is contained in:
parent
54f081db74
commit
7823227f6e
|
@ -250,6 +250,11 @@ Additionally, replace \`x\` with \`F\` to roll Fate dice`,
|
||||||
value: 'Rolls that were dropped or rerolled ~~crossed out~~.',
|
value: 'Rolls that were dropped or rerolled ~~crossed out~~.',
|
||||||
inline: true,
|
inline: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Exclamation mark (`!`)',
|
||||||
|
value: 'Rolls that were caused by an explosion have an exclamation mark (`!`) after them.',
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
@ -61,6 +61,10 @@ export const formatRoll = (rollConf: string, maximiseRoll: boolean, nominalRoll:
|
||||||
preFormat = `~~${preFormat}`;
|
preFormat = `~~${preFormat}`;
|
||||||
postFormat = `${postFormat}~~`;
|
postFormat = `${postFormat}~~`;
|
||||||
}
|
}
|
||||||
|
if (e.exploding) {
|
||||||
|
// Add ! to indicate the roll came from an explosion
|
||||||
|
postFormat = `!${postFormat}`;
|
||||||
|
}
|
||||||
|
|
||||||
// Finally add this to the roll's details
|
// Finally add this to the roll's details
|
||||||
tempDetails += `${preFormat}${e.roll}${postFormat} + `;
|
tempDetails += `${preFormat}${e.roll}${postFormat} + `;
|
||||||
|
|
|
@ -519,6 +519,23 @@ export const roll = (rollStr: string, maximiseRoll: boolean, nominalRoll: boolea
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If penetrating is on, do the decrements
|
||||||
|
if (rollConf.exploding.penetrating) {
|
||||||
|
for (const penRoll of rollSet) {
|
||||||
|
// If loopCount gets too high, stop trying to calculate infinity
|
||||||
|
if (loopCount > config.limits.maxLoops) {
|
||||||
|
throw new Error('MaxLoopsExceeded');
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the die was from an explosion, decrement it by one
|
||||||
|
if (penRoll.exploding) {
|
||||||
|
penRoll.roll--;
|
||||||
|
}
|
||||||
|
|
||||||
|
loopCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If we need to handle the drop/keep flags
|
// If we need to handle the drop/keep flags
|
||||||
if (dkdkCnt > 0) {
|
if (dkdkCnt > 0) {
|
||||||
// Count how many rerolled dice there are if the reroll flag was on
|
// Count how many rerolled dice there are if the reroll flag was on
|
||||||
|
|
Loading…
Reference in New Issue