New source found from dndbeyond.com
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
import { PrerequisiteFailure } from "../types";
|
||||
|
||||
// Format a group of PrerequisiteFailures into a human-readable string
|
||||
const formatReq = (group: Array<PrerequisiteFailure>) =>
|
||||
group.map(({ data }) => {
|
||||
const key = data.statKey?.toUpperCase() || "";
|
||||
const value = data.requiredValue;
|
||||
const amount = data.currentAmount === null ? "None" : data.currentAmount;
|
||||
|
||||
return `${key} ${value} (${amount})`;
|
||||
});
|
||||
|
||||
// Loop through groups of PrerequisiteFailures and format them into a human-readable string
|
||||
export const getMissingRequirements = (
|
||||
groups: Array<Array<PrerequisiteFailure>>
|
||||
) => groups.map((group) => formatReq(group).join(", ")).join(" or ");
|
||||
@@ -2,6 +2,8 @@ import clsx from "clsx";
|
||||
import { FC, HTMLAttributes, useEffect, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { PrerequisiteUtils } from "@dndbeyond/character-rules-engine";
|
||||
|
||||
import { Accordion } from "~/components/Accordion";
|
||||
import { HtmlContent } from "~/components/HtmlContent";
|
||||
import { Link } from "~/components/Link";
|
||||
@@ -19,7 +21,6 @@ import { Search } from "../../components/Search";
|
||||
import { Spinner } from "../../components/Spinner";
|
||||
import { RouteKey } from "../../constants";
|
||||
import { useClassContext } from "../../contexts/Class";
|
||||
import { getMissingRequirements } from "../../helpers/getMissingRequirements";
|
||||
import {
|
||||
ClassDefinitionContract,
|
||||
ClassItems,
|
||||
@@ -137,6 +138,8 @@ export const ClassChoose: FC<ClassChooseProps> = ({
|
||||
return classes.map(
|
||||
({ id: classId, prerequisites }): MulticlassAvailability => {
|
||||
let canMulticlass = false;
|
||||
|
||||
// If there are no prerequisites, the class can always be
|
||||
const missingRequirements = getGroupingFailures(
|
||||
prerequisites,
|
||||
prerequisiteData
|
||||
@@ -242,11 +245,11 @@ export const ClassChoose: FC<ClassChooseProps> = ({
|
||||
metaItems.push({
|
||||
type: "error",
|
||||
text: !canStartingClassMulticlass
|
||||
? `Starting class does not meet multiclass prerequisites: ${getMissingRequirements(
|
||||
? `Starting class does not meet multiclass prerequisites - ${PrerequisiteUtils.getPrerequisiteFailuresText(
|
||||
startingClassRequirements
|
||||
)}`
|
||||
: !canMulticlass
|
||||
? `Prerequisites not met: ${getMissingRequirements(
|
||||
? `Prerequisites not met - ${PrerequisiteUtils.getPrerequisiteFailuresText(
|
||||
missingRequirements
|
||||
)}`
|
||||
: "",
|
||||
|
||||
Reference in New Issue
Block a user