def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Unit count", DataType("u32"), save_as="unit_count"), Retriever("Units", DataType(UnitStruct), set_repeat="{unit_count}") ] super().__init__("Player Units", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("ai_file_name", DataType("str32")), Retriever("ai_file", DataType("str32")), ] super().__init__("AI2", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("variable_id", DataType("u32")), Retriever("name", DataType("str32")), ] super().__init__("Variable", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("unit_count", DataType("u32")), Retriever("units", DataType(UnitStruct)) ] super().__init__("Player Units", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Unknown, always 0", DataType("u32")), Retriever("Unknown, always 0 (2)", DataType("u32")), Retriever("AI .per file text", DataType("str32")), ] super().__init__("AI", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("unknown", DataType("u32")), Retriever("unknown_2", DataType("u32")), Retriever("ai_per_file_text", DataType("str32")), ] super().__init__("AI", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("ASCII, Pregame cinematic filename", DataType("str16")), Retriever("ASCII, Victory cinematic filename", DataType("str16")), Retriever("ASCII, Loss cinematic filename", DataType("str16")), # Retriever("Separator (! in some version)", DataType("1")), ] super().__init__("Cinematics", retrievers, parser_obj)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Terrain ID", DataType("u8")), Retriever("Elevation", DataType("u8")), Retriever("Unused", DataType("u8")), Retriever("Separator?", DataType("4")) ] super().__init__("Terrain", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Active", DataType("u32")), Retriever("Human", DataType("u32")), Retriever("Civilization", DataType("u32")), Retriever("CTY mode", DataType("u32")) ] super().__init__("Player Data #1", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Per-player diplomacy", DataType(PlayerDiplomacyStruct, repeat=16)), Retriever("Individual Victories", DataType("60", repeat=16*12)), # 12 Conditions per (16) Player(s). Retriever("Separator", DataType("u32")), Retriever("Per-player allied victory", DataType("u32", repeat=16)), # Ignored -> PlayerDataThree Retriever("Unknown", DataType("4")), ] super().__init__("Diplomacy", retrievers, parser_obj)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("active", DataType("u32")), Retriever("human", DataType("u32")), Retriever("civilization", DataType("u32")), Retriever("architecture_set", DataType("u32")), Retriever("cty_mode", DataType("u32")), ] super().__init__("Player Data #1", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Number of unit sections", DataType("u32"), save_as="unit_sections"), # Always 9 (Gaia + 8Plyrs) Retriever("Player data #4", DataType(PlayerDataFourStruct, repeat=8)), Retriever("Number of players?", DataType("u32")), # Also always 9 (Gaia + 8Plyrs) Retriever("Player data #3", DataType(PlayerDataThreeStruct, repeat=8)), Retriever("Player Units", DataType(PlayerUnitsStruct), set_repeat="{unit_sections}"), ] super().__init__("Units", retrievers, parser_obj, data=data)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("per_player_diplomacy", DataType(PlayerDiplomacyStruct, repeat=16)), Retriever("individual_victories", DataType("60", repeat=16 * 12)), # 12 Conditions per (16) Player(s). Retriever("separator", DataType("u32")), Retriever("per_player_allied_victory", DataType("u32", repeat=16)), # Ignored -> PlayerDataThree Retriever("unknown", DataType("4")), ] super().__init__("Diplomacy", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("ASCII, Background filename", DataType("str16")), Retriever("Picture Version", DataType("u32")), Retriever("Bitmap width", DataType("u32")), Retriever("Bitmap height", DataType("s32")), Retriever("Picture Orientation", DataType("s16")), # Retriever(" BITMAPINFOHEADER", DataType("u32")), ] super().__init__("Background Image", retrievers, parser_obj)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("ascii_filename", DataType("str16")), Retriever("picture_version", DataType("u32")), Retriever("bitmap_width", DataType("u32")), Retriever("bitmap_height", DataType("s32")), Retriever("picture_orientation", DataType("s16")), # Retriever("BITMAPINFOHEADER", DataType("u32")), ] super().__init__("Background Image", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("ascii_pregame", DataType("str16")), Retriever("ascii_victory", DataType("str16")), Retriever("ascii_loss", DataType("str16")), # Retriever("Separator (! in some version)", DataType("1")), ] super().__init__("Cinematics", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [] for disabled_type in ["tech", "building", "unit"]: retrievers.append( Retriever(f"per_player_number_of_disabled_{disabled_type}s", DataType("u32", repeat=16))) for player in range(1, 9): retrievers.append( Retriever(f"disabled_{disabled_type}_ids_player_{player}", DataType("u32"))) # Unused: Players 9 - 16 can't have {disabled_type} technologies retrievers.append( Retriever(f"disabled_{disabled_type}_ids_player9-16", DataType("u32", repeat=0))) retrievers += [ Retriever("combat_mode", DataType("u32")), Retriever("naval_mode", DataType("u32")), Retriever("all_techs", DataType("u32")), Retriever("per_player_starting_age", DataType("u32", repeat=16)), # 2: Dark 6 = Post | 1-8 players 9 GAIA Retriever("unknown", DataType("36")), ] super().__init__("Options", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Version", DataType("c4"), save_as="scenario_version"), Retriever("Header length", DataType("u32")), Retriever("Savable", DataType("s32")), Retriever("Timestamp of last save", DataType("u32")), Retriever("Scenario instructions", DataType("str32")), Retriever("Individual victories used", DataType("u32")), Retriever("Player count", DataType("u32")), Retriever("Data", DataType("36")), Retriever("Creator name", DataType("str32")), Retriever("Data (2)", DataType("4")), ] super().__init__("File Header", retrievers, parser_obj)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("version", DataType("c4"), save_as="scenario_version"), Retriever("header_length", DataType("u32")), Retriever("savable", DataType("s32")), Retriever("timestamp_of_last_save", DataType("u32")), Retriever("scenario_instructions", DataType("str32")), Retriever("individual_victories_used", DataType("u32")), Retriever("player_count", DataType("u32")), Retriever("data", DataType("36")), Retriever("creator_name", DataType("str32")), Retriever("trigger_count", DataType("u32")), ] super().__init__("File Header", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("number_of_unit_sections", DataType("u32")), Retriever("player_data_4", DataType(PlayerDataFourStruct, repeat=8)), Retriever("number_of_players", DataType("u32")), # Also always 9 (Gaia + 8Plyrs) Retriever("player_data_3", DataType(PlayerDataThreeStruct, repeat=8)), Retriever("players_units", DataType(PlayerUnitsStruct)), ] super().__init__("Units", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("X position", DataType("f32")), Retriever("Y position", DataType("f32")), Retriever("Z position", DataType("f32")), Retriever("ID", DataType("u32")), Retriever("Unit 'constant'", DataType("u16")), Retriever("Status", DataType("u8")), # Status, Always 2. 0-6 no difference (?) | 7-255 makes it disappear. (Except from the mini-map) Retriever("Rotation, in radians", DataType("f32")), Retriever("Initial animation frame", DataType("u16")), Retriever("Garrisoned in: ID", DataType("s32")), ] super().__init__("Unit", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("x", DataType("f32")), Retriever("y", DataType("f32")), Retriever("z", DataType("f32")), Retriever("reference_id", DataType("s32")), Retriever("unit_const", DataType("u16")), Retriever("status", DataType("u8")), # Status, Always 2. 0-6 no difference (?) | 7-255 makes it disappear. (Except from the mini-map) Retriever("rotation", DataType("f32")), Retriever("initial_animation_frame", DataType("u16")), Retriever("garrisoned_in_id", DataType("s32")), ] super().__init__("Unit", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("stance_with_each_player", DataType("u32", repeat=16)), ] super().__init__("Player Diplomacy", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("trigger_version", DataType("f64")), Retriever("trigger_instruction_start", DataType("s8")), Retriever("number_of_triggers", DataType("s32")), Retriever("trigger_data", DataType(TriggerStruct)), Retriever("trigger_display_order_array", DataType("u32")), Retriever("unknown", DataType("1028")), Retriever("number_of_variables", DataType("u32")), Retriever("variable_data", DataType(VariableStruct)), ] super().__init__("Triggers", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("unknown_2", DataType("4")), Retriever("script_file_path", DataType("str16")), Retriever("unknown_3", DataType("4")), Retriever("ai_files_present", DataType("u32")), Retriever("unknown_4", DataType("4")), Retriever("number_of_ai_files", DataType("u32"), possibly_list=False), Retriever("ai_files", DataType(AI2Struct)), Retriever("__END_OF_FILE_MARK__", DataType("1")), ] super().__init__("Files", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Food, duplicate", DataType("f32")), Retriever("Wood, duplicate", DataType("f32")), Retriever("Gold, duplicate", DataType("f32")), Retriever("Stone, duplicate", DataType("f32")), Retriever("'Ore X', duplicate", DataType("f32")), Retriever("Trade Goods, duplicate", DataType("f32")), Retriever("Population limit", DataType("f32")), ] super().__init__("Player Data #4", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Gold", DataType("u32")), Retriever("Wood", DataType("u32")), Retriever("Food", DataType("u32")), Retriever("Stone", DataType("u32")), Retriever("Ore X (unused)", DataType("u32")), Retriever("Trade Goods", DataType("u32")), Retriever("Player color", DataType("u32")) ] super().__init__("Resources", retrievers, parser_obj, data)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("gold", DataType("u32")), Retriever("wood", DataType("u32")), Retriever("food", DataType("u32")), Retriever("stone", DataType("u32")), Retriever("ore_x_unused", DataType("u32")), Retriever("trade_goods", DataType("u32")), Retriever("player_color", DataType("u32")) ] super().__init__("Resources", retrievers, parser_obj, data, pieces=pieces)
def __init__(self, parser_obj=None, data=None, pieces=None): retrievers = [ Retriever("ascii_filename", DataType("str16")), Retriever("picture_version", DataType("u32")), Retriever("bitmap_width", DataType("u32")), Retriever("bitmap_height", DataType("s32")), Retriever("picture_orientation", DataType("s16")), Retriever("bitmap_info", DataType(BitMapInfoStruct), possibly_list=False), ] super().__init__("Background Image", retrievers, parser_obj, data=data, pieces=pieces)
def __init__(self, parser_obj=None, data=None): retrievers = [ Retriever("Strings", DataType("str16", repeat=32)), Retriever("AI names", DataType("str16", repeat=16)), Retriever("AI files", DataType(AIStruct, repeat=16)), Retriever("AI type", DataType("u8", repeat=16)), Retriever("Separator", DataType("u32")), Retriever("Resources", DataType(ResourcesStruct, repeat=16)) ] super().__init__("Player Data #2", retrievers, parser_obj)