zenno: account for ism data with no start stats
ci/woodpecker/push/horsebot Pipeline was successful
ci/woodpecker/push/zenno Pipeline failed

This commit is contained in:
2026-08-19 16:30:49 -04:00
parent 2bf229b5da
commit cb48e238a8
+63 -1
View File
@@ -135,10 +135,72 @@ const SingleModeChara = z.strictObject({
skill_upgrade_info_array: z.array(SkillUpgrade), skill_upgrade_info_array: z.array(SkillUpgrade),
}); });
const ZeroedSingleModeChara = z.strictObject({
single_mode_chara_id: z.literal(0),
card_id: z.int32(),
chara_grade: z.literal(0),
speed: z.literal(0),
stamina: z.literal(0),
power: z.literal(0),
wiz: z.literal(0),
guts: z.literal(0),
vital: z.literal(0),
max_speed: z.literal(0),
max_stamina: z.literal(0),
max_power: z.literal(0),
max_wiz: z.literal(0),
max_guts: z.literal(0),
default_max_speed: z.literal(0),
default_max_stamina: z.literal(0),
default_max_power: z.literal(0),
default_max_wiz: z.literal(0),
default_max_guts: z.literal(0),
max_vital: z.literal(0),
motivation: z.literal(0),
fans: z.literal(0),
rarity: z.int32(),
race_program_id: z.literal(0),
reserve_race_program_id: z.literal(0),
race_running_style: z.literal(0),
is_short_race: z.literal(0),
talent_level: z.int32(),
skill_array: z.array(z.never()),
disable_skill_id_array: z.array(z.never()),
skill_tips_array: z.array(z.never()),
support_card_array: z.array(z.never()),
succession_trained_chara_id_1: z.int32(),
succession_trained_chara_id_2: z.int32(),
proper_distance_short: z.literal(0),
proper_distance_mile: z.literal(0),
proper_distance_middle: z.literal(0),
proper_distance_long: z.literal(0),
proper_running_style_nige: z.literal(0),
proper_running_style_senko: z.literal(0),
proper_running_style_sashi: z.literal(0),
proper_running_style_oikomi: z.literal(0),
proper_ground_turf: z.literal(0),
proper_ground_dirt: z.literal(0),
turn: z.literal(0),
skill_point: z.literal(0),
short_cut_state: z.literal(0),
state: z.literal(0),
playing_state: z.literal(0),
scenario_id: z.int32(),
route_id: z.literal(0),
start_time: z.literal(''),
evaluation_info_array: z.array(z.never()),
training_level_info_array: z.array(z.never()),
nickname_id_array: z.array(z.never()),
chara_effect_id_array: z.array(z.never()),
route_race_id_array: z.array(z.never()),
guest_outing_info_array: z.array(z.never()),
skill_upgrade_info_array: z.array(z.never()),
});
export type SingleModeChara = z.infer<typeof SingleModeChara>; export type SingleModeChara = z.infer<typeof SingleModeChara>;
const ProgressInfo = z.strictObject({ const ProgressInfo = z.strictObject({
chara_info: z.optional(SingleModeChara), chara_info: z.optional(SingleModeChara.or(ZeroedSingleModeChara)),
start_time: z.string(), start_time: z.string(),
end_time: z.string(), end_time: z.string(),
dress_id: z.int32(), dress_id: z.int32(),