arkparse 0.5.2__tar.gz → 0.5.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {arkparse-0.5.2 → arkparse-0.5.3}/PKG-INFO +1 -1
- {arkparse-0.5.2 → arkparse-0.5.3}/pyproject.toml +1 -1
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/json_api.py +6 -1
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/ark_game_object.py +24 -4
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_property.py +56 -24
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/saves/save_connection.py +8 -5
- {arkparse-0.5.2 → arkparse-0.5.3}/.gitignore +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/LICENSE +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/README.md +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/base_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/dino_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/equipment_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/general_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/player_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/rcon_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/stackable_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/api/structure_api.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/ark_tribe.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/ABERRATION.PNG +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/LOST_COLONY.PNG +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/RAGNAROK.PNG +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/THE_ISLAND.PNG +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/heavy_inventory +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/tamable_dinos.txt +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/armor +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/armor_bp +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/armor_bp_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/armor_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/saddle +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/saddle_bp +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/saddle_bp_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/saddle_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/shield +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/shield_bp +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/shield_bp_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/shield_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/weapon +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/weapon_bp +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/weapon_bp_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/equipment/weapon_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/inventory/with_item_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/stackable/stackable +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/stackable/stackable_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/trait/trait +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/assets/templates/trait/trait_n.json +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/consumables.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/dinos.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/equipment.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/placed_structures.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/player.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/resources.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/classes/traits.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/ark_dino_trait.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/ark_enum.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/ark_equipment_stat.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/ark_item_quality.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/ark_map.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/enums/ark_stat.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/ftp/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/ftp/ark_ftp_client.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/helpers/dino/is_wild_tamed.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/logging/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/logging/ark_save_logger.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/bases/base.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cluster_data/ark_cluster_data.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cluster_data/cluster_data_dino.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cluster_data/cluster_data_item.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cryopods/cryopod.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/baby.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/dino.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/dino_ai_controller.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/dino_id.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/pedigree.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/stats.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/tamed_baby.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/dinos/tamed_dino.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__armor_defaults.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__equipment.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__equipment_with_armor.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__equipment_with_durability.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/armor.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/saddle.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/shield.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/weapon.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/__parsed_object_base.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/dino_owner.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/inventory.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/inventory_item.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/object_crafter.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/object_owner.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/misc/trait.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/stackables/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/stackables/_stackable.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/stackables/ammo.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/stackables/resource.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/structures/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/structures/structure.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/structures/structure_with_inventory.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_base_value_parser.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_base_value_validator.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_binary_reader_base.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_byte_operator.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_fast_shim.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/_property_insertor.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/_property_parser.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/_property_replacer.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/ark_binary_parser.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/ark_property.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_dino_ancestor_entry.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_item_net_id.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_my_persistent_buff_datas.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_object_property.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_struct_type.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_tracked_actor_id_category_pair_with_bool.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_unique_net_id_repl.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_vector.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_vector_bool_pair.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_property_insertor.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_property_parser.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_property_replacer.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_archive.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_binary_parser.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_object.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_property_container.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_set.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/ark_value_type.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/array_property.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/game_object_reader_configuration.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/actor_transform.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_color.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_crafting_resource_requirement.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_custom_item_data.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_dino_ancestor_entry.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_dino_order_id.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_gacha_resource_struct.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_gene_trait_struct.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_gigantoraptor_bonded_struct.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_int_point.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_item_craft_queue_entry.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_item_net_id.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_key_value_pair.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_linear_color.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_milestone_tree_level_and_index.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_my_persistent_buff_datas.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_object_property.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_painting_key_value.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_patrol_group_saved_data.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_player_death_reason.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_primal_saddle_structure.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_quat.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_rotator.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_server_custom_folder.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_struct_type.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_tracked_actor_id_category_pair.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_tracked_actor_id_category_pair_with_bool.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_tribe_alliance.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_tribe_rank_group.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_unique_net_id_repl.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_vector.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_vector_bool_pair.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/object_reference.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/unknown_struct.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/player/ark_character_config.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/player/ark_character_stats.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/player/ark_persistent_buff_data.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/player/ark_player.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/player/ark_tribute_item.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/saves/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/saves/asa_save.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/saves/header_location.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/saves/save_context.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/utils/__init__.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/utils/heatmap_visualization.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/utils/import_file.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/utils/json_utils.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/utils/map_images.py +0 -0
- {arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/utils/tm_files.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arkparse
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.3
|
|
4
4
|
Summary: A package to parse and modify ark save files
|
|
5
5
|
Project-URL: Homepage, https://github.com/VincentHenauGithub/ark-save-parser
|
|
6
6
|
Author-email: Vincent Henau <vincent.henau.github@gmail.com>
|
|
@@ -455,7 +455,12 @@ class JsonApi:
|
|
|
455
455
|
try:
|
|
456
456
|
obj_uuid = SaveConnection.byte_array_to_uuid(row[0])
|
|
457
457
|
byte_buffer = ArkBinaryParser(row[1], self.save.save_context)
|
|
458
|
-
|
|
458
|
+
# Use the string-name-aware reader: some objects store their
|
|
459
|
+
# class as an inline string instead of a name-table id, which
|
|
460
|
+
# a raw read_name() can't resolve (raises when generate_unknown
|
|
461
|
+
# is off). Those are never items, so they fall through the
|
|
462
|
+
# filter below.
|
|
463
|
+
class_name, *_ = ArkGameObject.read_name(obj_uuid, byte_buffer)
|
|
459
464
|
|
|
460
465
|
if "/PrimalItemArmor_" not in class_name and \
|
|
461
466
|
"/PrimalItem_" not in class_name and \
|
|
@@ -45,6 +45,8 @@ class ArkGameObject(ArkPropertyContainer):
|
|
|
45
45
|
self.uuid = uuid
|
|
46
46
|
self.blueprint = blueprint
|
|
47
47
|
string_name = False
|
|
48
|
+
string_names: List[str] = []
|
|
49
|
+
string_name_offsets: List[int] = []
|
|
48
50
|
super().__init__()
|
|
49
51
|
if binary_reader:
|
|
50
52
|
ArkSaveLogger.set_file(binary_reader, "debug.bin")
|
|
@@ -55,7 +57,7 @@ class ArkGameObject(ArkPropertyContainer):
|
|
|
55
57
|
self.uuid2: UUID = None
|
|
56
58
|
binary_reader.set_position(0)
|
|
57
59
|
|
|
58
|
-
self.blueprint, string_name = ArkGameObject.read_name(uuid, binary_reader)
|
|
60
|
+
self.blueprint, string_name, string_names, string_name_offsets = ArkGameObject.read_name(uuid, binary_reader)
|
|
59
61
|
ArkSaveLogger.parser_log(f"Read Blueprint: {self.blueprint} (String name: {string_name})")
|
|
60
62
|
|
|
61
63
|
sContext : SaveContext = binary_reader.save_context
|
|
@@ -69,6 +71,14 @@ class ArkGameObject(ArkPropertyContainer):
|
|
|
69
71
|
binary_reader.validate_uint32(0)
|
|
70
72
|
if string_name:
|
|
71
73
|
binary_reader.read_uint16()
|
|
74
|
+
# Names embedded in a string-name header are stored as
|
|
75
|
+
# strings (never as name-table refs), mirroring what the
|
|
76
|
+
# regular names block below would produce.
|
|
77
|
+
self.names = string_names
|
|
78
|
+
self.name_metadata = [
|
|
79
|
+
_NameMetadata(name, offset, True)
|
|
80
|
+
for name, offset in zip(string_names, string_name_offsets)
|
|
81
|
+
]
|
|
72
82
|
|
|
73
83
|
try:
|
|
74
84
|
if not (no_header or string_name):
|
|
@@ -250,6 +260,8 @@ class ArkGameObject(ArkPropertyContainer):
|
|
|
250
260
|
def read_name(obj_uuid: UUID, reader: ArkBinaryParser) -> str:
|
|
251
261
|
reader.set_position(0)
|
|
252
262
|
string_name = False
|
|
263
|
+
extra_names: List[str] = []
|
|
264
|
+
extra_offsets: List[int] = []
|
|
253
265
|
|
|
254
266
|
try:
|
|
255
267
|
class_name = reader.read_name()
|
|
@@ -260,18 +272,26 @@ class ArkGameObject(ArkPropertyContainer):
|
|
|
260
272
|
try:
|
|
261
273
|
unknow_id = reader.read_uint32()
|
|
262
274
|
reader.validate_uint64(0)
|
|
263
|
-
reader.read_int()
|
|
275
|
+
name_count = reader.read_int()
|
|
264
276
|
class_name = reader.read_string()
|
|
265
277
|
# reader.validate_uint32(0)
|
|
266
278
|
string_name = True
|
|
279
|
+
# The string-name header carries a name count: the first string is
|
|
280
|
+
# the class, any further strings are the object's names (e.g. the
|
|
281
|
+
# instance name of a DeathItemCache) that the name-table format
|
|
282
|
+
# would store separately. Consume them so the trailing padding
|
|
283
|
+
# lines up (otherwise validate_uint32(0) hits the next length).
|
|
284
|
+
for _ in range(max(0, name_count - 1)):
|
|
285
|
+
extra_offsets.append(reader.position + 4)
|
|
286
|
+
extra_names.append(reader.read_string())
|
|
267
287
|
ArkSaveLogger.parser_log(f"Object {obj_uuid} has string class name {class_name} instead of name table reference")
|
|
268
288
|
except Exception as e:
|
|
269
289
|
ArkSaveLogger.error_log(f"Error reading class name for object {obj_uuid}: {e}")
|
|
270
290
|
reader.structured_print(to_default_file=True)
|
|
271
291
|
# input("Press Enter to continue...")
|
|
272
292
|
class_name = "UnknownClass"
|
|
273
|
-
|
|
274
|
-
return class_name, string_name
|
|
293
|
+
|
|
294
|
+
return class_name, string_name, extra_names, extra_offsets
|
|
275
295
|
|
|
276
296
|
def get_short_name(self) -> str:
|
|
277
297
|
to_strip_end = [
|
|
@@ -397,6 +397,16 @@ class ArkProperty:
|
|
|
397
397
|
|
|
398
398
|
return prop
|
|
399
399
|
|
|
400
|
+
@staticmethod
|
|
401
|
+
def _has_struct_reader(struct_type: str) -> bool:
|
|
402
|
+
"""Whether this struct type has a dedicated (fixed-layout) reader.
|
|
403
|
+
|
|
404
|
+
Types without one are read generically as a property list; see
|
|
405
|
+
``_read_struct_body`` and the guarded array backup in
|
|
406
|
+
``read_array_property``.
|
|
407
|
+
"""
|
|
408
|
+
return ArkStructType.from_type_name(struct_type) in _STRUCT_READERS
|
|
409
|
+
|
|
400
410
|
@staticmethod
|
|
401
411
|
def read_array_property(key: str, type_: str, position: int, bb: "ArkBinaryParser", data_size: int) -> Tuple["ArkProperty", int]:
|
|
402
412
|
# V14 no position in array
|
|
@@ -428,31 +438,51 @@ class ArkProperty:
|
|
|
428
438
|
bb.set_position(bb.position - 4)
|
|
429
439
|
|
|
430
440
|
array_items = bb.read_uint32()
|
|
441
|
+
array_end = data_start_position + data_size
|
|
431
442
|
|
|
432
|
-
#
|
|
433
|
-
#
|
|
443
|
+
# Structs without a dedicated reader are read generically as a property
|
|
444
|
+
# list (see _read_struct_body). That backup is reliable for well-formed,
|
|
445
|
+
# None-terminated property-list structs but can't be guaranteed for an
|
|
446
|
+
# arbitrary packed layout, so guard it: if a generic element read raises,
|
|
447
|
+
# recover by skipping to the array's known end and record the type for
|
|
448
|
+
# follow-up rather than failing the whole object. A dedicated reader
|
|
449
|
+
# raising is a real bug, so let that propagate.
|
|
450
|
+
has_reader = ArkProperty._has_struct_reader(array_content_type)
|
|
434
451
|
|
|
435
452
|
with log_block(f"Arr({array_content_type})"):
|
|
436
453
|
ArkSaveLogger.parser_log(
|
|
437
454
|
f"[STRUCT ARRAY: key='none'; nr_of_value={array_items}; type={array_content_type}; bin_length={data_size}]"
|
|
438
455
|
)
|
|
439
|
-
struct_array = [
|
|
440
|
-
|
|
441
|
-
for _ in range(array_items)
|
|
442
|
-
|
|
456
|
+
struct_array = []
|
|
457
|
+
try:
|
|
458
|
+
for _ in range(array_items):
|
|
459
|
+
struct_array.append(
|
|
460
|
+
ArkProperty.read_struct_property(bb, data_size, array_content_type, True)[0]
|
|
461
|
+
)
|
|
462
|
+
except Exception as exc:
|
|
463
|
+
if has_reader:
|
|
464
|
+
raise
|
|
465
|
+
ArkSaveLogger.warning_log(
|
|
466
|
+
f"Generic read of struct array '{array_content_type}' failed after "
|
|
467
|
+
f"{len(struct_array)}/{array_items} element(s): {exc}; skipping to end of array"
|
|
468
|
+
)
|
|
469
|
+
ArkSaveLogger._notify_struct_mismatch(
|
|
470
|
+
array_content_type, data_size, data_start_position, bb.position, bb
|
|
471
|
+
)
|
|
472
|
+
bb.set_position(array_end)
|
|
443
473
|
|
|
444
474
|
prop = ArkProperty(key, type_, position, 0, struct_array)
|
|
445
|
-
if bb.position !=
|
|
475
|
+
if bb.position != array_end:
|
|
476
|
+
# The read didn't consume exactly the declared size. Record the
|
|
477
|
+
# mismatch (the testbench captures these) and realign to the end.
|
|
446
478
|
ArkSaveLogger.warning_log(
|
|
447
|
-
f"Array
|
|
479
|
+
f"Array of struct '{array_content_type}' read incorrectly, "
|
|
480
|
+
f"bytes off: {array_end - bb.position}; realigning to end of array"
|
|
448
481
|
)
|
|
449
|
-
ArkSaveLogger.
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
# if array_content_type == "PrimalCharacterStatusValueModifier":
|
|
455
|
-
# ArkSaveLogger.set_log_level(ArkSaveLogger.LogTypes.PARSER, False)
|
|
482
|
+
ArkSaveLogger._notify_struct_mismatch(
|
|
483
|
+
array_content_type, data_size, data_start_position, bb.position, bb
|
|
484
|
+
)
|
|
485
|
+
bb.set_position(array_end)
|
|
456
486
|
|
|
457
487
|
return prop, start_values_pos
|
|
458
488
|
|
|
@@ -549,17 +579,19 @@ class ArkProperty:
|
|
|
549
579
|
ArkSaveLogger.parser_log(f"Reading struct {struct_type} with data size {data_size}")
|
|
550
580
|
return _STRUCT_READERS[ark_struct_type](bb, data_size)
|
|
551
581
|
if in_array:
|
|
582
|
+
# No dedicated reader for this struct type. Fall through to the
|
|
583
|
+
# generic property-list read below — the designed backup for unknown
|
|
584
|
+
# structs in arrays. It reads cleanly for well-formed, None-terminated
|
|
585
|
+
# property-list structs, and read_array_property validates the array's
|
|
586
|
+
# total size and recovers from any type it can't fully consume, so
|
|
587
|
+
# this is not by itself an error. Record the type once (quietly) so it
|
|
588
|
+
# is discoverable without the noise of a per-type warning.
|
|
552
589
|
if struct_type not in UNSUPPORTED_STRUCTS:
|
|
553
|
-
ArkSaveLogger.
|
|
590
|
+
ArkSaveLogger.parser_log(
|
|
591
|
+
f"No dedicated reader for struct '{struct_type}' in array; "
|
|
592
|
+
f"reading generically as a property list"
|
|
593
|
+
)
|
|
554
594
|
UNSUPPORTED_STRUCTS.append(struct_type)
|
|
555
|
-
|
|
556
|
-
# uncomment the lines below if you want to make objects of unknown structs
|
|
557
|
-
# ArkSaveLogger.parser_log(f"Reading struct {struct_type} as array")
|
|
558
|
-
# bb.structured_print(to_default_file=True)
|
|
559
|
-
# bb.store()
|
|
560
|
-
# ArkSaveLogger.error_log(f"Unsupported struct type {struct_type} in array")
|
|
561
|
-
# ArkSaveLogger.open_hex_view(True)
|
|
562
|
-
# raise ValueError(f"Unsupported struct type {struct_type}")
|
|
563
595
|
|
|
564
596
|
ArkSaveLogger.parser_log(f"Reading struct {struct_type} with data size {data_size} as property list at position {bb.get_position()}")
|
|
565
597
|
# Fallback: struct as property list
|
|
@@ -182,7 +182,7 @@ class SaveConnection:
|
|
|
182
182
|
obj_uuid = _fast_uuid_from_bytes(key_bytes)
|
|
183
183
|
try:
|
|
184
184
|
reader = ArkBinaryParser(value_bytes, self.save_context)
|
|
185
|
-
class_name, _ = ArkGameObject.read_name(obj_uuid, reader)
|
|
185
|
+
class_name, *_ = ArkGameObject.read_name(obj_uuid, reader)
|
|
186
186
|
self._class_cache[obj_uuid] = class_name
|
|
187
187
|
except Exception:
|
|
188
188
|
pass
|
|
@@ -192,7 +192,7 @@ class SaveConnection:
|
|
|
192
192
|
return self._class_cache[obj_uuid]
|
|
193
193
|
bin = self.get_game_obj_binary(obj_uuid)
|
|
194
194
|
reader = ArkBinaryParser(bin, self.save_context)
|
|
195
|
-
class_name,
|
|
195
|
+
class_name, *_ = ArkGameObject.read_name(obj_uuid, reader)
|
|
196
196
|
self._class_cache[obj_uuid] = class_name
|
|
197
197
|
return class_name
|
|
198
198
|
|
|
@@ -402,7 +402,10 @@ class SaveConnection:
|
|
|
402
402
|
cursor = conn.execute(query)
|
|
403
403
|
for row in cursor:
|
|
404
404
|
byte_buffer = ArkBinaryParser(row[0], self.save_context)
|
|
405
|
-
|
|
405
|
+
# String-name-aware read: some objects store their class as an
|
|
406
|
+
# inline string instead of a name-table id, which a raw
|
|
407
|
+
# read_name() can't resolve (raises when generate_unknown is off).
|
|
408
|
+
class_name, *_ = ArkGameObject.read_name(None, byte_buffer)
|
|
406
409
|
if class_name not in classes:
|
|
407
410
|
classes.append(class_name)
|
|
408
411
|
return classes
|
|
@@ -452,7 +455,7 @@ class SaveConnection:
|
|
|
452
455
|
bin = self.get_game_obj_binary(obj_uuid)
|
|
453
456
|
reader = ArkBinaryParser(bin, self.save_context)
|
|
454
457
|
|
|
455
|
-
class_name,
|
|
458
|
+
class_name, *_ = ArkGameObject.read_name(obj_uuid, reader)
|
|
456
459
|
|
|
457
460
|
obj = SaveConnection.parse_as_predefined_object(obj_uuid, class_name, reader)
|
|
458
461
|
|
|
@@ -488,7 +491,7 @@ class SaveConnection:
|
|
|
488
491
|
continue
|
|
489
492
|
|
|
490
493
|
byte_buffer = ArkBinaryParser(binary_data, self.save_context)
|
|
491
|
-
class_name, _ = ArkGameObject.read_name(obj_uuid, byte_buffer)
|
|
494
|
+
class_name, *_ = ArkGameObject.read_name(obj_uuid, byte_buffer)
|
|
492
495
|
|
|
493
496
|
if reader_config.blueprint_name_filter and not reader_config.blueprint_name_filter(class_name):
|
|
494
497
|
continue
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cluster_data/ark_cluster_data.py
RENAMED
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cluster_data/cluster_data_dino.py
RENAMED
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/cluster_data/cluster_data_item.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__equipment_with_armor.py
RENAMED
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/equipment/__equipment_with_durability.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/object_model/structures/structure_with_inventory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/_property_insertor.py
RENAMED
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/_property_replacer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_item_net_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_object_property.py
RENAMED
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/_legacy_parsing/struct/ark_struct_type.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_crafting_resource_requirement.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_gigantoraptor_bonded_struct.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_milestone_tree_level_and_index.py
RENAMED
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_my_persistent_buff_datas.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_patrol_group_saved_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_primal_saddle_structure.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkparse-0.5.2 → arkparse-0.5.3}/src/arkparse/parsing/struct/ark_tracked_actor_id_category_pair.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|