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) {
|
if (modifiers.simulatedNominal) {
|
||||||
loggingEnabled && log(LT.LOG, `SN on, condensing array into single item ${JSON.stringify(simulatedData)}`);
|
loggingEnabled && log(LT.LOG, `SN on, condensing array into single item ${JSON.stringify(simulatedData)}`);
|
||||||
returnData.push({
|
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,
|
rollPreFormat: simulatedData[0].rollPreFormat,
|
||||||
rollPostFormat: simulatedData[0].rollPostFormat,
|
rollPostFormat: simulatedData[0].rollPostFormat,
|
||||||
rollDetails: simulatedData[0].rollDetails,
|
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)}`);
|
loggingEnabled && log(LT.LOG, `Applying group flags: ${JSON.stringify(resultFlags)}`);
|
||||||
const data = groupResults.reduce((prev, cur, idx) => ({
|
const data = groupResults.reduce(
|
||||||
rollTotal: resultFlags[idx].dropped ? prev.rollTotal : prev.rollTotal + cur.rollTotal,
|
(prev, cur, idx) => ({
|
||||||
rollPreFormat: '',
|
rollTotal: resultFlags[idx].dropped ? prev.rollTotal : prev.rollTotal + cur.rollTotal,
|
||||||
rollPostFormat: '',
|
rollPreFormat: '',
|
||||||
rollDetails: `${prev.rollDetails}, ${applyFlags(cur.rollDetails, resultFlags[idx])}`,
|
rollPostFormat: '',
|
||||||
containsCrit: resultFlags[idx].dropped ? prev.containsCrit : prev.containsCrit || cur.containsCrit,
|
rollDetails: `${prev.rollDetails}, ${applyFlags(cur.rollDetails, resultFlags[idx])}`,
|
||||||
containsFail: resultFlags[idx].dropped ? prev.containsFail : prev.containsFail || cur.containsFail,
|
containsCrit: resultFlags[idx].dropped ? prev.containsCrit : prev.containsCrit || cur.containsCrit,
|
||||||
initConfig: `${prev.initConfig}, ${cur.initConfig}`,
|
containsFail: resultFlags[idx].dropped ? prev.containsFail : prev.containsFail || cur.containsFail,
|
||||||
isComplex: prev.isComplex || cur.isComplex,
|
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(' ', '')}`;
|
data.initConfig = `{${data.initConfig}}${groupModifiers.replaceAll(' ', '')}`;
|
||||||
|
|
||||||
if (groupConf.success.on || groupConf.fail.on) {
|
if (groupConf.success.on || groupConf.fail.on) {
|
||||||
|
@ -192,16 +205,28 @@ export const handleGroup = (
|
||||||
retData = data;
|
retData = data;
|
||||||
} else {
|
} else {
|
||||||
// Sum mode
|
// Sum mode
|
||||||
const data = groupResults.reduce((prev, cur) => ({
|
const data = groupResults.reduce(
|
||||||
rollTotal: prev.rollTotal + cur.rollTotal,
|
(prev, cur) => ({
|
||||||
rollPreFormat: '',
|
rollTotal: prev.rollTotal + cur.rollTotal,
|
||||||
rollPostFormat: '',
|
rollPreFormat: '',
|
||||||
rollDetails: `${prev.rollDetails} + ${cur.rollDetails}`,
|
rollPostFormat: '',
|
||||||
containsCrit: prev.containsCrit || cur.containsCrit,
|
rollDetails: `${prev.rollDetails} + ${cur.rollDetails}`,
|
||||||
containsFail: prev.containsFail || cur.containsFail,
|
containsCrit: prev.containsCrit || cur.containsCrit,
|
||||||
initConfig: `${prev.initConfig}, ${cur.initConfig}`,
|
containsFail: prev.containsFail || cur.containsFail,
|
||||||
isComplex: prev.isComplex || cur.isComplex,
|
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.initConfig = `{${data.initConfig}}`;
|
||||||
data.rollDetails = `{${data.rollDetails}}`;
|
data.rollDetails = `{${data.rollDetails}}`;
|
||||||
retData = data;
|
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
|
// All attachments will fit in one message
|
||||||
newMsg.reply({
|
newMsg.reply({
|
||||||
embeds: respMessage,
|
embeds: respMessage,
|
||||||
|
|
|
@ -84,7 +84,7 @@ export const generateCountDetailsEmbed = (counts: CountDetails): ArtigenEmbedNoA
|
||||||
];
|
];
|
||||||
|
|
||||||
return {
|
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: {
|
embed: {
|
||||||
color: infoColor1,
|
color: infoColor1,
|
||||||
title,
|
title,
|
||||||
|
@ -115,7 +115,7 @@ export const generateRollDistsEmbed = (rollDists: RollDistributionMap): ArtigenE
|
||||||
.toArray()
|
.toArray()
|
||||||
.slice(0, 25)
|
.slice(0, 25)
|
||||||
.map(([key, distArr]) => {
|
.map(([key, distArr]) => {
|
||||||
const total = distArr.reduce(basicReducer);
|
const total = distArr.reduce(basicReducer, 0);
|
||||||
return {
|
return {
|
||||||
name: `${getDistName(key)} (Total rolls: ${total}):`,
|
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'),
|
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 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)) {
|
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' });
|
const rollDistBlob = new Blob([fields.map((field) => `# ${field.name}\n${field.value}`).join('\n\n') as BlobPart], { type: 'text' });
|
||||||
if (rollDistBlob.size > config.maxFileSize) {
|
if (rollDistBlob.size > config.maxFileSize) {
|
||||||
|
|
Loading…
Reference in New Issue