// Generated by ts-to-zod
import { z } from "zod";

export const monsterDetailElementResistanceSchema = z.object({
    $type: z.string(),
    DamageType: z.string(),
    Value: z.number()
});

export const monsterDetailSkillSchema = z.object({
    Id: z.number(),
    SkillName: z.string().nullable(),
    SkillDesc: z.string().nullable(),
    DamageType: z.string(),
    SPHitBase: z.union([z.number(), z.string()])
});

export const monsterDetailDropItemSchema = z.object({
    $type: z.string(),
    ID: z.number()
});

export const monsterDetailChildSchema = z.object({
    Id: z.number(),
    AttackModifyRatio: z.number(),
    DefenceModifyRatio: z.number(),
    EliteGroup: z.number(),
    HPModifyRatio: z.number(),
    SpeedModifyRatio: z.number(),
    SpeedModifyValue: z.number().nullable(),
    StanceModifyRatio: z.number(),
    StanceWeakList: z.array(z.string()),
    HardLevelGroup: z.number(),
    DamageTypeResistance: z.array(monsterDetailElementResistanceSchema),
    SkillList: z.array(monsterDetailSkillSchema)
});

export const monsterDetailDropSchema = z.object({
    MonsterTemplateID: z.number(),
    WorldLevel: z.number().optional(),
    AvatarExpReward: z.number(),
    DisplayItemList: z.array(monsterDetailDropItemSchema)
});

export const monsterDetailSchema = z.object({
    Id: z.number(),
    Name: z.string(),
    Desc: z.string(),
    MonsterCampID: z.number().nullable(),
    AttackBase: z.number(),
    CriticalDamageBase: z.number(),
    DefenceBase: z.number(),
    HPBase: z.number(),
    InitialDelayRatio: z.number(),
    ImagePath: z.string(),
    MinimumFatigueRatio: z.number(),
    Rank: z.string(),
    SpeedBase: z.number(),
    StanceBase: z.number(),
    StanceCount: z.number(),
    StatusResistanceBase: z.number(),
    Child: z.array(monsterDetailChildSchema),
    Drop: z.array(monsterDetailDropSchema)
});
