Files
Firefly_Srtools/src/zod/characterDetail.zod.ts
AzenKain 331aba4489
All checks were successful
Gitea Auto Deploy / Deploy-Container (push) Successful in 1m31s
init
2025-07-01 09:33:43 +07:00

164 lines
4.2 KiB
TypeScript

// Generated by ts-to-zod
import { z } from "zod";
export const rankTypeSchema = z.object({
Id: z.number(),
Name: z.string(),
Desc: z.string(),
ParamList: z.array(z.number()),
});
export const uniqueAbilitySchema = z.object({
Tag: z.string(),
Name: z.string(),
Desc: z.string(),
Param: z.array(z.number()),
});
export const voiceActorsSchema = z.object({
Chinese: z.string().nullable(),
Japanese: z.string().nullable(),
Korean: z.string().nullable(),
English: z.string().nullable(),
});
export const levelParamsSchema = z.object({
Level: z.number(),
ParamList: z.array(z.number()),
});
export const itemConfigRowSchema = z.object({
$type: z.string(),
ItemID: z.number(),
ItemNum: z.number(),
Rarity: z.string(),
});
export const spriteSkillSchema = z.object({
Name: z.string(),
Desc: z.string().nullable(),
Type: z.string().nullable(),
Tag: z.string(),
SPBase: z.number().nullable(),
BPNeed: z.number(),
BPAdd: z.number().nullable(),
ShowStanceList: z.array(z.number()),
SkillComboValueDelta: z.number().nullable(),
Level: z.record(levelParamsSchema),
});
export const statSchema = z.object({
AttackBase: z.number(),
AttackAdd: z.number(),
DefenceBase: z.number(),
DefenceAdd: z.number(),
HPBase: z.number(),
HPAdd: z.number(),
SpeedBase: z.number(),
CriticalChance: z.number(),
CriticalDamage: z.number(),
BaseAggro: z.number(),
Cost: z.array(itemConfigRowSchema),
});
export const relicRecommendPropertySchema = z.object({
$type: z.string(),
RelicType: z.string(),
PropertyType: z.string(),
});
export const characterInfoSchema = z.object({
Camp: z.string().nullable(),
VA: voiceActorsSchema,
Stories: z.record(z.string().nullable()),
Voicelines: z.array(z.string()),
});
export const skillTypeSchema = z.object({
Id: z.number(),
Name: z.string(),
Desc: z.string(),
Type: z.string(),
Tag: z.string(),
SPBase: z.number().nullable(),
BPNeed: z.number(),
BPAdd: z.number(),
ShowStanceList: z.array(z.number()),
SkillComboValueDelta: z.number().nullable(),
Level: z.record(levelParamsSchema),
});
export const skillTreePointSchema = z.object({
Anchor: z.string(),
AvatarPromotionLimit: z.number().nullable(),
AvatarLevelLimit: z.number().nullable(),
DefaultUnlock: z.boolean(),
Icon: z.string(),
LevelUpSkillID: z.array(z.number()),
MaterialList: z.array(itemConfigRowSchema),
MaxLevel: z.number(),
ParamList: z.array(z.any()),
PointID: z.number(),
PointName: z.string().nullable(),
PointDesc: z.string().nullable(),
PointTriggerKey: z.number(),
PointType: z.number(),
PrePoint: z.array(z.string()),
StatusAddList: z.array(z.any()),
});
export const memospriteSchema = z.object({
Name: z.string(),
Icon: z.string(),
HPBase: z.string(),
HPInherit: z.string(),
HPSkill: z.number().nullable(),
SpeedBase: z.string(),
SpeedInherit: z.string(),
SpeedSkill: z.number(),
Aggro: z.number(),
Skills: z.record(spriteSkillSchema),
Talent: z.record(z.any()),
});
export const relicsSchema = z.object({
AvatarID: z.number(),
Set4IDList: z.array(z.number()),
Set2IDList: z.array(z.number()),
PropertyList3: z.array(z.string()),
PropertyList4: z.array(z.string()),
PropertyList5: z.array(z.string()),
PropertyList6: z.array(z.string()),
PropertyList: z.array(relicRecommendPropertySchema),
SubAffixPropertyList: z.array(z.string()),
ScoreRankList: z.array(z.number()),
});
export const enhancedTypeSchema = z.object({
Descs: z.array(z.string()),
ChangeRankList: z.any(),
ChangeSkillTreeList: z.any(),
Ranks: z.record(rankTypeSchema),
Skills: z.record(skillTypeSchema),
SkillTrees: z.record(z.record(skillTreePointSchema)),
});
export const characterDetailSchema = z.object({
Name: z.string(),
Desc: z.string(),
CharaInfo: characterInfoSchema,
Rarity: z.string(),
AvatarVOTag: z.string(),
SPNeed: z.number().nullable(),
BaseType: z.string(),
DamageType: z.string(),
Ranks: z.record(rankTypeSchema),
Skills: z.record(skillTypeSchema),
SkillTrees: z.record(z.record(skillTreePointSchema)),
Memosprite: memospriteSchema,
Unique: z.record(uniqueAbilitySchema),
Stats: z.record(statSchema),
Relics: relicsSchema,
Enhanced: z.record(enhancedTypeSchema),
});