// 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), });