From 161a8815116a30a9a4ee73d04e1373789cadbac6 Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 20 Dec 2019 19:32:43 +0100 Subject: [PATCH] Ported and updated entity scripts, also added my crappy test character, and a tileset from a test project while ago. --- game/autoload/EntityDataManager.gd | 18 +- game/autoload/Server.gd | 6 +- game/characters/Character.tscn | 61 + game/characters/CharacterFrontModel.tscn | 2386 +++++++++++++++++ game/characters/CharacterSideModel.tscn | 2145 +++++++++++++++ game/characters/CharacterTest1Scene.tscn | 109 + .../char_t1_outline_split - Copy.png | Bin 0 -> 1228 bytes .../char_t1_outline_split - Copy.png.import | 34 + game/characters/char_t1_outline_split.png | Bin 0 -> 2103 bytes .../char_t1_outline_split.png.import | 34 + game/data/entity_classes/1_naturalist.tres | 2 +- game/data/entity_classes/2_elementalist.tres | 2 +- game/player/CharacterSkeleton2D.gd | 121 + game/player/HumanoidCharacterBones2D.gd | 53 + game/player/Mob.gd | 163 +- game/player/Mob.tscn | 29 +- game/player/NamePlate.gd | 48 +- game/player/NetworkedPlayer.tscn | 24 +- game/player/Player.gd | 261 +- game/player/Player.tscn | 26 +- game/player/PlayerGDBase.gd | 8 +- game/project.godot | 36 + game/scenes/World.gd | 51 +- game/scenes/World.tscn | 83 +- game/scripts/item_visuals/CharacterAtlas2D.gd | 7 + .../item_visuals/CharacterAtlasEntry2D.gd | 19 + game/scripts/item_visuals/ItemVisual2D.gd | 4 + .../scripts/item_visuals/ItemVisualEntry2D.gd | 8 + game/test_iso_size/SizeTestTileSetScene.tscn | 94 + .../char_t1_outline_split.aseprite | Bin 0 -> 1194 bytes game/test_iso_size/lighttext.aseprite | Bin 0 -> 564 bytes game/test_iso_size/lighttext.png | Bin 0 -> 133 bytes game/test_iso_size/lighttext.png.import | 34 + game/test_iso_size/test.aseprite | Bin 0 -> 1331 bytes game/test_iso_size/test_char_02.aseprite | Bin 0 -> 868 bytes game/test_iso_size/test_size_tileset.tres | 115 + game/test_iso_size/tiles.png | Bin 0 -> 8346 bytes game/test_iso_size/tiles.png.import | 34 + game/test_iso_size/tiles.xcf | Bin 0 -> 7108 bytes 39 files changed, 5590 insertions(+), 425 deletions(-) create mode 100644 game/characters/Character.tscn create mode 100644 game/characters/CharacterFrontModel.tscn create mode 100644 game/characters/CharacterSideModel.tscn create mode 100644 game/characters/CharacterTest1Scene.tscn create mode 100644 game/characters/char_t1_outline_split - Copy.png create mode 100644 game/characters/char_t1_outline_split - Copy.png.import create mode 100644 game/characters/char_t1_outline_split.png create mode 100644 game/characters/char_t1_outline_split.png.import create mode 100644 game/player/CharacterSkeleton2D.gd create mode 100644 game/player/HumanoidCharacterBones2D.gd create mode 100644 game/scripts/item_visuals/CharacterAtlas2D.gd create mode 100644 game/scripts/item_visuals/CharacterAtlasEntry2D.gd create mode 100644 game/scripts/item_visuals/ItemVisual2D.gd create mode 100644 game/scripts/item_visuals/ItemVisualEntry2D.gd create mode 100644 game/test_iso_size/SizeTestTileSetScene.tscn create mode 100644 game/test_iso_size/char_t1_outline_split.aseprite create mode 100644 game/test_iso_size/lighttext.aseprite create mode 100644 game/test_iso_size/lighttext.png create mode 100644 game/test_iso_size/lighttext.png.import create mode 100644 game/test_iso_size/test.aseprite create mode 100644 game/test_iso_size/test_char_02.aseprite create mode 100644 game/test_iso_size/test_size_tileset.tres create mode 100644 game/test_iso_size/tiles.png create mode 100644 game/test_iso_size/tiles.png.import create mode 100644 game/test_iso_size/tiles.xcf diff --git a/game/autoload/EntityDataManager.gd b/game/autoload/EntityDataManager.gd index 1004472..9cef645 100644 --- a/game/autoload/EntityDataManager.gd +++ b/game/autoload/EntityDataManager.gd @@ -55,7 +55,7 @@ func despawn_for(player : Entity, target: Entity) -> void: # print("despawnfor " + target.name) rpc_id(player.get_network_master(), "creceive_despawn_for", target.get_path()) -remote func creceive_spawn_for(data: String, global_name : String, position: Vector3) -> void: +remote func creceive_spawn_for(data: String, global_name : String, position: Vector2) -> void: # print("recspawnfor " + global_name) var entity : Entity = networked_player_scene.instance() @@ -79,7 +79,7 @@ remote func creceive_despawn_for(path : NodePath) -> void: if ent: ent.queue_free() -func spawn_networked_player_from_data(data : String, position : Vector3, network_owner : int) -> Entity: +func spawn_networked_player_from_data(data : String, position : Vector2, network_owner : int) -> Entity: var entity : Entity = networked_player_scene.instance() _next_entity_guid += 1 @@ -102,7 +102,7 @@ func spawn_networked_player_from_data(data : String, position : Vector3, network return entity -puppet func spawn_owned_player(data : String, position : Vector3) -> void: +puppet func spawn_owned_player(data : String, position : Vector2) -> void: var entity : Entity = player_scene.instance() var spawn_parent = _spawn_parent.current_scene @@ -118,7 +118,7 @@ puppet func spawn_owned_player(data : String, position : Vector3) -> void: Logger.info("Player spawned ") -func load_player(file_name : String, position : Vector3, network_owner : int) -> Entity: +func load_player(file_name : String, position : Vector2, network_owner : int) -> Entity: # var createinfo : EntityCreateInfo = EntityCreateInfo.new() # # var cls : EntityData = Entities.get_player_character_data(class_id) @@ -142,7 +142,7 @@ func load_player(file_name : String, position : Vector3, network_owner : int) -> entity.from_dict(load_file(file_name)) - entity.translation = position + entity.position = position # entity.initialize(createinfo) entity.set_network_master(network_owner) @@ -187,7 +187,7 @@ func spawn_player_for_menu(class_id : int, name : String, parent : Node) -> Enti return entity -func spawn_networked_player(class_id : int, position : Vector3, name : String, node_name : String, sid : int) -> Entity: +func spawn_networked_player(class_id : int, position : Vector2, name : String, node_name : String, sid : int) -> Entity: var createinfo : EntityCreateInfo = EntityCreateInfo.new() var cls : EntityData = Entities.get_entity_data(class_id) @@ -218,7 +218,7 @@ func spawn_networked_player(class_id : int, position : Vector3, name : String, return entity -func spawn_player(class_id : int, position : Vector3, name : String, node_name : String, network_owner : int) -> Entity: +func spawn_player(class_id : int, position : Vector2, name : String, node_name : String, network_owner : int) -> Entity: var createinfo : EntityCreateInfo = EntityCreateInfo.new() var cls : EntityData = Entities.get_player_character_data(class_id) @@ -248,7 +248,7 @@ func spawn_player(class_id : int, position : Vector3, name : String, node_name return entity -func spawn_mob(class_id : int, level : int, position : Vector3) -> Entity: +func spawn_mob(class_id : int, level : int, position : Vector2) -> Entity: var createinfo : EntityCreateInfo = EntityCreateInfo.new() var cls : EntityData = Entities.get_entity_data(class_id) @@ -275,7 +275,7 @@ func spawn_mob(class_id : int, level : int, position : Vector3) -> Entity: return entity -func spawn(createinfo : EntityCreateInfo, networked : bool, position : Vector3, node_name : String = "") -> Entity: +func spawn(createinfo : EntityCreateInfo, networked : bool, position : Vector2, node_name : String = "") -> Entity: var entity_node : Entity = null if not networked: diff --git a/game/autoload/Server.gd b/game/autoload/Server.gd index bb7122f..6f7c6ef 100644 --- a/game/autoload/Server.gd +++ b/game/autoload/Server.gd @@ -162,10 +162,10 @@ remote func crequest_select_class(info : Dictionary) -> void: if sid == 0: sid = 1 - rpc("cspawn_player", info, sid, Vector3(10, 10, 10)) + rpc("cspawn_player", info, sid, Vector2(10, 10)) -remotesync func cspawn_player(info : Dictionary, sid : int, pos : Vector3): +remotesync func cspawn_player(info : Dictionary, sid : int, pos : Vector2): Logger.verbose("NetworkManager cspawn_player") if sid == get_tree().get_network_unique_id(): @@ -193,7 +193,7 @@ func upload_character(data : String) -> void: rpc_id(1, "sreceive_upload_character", data) master func sreceive_upload_character(data: String) -> void: - Entities.spawn_networked_player_from_data(data, Vector3(0, 10, 0), multiplayer.get_rpc_sender_id()) + Entities.spawn_networked_player_from_data(data, Vector2(0, 0), multiplayer.get_rpc_sender_id()) func set_terrarin_player(): Logger.verbose("NetworkManager cspawn_player") diff --git a/game/characters/Character.tscn b/game/characters/Character.tscn new file mode 100644 index 0000000..a105507 --- /dev/null +++ b/game/characters/Character.tscn @@ -0,0 +1,61 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://player/CharacterSkeleton2D.gd" type="Script" id=1] +[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2] +[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=3] +[ext_resource path="res://scripts/item_visuals/CharacterAtlas2D.gd" type="Script" id=4] +[ext_resource path="res://scripts/item_visuals/CharacterAtlasEntry2D.gd" type="Script" id=5] +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=6] + +[sub_resource type="CharacterAtlasEntry" id=3] +script = ExtResource( 5 ) +front_rect = Rect2( 101, 15, 9, 12 ) +back_rect = Rect2( 74, 18, 9, 12 ) +right_rect = Rect2( 8, 13, 9, 12 ) +left_rect = Rect2( 8, 13, 9, 12 ) + +[sub_resource type="CharacterAtlasEntry" id=2] +script = ExtResource( 5 ) +front_rect = Rect2( 102, 2, 7, 8 ) +back_rect = Rect2( 75, 5, 7, 8 ) +right_rect = Rect2( 9, 0, 7, 8 ) +left_rect = Rect2( 9, 0, 7, 8 ) + +[sub_resource type="CharacterAtlas" id=1] +script = ExtResource( 4 ) +comments = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +texture = ExtResource( 6 ) +slots = [ null, SubResource( 3 ), null, null, null, null, null, null, null, null, null, null, null, null, SubResource( 2 ), null ] + +[node name="Character" type="CharacterSkeleton"] +script = ExtResource( 1 ) +front_node_path = NodePath("CharacterFrontModel") +front_animation_player_path = NodePath("../Character/CharacterFrontModel/AnimationPlayer") +front_animation_tree_path = NodePath("../Character/CharacterFrontModel/AnimationTree") +side_node_path = NodePath("CharacterSideModel") +side_animation_player_path = NodePath("../Character/CharacterSideModel/AnimationPlayer") +side_animation_tree_path = NodePath("../Character/CharacterSideModel/AnimationTree") +character_atlas = SubResource( 1 ) + +[node name="CharacterFrontModel" parent="." instance=ExtResource( 3 )] +visible = false + +[node name="CharacterSideModel" parent="." instance=ExtResource( 2 )] diff --git a/game/characters/CharacterFrontModel.tscn b/game/characters/CharacterFrontModel.tscn new file mode 100644 index 0000000..d72fbe9 --- /dev/null +++ b/game/characters/CharacterFrontModel.tscn @@ -0,0 +1,2386 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=1] +[ext_resource path="res://player/HumanoidCharacterBones2D.gd" type="Script" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "casting" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -2.18314, -2.18314, -2.18314 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 1.91221, 1.50001 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -7.17636, -7.17636, -7.17636 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2.00551, 7.77134 ), Vector2( -2.00551, 7.77134 ), Vector2( -2.00551, 7.77134 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1.29 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 6.92582, 6.92582, 6.92582, 6.92582 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 102.313, 97.3286, 102.313, 102.313 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.372368, -5.92958, -8.40393, -0.372368 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -109.724, -91.7756, -109.724, -109.724 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 4.9682, 25.8311, 4.9682, 4.9682 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ), Vector2( 0, -1.5 ), Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( -0.0923008, -1.07587 ), Vector2( 0, -2 ), Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, -6.16061, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/arm_l/hand_l:z_index") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "idle" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -2.18855, -2.18855, -2.18855 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.712624, 0.712624, 0.712624 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 0.999999 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.908402, -0.908402, -0.908402 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -8.44461e-05, -8.44461e-05, -8.44461e-05 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( 0, -2.4 ), Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/arm_l/hand_l:show_behind_parent") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/arm_l:show_behind_parent") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/40/type = "value" +tracks/40/path = NodePath("Hip/Torso/remote_arm_r:show_behind_parent") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/41/type = "value" +tracks/41/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:show_behind_parent") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/42/type = "value" +tracks/42/path = NodePath("Hip/Torso/leg_r/foot_r:show_behind_parent") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/43/type = "value" +tracks/43/path = NodePath("Hip/Torso/leg_r:show_behind_parent") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/44/type = "value" +tracks/44/path = NodePath("Hip/Torso/leg_l:show_behind_parent") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/45/type = "value" +tracks/45/path = NodePath("Hip/Torso/leg_l/foot_l:show_behind_parent") +tracks/45/interp = 1 +tracks/45/loop_wrap = true +tracks/45/imported = false +tracks/45/enabled = true +tracks/45/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -2.18855 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.712624 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.724068 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.724068 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.724068 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -0.908402, -0.908402 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4.98958, -7.86818 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -5.01738, -8.74725 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -8.44461e-05 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.913425, -1.12376 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/leg_l/foot_l:show_behind_parent") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/leg_r:show_behind_parent") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/40/type = "value" +tracks/40/path = NodePath("Hip/Torso/leg_l:show_behind_parent") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/41/type = "value" +tracks/41/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:show_behind_parent") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/42/type = "value" +tracks/42/path = NodePath("Hip/Torso/remote_arm_r:show_behind_parent") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/43/type = "value" +tracks/43/path = NodePath("Hip/Torso/arm_l:show_behind_parent") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/44/type = "value" +tracks/44/path = NodePath("Hip/Torso/arm_l/hand_l:show_behind_parent") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=4] +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Torso/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Torso/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 0.99, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 0.99, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 17.207, 14.9584, 16.2471, 19.1313, 28.7634, 17.207 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Torso/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.711522, -9.98104, 3.52254, -7.10074, -0.711522 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -15.3779, -10.5059, -12.523, -5.35185, -15.3779 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Torso/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -8.16674, 5.82986, -0.553362, 5.75932, -8.16674 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.0452981, 5.9654 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0.0452981, 5.9654 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -4.71947, 1.71413, 7.25388, 1.71413, -4.71947 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ), Vector2( 4.98958, -7.86818 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 12.7564, -1.05097, 3.19122, -1.05097, 12.7564 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -15.989, -5.44135, -5.80149, -3.75818, -15.989 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ), Vector2( -5.01738, -8.74725 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -6.35693, 1.96771, -5.23182, 1.0922, -6.35693 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ), Vector2( -0.913425, -1.12376 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2.2 ), Vector2( 0, -1.9 ), Vector2( 0.125, -2.2 ), Vector2( 0, -1.9 ), Vector2( 0, -2.2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("Hip/Torso/arm_l/hand_l:show_behind_parent") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/arm_l:show_behind_parent") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} +tracks/40/type = "value" +tracks/40/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:show_behind_parent") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/imported = false +tracks/40/enabled = true +tracks/40/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ false, true, false, false, true ] +} +tracks/41/type = "value" +tracks/41/path = NodePath("Hip/Torso/remote_arm_r:show_behind_parent") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/imported = false +tracks/41/enabled = true +tracks/41/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ false, true, false, false, true ] +} +tracks/42/type = "value" +tracks/42/path = NodePath("Hip/Torso/leg_l/foot_l:show_behind_parent") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/imported = false +tracks/42/enabled = true +tracks/42/keys = { +"times": PoolRealArray( 0, 0.25, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/43/type = "value" +tracks/43/path = NodePath("Hip/Torso/leg_l:show_behind_parent") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/imported = false +tracks/43/enabled = true +tracks/43/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ false, true, false, false ] +} +tracks/44/type = "value" +tracks/44/path = NodePath("Hip/Torso/leg_r:show_behind_parent") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/imported = false +tracks/44/enabled = true +tracks/44/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} +tracks/45/type = "value" +tracks/45/path = NodePath("Hip/Torso/leg_r/foot_r:show_behind_parent") +tracks/45/interp = 1 +tracks/45/loop_wrap = true +tracks/45/imported = false +tracks/45/enabled = true +tracks/45/keys = { +"times": PoolRealArray( 0, 0.25, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, true ] +} + +[sub_resource type="AnimationNodeTimeScale" id=5] + +[sub_resource type="AnimationNodeAnimation" id=6] +animation = "idle" + +[sub_resource type="AnimationNodeAnimation" id=7] +animation = "run" + +[sub_resource type="AnimationNodeBlend2" id=8] + +[sub_resource type="AnimationNodeBlendTree" id=9] +graph_offset = Vector2( -322, -28 ) +nodes/RunScale/node = SubResource( 5 ) +nodes/RunScale/position = Vector2( -60, 500 ) +nodes/idle/node = SubResource( 6 ) +nodes/idle/position = Vector2( -240, 340 ) +nodes/output/position = Vector2( 440, 280 ) +nodes/run/node = SubResource( 7 ) +nodes/run/position = Vector2( -280, 500 ) +nodes/walking/node = SubResource( 8 ) +nodes/walking/position = Vector2( 140, 320 ) +node_connections = [ "output", 0, "walking", "walking", 0, "idle", "walking", 1, "RunScale", "RunScale", 0, "run" ] + +[node name="CharacterFrontModel" type="CharacterBones"] +rotation = 0.000121465 +script = ExtResource( 2 ) +help = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +bones = [ NodePath("Hip"), NodePath("Hip/Torso"), NodePath("Hip/Torso/leg_r"), NodePath("Hip/Torso/leg_r/foot_r"), NodePath("Hip/Torso/leg_r/foot_r/Position2D"), NodePath("Hip/Torso/leg_l"), NodePath("Hip/Torso/leg_l/foot_l"), NodePath("Hip/Torso/leg_l/foot_l/Position2D"), NodePath("Hip/Torso/remote_arm_r"), NodePath("Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Hip/Torso/arm_l"), NodePath("Hip/Torso/arm_l/hand_l"), NodePath("Hip/Torso/arm_l/hand_l/end"), NodePath("Hip/Torso/Head"), NodePath("Hip/Torso/Head/Position2D") ] + +[node name="Hip" type="Sprite" parent="."] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 102, 32, 7, 2 ) + +[node name="Shadow" type="Sprite" parent="Hip"] +position = Vector2( -0.5, 14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 27, 57, 14, 6 ) + +[node name="Torso" type="Sprite" parent="Hip"] +position = Vector2( 0, -2.19333 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -5 ) +region_enabled = true +region_rect = Rect2( 101, 15, 9, 12 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="leg_r" type="Sprite" parent="Hip/Torso"] +position = Vector2( -2, 1 ) +rotation = -0.0158546 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 97, 39, 5, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_r" type="Sprite" parent="Hip/Torso/leg_r"] +position = Vector2( -1, 5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 96, 51, 6, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/leg_r/foot_r"] +position = Vector2( 0, 7.771 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="leg_l" type="Sprite" parent="Hip/Torso"] +position = Vector2( 2, 1.5 ) +rotation = 0.0124376 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 109, 39, 5, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_l" type="Sprite" parent="Hip/Torso/leg_l"] +position = Vector2( 0, 4.5 ) +rotation = -0.0381974 +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 109, 51, 6, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/leg_l/foot_l"] +position = Vector2( -0.297693, 7.79954 ) +rotation = -0.0026232 +__meta__ = { +"_edit_bone_": true +} + +[node name="remote_arm_r" type="Sprite" parent="Hip/Torso"] +position = Vector2( -5.01738, -8.74725 ) +rotation = -1.47386e-06 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 93, 16, 3, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="shoulder_guard_r" type="Sprite" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 1, -0.2 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, -1 ) +region_enabled = true +region_rect = Rect2( 90, 8, 6, 4 ) + +[node name="remote_hand_r" type="Sprite" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 0, 5.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 93, 28, 3, 6 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/remote_arm_r/remote_hand_r"] +position = Vector2( 0, 5 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="arm_l" type="Sprite" parent="Hip/Torso"] +position = Vector2( 4.98958, -7.86818 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2.5 ) +region_enabled = true +region_rect = Rect2( 117, 16, 3, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="hand_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( 0, 6 ) +scale = Vector2( 0.995, 1.0113 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 117, 28, 3, 6 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="end" type="Position2D" parent="Hip/Torso/arm_l/hand_l"] +position = Vector2( -0.5, 4 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="CPUParticles2D" type="CPUParticles2D" parent="Hip/Torso/arm_l/hand_l/end"] +visible = false +position = Vector2( -0.53, 0.58 ) +rotation = 0.204192 +preprocess = 0.8 +randomness = 0.07 +local_coords = false +spread = 112.94 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +initial_velocity_random = 0.54 +angular_velocity = 310.59 +angular_velocity_random = 0.84 +linear_accel = 11.77 +radial_accel = 37.26 +tangential_accel = -13.72 +tangential_accel_random = 0.79 +damping = 77.44 +damping_random = 0.09 +angle_random = 0.86 +scale_amount = 2.0 +color = Color( 0.133333, 0.403922, 0.027451, 0.839216 ) +hue_variation = 0.22 +hue_variation_random = 0.88 + +[node name="shoulder_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( -0.913425, -1.12376 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -0.5 ) +region_enabled = true +region_rect = Rect2( 115, 7, 6, 4 ) + +[node name="Head" type="Sprite" parent="Hip/Torso"] +position = Vector2( 0, -10 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 102, 2, 7, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/Head"] +position = Vector2( -0.0730991, -6.94428 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/casting = SubResource( 1 ) +anims/idle = SubResource( 2 ) +anims/rest = SubResource( 3 ) +anims/run = SubResource( 4 ) +blend_times = [ "casting", "run", 1.0, "run", "idle", 1.0, "run", "rest", 1.0 ] + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 9 ) +anim_player = NodePath("../AnimationPlayer") +active = true +parameters/RunScale/scale = 1.0 +parameters/walking/blend_amount = 0.0 diff --git a/game/characters/CharacterSideModel.tscn b/game/characters/CharacterSideModel.tscn new file mode 100644 index 0000000..36b2204 --- /dev/null +++ b/game/characters/CharacterSideModel.tscn @@ -0,0 +1,2145 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=1] +[ext_resource path="res://player/HumanoidCharacterBones2D.gd" type="Script" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "casting" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -2.18314, -2.18314, -2.18314 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 1.91221, 1.50001 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -7.17636, -7.17636, -7.17636 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1.29 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 6.92582, 6.92582, 6.92582, 6.92582 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 102.313, 97.3286, 102.313, 102.313 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.372368, -5.92958, -8.40393, -0.372368 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -109.724, -91.7756, -109.724, -109.724 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 4.9682, 25.8311, 4.9682, 4.9682 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ), Vector2( 0, -1.5 ), Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( -0.0923008, -1.07587 ), Vector2( 0, -2 ), Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 0.5, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, -6.16061, 0.0, 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("hand_r:z_index") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} +tracks/39/type = "value" +tracks/39/path = NodePath("Hip/Torso/arm_l/hand_l:z_index") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/imported = false +tracks/39/enabled = true +tracks/39/keys = { +"times": PoolRealArray( 0, 1.5, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "idle" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -0.150298, -0.150298, -0.150298 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.433445, 0.433445, 0.433445 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ), Vector2( -0.297693, 7.79954 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/leg_l/foot_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/leg_l:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ), Vector2( -0.0730991, -6.94428 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/Head:position") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/leg_r/foot_r:position") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/leg_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ), Vector2( -0.5, 4 ), Vector2( -0.5, 4 ) ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l:position") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ), Vector2( 0, 5 ), Vector2( 0, 5 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ), Vector2( 0, -1.5 ), Vector2( 0, -1.5 ) ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Shadow:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ), Vector2( -0.5, 14 ), Vector2( -0.5, 14 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ), Vector2( 1, -0.2 ), Vector2( 1, -0.2 ) ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip/Torso:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ), Vector2( 6.95694e-05, -1.42717 ), Vector2( 0, -2 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:position") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ), Vector2( 0, -14 ), Vector2( 0, -14 ) ] +} +tracks/38/type = "value" +tracks/38/path = NodePath("hand_r:z_index") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/imported = false +tracks/38/enabled = true +tracks/38/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 0, 0 ] +} + +[sub_resource type="Animation" id=3] +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.433445 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -2 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=4] +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/leg_l/foot_l/Position2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.297693, 7.79954 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/leg_l/foot_l/Position2D:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.150298 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/leg_l/foot_l:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 4.5 ), Vector2( 0, 4.5 ), Vector2( 0, 4.5 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/leg_l/foot_l:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -29.4825, -32.9352, -29.4825 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/leg_l:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 2, 1.5 ), Vector2( 2, 1.5 ), Vector2( 2, 1.5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/leg_l:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -12.7732, 52.6284, -12.7732 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/Torso/Head/Position2D:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.0730991, -6.94428 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/Torso/Head/Position2D:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Torso/Head:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Torso/Head:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/leg_r/foot_r/Position2D:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 7.771 ), Vector2( 0, 7.771 ), Vector2( 0, 7.771 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip/leg_r/foot_r/Position2D:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/leg_r/foot_r:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -1, 5 ), Vector2( -1, 5 ), Vector2( -1, 5 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/leg_r/foot_r:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -23.281, -39.6179, -12.9568 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/leg_r:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -2, 1 ), Vector2( -2, 1 ), Vector2( -2, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/leg_r:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 42.8046, -23.6482, 32.9892 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/Torso/arm_l/hand_l/end:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/Torso/arm_l/hand_l/end:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/Torso/arm_l/hand_l:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 6 ), Vector2( 0, 6 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/Torso/arm_l/hand_l:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 43.0307, 9.14528, 43.0307 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Torso/arm_l:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ), Vector2( 4, -8 ), Vector2( 4, -8 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Torso/arm_l:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 13.9033, -32.423, 13.9033 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 5 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 5.5 ), Vector2( 0, 5.5 ), Vector2( 0, 5.5 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Torso/remote_arm_r/remote_hand_r:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -15.7785, 0.207499, -15.7785 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Torso/remote_arm_r:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ), Vector2( -3.50004, -8.61549 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Torso/remote_arm_r:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -21.3108, 37.0042, -21.3108 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/Torso/arm_l/shoulder_l:position") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -1.5 ) ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/Torso/arm_l/shoulder_l:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/Shadow:position") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -0.5, 14 ) ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/Shadow:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:position") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, -0.2 ) ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Torso/remote_arm_r/shoulder_guard_r:rotation_degrees") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Torso:position") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -0.146089, -1.13476 ), Vector2( -0.0730226, -1.35406 ), Vector2( 6.95694e-05, -1.42717 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Torso:rotation_degrees") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/36/type = "value" +tracks/36/path = NodePath("Hip:position") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/imported = false +tracks/36/enabled = true +tracks/36/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -14 ) ] +} +tracks/37/type = "value" +tracks/37/path = NodePath("Hip:rotation_degrees") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/imported = false +tracks/37/enabled = true +tracks/37/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="AnimationNodeTimeScale" id=5] + +[sub_resource type="AnimationNodeAnimation" id=6] +animation = "idle" + +[sub_resource type="AnimationNodeAnimation" id=7] +animation = "run" + +[sub_resource type="AnimationNodeBlend2" id=8] + +[sub_resource type="AnimationNodeBlendTree" id=9] +graph_offset = Vector2( -453, 345 ) +nodes/RunScale/node = SubResource( 5 ) +nodes/RunScale/position = Vector2( -60, 500 ) +nodes/idle/node = SubResource( 6 ) +nodes/idle/position = Vector2( -240, 340 ) +nodes/output/position = Vector2( 440, 280 ) +nodes/run/node = SubResource( 7 ) +nodes/run/position = Vector2( -280, 500 ) +nodes/walking/node = SubResource( 8 ) +nodes/walking/position = Vector2( 140, 320 ) +node_connections = [ "walking", 0, "idle", "walking", 1, "RunScale", "RunScale", 0, "run", "output", 0, "walking" ] + +[node name="CharacterSideModel" type="CharacterBones"] +rotation = 0.000121465 +script = ExtResource( 2 ) +help = "HUMANOID_BONE_HIP = 0, +HUMANOID_BONE_TORSO = 1, +HUMANOID_BONE_LEG_R = 2, +HUMANOID_BONE_FOOT_R = 3, +HUMANOID_BONE_TOE_R = 4, +HUMANOID_BONE_LEG_L = 5, +HUMANOID_BONE_FOOT_L = 6, +HUMANOID_BONE_TOE_L = 7, +HUMANOID_BONE_ARM_R = 8, +#HUMANOID_BONE_SHOULDER_GUARD_R = 0, +HUMANOID_BONE_HAND_R = 9, +HUMANOID_BONE_FINGERS_R = 10, +HUMANOID_BONE_ARM_L = 11, +#HUMANOID_BONE_SHOULDER_GUARD_L = 0, +HUMANOID_BONE_HAND_L = 12, +HUMANOID_BONE_FINGERS_L = 13, +HUMANOID_BONE_HEAD = 14, +HUMANOID_BONE_HEAD_TOP = 15, +HUMANOID_BONES_MAX = 16," +bones = [ NodePath("Hip"), NodePath("Hip/Torso"), NodePath("Hip/leg_r"), NodePath("Hip/leg_r/foot_r"), NodePath("Hip/leg_r/foot_r/Position2D"), NodePath("Hip/leg_l"), NodePath("Hip/leg_l/foot_l"), NodePath("Hip/leg_l/foot_l/Position2D"), NodePath("arm_r"), NodePath("hand_r"), NodePath("Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Hip/Torso/arm_l"), NodePath("Hip/Torso/arm_l/hand_l"), NodePath("Hip/Torso/arm_l/hand_l/end"), NodePath("Hip/Torso/Head"), NodePath("Hip/Torso/Head/Position2D") ] + +[node name="model" type="Sprite" parent="."] +visible = false +texture = ExtResource( 1 ) +offset = Vector2( 0, -15.5 ) +region_enabled = true +region_rect = Rect2( 49, 21, 13, 37 ) + +[node name="arm_r" type="Sprite" parent="."] +position = Vector2( -3.50003, -24.5128 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 11, 4, 9 ) + +[node name="hand_r" type="Sprite" parent="."] +position = Vector2( -3.50003, -19.0128 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 23, 4, 6 ) + +[node name="Hip" type="Sprite" parent="."] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 8, 32, 7, 2 ) + +[node name="Shadow" type="Sprite" parent="Hip"] +position = Vector2( -0.5, 14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 27, 57, 14, 6 ) + +[node name="leg_r" type="Sprite" parent="Hip"] +position = Vector2( -2, 1 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 5, 36, 5, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_r" type="Sprite" parent="Hip/leg_r"] +position = Vector2( -1, 5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 3, 48, 7, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/leg_r/foot_r"] +position = Vector2( 0, 7.771 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="leg_l" type="Sprite" parent="Hip"] +position = Vector2( 2, 1.5 ) +rotation = 0.00756504 +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 14, 36, 5, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="foot_l" type="Sprite" parent="Hip/leg_l"] +position = Vector2( 0, 4.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 14, 48, 5, 10 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/leg_l/foot_l"] +position = Vector2( -0.297693, 7.79954 ) +rotation = -0.0026232 +__meta__ = { +"_edit_bone_": true +} + +[node name="Torso" type="Sprite" parent="Hip"] +position = Vector2( 1.24679e-05, -1.89734 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -5 ) +region_enabled = true +region_rect = Rect2( 8, 13, 9, 12 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="remote_arm_r" type="RemoteTransform2D" parent="Hip/Torso"] +position = Vector2( -3.50004, -8.61549 ) +remote_path = NodePath("../../../arm_r") +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="shoulder_guard_r" type="Sprite" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 1, -0.2 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, -1 ) +region_enabled = true +region_rect = Rect2( 0.39, 5.79, 6.91, 4.67 ) + +[node name="remote_hand_r" type="RemoteTransform2D" parent="Hip/Torso/remote_arm_r"] +position = Vector2( 0, 5.5 ) +remote_path = NodePath("../../../../hand_r") +__meta__ = { +"_edit_bone_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/remote_arm_r/remote_hand_r"] +position = Vector2( 0, 5 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="Head" type="Sprite" parent="Hip/Torso"] +position = Vector2( 0, -10 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 9, 0, 7, 8 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="Position2D" type="Position2D" parent="Hip/Torso/Head"] +position = Vector2( -0.0730991, -6.94428 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="arm_l" type="Sprite" parent="Hip/Torso"] +position = Vector2( 4, -8 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2.5 ) +region_enabled = true +region_rect = Rect2( 20, 11, 3, 9 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="hand_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( 0, 6 ) +z_index = 1 +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 20, 24, 3, 6 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="end" type="Position2D" parent="Hip/Torso/arm_l/hand_l"] +position = Vector2( -0.5, 4 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="CPUParticles2D" type="CPUParticles2D" parent="Hip/Torso/arm_l/hand_l/end"] +visible = false +position = Vector2( -0.53, 0.58 ) +rotation = 0.204192 +preprocess = 0.8 +randomness = 0.07 +local_coords = false +spread = 112.94 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +initial_velocity_random = 0.54 +angular_velocity = 310.59 +angular_velocity_random = 0.84 +linear_accel = 11.77 +radial_accel = 37.26 +tangential_accel = -13.72 +tangential_accel_random = 0.79 +damping = 77.44 +damping_random = 0.09 +angle_random = 0.86 +scale_amount = 2.0 +color = Color( 0.133333, 0.403922, 0.027451, 0.839216 ) +hue_variation = 0.22 +hue_variation_random = 0.88 + +[node name="shoulder_l" type="Sprite" parent="Hip/Torso/arm_l"] +position = Vector2( 0, -1.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -0.5 ) +region_enabled = true +region_rect = Rect2( 17.23, 5.56, 6.41, 4.89 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/casting = SubResource( 1 ) +anims/idle = SubResource( 2 ) +anims/rest = SubResource( 3 ) +anims/run = SubResource( 4 ) +blend_times = [ "casting", "run", 1.0, "run", "idle", 1.0, "run", "rest", 1.0 ] + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 9 ) +anim_player = NodePath("../AnimationPlayer") +active = true +parameters/RunScale/scale = 1.0 +parameters/walking/blend_amount = 0.0 diff --git a/game/characters/CharacterTest1Scene.tscn b/game/characters/CharacterTest1Scene.tscn new file mode 100644 index 0000000..fe088e1 --- /dev/null +++ b/game/characters/CharacterTest1Scene.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://characters/char_t1_outline_split.png" type="Texture" id=1] + + +[node name="CharacterTest1" type="Node2D"] + +[node name="model" type="Sprite" parent="."] +visible = false +texture = ExtResource( 1 ) +offset = Vector2( 0, -15.5 ) +region_enabled = true +region_rect = Rect2( 49, 21, 13, 37 ) + +[node name="Shadow" type="Sprite" parent="."] +position = Vector2( -0.5, 0 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 27, 57, 14, 6 ) + +[node name="RightUpperHand" type="Sprite" parent="."] +position = Vector2( -3.5, -25.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 11, 4, 9 ) + +[node name="RightLowerHand" type="Sprite" parent="."] +position = Vector2( -3.47278, -19.9516 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 1, 23, 4, 8 ) + +[node name="Torso" type="Sprite" parent="."] +position = Vector2( 0, -16 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -5 ) +region_enabled = true +region_rect = Rect2( 8, 13, 9, 12 ) + +[node name="LeftShoulderGuard" type="Sprite" parent="."] +position = Vector2( -2.5, -25 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, -1 ) +region_enabled = true +region_rect = Rect2( 0.39, 5.79, 6.91, 4.67 ) + +[node name="Head" type="Sprite" parent="."] +position = Vector2( 0, -26 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -4 ) +region_enabled = true +region_rect = Rect2( 9, 0, 7, 8 ) + +[node name="LeftUpperArm" type="Sprite" parent="."] +position = Vector2( 4, -24 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2.5 ) +region_enabled = true +region_rect = Rect2( 20, 11, 3, 9 ) + +[node name="RightShoulderGuard" type="Sprite" parent="."] +position = Vector2( 4, -25.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, -0.5 ) +region_enabled = true +region_rect = Rect2( 17.23, 5.56, 6.41, 4.89 ) + +[node name="RightUpperLeg" type="Sprite" parent="."] +position = Vector2( -2, -13 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 5, 36, 5, 8 ) + +[node name="RightLowerLeg" type="Sprite" parent="."] +position = Vector2( -3, -8 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 3, 48, 7, 10 ) + +[node name="LeftUpperLeg" type="Sprite" parent="."] +position = Vector2( 2, -12.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 3 ) +region_enabled = true +region_rect = Rect2( 14, 36, 5, 9 ) + +[node name="LeftLowerLeg" type="Sprite" parent="."] +position = Vector2( 2, -8 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 4 ) +region_enabled = true +region_rect = Rect2( 14, 48, 5, 10 ) + +[node name="Hip" type="Sprite" parent="."] +position = Vector2( 0, -14 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 8, 32, 7, 2 ) + +[node name="LeftLowerArm" type="Sprite" parent="."] +position = Vector2( 4, -18 ) +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 20, 24, 3, 6 ) diff --git a/game/characters/char_t1_outline_split - Copy.png b/game/characters/char_t1_outline_split - Copy.png new file mode 100644 index 0000000000000000000000000000000000000000..92205db44b1d46d6acf025a53ab0a160dfbe88d3 GIT binary patch literal 1228 zcmV;-1T*`IP)Px(hDk(0RCt{2n@>m-Q5?s=D_ZU$QX)iJLc~&`i;-Xjp%?}hc(5Wb+n>V<9d=Ja zc@hG{I)r-=+{z9G2_l^glp^V}9r|-AEQF{q7U|%Y)Ru~`!|r?T%)B@AW_ML#W?^?=a1(#M=+25)3 z4@^Y50qv~t9MTTx={|zCNdmHuIiLQW&?fad)*I2;+l#mgt{)W>n89pG2g4j_3S z4e7Zd0LpwIINvkmXK`|+qnQnEJ)c*94*-NZp{jjA@%?aTJ;|(X000JGeCD0&N~n^| z_|(q~9=`rukn+Qw^#lMiYa5<%f+7TpF&@YozJ@v1ES^GBIglC zgu>Jjq21fD`28Kvh<*M2TJhdcBCBbvel`Q@#)FBD$b+Q8KovoAuCg%TOM~zZc?GP8iYv2+H zoWQI~CSn8ta-pCRmJI5FP*M zS_jIM?tsK9ATrX;#^+;Hx_iP1Nk}pgLwtQ&Q?~${jT-gpWO)*F17_+LkpoD7SBMS9 zW)}g@gVOk=MmC6!f8@zHj<9a|%9r=sP7o9G+IF>G=`IX`nS-@B@g}AF&*J;45nWhD zd|$P$oYPnl0yyy|g_(o3*+Di0G*IKC3(JTWs;$MC4FTOGNN2#9j!bl6*_48I^X0)B z4ycYjoBoY(m@n_U9PobemnnHs)+WhBj12^BGLm0#l(GYqhi3IMTB!_YfKIzyZEUHH z2Y}7Im4hZ|wg27LsC}0N&Ekr< zwGd76HcHgO5a{m;v3L>G0*YRNTWSG{(X&p9uo${cX1Nz5;qZAjh>pAS_W<Nl;({Qlb&<~h3q{7nm_X3JqRgAPK42Kkc-(=Nk8l@#m>#_J4LqY=(Gb0eWA)W qJ^io>6vb8u*m-eDeEC+oXZQyiEuf9H30rRf00001cr17XdUKf0_GEjk|4j}|05eP1b=5& z1x6-kfk$L90|Vb75M~tB@M-`S7F#@B978gk-%jf;T5Q1MI(Mn>iDYSx|Nqy%xq5h8 z4v&S&664*~w5iwAS0mwfrz-WK8*ayqIaiTz>D; za}0M_gQ}0n1#}A?;W_Hjx#^JJ)tR5%8BW!QSx>HX30V*jXgz5z|L5P8Tm|z^=Cd|@ zo6?>g%{^gT`lh)?h7Gs2axsK(h`m|M5Y5sc%)BMHzxLL4-P?wZmp?nYF=+g*+?69O z%5Y4Mp`VjMUg+?G-owA8suePqSl!gy(8Zu}aPi)Bh7ym0)E$Kt@!#)W__}T4v?ttG zKd*_KW5J`CbzRfJ`zNP@jAV(22T(~y{ABAdkJg_mv^b@|*``sqkjbG*k}*I&UQ){G zz_)w$ax77&=3keTp0hqttom_<7Ndf2=NldeEoWzr8~5IS$#-IT$m#iNqRoL7n~$7i z*yCrbpw6$xpu(@9#gI|w{eW$4$2lSPsYd=Qt{47UWc|yI{e{X>5mv^dwlf9dOr*Oq zc^b|MrL#HA&*eHWwUgnAofm^s!e?oQnW}z#557B8a$2qQVMy5iSBrVW6=hb2xvG9_ z56l-vGVSJkJzZhFv55ABe<3UeUW}`zCvXW&(QUkFNqLsuo)_DD2X% z;&dps*l{~h+hCXU9km_WRcsE^zAcLj*~P+eK~Q8{l!r(m2#I_ZiSl4f)5gQ zKNTVccWqhx-htnMXYT7adViN?G5l~YiDy`6EWILFYBuA9Z~5#C($bSJJ$k>2Vb|>5 z8y{DRH0Us{Pv1^8(7~2*{@i=><}G}5jGLPqTAwM3ZIVjecW?8uU8)O?r*JdWgl6i6J^TD#bQM!X$h^0mPgF!qYd(tn zdcHDZ_80jCSFQ)QC)}I;K6O$~aqbT`R)*Zo@+<<(EbG}0SS}EoR`u!PR(pp~@jss# zPP}J~+s~=Zpz*(->B4K*c!P^V8~Io6b~R-vzVt>%wkj&*GK+$81lO9Cp;kZE)X5$2 w^OL!l6tgpaiL?IotOvG}CztW=TUYpp`M%}#{_?-7{Gbxr)78&qol`;+0J+)D6aWAK literal 0 HcmV?d00001 diff --git a/game/characters/char_t1_outline_split.png.import b/game/characters/char_t1_outline_split.png.import new file mode 100644 index 0000000..55430b9 --- /dev/null +++ b/game/characters/char_t1_outline_split.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/char_t1_outline_split.png-9c3f609f043903cf305339bc84929b57.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://characters/char_t1_outline_split.png" +dest_files=[ "res://.import/char_t1_outline_split.png-9c3f609f043903cf305339bc84929b57.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/game/data/entity_classes/1_naturalist.tres b/game/data/entity_classes/1_naturalist.tres index 998f958..026655b 100644 --- a/game/data/entity_classes/1_naturalist.tres +++ b/game/data/entity_classes/1_naturalist.tres @@ -147,7 +147,7 @@ stat_id = 35 [sub_resource type="StatDataEntry" id=36] stat_id = 1 -base = 4.2 +base = 60.0 modifier_apply_type = 1 [sub_resource type="StatDataEntry" id=37] diff --git a/game/data/entity_classes/2_elementalist.tres b/game/data/entity_classes/2_elementalist.tres index e5a5eda..55fee99 100644 --- a/game/data/entity_classes/2_elementalist.tres +++ b/game/data/entity_classes/2_elementalist.tres @@ -108,7 +108,7 @@ stat_id = 35 [sub_resource type="StatDataEntry" id=31] stat_id = 1 -base = 4.2 +base = 60.0 [sub_resource type="StatDataEntry" id=32] stat_id = 17 diff --git a/game/player/CharacterSkeleton2D.gd b/game/player/CharacterSkeleton2D.gd new file mode 100644 index 0000000..fcd492a --- /dev/null +++ b/game/player/CharacterSkeleton2D.gd @@ -0,0 +1,121 @@ +extends CharacterSkeleton +class_name CharacterSkeleton2D + +export (NodePath) var front_node_path : NodePath = "" +export (NodePath) var front_animation_player_path : NodePath = "" +export (NodePath) var front_animation_tree_path : NodePath = "" + +export (NodePath) var side_node_path : NodePath = "" +export (NodePath) var side_animation_player_path : NodePath = "" +export (NodePath) var side_animation_tree_path : NodePath = "" + +export(CharacterAtlas) var character_atlas : CharacterAtlas setget set_character_atlas + +var _atlas : CharacterAtlas2D + +enum CharacterFacing { + FACING_FRONT = 0, + FACING_BACK = 1, + FACING_RIGHT = 2, + FACING_LEFT = 3, +} + +var _facing : int = 0 + +var _front_node : CharacterBones = null +var _front_animation_player : AnimationPlayer = null +var _front_animation_tree : AnimationTree = null + +var _side_node : CharacterBones = null +var _side_animation_player : AnimationPlayer = null +var _side_animation_tree : AnimationTree = null + +var _active_node : CharacterBones = null +var _active_animation_player : AnimationPlayer = null +var _active_animation_tree : AnimationTree = null + +var _is_front_side : bool = false + +var effects : Array + +func _ready() -> void: + _front_node = get_node(front_node_path) as CharacterBones + _front_animation_player = get_node(front_animation_player_path) as AnimationPlayer + _front_animation_tree = get_node(front_animation_tree_path) as AnimationTree + + _side_node = get_node(side_node_path) as CharacterBones + _side_animation_player = get_node(side_animation_player_path) as AnimationPlayer + _side_animation_tree = get_node(side_animation_tree_path) as AnimationTree + + set_character_atlas(character_atlas) + + _front_node.hide() + _side_node.show() + _active_node = _side_node + _active_animation_player = _side_animation_player + _active_animation_tree = _side_animation_tree + _is_front_side = false + +func update_facing(input_direction : Vector2) -> void: + var front : bool = abs(input_direction.dot(Vector2(0, 1))) > 0.9 + + if front: + if not _is_front_side: + _is_front_side = true + + _side_node.hide() + _front_node.show() + + _active_node = _front_node + _active_animation_tree = _front_animation_tree + + if input_direction.y > 0: + set_facing(CharacterFacing.FACING_FRONT) + else: + set_facing(CharacterFacing.FACING_BACK) + + else: + if _is_front_side: + _is_front_side = false + + _side_node.show() + _front_node.hide() + + _active_node = _side_node + _active_animation_tree = _side_animation_tree + + if input_direction.x > 0.01 and _facing != CharacterFacing.FACING_RIGHT: + set_facing(CharacterFacing.FACING_RIGHT) + _active_node.transform.x.x = -1 + elif input_direction.x < -0.01 and _facing != CharacterFacing.FACING_LEFT: + set_facing(CharacterFacing.FACING_LEFT) + _active_node.transform.x.x = 1 + +func add_effect(bone_id : int, effect : PackedScene) -> void: + pass + +func remove_effect(bone_id : int, effect : PackedScene) -> void: + pass + +func get_animation_player() -> AnimationPlayer: + return _active_animation_player + +func get_animation_tree() -> AnimationTree: + return _active_animation_tree + +func set_character_atlas(atlas : CharacterAtlas) -> void: + character_atlas = atlas + + _atlas = atlas as CharacterAtlas2D + + if _front_node != null: + _front_node.set_atlas(_atlas) + + if _front_node != null: + _side_node.set_atlas(_atlas) + +func set_facing(facing : int) -> void: + _facing = facing + + _active_node.set_facing(facing) + diff --git a/game/player/HumanoidCharacterBones2D.gd b/game/player/HumanoidCharacterBones2D.gd new file mode 100644 index 0000000..89f4a91 --- /dev/null +++ b/game/player/HumanoidCharacterBones2D.gd @@ -0,0 +1,53 @@ +extends CharacterBones +class_name HumanoidCharacterBones2D + +enum HumanoidBones { + HUMANOID_BONE_HIP = 0, + HUMANOID_BONE_TORSO = 1, + HUMANOID_BONE_LEG_R = 2, + HUMANOID_BONE_FOOT_R = 3, + HUMANOID_BONE_TOE_R = 4, + HUMANOID_BONE_LEG_L = 5, + HUMANOID_BONE_FOOT_L = 6, + HUMANOID_BONE_TOE_L = 7, + HUMANOID_BONE_ARM_R = 8, + #HUMANOID_BONE_SHOULDER_GUARD_R = 0, + HUMANOID_BONE_HAND_R = 9, + HUMANOID_BONE_FINGERS_R = 10, + HUMANOID_BONE_ARM_L = 11, + #HUMANOID_BONE_SHOULDER_GUARD_L = 0, + HUMANOID_BONE_HAND_L = 12, + HUMANOID_BONE_FINGERS_L = 13, + HUMANOID_BONE_HEAD = 14, + HUMANOID_BONE_HEAD_TOP = 15, + + HUMANOID_BONES_MAX = 16, +} + +export (String, MULTILINE) var help : String +export (Array, NodePath) var bones : Array + +var _atlas : CharacterAtlas2D + +func set_facing(facing : int) -> void: + if _atlas == null: + return + + for i in range(len(_atlas.slots)): + var entry : CharacterAtlasEntry2D = _atlas.slots[i] as CharacterAtlasEntry2D + + if entry == null: + continue + + var r : Rect2 = entry.get_index(facing) as Rect2 + + var bone : Sprite = get_node(bones[i]) as Sprite + + if bone == null: + continue + + bone.region_rect = r + + +func set_atlas(atlas : CharacterAtlas2D) -> void: + _atlas = atlas diff --git a/game/player/Mob.gd b/game/player/Mob.gd index f3b6da9..7e24b10 100644 --- a/game/player/Mob.gd +++ b/game/player/Mob.gd @@ -30,38 +30,32 @@ var max_visible_distance_squared : float = max_visible_distance * max_visible_di const ray_length = 1000 const ACCEL : float = 100.0 const DEACCEL : float = 100.0 -const GRAVITY : float = -24.8 -const JUMP_SPEED : float = 3.8 -const MAX_SLOPE_ANGLE : float = 40.0 - -#var process_gravity : bool = true var _on : bool = true var y_rot : float = 0.0 -var vel : Vector3 = Vector3() -var dir : Vector3 = Vector3() +var vel : Vector2 = Vector2() +var dir : Vector2 = Vector2() var target_movement_direction : Vector2 = Vector2() -var animation_tree : AnimationTree -var anim_node_state_machine : AnimationNodeStateMachinePlayback = null var animation_run : bool = false var moving : bool = false var sleep : bool = false + var dead : bool = false var death_timer : float = 0 +var path : = PoolVector2Array() +var follow_path = false + +var frame : int = 0 + func _ready() -> void: - animation_tree = get_character_skeleton().get_animation_tree() - - if animation_tree != null: - anim_node_state_machine = animation_tree["parameters/playback"] - - animation_tree["parameters/run-loop/blend_position"] = Vector2(0, -1) - ai_state = EntityEnums.AI_STATE_PATROL + + frame = randi() % 10 set_process(true) set_physics_process(true) @@ -75,36 +69,27 @@ func _process(delta : float) -> void: queue_free() return + + frame += 1 - var camera : Camera = get_tree().get_root().get_camera() as Camera - - if camera == null: + if frame < 10: return + + frame = 0 - var cam_pos : Vector2 = camera.global_transform.xform(Vector3()) - var dstv : Vector2 = cam_pos - position - dstv.y = 0 - var dst : float = dstv.length_squared() +# print(get_tree().root.get_visible_rect()) + var vpos : Vector2 = -get_tree().root.canvas_transform.get_origin() - position + var l : float = vpos.length_squared() + var rs : float = get_tree().root.size.x * get_tree().root.size.x - if dst > max_visible_distance_squared: - if visible: - hide() - return - else: + if l < rs: if not visible: show() - - #TODO check later if this gives a performance boost -# var cam_facing : Vector3 = -camera.global_transform.basis.z -# var d : float = cam_facing.dot(dstv) -# -# if d > 0: -# if visible: -# hide() -# return -# else: -# if not visible: -# show() + set_physics_process(true) + else: + if visible: + hide() + set_physics_process(false) func _physics_process(delta : float) -> void: @@ -119,6 +104,44 @@ func _physics_process(delta : float) -> void: process_movement(delta) +func move_along_path(distance : float) -> void: + var start_point : = position + + for i in range(path.size()): + var distance_to_next : = start_point.distance_to(path[0]) + + if distance <= distance_to_next and distance >= 0.0: + position = start_point.linear_interpolate(path[0], distance / distance_to_next) + break + elif distance <= 0.0: + position = path[0] + follow_path = false + break + + #if line2d and use_line_path: + # line2d.points = path + + distance -= distance_to_next + start_point = path[0] + path.remove(0) + + if path.size() == 0: + follow_path = false + + +func set_path(value : PoolVector2Array) -> void: + path = value + + #if line2d and use_line_path: + # line2d.points = value + + + if value.size() == 0: + return + + follow_path = true + + func process_movement(delta : float) -> void: # if starget != null: # look_at(starget.translation, Vector3(0, 1, 0)) @@ -128,51 +151,22 @@ func process_movement(delta : float) -> void: if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: moving = false return - + if target_movement_direction.length_squared() > 0.1: - if anim_node_state_machine != null and not animation_run: - anim_node_state_machine.travel("run-loop") - animation_run = true - target_movement_direction = target_movement_direction.normalized() + + get_character_skeleton().update_facing(dir) + moving = true else: - if anim_node_state_machine != null and animation_run: - anim_node_state_machine.travel("idle-loop") - animation_run = false - - moving = false - - if target_movement_direction.x > 0.1 or target_movement_direction.y > 0.1 or target_movement_direction.x < -0.1 or target_movement_direction.y < -0.1: - y_rot = Vector2(0, 1).angle_to(target_movement_direction) - - var forward : Vector3 = Vector3(0, 0, 1).rotated(Vector3(0, 1, 0), deg2rad(y_rot)) - var right : Vector3 = forward.cross(Vector3(0, 1, 0)) * -target_movement_direction.x - forward *= target_movement_direction.y #only potentially make it zero after getting the right vector - - dir = forward - dir += right - - if dir.length_squared() > 0.1: - dir = dir.normalized() - - moving = true - else: - dir = Vector3() moving = false - if not moving and sleep: - return - - if moving and sleep: - sleep = false + get_character_skeleton().get_animation_tree().set("parameters/walking/blend_amount", target_movement_direction.length()) - vel.y += delta * GRAVITY - - var hvel : Vector3 = vel + var hvel : Vector2 = vel hvel.y = 0 - var target : Vector3 = dir + var target : Vector2 = dir target *= get_speed().ccurrent var accel @@ -181,18 +175,15 @@ func process_movement(delta : float) -> void: else: accel = DEACCEL - hvel = hvel.linear_interpolate(target, accel * delta) as Vector3 - vel.x = hvel.x - vel.z = hvel.z + hvel = hvel.linear_interpolate(target, accel*delta) - var facing : Vector3 = vel - facing.y = 0 + if hvel.length_squared() < 0.1: + return + + vel = hvel + vel = move_and_slide(vel) -# vel = move_and_slide(vel, Vector3(0,1,0), false, 4, deg2rad(MAX_SLOPE_ANGLE)) sset_position(position, rotation) - - if vel.length_squared() < 0.12: - sleep = true func sstart_attack(entity : Entity) -> void: @@ -240,8 +231,6 @@ func _son_death(): sentity_interaction_type = EntityEnums.ENITIY_INTERACTION_TYPE_LOOT ai_state = EntityEnums.AI_STATE_OFF - anim_node_state_machine.travel("dead") - # set_process(false) set_physics_process(false) diff --git a/game/player/Mob.tscn b/game/player/Mob.tscn index 8716358..8fbba84 100644 --- a/game/player/Mob.tscn +++ b/game/player/Mob.tscn @@ -1,34 +1,23 @@ [gd_scene load_steps=5 format=2] +[ext_resource path="res://characters/Character.tscn" type="PackedScene" id=1] [ext_resource path="res://player/Mob.gd" type="Script" id=2] [ext_resource path="res://ui/nameplates/NamePlate.tscn" type="PackedScene" id=3] -[sub_resource type="CapsuleShape" id=1] -radius = 0.266582 -height = 0.927641 - -[sub_resource type="BoxShape" id=2] -extents = Vector3( 0.216228, 0.0681041, 0.183397 ) +[sub_resource type="CircleShape2D" id=1] +radius = 20.0 [node name="Mob" type="Entity" groups=[ "mobs", ]] collision_layer = 3 collision_mask = 3 -character_skeleton_path = NodePath("Rotation_Helper/Model/character") +character_skeleton_path = NodePath("Character") script = ExtResource( 2 ) -[node name="Body_CollisionShape" type="CollisionShape" parent="."] -transform = Transform( 1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0.73, 0 ) -shape = SubResource( 1 ) - -[node name="Feet_CollisionShape" type="CollisionShape" parent="."] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0 ) -shape = SubResource( 2 ) - -[node name="Rotation_Helper" type="Spatial" parent="."] -transform = Transform( -1, 0, -3.25841e-07, 0, 1, 0, 3.25841e-07, 0, -1, 0, 0, 0 ) - -[node name="Model" type="Spatial" parent="Rotation_Helper"] - [node name="NamePlate" parent="." instance=ExtResource( 3 )] + +[node name="Character" parent="." instance=ExtResource( 1 )] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) diff --git a/game/player/NamePlate.gd b/game/player/NamePlate.gd index 9546908..814a25f 100644 --- a/game/player/NamePlate.gd +++ b/game/player/NamePlate.gd @@ -68,41 +68,29 @@ func _process(delta): interpolating = false - var position : Vector3 = entity.translation - - var camera : Camera = get_tree().get_root().get_camera() as Camera - - if camera == null: - return - - var cam_pos : Vector3 = camera.global_transform.xform(Vector3()) - var dstv : Vector3 = cam_pos - position - dstv.y = 0 - var dst : float = dstv.length_squared() + var position : Vector2 = entity.position - if dst > max_distance_squared: - if visible: - hide() - return - - var cam_facing : Vector3 = -camera.global_transform.basis.z - var d : float = cam_facing.dot(dstv) - - if d > 0: - if visible: - hide() - return - else: - if not visible: - show() - +# if dst > max_distance_squared: +# if visible: +# hide() +# return +# +# +# if d > 0: +# if visible: +# hide() +# return +# else: +# if not visible: +# show() +# position.y += 1.9 - var screen_position : Vector2 = camera.unproject_position(position) +# var screen_position : Vector2 = camera.unproject_position(position) - var new_pos : Vector2 = Vector2(screen_position.x - (rect_size.x / 2.0) * rect_scale.x, screen_position.y - (rect_size.y) * rect_scale.y) +# var new_pos : Vector2 = Vector2(screen_position.x - (rect_size.x / 2.0) * rect_scale.x, screen_position.y - (rect_size.y) * rect_scale.y) - set_position(new_pos) + set_position(position) func set_max_distance(var value : float) -> void: diff --git a/game/player/NetworkedPlayer.tscn b/game/player/NetworkedPlayer.tscn index 6602f28..e6061a2 100644 --- a/game/player/NetworkedPlayer.tscn +++ b/game/player/NetworkedPlayer.tscn @@ -1,33 +1,21 @@ [gd_scene load_steps=5 format=2] [ext_resource path="res://player/NetworkedPlayer.gd" type="Script" id=1] +[ext_resource path="res://characters/Character.tscn" type="PackedScene" id=2] [ext_resource path="res://ui/nameplates/NamePlate.tscn" type="PackedScene" id=3] -[sub_resource type="CapsuleShape" id=1] -radius = 0.266582 -height = 0.927641 - -[sub_resource type="BoxShape" id=2] -extents = Vector3( 0.216228, 0.0681041, 0.183397 ) +[sub_resource type="CircleShape2D" id=1] +radius = 20.0 [node name="NetworkedPlayer" type="Entity"] collision_layer = 3 collision_mask = 3 -character_skeleton_path = NodePath("Rotation_Helper/Model/character") +character_skeleton_path = NodePath("Character") script = ExtResource( 1 ) -[node name="Body_CollisionShape" type="CollisionShape" parent="."] -transform = Transform( 1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0.8, 0 ) +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource( 1 ) -[node name="Feet_CollisionShape" type="CollisionShape" parent="."] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.194237, 0 ) -shape = SubResource( 2 ) - -[node name="Rotation_Helper" type="Spatial" parent="."] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.960532, 0 ) - -[node name="Model" type="Spatial" parent="Rotation_Helper"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.875205, 0 ) +[node name="Character" parent="." instance=ExtResource( 2 )] [node name="NamePlate" parent="." instance=ExtResource( 3 )] diff --git a/game/player/Player.gd b/game/player/Player.gd index bad2d34..074f717 100644 --- a/game/player/Player.gd +++ b/game/player/Player.gd @@ -24,24 +24,21 @@ class_name PlayerGD # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -export(float) var MOUSE_SENSITIVITY : float = 0.05 export(String) var world_path : String = ".." export(NodePath) var model_path : NodePath = "Rotation_Helper/Model" const ray_length = 1000 const ACCEL : float = 100.0 const DEACCEL : float = 100.0 -const GRAVITY : float = -24.8 -const JUMP_SPEED : float = 3.8 -const MAX_SLOPE_ANGLE : float = 40.0 + const MOUSE_TARGET_MAX_OFFSET : int = 10 var _on : bool = true var y_rot : float = 0.0 -var vel : Vector3 = Vector3() -var dir : Vector3 = Vector3() +var vel : Vector2 = Vector2() +var dir : Vector2 = Vector2() var input_dir : Vector2 = Vector2() var mouse_dir : Vector2 = Vector2() @@ -50,7 +47,6 @@ var mouse_left_down : bool = false var mouse_right_down : bool = false var touchpad_dir : Vector2 = Vector2() var mouse_down_delta : Vector2 = Vector2() -var queued_camera_rotaions : Vector2 = Vector2() var key_left : bool = false var key_right : bool = false @@ -62,11 +58,8 @@ var last_cursor_pos : Vector2 = Vector2() var mouse_down_pos : Vector2 = Vector2() var total_down_mouse_delta : Vector2 = Vector2() -var camera : Camera -var camera_pivot : Spatial +var camera : Camera2D -var animation_tree : AnimationTree -var anim_node_state_machine : AnimationNodeStateMachinePlayback = null var animation_run : bool = false var moving : bool = false @@ -76,27 +69,13 @@ var last_mouse_over : Entity = null var world : Navigation2D = null -var model_rotation_node : Spatial func _ready() -> void: - camera = $CameraPivot/Camera as Camera - camera_pivot = $CameraPivot as Spatial + camera = $Camera as Camera2D - model_rotation_node = get_node(model_path) - - animation_tree = get_character_skeleton().get_animation_tree() - - if animation_tree != null: - anim_node_state_machine = animation_tree["parameters/playback"] - world = get_node(world_path) as Navigation2D -# set_process(true) - func _physics_process(delta : float) -> void: - if not _on: - return - if world.initial_generation: return @@ -125,24 +104,14 @@ func process_input(delta: float) -> void: var input_length : float = input_dir.length_squared() + dir = input_dir.normalized() + if input_length > 0.1: - if anim_node_state_machine != null and not animation_run: - anim_node_state_machine.travel("run-loop") - animation_run = true - - input_dir = input_dir.normalized() - - animation_tree["parameters/run-loop/blend_position"] = input_dir - - if (input_dir.y < 0.1): - model_rotation_node.transform.basis = Basis(Vector3(0, acos(input_dir.x) - PI / 2.0, 0)) - else: - model_rotation_node.transform.basis = Basis() - else: - if anim_node_state_machine != null and animation_run: - anim_node_state_machine.travel("idle-loop") - animation_run = false + #handle_graphic_facing(abs(dir.dot(Vector2(0, 1))) > 0.9) + get_character_skeleton().update_facing(dir) + get_character_skeleton().get_animation_tree().set("parameters/walking/blend_amount", input_dir.length()) + func process_movement(delta : float) -> void: var state : int = getc_state() @@ -150,30 +119,17 @@ func process_movement(delta : float) -> void: if state & EntityEnums.ENTITY_STATE_TYPE_FLAG_ROOT != 0 or state & EntityEnums.ENTITY_STATE_TYPE_FLAG_STUN != 0: moving = false return - - if input_dir.x > 0.1 or input_dir.y > 0.1 or input_dir.x < -0.1 or input_dir.y < -0.1: - var forward : Vector3 = Vector3(0, 0, 1).rotated(Vector3(0, 1, 0), deg2rad(y_rot)) - var right : Vector3 = forward.cross(Vector3(0, 1, 0)) * -input_dir.x - forward *= input_dir.y #only potentially make it zero after getting the right vector - - dir = forward - dir += right - if dir.length_squared() > 0.1: - dir = dir.normalized() - + if (input_dir.length_squared() > 0.1): moving = true moved() else: - dir = Vector3() moving = false + - vel.y += delta * GRAVITY + var hvel = vel - var hvel : Vector3 = vel - hvel.y = 0 - - var target : Vector3 = dir + var target = dir target *= get_speed().ccurrent var accel @@ -182,17 +138,15 @@ func process_movement(delta : float) -> void: else: accel = DEACCEL - hvel = hvel.linear_interpolate(target, accel * delta) as Vector3 - vel.x = hvel.x - vel.z = hvel.z -# vel = move_and_slide(vel, Vector3(0,1,0), false, 4, deg2rad(MAX_SLOPE_ANGLE)) + hvel = hvel.linear_interpolate(target, accel*delta) + vel = hvel + vel = move_and_slide(vel) if multiplayer.has_network_peer(): if not multiplayer.is_network_server(): - rpc_id(1, "sset_position", position, rotation) + rpc_id(1, "sset_position", position) else: - sset_position(position, rotation) - + sset_position(position) func _input(event: InputEvent) -> void: if not cursor_grabbed: @@ -235,125 +189,94 @@ func _unhandled_input(event: InputEvent) -> void: mouse_left_down = event.pressed if mouse_left_down: - mouse_down_delta = Vector2() - mouse_down_pos = event.position - - if event.button_index == BUTTON_RIGHT and event.device != -1: - mouse_right_down = event.pressed - - - if mouse_left_down and mouse_right_down: - mouse_move_dir.y = -1 - else: - mouse_move_dir.y = 0 - - if event.is_pressed() and event.device != -1: - if event.button_index == BUTTON_WHEEL_UP: - camera_pivot.camera_distance_set_delta(-0.2) - if event.button_index == BUTTON_WHEEL_DOWN: - camera_pivot.camera_distance_set_delta(0.2) + mouse_dir = (event.position - get_viewport_rect().size / 2).normalized() + else: + mouse_dir = Vector2() + +# if event.is_pressed() and event.device != -1: +# if event.button_index == BUTTON_WHEEL_UP: +# camera_pivot.camera_distance_set_delta(-0.2) +# if event.button_index == BUTTON_WHEEL_DOWN: +# camera_pivot.camera_distance_set_delta(0.2) if not event.pressed and event.button_index == BUTTON_LEFT and event.device != -1: if mouse_down_delta.length() < MOUSE_TARGET_MAX_OFFSET: target(event.position) + + if event.pressed and event.button_index == BUTTON_RIGHT and event.device != -1: + target(event.position) if event is InputEventScreenTouch and event.pressed: target(event.position) - - update_cursor_mode() - -func update_cursor_mode(): - if mouse_left_down or mouse_right_down: - if not cursor_grabbed: - set_process_input(true) - total_down_mouse_delta = Vector2() - - cursor_grabbed = true - last_cursor_pos = get_viewport().get_mouse_position() - Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - else: - if cursor_grabbed: - set_process_input(false) - cursor_grabbed = false - Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - get_viewport().warp_mouse(last_cursor_pos) - - if total_down_mouse_delta.length_squared() < 8: - target(last_cursor_pos) - - + + if event is InputEventMouseMotion and mouse_left_down and event.device != -1: + mouse_dir = (event.position - get_viewport_rect().size / 2).normalized() func target(position : Vector2): - var from = camera.project_ray_origin(position) - var to = from + camera.project_ray_normal(position) * ray_length - var space_state = get_world_2d().direct_space_state - var result = space_state.intersect_ray(from, to, [], 2) - - if result: - print(result) - if result.collider and result.collider is Entity: - var ent : Entity = result.collider as Entity - - crequest_target_change(ent.get_path()) - return + #var results = space_state.intersect_point(map.make_canvas_position_local(position), 32, [], 2) + var results = space_state.intersect_point(position, 32, [], 2) + if results: + for result in results: + if result.collider and result.collider is Entity: + crequest_target_change((result.collider as Node).get_path()) + return + crequest_target_change(NodePath()) else: crequest_target_change(NodePath()) -func cmouseover(event): - var from = camera.project_ray_origin(event.position) - var to = from + camera.project_ray_normal(event.position) * ray_length +func cmouseover(event): var space_state = get_world_2d().direct_space_state - var result = space_state.intersect_ray(from, to, [], 2) - - if result: - if result.collider and result.collider is Entity: - var mo : Entity = result.collider as Entity + #var results = space_state.intersect_point(map.make_canvas_position_local(position), 32, [], 2) + var results = space_state.intersect_point(position, 32, [], 2) + + if results: + for result in results: + if result.collider and result.collider is Entity: + var mo : Entity = result.collider as Entity - if last_mouse_over != null and last_mouse_over != mo: - if is_instance_valid(last_mouse_over): - last_mouse_over.onc_mouse_exit() + if last_mouse_over != null and last_mouse_over != mo: + if is_instance_valid(last_mouse_over): + last_mouse_over.onc_mouse_exit() - last_mouse_over = null + last_mouse_over = null - if last_mouse_over == null: - mo.onc_mouse_enter() - last_mouse_over = mo + if last_mouse_over == null: + mo.onc_mouse_enter() + last_mouse_over = mo - return + return if last_mouse_over != null: last_mouse_over.onc_mouse_exit() last_mouse_over = null -func analog_force_change(vector, touchpad): +func analog_force_change(vector: Vector2, touchpad) -> void: if touchpad.padname == "TouchPad": touchpad_dir = vector touchpad_dir.y *= -1 elif touchpad.padname == "TargetPad": #try to target return - -func queue_camera_rotation(rot : Vector2) -> void: - queued_camera_rotaions += rot -remote func sset_position(pposition : Vector2, protation : float) -> void: +remote func sset_position(pposition : Vector2) -> void: if get_network_master() != 1: print(str(get_network_master()) + "psset") if multiplayer.network_peer and multiplayer.is_network_server(): - vrpc("cset_position", pposition, protation) - cset_position(pposition, protation) + vrpc("cset_position", pposition) -remote func cset_position(pposition : Vector2, protation : float) -> void: + cset_position(pposition) + +remote func cset_position(pposition : Vector2) -> void: if get_network_master() != 1: print(str(get_network_master()) + " pcset") + position = pposition - rotation = protation func _moved() -> void: if sis_casting(): @@ -372,35 +295,35 @@ func _con_target_changed(entity: Entity, old_target: Entity) -> void: if canc_interact(): crequest_interact() -func _con_cast_started(info): - if anim_node_state_machine != null and not casting_anim: - anim_node_state_machine.travel("casting-loop") - casting_anim = true - animation_run = false +#func _con_cast_started(info): +# if anim_node_state_machine != null and not casting_anim: +# anim_node_state_machine.travel("casting-loop") +# casting_anim = true +# animation_run = false -func _con_cast_failed(info): - if anim_node_state_machine != null and casting_anim: - anim_node_state_machine.travel("idle-loop") - casting_anim = false - - if animation_run: - anim_node_state_machine.travel("run-loop") +#func _con_cast_failed(info): +# if anim_node_state_machine != null and casting_anim: +# anim_node_state_machine.travel("idle-loop") +# casting_anim = false +# +# if animation_run: +# anim_node_state_machine.travel("run-loop") -func _con_cast_finished(info): - if anim_node_state_machine != null: - anim_node_state_machine.travel("cast-end") - casting_anim = false - - if animation_run: - anim_node_state_machine.travel("run-loop") +#func _con_cast_finished(info): +# if anim_node_state_machine != null: +# anim_node_state_machine.travel("cast-end") +# casting_anim = false +# +# if animation_run: +# anim_node_state_machine.travel("run-loop") -func _con_spell_cast_success(info): - if anim_node_state_machine != null: - anim_node_state_machine.travel("cast-end") - casting_anim = false - - if animation_run: - anim_node_state_machine.travel("run-loop") +#func _con_spell_cast_success(info): +# if anim_node_state_machine != null: +# anim_node_state_machine.travel("cast-end") +# casting_anim = false +# +# if animation_run: +# anim_node_state_machine.travel("run-loop") func _son_xp_gained(value : int) -> void: if not Entities.get_xp_data().can_level_up(gets_level()): diff --git a/game/player/Player.tscn b/game/player/Player.tscn index 98bee48..911173e 100644 --- a/game/player/Player.tscn +++ b/game/player/Player.tscn @@ -1,35 +1,27 @@ [gd_scene load_steps=5 format=2] +[ext_resource path="res://characters/Character.tscn" type="PackedScene" id=1] [ext_resource path="res://player/Player.gd" type="Script" id=2] [ext_resource path="res://ui/player_ui/player_ui.tscn" type="PackedScene" id=3] -[sub_resource type="CapsuleShape" id=1] -radius = 0.266582 -height = 0.927641 - -[sub_resource type="BoxShape" id=2] -extents = Vector3( 0.216228, 0.0681041, 0.183397 ) +[sub_resource type="CircleShape2D" id=1] +radius = 8.0 [node name="Player" type="Entity" groups=[ "players", ]] collision_layer = 3 collision_mask = 3 -character_skeleton_path = NodePath("Rotation_Helper/Model/character") +character_skeleton_path = NodePath("Character") script = ExtResource( 2 ) -[node name="Body_CollisionShape" type="CollisionShape" parent="."] -transform = Transform( 1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0.73, 0 ) +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource( 1 ) -[node name="Feet_CollisionShape" type="CollisionShape" parent="."] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0 ) -shape = SubResource( 2 ) - -[node name="Rotation_Helper" type="Spatial" parent="."] -transform = Transform( -1, 0, -3.25841e-07, 0, 1, 0, 3.25841e-07, 0, -1, 0, 0, 0 ) - -[node name="Model" type="Spatial" parent="Rotation_Helper"] +[node name="Camera2D" type="Camera2D" parent="."] +current = true [node name="GUILayer" parent="." instance=ExtResource( 3 )] + +[node name="Character" parent="." instance=ExtResource( 1 )] [connection signal="onc_open_loot_winow_request" from="." to="GUILayer" method="_on_Player_onc_open_loot_winow_request"] diff --git a/game/player/PlayerGDBase.gd b/game/player/PlayerGDBase.gd index a55af8c..964b9a8 100644 --- a/game/player/PlayerGDBase.gd +++ b/game/player/PlayerGDBase.gd @@ -33,7 +33,7 @@ func _ready(): _shape.radius = 50 _query = Physics2DShapeQueryParameters.new() - _query.collision_mask = 2 + _query.collision_layer = 2 _query.exclude = [ self ] _query.shape_rid = _shape.get_rid() @@ -100,5 +100,9 @@ func update_visibility() -> void: adds_sees(ent) - +remote func set_position_remote(pos : Vector2) -> void: + if get_tree().is_network_server(): + rpc("set_position_remote", pos) + print(position) + position = pos diff --git a/game/project.godot b/game/project.godot index 1950e05..9f3c14e 100644 --- a/game/project.godot +++ b/game/project.godot @@ -14,11 +14,26 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://scripts/auras/aura_script.gd" }, { +"base": "CharacterAtlas", +"class": "CharacterAtlas2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/CharacterAtlas2D.gd" +}, { +"base": "CharacterAtlasEntry", +"class": "CharacterAtlasEntry2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/CharacterAtlasEntry2D.gd" +}, { "base": "Spatial", "class": "CharacterSkeketonAttachPoint", "language": "GDScript", "path": "res://player/CharacterSkeletonAttachPoint.gd" }, { +"base": "CharacterSkeleton", +"class": "CharacterSkeleton2D", +"language": "GDScript", +"path": "res://player/CharacterSkeleton2D.gd" +}, { "base": "Entity", "class": "DisplayPlayerGD", "language": "GDScript", @@ -34,11 +49,26 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://scripts/entities/EntityDataGD.gd" }, { +"base": "CharacterBones", +"class": "HumanoidCharacterBones2D", +"language": "GDScript", +"path": "res://player/HumanoidCharacterBones2D.gd" +}, { "base": "ItemTemplate", "class": "ItemTemplateGD", "language": "GDScript", "path": "res://scripts/items/ItemTemplateGD.gd" }, { +"base": "ItemVisual", +"class": "ItemVisual2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/ItemVisual2D.gd" +}, { +"base": "ItemVisualEntry", +"class": "ItemVisualEntry2D", +"language": "GDScript", +"path": "res://scripts/item_visuals/ItemVisualEntry2D.gd" +}, { "base": "Node", "class": "Main", "language": "GDScript", @@ -96,11 +126,17 @@ _global_script_classes=[ { } ] _global_script_class_icons={ "AuraGD": "", +"CharacterAtlas2D": "", +"CharacterAtlasEntry2D": "", "CharacterSkeketonAttachPoint": "", +"CharacterSkeleton2D": "", "DisplayPlayerGD": "", "EntityAIGD": "", "EntityDataGD": "", +"HumanoidCharacterBones2D": "", "ItemTemplateGD": "", +"ItemVisual2D": "", +"ItemVisualEntry2D": "", "Main": "", "MainDungeonGenerator": "", "MainPlanetGenerator": "", diff --git a/game/scenes/World.gd b/game/scenes/World.gd index 15679ea..08df45d 100644 --- a/game/scenes/World.gd +++ b/game/scenes/World.gd @@ -1,8 +1,55 @@ extends Navigation2D +export(bool) var editor_generate : bool = false setget set_editor_generate, get_editor_generate +export(bool) var show_loading_screen : bool = true +export(bool) var generate_on_ready : bool = false + +var initial_generation : bool = false + +var _editor_generate : bool + +var _player_file_name : String +var _player : Entity func _ready(): pass # Replace with function body. -func load_character(current_character_file_name): - pass +func load_character(file_name: String) -> void: + _player_file_name = file_name + _player = Entities.load_player(file_name, Vector2(5, 5), 1) as Entity + #TODO hack, do this properly +# _player.set_physics_process(false) + + Server.sset_seed(_player.sseed) + + +func save() -> void: + if _player == null or _player_file_name == "": + return + + Entities.save_player(_player, _player_file_name) + +func _generation_finished(): + + if show_loading_screen and not Engine.editor_hint: + get_node("..").hide_loading_screen() + +# if _player: +# _player.set_physics_process(true) + +func get_editor_generate() -> bool: + return _editor_generate + +func set_editor_generate(value : bool) -> void: + if value: + #library.refresh_rects() + + #level_generator.setup(self, current_seed, false, library) + #spawn() + pass + else: + #spawned = false + #clear() + pass + + _editor_generate = value diff --git a/game/scenes/World.tscn b/game/scenes/World.tscn index d847ec8..0e2a86b 100644 --- a/game/scenes/World.tscn +++ b/game/scenes/World.tscn @@ -1,75 +1,26 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=3 format=2] [ext_resource path="res://scenes/World.gd" type="Script" id=1] -[ext_resource path="res://scripts/settings/DirectionalLightSettings.gd" type="Script" id=3] - -[sub_resource type="ProceduralSky" id=1] -sky_top_color = Color( 0.447059, 0.780392, 0.854902, 1 ) -sky_horizon_color = Color( 0.273637, 0.277344, 0.206924, 1 ) -sky_curve = 0.263535 -sky_energy = 0.3 -ground_bottom_color = Color( 0.196078, 0.152941, 0.152941, 1 ) -ground_horizon_color = Color( 0.223529, 0.192157, 0.164706, 1 ) -ground_curve = 0.101965 -ground_energy = 0.4 -sun_color = Color( 0.45098, 0.352941, 0.113725, 1 ) -sun_latitude = 39.71 -sun_longitude = -8.09 -sun_angle_min = 0.0 -sun_angle_max = 23.15 -sun_energy = 9.29 -texture_size = 0 - -[sub_resource type="Environment" id=2] -background_mode = 2 -background_sky = SubResource( 1 ) -ambient_light_color = Color( 0.870588, 0.870588, 0.870588, 1 ) -ambient_light_energy = 1.24 -ambient_light_sky_contribution = 0.09 -fog_enabled = true -fog_color = Color( 0.184314, 0.207843, 0.156863, 1 ) -fog_sun_color = Color( 0.239216, 0.337255, 0.396078, 1 ) -fog_sun_amount = 0.53 -fog_depth_begin = 155.9 -fog_depth_end = 379.9 -fog_depth_curve = 1.18921 -tonemap_mode = 2 -tonemap_exposure = 0.83 -auto_exposure_max_luma = 7.33 -ss_reflections_enabled = true -ssao_enabled = true -glow_levels/3 = false -glow_intensity = 1.6 -glow_strength = 1.1 -glow_bloom = 0.1 -glow_hdr_luminance_cap = 1.0 -adjustment_enabled = true -adjustment_brightness = 1.1 -adjustment_contrast = 1.25 +[ext_resource path="res://test_iso_size/test_size_tileset.tres" type="TileSet" id=2] [node name="World" type="Navigation2D" groups=[ "save", ]] script = ExtResource( 1 ) -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource( 2 ) -__meta__ = { -"_editor_description_": "" -} +[node name="TileMap5" type="TileMap" parent="."] +visible = false +mode = 1 +tile_set = ExtResource( 2 ) +cell_size = Vector2( 90, 44 ) +cell_tile_origin = 1 +format = 1 +tile_data = PoolIntArray( -1245181, 1, 0, -1179645, 1, 0, -1114112, 1, 0, -1114111, 1, 0, -1114110, 1, 0, -1114109, 1, 0, -1114108, 1, 0, -1114107, 1, 0, -1114106, 1, 0, -1114101, 1, 0, -1048576, 1, 0, -1048573, 1, 0, -1048572, 1, 0, -1048571, 1, 0, -1048569, 1, 0, -1048568, 1, 0, -1048567, 1, 0, -1048566, 1, 0, -1048565, 1, 0, -1048564, 1, 0, -917505, 1, 0, -983039, 1, 0, -983037, 1, 0, -983036, 1, 0, -983035, 1, 0, -983033, 1, 0, -983032, 1, 0, -983031, 1, 0, -983030, 1, 0, -983029, 1, 0, -983028, 1, 0, -851969, 1, 0, -917504, 1, 0, -917503, 1, 0, -917502, 1, 0, -917501, 1, 0, -917500, 1, 0, -917499, 1, 0, -917498, 1, 0, -917496, 1, 0, -917495, 1, 0, -917493, 1, 0, -917492, 1, 0, -786433, 1, 0, -851968, 1, 0, -851967, 1, 0, -851966, 1, 0, -851965, 1, 0, -851964, 1, 0, -851963, 1, 0, -851962, 1, 0, -851961, 1, 0, -851960, 1, 0, -851959, 1, 0, -851958, 1, 0, -851957, 1, 0, -851955, 1, 0, -851951, 1, 0, -720897, 1, 0, -786432, 1, 0, -786431, 1, 0, -786430, 1, 0, -786429, 1, 0, -786428, 1, 0, -786427, 1, 0, -786426, 1, 0, -786425, 1, 0, -786424, 1, 0, -786423, 1, 0, -786422, 1, 0, -786421, 1, 0, -786419, 1, 0, -786415, 1, 0, -655362, 1, 0, -655361, 1, 0, -720896, 1, 0, -720895, 1, 0, -720894, 1, 0, -720893, 1, 0, -720892, 1, 0, -720891, 1, 0, -720890, 1, 0, -720889, 1, 0, -720888, 1, 0, -720887, 1, 0, -720886, 1, 0, -720885, 1, 0, -720882, 1, 0, -720880, 1, 0, -720878, 1, 0, -589831, 1, 0, -589830, 1, 0, -589826, 1, 0, -589825, 1, 0, -655360, 1, 0, -655359, 1, 0, -655358, 1, 0, -655357, 1, 0, -655356, 1, 0, -655355, 1, 0, -655354, 1, 0, -655353, 1, 0, -655352, 1, 0, -655351, 1, 0, -655350, 1, 0, -655349, 1, 0, -655347, 1, 0, -655346, 1, 0, -655345, 1, 0, -655342, 1, 0, -524296, 1, 0, -524294, 1, 0, -524292, 1, 0, -524291, 1, 0, -524290, 1, 0, -524289, 1, 0, -589824, 1, 0, -589823, 1, 0, -589822, 1, 0, -589821, 1, 0, -589820, 1, 0, -589819, 1, 0, -589818, 1, 0, -589817, 1, 0, -589816, 1, 0, -589815, 1, 0, -589814, 1, 0, -589813, 1, 0, -589812, 1, 0, -589811, 1, 0, -589810, 1, 0, -589809, 1, 0, -589806, 1, 0, -458761, 1, 0, -458760, 1, 0, -458759, 1, 0, -458758, 1, 0, -458757, 1, 0, -458754, 1, 0, -458753, 1, 0, -524288, 1, 0, -524287, 1, 0, -524286, 1, 0, -524285, 1, 0, -524284, 1, 0, -524283, 1, 0, -524282, 1, 0, -524281, 1, 0, -524280, 1, 0, -524279, 1, 0, -524278, 1, 0, -524277, 1, 0, -524276, 1, 0, -524275, 1, 0, -524273, 1, 0, -524270, 1, 0, -393225, 1, 0, -393224, 1, 0, -393222, 1, 0, -393221, 1, 0, -393220, 1, 0, -393219, 1, 0, -393218, 1, 0, -393217, 1, 0, -458752, 1, 0, -458751, 1, 0, -458750, 1, 0, -458749, 1, 0, -458748, 1, 0, -458747, 1, 0, -458746, 1, 0, -458745, 1, 0, -458744, 1, 0, -458743, 1, 0, -458742, 1, 0, -458741, 1, 0, -458739, 1, 0, -458737, 1, 0, -458734, 1, 0, -327690, 1, 0, -327688, 1, 0, -327686, 1, 0, -327685, 1, 0, -327684, 1, 0, -327683, 1, 0, -327682, 1, 0, -327681, 1, 0, -393216, 1, 0, -393215, 1, 0, -393214, 1, 0, -393213, 1, 0, -393212, 1, 0, -393211, 1, 0, -393210, 1, 0, -393209, 1, 0, -393208, 1, 0, -393207, 1, 0, -393206, 1, 0, -393205, 1, 0, -393204, 1, 0, -393203, 1, 0, -393202, 1, 0, -393201, 1, 0, -393198, 1, 0, -262155, 1, 0, -262154, 1, 0, -262153, 1, 0, -262150, 1, 0, -262149, 1, 0, -262148, 1, 0, -262146, 1, 0, -262145, 1, 0, -327679, 1, 0, -327678, 1, 0, -327677, 1, 0, -327676, 1, 0, -327675, 1, 0, -327674, 1, 0, -327673, 1, 0, -327672, 1, 0, -327671, 1, 0, -327670, 1, 0, -327669, 1, 0, -327668, 1, 0, -327667, 1, 0, -327665, 1, 0, -327662, 1, 0, -196620, 1, 0, -196619, 1, 0, -196618, 1, 0, -196617, 1, 0, -196615, 1, 0, -196614, 1, 0, -196613, 1, 0, -196612, 1, 0, -196610, 1, 0, -196609, 1, 0, -262143, 1, 0, -262142, 1, 0, -262141, 1, 0, -262139, 1, 0, -262138, 1, 0, -262137, 1, 0, -262136, 1, 0, -262135, 1, 0, -262134, 1, 0, -262133, 1, 0, -262132, 1, 0, -262131, 1, 0, -262128, 1, 0, -262126, 1, 0, -262125, 1, 0, -262124, 1, 0, -262123, 1, 0, -262122, 1, 0, -262121, 1, 0, -262120, 1, 0, -262119, 1, 0, -131084, 1, 0, -131083, 1, 0, -131082, 1, 0, -131079, 1, 0, -131078, 1, 0, -131077, 1, 0, -131076, 1, 0, -131075, 1, 0, -131074, 1, 0, -131073, 1, 0, -196608, 1, 0, -196607, 1, 0, -196606, 1, 0, -196605, 1, 0, -196604, 1, 0, -196603, 1, 0, -196602, 1, 0, -196601, 1, 0, -196600, 1, 0, -196599, 1, 0, -196598, 1, 0, -196597, 1, 0, -196596, 1, 0, -196595, 1, 0, -196594, 1, 0, -196593, 1, 0, -196592, 1, 0, -196591, 1, 0, -196590, 1, 0, -196582, 1, 0, -196581, 1, 0, -196580, 1, 0, -196579, 1, 0, -65549, 1, 0, -65547, 1, 0, -65546, 1, 0, -65544, 1, 0, -65543, 1, 0, -65542, 1, 0, -65541, 1, 0, -65540, 1, 0, -65539, 1, 0, -65538, 1, 0, -65537, 1, 0, -131072, 1, 0, -131071, 1, 0, -131070, 1, 0, -131069, 1, 0, -131068, 1, 0, -131067, 1, 0, -131066, 1, 0, -131065, 1, 0, -131064, 1, 0, -131063, 1, 0, -131062, 1, 0, -131061, 1, 0, -131059, 1, 0, -131058, 1, 0, -131057, 1, 0, -131056, 1, 0, -131055, 1, 0, -131054, 1, 0, -131042, 1, 0, -131041, 1, 0, -131040, 1, 0, -13, 1, 0, -11, 1, 0, -10, 1, 0, -8, 1, 0, -7, 1, 0, -6, 1, 0, -5, 1, 0, -4, 1, 0, -3, 1, 0, -2, 1, 0, -1, 1, 0, -65536, 1, 0, -65535, 1, 0, -65534, 1, 0, -65533, 1, 0, -65532, 1, 0, -65531, 1, 0, -65530, 1, 0, -65529, 1, 0, -65528, 1, 0, -65527, 1, 0, -65526, 1, 0, -65525, 1, 0, -65524, 1, 0, -65523, 1, 0, -65522, 1, 0, -65520, 1, 0, -65519, 1, 0, -65518, 1, 0, -65517, 1, 0, -65516, 1, 0, -65515, 1, 0, -65503, 1, 0, 65523, 1, 0, 65524, 1, 0, 65526, 1, 0, 65528, 1, 0, 65529, 1, 0, 65530, 1, 0, 65531, 1, 0, 65532, 1, 0, 65533, 1, 0, 65534, 1, 0, 65535, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 1, 0, 5, 1, 0, 6, 1, 0, 7, 1, 0, 8, 1, 0, 9, 1, 0, 10, 1, 0, 11, 1, 0, 12, 1, 0, 13, 1, 0, 14, 1, 0, 15, 1, 0, 16, 1, 0, 17, 1, 0, 18, 1, 0, 21, 1, 0, 22, 1, 0, 23, 1, 0, 24, 1, 0, 25, 1, 0, 26, 1, 0, 27, 1, 0, 28, 1, 0, 33, 1, 0, 131059, 1, 0, 131060, 1, 0, 131062, 1, 0, 131064, 1, 0, 131065, 1, 0, 131066, 1, 0, 131067, 1, 0, 131068, 1, 0, 131069, 1, 0, 131070, 1, 0, 131071, 1, 0, 65536, 1, 0, 65537, 1, 0, 65538, 1, 0, 65539, 1, 0, 65540, 1, 0, 65541, 1, 0, 65542, 1, 0, 65543, 1, 0, 65544, 1, 0, 65545, 1, 0, 65546, 1, 0, 65547, 1, 0, 65548, 1, 0, 65549, 1, 0, 65550, 1, 0, 65551, 1, 0, 65552, 1, 0, 65553, 1, 0, 65554, 1, 0, 65555, 1, 0, 65556, 1, 0, 65557, 1, 0, 65565, 1, 0, 65566, 1, 0, 65567, 1, 0, 65568, 1, 0, 65569, 1, 0, 196595, 1, 0, 196596, 1, 0, 196598, 1, 0, 196599, 1, 0, 196600, 1, 0, 196601, 1, 0, 196602, 1, 0, 196603, 1, 0, 196604, 1, 0, 196605, 1, 0, 196606, 1, 0, 196607, 1, 0, 131072, 1, 0, 131073, 1, 0, 131074, 1, 0, 131075, 1, 0, 131076, 1, 0, 131077, 1, 0, 131078, 1, 0, 131079, 1, 0, 131080, 1, 0, 131081, 1, 0, 131082, 1, 0, 131083, 1, 0, 131084, 1, 0, 131085, 1, 0, 131086, 1, 0, 131087, 1, 0, 131089, 1, 0, 131091, 1, 0, 131092, 1, 0, 131093, 1, 0, 262131, 1, 0, 262132, 1, 0, 262134, 1, 0, 262135, 1, 0, 262137, 1, 0, 262138, 1, 0, 262139, 1, 0, 262140, 1, 0, 262141, 1, 0, 262142, 1, 0, 262143, 1, 0, 196608, 1, 0, 196609, 1, 0, 196610, 1, 0, 196611, 1, 0, 196612, 1, 0, 196613, 1, 0, 196614, 1, 0, 196615, 1, 0, 196616, 1, 0, 196617, 1, 0, 196618, 1, 0, 196619, 1, 0, 196620, 1, 0, 196621, 1, 0, 196622, 1, 0, 196623, 1, 0, 196624, 1, 0, 196625, 1, 0, 196627, 1, 0, 196628, 1, 0, 196629, 1, 0, 196630, 1, 0, 196631, 1, 0, 196632, 1, 0, 196633, 1, 0, 327668, 1, 0, 327669, 1, 0, 327670, 1, 0, 327671, 1, 0, 327672, 1, 0, 327673, 1, 0, 327674, 1, 0, 327675, 1, 0, 327676, 1, 0, 327677, 1, 0, 327678, 1, 0, 327679, 1, 0, 262144, 1, 0, 262145, 1, 0, 262146, 1, 0, 262147, 1, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 1, 0, 262155, 1, 0, 262156, 1, 0, 262157, 1, 0, 262158, 1, 0, 262159, 1, 0, 262160, 1, 0, 262161, 1, 0, 262162, 1, 0, 262163, 1, 0, 262164, 1, 0, 262165, 1, 0, 262166, 1, 0, 262167, 1, 0, 262168, 1, 0, 262169, 1, 0, 393204, 1, 0, 393205, 1, 0, 393206, 1, 0, 393208, 1, 0, 393209, 1, 0, 393210, 1, 0, 393211, 1, 0, 393212, 1, 0, 393213, 1, 0, 393214, 1, 0, 393215, 1, 0, 327680, 1, 0, 327681, 1, 0, 327682, 1, 0, 327683, 1, 0, 327684, 1, 0, 327685, 1, 0, 327686, 1, 0, 327687, 1, 0, 327688, 1, 0, 327689, 1, 0, 327690, 1, 0, 327691, 1, 0, 327692, 1, 0, 327693, 1, 0, 327694, 1, 0, 327695, 1, 0, 327696, 1, 0, 327697, 1, 0, 327698, 1, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 1, 0, 327705, 1, 0, 327706, 1, 0, 458740, 1, 0, 458741, 1, 0, 458742, 1, 0, 458744, 1, 0, 458745, 1, 0, 458747, 1, 0, 458748, 1, 0, 458749, 1, 0, 458751, 1, 0, 393216, 1, 0, 393217, 1, 0, 393218, 1, 0, 393219, 1, 0, 393220, 1, 0, 393221, 1, 0, 393222, 1, 0, 393223, 1, 0, 393224, 1, 0, 393225, 1, 0, 393226, 1, 0, 393227, 1, 0, 393228, 1, 0, 393229, 1, 0, 393230, 1, 0, 393231, 1, 0, 393232, 1, 0, 393233, 1, 0, 393234, 1, 0, 393235, 1, 0, 393236, 1, 0, 393237, 1, 0, 393238, 1, 0, 393239, 1, 0, 393240, 1, 0, 393241, 1, 0, 393242, 1, 0, 393243, 1, 0, 524276, 1, 0, 524278, 1, 0, 524279, 1, 0, 524280, 1, 0, 524283, 1, 0, 524284, 1, 0, 524285, 1, 0, 524286, 1, 0, 524287, 1, 0, 458752, 1, 0, 458753, 1, 0, 458754, 1, 0, 458755, 1, 0, 458756, 1, 0, 458757, 1, 0, 458758, 1, 0, 458759, 1, 0, 458760, 1, 0, 458761, 1, 0, 458762, 1, 0, 458763, 1, 0, 458764, 1, 0, 458765, 1, 0, 458766, 1, 0, 458767, 1, 0, 458768, 1, 0, 458769, 1, 0, 458770, 1, 0, 458771, 1, 0, 458772, 1, 0, 458773, 1, 0, 458774, 1, 0, 458775, 1, 0, 458776, 1, 0, 458777, 1, 0, 458779, 1, 0, 589812, 1, 0, 589813, 1, 0, 589814, 1, 0, 589815, 1, 0, 589816, 1, 0, 589819, 1, 0, 589820, 1, 0, 589821, 1, 0, 589822, 1, 0, 589823, 1, 0, 524288, 1, 0, 524289, 1, 0, 524290, 1, 0, 524291, 1, 0, 524292, 1, 0, 524293, 1, 0, 524294, 1, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 1, 0, 524299, 1, 0, 524300, 1, 0, 524301, 1, 0, 524302, 1, 0, 524303, 1, 0, 524304, 1, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 524309, 1, 0, 524310, 1, 0, 524311, 1, 0, 524312, 1, 0, 524313, 1, 0, 524315, 1, 0, 655348, 1, 0, 655349, 1, 0, 655351, 1, 0, 655352, 1, 0, 655354, 1, 0, 655355, 1, 0, 655356, 1, 0, 655357, 1, 0, 655358, 1, 0, 589824, 1, 0, 589825, 1, 0, 589826, 1, 0, 589827, 1, 0, 589828, 1, 0, 589829, 1, 0, 589830, 1, 0, 589831, 1, 0, 589832, 1, 0, 589833, 1, 0, 589834, 1, 0, 589835, 1, 0, 589836, 1, 0, 589837, 1, 0, 589838, 1, 0, 589839, 1, 0, 589840, 1, 0, 589841, 1, 0, 589842, 1, 0, 589843, 1, 0, 589844, 1, 0, 589845, 1, 0, 589846, 1, 0, 589847, 1, 0, 589848, 1, 0, 589849, 1, 0, 589850, 1, 0, 720883, 1, 0, 720884, 1, 0, 720885, 1, 0, 720886, 1, 0, 720888, 1, 0, 720890, 1, 0, 720891, 1, 0, 720892, 1, 0, 720893, 1, 0, 720894, 1, 0, 655360, 1, 0, 655364, 1, 0, 655365, 1, 0, 655366, 1, 0, 655367, 1, 0, 655368, 1, 0, 655369, 1, 0, 655370, 1, 0, 655371, 1, 0, 655372, 1, 0, 655373, 1, 0, 655374, 1, 0, 655375, 1, 0, 655376, 1, 0, 655377, 1, 0, 655378, 1, 0, 655379, 1, 0, 655380, 1, 0, 655381, 1, 0, 655382, 1, 0, 655383, 1, 0, 655384, 1, 0, 655385, 1, 0, 655386, 1, 0, 786419, 1, 0, 786420, 1, 0, 786424, 1, 0, 786425, 1, 0, 786426, 1, 0, 786427, 1, 0, 786429, 1, 0, 720897, 1, 0, 720900, 1, 0, 720901, 1, 0, 720902, 1, 0, 720903, 1, 0, 720904, 1, 0, 720905, 1, 0, 720906, 1, 0, 720907, 1, 0, 720908, 1, 0, 720909, 1, 0, 720910, 1, 0, 720911, 1, 0, 720912, 1, 0, 720913, 1, 0, 720914, 1, 0, 720915, 1, 0, 720916, 1, 0, 720917, 1, 0, 720918, 1, 0, 720919, 1, 0, 720920, 1, 0, 720921, 1, 0, 720922, 1, 0, 720923, 1, 0, 720924, 1, 0, 851955, 1, 0, 851956, 1, 0, 851959, 1, 0, 851961, 1, 0, 851963, 1, 0, 851965, 1, 0, 786432, 1, 0, 786433, 1, 0, 786434, 1, 0, 786435, 1, 0, 786436, 1, 0, 786437, 1, 0, 786438, 1, 0, 786439, 1, 0, 786440, 1, 0, 786441, 1, 0, 786442, 1, 0, 786443, 1, 0, 786444, 1, 0, 786445, 1, 0, 786446, 1, 0, 786447, 1, 0, 786448, 1, 0, 786449, 1, 0, 786450, 1, 0, 786451, 1, 0, 786452, 1, 0, 786453, 1, 0, 786454, 1, 0, 786455, 1, 0, 786456, 1, 0, 786457, 1, 0, 786458, 1, 0, 917491, 1, 0, 917495, 1, 0, 917496, 1, 0, 917499, 1, 0, 917501, 1, 0, 917503, 1, 0, 851969, 1, 0, 851972, 1, 0, 851973, 1, 0, 851974, 1, 0, 851975, 1, 0, 851976, 1, 0, 851977, 1, 0, 851978, 1, 0, 851979, 1, 0, 851980, 1, 0, 851981, 1, 0, 851982, 1, 0, 851983, 1, 0, 851984, 1, 0, 851985, 1, 0, 851986, 1, 0, 851987, 1, 0, 851988, 1, 0, 851989, 1, 0, 851990, 1, 0, 851991, 1, 0, 851992, 1, 0, 851993, 1, 0, 983031, 1, 0, 983032, 1, 0, 983035, 1, 0, 983037, 1, 0, 983038, 1, 0, 917506, 1, 0, 917508, 1, 0, 917509, 1, 0, 917510, 1, 0, 917511, 1, 0, 917512, 1, 0, 917513, 1, 0, 917514, 1, 0, 917515, 1, 0, 917516, 1, 0, 917517, 1, 0, 917518, 1, 0, 917519, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 1, 0, 917526, 1, 0, 917527, 1, 0, 917528, 1, 0, 1048566, 1, 0, 1048567, 1, 0, 1048571, 1, 0, 1048572, 1, 0, 1048573, 1, 0, 983042, 1, 0, 983044, 1, 0, 983045, 1, 0, 983046, 1, 0, 983047, 1, 0, 983048, 1, 0, 983049, 1, 0, 983050, 1, 0, 983051, 1, 0, 983052, 1, 0, 983053, 1, 0, 983054, 1, 0, 983055, 1, 0, 983056, 1, 0, 983057, 1, 0, 983058, 1, 0, 983059, 1, 0, 983060, 1, 0, 983061, 1, 0, 983062, 1, 0, 983063, 1, 0, 1114102, 1, 0, 1114108, 1, 0, 1048578, 1, 0, 1048579, 1, 0, 1048580, 1, 0, 1048581, 1, 0, 1048582, 1, 0, 1048583, 1, 0, 1048584, 1, 0, 1048585, 1, 0, 1048586, 1, 0, 1048587, 1, 0, 1048588, 1, 0, 1048589, 1, 0, 1048590, 1, 0, 1048591, 1, 0, 1048592, 1, 0, 1048593, 1, 0, 1048594, 1, 0, 1048595, 1, 0, 1048596, 1, 0, 1048597, 1, 0, 1048598, 1, 0, 1179644, 1, 0, 1114115, 1, 0, 1114117, 1, 0, 1114119, 1, 0, 1114120, 1, 0, 1114121, 1, 0, 1114122, 1, 0, 1114123, 1, 0, 1114124, 1, 0, 1114125, 1, 0, 1114126, 1, 0, 1114127, 1, 0, 1114128, 1, 0, 1114129, 1, 0, 1114130, 1, 0, 1114131, 1, 0, 1114132, 1, 0, 1245180, 1, 0, 1179650, 1, 0, 1179651, 1, 0, 1179652, 1, 0, 1179655, 1, 0, 1179656, 1, 0, 1179657, 1, 0, 1179658, 1, 0, 1179659, 1, 0, 1179660, 1, 0, 1179661, 1, 0, 1179662, 1, 0, 1179663, 1, 0, 1179664, 1, 0, 1179665, 1, 0, 1179666, 1, 0, 1179667, 1, 0, 1179668, 1, 0, 1310716, 1, 0, 1245187, 1, 0, 1245188, 1, 0, 1245191, 1, 0, 1245192, 1, 0, 1245193, 1, 0, 1245194, 1, 0, 1245195, 1, 0, 1245196, 1, 0, 1245197, 1, 0, 1245198, 1, 0, 1245199, 1, 0, 1245200, 1, 0, 1245201, 1, 0, 1245202, 1, 0, 1245203, 1, 0, 1376252, 1, 0, 1376253, 1, 0, 1310722, 1, 0, 1310724, 1, 0, 1310726, 1, 0, 1310727, 1, 0, 1310728, 1, 0, 1310729, 1, 0, 1310730, 1, 0, 1310731, 1, 0, 1310732, 1, 0, 1310733, 1, 0, 1310734, 1, 0, 1310735, 1, 0, 1310736, 1, 0, 1310737, 1, 0, 1441788, 1, 0, 1441789, 1, 0, 1376258, 1, 0, 1376260, 1, 0, 1376261, 1, 0, 1376262, 1, 0, 1376264, 1, 0, 1376265, 1, 0, 1376266, 1, 0, 1376267, 1, 0, 1376268, 1, 0, 1376269, 1, 0, 1376270, 1, 0, 1376271, 1, 0, 1376272, 1, 0, 1507324, 1, 0, 1507326, 1, 0, 1507327, 1, 0, 1441794, 1, 0, 1441797, 1, 0, 1441798, 1, 0, 1441799, 1, 0, 1441800, 1, 0, 1441801, 1, 0, 1441802, 1, 0, 1441803, 1, 0, 1441804, 1, 0, 1441805, 1, 0, 1441806, 1, 0, 1441807, 1, 0, 1572860, 1, 0, 1507328, 1, 0, 1507329, 1, 0, 1507330, 1, 0, 1507331, 1, 0, 1507332, 1, 0, 1507333, 1, 0, 1507334, 1, 0, 1507335, 1, 0, 1507336, 1, 0, 1507337, 1, 0, 1507338, 1, 0, 1507339, 1, 0, 1507340, 1, 0, 1507341, 1, 0, 1638396, 1, 0, 1572865, 1, 0, 1572872, 1, 0, 1572874, 1, 0, 1572875, 1, 0, 1572876, 1, 0, 1572877, 1, 0, 1703932, 1, 0, 1638401, 1, 0, 1638409, 1, 0, 1638411, 1, 0, 1638412, 1, 0, 1769468, 1, 0, 1703936, 1, 0, 1703944, 1, 0, 1703947, 1, 0, 1835004, 1, 0, 1835007, 1, 0, 1769479, 1, 0, 1900540, 1, 0, 1900543, 1, 0, 1966076, 1, 0, 1966078, 1, 0, 2031612, 1, 0, 2031613, 1, 0, 2097148, 1, 0 ) -[node name="DirectionalLight" type="DirectionalLight" parent="."] -transform = Transform( -0.797163, 0.45442, 0.397535, 0.124932, -0.520028, 0.844963, 0.590697, 0.723238, 0.357776, 0, 18.834, 0 ) -layers = 3 -light_color = Color( 1, 0.878431, 0.878431, 1 ) -light_energy = 0.7 -light_specular = 0.65 -shadow_bias = 0.07 -script = ExtResource( 3 ) - -[node name="DirectionalLight2" type="DirectionalLight" parent="."] -transform = Transform( 0.826603, 0.474891, -0.302004, -0.49276, 0.351482, -0.79602, -0.271874, 0.806808, 0.524543, 0, 18.834, 0 ) -light_color = Color( 0.631373, 0.631373, 0.631373, 1 ) -light_energy = 0.48 -light_specular = 0.0 -directional_shadow_normal_bias = 0.1 +[node name="TileMap6" type="TileMap" parent="."] +mode = 1 +tile_set = ExtResource( 2 ) +cell_size = Vector2( 45, 22 ) +cell_tile_origin = 1 +format = 1 +tile_data = PoolIntArray( -1048582, 0, 0, -983046, 0, 0, -983045, 0, 0, -983042, 0, 0, -917509, 0, 0, -917505, 0, 0, -851973, 0, 0, -851972, 0, 0, -917504, 0, 0, -786449, 0, 0, -786437, 0, 0, -786436, 0, 0, -786435, 0, 0, -786433, 0, 0, -851968, 0, 0, -851967, 0, 0, -720913, 0, 0, -720912, 0, 0, -720905, 0, 0, -720904, 0, 0, -720903, 0, 0, -720902, 0, 0, -720901, 0, 0, -720900, 0, 0, -720899, 0, 0, -720897, 0, 0, -786431, 0, 0, -786430, 0, 0, -655377, 0, 0, -655376, 0, 0, -655375, 0, 0, -655374, 0, 0, -655373, 0, 0, -655372, 0, 0, -655371, 0, 0, -655370, 0, 0, -655364, 0, 0, -655363, 0, 0, -655361, 0, 0, -720893, 0, 0, -720892, 0, 0, -589841, 0, 0, -589840, 0, 0, -589839, 0, 0, -589828, 0, 0, -589827, 0, 0, -589826, 0, 0, -589825, 0, 0, -655356, 0, 0, -655355, 0, 0, -655354, 0, 0, -524305, 0, 0, -524304, 0, 0, -524302, 0, 0, -524292, 0, 0, -524291, 0, 0, -524290, 0, 0, -524289, 0, 0, -589819, 0, 0, -589817, 0, 0, -589816, 0, 0, -458768, 0, 0, -458765, 0, 0, -458760, 0, 0, -458756, 0, 0, -458755, 0, 0, -458754, 0, 0, -458753, 0, 0, -524288, 0, 0, -524282, 0, 0, -524281, 0, 0, -524280, 0, 0, -524279, 0, 0, -393232, 0, 0, -393228, 0, 0, -393224, 0, 0, -393221, 0, 0, -393219, 0, 0, -393218, 0, 0, -393217, 0, 0, -458752, 0, 0, -458750, 0, 0, -458745, 0, 0, -327696, 0, 0, -327695, 0, 0, -327692, 0, 0, -327688, 0, 0, -327686, 0, 0, -327685, 0, 0, -327683, 0, 0, -327682, 0, 0, -393215, 0, 0, -393212, 0, 0, -262163, 0, 0, -262162, 0, 0, -262161, 0, 0, -262160, 0, 0, -262159, 0, 0, -262158, 0, 0, -262157, 0, 0, -262156, 0, 0, -262155, 0, 0, -262154, 0, 0, -262153, 0, 0, -262152, 0, 0, -262151, 0, 0, -262150, 0, 0, -262149, 0, 0, -262148, 0, 0, -327677, 0, 0, -327676, 0, 0, -327675, 0, 0, -327674, 0, 0, -327673, 0, 0, -327672, 0, 0, -327671, 0, 0, -327670, 0, 0, -327669, 0, 0, -327668, 0, 0, -196626, 0, 0, -196625, 0, 0, -196623, 0, 0, -196622, 0, 0, -196621, 0, 0, -196620, 0, 0, -196618, 0, 0, -196616, 0, 0, -196615, 0, 0, -196613, 0, 0, -196612, 0, 0, -262140, 0, 0, -262139, 0, 0, -262138, 0, 0, -262137, 0, 0, -262136, 0, 0, -262135, 0, 0, -262134, 0, 0, -131088, 0, 0, -131087, 0, 0, -131085, 0, 0, -131083, 0, 0, -131081, 0, 0, -131080, 0, 0, -131078, 0, 0, -131076, 0, 0, -196604, 0, 0, -196603, 0, 0, -196602, 0, 0, -196601, 0, 0, -196600, 0, 0, -65551, 0, 0, -65550, 0, 0, -65549, 0, 0, -65548, 0, 0, -65547, 0, 0, -65546, 0, 0, -65545, 0, 0, -65544, 0, 0, -65542, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -131063, 0, 0, -15, 0, 0, -12, 0, 0, -11, 0, 0, -10, 0, 0, -9, 0, 0, -8, 0, 0, -6, 0, 0, -65531, 0, 0, -65530, 0, 0, -65529, 0, 0, -65528, 0, 0, -65527, 0, 0, 65521, 0, 0, 65526, 0, 0, 65527, 0, 0, 65528, 0, 0, 65529, 0, 0, 65530, 0, 0, 65531, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 131057, 0, 0, 131063, 0, 0, 131064, 0, 0, 131065, 0, 0, 131066, 0, 0, 131067, 0, 0, 65541, 0, 0, 65542, 0, 0, 65543, 0, 0, 65544, 0, 0, 65545, 0, 0, 196594, 0, 0, 196595, 0, 0, 196599, 0, 0, 196600, 0, 0, 196601, 0, 0, 196602, 0, 0, 196603, 0, 0, 131081, 0, 0, 262132, 0, 0, 262133, 0, 0, 262134, 0, 0, 262135, 0, 0, 262136, 0, 0, 262137, 0, 0, 262139, 0, 0, 196613, 0, 0, 196617, 0, 0, 327670, 0, 0, 327671, 0, 0, 327672, 0, 0, 327678, 0, 0, 262144, 0, 0, 262149, 0, 0, 262150, 0, 0, 262152, 0, 0, 393206, 0, 0, 393208, 0, 0, 393209, 0, 0, 393214, 0, 0, 393215, 0, 0, 327680, 0, 0, 327681, 0, 0, 327682, 0, 0, 327686, 0, 0, 327687, 0, 0, 327688, 0, 0, 458746, 0, 0, 393216, 0, 0, 393217, 0, 0, 393218, 0, 0, 393222, 0, 0, 393224, 0, 0, 524283, 0, 0, 524284, 0, 0, 458754, 0, 0, 458755, 0, 0, 458758, 0, 0, 589821, 0, 0, 589822, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 655359, 0, 0, 589824, 0, 0, 589830, 0, 0, 655361, 0, 0, 655362, 0, 0, 720899, 0, 0, 720900, 0, 0, 786437, 0, 0, 786438, 0, 0 ) diff --git a/game/scripts/item_visuals/CharacterAtlas2D.gd b/game/scripts/item_visuals/CharacterAtlas2D.gd new file mode 100644 index 0000000..15644a7 --- /dev/null +++ b/game/scripts/item_visuals/CharacterAtlas2D.gd @@ -0,0 +1,7 @@ +extends CharacterAtlas +class_name CharacterAtlas2D + +export(String, MULTILINE) var comments : String + +export(Texture) var texture : Texture +export(Array, CharacterAtlasEntry) var slots : Array diff --git a/game/scripts/item_visuals/CharacterAtlasEntry2D.gd b/game/scripts/item_visuals/CharacterAtlasEntry2D.gd new file mode 100644 index 0000000..d9f1bf9 --- /dev/null +++ b/game/scripts/item_visuals/CharacterAtlasEntry2D.gd @@ -0,0 +1,19 @@ +extends CharacterAtlasEntry +class_name CharacterAtlasEntry2D + +export(Rect2) var front_rect : Rect2 +export(Rect2) var back_rect : Rect2 +export(Rect2) var right_rect : Rect2 +export(Rect2) var left_rect : Rect2 + +func get_index(facing : int) -> Rect2: + if facing == CharacterSkeleton2D.CharacterFacing.FACING_FRONT: + return front_rect + if facing == CharacterSkeleton2D.CharacterFacing.FACING_BACK: + return back_rect + if facing == CharacterSkeleton2D.CharacterFacing.FACING_RIGHT: + return right_rect + if facing == CharacterSkeleton2D.CharacterFacing.FACING_LEFT: + return left_rect + + return front_rect diff --git a/game/scripts/item_visuals/ItemVisual2D.gd b/game/scripts/item_visuals/ItemVisual2D.gd new file mode 100644 index 0000000..6ce8cdb --- /dev/null +++ b/game/scripts/item_visuals/ItemVisual2D.gd @@ -0,0 +1,4 @@ +extends ItemVisual +class_name ItemVisual2D + +export(Array, ItemVisualEntry) var entries : Array diff --git a/game/scripts/item_visuals/ItemVisualEntry2D.gd b/game/scripts/item_visuals/ItemVisualEntry2D.gd new file mode 100644 index 0000000..1b564a8 --- /dev/null +++ b/game/scripts/item_visuals/ItemVisualEntry2D.gd @@ -0,0 +1,8 @@ +tool +extends ItemVisualEntry +class_name ItemVisualEntry2D + +export (Texture) var front_texture : Texture +export (Texture) var back_texture : Texture +export (Texture) var left_texture : Texture +export (Texture) var right_texture : Texture diff --git a/game/test_iso_size/SizeTestTileSetScene.tscn b/game/test_iso_size/SizeTestTileSetScene.tscn new file mode 100644 index 0000000..3f783f2 --- /dev/null +++ b/game/test_iso_size/SizeTestTileSetScene.tscn @@ -0,0 +1,94 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://test_iso_size/tiles.png" type="Texture" id=1] + +[sub_resource type="NavigationPolygon" id=1] +vertices = PoolVector2Array( -23, 0, 0, -11, 23, 0, 0, 11 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] +outlines = [ PoolVector2Array( -23, 0, 0, -11, 23, 0, 0, 11 ) ] + +[sub_resource type="NavigationPolygon" id=2] +vertices = PoolVector2Array( 1, -1, -43, -23, -1, -44, 43, -22, 35.4934, -18.1594 ) +polygons = [ PoolIntArray( 0, 1, 2, 3, 4 ) ] +outlines = [ PoolVector2Array( 1, -1, -43, -23, -1, -44, 43, -22, 35.4934, -18.1594 ) ] + +[node name="Node2D" type="Node2D"] + +[node name="BigGrass" type="Sprite" parent="."] +position = Vector2( 93, 40 ) +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -22.5, -24 ) +region_enabled = true +region_rect = Rect2( 35, 234, 45, 35 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="BigGrass"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="BigGrass/StaticBody2D"] +polygon = PoolVector2Array( 0, 11, -23, 0, 0, -11, 23, 0 ) + +[node name="BigGrassWalkable" type="Sprite" parent="."] +position = Vector2( 28, 49 ) +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -22.5, -11 ) +region_enabled = true +region_rect = Rect2( 36, 25, 45, 35 ) + +[node name="NavigationPolygonInstance2" type="NavigationPolygonInstance" parent="BigGrassWalkable"] +navpoly = SubResource( 1 ) + +[node name="Small grass" type="Sprite" parent="."] +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -22.5, -11 ) +region_enabled = true +region_rect = Rect2( 20, 191, 45, 22 ) + +[node name="NavigationPolygonInstance" type="NavigationPolygonInstance" parent="Small grass"] +navpoly = SubResource( 1 ) + +[node name="isometric_0004" type="Sprite" parent="."] +position = Vector2( -79.7553, 87.2112 ) +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -44.5, -22.5 ) +region_enabled = true +region_rect = Rect2( 76, 103, 89, 58 ) + +[node name="isometric_0001" type="Sprite" parent="."] +position = Vector2( 258, 49 ) +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -43, -44 ) +region_enabled = true +region_rect = Rect2( 132, 14, 86, 65 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="isometric_0001"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="isometric_0001/StaticBody2D"] +polygon = PoolVector2Array( -43, 0, 0, 21, 43, 0, 0, -22 ) + +[node name="NavigationPolygonInstance" type="NavigationPolygonInstance" parent="isometric_0001"] +navpoly = SubResource( 2 ) + +[node name="isometric_0003" type="Sprite" parent="."] +position = Vector2( 157, 151 ) +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -43, -44 ) +region_enabled = true +region_rect = Rect2( 132, 14, 86, 65 ) + +[node name="isometric_0002" type="Sprite" parent="."] +position = Vector2( 129.235, -28.4679 ) +texture = ExtResource( 1 ) +centered = false +offset = Vector2( -10, -65 ) +region_enabled = true +region_rect = Rect2( 33, 98, 23, 76 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="isometric_0002"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="isometric_0002/StaticBody2D"] +polygon = PoolVector2Array( -10, 0, 12, 11, 16, 8, -6, -2 ) diff --git a/game/test_iso_size/char_t1_outline_split.aseprite b/game/test_iso_size/char_t1_outline_split.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..42ca6576320424a56b0a3553f8bba741c9113712 GIT binary patch literal 1194 zcmcJNe^8QV9Kc@{vd-yhYox2LSBr3TDe9(Us7$WB6l8FNdEu`hMI?)Lw_?>(RQx#yqH=XvjK z$05j_@BNSu;Xx5U1VQp)y&5?49sX}a2LIAL{)H6}76Pn5^uNkq;WP|Ifxg-B^7V>d z1c^Z31#XW_1Y*<};PGr4aH?!G&~_RF&Y4ueXHVjRO2@}Qp^*YiXcYmOh0(xF<|bfl zA{9ud?*~%2HNf4XyFk9$3(Ot84;-0%4)nqxh`OT(SSM)!77B$xc6KJPg3$=n#l`|{ zIeg&FLzjTZ<>|o2Qi@jyx4`+nI|>`P1l$1fp&i1Z8j_(GVxbf=p%DV14$`0tqM!(J zd@WutR6qjwK@Minf)j*b1Jwqf2@L@LJCJ|`A{lvNK{*<8#veiODDvVL@WTG(Bq4O< z;7O;VFC7=Na?p(u8rGddr9(C7@(31-y`tvZ0XAnvPUF`+B8&AD7f(n&%)1x#MNy%1 z?KUhtT%B=Y7^82tJu~fnKvj>H#wky|#@{ooazsh04I7=}iuad^lIdi#d6ce+O3%`> zXDrpOgwHCY6fN?t(Q@6Dt9J8q*;Hgx?p#M2|LHAa&)?o&k3iB*duOzK>w9Sv;~i=D z7X5p;1%K$j6Q}g6R=PuPRD7ivhhU4-76ls~dzSbc#aNk$7lP%Hf3Oy7$Cs0(?1UQ$ zYcQ!eu(aK>%kSb4|GZ|PZCCzO{I%K1OI^n4FpA3Z%a?*3#c#?EOm&Lrq}7u~PkKQ} z(2){Nz!v@RBKVUriZKWROP*WYf6Xu<#MGqOx zVYIaeDQs3vbcTQirvG8bAmRzNN#xiC{!EW{l;W}FgD*}Xq^xr z?JCg{%dz^!cmbh+Ikzb@hOG3-){QG-&;-7-T^m104lM&N(sy%gB z_rNYooSpCF;WTHyITWC1smcj=skxYgV@MxC3=PI= zZ`QIk+K;T*iTQe&b-L)uS0iqQYkQrtYsSzyTjd&`N#tLjVU!@0qma?wj6kX1-VR|9#U-wun3&#-xKwNlZj$S0;UHZ{#iAZl$29cyw!0i}a`@%=V{YDV2b=!U()y=!1=e5`4MXg`aOj zaOZgf2ImeO-m1V{c@XAvz0ggkU?x+Aj<*h{Dv!{wYdC%N1TXKtpr%CX$ER>(Z4;J* z08SS2aA`DzN3IJSMIYX*p26Do7!2nf9WX_k`R|GchF}8paYr0$l<`FtQ#5fz5IfZH zLJA{vjEmM-pg=z1Boj*}fus=?H%Y1${uT;i%lOR7+@eYh@M5WGOLHiqGRIf4F%}28J29*~C-V}>vG;Uw43U_+ zb%G%ug968qsw4mFCDnQ3R0=l=%cL?eo@8EZHuHJkl2~{3O0l_5ing?U^jve@GFwdU fjtaxaA0If=-wF!9Ik|E_&?p8^S3j3^P6J literal 0 HcmV?d00001 diff --git a/game/test_iso_size/lighttext.png.import b/game/test_iso_size/lighttext.png.import new file mode 100644 index 0000000..8d1644c --- /dev/null +++ b/game/test_iso_size/lighttext.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lighttext.png-00ed5f4e76e6a4bb9f52c4bb11f9c08d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://test_iso_size/lighttext.png" +dest_files=[ "res://.import/lighttext.png-00ed5f4e76e6a4bb9f52c4bb11f9c08d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/test_iso_size/test.aseprite b/game/test_iso_size/test.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..0a27cc4bad7b46a7beb7ad68e05b835032ef43e1 GIT binary patch literal 1331 zcmcJLc}&x17{_0Pij%mCj6+SNq1=Ln;)DX@kYfv=V>sw4N99oFuN$m@zzTu^kpy&z z0v*SIjUY)C9Ktw;r9(s(fkF`1l}gJBRJNsZl&gidd+K6L_Wz#b{k(6U_f5W^=XJv& zG~29)t{^`|KzazFBv@|?db;NSRviWisa9~WQ$Yop!7?QLH*y-f2MGkAt}OrE-cpN@ z72!BA$le=xf#M1*i}C_Wn6^M+;|1WW!5ZN9>Iq==LO2lXcLBOrqyR%Nl7JDR)J(GOD zGXaU(#^z(9Q>m9CC4UY7exDLPy2gF()iPe~^UR3qaNtlRez81#-y;6wS3*xO)>L8K z2Wf4%%RAYk+Se!b+}c7!TO8-hR@Qusk!q>Cd-`GK50Pfc36j!nl240W*h|uFxzmq4 z#u0tHGmMx77Vek)K`iO%z1W{}j*ZDile~;JJ3LpZJl0o(RcXg_w9A~l%lRD@*vOn! zT{V~9$$P+yYD&&Jp%N^K*cuvSrh8F`i^w^6c~c>%71zw{NIN-Ko%oNw=(ZS; zRIk!J1O+PY5N~)g&+Ws>24+>gXG2lCv!{aXO&_Zmf7EM6+}d7IzW?CthI^%ARvD(+ zmM({6Y3`)eJ2kKwjg<}-eJrMDWH9;VfP!Ys5Y*1eZCc+I&%|aF2yW_>byhCl$WzDY z6MNPQBFu9J7ELEPR<|fd9Wz!#^ft+8`5Jp8t15SQWAEOv^(#xos&;x$gTg#tES6;O z?M0?fGx4sPI~&DMj0xjZ8O_?hsGgA^n+n$b-`?|m#h>g%K2B$h)=mE^eK?YPT8_U# zB&<>?EZ205SgH_9+SNhAepT+_eqO0&!sCEgi7lmeYi@0umL;zXxV9@tyYh!M*jh;J zCja{qpSzt>rZL}S>+e6UCpcZhLmqf3iO`c}!m%x39(hd1w9-v(HY0pAS|GWpnc@cX nsSHhox>ebG&7L3FMVej9x*w`;mVKn^Z9k_LZ&@P87v}!}35qmv literal 0 HcmV?d00001 diff --git a/game/test_iso_size/test_char_02.aseprite b/game/test_iso_size/test_char_02.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..9f61ee3813b171deb75edaa7809cd768b5b21db7 GIT binary patch literal 868 zcmcJMT}YE*7=~XflS(u^s8(}+NNAAhCYqZ+S(*~MsTew(qY`z)S(}SZt4UU~Rw`N| zhHha*qLCTcK}*EH(Mjt1v9PJ=a?UAHa~c(DeBDb(=)4==>-~66?(6y9g3W|jTRq4X za+FZSgAh`Hvk}bP!~d4qO@yqtJpZ(MqGcD37xi!DIHnAW0^JE%zcxq{5=cdWNe5y< z36BHTWygTi${^5kUjlwLHG`{5hruR$1}N)ggHa7~FtsQQ%uL-6hR5>2_;?k_K64Gs zm45>B^)z^TWELEnSOaN<5dD+qVC7{USR|8yIoX+DX+jm)5gra&g!$l@rW>rgn*vrT z*t85=Y;pg03LjVk8$ciK5QjCC;R{)qLKBVcOHyx<~3m-pwGqd?pdv{EKUa~r^Rb1x99bV(M`I&26l3pIW-k(Gt1u%NUc z006>f=gwFI02I800&qU?XY*bU0{|co?qIQ2W>~C(Ux4qeJ9lpafXcIoXU6B6(K0Qr z-JWOFM1oZ&6SEB+5EA}9YU0_L0trW)X3eJ1YpLhrlBSK7X zf1GvDGcj(8xZ~G*ej~(?9k~!1kbUXqYYAx{?NQy6@86}im;EzwB?f_oL2GZ`I`r{* z@tyJAL!?m6~Z@)3+go=t{vCIR+*FmQzO-ql- zk^PZ1>Z?BrUj6*B-}F(7HUBZ$AK&x-b;?ZUiq4z$*mR28oW?K5%2vmn>ElntH)sAX z?Uum^3fafN_6vFzWC>9pl5rsVxol$go)=Hn6#glNe zXMc5WP3p@xqwh(2^vTXK2mD_vqgM}o?i%Ji<FR zaM!6*5(5BoU1n!a+uloG9z_vHFTYkEw|Qx6M;Q9^T`ko@{Lp!$*YA`^+?0&c%=?0K zIyxWo>86^q4kdrqX~@$1m?Lm>#KLgM?ZD|vJVKUMul5n8Z@%~x@}NugP5Y5hGZ&7* zsrzybe)E0o=JxQ%6VlX(fh(= zn6rLwXBgKbfW?sG^dfPn?d}nvxW93{%o>i^g#yKvw7tvm2mJO#i;_rLNbPFWN5lN% z$dz0AWG3S&P1DJ5Q;w@B7`421`lIxn)hntnm7eKF*IdMah`i>Ymk>uS7KlwX-jhAE z(fGW?WUtRH_n;`)fv&lqbz?4dZ-x(IgS_|`n5|twoax?$8$<~o6)EPzeQRy9e+`$@()cR||sI860@>GKdW6MC*>-<6!d_lp{9~Kyo;nwA=p-?RYQ?KrQbxk!3Nh{S*H={$R|Q65u&KtKYztGfQ+ABZ>)dHMEX z`kIXA)?Dqig{GYtzCjp1nMr+xQIJ0y0hougdhs-u(U_!s;1$ zBj>GJ+8vc=kY4{Tys|z2__1@hOC&ry*b-%T1vsO-`tzj-N9LBka>rtLh4AAy71fMU zjrqSYcD2wA$C>jMJbzpuRs!tSP~b%Z+D6NbhuhZGC_kg!Y!K>AO*-*(Xo0payDUwQ z$P6(Thi=&SelHQqG6~=H4rj%!RL=mUd)-Nytl2Xr|5Xw20F)S55*#aL0=WIkXpX3LG3PJj4{6S zYq?gNt=BAJPV7&by5V5nTg7nN{=Tyk;&v`;x!io`@dP<`1FkOXnETT&;XE@#{IB-r z-Iuy^hm7Jn_e)Wlb0xD1@1%3b=F*pP^P@&?LfvqpT({G!8)o{UjDqb*aK7Nby+_EQ zp|TkG1kp94V?7Le^i;`Dz2jxg8@ZCvg}uCZM)irUfVp~?=Qj5#UsP@#K9#>DNT>x0 zhu>03CD~FQf(*}RRw0>)ru;yGQ|wLJX6RJK%g_Gu*6`GcFUL!<6&1DP#J*W?n4|J$Ik$ zjv_xJB7}YSzT1tNxqaiVp2)Vu{;TbNEzbEG$0i1^ z%#jwWCy;(NSFVWCp!9j_o8?Ms5yUpcgn*4>+UYH=ZRLCd%#67chNLb1o{wd}h@L4W z*-Dx{T8*wb5x&-jHJraD*Q*tg7E`GE?4NX&T z2V;Rb;_w{gRE@q6K9sF^)n$xh#5Ra|+05^C6yCSIhBB+yOSxU0#O8Ex*?uA6xWSCO zOj`M+gg_WW?tziTwpm&+h z44Pt7j(5-=^3;Q_{`#R51|AZ=opSs3#6pVwy;ENn^*{Z*G+tjL7=@e|!%ZpBKPGR< z;hp|5H^?q~hspB%g{$qwD3J7amx?x=4YxBM;zpRCiApO@3>hx z+su<=F4o~8#fpTZ1~^z@-agLrdZm-?N9h+thI6NDEvipwC(eWdk?bPN@IkG_DXpE9 z6dJ9`&`y#AnqXojmAw$rMYU^2Mf^y5{E@UuY)7~nIsdW-_lPk@p2B0N@BLsU-Yg8~ zQi>&44DR7fQompRrIdIRXJafj&hUn#*p%k*<(=BPwFP$Bo)2>;8=d{~d0VLXQ!$#$ zV(&VVOmt0rYcI|b+lN0c4nfX6SQ)(1yt9z91eY-=BKI?q%i$-o?{3p=YF6F{znEH| z`+U*-{4)Fo`&O-tm_0jWl)Wf2$84tr?&hDx!mEi-r?_kW<(=m;Nj<`h9xPx!s}6hl z2c67_I5aqUfVJR)H$QE6yKUyU_nViO;Wvy0G<~$Yt>P803UdpjIlYf!{10+xZZ0W& zp@xru8`d;PQ38>XWq47rsXx+E!M|3lSEI*$9l67GhbR5#r@_cm>Ogrk2y(Wo_Wo z2-feudQ+a|g?cAvp{Vkmfc}HF5nBRujnZzd;cg-g>LtT-rMfoEl$ZY?(0d(Sz*-v{mS!A zE6t9T;oVp$L{QOyExg0>%zG=2jL9kQ2ykv`b%x6^bQu9XvG<);jgaJ1UTUz{$g{?_ z{S=Yq=hO8j*wkBZd^G59kMNWYwU(wGwp#FKQ9Pxg_Jv#I7{wNgxVcSZqhcI9tF0W% z6X+5jcC7D%g=i%sEm<38^)=0-OE<&&!3Z+tEo4^rZ1xnXZ!in0aKe;;e8`7?2iU*T z{&DvS^H32&>ZE;t*V9$!#pMF1f?77>n|IZHpZ1eq%NylYfr0c9L#TlyBpUzWk|4q3 zX)IdcbXr<@G)nC~pmJSIq5E*)^BW_YmO7_>-#@}1eLj1$v@LpVmy$Y?;xZfZNQp1t z6->X+aCBk1zVvRf)bv0C+W8!@m-B{6bpAuU)gyxLeQgN65ClCxZ}Oy$;%aBjudwI^ zNi3^f)ZY9Z+**y?`585ydATyxXj?EjBtPKI{1-Y_L*i>qDX}y`fKw|Qr<%a`{i(3j z+iy1$(B1MCSjOdS8-BOq3zy2?D|KE`4c~BnQcj`XK77fVKkFa8(PZOnVf9~y7wb$fPK&WF zneh_d0;w(Kroul?uO=;o^`OnJr6r9-lg|hOw|XlPse!(ht0^~^Xcjh#hzF?ZRoC#- zN9c3z&6J#%OK>=6sYe8|DZKffNVO2fURCo*yERj$!|HB}GZ5y{(ZH(wW%T&ofnsWU zEMdH(4;jORBsTwx+;(*XR`_w_f^WsvgFn_1~kOTEl;YsxFkqHVi2DIoQz4yq}Q2juYd*AuP_W&gBp2{mX$N4vi+;n@U2pz7XdH_v!nx)C8kEC9f5iHkCJ$ zdv@iU_}0tmdgmO51R;&&L#7f?8|V1icCXTG#6JnLd8y1J#*`uJRnxT4x5L1 z%O9EuB{pzaBl+xQnT8VcgP{A6iqV9Kx6VNxNG!NaqJ)5zub-l32qdxI2fhsMl5zzG zGPH$+)gAYp2C>mIi9O0Qv@BRXz`TCCDptB~D^Ai(YLW$OJAl5)YF=h^RRa6bOutNPbmtm8J0@u&y zAOSqX04hH&#iBjG2l749si7$i(|+7sgS0gG<{$vUlfyR}Ylhg-_=t)nz;+&#bf`q> zgLWg?rAP%h0v3dO2SdYSwE9T*H>V>nJAuBxUv;>j6_)`0<8>^y zA#ohkgitKJ0^g@02E*^h{{d`YjP2JKXOXVxO-#?fbs=}}ClvqG)mETaD?Jvyw6WXjI z(8M^n_AIbR7zu-+iqrrX&Th);4DHuTmnUso0-X9NlVl7~(N}{&u+BJ00=*5#jahRt zQ)S)SrxM3XK_zv-Rb>{c*TbDMVFThUXUgL6lQkLdJvD-cCw*TSJA?q|Lp+Fh55N3u zya$nEZwO7)!KY|j1L|%Im$}(~nK?>X2*6&Fx8cc4xhdZqr4NQfwGF@HRe%7Lp+f&S zF$i|qT@nM|v%Al|ovk$bXhlYpOT~akvY~)qyv?>;IMrR|;}^lGw-9oY2Bg| z%fCeQ|Nhr922KLuL0uCnX88KVlzZ?sd@0b7p}sBFHwKXk`#zTbv+|1}G@S8?VI;wC z2t_BU>k69lHb^Bg^V9(t_nxi`eA8zuuCq+a3J%yg+}+pL2l+ERD{o{)0*}i}a~YEc zi#}9)MNJhtF&hEo6wd-O(j-^UyC|@r^PZwc+*%Lm-As4?(%02adbSIBK%o?zoRP7@as7ddx;v|bh(fgI5g4a05 zcw4g=Qz@fmWarASs^LVf-t~iW3`O40G4_KjYMexDc?7PwMr0X~A?vu8#d zZN~^*2xV1Ezaua`b$TKF}Y3PvE{eRF}*tl z`COCDRFj>u`aVT$#$lB>sM`@-EZQkG;ZT)#NB5jgtK(SJxTvDIJm-CVEP9LMO`IRn zLa@+qK|&i&R$7XgT<0DH3C;K;btY@M70zyl9Kpjw69GI-UKUHv5D)Yfmo02d4OIRSJQ<*yNCo)Q_K_ z>i#m`EQnIQwZ0QkQrd{e;g~wZVI(q9F}5MubRRIIS_r_e)vR%A6Ca~O1nTQeg+G~L z@$rxOwg#sxA1g2xt@ngJ{5JV1bIp@r^JLW0U#H==>l?ic4e#Q*(e#IWIR=jG4*cg| zlST$Pqp6KoL%K2qGRU7gfP!Z&@{A!Qzla0jeO*~d-O^`wO~b21J$zi)2a`dD{G>6HY836<6zEadiUIw*B|KI-lvli>^VYUK`&mhz#`iyf88oqts+(9=Yy=p% z_Jv$@wp2;xgx`%QbwWgsXPV6=5XSi#-)n&Z3_bs0x`XC|lLENfLTxZS%1fy|e%jg> z2fW^_>qGZj$#!H zBkxf%M6*5v1ZIUWrCbog3jiZ25&CjYa1{U;ukVeS>cpVIJ9bKtGR%We5Ym74t(+K` z5^E}oAOe~%dgG?D|1&`1K!SNJ0YvvJ$B;5b|Gv_lZUNrWT$=-m{woZG=G4KK?I}fg_Ow#!X$ZWY#NHCv3Qf8kbd(}juzd0yqaCC z1OV)t5*hyu7>f`9VWk58v+6Q;)P-A=hA^S_9)zjJ0)Wi6Uz;Q@n#btCvbbFdQFBc&_ZGHeK z>geq;KSz^~69Wj3I(RxO4B~R?X*%u+)Q4e_H*#3>UW`*Bz9p)+h>Os*A;k z$D* zIp~=x^y+T=66Jx~_7mD54aIo=A-e*9at6>B_ne|>j)aIb5t!I;{=C~vjgO!LooD?|-`n#bFr&*;NBJUq z=SY6*Y26469IW7MMwt8rWV}EFnCwZTMQM#hy;DHL%VLwwm2J9L6BjJCtaeBsoc1(= z#REXq^~$IaP+0%KEb2K1Aas==|A4Fkz7@`X@KqpMLJ$I+uY67L^4i+*U*EjM4D1o- z*=tLR_#kUkQ})wYtFsewjwTuXmJd)dt%?e!>2qww2KaaWVA(eskVLPr($S*B&Jf_T z1_|LM$f;{saR9XM7@p5s=B(9&&=RahKR7z@+7G*MwN9fp4Mav=_X7=%dlk*Q`Utk- zeI^6DOzSeHeV&u!QtdL0*$9&i^AEE)iwqM%YCQ)5Vyw}{Er^07SO)*b?^2gz(fiij z4WVEPKHD<3arr1;UL%(+DauFI1=Ka#p$eXhaP9daiF1$RJ{5S7e5F}?Qb1I<<){mM zYXL#A!WKBZ3FU0O4=+p}VS~8w3T$L}vDDzcZ!wn7U2*Ma`=TFPH)eyvB$GkT*+iLv z5h~kCc~<-NnAwiYz~(ai40cxN)6+HXB5G+L&)y0p0Ow}*N~F0mZI{JqgvH(3pv;-a z$zFdhhxK z#QJ&!e4^@bXPysqEHjdX??I2kn(`h+fV6H$Fg{Np6058TMO##;0hrIDA32=I{7*N4 zdXTlbz~x^*a(y!(iD4qJ_b+bgECwyx0%)I#V*qDM-sIVkW zT({PGhr9YYAWxLPDgu17yUg3LAzx~V`7GN`yzY0UnPsJj*kMdfbX*@F3Y!Hxk;X&(_RXE z-d$O4`x)Z91J&i@ZVj)5b9=ktJ9Zk-J(oMhJ-y0f^$U>a%z$s@m7PgadP4Pk z_#eY=SFrPSu@IqWPczOg)g;z0Oor20$Eu~|o{bvk&$0z`ogAC9Hku6qvF5!9_|Lh0 z|D44*r6_1XksZHQR^&;dfK|?tkQvyQb<*gqKhTl2!I%kf~Jg)Zk z@7$k%e5;)Qa%Xqf7?Z>TjQJg9NNF_qvrMt?P^H3eOi3vkF^#hNP3ZqF?Cml2#as98 z+_`=C5xP<1=$!|*Z$7&H{`^<_k3N{c`_rFYSBnc>_wU@?yM1x*!T$TIqj$q>J$&@Z zhqvbs?|r!c{`t;Uxp(W{hxZ=Lw*oFc*n98heCN_m_sQl#XDr4QnkM8b2n(yDe^}+3j8h@`WAKrd+?4U+JUscz9b*SR7 z@N4{eL5bq=zn7w$|M=#uU+g`&_tD)DLbd6aQS>k6DW@g>=rMo!*QBUkLzkiq%$WuG zr3JaOAkP=%d_nFm$h`%5fGm4QzczwwYyOQW19Mig=LgppZ*_`nB0rD(qULH1v+ANgkKBp8 z7I{7LM&$j-$B|EJ8gr2S$t2lTlVxw1PIlRJvmNBbq}e5t!$x+&jIwPr&bFxcrk`yZ z8@NIL2K~>PLv~w-x*R#7ZYh+r%po~3t!#s_4cb%V>0^-xP~&^B8`{n?cZ0SK z?+9xC1bK{&6soNk+MFQ$?IA;shHNajJ+@MVu<)R1v2@;#3i*ia1roiMkv) zp>8P@))PpaD&mBkSHy`v7I^?Qz6ZOZjW|I|Uk5c-eMeC9C&*)Lq)=_WAQLC#Jjlce zwkXY@6Q^UDI3XvYo;V%L#3|Gfr$FKqNSs0+;#8UHI8Kf@IpXAqlOs-!I62}38;&?R z;^c^vBTkMu1rjGmoE&j-#EH5bIiYST6xI_+oE&jN&K+^0k3}9pjqky3Xd_P0($_(a zRo@ZR{0Z_H8!1#%f-Ooj=)~z*CQisns3%UxGI0uZ#3_(C1rn#whd4Ro z>NtI35>K2waq`5;@0h;7WSl2Hp7{7JGxeKh#h*1Zziw8)bO#&y=~gro9v+1*|o2++jeQw4&Mp8Q9ImcuZA6*K<(%h zYL{nFJJdp*2HIKbqg||%BVmp{`XH90zRm2AYg?maO;%-HUdS7H)yNK#AJ%?W_*vm+ zg`X9ER`^-rXN8|+WX|r?ZqN?%6@J15YDc9|yDWp+6&7kY*4d7qjH`D6e$qCG<*0A7 zIy6-nC2O)O>+(Y0$g4(m?5D#|ho25V9ez6ebolA;lZ?pO9m+;!xOeyo6R3<%p|U)K z%1R5h8|rMsPsY_*h@Z3#Vma#Dbce=;QL-khvMw*=jl62O+D~H|9zQ*Pdi?bG>G9L! zr{6UL|0-Fd%=vaj<1}9LXg2Tjnxo2kC8MBtH znKRkUoXu83Hmzh|(uV|_hNF6w?yYPbj{Ws)WLD5enKPRtUMuUHm(g?TPeEM|dDb!W z(8n^Z`etSwE@v(JHp100=9)SzjX9Au!@SayQVH!z$7bM!x|F&$V}{gE(KGa2XyF!h zi4q#UgT75akK9G>aV5@>`^e{^gXiD~Zon~|(5HhuMLrFalKILcj9J518|7KXyk%-$ zqTdubL0&`FwV5K%k#((R$Qg6Y&~@$FsB4@yZ71rMKC-Wk+odi=m;V#&X?#|;OcSnC z24&l91}-6cGb|5HiIkhuj2M(Xyj4vPP4g_31LV}?$eN>54q1E4w2t+V5DS-VpUYL- zvcttXPbNmk=xXX6Z)jowHY%+pQ2~zyU@Zd z>JptC=pFQJ`g!Coa*y}J47rbd9y)jqj^G9y!wG#l$W!FgFe#X?AR*A#@YP0nrg;kz zg8C_Pg1m;T_d$w0N7nlxL(Z6EhOX1mMqT4{I(DLN=_C6Jb(gvnUH(t7r}0@qLcn#( zpdcXvNeDPB4o!hXLNH=bkPxA!ho*U!3KD`jb7alYDM$$BYaQz$Ar@W}eO?hd|2n)N zro0?xj)ZU|gd-sw3Bmce;=bg@=g1@>=(> z2z^M1KoSBjI}(C1dJK$tcpUO+cfyenQBN#EL~c_jPUw?T*JjKReTtr;??MZ=s7rK2 zqj%7^>F1HV$UPoPGvq$7i+!B}+muXO65nI+lcBzSgmR(EP(!o=ti(>A9q*(#(?# zo@DSOgI_V5ermS-*lhcex!|3-SL(|b;`G)KBktSPWc?_Y1V@}sotg&K^d_avkY#Ie? zgiWXqofg!=)rR^IT7o*ba;Rrr59;6=z!VOl4y|RVC*7oAjp1Oa=j_M#mZ*Yvki+%>HRu)(D$WA1N)U zz1W8Oh*^T#i#gPjum`ml2T;$vA=ExxhI$T8ENcvVrJl2gtT|S`q3Dd#JlbzVi(i&C zTGnV;qh*bjHMXAp&nM#0vqsMvJ!|ym%t^oT!paJ}eaeT;n4Lf3!$wcjJ|8v*#Nb7i zW!_Kq+eKO5Dktm^y@O8hP7_bE3&d4+g7`AKK|B@SIBn#9c_!?%E<2}#-eK41&1Km& z_512_cq^qPpN!NeC7+C?DG$28<$t4R@nTdywhFAnL4ox^tOsH}5bJ?hhiyu~z&h-b z(;e6$pLM}o^0~guv5uY=Scgf0^}-a(*FVADWAP*}UQ>=Da^)&iRvO!>^ik|FSvlPjTv> z2_L)q(A7t-K5!R4Zo5Ax&R2*rpS$H-#FtOr^837-5Bh&02DGr=te}PUCIu};XtA{5 zOJ-@om&DRy)zS^~(;7aYX$>FIwEBbo!3)j67n$AP&HZ9ekMH99|HYR#1OGd%5`K^Q LtD@hvSj>L_QuUQ! literal 0 HcmV?d00001