From 1f195024e1e4e1262a47f7fbcbfd56ea90fdb694 Mon Sep 17 00:00:00 2001 From: Branden J Brown Date: Wed, 26 Aug 2026 21:08:46 -0400 Subject: [PATCH] umadump/ism: idle single mode model --- umadump/ism/ism.go | 249 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 umadump/ism/ism.go diff --git a/umadump/ism/ism.go b/umadump/ism/ism.go new file mode 100644 index 0000000..3f619c6 --- /dev/null +++ b/umadump/ism/ism.go @@ -0,0 +1,249 @@ +package ism + +import "git.sunturtle.xyz/zephyr/horse" + +type Skill struct { + ID horse.SkillID `json:"skill_id"` + Level int32 `json:"level"` +} + +type SkillTip struct { + GroupID horse.SkillGroupID `json:"group_id"` + Rarity int32 `json:"rarity"` + Level int32 `json:"level"` +} + +type SingleModeSupportCard struct { + Position int32 `json:"position"` + ID horse.SupportCardID `json:"support_card_id"` + LimitBreak int32 `json:"limit_break_count"` + Exp int32 `json:"exp"` + OwnerID int32 `json:"owner_viewer_id"` +} + +type GroupOuting struct { + CharaID horse.CharacterID `json:"chara_id"` + IsOuting int32 `json:"is_outing"` + StoryStep int32 `json:"story_step"` +} + +type Evaluation struct { + TargetID int32 `json:"target_id"` + TrainingPartner int32 `json:"training_partner_id"` + Evaluation int32 `json:"evaluation"` + IsOuting int32 `json:"is_outing"` + StoryStep int32 `json:"story_step"` + IsAppear int32 `json:"is_appear"` + GroupOutings []GroupOuting `json:"group_outing_info_array"` +} + +type TrainingLevel struct { + CommandID int32 `json:"command_id"` + Level int32 `json:"level"` +} + +type GuestOuting struct { + SupportCardID horse.SupportCardID `json:"support_card_id"` + StoryStep int32 `json:"story_step"` + GroupOutings []GroupOuting `json:"group_outing_info_array"` +} + +type SingleModeSkillUpgrade struct { + ConditionID int32 `json:"condition_id"` + Total int32 `json:"total_count"` + Current int32 `json:"current_count"` +} + +type SingleModeChara struct { + SingleModeCharaID int32 `json:"single_mode_chara_id"` + CardID horse.UmaID `json:"card_id"` + CharaGrade int32 `json:"chara_grade"` + Speed int32 `json:"speed"` + Stamina int32 `json:"stamina"` + Power int32 `json:"power"` + Wiz int32 `json:"wiz"` + Guts int32 `json:"guts"` + Vital int32 `json:"vital"` + MaxSpeed int32 `json:"max_speed"` + MaxStamina int32 `json:"max_stamina"` + MaxPower int32 `json:"max_power"` + MaxWiz int32 `json:"max_wiz"` + MaxGuts int32 `json:"max_guts"` + DefaultMaxSpeed int32 `json:"default_max_speed"` + DefaultMaxStamina int32 `json:"default_max_stamina"` + DefaultMaxPower int32 `json:"default_max_power"` + DefaultMaxWiz int32 `json:"default_max_wiz"` + DefaultMaxGuts int32 `json:"default_max_guts"` + MaxVital int32 `json:"max_vital"` + Motivation int32 `json:"motivation"` + Fans int32 `json:"fans"` + Rarity int32 `json:"rarity"` + RaceProgramID int32 `json:"race_program_id"` + ReserveRaceProgramID int32 `json:"reserve_race_program_id"` + RaceRunningStyle int32 `json:"race_running_style"` + IsShortRace int32 `json:"is_short_race"` + TalentLevel int32 `json:"talent_level"` + Skills []Skill `json:"skill_array"` + DisableSkillIDs []horse.SkillID `json:"disable_skill_id_array"` + SkillTips []SkillTip `json:"skill_tips_array"` + SupportCards []SingleModeSupportCard `json:"support_card_array"` + SuccessionTrainedCharaID1 int32 `json:"succession_trained_chara_id_1"` + SuccessionTrainedCharaID2 int32 `json:"succession_trained_chara_id_2"` + ProperDistanceShort horse.AptitudeLevel `json:"proper_distance_short"` + ProperDistanceMile horse.AptitudeLevel `json:"proper_distance_mile"` + ProperDistanceMiddle horse.AptitudeLevel `json:"proper_distance_middle"` + ProperDistanceLong horse.AptitudeLevel `json:"proper_distance_long"` + ProperRunningStyleNige horse.AptitudeLevel `json:"proper_running_style_nige"` + ProperRunningStyleSenko horse.AptitudeLevel `json:"proper_running_style_senko"` + ProperRunningStyleSashi horse.AptitudeLevel `json:"proper_running_style_sashi"` + ProperRunningStyleOikomi horse.AptitudeLevel `json:"proper_running_style_oikomi"` + ProperGroundTurf horse.AptitudeLevel `json:"proper_ground_turf"` + ProperGroundDirt horse.AptitudeLevel `json:"proper_ground_dirt"` + Turn int32 `json:"turn"` + SkillPoint int32 `json:"skill_point"` + ShortCutState int32 `json:"short_cut_state"` + State int32 `json:"state"` + PlayingState int32 `json:"playing_state"` + ScenarioID horse.ScenarioID `json:"scenario_id"` + RouteID int32 `json:"route_id"` + StartTime string `json:"start_time"` + Evaluations []Evaluation `json:"evaluation_info_array"` + TrainingLevels []TrainingLevel `json:"training_level_info_array"` + NicknameIDs []int32 `json:"nickname_id_array"` + CharaEffectIDs []int32 `json:"chara_effect_id_array"` + RouteRaceIDs []int32 `json:"route_race_id_array"` + GuestOutings []GuestOuting `json:"guest_outing_info_array"` + SkillUpgrades []SingleModeSkillUpgrade `json:"skill_upgrade_info_array"` +} + +type CharaEffectLog struct { + CharaEffectID int32 `json:"chara_effect_id"` + IsActive bool `json:"is_active"` +} + +type IdleSingleModeSignedInt struct { + Sign int32 `json:"sign"` + Value int32 `json:"value"` +} + +type IdleSingleModeGainInfo struct { + Speed IdleSingleModeSignedInt `json:"speed"` + Stamina IdleSingleModeSignedInt `json:"stamina"` + Power IdleSingleModeSignedInt `json:"power"` + Wiz IdleSingleModeSignedInt `json:"wiz"` + Guts IdleSingleModeSignedInt `json:"guts"` + MaxSpeed int32 `json:"max_speed"` + MaxStamina int32 `json:"max_stamina"` + MaxPower int32 `json:"max_power"` + MaxWiz int32 `json:"max_wiz"` + MaxGuts int32 `json:"max_guts"` + ProperDistanceShort horse.AptitudeLevel `json:"proper_distance_short"` + ProperDistanceMile horse.AptitudeLevel `json:"proper_distance_mile"` + ProperDistanceMiddle horse.AptitudeLevel `json:"proper_distance_middle"` + ProperDistanceLong horse.AptitudeLevel `json:"proper_distance_long"` + ProperRunningStyleNige horse.AptitudeLevel `json:"proper_running_style_nige"` + ProperRunningStyleSenko horse.AptitudeLevel `json:"proper_running_style_senko"` + ProperRunningStyleSashi horse.AptitudeLevel `json:"proper_running_style_sashi"` + ProperRunningStyleOikomi horse.AptitudeLevel `json:"proper_running_style_oikomi"` + ProperGroundTurf horse.AptitudeLevel `json:"proper_ground_turf"` + ProperGroundDirt horse.AptitudeLevel `json:"proper_ground_dirt"` + SkillPoint int32 `json:"skill_point"` + SkillTips []SkillTip `json:"skill_tips_array"` +} + +type IdleSingleModeSupportCardGain struct { + SupportCardID horse.SupportCardID `json:"support_card_id"` + GainInfo IdleSingleModeGainInfo `json:"gain_info"` +} + +type Factor struct { + FactorID horse.SparkID `json:"factor_id"` + Level int32 `json:"level"` +} + +type IdleSingleModeSuccessionFactorGain struct { + Year int32 `json:"year"` + GainFactorInfo []Factor `json:"gain_factor_info_array"` +} + +type SingleRaceHistory struct { + Turn int32 `json:"turn"` + ProgramID int32 `json:"program_id"` + Weather int32 `json:"weather"` + GroundCondition int32 `json:"ground_condition"` + RunningStyle int32 `json:"running_style"` + ResultRank int32 `json:"result_rank"` + FrameOrder int32 `json:"frame_order"` + NPCCount int32 `json:"npc_count"` +} + +type RaceReward struct { + ItemType int32 `json:"item_type"` + ItemID int32 `json:"item_id"` + ItemNum int32 `json:"item_num"` +} + +type RaceRewardLimit struct { + RewardID int32 `json:"reward_id"` + ItemType int32 `json:"item_type"` + ItemID int32 `json:"item_id"` + ItemNum int32 `json:"item_num"` + RestCount int32 `json:"rest_count"` +} + +type CharaRaceReward struct { + ResultRank int32 `json:"result_rank"` + ResultTime int32 `json:"result_time"` + RaceReward []RaceReward `json:"race_reward"` + RaceRewardBonus []RaceReward `json:"race_reward_bonus"` + RaceRewardPlusBonus []RaceReward `json:"race_reward_plus_bonus"` + RaceRewardBonusWin []RaceReward `json:"race_reward_bonus_win"` + RaceRewardLimit []RaceRewardLimit `json:"race_reward_limit"` + GainedFans int32 `json:"gained_fans"` + CampaignIDs []int32 `json:"campaign_id_array"` +} + +type IdleSingleModeRaceHistory struct { + RaceHistory SingleRaceHistory `json:"race_history"` + RaceRewardInfo CharaRaceReward `json:"race_reward_info"` + LoseTipsID int32 `json:"lose_tips_id"` +} + +type IdleSingleModeProgressLog struct { + CharaEffectLog []CharaEffectLog `json:"chara_effect_log_array"` + SupportCardGains []IdleSingleModeSupportCardGain `json:"support_card_gain_info_array"` + EventGain IdleSingleModeGainInfo `json:"event_gain_info"` + SuccessionGain IdleSingleModeGainInfo `json:"succession_gain_info"` + SuccessionFactorGains []IdleSingleModeSuccessionFactorGain `json:"succession_factor_gain_array"` + RaceHistory []IdleSingleModeRaceHistory `json:"race_history_array"` + GainSkillIDs []horse.SkillID `json:"gain_skill_id_array"` + TotalSkillPoint int32 `json:"total_skill_point"` +} + +type AddItem struct { + ItemID int32 `json:"item_id"` + Number int32 `json:"number"` +} + +type RewardSummary struct { + AddItem []AddItem `json:"add_item_list"` +} + +type End struct { + Chara SingleModeChara `json:"chara_info"` + RewardSummary RewardSummary `json:"reward_summary_info"` +} + +type ProgressInfo struct { + Chara SingleModeChara `json:"chara_info"` + StartTime string `json:"start_time"` + EndTime string `json:"end_time"` + DressID int32 `json:"dress_id"` +} + +type WorkIdleSingleMode struct { + ProgressInfo ProgressInfo `json:"progress_info"` + ProgressLog IdleSingleModeProgressLog `json:"progress_log_info"` + End End `json:"end_info"` + OldChara *SingleModeChara `json:"chara_info"` +}