feat: support resolving multi-element characters
This commit is contained in:
@@ -57,6 +57,18 @@ export type ElementType =
|
|||||||
| "Ice"
|
| "Ice"
|
||||||
| "Grass";
|
| "Grass";
|
||||||
|
|
||||||
|
export const ElementList = [
|
||||||
|
"None",
|
||||||
|
"Fire",
|
||||||
|
"Water",
|
||||||
|
"Grass",
|
||||||
|
"Electric",
|
||||||
|
"Ice",
|
||||||
|
"Physical",
|
||||||
|
"Wind",
|
||||||
|
"Rock",
|
||||||
|
];
|
||||||
|
|
||||||
export type WeaponType =
|
export type WeaponType =
|
||||||
| "WEAPON_SWORD_ONE_HAND"
|
| "WEAPON_SWORD_ONE_HAND"
|
||||||
| "WEAPON_CLAYMORE"
|
| "WEAPON_CLAYMORE"
|
||||||
|
|||||||
+16
-4
@@ -28,7 +28,7 @@ import { cardErrorLocs } from "@/lib/locs";
|
|||||||
import { createLogger } from "@/lib/logger";
|
import { createLogger } from "@/lib/logger";
|
||||||
import { mockData } from "@/lib/mock";
|
import { mockData } from "@/lib/mock";
|
||||||
import { buildDisplayRows } from "@/lib/rows";
|
import { buildDisplayRows } from "@/lib/rows";
|
||||||
import { SubstatOrder } from "@/type/enka";
|
import { ElementList, SubstatOrder } from "@/type/enka";
|
||||||
import { PercentageFightProp } from "@/type/fightPropMap";
|
import { PercentageFightProp } from "@/type/fightPropMap";
|
||||||
import { ErrorPage } from "./error";
|
import { ErrorPage } from "./error";
|
||||||
|
|
||||||
@@ -136,7 +136,19 @@ export function card(app: App) {
|
|||||||
);
|
);
|
||||||
if (!char) return error(400, errorLoc.notInShowcase);
|
if (!char) return error(400, errorLoc.notInShowcase);
|
||||||
|
|
||||||
const avatar = avatarStore[char.avatar.avatarId];
|
const avatar =
|
||||||
|
Object.entries(avatarStore).find(
|
||||||
|
([avatarId, avatar]) =>
|
||||||
|
avatarId.split("-")[0] === `${char.avatar.avatarId}` &&
|
||||||
|
avatar.Element ===
|
||||||
|
ElementList[
|
||||||
|
(
|
||||||
|
data.playerInfo.showAvatarInfoList.find(
|
||||||
|
(e) => e.avatar.avatarId === char.avatar.avatarId,
|
||||||
|
) as { energyType: number } | undefined
|
||||||
|
)?.energyType ?? 0
|
||||||
|
],
|
||||||
|
)?.[1] || avatarStore[char.avatar.avatarId];
|
||||||
if (!avatar) return error(400, errorLoc.unsupported);
|
if (!avatar) return error(400, errorLoc.unsupported);
|
||||||
|
|
||||||
if (!char.equipList)
|
if (!char.equipList)
|
||||||
@@ -376,7 +388,7 @@ export function card(app: App) {
|
|||||||
{/* constellation */}
|
{/* constellation */}
|
||||||
<div
|
<div
|
||||||
tw="flex align-start flex-col text-[1.12em]"
|
tw="flex align-start flex-col text-[1.12em]"
|
||||||
className={`${char.avatar.element} locked`}
|
className={`${avatar.Element} locked`}
|
||||||
>
|
>
|
||||||
{avatar.Consts.map((c, i) => (
|
{avatar.Consts.map((c, i) => (
|
||||||
<div
|
<div
|
||||||
@@ -428,7 +440,7 @@ export function card(app: App) {
|
|||||||
return (
|
return (
|
||||||
<div tw="mt-[.6em] relative">
|
<div tw="mt-[.6em] relative">
|
||||||
<TalentSvg
|
<TalentSvg
|
||||||
tw={`Talents ${char.avatar.element} w-[3.6em] opacity-60 text-black`}
|
tw={`Talents ${avatar.Element} w-[3.6em] opacity-60 text-black`}
|
||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
key={key}
|
key={key}
|
||||||
|
|||||||
Reference in New Issue
Block a user