syntax = "proto3";
package OakSave;
import "OakShared.proto";
message PlayerClassSaveGameData {
  string player_class_path = 1;
  uint32 dlc_package_id = 2;
}
message ResourcePoolSavegameData {
  float amount = 1;
  string resource_path = 2;
}
message RegionSaveGameData {
  int32 game_stage = 1;
  int32 play_through_idx = 2;
  string region_path = 3;
  uint32 dlc_package_id = 4;
}
message EquippedInventorySaveGameData {
  int32 inventory_list_index = 1;
  bool enabled = 2;
  string slot_data_path = 3;
}
message OakAbilityTreeItemSaveGameData {
  string item_asset_path = 1;
  int32 points = 2;
  int32 max_points = 3;
  int32 tree_identifier = 4;
}
message OakAbilitySlotSaveGameData {
  string ability_class_path = 1;
  string slot_asset_path = 2;
}
message OakActionAbilityAugmentSaveGameData {
  string action_ability_class_path = 1;
  string slot_asset_path = 2;
  string augment_asset_path = 3;
}
message OakActionAbilityAugmentConfigurationSaveGameData {
  string ability_class_path = 1;
  string augment_asset_path = 2;
  string mod_slot_asset_path = 3;
  string mod_asset_path = 4;
}
message OakDualClassSaveGameData {
  string primary_branch_path = 1;
  repeated string unlocked_secondary_branch_paths = 2;
  string slotted_secondary_branch_path = 3;
  bool unlocked_class_features = 4;
  bool unlocked_initial_secondary_class = 5;
  bool unlocked_secondary_class_swapping = 6;
}
message OakPlayerAbilitySaveGameData {
  int32 ability_points = 1;
  repeated OakAbilityTreeItemSaveGameData tree_item_list = 2;
  repeated OakAbilitySlotSaveGameData ability_slot_list = 3;
  repeated OakActionAbilityAugmentSaveGameData augment_slot_list = 4;
  repeated OakActionAbilityAugmentConfigurationSaveGameData augment_configuration_list = 5;
  int32 tree_grade = 6;
  OakDualClassSaveGameData dual_class_save_data = 7;
  uint32 respec_count = 8;
}
message MissionStatusPlayerSaveGameData {
  enum MissionState {
    MS_NotStarted = 0;
    MS_Active = 1;
    MS_Complete = 2;
    MS_Failed = 3;
    MS_Unknown = 4;
  }
  MissionState status = 1;
  bool has_been_viewed_in_log = 2;
  repeated int32 objectives_progress = 3;
  string mission_class_path = 4;
  string active_objective_set_path = 5;
  uint32 dlc_package_id = 6;
  bool kickoff_played = 7;
}
message MissionPlaythroughSaveGameData {
  repeated MissionStatusPlayerSaveGameData mission_list = 1;
  string tracked_mission_class_path = 2;
}
message ActiveFastTravelSaveData {
  string active_travel_station_name = 1;
  bool blacklisted = 2;
}
message PlaythroughActiveFastTravelSaveData {
  repeated ActiveFastTravelSaveData active_travel_stations = 1;
}
message DiscoveredAreaInfo {
  string discovered_area_name = 1;
  uint32 discovered_playthroughs = 2;
}
message DiscoveredLevelInfo {
  string discovered_level_name = 1;
  uint32 discovered_playthroughs = 3;
  repeated DiscoveredAreaInfo discovered_area_info = 4;
}
message DiscoveredPlanetInfo {
  string discovered_planet = 1;
  bool is_new_planet = 2;
}
message DiscoverySaveData {
  repeated DiscoveredLevelInfo discovered_level_info = 1;
}
message VehicleUnlockedSaveGameData {
  string asset_path = 1;
  bool just_unlocked = 2;
}
message OakCARMenuVehicleConfigSaveData {
  string loadout_save_name = 1;
  string body_asset_path = 2;
  string wheel_asset_path = 3;
  string armor_asset_path = 4;
  string core_mod_asset_path = 5;
  string gunner_weapon_asset_path = 6;
  string driver_weapon_asset_path = 7;
  string ornament_asset_path = 8;
  string material_decal_asset_path = 9;
  string material_asset_path = 10;
  int32 color_index_1 = 11;
  int32 color_index_2 = 12;
  int32 color_index_3 = 13;
}
message CustomPlayerColorSaveGameData {
  string color_parameter = 1;
  Vec3 applied_color = 2;
  Vec3 split_color = 3;
  bool use_default_color = 4;
  bool use_default_split_color = 5;
  float applied_color_alpha = 6;
  float split_color_alpha = 7;
}
message CustomFloatCustomizationSaveGameData {
  string name = 1;
  float value = 2;
}
message EchoLogSaveGameData {
  bool has_been_seen_in_log = 1;
  string echo_log_path = 2;
}
message MapIDData {
  uint32 zone_name_id = 1;
  uint32 map_name_id = 2;
}
message GameStateSaveData {
  MapIDData last_traveled_map_id = 1;
  int32 mayhem_level = 2;
  int32 mayhem_random_seed = 3;
  int32 mayhem_unlocked_level = 4;
}
message ChallengeCategoryProgressSaveData {
  bytes category_progress = 1;
}
message OakPlayerCharacterAugmentSaveGameData {
  string slot_asset_path = 1;
  string augment_asset_path = 2;
}
message OakPlayerCharacterSlotSaveGameData {
  repeated OakPlayerCharacterAugmentSaveGameData augment_slot_list = 1;
}
message UITrackingSaveGameData {
  bool has_seen_skill_menu_unlock = 1;
  bool has_seen_echo_boot_ammo_bar = 3;
  bool has_seen_echo_boot_shield_bar = 4;
  bool has_seen_echo_boot_grenades = 5;
  int32 highest_thvm_breadcrumb_seen = 6;
  repeated string inventory_slot_unlocks_seen = 7;
  int32 saved_spin_offset = 8;
}
message PlanetCycleInfo {
  string planet_name = 1;
  float cycle_length = 2;
  float last_cached_time = 3;
}
message TimeOfDaySaveGameData {
  repeated PlanetCycleInfo planet_cycle_info = 1;
  string planet_cycle = 2;
}
message LevelPersistence_Actor_SaveGameData {
  string actor_name = 1;
  int32 timer_remaining = 2;
}
message LevelPersistence_Level_SaveGameData {
  string level_name = 1;
  repeated LevelPersistence_Actor_SaveGameData saved_actors = 2;
}
message GbxZoneMapFODSavedLevelData {
  string level_name = 1;
  uint32 fod_texture_size = 2;
  uint32 num_chunks = 3;
  float discovery_percentage = 4;
  uint32 data_state = 5;
  uint32 data_revision = 6;
  bytes fod_data = 7;
}
message GbxZoneMapFODSaveGameData {
  repeated GbxZoneMapFODSavedLevelData level_data = 1;
}
message HeroPointsSaveData {
  uint32 strength = 1;
  uint32 dexterity = 2;
  uint32 intelligence = 3;
  uint32 wisdom = 4;
  uint32 constitution = 5;
  uint32 luck = 6;
  string player_aspect_data_path = 7;
  uint32 respec_count = 8;
}
message GuidSaveData {
  uint32 A = 1;
  uint32 B = 2;
  uint32 C = 3;
  uint32 D = 4;
}
message TrackedInteractionSaveData {
  string tracked_interaction_data = 1;
  repeated GuidSaveData completed_instances = 2;
}
message PlayerVoiceSaveData {
  string data = 1;
  float pitch = 2;
}
message OakProfileCloudData_PlayerPrestige {
  bool has_seen_tutorial = 1;
  int64 prestige_experience = 2;
  repeated int32 points_spent_by_index_order = 3;
}
message OakProfileCloudData {
  repeated GameStatSaveGameData profile_stats_data = 1;
  repeated bytes lost_loot_inventory_list = 3;
  repeated OakMailItem npc_mail_items = 4;
  repeated OakSDUSaveGameData profile_sdu_list = 5;
  repeated OakCustomizationSaveGameData unlocked_customizations = 6;
  repeated OakInventoryCustomizationPartInfo unlocked_inventory_customization_parts = 7;
  repeated ChallengeSaveGameData challenge_data = 11;
  repeated string mail_guids = 12;
  repeated OakInventoryItemSaveGameData bank_inventory_list = 13;
  uint32 difficulty = 14;
  OakProfileCloudData_PlayerPrestige player_prestige = 15;
}
message DafTownHubTravelData {
  bool is_set = 1;
  bool is_active = 2;
  Vec3 return_travel_location = 3;
  Vec3 return_travel_rotation = 4;
  string return_map_name = 5;
  string return_station_name = 6;
  string return_travel_station = 7;
}
message Character {
  message NicknameMappingsEntry {
    string key = 1;
    string value = 2;
  }
  uint32 save_game_id = 1;
  int64 last_save_timestamp = 2;
  uint32 time_played_seconds = 3;
  PlayerClassSaveGameData player_class_data = 4;
  repeated ResourcePoolSavegameData resource_pools = 5;
  repeated RegionSaveGameData saved_regions = 6;
  int32 experience_points = 7;
  repeated GameStatSaveGameData game_stats_data = 8;
  repeated InventoryCategorySaveData inventory_category_list = 9;
  repeated OakInventoryItemSaveGameData inventory_items = 10;
  repeated EquippedInventorySaveGameData equipped_inventory_list = 11;
  repeated int32 active_weapon_list = 12;
  OakPlayerAbilitySaveGameData ability_data = 13;
  int32 last_play_through_index = 14;
  int32 playthroughs_completed = 15;
  bool show_new_playthrough_notification = 16;
  repeated MissionPlaythroughSaveGameData mission_playthroughs_data = 17;
  repeated string last_active_travel_station_for_playthrough = 18;
  repeated GameStateSaveData game_state_save_data_for_playthrough = 19;
  repeated RegisteredDownloadableEntitlements registered_downloadable_entitlements = 20;
  repeated PlaythroughActiveFastTravelSaveData active_travel_stations_for_playthrough = 21;
  DiscoverySaveData discovery_data = 22;
  string save_game_guid = 23;
  repeated VehicleUnlockedSaveGameData vehicles_unlocked_data = 24;
  repeated string vehicle_parts_unlocked = 25;
  repeated OakCARMenuVehicleConfigSaveData vehicle_loadouts = 26;
  int32 vehicle_last_loadout_index = 27;
  repeated ChallengeSaveGameData challenge_data = 28;
  repeated OakSDUSaveGameData sdu_list = 29;
  repeated string selected_customizations = 30;
  repeated int32 equipped_emote_customizations = 31;
  repeated CustomPlayerColorSaveGameData selected_color_customizations = 32;
  GbxZoneMapFODSaveGameData gbx_zone_map_fod_save_game_data = 33;
  repeated EchoLogSaveGameData unlocked_echo_logs = 36;
  repeated NicknameMappingsEntry nickname_mappings = 38;
  uint32 accumulated_level_persistence_reset_timer_seconds = 39;
  ChallengeCategoryProgressSaveData challenge_category_completion_pcts = 40;
  OakPlayerCharacterSlotSaveGameData character_slot_save_game_data = 41;
  UITrackingSaveGameData ui_tracking_save_game_data = 42;
  string preferred_character_name = 43;
  int32 name_character_limit = 44;
  uint32 preferred_group_mode = 45;
  TimeOfDaySaveGameData time_of_day_save_game_data = 46;
  repeated LevelPersistence_Level_SaveGameData level_persistence_data = 47;
  repeated CustomFloatCustomizationSaveGameData custom_float_customizations = 49;
  HeroPointsSaveData hero_points_save_data = 50;
  repeated TrackedInteractionSaveData tracked_interactions = 51;
  string player_pronoun_selection = 52;
  PlayerVoiceSaveData player_voice = 53;
  repeated string last_overworld_travel_station_for_playthrough = 54;
  bool disable_customization_suppression = 55;
  repeated OakProfileCustomizationLinkData customization_link_data = 56;
  OakProfileCloudData profile_cloud_data = 64;
  DafTownHubTravelData townhub_travel_info = 65;
  uint32 difficulty = 66;
}
