New source found from dndbeyond.com

This commit is contained in:
2026-07-08 01:00:09 -07:00
parent 9a983a6d7b
commit dcefa0d2f2
2865 changed files with 222467 additions and 49053 deletions
@@ -1,7 +1,11 @@
import { orderBy } from "lodash";
import { Constants } from "@dndbeyond/character-rules-engine/es";
import { DiceOperation, DieTerm, RollRequest } from "@dndbeyond/dice";
import { DiceOperations } from "@dndbeyond/pocket-dimension-dice/enums";
import {
RollDicePayload,
DiceNotationSet,
} from "@dndbeyond/pocket-dimension-dice/types";
interface Hack__OrderableDieValueInfo {
idx: number;
@@ -15,14 +19,14 @@ interface Hack__OrderableDieValueInfo {
* @param rollRequestResult
*/
export function hack__generateDiceRollResultTermLookup(
rollRequestResult: RollRequest
): Record<number, DieTerm> {
const hack__diceRollResultTermLookup: Record<number, DieTerm> = {};
rollRequestResult: RollDicePayload["data"]
): Record<number, DiceNotationSet> {
const hack__diceRollResultTermLookup: Record<number, DiceNotationSet> = {};
let dieCurrentIdx: number = 0;
rollRequestResult.rolls[0].diceNotation.set.forEach((dieTerm) => {
dieTerm.dice.forEach((die) => {
hack__diceRollResultTermLookup[dieCurrentIdx] = dieTerm;
rollRequestResult.rolls[0].diceNotation.set.forEach((diceNotationSet) => {
diceNotationSet?.dice.forEach(() => {
hack__diceRollResultTermLookup[dieCurrentIdx] = diceNotationSet;
dieCurrentIdx++;
});
});
@@ -37,7 +41,7 @@ export function hack__generateDiceRollResultTermLookup(
* @param rollRequestResult
*/
export function hack__generateDiceRollResultValueExcludeTypeLookup(
rollRequestResult: RollRequest
rollRequestResult: RollDicePayload["data"]
): Record<number, Constants.DiceRollExcludeTypeEnum> {
const hack__diceRollResultValueExcludeTypeLookup: Record<
number,
@@ -50,48 +54,52 @@ export function hack__generateDiceRollResultValueExcludeTypeLookup(
let dieGroupStartIdx: number = 0;
rollRequestResult.rolls[0].diceNotation.set.forEach((dieTerm) => {
let diceCount = dieTerm.count;
rollRequestResult.rolls[0].diceNotation.set.forEach((diceNotationSet) => {
let diceCount = diceNotationSet?.count;
//determine sortOrder based on dieTerm.operation
let sortOrder: "asc" | "desc" | null = null;
switch (dieTerm.operation) {
case DiceOperation.Min:
switch (diceNotationSet?.operation) {
case DiceOperations.Min:
sortOrder = "asc";
break;
case DiceOperation.Max:
case DiceOperations.Max:
default:
sortOrder = "desc";
}
let dieTermResults =
let results =
rollResult?.values.slice(
dieGroupStartIdx,
dieGroupStartIdx + diceCount
dieGroupStartIdx + (diceCount ?? 0)
) ?? [];
let hack__orderableDieValueInfos: Array<Hack__OrderableDieValueInfo> =
dieTermResults.map((value, idx) => ({
results.map((value, idx) => ({
idx: dieGroupStartIdx + idx,
value,
}));
let orderedDieTermResults = orderBy(
let orderedResults = orderBy(
hack__orderableDieValueInfos,
(valueInfo) => valueInfo.value,
sortOrder
);
//build-up hack__diceRollResultValueExcludeTypeLookup
orderedDieTermResults.slice(0, dieTerm.operand).forEach((dieTermResult) => {
hack__diceRollResultValueExcludeTypeLookup[dieTermResult.idx] =
Constants.DiceRollExcludeTypeEnum.ALL;
});
orderedDieTermResults.slice(dieTerm.operand).forEach((dieTermResult) => {
hack__diceRollResultValueExcludeTypeLookup[dieTermResult.idx] =
Constants.DiceRollExcludeTypeEnum.NONE;
});
orderedResults
.slice(0, diceNotationSet?.operand)
.forEach((diceNotationSet) => {
hack__diceRollResultValueExcludeTypeLookup[diceNotationSet.idx] =
Constants.DiceRollExcludeTypeEnum.ALL;
});
orderedResults
.slice(diceNotationSet?.operand)
.forEach((diceNotationSet) => {
hack__diceRollResultValueExcludeTypeLookup[diceNotationSet.idx] =
Constants.DiceRollExcludeTypeEnum.NONE;
});
//move diceGroupStartIdx
dieGroupStartIdx += diceCount;
dieGroupStartIdx += diceCount ?? 0;
});
return hack__diceRollResultValueExcludeTypeLookup;