diff --git a/components/builds/BuildCard.tsx b/components/builds/BuildCard.tsx index 94b3cc810..c5e9ac24e 100644 --- a/components/builds/BuildCard.tsx +++ b/components/builds/BuildCard.tsx @@ -160,7 +160,23 @@ const BuildCard: React.FC = ({ mt="1em" > {apView ? ( - } /> + } + extraAps={ + build.clothingAbilities[0] === "AD" + ? build.clothingAbilities + .slice(1) + .reduce( + (acc: Partial>, ability) => { + if (ability in acc) acc[ability]! += 3; + else acc[ability] = 3; + return acc; + }, + {} + ) + : undefined + } + /> ) : ( )} diff --git a/components/builds/ViewAP.tsx b/components/builds/ViewAP.tsx index 1357b7e9d..03743e3ef 100644 --- a/components/builds/ViewAP.tsx +++ b/components/builds/ViewAP.tsx @@ -7,14 +7,24 @@ import { mainOnlyAbilities } from "utils/lists/abilities"; interface ViewAPProps { aps: Record; + // Extra ability points that are not saved in DB + // used with ability doubler. Forgot to take it in account + // for create build backend code so we do this instead. + extraAps?: Partial>; } -const ViewAP: React.FC = ({ aps }) => { +const ViewAP: React.FC = ({ aps, extraAps }) => { const { gray } = useMyTheme(); - const APArrays = Object.entries(aps).reduce( - (acc: [number, string[]][], [key, value]) => { - const apCount = mainOnlyAbilities.includes(key as any) ? 999 : value; + const APArrays = Object.entries(aps) + .filter(([ability]) => ability !== "AD") + .reduce((acc: [number, string[]][], [key, value]) => { + let apCount = mainOnlyAbilities.includes(key as any) ? 999 : value; + + if (extraAps && key in extraAps) { + const typedKey = key as keyof typeof extraAps; + apCount += extraAps[typedKey]!; + } const abilityArray = acc.find((el) => el[0] === apCount); @@ -22,9 +32,7 @@ const ViewAP: React.FC = ({ aps }) => { else acc.push([apCount, [key]]); return acc; - }, - [] - ); + }, []); let indexToPrintAPAt = APArrays[0][0] === 999 ? 1 : 0;