specify the initial value of all reducers to avoid weird bugs/edge cases
This commit is contained in:
parent
4e12e11fe2
commit
02e2faf58f
|
@ -107,7 +107,7 @@ export const tokenizeCmd = (
|
|||
if (modifiers.simulatedNominal) {
|
||||
loggingEnabled && log(LT.LOG, `SN on, condensing array into single item ${JSON.stringify(simulatedData)}`);
|
||||
returnData.push({
|
||||
rollTotal: simulatedData.map((data) => data.rollTotal).reduce(basicReducer) / simulatedData.length,
|
||||
rollTotal: simulatedData.map((data) => data.rollTotal).reduce(basicReducer, 0) / simulatedData.length,
|
||||
rollPreFormat: simulatedData[0].rollPreFormat,
|
||||
rollPostFormat: simulatedData[0].rollPostFormat,
|
||||
rollDetails: simulatedData[0].rollDetails,
|
||||
|
|
|
@ -163,17 +163,30 @@ export const handleGroup = (
|
|||
});
|
||||
}
|
||||
|
||||
loggingEnabled && log(LT.LOG, `Current Group Results: ${JSON.stringify(groupResults)}`);
|
||||
loggingEnabled && log(LT.LOG, `Applying group flags: ${JSON.stringify(resultFlags)}`);
|
||||
const data = groupResults.reduce((prev, cur, idx) => ({
|
||||
rollTotal: resultFlags[idx].dropped ? prev.rollTotal : prev.rollTotal + cur.rollTotal,
|
||||
rollPreFormat: '',
|
||||
rollPostFormat: '',
|
||||
rollDetails: `${prev.rollDetails}, ${applyFlags(cur.rollDetails, resultFlags[idx])}`,
|
||||
containsCrit: resultFlags[idx].dropped ? prev.containsCrit : prev.containsCrit || cur.containsCrit,
|
||||
containsFail: resultFlags[idx].dropped ? prev.containsFail : prev.containsFail || cur.containsFail,
|
||||
initConfig: `${prev.initConfig}, ${cur.initConfig}`,
|
||||
isComplex: prev.isComplex || cur.isComplex,
|
||||
}));
|
||||
const data = groupResults.reduce(
|
||||
(prev, cur, idx) => ({
|
||||
rollTotal: resultFlags[idx].dropped ? prev.rollTotal : prev.rollTotal + cur.rollTotal,
|
||||
rollPreFormat: '',
|
||||
rollPostFormat: '',
|
||||
rollDetails: `${prev.rollDetails}, ${applyFlags(cur.rollDetails, resultFlags[idx])}`,
|
||||
containsCrit: resultFlags[idx].dropped ? prev.containsCrit : prev.containsCrit || cur.containsCrit,
|
||||
containsFail: resultFlags[idx].dropped ? prev.containsFail : prev.containsFail || cur.containsFail,
|
||||
initConfig: `${prev.initConfig}, ${cur.initConfig}`,
|
||||
isComplex: prev.isComplex || cur.isComplex,
|
||||
}),
|
||||
{
|
||||
rollTotal: 0,
|
||||
rollPreFormat: '',
|
||||
rollPostFormat: '',
|
||||
rollDetails: '',
|
||||
containsCrit: false,
|
||||
containsFail: false,
|
||||
initConfig: '',
|
||||
isComplex: false,
|
||||
},
|
||||
);
|
||||
data.initConfig = `{${data.initConfig}}${groupModifiers.replaceAll(' ', '')}`;
|
||||
|
||||
if (groupConf.success.on || groupConf.fail.on) {
|
||||
|
@ -192,16 +205,28 @@ export const handleGroup = (
|
|||
retData = data;
|
||||
} else {
|
||||
// Sum mode
|
||||
const data = groupResults.reduce((prev, cur) => ({
|
||||
rollTotal: prev.rollTotal + cur.rollTotal,
|
||||
rollPreFormat: '',
|
||||
rollPostFormat: '',
|
||||
rollDetails: `${prev.rollDetails} + ${cur.rollDetails}`,
|
||||
containsCrit: prev.containsCrit || cur.containsCrit,
|
||||
containsFail: prev.containsFail || cur.containsFail,
|
||||
initConfig: `${prev.initConfig}, ${cur.initConfig}`,
|
||||
isComplex: prev.isComplex || cur.isComplex,
|
||||
}));
|
||||
const data = groupResults.reduce(
|
||||
(prev, cur) => ({
|
||||
rollTotal: prev.rollTotal + cur.rollTotal,
|
||||
rollPreFormat: '',
|
||||
rollPostFormat: '',
|
||||
rollDetails: `${prev.rollDetails} + ${cur.rollDetails}`,
|
||||
containsCrit: prev.containsCrit || cur.containsCrit,
|
||||
containsFail: prev.containsFail || cur.containsFail,
|
||||
initConfig: `${prev.initConfig}, ${cur.initConfig}`,
|
||||
isComplex: prev.isComplex || cur.isComplex,
|
||||
}),
|
||||
{
|
||||
rollTotal: 0,
|
||||
rollPreFormat: '',
|
||||
rollPostFormat: '',
|
||||
rollDetails: '',
|
||||
containsCrit: false,
|
||||
containsFail: false,
|
||||
initConfig: '',
|
||||
isComplex: false,
|
||||
},
|
||||
);
|
||||
data.initConfig = `{${data.initConfig}}`;
|
||||
data.rollDetails = `{${data.rollDetails}}`;
|
||||
retData = data;
|
||||
|
|
|
@ -173,7 +173,7 @@ export const onWorkerComplete = async (workerMessage: MessageEvent<SolvedRoll>,
|
|||
},
|
||||
];
|
||||
|
||||
if (pubAttachments.map((file) => file.blob.size).reduce(basicReducer) < config.maxFileSize) {
|
||||
if (pubAttachments.map((file) => file.blob.size).reduce(basicReducer, 0) < config.maxFileSize) {
|
||||
// All attachments will fit in one message
|
||||
newMsg.reply({
|
||||
embeds: respMessage,
|
||||
|
|
|
@ -84,7 +84,7 @@ export const generateCountDetailsEmbed = (counts: CountDetails): ArtigenEmbedNoA
|
|||
];
|
||||
|
||||
return {
|
||||
charCount: title.length + fields.map((field) => field.name.length + field.value.length).reduce(basicReducer),
|
||||
charCount: title.length + fields.map((field) => field.name.length + field.value.length).reduce(basicReducer, 0),
|
||||
embed: {
|
||||
color: infoColor1,
|
||||
title,
|
||||
|
@ -115,7 +115,7 @@ export const generateRollDistsEmbed = (rollDists: RollDistributionMap): ArtigenE
|
|||
.toArray()
|
||||
.slice(0, 25)
|
||||
.map(([key, distArr]) => {
|
||||
const total = distArr.reduce(basicReducer);
|
||||
const total = distArr.reduce(basicReducer, 0);
|
||||
return {
|
||||
name: `${getDistName(key)} (Total rolls: ${total}):`,
|
||||
value: distArr.map((cnt, dieIdx) => `${key.startsWith('fate') ? dieIdx - 1 : dieIdx + 1}: ${cnt} (${((cnt / total) * 100).toFixed(1)}%)`).join('\n'),
|
||||
|
@ -124,7 +124,7 @@ export const generateRollDistsEmbed = (rollDists: RollDistributionMap): ArtigenE
|
|||
});
|
||||
const rollDistTitle = 'Roll Distributions:';
|
||||
|
||||
const totalSize = fields.map((field) => field.name.length + field.value.length).reduce(basicReducer);
|
||||
const totalSize = fields.map((field) => field.name.length + field.value.length).reduce(basicReducer, 0);
|
||||
if (totalSize > 4000 || fields.some((field) => field.name.length > 256 || field.value.length > 1024)) {
|
||||
const rollDistBlob = new Blob([fields.map((field) => `# ${field.name}\n${field.value}`).join('\n\n') as BlobPart], { type: 'text' });
|
||||
if (rollDistBlob.size > config.maxFileSize) {
|
||||
|
|
Loading…
Reference in New Issue