arkparse 0.5.3__tar.gz → 0.5.4__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.3 → arkparse-0.5.4}/PKG-INFO +1 -1
- {arkparse-0.5.3 → arkparse-0.5.4}/pyproject.toml +1 -1
- arkparse-0.5.4/src/arkparse/assets/GENESIS_Ocean.png +0 -0
- arkparse-0.5.4/src/arkparse/assets/GENESIS_OtherBiomes.png +0 -0
- arkparse-0.5.4/src/arkparse/assets/make_composite.py +171 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/dinos.py +10 -3
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/placed_structures.py +5 -2
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/ark_map.py +9 -1
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/dino.py +1 -1
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_base_value_parser.py +2 -1
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_property.py +2 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/__init__.py +1 -0
- arkparse-0.5.4/src/arkparse/parsing/struct/actor_transform.py +423 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_struct_type.py +3 -0
- arkparse-0.5.4/src/arkparse/parsing/struct/ark_vector2d.py +38 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/utils/heatmap_visualization.py +4 -3
- arkparse-0.5.3/src/arkparse/parsing/struct/actor_transform.py +0 -412
- {arkparse-0.5.3 → arkparse-0.5.4}/.gitignore +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/LICENSE +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/README.md +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/base_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/dino_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/equipment_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/general_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/json_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/player_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/rcon_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/stackable_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/api/structure_api.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/ark_tribe.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/ABERRATION.PNG +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/LOST_COLONY.PNG +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/RAGNAROK.PNG +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/THE_ISLAND.PNG +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/heavy_inventory +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/tamable_dinos.txt +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/armor +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/armor_bp +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/armor_bp_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/armor_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/saddle +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/saddle_bp +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/saddle_bp_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/saddle_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/shield +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/shield_bp +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/shield_bp_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/shield_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/weapon +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/weapon_bp +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/weapon_bp_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/equipment/weapon_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/inventory/with_item_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/stackable/stackable +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/stackable/stackable_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/trait/trait +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/assets/templates/trait/trait_n.json +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/consumables.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/equipment.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/player.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/resources.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/classes/traits.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/ark_dino_trait.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/ark_enum.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/ark_equipment_stat.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/ark_item_quality.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/enums/ark_stat.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/ftp/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/ftp/ark_ftp_client.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/helpers/dino/is_wild_tamed.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/logging/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/logging/ark_save_logger.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/ark_game_object.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/bases/base.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/cluster_data/ark_cluster_data.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/cluster_data/cluster_data_dino.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/cluster_data/cluster_data_item.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/cryopods/cryopod.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/baby.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/dino_ai_controller.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/dino_id.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/pedigree.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/stats.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/tamed_baby.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/dinos/tamed_dino.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/__armor_defaults.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/__equipment.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/__equipment_with_armor.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/__equipment_with_durability.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/armor.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/saddle.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/shield.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/equipment/weapon.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/__parsed_object_base.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/dino_owner.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/inventory.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/inventory_item.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/object_crafter.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/object_owner.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/misc/trait.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/stackables/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/stackables/_stackable.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/stackables/ammo.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/stackables/resource.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/structures/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/structures/structure.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/object_model/structures/structure_with_inventory.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_base_value_validator.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_binary_reader_base.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_byte_operator.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_fast_shim.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/_property_insertor.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/_property_parser.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/_property_replacer.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/ark_binary_parser.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/ark_property.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_dino_ancestor_entry.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_item_net_id.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_my_persistent_buff_datas.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_object_property.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_struct_type.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_tracked_actor_id_category_pair_with_bool.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_unique_net_id_repl.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_vector.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_legacy_parsing/struct/ark_vector_bool_pair.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_property_insertor.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_property_parser.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/_property_replacer.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_archive.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_binary_parser.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_object.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_property_container.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_set.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/ark_value_type.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/array_property.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/game_object_reader_configuration.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_color.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_crafting_resource_requirement.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_custom_item_data.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_dino_ancestor_entry.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_dino_order_id.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_gacha_resource_struct.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_gene_trait_struct.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_gigantoraptor_bonded_struct.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_int_point.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_item_craft_queue_entry.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_item_net_id.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_key_value_pair.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_linear_color.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_milestone_tree_level_and_index.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_my_persistent_buff_datas.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_object_property.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_painting_key_value.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_patrol_group_saved_data.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_player_death_reason.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_primal_saddle_structure.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_quat.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_rotator.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_server_custom_folder.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_tracked_actor_id_category_pair.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_tracked_actor_id_category_pair_with_bool.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_tribe_alliance.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_tribe_rank_group.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_unique_net_id_repl.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_vector.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/ark_vector_bool_pair.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/object_reference.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/parsing/struct/unknown_struct.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/player/ark_character_config.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/player/ark_character_stats.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/player/ark_persistent_buff_data.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/player/ark_player.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/player/ark_tribute_item.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/saves/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/saves/asa_save.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/saves/header_location.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/saves/save_connection.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/saves/save_context.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/utils/__init__.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/utils/import_file.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/utils/json_utils.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/src/arkparse/utils/map_images.py +0 -0
- {arkparse-0.5.3 → arkparse-0.5.4}/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.4
|
|
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>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
make_composite.py
|
|
4
|
+
|
|
5
|
+
Downloads map tiles from a tile server and composites them into a single image.
|
|
6
|
+
Auto-detects grid size using binary search.
|
|
7
|
+
|
|
8
|
+
Requires: Pillow (PIL)
|
|
9
|
+
pip install pillow
|
|
10
|
+
"""
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import io
|
|
14
|
+
import os
|
|
15
|
+
import sys
|
|
16
|
+
from typing import List
|
|
17
|
+
from urllib.request import urlopen, Request
|
|
18
|
+
from urllib.error import HTTPError
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
try:
|
|
22
|
+
from PIL import Image
|
|
23
|
+
except Exception as e:
|
|
24
|
+
print("Pillow is required: pip install pillow", file=sys.stderr)
|
|
25
|
+
raise
|
|
26
|
+
|
|
27
|
+
# Headers to mimic a browser request
|
|
28
|
+
HEADERS = {
|
|
29
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
30
|
+
"Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
|
|
31
|
+
"Referer": "https://wikily.gg/",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
TILE_SIZE = 256
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def tile_exists(base_url: str, zoom: int, x: int, y: int) -> bool:
|
|
38
|
+
"""Check if a tile exists at the given coordinates."""
|
|
39
|
+
url = f"{base_url}/{zoom}/{x}/{y}.png"
|
|
40
|
+
try:
|
|
41
|
+
req = Request(url, headers=HEADERS, method='HEAD')
|
|
42
|
+
with urlopen(req, timeout=10) as resp:
|
|
43
|
+
return resp.status == 200
|
|
44
|
+
except HTTPError:
|
|
45
|
+
return False
|
|
46
|
+
except Exception:
|
|
47
|
+
# Try GET as fallback (some servers don't support HEAD)
|
|
48
|
+
try:
|
|
49
|
+
req = Request(url, headers=HEADERS)
|
|
50
|
+
with urlopen(req, timeout=10) as resp:
|
|
51
|
+
return resp.status == 200
|
|
52
|
+
except:
|
|
53
|
+
return False
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def find_grid_size(base_url: str, zoom: int) -> int:
|
|
57
|
+
"""
|
|
58
|
+
Binary search to find the grid size (number of tiles per side).
|
|
59
|
+
Assumes square grid starting at 0,0.
|
|
60
|
+
"""
|
|
61
|
+
print(f"Detecting grid size for zoom {zoom}...")
|
|
62
|
+
|
|
63
|
+
# First, verify tile 0,0 exists
|
|
64
|
+
if not tile_exists(base_url, zoom, 0, 0):
|
|
65
|
+
raise SystemExit(f"Tile 0,0 does not exist at {base_url}/{zoom}/")
|
|
66
|
+
|
|
67
|
+
# Binary search for max coordinate
|
|
68
|
+
low, high = 1, 256 # reasonable upper bound
|
|
69
|
+
|
|
70
|
+
# First find an upper bound that doesn't exist
|
|
71
|
+
while tile_exists(base_url, zoom, high - 1, 0):
|
|
72
|
+
high *= 2
|
|
73
|
+
if high > 1024:
|
|
74
|
+
raise SystemExit("Grid size exceeds reasonable limit (1024)")
|
|
75
|
+
|
|
76
|
+
# Binary search
|
|
77
|
+
while low < high:
|
|
78
|
+
mid = (low + high) // 2
|
|
79
|
+
if tile_exists(base_url, zoom, mid, 0):
|
|
80
|
+
low = mid + 1
|
|
81
|
+
else:
|
|
82
|
+
high = mid
|
|
83
|
+
|
|
84
|
+
grid_size = low
|
|
85
|
+
print(f"Detected grid size: {grid_size}x{grid_size} tiles")
|
|
86
|
+
return grid_size
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def download_image(url: str) -> Image.Image:
|
|
90
|
+
"""Download an image from URL and return as PIL Image."""
|
|
91
|
+
req = Request(url, headers=HEADERS)
|
|
92
|
+
with urlopen(req, timeout=30) as resp:
|
|
93
|
+
data = resp.read()
|
|
94
|
+
return Image.open(io.BytesIO(data)).convert("RGBA")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def compose_map(base_url: str, zoom: int, out_path: str) -> None:
|
|
98
|
+
"""Download all tiles for a zoom level and compose into single image."""
|
|
99
|
+
grid_size = find_grid_size(base_url, zoom)
|
|
100
|
+
|
|
101
|
+
width = grid_size * TILE_SIZE
|
|
102
|
+
height = grid_size * TILE_SIZE
|
|
103
|
+
total_tiles = grid_size * grid_size
|
|
104
|
+
|
|
105
|
+
print(f"Canvas size: {width}x{height} ({total_tiles} tiles)")
|
|
106
|
+
|
|
107
|
+
canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0))
|
|
108
|
+
|
|
109
|
+
downloaded = 0
|
|
110
|
+
failed = 0
|
|
111
|
+
|
|
112
|
+
for y in range(grid_size):
|
|
113
|
+
for x in range(grid_size):
|
|
114
|
+
tile_num = y * grid_size + x + 1
|
|
115
|
+
url = f"{base_url}/{zoom}/{x}/{y}.png"
|
|
116
|
+
print(f"Downloading tile {tile_num}/{total_tiles}: {zoom}/{x}/{y}.png", end="")
|
|
117
|
+
|
|
118
|
+
try:
|
|
119
|
+
img = download_image(url)
|
|
120
|
+
if img.size != (TILE_SIZE, TILE_SIZE):
|
|
121
|
+
img = img.resize((TILE_SIZE, TILE_SIZE))
|
|
122
|
+
|
|
123
|
+
paste_x = x * TILE_SIZE
|
|
124
|
+
paste_y = y * TILE_SIZE
|
|
125
|
+
canvas.paste(img, (paste_x, paste_y))
|
|
126
|
+
downloaded += 1
|
|
127
|
+
print(" OK")
|
|
128
|
+
except Exception as e:
|
|
129
|
+
print(f" FAILED: {e}")
|
|
130
|
+
failed += 1
|
|
131
|
+
|
|
132
|
+
print(f"\nDownloaded: {downloaded}, Failed: {failed}")
|
|
133
|
+
|
|
134
|
+
# Save
|
|
135
|
+
os.makedirs(os.path.dirname(out_path) or ".", exist_ok=True)
|
|
136
|
+
canvas.convert("RGB").save(out_path, format="PNG")
|
|
137
|
+
print(f"Saved -> {out_path}")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def main() -> None:
|
|
141
|
+
# Configuration
|
|
142
|
+
output_dir = Path(__file__).parent
|
|
143
|
+
zoom = 5
|
|
144
|
+
|
|
145
|
+
# List of maps to download: (base_url, output_name)
|
|
146
|
+
maps: List[tuple[str, str]] = [
|
|
147
|
+
("https://r2.wikily.gg/images/ark/maps/lost_colony_tiles", "LOST_COLONY.png"),
|
|
148
|
+
("https://r2.wikily.gg/images/ark/maps/valguero_tiles", "VALGUERO.png"),
|
|
149
|
+
("https://r2.wikily.gg/images/ark/maps/aberration_tiles", "ABERRATION.png"),
|
|
150
|
+
("https://r2.wikily.gg/images/ark/maps/ragnarok_tiles", "RAGNAROK.png"),
|
|
151
|
+
("https://r2.wikily.gg/images/ark/maps/the_island_tiles", "THE_ISLAND.png"),
|
|
152
|
+
("https://r2.wikily.gg/images/ark/maps/genesis_tiles", "GENESIS_BIOMES.png"),
|
|
153
|
+
("https://r2.wikily.gg/images/ark/maps/genesisocean_tiles", "GENESIS_OCEAN.png"),
|
|
154
|
+
]
|
|
155
|
+
|
|
156
|
+
for base_url, output_name in maps:
|
|
157
|
+
print(f"\n{'='*60}")
|
|
158
|
+
print(f"Processing: {output_name}")
|
|
159
|
+
print(f"Base URL: {base_url}")
|
|
160
|
+
print(f"Zoom: {zoom}")
|
|
161
|
+
print('='*60)
|
|
162
|
+
|
|
163
|
+
out_path = os.path.join(output_dir, output_name)
|
|
164
|
+
try:
|
|
165
|
+
compose_map(base_url, zoom, out_path)
|
|
166
|
+
except Exception as e:
|
|
167
|
+
print(f"ERROR processing {output_name}: {e}", file=sys.stderr)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
if __name__ == "__main__":
|
|
171
|
+
main()
|
|
@@ -139,7 +139,11 @@ class DlcDinos:
|
|
|
139
139
|
malwyn = "/Game/LostColony/Dinos/SnowDragon/SnowDragon_Character_BP.SnowDragon_Character_BP_C"
|
|
140
140
|
ossidon = "/Game/LostColony/Dinos/SnowMonster/SnowMonster_Character_BP.SnowMonster_Character_BP_C"
|
|
141
141
|
gloon = "/Game/LostColony/Dinos/LostChargePet/LostCharge_LanternPet_Char_BP.LostCharge_LanternPet_Char_BP_C"
|
|
142
|
-
|
|
142
|
+
lumina = "/Game/Dragontopia/Dragons/Eclipsar/Lumina/Lumina_Character_BP.Lumina_Character_BP_C"
|
|
143
|
+
umbra = "/Game/Dragontopia/Dragons/Eclipsar/Umbra/Umbra_Character_BP.Umbra_Character_BP_C"
|
|
144
|
+
brig_ship = "/Game/Water/Vessels/Brig/BrigShipBP.BrigShipBP_C"
|
|
145
|
+
sloop_ship = "/Game/Water/Vessels/Sloop/SloopShipBP.SloopShipBP_C"
|
|
146
|
+
all_bps = [firemane, archelon, dread_mare, oasisaur, train, helper_bot, zeppelin, doggo, veilwyn, elderclaw, solwyn, malwyn, ossidon, gloon, lumina, umbra, brig_ship, sloop_ship]
|
|
143
147
|
|
|
144
148
|
class ShoulderPets:
|
|
145
149
|
glowtail = "/Game/Aberration/Dinos/LanternLizard/LanternLizard_Character_BP.LanternLizard_Character_BP_C"
|
|
@@ -223,6 +227,8 @@ class NonTameable:
|
|
|
223
227
|
tek_giga = "/Game/PrimalEarth/Dinos/Giganotosaurus/BionicGigant_Character_BP.BionicGigant_Character_BP_C"
|
|
224
228
|
leedsichthys = "/Game/PrimalEarth/Dinos/Leedsichthys/Leedsichthys_Character_BP.Leedsichthys_Character_BP_C"
|
|
225
229
|
yeti = "/Game/PrimalEarth/Dinos/Bigfoot/Yeti_Character_BP.Yeti_Character_BP_C"
|
|
230
|
+
insect_swarm = "/Game/Genesis/Dinos/Swarms/InsectSwarmChar_BP.InsectSwarmChar_BP_C"
|
|
231
|
+
microbe_swarm = "/Game/Genesis/Dinos/Swarms/MicrobeSwarmChar_BP.MicrobeSwarmChar_BP_C"
|
|
226
232
|
corrupted = Corrupted()
|
|
227
233
|
alpha = Alphas()
|
|
228
234
|
event = event()
|
|
@@ -233,7 +239,7 @@ class NonTameable:
|
|
|
233
239
|
coelacanth_ocean, leech, leech_diseased, piranha,
|
|
234
240
|
sabertooth_salmon, trilobite, death_worm, jugbug_oil, jugbug_water,
|
|
235
241
|
enforcer, scout, defence_unit, polar_bear, iceworm, tek_giga,
|
|
236
|
-
leedsichthys, yeti
|
|
242
|
+
leedsichthys, yeti, insect_swarm, microbe_swarm
|
|
237
243
|
] + corrupted.all_bps + alpha.all_bps + event.all_bps
|
|
238
244
|
|
|
239
245
|
class Paleo:
|
|
@@ -382,6 +388,7 @@ class Dinos:
|
|
|
382
388
|
helicoprion = "/Game/ASA/Dinos/Helicoprion/Helicoprion_Character_BP.Helicoprion_Character_BP_C"
|
|
383
389
|
acrocanthosaurus = "/Game/ASA/Dinos/Acrocanthosaurus/Acrocanthosaurus_Character_BP.Acrocanthosaurus_Character_BP_C"
|
|
384
390
|
cryolophosaurus = "/Game/ASA/Dinos/Cryolophosaurus/Cryolophosaurus_Character_BP.Cryolophosaurus_Character_BP_C"
|
|
391
|
+
magmasaur = "/Game/Genesis/Dinos/Cherufe/Cherufe_Character_BP"
|
|
385
392
|
|
|
386
393
|
abberant = Abberant()
|
|
387
394
|
paleo = Paleo()
|
|
@@ -416,7 +423,7 @@ class Dinos:
|
|
|
416
423
|
dreadnoughtus, maelizard, shastasaurus, gacha, gasbag,
|
|
417
424
|
managarmr, tek_raptor, tek_rex, tek_stego,
|
|
418
425
|
velonosaur, yutyrannus, tek_parasaur, queen_bee,
|
|
419
|
-
rubble_golem, helicoprion, acrocanthosaurus, cryolophosaurus
|
|
426
|
+
rubble_golem, helicoprion, acrocanthosaurus, cryolophosaurus, magmasaur
|
|
420
427
|
] + abberant.all_bps + flyers.all_bps + \
|
|
421
428
|
dlc_dinos.all_bps + shoulder_pets.all_bps + non_tameable.all_bps + \
|
|
422
429
|
paleo.all_bps
|
|
@@ -96,8 +96,9 @@ class Crafting:
|
|
|
96
96
|
cooking_pot = "/Game/PrimalEarth/Structures/CookingPot.CookingPot_C"
|
|
97
97
|
grill = "/Game/PrimalEarth/Structures/Grill.Grill_C"
|
|
98
98
|
chembench = "/Game/PrimalEarth/Structures/StorageBox_ChemBench.StorageBox_ChemBench_C"
|
|
99
|
+
blood_forge = "/Game/LostColony/Structures/Bloodforge/Inventory/InventoryComponent_Bloodforge.InventoryComponent_Bloodforge_C"
|
|
99
100
|
|
|
100
|
-
all_bps = [forge, mortar_and_pestle, compost_bin, campfire, cooking_pot, grill, chembench]
|
|
101
|
+
all_bps = [forge, mortar_and_pestle, compost_bin, campfire, cooking_pot, grill, chembench, blood_forge]
|
|
101
102
|
|
|
102
103
|
class Utility:
|
|
103
104
|
simple_bed = "/Game/PrimalEarth/Structures/SimpleBed.SimpleBed_C"
|
|
@@ -112,9 +113,11 @@ class Utility:
|
|
|
112
113
|
toilet = "/Game/PrimalEarth/Structures/Furniture/StructureBP_Toilet.StructureBP_Toilet_C"
|
|
113
114
|
cryofridge = "/Game/Extinction/Structures/Cryofridge/CryoFridge.CryoFridge_C"
|
|
114
115
|
deathitemcache = "/Game/PrimalEarth/Structures/DeathItemCache.DeathItemCache_C"
|
|
116
|
+
cryo_hospital = "/Game/LostColony/Structures/CryoHospital/Inventory/InventoryComponent_CryoHospital.InventoryComponent_CryoHospital_C"
|
|
117
|
+
medical_stand = "/Game/LostColony/Structures/MedicalStand/Inventories/InventoryComponent_MedicalStand.InventoryComponent_MedicalStand_C"
|
|
115
118
|
|
|
116
119
|
all_bps = [simple_bed, sleeping_bag, anvil_bench, small_storage_box, large_bear_trap, large_storage_box,
|
|
117
|
-
bunk_bed, vault, sleeping_pod, toilet, cryofridge, deathitemcache]
|
|
120
|
+
bunk_bed, vault, sleeping_pod, toilet, cryofridge, deathitemcache, cryo_hospital, medical_stand]
|
|
118
121
|
|
|
119
122
|
class TributeTerminals:
|
|
120
123
|
tribute_terminal_purple = "/Game/PrimalEarth/Structures/TributeTerminal_Purple.TributeTerminal_Purple_C"
|
|
@@ -15,10 +15,18 @@ class ArkMap(Enum):
|
|
|
15
15
|
SVARTALFHEIM = 11
|
|
16
16
|
CLUB_ARK = 12
|
|
17
17
|
LOST_COLONY = 13
|
|
18
|
+
GENESIS1 = 14
|
|
18
19
|
|
|
19
20
|
def to_file_name(self) -> str:
|
|
20
21
|
"""
|
|
21
22
|
Converts the enum value to a file name.
|
|
22
23
|
:return: The file name of the map.
|
|
23
24
|
"""
|
|
24
|
-
return self.name.replace('_', ' ').title().replace(' ', '')
|
|
25
|
+
return self.name.replace('_', ' ').title().replace(' ', '')
|
|
26
|
+
|
|
27
|
+
class SubMap(Enum):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
class GenesisSubMap(Enum):
|
|
31
|
+
BIOMES = "OtherBiomes"
|
|
32
|
+
OCEAN = "Ocean"
|
|
@@ -267,7 +267,7 @@ class Dino(ParsedObjectBase):
|
|
|
267
267
|
|
|
268
268
|
# Grab gene traits if they exists
|
|
269
269
|
if self.gene_traits is not None:
|
|
270
|
-
json_obj["GeneTraits"] = self.gene_traits
|
|
270
|
+
json_obj["GeneTraits"] = [str(t) for t in self.gene_traits]
|
|
271
271
|
|
|
272
272
|
# Grab colors if they exists
|
|
273
273
|
color_set_indices = self.get_color_set_indices()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import struct
|
|
2
2
|
from typing import List
|
|
3
|
-
from uuid import UUID
|
|
3
|
+
from uuid import UUID, SafeUUID
|
|
4
4
|
|
|
5
5
|
from ._binary_reader_base import BinaryReaderBase
|
|
6
6
|
from arkparse.logging import ArkSaveLogger
|
|
@@ -24,6 +24,7 @@ def _fast_uuid_from_bytes(b: bytes) -> UUID:
|
|
|
24
24
|
# This is ~3-4x faster than UUID(bytes=b)
|
|
25
25
|
u = object.__new__(UUID)
|
|
26
26
|
object.__setattr__(u, 'int', int.from_bytes(b, 'big'))
|
|
27
|
+
object.__setattr__(u, 'is_safe', SafeUUID.unknown)
|
|
27
28
|
return u
|
|
28
29
|
|
|
29
30
|
class BaseValueParser(BinaryReaderBase):
|
|
@@ -11,6 +11,7 @@ from arkparse.parsing.struct.ark_linear_color import ArkLinearColor
|
|
|
11
11
|
from arkparse.parsing.struct.ark_quat import ArkQuat
|
|
12
12
|
from arkparse.parsing.struct.ark_rotator import ArkRotator
|
|
13
13
|
from arkparse.parsing.struct.ark_vector import ArkVector
|
|
14
|
+
from arkparse.parsing.struct.ark_vector2d import ArkVector2D
|
|
14
15
|
from arkparse.parsing.struct.ark_unique_net_id_repl import ArkUniqueNetIdRepl
|
|
15
16
|
from arkparse.parsing.struct.ark_vector_bool_pair import ArkVectorBoolPair
|
|
16
17
|
from arkparse.parsing.struct.ark_server_custom_folder import ArkServerCustomFolder
|
|
@@ -83,6 +84,7 @@ _STRUCT_READERS: Dict[ArkStructType, Callable[["ArkBinaryParser", int], Any]] =
|
|
|
83
84
|
ArkStructType.Quat: lambda bb, ds: ArkQuat(bb),
|
|
84
85
|
ArkStructType.Rotator: lambda bb, ds: ArkRotator(bb),
|
|
85
86
|
ArkStructType.Vector: lambda bb, ds: ArkVector(bb),
|
|
87
|
+
ArkStructType.Vector2D: lambda bb, ds: ArkVector2D(bb, ds),
|
|
86
88
|
ArkStructType.UniqueNetIdRepl: lambda bb, ds: ArkUniqueNetIdRepl(bb),
|
|
87
89
|
ArkStructType.VectorBoolPair: lambda bb, ds: ArkVectorBoolPair(bb),
|
|
88
90
|
ArkStructType.ArkTrackedActorIdCategoryPairWithBool: lambda bb, ds: ArkTrackedActorIdCategoryPairWithBool(bb),
|
|
@@ -11,6 +11,7 @@ from .ark_tracked_actor_id_category_pair import ArkTrackedActorIdCategoryPair
|
|
|
11
11
|
from .ark_unique_net_id_repl import ArkUniqueNetIdRepl
|
|
12
12
|
from .ark_vector_bool_pair import ArkVectorBoolPair
|
|
13
13
|
from .ark_vector import ArkVector
|
|
14
|
+
from .ark_vector2d import ArkVector2D
|
|
14
15
|
from .object_reference import ObjectReference, get_uuid_reference_bytes
|
|
15
16
|
from .unknown_struct import UnknownStruct
|
|
16
17
|
from .ark_custom_item_data import ArkCustomItemData
|