From a78a801157c9b0f3df7332d5e6fa975437d1a3a7 Mon Sep 17 00:00:00 2001 From: jkboy Date: Sat, 10 May 2025 23:19:52 +0800 Subject: [PATCH] first update. --- .gitattributes | 2 + .gitignore | 3 + Autoload/time_screen_controller.gd | 87 ++ Autoload/time_screen_controller.gd.uid | 1 + Char/Char_Components/After_Image/aft4F5C.tmp | 6 + .../After_Image/after_image.tscn | 65 ++ .../After_Image/after_image_component.gd | 175 +++ .../After_Image/after_image_component.gd.uid | 1 + .../After_Image/after_image_component.tscn | 6 + .../After_Image/player_dash.gdshader | 78 ++ .../After_Image/player_dash.gdshader.uid | 1 + .../Blood/Art/blood_stain_1.png | Bin 0 -> 14756 bytes .../Blood/Art/blood_stain_1.png.import | 34 + .../Blood/Art/blood_stain_1_01.tscn | 9 + .../Blood/Art/blood_stain_1_02.tscn | 8 + .../Blood/Art/blood_stain_1_03.tscn | 8 + .../Blood/Art/blood_stain_1_04.tscn | 8 + .../Blood/Art/blood_stain_1_05.tscn | 8 + .../Blood/Art/blood_stain_1_06.tscn | 8 + .../Blood/Art/blood_stain_1_07.tscn | 8 + .../Blood/Art/blood_stain_2.png | Bin 0 -> 1242 bytes .../Blood/Art/blood_stain_2.png.import | 34 + .../Blood/Art/blood_stain_2_01.tscn | 8 + .../Blood/Art/blood_stain_2_02.tscn | 8 + .../Blood/Art/blood_stain_2_03.tscn | 8 + .../Blood/Art/blood_stain_2_04.tscn | 8 + .../Blood/Art/blood_stain_2_05.tscn | 8 + .../Blood/Art/blood_stain_2_06.tscn | 8 + .../Blood/Art/blood_stain_2_07.tscn | 8 + .../Blood/Art/blood_stain_2_08.tscn | 8 + .../Blood/Art/blood_stain_2_09.tscn | 8 + .../Blood/Art/blood_stain_2_10.tscn | 8 + .../Blood/Art/blood_stain_2_11.tscn | 8 + .../Blood/Art/blood_stain_2_12.tscn | 8 + .../Blood/Art/spr_blood2_0.png | Bin 0 -> 218 bytes .../Blood/Art/spr_blood2_0.png.import | 34 + .../Blood/Art/spr_blood2_1.png | Bin 0 -> 262 bytes .../Blood/Art/spr_blood2_1.png.import | 34 + .../Blood/Art/spr_blood2_2.png | Bin 0 -> 277 bytes .../Blood/Art/spr_blood2_2.png.import | 34 + .../Blood/Art/spr_blood2_3.png | Bin 0 -> 279 bytes .../Blood/Art/spr_blood2_3.png.import | 34 + .../Blood/Art/spr_blood2_4.png | Bin 0 -> 280 bytes .../Blood/Art/spr_blood2_4.png.import | 34 + .../Blood/Art/spr_blood2_5.png | Bin 0 -> 245 bytes .../Blood/Art/spr_blood2_5.png.import | 34 + .../Blood/Art/spr_blood3_0.png | Bin 0 -> 219 bytes .../Blood/Art/spr_blood3_0.png.import | 34 + .../Blood/Art/spr_blood3_1.png | Bin 0 -> 262 bytes .../Blood/Art/spr_blood3_1.png.import | 34 + .../Blood/Art/spr_blood3_2.png | Bin 0 -> 276 bytes .../Blood/Art/spr_blood3_2.png.import | 34 + .../Blood/Art/spr_blood3_3.png | Bin 0 -> 265 bytes .../Blood/Art/spr_blood3_3.png.import | 34 + .../Blood/Art/spr_blood3_4.png | Bin 0 -> 263 bytes .../Blood/Art/spr_blood3_4.png.import | 34 + .../Blood/Art/spr_blood3_5.png | Bin 0 -> 227 bytes .../Blood/Art/spr_blood3_5.png.import | 34 + Char/Char_Components/Blood/Blood_Component.gd | 283 +++++ .../Blood/Blood_Component.gd.uid | 1 + .../Blood/Blood_Component.tscn | 136 +++ .../Char_Components/Blood/blood_mask.gdshader | 12 + .../Blood/blood_mask.gdshader.uid | 1 + Char/Char_Components/Blood/blood_part.gd | 113 ++ Char/Char_Components/Blood/blood_part.gd.uid | 1 + Char/Char_Components/Blood/blood_part.tscn | 194 +++ Char/Char_Components/Blood/blood_stain.gd | 147 +++ Char/Char_Components/Blood/blood_stain.gd.uid | 1 + Char/Char_Components/Blood/blood_stain.tscn | 16 + .../Floor_Wall_FX/Art/spr_dustcloud_0.png | Bin 0 -> 236 bytes .../Art/spr_dustcloud_0.png.import | 34 + .../Floor_Wall_FX/Art/spr_dustcloud_1.png | Bin 0 -> 255 bytes .../Art/spr_dustcloud_1.png.import | 34 + .../Floor_Wall_FX/Art/spr_dustcloud_2.png | Bin 0 -> 267 bytes .../Art/spr_dustcloud_2.png.import | 34 + .../Floor_Wall_FX/Art/spr_dustcloud_3.png | Bin 0 -> 285 bytes .../Art/spr_dustcloud_3.png.import | 34 + .../Floor_Wall_FX/Art/spr_dustcloud_4.png | Bin 0 -> 276 bytes .../Art/spr_dustcloud_4.png.import | 34 + .../Floor_Wall_FX/Art/spr_dustcloud_5.png | Bin 0 -> 239 bytes .../Art/spr_dustcloud_5.png.import | 34 + .../Floor_Wall_FX/Art/spr_dustcloud_6.png | Bin 0 -> 193 bytes .../Art/spr_dustcloud_6.png.import | 34 + .../Floor_Wall_FX/Art/spr_jumpcloud_0.png | Bin 0 -> 398 bytes .../Art/spr_jumpcloud_0.png.import | 34 + .../Floor_Wall_FX/Art/spr_jumpcloud_1.png | Bin 0 -> 431 bytes .../Art/spr_jumpcloud_1.png.import | 34 + .../Floor_Wall_FX/Art/spr_jumpcloud_2.png | Bin 0 -> 344 bytes .../Art/spr_jumpcloud_2.png.import | 34 + .../Floor_Wall_FX/Art/spr_jumpcloud_3.png | Bin 0 -> 181 bytes .../Art/spr_jumpcloud_3.png.import | 34 + .../Floor_Wall_FX/floor_dust.tscn | 304 +++++ .../Floor_Wall_FX/wall_jump_dust.tscn | 109 ++ Char/Char_Components/Petals_Leaves/Sakura.png | Bin 0 -> 152 bytes .../Petals_Leaves/Sakura.png.import | 34 + .../Petals_Leaves/Sakura_Component.tscn | 6 + .../Petals_Leaves/Sakura_Fall.tscn | 64 + .../Petals_Leaves/Sakura_Impulse.tscn | 14 + .../Petals_Leaves/sakura_component.gd | 62 + .../Petals_Leaves/sakura_component.gd.uid | 1 + .../Petals_Leaves/sakura_fall.gd | 51 + .../Petals_Leaves/sakura_fall.gd.uid | 1 + .../Petals_Leaves/sakura_impulse.gd | 68 ++ .../Petals_Leaves/sakura_impulse.gd.uid | 1 + Char/Char_Components/fx_component.gd | 60 + Char/Char_Components/fx_component.gd.uid | 1 + Char/Enemy/Art/1.png | Bin 0 -> 1096 bytes Char/Enemy/Art/1.png.import | 34 + Char/Enemy/Art/2.png | Bin 0 -> 1241 bytes Char/Enemy/Art/2.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtfly_0.png | Bin 0 -> 662 bytes .../Enemy_01/spr_shotgun_hurtfly_0.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtfly_1.png | Bin 0 -> 641 bytes .../Enemy_01/spr_shotgun_hurtfly_1.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_0.png | Bin 0 -> 605 bytes .../spr_shotgun_hurtground_0.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_1.png | Bin 0 -> 556 bytes .../spr_shotgun_hurtground_1.png.import | 34 + .../Enemy_01/spr_shotgun_hurtground_10.png | Bin 0 -> 448 bytes .../spr_shotgun_hurtground_10.png.import | 34 + .../Enemy_01/spr_shotgun_hurtground_11.png | Bin 0 -> 403 bytes .../spr_shotgun_hurtground_11.png.import | 34 + .../Enemy_01/spr_shotgun_hurtground_12.png | Bin 0 -> 384 bytes .../spr_shotgun_hurtground_12.png.import | 34 + .../Enemy_01/spr_shotgun_hurtground_13.png | Bin 0 -> 398 bytes .../spr_shotgun_hurtground_13.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_2.png | Bin 0 -> 494 bytes .../spr_shotgun_hurtground_2.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_3.png | Bin 0 -> 452 bytes .../spr_shotgun_hurtground_3.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_4.png | Bin 0 -> 446 bytes .../spr_shotgun_hurtground_4.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_5.png | Bin 0 -> 453 bytes .../spr_shotgun_hurtground_5.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_6.png | Bin 0 -> 457 bytes .../spr_shotgun_hurtground_6.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_7.png | Bin 0 -> 452 bytes .../spr_shotgun_hurtground_7.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_8.png | Bin 0 -> 456 bytes .../spr_shotgun_hurtground_8.png.import | 34 + .../Art/Enemy_01/spr_shotgun_hurtground_9.png | Bin 0 -> 462 bytes .../spr_shotgun_hurtground_9.png.import | 34 + .../Enemy/Art/Enemy_01/spr_shotgun_idle_0.png | Bin 0 -> 662 bytes .../Enemy_01/spr_shotgun_idle_0.png.import | 34 + .../Enemy/Art/Enemy_01/spr_shotgun_idle_1.png | Bin 0 -> 699 bytes .../Enemy_01/spr_shotgun_idle_1.png.import | 34 + .../Enemy/Art/Enemy_01/spr_shotgun_idle_2.png | Bin 0 -> 701 bytes .../Enemy_01/spr_shotgun_idle_2.png.import | 34 + .../Enemy/Art/Enemy_01/spr_shotgun_idle_3.png | Bin 0 -> 691 bytes .../Enemy_01/spr_shotgun_idle_3.png.import | 34 + .../Enemy/Art/Enemy_01/spr_shotgun_idle_4.png | Bin 0 -> 668 bytes .../Enemy_01/spr_shotgun_idle_4.png.import | 34 + .../Enemy/Art/Enemy_01/spr_shotgun_idle_5.png | Bin 0 -> 665 bytes .../Enemy_01/spr_shotgun_idle_5.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_0.png | Bin 0 -> 630 bytes .../spr_shotgun_stairfall_0.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_1.png | Bin 0 -> 702 bytes .../spr_shotgun_stairfall_1.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_10.png | Bin 0 -> 673 bytes .../spr_shotgun_stairfall_10.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_11.png | Bin 0 -> 669 bytes .../spr_shotgun_stairfall_11.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_2.png | Bin 0 -> 719 bytes .../spr_shotgun_stairfall_2.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_3.png | Bin 0 -> 747 bytes .../spr_shotgun_stairfall_3.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_4.png | Bin 0 -> 681 bytes .../spr_shotgun_stairfall_4.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_5.png | Bin 0 -> 651 bytes .../spr_shotgun_stairfall_5.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_6.png | Bin 0 -> 651 bytes .../spr_shotgun_stairfall_6.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_7.png | Bin 0 -> 672 bytes .../spr_shotgun_stairfall_7.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_8.png | Bin 0 -> 694 bytes .../spr_shotgun_stairfall_8.png.import | 34 + .../Art/Enemy_01/spr_shotgun_stairfall_9.png | Bin 0 -> 601 bytes .../spr_shotgun_stairfall_9.png.import | 34 + Char/Enemy/Enemy_01.tscn | 386 ++++++ Char/Enemy/Enemy_Base.gd | 44 + Char/Enemy/Enemy_Base.gd.uid | 1 + Char/Enemy/States/Enemy_Death.gd | 31 + Char/Enemy/States/Enemy_Death.gd.uid | 1 + Char/Enemy/States/Enemy_Hurt_Air.gd | 33 + Char/Enemy/States/Enemy_Hurt_Air.gd.uid | 1 + Char/Enemy/States/Enemy_Hurt_Begin.gd | 83 ++ Char/Enemy/States/Enemy_Hurt_Begin.gd.uid | 1 + Char/Enemy/States/Enemy_Hurt_Ground.gd | 48 + Char/Enemy/States/Enemy_Hurt_Ground.gd.uid | 1 + Char/Enemy/States/Enemy_Idle.gd | 21 + Char/Enemy/States/Enemy_Idle.gd.uid | 1 + Char/Enemy/States/Enemy_Slope_Fall.gd | 63 + Char/Enemy/States/Enemy_Slope_Fall.gd.uid | 1 + Char/Enemy/States/Enemy_State.gd | 108 ++ Char/Enemy/States/Enemy_State.gd.uid | 1 + Char/Enemy/States/Enemy_State_Machine.gd | 53 + Char/Enemy/States/Enemy_State_Machine.gd.uid | 1 + Char/Enemy/outline.gdshader | 33 + Char/Enemy/outline.gdshader.uid | 1 + .../Player/Dragon/Art/spr_dragon_attack_0.png | Bin 0 -> 736 bytes .../Dragon/Art/spr_dragon_attack_0.png.import | 34 + .../Player/Dragon/Art/spr_dragon_attack_1.png | Bin 0 -> 763 bytes .../Dragon/Art/spr_dragon_attack_1.png.import | 34 + .../Player/Dragon/Art/spr_dragon_attack_2.png | Bin 0 -> 695 bytes .../Dragon/Art/spr_dragon_attack_2.png.import | 34 + .../Player/Dragon/Art/spr_dragon_attack_3.png | Bin 0 -> 715 bytes .../Dragon/Art/spr_dragon_attack_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_fall_0.png | Bin 0 -> 767 bytes .../Dragon/Art/spr_dragon_fall_0.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_fall_1.png | Bin 0 -> 772 bytes .../Dragon/Art/spr_dragon_fall_1.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_fall_2.png | Bin 0 -> 762 bytes .../Dragon/Art/spr_dragon_fall_2.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_fall_3.png | Bin 0 -> 791 bytes .../Dragon/Art/spr_dragon_fall_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_0.png | Bin 0 -> 841 bytes .../Dragon/Art/spr_dragon_flip_0.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_1.png | Bin 0 -> 737 bytes .../Dragon/Art/spr_dragon_flip_1.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_2.png | Bin 0 -> 734 bytes .../Dragon/Art/spr_dragon_flip_2.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_3.png | Bin 0 -> 786 bytes .../Dragon/Art/spr_dragon_flip_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_4.png | Bin 0 -> 681 bytes .../Dragon/Art/spr_dragon_flip_4.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_5.png | Bin 0 -> 631 bytes .../Dragon/Art/spr_dragon_flip_5.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_6.png | Bin 0 -> 733 bytes .../Dragon/Art/spr_dragon_flip_6.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_7.png | Bin 0 -> 755 bytes .../Dragon/Art/spr_dragon_flip_7.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_8.png | Bin 0 -> 773 bytes .../Dragon/Art/spr_dragon_flip_8.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_flip_9.png | Bin 0 -> 800 bytes .../Dragon/Art/spr_dragon_flip_9.png.import | 34 + .../Dragon/Art/spr_dragon_idle_0.normal.png | Bin 0 -> 2205 bytes .../Art/spr_dragon_idle_0.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_0.png | Bin 0 -> 691 bytes .../Dragon/Art/spr_dragon_idle_0.png.import | 34 + .../Dragon/Art/spr_dragon_idle_1.normal.png | Bin 0 -> 2196 bytes .../Art/spr_dragon_idle_1.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_1.png | Bin 0 -> 702 bytes .../Dragon/Art/spr_dragon_idle_1.png.import | 34 + .../Dragon/Art/spr_dragon_idle_10.normal.png | Bin 0 -> 2200 bytes .../Art/spr_dragon_idle_10.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_10.png | Bin 0 -> 711 bytes .../Dragon/Art/spr_dragon_idle_10.png.import | 34 + .../Dragon/Art/spr_dragon_idle_11.normal.png | Bin 0 -> 2217 bytes .../Art/spr_dragon_idle_11.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_11.png | Bin 0 -> 692 bytes .../Dragon/Art/spr_dragon_idle_11.png.import | 34 + .../Dragon/Art/spr_dragon_idle_2.normal.png | Bin 0 -> 2220 bytes .../Art/spr_dragon_idle_2.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_2.png | Bin 0 -> 715 bytes .../Dragon/Art/spr_dragon_idle_2.png.import | 34 + .../Dragon/Art/spr_dragon_idle_3.normal.png | Bin 0 -> 2295 bytes .../Art/spr_dragon_idle_3.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_3.png | Bin 0 -> 714 bytes .../Dragon/Art/spr_dragon_idle_3.png.import | 34 + .../Dragon/Art/spr_dragon_idle_4.normal.png | Bin 0 -> 2272 bytes .../Art/spr_dragon_idle_4.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_4.png | Bin 0 -> 719 bytes .../Dragon/Art/spr_dragon_idle_4.png.import | 34 + .../Dragon/Art/spr_dragon_idle_5.normal.png | Bin 0 -> 2279 bytes .../Art/spr_dragon_idle_5.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_5.png | Bin 0 -> 700 bytes .../Dragon/Art/spr_dragon_idle_5.png.import | 34 + .../Dragon/Art/spr_dragon_idle_6.normal.png | Bin 0 -> 2200 bytes .../Art/spr_dragon_idle_6.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_6.png | Bin 0 -> 704 bytes .../Dragon/Art/spr_dragon_idle_6.png.import | 34 + .../Dragon/Art/spr_dragon_idle_7.normal.png | Bin 0 -> 2151 bytes .../Art/spr_dragon_idle_7.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_7.png | Bin 0 -> 705 bytes .../Dragon/Art/spr_dragon_idle_7.png.import | 34 + .../Dragon/Art/spr_dragon_idle_8.normal.png | Bin 0 -> 2144 bytes .../Art/spr_dragon_idle_8.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_8.png | Bin 0 -> 701 bytes .../Dragon/Art/spr_dragon_idle_8.png.import | 34 + .../Dragon/Art/spr_dragon_idle_9.normal.png | Bin 0 -> 2205 bytes .../Art/spr_dragon_idle_9.normal.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_idle_9.png | Bin 0 -> 702 bytes .../Dragon/Art/spr_dragon_idle_9.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_jump_0.png | Bin 0 -> 733 bytes .../Dragon/Art/spr_dragon_jump_0.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_jump_1.png | Bin 0 -> 729 bytes .../Dragon/Art/spr_dragon_jump_1.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_jump_2.png | Bin 0 -> 736 bytes .../Dragon/Art/spr_dragon_jump_2.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_jump_3.png | Bin 0 -> 727 bytes .../Dragon/Art/spr_dragon_jump_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_0.png | Bin 0 -> 711 bytes .../Dragon/Art/spr_dragon_roll_0.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_1.png | Bin 0 -> 745 bytes .../Dragon/Art/spr_dragon_roll_1.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_2.png | Bin 0 -> 675 bytes .../Dragon/Art/spr_dragon_roll_2.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_3.png | Bin 0 -> 634 bytes .../Dragon/Art/spr_dragon_roll_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_4.png | Bin 0 -> 618 bytes .../Dragon/Art/spr_dragon_roll_4.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_5.png | Bin 0 -> 732 bytes .../Dragon/Art/spr_dragon_roll_5.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_roll_6.png | Bin 0 -> 745 bytes .../Dragon/Art/spr_dragon_roll_6.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_0.png | Bin 0 -> 687 bytes .../Dragon/Art/spr_dragon_run_0.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_1.png | Bin 0 -> 675 bytes .../Dragon/Art/spr_dragon_run_1.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_2.png | Bin 0 -> 703 bytes .../Dragon/Art/spr_dragon_run_2.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_3.png | Bin 0 -> 765 bytes .../Dragon/Art/spr_dragon_run_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_4.png | Bin 0 -> 746 bytes .../Dragon/Art/spr_dragon_run_4.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_5.png | Bin 0 -> 709 bytes .../Dragon/Art/spr_dragon_run_5.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_6.png | Bin 0 -> 712 bytes .../Dragon/Art/spr_dragon_run_6.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_7.png | Bin 0 -> 708 bytes .../Dragon/Art/spr_dragon_run_7.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_8.png | Bin 0 -> 729 bytes .../Dragon/Art/spr_dragon_run_8.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_run_9.png | Bin 0 -> 728 bytes .../Dragon/Art/spr_dragon_run_9.png.import | 34 + .../Dragon/Art/spr_dragon_run_to_idle_0.png | Bin 0 -> 679 bytes .../Art/spr_dragon_run_to_idle_0.png.import | 34 + .../Dragon/Art/spr_dragon_run_to_idle_1.png | Bin 0 -> 725 bytes .../Art/spr_dragon_run_to_idle_1.png.import | 34 + .../Dragon/Art/spr_dragon_run_to_idle_2.png | Bin 0 -> 697 bytes .../Art/spr_dragon_run_to_idle_2.png.import | 34 + .../Dragon/Art/spr_dragon_run_to_idle_3.png | Bin 0 -> 706 bytes .../Art/spr_dragon_run_to_idle_3.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_squat_0.png | Bin 0 -> 689 bytes .../Dragon/Art/spr_dragon_squat_0.png.import | 34 + Char/Player/Dragon/Art/spr_dragon_squat_1.png | Bin 0 -> 703 bytes .../Dragon/Art/spr_dragon_squat_1.png.import | 34 + .../Dragon/Art/spr_dragon_wallgrab_0.png | Bin 0 -> 791 bytes .../Art/spr_dragon_wallgrab_0.png.import | 34 + .../Dragon/Art/spr_dragon_wallslide_0.png | Bin 0 -> 769 bytes .../Art/spr_dragon_wallslide_0.png.import | 34 + Char/Player/Dragon/Dragon.tscn | 786 +++++++++++++ Char/Player/Dragon/Player_Base.gd | 102 ++ Char/Player/Dragon/Player_Base.gd.uid | 1 + Char/Player/Dragon/Tres/fall_0.tres | 8 + Char/Player/Dragon/Tres/fall_1.tres | 8 + Char/Player/Dragon/Tres/fall_2.tres | 8 + Char/Player/Dragon/Tres/fall_3.tres | 8 + Char/Player/Dragon/Tres/idle_0.tres | 8 + Char/Player/Dragon/Tres/idle_1.tres | 8 + Char/Player/Dragon/Tres/idle_10.tres | 8 + Char/Player/Dragon/Tres/idle_11.tres | 8 + Char/Player/Dragon/Tres/idle_2.tres | 8 + Char/Player/Dragon/Tres/idle_3.tres | 8 + Char/Player/Dragon/Tres/idle_4.tres | 8 + Char/Player/Dragon/Tres/idle_5.tres | 8 + Char/Player/Dragon/Tres/idle_6.tres | 8 + Char/Player/Dragon/Tres/idle_7.tres | 8 + Char/Player/Dragon/Tres/idle_8.tres | 8 + Char/Player/Dragon/Tres/idle_9.tres | 8 + .../Player_Components/Art/ATK_slash_1.png | Bin 0 -> 15918 bytes .../Art/ATK_slash_1.png.import | 34 + .../Player_Components/Art/Dash_arrow.png | Bin 0 -> 149 bytes .../Art/Dash_arrow.png.import | 34 + .../Player_Components/Art/Dash_range.png | Bin 0 -> 20292 bytes .../Art/Dash_range.png.import | 34 + .../Art/spr_color_slash_0.png | Bin 0 -> 445 bytes .../Art/spr_color_slash_0.png.import | 34 + .../Art/spr_color_slash_1.png | Bin 0 -> 592 bytes .../Art/spr_color_slash_1.png.import | 34 + .../Art/spr_color_slash_2.png | Bin 0 -> 575 bytes .../Art/spr_color_slash_2.png.import | 34 + .../Art/spr_color_slash_3.png | Bin 0 -> 516 bytes .../Art/spr_color_slash_3.png.import | 34 + .../Art/spr_color_slash_4.png | Bin 0 -> 381 bytes .../Art/spr_color_slash_4.png.import | 34 + .../Art/spr_color_slash_5.png | Bin 0 -> 258 bytes .../Art/spr_color_slash_5.png.import | 34 + .../Art/spr_color_slash_6.png | Bin 0 -> 188 bytes .../Art/spr_color_slash_6.png.import | 34 + .../Art/spr_master_slash_0.png | Bin 0 -> 462 bytes .../Art/spr_master_slash_0.png.import | 34 + .../Art/spr_master_slash_1.png | Bin 0 -> 577 bytes .../Art/spr_master_slash_1.png.import | 34 + .../Art/spr_master_slash_2.png | Bin 0 -> 359 bytes .../Art/spr_master_slash_2.png.import | 34 + .../Art/spr_master_slash_3.png | Bin 0 -> 279 bytes .../Art/spr_master_slash_3.png.import | 34 + .../Art/spr_master_slash_4.png | Bin 0 -> 203 bytes .../Art/spr_master_slash_4.png.import | 34 + .../Player_Components/hit_queue_processor.gd | 121 ++ .../hit_queue_processor.gd.uid | 1 + .../hit_queue_processor.tscn | 6 + .../Player_Components/hit_stop_component.gd | 274 +++++ .../hit_stop_component.gd.uid | 1 + .../Player_Components/hit_stop_component.tscn | 6 + .../player_attack_component.gd | 165 +++ .../player_attack_component.gd.uid | 1 + .../player_attack_component.tscn | 225 ++++ .../Player_Components/player_dash_clock.gd | 14 + .../player_dash_clock.gd.uid | 1 + .../Player_Components/player_dash_clock.tscn | 6 + .../player_dash_component.gd | 469 ++++++++ .../player_dash_component.gd.uid | 1 + .../player_dash_component.tscn | 46 + Char/Player/Shadow/Art/attack.png | Bin 0 -> 26193 bytes Char/Player/Shadow/Art/attack.png.import | 34 + Char/Player/Shadow/Art/idle_battle.png | Bin 0 -> 10885 bytes Char/Player/Shadow/Art/idle_battle.png.import | 34 + Char/Player/Shadow/Art/jump.png | Bin 0 -> 28823 bytes Char/Player/Shadow/Art/jump.png.import | 34 + Char/Player/Shadow/Art/roll.png | Bin 0 -> 21133 bytes Char/Player/Shadow/Art/roll.png.import | 34 + Char/Player/Shadow/Art/run.png | Bin 0 -> 15151 bytes Char/Player/Shadow/Art/run.png.import | 34 + Char/Player/Shadow/Art/run_to_idle.png | Bin 0 -> 11248 bytes Char/Player/Shadow/Art/run_to_idle.png.import | 34 + Char/Player/Shadow/Art/squat.png | Bin 0 -> 17943 bytes Char/Player/Shadow/Art/squat.png.import | 34 + Char/Player/Shadow/Art/wall_jump.png | Bin 0 -> 24107 bytes Char/Player/Shadow/Art/wall_jump.png.import | 34 + Char/Player/Shadow/Art/wall_slide.png | Bin 0 -> 7920 bytes Char/Player/Shadow/Art/wall_slide.png.import | 34 + Char/Player/Shadow/Player_Base.gd | 103 ++ Char/Player/Shadow/Player_Base.gd.uid | 1 + Char/Player/Shadow/Shadow.tscn | 1036 +++++++++++++++++ Char/Player/Shadow/Tres/fall_0.tres | 8 + Char/Player/Shadow/Tres/fall_1.tres | 8 + Char/Player/Shadow/Tres/fall_2.tres | 8 + Char/Player/Shadow/Tres/fall_3.tres | 8 + Char/Player/Shadow/Tres/idle_0.tres | 8 + Char/Player/Shadow/Tres/idle_1.tres | 8 + Char/Player/Shadow/Tres/idle_10.tres | 8 + Char/Player/Shadow/Tres/idle_11.tres | 8 + Char/Player/Shadow/Tres/idle_2.tres | 8 + Char/Player/Shadow/Tres/idle_3.tres | 8 + Char/Player/Shadow/Tres/idle_4.tres | 8 + Char/Player/Shadow/Tres/idle_5.tres | 8 + Char/Player/Shadow/Tres/idle_6.tres | 8 + Char/Player/Shadow/Tres/idle_7.tres | 8 + Char/Player/Shadow/Tres/idle_8.tres | 8 + Char/Player/Shadow/Tres/idle_9.tres | 8 + Char/Player/States/Player_Attack.gd | 58 + Char/Player/States/Player_Attack.gd.uid | 1 + Char/Player/States/Player_Fall.gd | 64 + Char/Player/States/Player_Fall.gd.uid | 1 + Char/Player/States/Player_Idle_Battle.gd | 47 + Char/Player/States/Player_Idle_Battle.gd.uid | 1 + Char/Player/States/Player_Jump.gd | 87 ++ Char/Player/States/Player_Jump.gd.uid | 1 + Char/Player/States/Player_Roll.gd | 85 ++ Char/Player/States/Player_Roll.gd.uid | 1 + Char/Player/States/Player_Run.gd | 51 + Char/Player/States/Player_Run.gd.uid | 1 + Char/Player/States/Player_Run_To_Idle.gd | 63 + Char/Player/States/Player_Run_To_Idle.gd.uid | 1 + Char/Player/States/Player_Squat.gd | 42 + Char/Player/States/Player_Squat.gd.uid | 1 + Char/Player/States/Player_State.gd | 131 +++ Char/Player/States/Player_State.gd.uid | 1 + Char/Player/States/Player_State_Machine.gd | 40 + .../Player/States/Player_State_Machine.gd.uid | 1 + Char/Player/States/Player_Wall_Jump.gd | 90 ++ Char/Player/States/Player_Wall_Jump.gd.uid | 1 + Char/Player/States/Player_Wall_Slide.gd | 79 ++ Char/Player/States/Player_Wall_Slide.gd.uid | 1 + Level/Rope/Rope.gd | 307 +++++ Level/Rope/Rope.gd.uid | 1 + Level/Rope/Rope.png | Bin 0 -> 111 bytes Level/Rope/Rope.png.import | 34 + Level/Rope/Rope.tscn | 24 + Level/Rope/Rope_Part.gd | 35 + Level/Rope/Rope_Part.gd.uid | 1 + Level/Rope/Rope_Part.tscn | 19 + Level/Test_Level_01.tscn | 206 ++++ Level/Test_Level_02.tscn | 63 + Level/Test_Level_03.tscn | 13 + Level/Tiles/Art.png.import | 34 + Level/Tiles/Art_Group.png | Bin 0 -> 5706 bytes Level/Tiles/Art_Group.png.import | 34 + Level/Tiles/Physic_Group.png | Bin 0 -> 5051 bytes Level/Tiles/Physic_Group.png.import | 34 + Level/Tiles/tile_group.gd | 104 ++ Level/Tiles/tile_group.gd.uid | 1 + Level/test_level_01.gd | 18 + Level/test_level_01.gd.uid | 1 + Level/test_level_02.gd | 64 + Level/test_level_02.gd.uid | 1 + Level/test_level_03.gd | 0 Level/test_level_03.gd.uid | 1 + UI/Art/spr_cursor_0.png | Bin 0 -> 305 bytes UI/Art/spr_cursor_0.png.import | 34 + export_presets.cfg | 64 + icon.svg | 1 + icon.svg.import | 37 + project.godot | 117 ++ 翻译提示词参考.txt | 62 - 497 files changed, 14195 insertions(+), 62 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Autoload/time_screen_controller.gd create mode 100644 Autoload/time_screen_controller.gd.uid create mode 100644 Char/Char_Components/After_Image/aft4F5C.tmp create mode 100644 Char/Char_Components/After_Image/after_image.tscn create mode 100644 Char/Char_Components/After_Image/after_image_component.gd create mode 100644 Char/Char_Components/After_Image/after_image_component.gd.uid create mode 100644 Char/Char_Components/After_Image/after_image_component.tscn create mode 100644 Char/Char_Components/After_Image/player_dash.gdshader create mode 100644 Char/Char_Components/After_Image/player_dash.gdshader.uid create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1.png create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1.png.import create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_01.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_02.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_03.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_04.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_05.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_06.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_1_07.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2.png create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2.png.import create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_01.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_02.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_03.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_04.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_05.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_06.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_07.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_08.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_09.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_10.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_11.tscn create mode 100644 Char/Char_Components/Blood/Art/blood_stain_2_12.tscn create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_0.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_0.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_1.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_1.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_2.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_2.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_3.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_3.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_4.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_4.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_5.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood2_5.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_0.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_0.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_1.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_1.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_2.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_2.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_3.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_3.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_4.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_4.png.import create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_5.png create mode 100644 Char/Char_Components/Blood/Art/spr_blood3_5.png.import create mode 100644 Char/Char_Components/Blood/Blood_Component.gd create mode 100644 Char/Char_Components/Blood/Blood_Component.gd.uid create mode 100644 Char/Char_Components/Blood/Blood_Component.tscn create mode 100644 Char/Char_Components/Blood/blood_mask.gdshader create mode 100644 Char/Char_Components/Blood/blood_mask.gdshader.uid create mode 100644 Char/Char_Components/Blood/blood_part.gd create mode 100644 Char/Char_Components/Blood/blood_part.gd.uid create mode 100644 Char/Char_Components/Blood/blood_part.tscn create mode 100644 Char/Char_Components/Blood/blood_stain.gd create mode 100644 Char/Char_Components/Blood/blood_stain.gd.uid create mode 100644 Char/Char_Components/Blood/blood_stain.tscn create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_0.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_0.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_1.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_1.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_2.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_2.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_3.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_3.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_4.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_4.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_6.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_6.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_0.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_0.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_1.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_1.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_2.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_2.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_3.png create mode 100644 Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_3.png.import create mode 100644 Char/Char_Components/Floor_Wall_FX/floor_dust.tscn create mode 100644 Char/Char_Components/Floor_Wall_FX/wall_jump_dust.tscn create mode 100644 Char/Char_Components/Petals_Leaves/Sakura.png create mode 100644 Char/Char_Components/Petals_Leaves/Sakura.png.import create mode 100644 Char/Char_Components/Petals_Leaves/Sakura_Component.tscn create mode 100644 Char/Char_Components/Petals_Leaves/Sakura_Fall.tscn create mode 100644 Char/Char_Components/Petals_Leaves/Sakura_Impulse.tscn create mode 100644 Char/Char_Components/Petals_Leaves/sakura_component.gd create mode 100644 Char/Char_Components/Petals_Leaves/sakura_component.gd.uid create mode 100644 Char/Char_Components/Petals_Leaves/sakura_fall.gd create mode 100644 Char/Char_Components/Petals_Leaves/sakura_fall.gd.uid create mode 100644 Char/Char_Components/Petals_Leaves/sakura_impulse.gd create mode 100644 Char/Char_Components/Petals_Leaves/sakura_impulse.gd.uid create mode 100644 Char/Char_Components/fx_component.gd create mode 100644 Char/Char_Components/fx_component.gd.uid create mode 100644 Char/Enemy/Art/1.png create mode 100644 Char/Enemy/Art/1.png.import create mode 100644 Char/Enemy/Art/2.png create mode 100644 Char/Enemy/Art/2.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_1.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_1.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_10.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_10.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_11.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_11.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_12.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_12.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_13.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_13.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_2.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_2.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_3.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_3.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_4.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_4.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_5.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_5.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_6.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_6.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_7.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_7.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_8.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_8.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_9.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_9.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_1.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_1.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_2.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_2.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_3.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_3.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_4.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_4.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_5.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_idle_5.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_11.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_11.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_2.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_2.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_7.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_7.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_8.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_8.png.import create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_9.png create mode 100644 Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_9.png.import create mode 100644 Char/Enemy/Enemy_01.tscn create mode 100644 Char/Enemy/Enemy_Base.gd create mode 100644 Char/Enemy/Enemy_Base.gd.uid create mode 100644 Char/Enemy/States/Enemy_Death.gd create mode 100644 Char/Enemy/States/Enemy_Death.gd.uid create mode 100644 Char/Enemy/States/Enemy_Hurt_Air.gd create mode 100644 Char/Enemy/States/Enemy_Hurt_Air.gd.uid create mode 100644 Char/Enemy/States/Enemy_Hurt_Begin.gd create mode 100644 Char/Enemy/States/Enemy_Hurt_Begin.gd.uid create mode 100644 Char/Enemy/States/Enemy_Hurt_Ground.gd create mode 100644 Char/Enemy/States/Enemy_Hurt_Ground.gd.uid create mode 100644 Char/Enemy/States/Enemy_Idle.gd create mode 100644 Char/Enemy/States/Enemy_Idle.gd.uid create mode 100644 Char/Enemy/States/Enemy_Slope_Fall.gd create mode 100644 Char/Enemy/States/Enemy_Slope_Fall.gd.uid create mode 100644 Char/Enemy/States/Enemy_State.gd create mode 100644 Char/Enemy/States/Enemy_State.gd.uid create mode 100644 Char/Enemy/States/Enemy_State_Machine.gd create mode 100644 Char/Enemy/States/Enemy_State_Machine.gd.uid create mode 100644 Char/Enemy/outline.gdshader create mode 100644 Char/Enemy/outline.gdshader.uid create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_attack_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_fall_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_4.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_4.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_5.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_5.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_6.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_6.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_7.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_7.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_8.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_8.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_9.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_flip_9.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_1.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_1.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_10.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_10.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_10.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_10.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_11.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_11.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_2.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_2.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_4.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_4.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_5.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_5.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_5.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_5.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_6.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_6.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_6.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_6.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_7.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_7.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_7.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_7.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_8.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_8.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_8.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_8.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_9.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_idle_9.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_jump_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_4.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_4.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_5.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_5.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_6.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_roll_6.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_4.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_4.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_5.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_5.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_6.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_6.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_7.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_7.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_8.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_8.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_9.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_9.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_3.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_run_to_idle_3.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_squat_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_squat_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_squat_1.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_squat_1.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png.import create mode 100644 Char/Player/Dragon/Art/spr_dragon_wallslide_0.png create mode 100644 Char/Player/Dragon/Art/spr_dragon_wallslide_0.png.import create mode 100644 Char/Player/Dragon/Dragon.tscn create mode 100644 Char/Player/Dragon/Player_Base.gd create mode 100644 Char/Player/Dragon/Player_Base.gd.uid create mode 100644 Char/Player/Dragon/Tres/fall_0.tres create mode 100644 Char/Player/Dragon/Tres/fall_1.tres create mode 100644 Char/Player/Dragon/Tres/fall_2.tres create mode 100644 Char/Player/Dragon/Tres/fall_3.tres create mode 100644 Char/Player/Dragon/Tres/idle_0.tres create mode 100644 Char/Player/Dragon/Tres/idle_1.tres create mode 100644 Char/Player/Dragon/Tres/idle_10.tres create mode 100644 Char/Player/Dragon/Tres/idle_11.tres create mode 100644 Char/Player/Dragon/Tres/idle_2.tres create mode 100644 Char/Player/Dragon/Tres/idle_3.tres create mode 100644 Char/Player/Dragon/Tres/idle_4.tres create mode 100644 Char/Player/Dragon/Tres/idle_5.tres create mode 100644 Char/Player/Dragon/Tres/idle_6.tres create mode 100644 Char/Player/Dragon/Tres/idle_7.tres create mode 100644 Char/Player/Dragon/Tres/idle_8.tres create mode 100644 Char/Player/Dragon/Tres/idle_9.tres create mode 100644 Char/Player/Player_Components/Art/ATK_slash_1.png create mode 100644 Char/Player/Player_Components/Art/ATK_slash_1.png.import create mode 100644 Char/Player/Player_Components/Art/Dash_arrow.png create mode 100644 Char/Player/Player_Components/Art/Dash_arrow.png.import create mode 100644 Char/Player/Player_Components/Art/Dash_range.png create mode 100644 Char/Player/Player_Components/Art/Dash_range.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_0.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_0.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_1.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_1.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_2.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_2.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_3.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_3.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_4.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_4.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_5.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_5.png.import create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_6.png create mode 100644 Char/Player/Player_Components/Art/spr_color_slash_6.png.import create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_0.png create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_0.png.import create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_1.png create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_1.png.import create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_2.png create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_2.png.import create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_3.png create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_3.png.import create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_4.png create mode 100644 Char/Player/Player_Components/Art/spr_master_slash_4.png.import create mode 100644 Char/Player/Player_Components/hit_queue_processor.gd create mode 100644 Char/Player/Player_Components/hit_queue_processor.gd.uid create mode 100644 Char/Player/Player_Components/hit_queue_processor.tscn create mode 100644 Char/Player/Player_Components/hit_stop_component.gd create mode 100644 Char/Player/Player_Components/hit_stop_component.gd.uid create mode 100644 Char/Player/Player_Components/hit_stop_component.tscn create mode 100644 Char/Player/Player_Components/player_attack_component.gd create mode 100644 Char/Player/Player_Components/player_attack_component.gd.uid create mode 100644 Char/Player/Player_Components/player_attack_component.tscn create mode 100644 Char/Player/Player_Components/player_dash_clock.gd create mode 100644 Char/Player/Player_Components/player_dash_clock.gd.uid create mode 100644 Char/Player/Player_Components/player_dash_clock.tscn create mode 100644 Char/Player/Player_Components/player_dash_component.gd create mode 100644 Char/Player/Player_Components/player_dash_component.gd.uid create mode 100644 Char/Player/Player_Components/player_dash_component.tscn create mode 100644 Char/Player/Shadow/Art/attack.png create mode 100644 Char/Player/Shadow/Art/attack.png.import create mode 100644 Char/Player/Shadow/Art/idle_battle.png create mode 100644 Char/Player/Shadow/Art/idle_battle.png.import create mode 100644 Char/Player/Shadow/Art/jump.png create mode 100644 Char/Player/Shadow/Art/jump.png.import create mode 100644 Char/Player/Shadow/Art/roll.png create mode 100644 Char/Player/Shadow/Art/roll.png.import create mode 100644 Char/Player/Shadow/Art/run.png create mode 100644 Char/Player/Shadow/Art/run.png.import create mode 100644 Char/Player/Shadow/Art/run_to_idle.png create mode 100644 Char/Player/Shadow/Art/run_to_idle.png.import create mode 100644 Char/Player/Shadow/Art/squat.png create mode 100644 Char/Player/Shadow/Art/squat.png.import create mode 100644 Char/Player/Shadow/Art/wall_jump.png create mode 100644 Char/Player/Shadow/Art/wall_jump.png.import create mode 100644 Char/Player/Shadow/Art/wall_slide.png create mode 100644 Char/Player/Shadow/Art/wall_slide.png.import create mode 100644 Char/Player/Shadow/Player_Base.gd create mode 100644 Char/Player/Shadow/Player_Base.gd.uid create mode 100644 Char/Player/Shadow/Shadow.tscn create mode 100644 Char/Player/Shadow/Tres/fall_0.tres create mode 100644 Char/Player/Shadow/Tres/fall_1.tres create mode 100644 Char/Player/Shadow/Tres/fall_2.tres create mode 100644 Char/Player/Shadow/Tres/fall_3.tres create mode 100644 Char/Player/Shadow/Tres/idle_0.tres create mode 100644 Char/Player/Shadow/Tres/idle_1.tres create mode 100644 Char/Player/Shadow/Tres/idle_10.tres create mode 100644 Char/Player/Shadow/Tres/idle_11.tres create mode 100644 Char/Player/Shadow/Tres/idle_2.tres create mode 100644 Char/Player/Shadow/Tres/idle_3.tres create mode 100644 Char/Player/Shadow/Tres/idle_4.tres create mode 100644 Char/Player/Shadow/Tres/idle_5.tres create mode 100644 Char/Player/Shadow/Tres/idle_6.tres create mode 100644 Char/Player/Shadow/Tres/idle_7.tres create mode 100644 Char/Player/Shadow/Tres/idle_8.tres create mode 100644 Char/Player/Shadow/Tres/idle_9.tres create mode 100644 Char/Player/States/Player_Attack.gd create mode 100644 Char/Player/States/Player_Attack.gd.uid create mode 100644 Char/Player/States/Player_Fall.gd create mode 100644 Char/Player/States/Player_Fall.gd.uid create mode 100644 Char/Player/States/Player_Idle_Battle.gd create mode 100644 Char/Player/States/Player_Idle_Battle.gd.uid create mode 100644 Char/Player/States/Player_Jump.gd create mode 100644 Char/Player/States/Player_Jump.gd.uid create mode 100644 Char/Player/States/Player_Roll.gd create mode 100644 Char/Player/States/Player_Roll.gd.uid create mode 100644 Char/Player/States/Player_Run.gd create mode 100644 Char/Player/States/Player_Run.gd.uid create mode 100644 Char/Player/States/Player_Run_To_Idle.gd create mode 100644 Char/Player/States/Player_Run_To_Idle.gd.uid create mode 100644 Char/Player/States/Player_Squat.gd create mode 100644 Char/Player/States/Player_Squat.gd.uid create mode 100644 Char/Player/States/Player_State.gd create mode 100644 Char/Player/States/Player_State.gd.uid create mode 100644 Char/Player/States/Player_State_Machine.gd create mode 100644 Char/Player/States/Player_State_Machine.gd.uid create mode 100644 Char/Player/States/Player_Wall_Jump.gd create mode 100644 Char/Player/States/Player_Wall_Jump.gd.uid create mode 100644 Char/Player/States/Player_Wall_Slide.gd create mode 100644 Char/Player/States/Player_Wall_Slide.gd.uid create mode 100644 Level/Rope/Rope.gd create mode 100644 Level/Rope/Rope.gd.uid create mode 100644 Level/Rope/Rope.png create mode 100644 Level/Rope/Rope.png.import create mode 100644 Level/Rope/Rope.tscn create mode 100644 Level/Rope/Rope_Part.gd create mode 100644 Level/Rope/Rope_Part.gd.uid create mode 100644 Level/Rope/Rope_Part.tscn create mode 100644 Level/Test_Level_01.tscn create mode 100644 Level/Test_Level_02.tscn create mode 100644 Level/Test_Level_03.tscn create mode 100644 Level/Tiles/Art.png.import create mode 100644 Level/Tiles/Art_Group.png create mode 100644 Level/Tiles/Art_Group.png.import create mode 100644 Level/Tiles/Physic_Group.png create mode 100644 Level/Tiles/Physic_Group.png.import create mode 100644 Level/Tiles/tile_group.gd create mode 100644 Level/Tiles/tile_group.gd.uid create mode 100644 Level/test_level_01.gd create mode 100644 Level/test_level_01.gd.uid create mode 100644 Level/test_level_02.gd create mode 100644 Level/test_level_02.gd.uid create mode 100644 Level/test_level_03.gd create mode 100644 Level/test_level_03.gd.uid create mode 100644 UI/Art/spr_cursor_0.png create mode 100644 UI/Art/spr_cursor_0.png.import create mode 100644 export_presets.cfg create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot delete mode 100644 翻译提示词参考.txt diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/Autoload/time_screen_controller.gd b/Autoload/time_screen_controller.gd new file mode 100644 index 0000000..1c39731 --- /dev/null +++ b/Autoload/time_screen_controller.gd @@ -0,0 +1,87 @@ +extends Node +## 用于控制时间速度和屏幕变暗效果的自动加载单例 + +const DEFAULT_TIME_SCALE := 1.0 +const FADE_DURATION := 0.03 # 渐变效果持续时间 +const SLOW_DURATION := 0.05 # 减速效果持续时间(当前未使用,保留) +const MAX_DARKNESS := 0.5 # 最大变暗程度(0.0完全透明,1.0完全黑) + +var _current_time_scale := DEFAULT_TIME_SCALE +var _fade_overlay: ColorRect +var _is_fading := false +var _current_tween: Tween +var _should_maintain_slow := false # 是否保持减速状态 + +func _ready() -> void: + process_mode = Node.PROCESS_MODE_ALWAYS + _setup_fade_overlay() + +func _setup_fade_overlay() -> void: + var canvas_layer := CanvasLayer.new() + canvas_layer.layer = 128 + add_child(canvas_layer) + + _fade_overlay = ColorRect.new() + _fade_overlay.color = Color(0, 0, 0, 0) + _fade_overlay.set_anchors_preset(Control.PRESET_FULL_RECT) + canvas_layer.add_child(_fade_overlay) + +## 主控制函数:同时控制减速和变暗效果 +## @param slow_time_scale: 时间缩放值(1.0为正常速度,小于1.0为减速) +## @param fade: 是否启用变暗效果 +func execute_effects(slow_time_scale: float, fade: bool) -> void: + _kill_current_tween() + + if slow_time_scale != DEFAULT_TIME_SCALE: + _slow_time(slow_time_scale) + else: + _reset_time() + + _fade_to(MAX_DARKNESS if fade else 0.0) + +## 立即恢复所有效果到正常状态 +func reset_all() -> void: + _kill_current_tween() + _reset_time() + + _is_fading = false + _fade_overlay.color.a = 0.0 + +# region 内部工具函数 +func _kill_current_tween() -> void: + if _current_tween and _current_tween.is_valid(): + _current_tween.kill() + +func _set_time_scale(scale: float) -> void: + _current_time_scale = scale + Engine.time_scale = scale + +func _slow_time(scale: float) -> void: + _set_time_scale(scale) + _should_maintain_slow = true + +func _reset_time() -> void: + _set_time_scale(DEFAULT_TIME_SCALE) + _should_maintain_slow = false + +func _fade_to(target_alpha: float) -> void: + if _is_fading: + return + + _is_fading = true + _current_tween = create_tween() + _current_tween.tween_property(_fade_overlay, "color:a", target_alpha, FADE_DURATION) + _current_tween.tween_callback(func(): _is_fading = false) +# endregion + +## 获取当前时间缩放值 +func get_current_time_scale() -> float: + return _current_time_scale + +## 检查是否正在执行渐变 +func is_fading() -> bool: + return _is_fading + +## 检查是否处于减速状态 +func is_time_slowed() -> bool: + return _should_maintain_slow diff --git a/Autoload/time_screen_controller.gd.uid b/Autoload/time_screen_controller.gd.uid new file mode 100644 index 0000000..e0dab57 --- /dev/null +++ b/Autoload/time_screen_controller.gd.uid @@ -0,0 +1 @@ +uid://lapr5splvajf diff --git a/Char/Char_Components/After_Image/aft4F5C.tmp b/Char/Char_Components/After_Image/aft4F5C.tmp new file mode 100644 index 0000000..713df7d --- /dev/null +++ b/Char/Char_Components/After_Image/aft4F5C.tmp @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dd7k3qbsw1bhq"] + +[ext_resource type="Script" path="res://Char/Char_Components/After_Image/after_image_component.gd" id="1_c5t65"] + +[node name="After_Image_Component" type="Node"] +script = ExtResource("1_c5t65") diff --git a/Char/Char_Components/After_Image/after_image.tscn b/Char/Char_Components/After_Image/after_image.tscn new file mode 100644 index 0000000..4d51aef --- /dev/null +++ b/Char/Char_Components/After_Image/after_image.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=4 format=3 uid="uid://ce7d2uw5710fo"] + +[sub_resource type="Animation" id="Animation_i6syn"] +resource_name = "Fading" +length = 0.1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:self_modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(0.197937, 0.197937, 0.197937, 0.588235), Color(1, 1, 1, 0)] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} + +[sub_resource type="Animation" id="Animation_28t5o"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:self_modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.197937, 0.197937, 0.197937, 0.588235)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_s12ut"] +_data = { +&"Fading": SubResource("Animation_i6syn"), +&"RESET": SubResource("Animation_28t5o") +} + +[node name="After_Image" type="Node2D" groups=["After_Image"]] +self_modulate = Color(0.196078, 0.196078, 0.196078, 0.588235) + +[node name="Sprite2D" type="Sprite2D" parent="."] +self_modulate = Color(0.197937, 0.197937, 0.197937, 0.588235) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_s12ut") +} +autoplay = "Fading" diff --git a/Char/Char_Components/After_Image/after_image_component.gd b/Char/Char_Components/After_Image/after_image_component.gd new file mode 100644 index 0000000..4d9536c --- /dev/null +++ b/Char/Char_Components/After_Image/after_image_component.gd @@ -0,0 +1,175 @@ +extends Node + +var can_spawn = true +var spawn_frequency = 0.01 +var base_scale = 0.9 +var min_velocity = 5.0 +var is_active = false + +var after_image_material: ShaderMaterial +var after_image_scene = preload("res://Char/Char_Components/After_Image/after_image.tscn") + +@onready var player = get_parent() +@onready var owner_sprite = player.get_node("Body_Animation/Sprite2D") +@onready var owner_anim = player.get_node("Body_Animation/AnimationPlayer") + +func _ready(): + if !after_image_material: + var new_material = ShaderMaterial.new() + new_material.shader = load("res://Char/Char_Components/After_Image/player_dash.gdshader") + after_image_material = new_material + + after_image_material.set_shader_parameter("effect_mixture", 0.0) + after_image_material.set_shader_parameter("alpha_multiplier", 1.0) + after_image_material.set_shader_parameter("color_offset", 0.0) + after_image_material.set_shader_parameter("glow_intensity", 1.2) + + reset_spawn_timer() + +func _physics_process(_delta): + if is_active and can_spawn: + var velocity = owner.velocity if owner.has_method("get_velocity") else Vector2.ZERO + if velocity.length() >= min_velocity: + spawn_after_image() + +func clear_shader(): + after_image_material = null + +func init_shader(shader_path: String, params: Dictionary = {}): + after_image_material = ShaderMaterial.new() + after_image_material.shader = load(shader_path) + + for param_name in params: + after_image_material.set_shader_parameter(param_name, params[param_name]) + +func reset_spawn_timer(): + can_spawn = false + await get_tree().create_timer(spawn_frequency).timeout + can_spawn = true + +func spawn_after_image(): + var level = get_tree().get_first_node_in_group("Level") + if !level: + return + var effect_group = level.get_node("Effect_Group") + if !effect_group: + return + + var after_image = after_image_scene.instantiate() + after_image.position = owner_sprite.global_position + after_image.scale = owner_sprite.scale * base_scale + + var after_image_sprite:Sprite2D = after_image.get_node("Sprite2D") + after_image_sprite.texture = owner_sprite.texture + after_image_sprite.region_enabled = true + after_image_sprite.region_rect = owner_sprite.region_rect + after_image.scale.x *= owner.get_node("Body_Animation").scale.x + + if after_image_material: + var current_material = ShaderMaterial.new() + current_material.shader = after_image_material.shader + current_material.set_shader_parameter("rainbow_width", + after_image_material.get_shader_parameter("rainbow_width")) + current_material.set_shader_parameter("rainbow_speed", + after_image_material.get_shader_parameter("rainbow_speed")) + after_image_sprite.material = current_material + + after_image.z_index = 5 + effect_group.add_child(after_image) + + reset_spawn_timer() + +func start(): + is_active = true + can_spawn = true + +func stop(): + is_active = false + can_spawn = false + clear_shader() + +func set_shader_parameter(param_name: String, value): + if after_image_material: + after_image_material.set_shader_parameter(param_name, value) + +func configure(config: Dictionary): + if config.has("spawn_frequency"): + spawn_frequency = config.spawn_frequency + if config.has("base_scale"): + base_scale = config.base_scale + if config.has("min_velocity"): + min_velocity = config.min_velocity + + clear_shader() + +func spawn_trail_between_points(start_pos: Vector2, end_pos: Vector2, num_images: int = 16, shader:bool = true, after_image_texture: Texture = null, after_image_rect: Rect2 = Rect2()): + var level = get_tree().get_first_node_in_group("Level") + if !level: + return + var effect_group = level.get_node("Effect_Group") + if !effect_group: + return + + var total_distance = start_pos.distance_to(end_pos) + var direction = (end_pos - start_pos).normalized() + + # 定义透明度范围 + var alpha_start = 0.1 # 起始透明度 + var alpha_end = 0.8 # 结束透明度 + + if shader and !after_image_material: + var new_material = ShaderMaterial.new() + new_material.shader = load("res://Char/Char_Components/After_Image/player_dash.gdshader") + after_image_material = new_material + + after_image_material.set_shader_parameter("effect_mixture", 1.0) + after_image_material.set_shader_parameter("alpha_multiplier", 1.0) + after_image_material.set_shader_parameter("color_offset", 0.0) + after_image_material.set_shader_parameter("glow_intensity", 1.2) + + for i in range(num_images): + var progress = float(i) / float(num_images - 1) + var adjusted_progress = 1.0 - pow(1.0 - progress, 1.5) + + var current_pos = start_pos + direction * (total_distance * adjusted_progress) + + var after_image = after_image_scene.instantiate() + var after_image_sprite = after_image.get_node("Sprite2D") + + after_image_sprite.texture = after_image_texture + if after_image_rect != Rect2(): + after_image_sprite.region_enabled = true + after_image_sprite.region_rect = after_image_rect + + if end_pos.x < start_pos.x: + after_image_sprite.set_flip_h(true) + else: + after_image_sprite.set_flip_h(false) + + after_image.position = current_pos + owner_sprite.position + after_image.scale = owner_sprite.scale * base_scale + + # 计算当前的透明度 + var current_alpha = lerp(alpha_start, alpha_end, progress) + + if shader and after_image_material: + var current_material = after_image_material.duplicate() + + current_material.set_shader_parameter("effect_mixture", 1.0) + # 使用统一的透明度计算 + current_material.set_shader_parameter("alpha_multiplier", current_alpha) + current_material.set_shader_parameter("color_offset", 1.0 - progress) + + after_image_sprite.material = current_material + + # 如果需要同时使用modulate和shader效果 + after_image_sprite.modulate = Color(1, 1, 1, current_alpha) + else: + # 非shader情况下的透明度处理 + after_image_sprite.modulate = Color(1, 1, 1, current_alpha) + + after_image.z_index = 5 + effect_group.add_child(after_image) + + if shader: + clear_shader() diff --git a/Char/Char_Components/After_Image/after_image_component.gd.uid b/Char/Char_Components/After_Image/after_image_component.gd.uid new file mode 100644 index 0000000..9e0f0cf --- /dev/null +++ b/Char/Char_Components/After_Image/after_image_component.gd.uid @@ -0,0 +1 @@ +uid://gw5o7qlfk82k diff --git a/Char/Char_Components/After_Image/after_image_component.tscn b/Char/Char_Components/After_Image/after_image_component.tscn new file mode 100644 index 0000000..562ca47 --- /dev/null +++ b/Char/Char_Components/After_Image/after_image_component.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dd7k3qbsw1bhq"] + +[ext_resource type="Script" uid="uid://gw5o7qlfk82k" path="res://Char/Char_Components/After_Image/after_image_component.gd" id="1_c5t65"] + +[node name="After_Image_Component" type="Node"] +script = ExtResource("1_c5t65") diff --git a/Char/Char_Components/After_Image/player_dash.gdshader b/Char/Char_Components/After_Image/player_dash.gdshader new file mode 100644 index 0000000..51543a3 --- /dev/null +++ b/Char/Char_Components/After_Image/player_dash.gdshader @@ -0,0 +1,78 @@ +shader_type canvas_item; + +uniform bool time_slowed = false; +uniform float effect_mixture : hint_range(0.0, 1.0) = 0.0; +uniform float alpha_multiplier = 1.0; +uniform float color_offset = 0.0; // 颜色偏移值 + +uniform float glow_intensity = 1.2; +uniform float inner_glow_width = 0.5; +uniform float outer_glow_width = 2.0; +uniform float pulse_speed = 2.0; +uniform float pulse_strength = 0.2; +uniform bool high_quality = true; // 性能开关 + +// HSV转RGB函数 +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +void fragment() { + vec4 texture_color = texture(TEXTURE, UV); + + if (texture_color.a > 0.0) { + vec3 blue_base = vec3(0.2, 0.6, 1.5); + float luminance = dot(texture_color.rgb, vec3(0.299, 0.587, 0.114)); + + // 脉冲动画效果 + float pulse = (sin(TIME * pulse_speed) * 0.5 + 0.5) * pulse_strength; + + // 内发光效果 + float inner_glow = pow(luminance, inner_glow_width) * glow_intensity; + + // 外发光效果 + float outer_glow = 0.0; + if (high_quality) { + // 高质量模式 - 完整采样 + vec2 size = 1.0 / TEXTURE_PIXEL_SIZE; + vec2 pixel_size = 1.0 / size; + for(float x = -outer_glow_width; x <= outer_glow_width; x += 1.0) { + for(float y = -outer_glow_width; y <= outer_glow_width; y += 1.0) { + vec2 offset = vec2(x, y) * pixel_size; + float sample_alpha = texture(TEXTURE, UV + offset).a; + float distance = length(vec2(x, y)) / outer_glow_width; + outer_glow += sample_alpha * (1.0 - distance); + } + } + outer_glow = outer_glow / (outer_glow_width * outer_glow_width * 4.0); + } else { + // 性能模式 - 简化采样 + float sample_distance = outer_glow_width * 0.5; + vec2 pixel_size = 1.0 / (1.0 / TEXTURE_PIXEL_SIZE); + for(float i = 0.0; i < 4.0; i++) { + float angle = i * PI * 0.5; + vec2 offset = vec2(cos(angle), sin(angle)) * sample_distance * pixel_size; + outer_glow += texture(TEXTURE, UV + offset).a; + } + outer_glow = outer_glow * 0.25; + } + + float total_glow = inner_glow + outer_glow + pulse; + + // 基于color_offset生成颜色,范围集中在黄色系 + float hue = fract(color_offset) * 0.4 + 0.1; // 0.1-0.5范围,集中在黄色区域 + vec3 rainbow_color = hsv2rgb(vec3(hue, 0.9, 0.95)); // 高饱和度,稍微降低亮度 + + // 混合发光效果 + vec3 final_color = mix(blue_base, rainbow_color, total_glow); + final_color += rainbow_color * total_glow * 0.5; + + // 最终颜色混合 + vec3 mixed_color = mix(texture_color.rgb, final_color, effect_mixture); + COLOR = vec4(mixed_color, texture_color.a * alpha_multiplier); + } else { + COLOR = vec4(texture_color.rgb, texture_color.a * alpha_multiplier); + } +} \ No newline at end of file diff --git a/Char/Char_Components/After_Image/player_dash.gdshader.uid b/Char/Char_Components/After_Image/player_dash.gdshader.uid new file mode 100644 index 0000000..f9bc8cb --- /dev/null +++ b/Char/Char_Components/After_Image/player_dash.gdshader.uid @@ -0,0 +1 @@ +uid://yqf4d8jhe08n diff --git a/Char/Char_Components/Blood/Art/blood_stain_1.png b/Char/Char_Components/Blood/Art/blood_stain_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1e2ceff66109d4f91469efddcf612da45029c8 GIT binary patch literal 14756 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 CaXpRz literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Blood/Art/blood_stain_2.png.import b/Char/Char_Components/Blood/Art/blood_stain_2.png.import new file mode 100644 index 0000000..1f65edf --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1e5r5c6bsoo" +path="res://.godot/imported/blood_stain_2.png-32689891efbd2668df399cb281736924.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Blood/Art/blood_stain_2.png" +dest_files=["res://.godot/imported/blood_stain_2.png-32689891efbd2668df399cb281736924.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_01.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_01.tscn new file mode 100644 index 0000000..2f064ce --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_01.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://dv342saiudbuw"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_xyws2"] + +[node name="blood_stain_2_01" type="Sprite2D"] +texture = ExtResource("1_xyws2") +region_enabled = true +region_rect = Rect2(6, 12, 30, 12) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_02.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_02.tscn new file mode 100644 index 0000000..2e86311 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_02.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://ds30a70uwl4iu"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_krthc"] + +[node name="blood_stain_2_02" type="Sprite2D"] +texture = ExtResource("1_krthc") +region_enabled = true +region_rect = Rect2(48, 12, 30, 12) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_03.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_03.tscn new file mode 100644 index 0000000..65476b3 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_03.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://bdryepy5bm282"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_esujp"] + +[node name="blood_stain_2_03" type="Sprite2D"] +texture = ExtResource("1_esujp") +region_enabled = true +region_rect = Rect2(90, 12, 36, 12) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_04.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_04.tscn new file mode 100644 index 0000000..c4b9656 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_04.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://dhovjxccg2mqm"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_srjcf"] + +[node name="blood_stain_2_04" type="Sprite2D"] +texture = ExtResource("1_srjcf") +region_enabled = true +region_rect = Rect2(132, 12, 30, 12) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_05.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_05.tscn new file mode 100644 index 0000000..a518ba7 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_05.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://bthfgajr33gh7"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_tygqj"] + +[node name="blood_stain_2_05" type="Sprite2D"] +texture = ExtResource("1_tygqj") +region_enabled = true +region_rect = Rect2(6, 42, 30, 12) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_06.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_06.tscn new file mode 100644 index 0000000..ba7beb3 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_06.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://cmbgju0i610ps"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_x3bik"] + +[node name="blood_stain_2_06" type="Sprite2D"] +texture = ExtResource("1_x3bik") +region_enabled = true +region_rect = Rect2(48, 42, 36, 18) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_07.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_07.tscn new file mode 100644 index 0000000..67b7e89 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_07.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://orh0bway7jr2"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_0hg8m"] + +[node name="blood_stain_2_07" type="Sprite2D"] +texture = ExtResource("1_0hg8m") +region_enabled = true +region_rect = Rect2(96, 42, 30, 18) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_08.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_08.tscn new file mode 100644 index 0000000..bd56b41 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_08.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://bfn2671b38alp"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_prppv"] + +[node name="blood_stain_2_08" type="Sprite2D"] +texture = ExtResource("1_prppv") +region_enabled = true +region_rect = Rect2(132, 42, 30, 18) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_09.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_09.tscn new file mode 100644 index 0000000..a6e00ad --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_09.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://bfhsqlvxufqqj"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_146v3"] + +[node name="blood_stain_2_09" type="Sprite2D"] +texture = ExtResource("1_146v3") +region_enabled = true +region_rect = Rect2(6, 72, 36, 18) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_10.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_10.tscn new file mode 100644 index 0000000..f8129a2 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_10.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://dex00007ea3h1"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_vvnj2"] + +[node name="blood_stain_2_10" type="Sprite2D"] +texture = ExtResource("1_vvnj2") +region_enabled = true +region_rect = Rect2(48, 78, 36, 12) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_11.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_11.tscn new file mode 100644 index 0000000..22d8210 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_11.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://di40o3c74hsw6"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_1m0gx"] + +[node name="blood_stain_2_11" type="Sprite2D"] +texture = ExtResource("1_1m0gx") +region_enabled = true +region_rect = Rect2(90, 72, 36, 18) diff --git a/Char/Char_Components/Blood/Art/blood_stain_2_12.tscn b/Char/Char_Components/Blood/Art/blood_stain_2_12.tscn new file mode 100644 index 0000000..adf2fb9 --- /dev/null +++ b/Char/Char_Components/Blood/Art/blood_stain_2_12.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://b573pp1o23j4y"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_0if4e"] + +[node name="blood_stain_2_12" type="Sprite2D"] +texture = ExtResource("1_0if4e") +region_enabled = true +region_rect = Rect2(132, 78, 30, 12) diff --git a/Char/Char_Components/Blood/Art/spr_blood2_0.png b/Char/Char_Components/Blood/Art/spr_blood2_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ff758d02098cd9c85f3ca5be62f8665c026681 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!F*2_#}E(iqh}4d4m$|2IR5<~`hBx8A4^*3 z#Fkr*s(YEM-|YS0wDCYhf{uZh1a}YXF{b232-h!rZSAb>yCwG5&G#*?KCb%WVrJfa hOl5FgA8UXAV5r>MmRq09mIt(&!PC{xWt~$(698{@N4fw2 literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Blood/Art/spr_blood2_0.png.import b/Char/Char_Components/Blood/Art/spr_blood2_0.png.import new file mode 100644 index 0000000..cfa9f41 --- /dev/null +++ b/Char/Char_Components/Blood/Art/spr_blood2_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://411dga7lbi6i" +path="res://.godot/imported/spr_blood2_0.png-b8c515ae7d2fdc5e8c799f6b03dc93f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Blood/Art/spr_blood2_0.png" +dest_files=["res://.godot/imported/spr_blood2_0.png-b8c515ae7d2fdc5e8c799f6b03dc93f8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Blood/Art/spr_blood2_1.png b/Char/Char_Components/Blood/Art/spr_blood2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6cbaff1ab4eecbedcc8398d3c174ace7f78e5b GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!P%ZJjv*f2M=u6)9aa!vxF~aXapmS*Ucr=^ zF5ZPod-{1!by+Gs5|!Y^fazIlFFyIl-Ba$R`TRg)LHv&YoNkxcwjQkfQOaoZnI(Bz z+nm+04|W&)=jyp@Q6MvC-^VvR$E^RZ{9OFJR@>m*pWkPAkBLVA|LBKdGRUs)-H(|M X#dn;TxkW%6=u8GrS3j3^P6j|6 zKeS7DY^H2Hxy;*T57S~sbokhJHLyx3Iq;$ZBydc0>6FJMa$B#RzgpV+-bEt) zSBBiXBx}B!aD%=Klb-wYF7ltWJ!B!=etG}V=bXpXO_sgZ*za!8_ayP<{FQ5al4UMV z*cbDCYEDPlz-Nx1{l;XAb2igxE(+@I8DEfJn%aQgi2*=#*?B|bHO-f;T;+GB=g zNlWCS+F#D)dF<75{axKxuE&xl7it4qKg##>&TmDs?cVu5ag8&j##J*eL;)Sn;OXk; Jvd$@?2>@^|Xs-YO literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Blood/Art/spr_blood2_4.png.import b/Char/Char_Components/Blood/Art/spr_blood2_4.png.import new file mode 100644 index 0000000..597f398 --- /dev/null +++ b/Char/Char_Components/Blood/Art/spr_blood2_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de3nomyhghkvi" +path="res://.godot/imported/spr_blood2_4.png-5c69b4d1ff3d78a2d681ddad82c542c3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Blood/Art/spr_blood2_4.png" +dest_files=["res://.godot/imported/spr_blood2_4.png-5c69b4d1ff3d78a2d681ddad82c542c3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Blood/Art/spr_blood2_5.png b/Char/Char_Components/Blood/Art/spr_blood2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9198e25414f192576e983408d1e0346cf7b56240 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!7fi1#}E(iqZd5+8WaRr1N+aNy}d!fQRgclky+BQ zGW(J{PmY#MSQnlBR#bu)4GJf{&|!T%H7dJar}=$qf=cqs%)&WmZ=RoKy+47aIO%7A zSESvO&ZGAi9$mX?V1J(mRIF&Ze|qc3`PaqnGcLvoAAi2}jWH>8 Wa`kzSba|jN89ZJ6T-G@yGywo%I9v4q literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Blood/Art/spr_blood3_1.png.import b/Char/Char_Components/Blood/Art/spr_blood3_1.png.import new file mode 100644 index 0000000..b459d70 --- /dev/null +++ b/Char/Char_Components/Blood/Art/spr_blood3_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbx7xette0hx7" +path="res://.godot/imported/spr_blood3_1.png-dc2ed1d778183c37b39e826d07829e8c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Blood/Art/spr_blood3_1.png" +dest_files=["res://.godot/imported/spr_blood3_1.png-dc2ed1d778183c37b39e826d07829e8c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Blood/Art/spr_blood3_2.png b/Char/Char_Components/Blood/Art/spr_blood3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d10453d894ae117f55338b094d6af8c3a21765 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Ihpajv*f2M=vsR9Wvl?dnmit{qN_NS(6vr_kjAAIqMY5tB2XN>p6AB_0esyF}r zp&g$}Rvz3T^#50UJ;O2Ce``|DTU6zK6b2iQV&DIK8TI#p(vTuE{9#(m?8e^1Cn0NKl~8ivMZ-nL#mvV7*KQTqdat@e>fn!OyG-UE z-|XLZ`snkO$}fLDzRRP0Vdrc;c}Ycy&95*0zOr!YMP|1}2d^&V0vn|L>iZwI$1DEK u|8KO$@%D$rZ_~MsMQT4rHU9n4ZOn7__FTU3qvIIRr3{{~elF{r5}E+7p=i1Q literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Blood/Art/spr_blood3_3.png.import b/Char/Char_Components/Blood/Art/spr_blood3_3.png.import new file mode 100644 index 0000000..a8c05eb --- /dev/null +++ b/Char/Char_Components/Blood/Art/spr_blood3_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi6nm4qdr1at6" +path="res://.godot/imported/spr_blood3_3.png-42efb0c0a85df4110fa91d3e059dd4fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Blood/Art/spr_blood3_3.png" +dest_files=["res://.godot/imported/spr_blood3_3.png-42efb0c0a85df4110fa91d3e059dd4fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Blood/Art/spr_blood3_4.png b/Char/Char_Components/Blood/Art/spr_blood3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d0653aac9059e98a8ec348a42dcb08e93de9ac50 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!8x8Tjv*f2M=u3(9aa!vxF~aXaph*+X*v-z z!@esAKden*%1bJ8JrbW_f)%dGSbKECH`yNbs`rK$9_%sSE_zJ(`>~yN@17q1W5wCS z`hIJ*b<@Ne>wRyoK9umx+b4H_M_tK>4Zrh5C3vAw``P@ppFSt9iD=JkZoiyp+`|Tj c=eu9CR$4W3R*HX&1iF*K)78&qol`;+01)e5zW@LL literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Blood/Art/spr_blood3_4.png.import b/Char/Char_Components/Blood/Art/spr_blood3_4.png.import new file mode 100644 index 0000000..c248bb0 --- /dev/null +++ b/Char/Char_Components/Blood/Art/spr_blood3_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dosr0uksuoqdf" +path="res://.godot/imported/spr_blood3_4.png-2c985ec843feec3959c998f45398b9a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Blood/Art/spr_blood3_4.png" +dest_files=["res://.godot/imported/spr_blood3_4.png-2c985ec843feec3959c998f45398b9a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Blood/Art/spr_blood3_5.png b/Char/Char_Components/Blood/Art/spr_blood3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8659b6d36eedcb1c7f8e53166c2ae2d58d5931 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!3s|o#}E(iqZbYN4k+*(4d^>}wt1J*WV01B z9_q^d;D~aGX}s8g8*W_nU9Nv;y1}~(?cvS&>l-#IN$)V5bI@bc;eP)2JZlnScAEWB r?_mQ%(cS<1HYUmas}clqp1Vr_@~_y)?!843=mrK)S3j3^P6 void: + #create_part1_blood(Vector2(1,0)) + +func _physics_process(_delta: float) -> void: + if blood_part_2_enabled and randf() > 0.5: + var pos = global_position + var dir = get_parent().velocity.normalized() + spawn_blood_part_2(pos,dir) + +#region 初始涂墙 +func create_part1_blood(direction): + var current_rays = generate_rays(direction) + for each_ray in current_rays: + create_two_segment_sprite_line(each_ray["start"], each_ray["middle_point"], each_ray["end"], randi_range(10,30),randi_range(1,3)) + +func generate_rays(direction: Vector2) -> Array: + var current_rays: Array = [] + direction = direction.normalized() + var ray_count = randi_range(min_rays, max_rays) + + # 1. 计算角度范围 + var base_angle = direction.angle() + var max_deviation = deg_to_rad(spread_angle) + var section_size = (max_deviation * 2) / (ray_count + 1) + var start_angle = base_angle - max_deviation + + # 2. 创建所有射线 + var raycasts: Array[RayCast2D] = [] + for i in ray_count: + var section_start = start_angle + section_size * i + var section_end = section_start + section_size + var final_angle = randf_range(section_start, section_end) + + var raycast = RayCast2D.new() + add_child(raycast) + raycasts.append(raycast) + + raycast.position = Vector2.ZERO + var ray_direction = Vector2(cos(final_angle), sin(final_angle)) + var ray_length = randf_range(min_length, max_length) + raycast.target_position = ray_direction * ray_length + + raycast.collision_mask = 0 + for layer in [20,22,23,24,25]: + raycast.set_collision_mask_value(layer, true) + + raycast.enabled = true + raycast.force_raycast_update() + + # 3. 处理射线结果 + for i in ray_count: + var raycast = raycasts[i] + var ray_direction = raycast.target_position.normalized() + var intended_length = raycast.target_position.length() + + # 生成60%-80%之间的随机比例 + var middle_ratio = randf_range(0.5, 0.8) + + if raycast.is_colliding(): + var global_collision_point = raycast.get_collision_point() + var distance_to_collision = global_position.distance_to(global_collision_point) + + if distance_to_collision <= intended_length: + # 计算中间点(在实际碰撞点之前) + var middle_point = global_position.lerp(global_collision_point, middle_ratio) + current_rays.append({ + "start": global_position, + "end": global_collision_point, + "middle_point": middle_point, + "collision": true, + "out_of_range_collision": false, + "intended_length": intended_length + }) + else: + var global_clamped_end = global_position + (ray_direction * intended_length) + var middle_point = global_position.lerp(global_clamped_end, middle_ratio) + current_rays.append({ + "start": global_position, + "end": global_clamped_end, + "middle_point": middle_point, + "collision": false, + "out_of_range_collision": true, + "intended_length": intended_length + }) + else: + var global_intended_end = global_position + (ray_direction * intended_length) + var middle_point = global_position.lerp(global_intended_end, middle_ratio) + current_rays.append({ + "start": global_position, + "end": global_intended_end, + "middle_point": middle_point, + "collision": false, + "out_of_range_collision": false, + "intended_length": intended_length + }) + raycast.queue_free() + + return current_rays + +# 主函数:生成三点两段的精灵线 +func create_two_segment_sprite_line( + start_pos: Vector2, + middle_pos: Vector2, + end_pos: Vector2, + first_segment_count: int, + second_segment_count: int, +) -> void: + var sprite_scene_group_1: Array[PackedScene] = [ + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_01.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_02.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_03.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_04.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_05.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_06.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_07.tscn") + ] + var sprite_scene_group_2: Array[PackedScene] = [ + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_01.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_02.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_03.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_04.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_05.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_06.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_07.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_08.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_09.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_10.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_12.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_11.tscn") + ] + + _last_sprite_index = -1 # 重置上一次的索引 + # 生成两段 + create_sprite_line_segment(start_pos, middle_pos, first_segment_count, 1.1, 1.0, sprite_scene_group_1) + _last_sprite_index = -1 # 两段之间重置,让两段独立 + create_sprite_line_segment(middle_pos, end_pos, second_segment_count, 0.8, 0.6, sprite_scene_group_2) + +# 生成单段精灵线 +func create_sprite_line_segment( + start_pos: Vector2, + end_pos: Vector2, + sprite_count: int, + start_scale: float, + end_scale: float, + _sprite_scene_group: Array[PackedScene] +) -> void: + var parent = get_tree().get_first_node_in_group("Effect_Group") + if not parent: + push_warning("未找到Effect_Group组的节点!") + return + + sprite_count = maxi(1, sprite_count) + var direction = end_pos - start_pos + + for i in range(sprite_count): + var progress = float(i) / (sprite_count - 1) if sprite_count > 1 else 0.0 + var _current_pos = start_pos.lerp(end_pos, progress) + var _scale_value = lerp(start_scale, end_scale, progress) + var _rotation = direction.angle() + + # 随机选择一个场景(避免重复) + #var selected_scene = _get_random_sprite_scene(sprite_scene_group) + #_create_single_sprite(current_pos, _rotation, scale_value, parent, selected_scene) + + var blood_impulse_percent = randf() + if blood_impulse_percent > 0.9: + spawn_blood_part_1(start_pos,end_pos) + + blood_part_2_enabled = true + +# 随机选择场景(避免与上次重复) +func _get_random_sprite_scene(sprite_scene_group: Array[PackedScene]) -> PackedScene: + var group_size = sprite_scene_group.size() + if group_size == 1: + return sprite_scene_group[0] + + # 生成可用索引列表(排除上次使用的索引) + var available_indices: Array[int] = [] + for i in range(group_size): + if i != _last_sprite_index: + available_indices.append(i) + + # 随机选择一个新索引 + var random_index = available_indices[randi() % available_indices.size()] + _last_sprite_index = random_index # 更新上次使用的索引 + + return sprite_scene_group[random_index] + +# 创建单个精灵 +func _create_single_sprite(pos: Vector2, _rotation: float, scale_value: float, parent: Node, sprite_scene: PackedScene) -> void: + var sprite = sprite_scene.instantiate() as Sprite2D + if not sprite: + push_warning("场景实例化失败!") + return + + sprite.position = pos + sprite.rotation = _rotation + sprite.scale = Vector2(scale_value, scale_value) + sprite.self_modulate = Color.from_string("959595ca", Color.WHITE) + parent.add_child(sprite) + +#region End + +func spawn_blood_part_1(start_pos: Vector2, end_pos: Vector2) -> void: + var effect_scene = preload("res://Char/Char_Components/Blood/blood_part.tscn") + # 计算方向向量(标准化) + var dir = (end_pos - start_pos).normalized() + + # 随机选择生成位置 + var spawn_pos = start_pos if randi() % 2 == 0 else end_pos + + # 实例化场景 + var effect_instance = effect_scene.instantiate() + + # 设置位置和旋转 + effect_instance.global_position = spawn_pos + effect_instance.rotation = dir.angle() + effect_instance.can_stain = true + effect_instance.z_index = 2 + + # 设置速度 (假设effect_instance继承自CharacterBody2D) + effect_instance.velocity = dir * randf_range(100,200) + + # 添加到效果组的第一个节点下 + var effect_parent = get_tree().get_first_node_in_group("Effect_Group") + if effect_parent: + effect_parent.add_child(effect_instance) + +func spawn_blood_part_2(pos: Vector2, dir: Vector2) -> void: + var PROJECTILE_SPEED = 80.0 + var scene = preload("res://Char/Char_Components/Blood/blood_part.tscn") + + # 确保方向向量有效 + if dir.length_squared() == 0: + dir = Vector2(0,1) + + # 获取特定组的父节点 + var parent = get_tree().get_first_node_in_group("Effect_Group") + if not parent: + push_error("Cannot find Effect_Group node") + return + + # 标准化方向向量 + var normalized_dir = dir.normalized() + + # 实例化场景 + var instance = scene.instantiate() as CharacterBody2D + if not instance: + push_error("Failed to instantiate scene or invalid type") + return + + # 添加到场景树 + parent.add_child(instance) + + # 计算基础角度和随机偏移 + var base_angle = (-normalized_dir).angle() + var random_offset = deg_to_rad(randf_range(-3.0, 3.0)) # 转换度数为弧度 + var final_angle = base_angle + random_offset + + # 设置位置和朝向 + instance.global_position = pos + instance.rotation = final_angle + instance.scale.y *= 1 if randf() < 0.5 else -1 #血液喷出动画左右镜像 + instance.can_stain = true + instance.z_index = 2 + + # 根据最终角度计算速度方向 + var final_dir = Vector2.from_angle(final_angle + PI) # 加PI是因为我们要反方向 + + # 设置初始速度 + instance.velocity = final_dir * PROJECTILE_SPEED diff --git a/Char/Char_Components/Blood/Blood_Component.gd.uid b/Char/Char_Components/Blood/Blood_Component.gd.uid new file mode 100644 index 0000000..79865b2 --- /dev/null +++ b/Char/Char_Components/Blood/Blood_Component.gd.uid @@ -0,0 +1 @@ +uid://5h4w13512vya diff --git a/Char/Char_Components/Blood/Blood_Component.tscn b/Char/Char_Components/Blood/Blood_Component.tscn new file mode 100644 index 0000000..4dc49f2 --- /dev/null +++ b/Char/Char_Components/Blood/Blood_Component.tscn @@ -0,0 +1,136 @@ +[gd_scene load_steps=12 format=3 uid="uid://bj7ycp6aj85je"] + +[ext_resource type="Script" uid="uid://5h4w13512vya" path="res://Char/Char_Components/Blood/Blood_Component.gd" id="1_d6wdq"] +[ext_resource type="Texture2D" uid="uid://bqtct1nxe724a" path="res://Char/Char_Components/Blood/Art/spr_blood3_0.png" id="2_n46qh"] +[ext_resource type="Texture2D" uid="uid://dbx7xette0hx7" path="res://Char/Char_Components/Blood/Art/spr_blood3_1.png" id="3_fyp4q"] +[ext_resource type="Texture2D" uid="uid://bi6nm4qdr1at6" path="res://Char/Char_Components/Blood/Art/spr_blood3_3.png" id="4_3tgul"] +[ext_resource type="Texture2D" uid="uid://dosr0uksuoqdf" path="res://Char/Char_Components/Blood/Art/spr_blood3_4.png" id="5_jpkhl"] +[ext_resource type="Texture2D" uid="uid://cuo001phdjlds" path="res://Char/Char_Components/Blood/Art/spr_blood3_5.png" id="6_g8yvn"] + +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_bxxjd"] + +[sub_resource type="Animation" id="Animation_rbj3g"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [SubResource("CompressedTexture2D_bxxjd")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(10, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-0.165806] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:self_modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.92549, 0, 0, 0)] +} + +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_0ycfe"] + +[sub_resource type="Animation" id="Animation_xwo6r"] +resource_name = "blood_hurt_begin" +length = 0.6 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("2_n46qh"), ExtResource("3_fyp4q"), SubResource("CompressedTexture2D_0ycfe"), ExtResource("4_3tgul"), ExtResource("5_jpkhl"), ExtResource("6_g8yvn")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.3, 0.4), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [Vector2(10, 1), Vector2(10, -1), Vector2(10, -3)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.3, 0.4, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [0.0, -0.165806, -0.296706, -0.986111] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:self_modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.5, 0.6), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(0.923959, 4.86121e-06, 1.34766e-06, 1), Color(0.923959, 4.86121e-06, 1.34766e-06, 1), Color(0.92549, 0, 0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_uoogr"] +_data = { +&"RESET": SubResource("Animation_rbj3g"), +&"blood_hurt_begin": SubResource("Animation_xwo6r") +} + +[node name="Blood_Component" type="Node2D"] +script = ExtResource("1_d6wdq") + +[node name="Sprite2D" type="Sprite2D" parent="."] +self_modulate = Color(0.92549, 0, 0, 0) +position = Vector2(10, 1) +rotation = -0.165806 +texture = SubResource("CompressedTexture2D_bxxjd") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_uoogr") +} diff --git a/Char/Char_Components/Blood/blood_mask.gdshader b/Char/Char_Components/Blood/blood_mask.gdshader new file mode 100644 index 0000000..51f5be0 --- /dev/null +++ b/Char/Char_Components/Blood/blood_mask.gdshader @@ -0,0 +1,12 @@ +// mask_shader.gdshader +shader_type canvas_item; + +uniform sampler2D mask_texture; + +void fragment() { + vec4 sprite_color = texture(TEXTURE, UV); + vec4 mask_color = texture(mask_texture, SCREEN_UV); + + COLOR = sprite_color; + COLOR.a *= mask_color.r; +} \ No newline at end of file diff --git a/Char/Char_Components/Blood/blood_mask.gdshader.uid b/Char/Char_Components/Blood/blood_mask.gdshader.uid new file mode 100644 index 0000000..7fc9ea5 --- /dev/null +++ b/Char/Char_Components/Blood/blood_mask.gdshader.uid @@ -0,0 +1 @@ +uid://ft0ftw3xf13d diff --git a/Char/Char_Components/Blood/blood_part.gd b/Char/Char_Components/Blood/blood_part.gd new file mode 100644 index 0000000..a435d23 --- /dev/null +++ b/Char/Char_Components/Blood/blood_part.gd @@ -0,0 +1,113 @@ +extends CharacterBody2D + +var can_stain = false + +# 所有可用的动画名称(方便后续添加新动画) +const AVAILABLE_ANIMATIONS = [ + "impulse_1", + "impulse_2", + # 未来可以直接在这里添加新的动画名称 + # "impulse_3", + # "impulse_4", +] + +func _ready() -> void: + var anim_player = $AnimationPlayer + anim_player.speed_scale = randf_range(0.8,1.2) + + # 确保有可用的动画 + if AVAILABLE_ANIMATIONS.is_empty(): + push_warning("没有可用的动画!") + queue_free() + return + + # 随机选择一个动画名称 + var random_index = randi() % AVAILABLE_ANIMATIONS.size() + var chosen_anim = AVAILABLE_ANIMATIONS[random_index] + + # 验证动画是否存在 + if not anim_player.has_animation(chosen_anim): + push_warning("动画 %s 不存在!" % chosen_anim) + queue_free() + return + + # 播放选中的动画 + anim_player.play(chosen_anim) + +func _physics_process(_delta: float) -> void: + move_and_slide() + +func spawn_random_effect() -> Node2D: + if not can_stain: + return + var pos = global_position + var dir = velocity.normalized() + var group_1: Array[PackedScene] = [ + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_01.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_02.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_03.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_04.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_05.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_06.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_1_07.tscn") + ] + var group_2: Array[PackedScene] = [ + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_01.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_02.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_03.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_04.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_05.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_06.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_07.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_08.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_09.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_10.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_12.tscn"), + preload("res://Char/Char_Components/Blood/Art/blood_stain_2_11.tscn") + ] + # 随机选择使用哪个组(50%概率) + var selected_group: Array[PackedScene] + var is_group_1: bool = randf() < 0.5 + selected_group = group_1 if is_group_1 else group_2 + + # 如果选中的组是空的,使用另一个组 + if selected_group.is_empty(): + selected_group = group_2 if is_group_1 else group_1 + is_group_1 = !is_group_1 + + # 随机选择场景并实例化 + var random_scene: PackedScene = selected_group[randi() % selected_group.size()] + var instance = random_scene.instantiate() as Node2D + if not instance: + push_error("Failed to instantiate scene!") + return null + + # 设置位置 + instance.global_position = pos + instance.self_modulate = Color.from_string("959595ca", Color.WHITE) + instance.z_index = 2 + + # 根据组别应用不同的变换 + if is_group_1: + # 对group_1随机旋转 + instance.rotation = randf_range(0, TAU) # TAU = 2π + #随机缩放 + var random_scale = randf_range(1.1, 1.6) + instance.scale = Vector2(random_scale, random_scale) + else: + # 对group_2设置指定朝向 + instance.transform = Transform2D(dir.angle(), pos) + #随机缩放 + var random_scale = randf_range(0.8, 1) + instance.scale = Vector2(random_scale, random_scale) + + # 添加到效果组 + var effect_group = get_tree().get_first_node_in_group("Effect_Group") + if effect_group: + effect_group.add_child(instance) + else: + push_error("Effect_Group not found!") + instance.queue_free() + return null + + return instance diff --git a/Char/Char_Components/Blood/blood_part.gd.uid b/Char/Char_Components/Blood/blood_part.gd.uid new file mode 100644 index 0000000..6c036be --- /dev/null +++ b/Char/Char_Components/Blood/blood_part.gd.uid @@ -0,0 +1 @@ +uid://bxpdshv4vrg5g diff --git a/Char/Char_Components/Blood/blood_part.tscn b/Char/Char_Components/Blood/blood_part.tscn new file mode 100644 index 0000000..56c1a0b --- /dev/null +++ b/Char/Char_Components/Blood/blood_part.tscn @@ -0,0 +1,194 @@ +[gd_scene load_steps=18 format=3 uid="uid://bqrjt8yb6bl27"] + +[ext_resource type="Script" uid="uid://bxpdshv4vrg5g" path="res://Char/Char_Components/Blood/blood_part.gd" id="1_vga13"] +[ext_resource type="Texture2D" uid="uid://bqtct1nxe724a" path="res://Char/Char_Components/Blood/Art/spr_blood3_0.png" id="2_scf3e"] +[ext_resource type="Texture2D" uid="uid://dbx7xette0hx7" path="res://Char/Char_Components/Blood/Art/spr_blood3_1.png" id="3_5dmvv"] +[ext_resource type="Texture2D" uid="uid://c6g0dm5hm7t3" path="res://Char/Char_Components/Blood/Art/spr_blood3_2.png" id="4_7rq5f"] +[ext_resource type="Texture2D" uid="uid://bi6nm4qdr1at6" path="res://Char/Char_Components/Blood/Art/spr_blood3_3.png" id="5_p06en"] +[ext_resource type="Texture2D" uid="uid://dosr0uksuoqdf" path="res://Char/Char_Components/Blood/Art/spr_blood3_4.png" id="6_hc7gt"] +[ext_resource type="Texture2D" uid="uid://cuo001phdjlds" path="res://Char/Char_Components/Blood/Art/spr_blood3_5.png" id="7_32u30"] +[ext_resource type="Texture2D" uid="uid://411dga7lbi6i" path="res://Char/Char_Components/Blood/Art/spr_blood2_0.png" id="8_nl6dm"] +[ext_resource type="Texture2D" uid="uid://cywd468wrclbi" path="res://Char/Char_Components/Blood/Art/spr_blood2_1.png" id="9_e20gj"] +[ext_resource type="Texture2D" uid="uid://ylmx7ejlfje" path="res://Char/Char_Components/Blood/Art/spr_blood2_2.png" id="10_6jt12"] +[ext_resource type="Texture2D" uid="uid://va4x1qryhleq" path="res://Char/Char_Components/Blood/Art/spr_blood2_3.png" id="11_ntuc6"] +[ext_resource type="Texture2D" uid="uid://de3nomyhghkvi" path="res://Char/Char_Components/Blood/Art/spr_blood2_4.png" id="12_abujt"] +[ext_resource type="Texture2D" uid="uid://cudohua7dtpks" path="res://Char/Char_Components/Blood/Art/spr_blood2_5.png" id="13_bba02"] + +[sub_resource type="Animation" id="Animation_g3m3s"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("2_scf3e")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(10, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} + +[sub_resource type="Animation" id="Animation_n86p7"] +resource_name = "impulse_1" +length = 0.45 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.25, 0.35), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("2_scf3e"), ExtResource("3_5dmvv"), ExtResource("4_7rq5f"), ExtResource("5_p06en"), ExtResource("6_hc7gt"), ExtResource("7_32u30")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(10, 1), Vector2(9, 1), Vector2(8, 1), Vector2(7, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.35, 0.45), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(0.643137, 0.0392157, 0.0392157, 1), Color(0.643137, 0.0392157, 0.0392157, 1), Color(1, 1, 1, 0)] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.2, 0.45), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"spawn_random_effect" +}, { +"args": [], +"method": &"queue_free" +}] +} + +[sub_resource type="Animation" id="Animation_ri227"] +resource_name = "impulse_2" +length = 0.45 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.25, 0.35), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("8_nl6dm"), ExtResource("9_e20gj"), ExtResource("10_6jt12"), ExtResource("11_ntuc6"), ExtResource("12_abujt"), ExtResource("13_bba02")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(11, 1), Vector2(9, 1), Vector2(8, 1), Vector2(7, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.35, 0.45), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(0.643137, 0.0392157, 0.0392157, 1), Color(0.643137, 0.0392157, 0.0392157, 1), Color(1, 1, 1, 0)] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.2, 0.45), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"spawn_random_effect" +}, { +"args": [], +"method": &"queue_free" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_64yuh"] +_data = { +&"RESET": SubResource("Animation_g3m3s"), +&"impulse_1": SubResource("Animation_n86p7"), +&"impulse_2": SubResource("Animation_ri227") +} + +[node name="Blood_Part" type="CharacterBody2D"] +z_index = 2 +script = ExtResource("1_vga13") + +[node name="Sprite2D" type="Sprite2D" parent="."] +self_modulate = Color(1, 1, 1, 0) +light_mask = 2 +visibility_layer = 2 +position = Vector2(10, 1) +scale = Vector2(1.8, 1.8) +texture = ExtResource("2_scf3e") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_64yuh") +} diff --git a/Char/Char_Components/Blood/blood_stain.gd b/Char/Char_Components/Blood/blood_stain.gd new file mode 100644 index 0000000..e537a70 --- /dev/null +++ b/Char/Char_Components/Blood/blood_stain.gd @@ -0,0 +1,147 @@ +extends Sprite2D + +@onready var tile_group = get_tree().get_first_node_in_group("Tile_Group") +var mask_viewport: SubViewport +var mask_texture: ViewportTexture +var is_queued_for_update := false +var camera: Camera2D +var last_camera_position := Vector2.ZERO +var last_camera_offset := Vector2.ZERO # 新增:跟踪相机偏移量 + +class MaskRenderer extends Node2D: + var is_queued_for_update := false + + func _draw(): + var tile_group = get_tree().get_first_node_in_group("Tile_Group") + if not tile_group or tile_group.tilemaplayers.is_empty(): + return + + var reference_layer = tile_group.tilemaplayers[0] + + for info in tile_group.mask_tile_info: + var base_pos = reference_layer.map_to_local(info.position) + + for shape in info.shapes: + match shape.type: + "polygon": + var transformed_points = PackedVector2Array() + for point in shape.points: + transformed_points.append(base_pos + point) + draw_colored_polygon(transformed_points, Color.WHITE) + + "rect": + var pos = base_pos - shape.size/2 + var rect = Rect2(pos, shape.size) + draw_rect(rect, Color.WHITE, true) + + func queue_update(): + if not is_queued_for_update: + is_queued_for_update = true + RenderingServer.frame_post_draw.connect(_on_frame_post_draw, CONNECT_ONE_SHOT) + + func _on_frame_post_draw(): + is_queued_for_update = false + queue_redraw() + +func _ready(): + # 设置 SubViewport + _setup_viewport() + # 设置着色器 + _setup_shader() + # 订阅信号 + tile_group.mask_tiles_updated.connect(_on_mask_tiles_updated) + # 寻找并跟踪相机 + _find_and_track_camera() + + await RenderingServer.frame_post_draw + _update_viewport_for_camera() + material.set_shader_parameter("mask_texture", mask_viewport.get_texture()) + +func _setup_viewport(): + mask_viewport = SubViewport.new() + mask_viewport.transparent_bg = true + mask_viewport.render_target_update_mode = SubViewport.UPDATE_ALWAYS + add_child(mask_viewport) + + var mask_renderer = MaskRenderer.new() + mask_viewport.add_child(mask_renderer) + +func _setup_shader(): + var shader_material = ShaderMaterial.new() + shader_material.shader = preload("res://Char/Char_Components/Blood/blood_mask.gdshader") + material = shader_material + +func _find_and_track_camera(): + # 寻找场景中的相机 + var level = get_tree().get_first_node_in_group("Level") + if level: + camera = level.get_node_or_null("Player/Camera2D") + if camera: + last_camera_position = camera.get_screen_center_position() + +func _process(_delta): + if not camera: + return + + var current_pos = camera.get_screen_center_position() + var current_offset = camera.offset + + # 检查相机位置或偏移量是否发生变化 + if current_pos != last_camera_position or current_offset != last_camera_offset: + last_camera_position = current_pos + last_camera_offset = current_offset + _update_viewport_for_camera() + +func _update_viewport_for_camera(): + if not camera: + return + + # 获取相机的视口大小和缩放 + var viewport_rect = get_viewport_rect() + var zoom = camera.zoom + var screen_size = viewport_rect.size + + # 计算实际需要的视口大小(考虑缩放) + var actual_size = screen_size / zoom + + # 更新 SubViewport 大小 + mask_viewport.size = actual_size + + # 获取相机的全局位置和偏移量 + var camera_global_pos = camera.get_screen_center_position() + var camera_offset = camera.offset + + # 计算实际的相机中心位置(考虑偏移量) + var effective_camera_center = camera_global_pos + camera_offset * zoom + + # 计算视口的左上角位置 + var top_left = effective_camera_center - (actual_size / 2) + + # 更新 MaskRenderer 的位置以对齐相机 + if mask_viewport.get_child(0) is MaskRenderer: + var mask_renderer = mask_viewport.get_child(0) + mask_renderer.position = -top_left + + # 触发一次更新 + _update_mask() + +func _update_mask(): + if mask_viewport and mask_viewport.get_child(0) is MaskRenderer: + var mask_renderer = mask_viewport.get_child(0) as MaskRenderer + mask_renderer.queue_update() + +func _on_mask_tiles_updated(): + if not is_queued_for_update: + is_queued_for_update = true + RenderingServer.frame_post_draw.connect(_update_mask_deferred, CONNECT_ONE_SHOT) + +func _update_mask_deferred(): + is_queued_for_update = false + _update_mask() + +func cleanup(): + if tile_group and tile_group.mask_tiles_updated.is_connected(_on_mask_tiles_updated): + tile_group.mask_tiles_updated.disconnect(_on_mask_tiles_updated) + +func _exit_tree(): + cleanup() diff --git a/Char/Char_Components/Blood/blood_stain.gd.uid b/Char/Char_Components/Blood/blood_stain.gd.uid new file mode 100644 index 0000000..737eafb --- /dev/null +++ b/Char/Char_Components/Blood/blood_stain.gd.uid @@ -0,0 +1 @@ +uid://dxm1qly14lxs8 diff --git a/Char/Char_Components/Blood/blood_stain.tscn b/Char/Char_Components/Blood/blood_stain.tscn new file mode 100644 index 0000000..6cdba39 --- /dev/null +++ b/Char/Char_Components/Blood/blood_stain.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=5 format=3 uid="uid://cqvw1nk6yco4e"] + +[ext_resource type="Texture2D" uid="uid://1e5r5c6bsoo" path="res://Char/Char_Components/Blood/Art/blood_stain_2.png" id="1_ed4nt"] +[ext_resource type="Shader" uid="uid://ft0ftw3xf13d" path="res://Char/Char_Components/Blood/blood_mask.gdshader" id="1_mxfgm"] +[ext_resource type="Script" uid="uid://dxm1qly14lxs8" path="res://Char/Char_Components/Blood/blood_stain.gd" id="2_bsbek"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_qkvmt"] +shader = ExtResource("1_mxfgm") + +[node name="Blood_Stain_Trail" type="Sprite2D"] +material = SubResource("ShaderMaterial_qkvmt") +position = Vector2(0, 1) +texture = ExtResource("1_ed4nt") +region_enabled = true +region_rect = Rect2(6, 12, 30, 12) +script = ExtResource("2_bsbek") diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_0.png b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_0.png new file mode 100644 index 0000000000000000000000000000000000000000..214f6185a65ec0ec90d2c907c6e7b4bdc548ce8d GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!V56stV~B!lvI6;>1s;*b3=DjSL74G){)!Z!;1o|6#}Etuw-c!lvI6;>1s;*b3=DjSL74G){)!Z!-~vw<#}Etuw|$OWha3c0zTdR0`tpKVq^9+G zjYH8l(}~korWl!IpYYwV@MO-m-DS7pkDK1}H|~o+u6p9j4m}6r?l`xZ}UI-s>7 z>U*rhhNz-~bAex1-3|?y_w-$vNZk3`$M`O>dLGacn6WQjQRpGh$!CIQ-M5yDKVHRk z+PGY@O}D3ek1LyXM95x_z*7u+xLZU@p1$gMKbiSK$Db)t)y&zB(~H(lKjH^;D}$%2 KpUXO@geCx2ZDwWw literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_2.png.import b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_2.png.import new file mode 100644 index 0000000..64a9c9c --- /dev/null +++ b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwdp4kv4d755p" +path="res://.godot/imported/spr_dustcloud_2.png-e04b8801496146bb4a2e2decf55e2ae5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_2.png" +dest_files=["res://.godot/imported/spr_dustcloud_2.png-e04b8801496146bb4a2e2decf55e2ae5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_3.png b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fb496166e5d332cde90100c7b2d97f854a865f3d GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;3iKO#}Etur~TG^hYSQ=Y7A-_dH$ZYt*#4Qy4gfAD#K>U~}XW^Rk9(3>z%d!rM$))fDU>&8rdj zxNtuys7U{ar5M}Z7RhZ7jK59$8TM@6m9{|ci-mWlJ9ZVHdmdP+?|tJtkBsyERjhh! ee!lvI6;>1s;*b3=DjSL74G){)!Z!;7U&y#}Etuw*l6C%>g{s$KRbeaf4Z8BBd%9tZ6n|?^yWVG+b>FW& zE%KofSKlKYAMqDzI@+63*Uyfyzc~L`Sm`9IEXI`1%5xtL4IR&^JZW0)tZA(EKycHX T$2-}9j%M(5^>bP0l+XkK55s5T literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_4.png.import b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_4.png.import new file mode 100644 index 0000000..102eefe --- /dev/null +++ b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u18w5owa3bf3" +path="res://.godot/imported/spr_dustcloud_4.png-669cecba10ce98f3d7c8f9b93f9d2a8b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_4.png" +dest_files=["res://.godot/imported/spr_dustcloud_4.png-669cecba10ce98f3d7c8f9b93f9d2a8b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2127c53124de1951beec81d0e6cc3d49c4ad815d GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!V2h`VV~Btrqr2o%GP~1c-QAhai}jw{9Z#OSsE7adrTuB*98D9`=9t}RpG0fVMnQ)@E+3MGozwEgiGHPXZJvnq=K|pn}{5}^q`>NUR gR@bdA6h6f2IdyvTbKZ9bK=&|sy85}Sb4q9e0PsIk4gdfE literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png.import b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png.import new file mode 100644 index 0000000..bd8e4b2 --- /dev/null +++ b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://spc3qs84aqyq" +path="res://.godot/imported/spr_dustcloud_5.png-4995857e45ed75a3c63401d3cb45d441.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_5.png" +dest_files=["res://.godot/imported/spr_dustcloud_5.png-4995857e45ed75a3c63401d3cb45d441.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_6.png b/Char/Char_Components/Floor_Wall_FX/Art/spr_dustcloud_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b41079a45934cd14ad900afcea59adaf0520bb GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQ#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!V3?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0V7F7K~z{r?UvyU zf-n$;nblQX!4X`=5m>i@r-uy3 zXue$!2*6Nm|8k!X3IGoWK=`sO4$%K+Si^?{AbbQsa`(XilBGU!01JR|R|tk`032nx zz2aNIa0So}BDwn^06H8l05ttlO2T2iBVo*%SlmKuSjoQtz#WnD{gs7kw+6^wLF?84 zS)g@G05*Q_Ug2bBec;}!tMa{2eN0SJHRjo`JhNv-T% z;kXHax?t8wt2)`n49@^8s5+Ncb+V1S0x)oGCg+?ZL{cMl`dr$5u2LY4bv@6(b*vnl s)reu%SVLoccyNwkajbTM^|_|$2?JS;97}G8t^fc407*qoM6N<$f~rWL%K!iX literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_0.png.import b/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_0.png.import new file mode 100644 index 0000000..2db78b4 --- /dev/null +++ b/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dy02ipw3ha3ru" +path="res://.godot/imported/spr_jumpcloud_0.png-92c1688a67cf151cc937fc82c77657d9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_0.png" +dest_files=["res://.godot/imported/spr_jumpcloud_0.png-92c1688a67cf151cc937fc82c77657d9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_1.png b/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_1.png new file mode 100644 index 0000000000000000000000000000000000000000..67467dd50974fe359bb16ce960a3f1dd16170cd6 GIT binary patch literal 431 zcmV;g0Z{&lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0YpheK~z{r?Um7O z!!Qg)J!@C!2w9;cbd`>f6*_`{Tb*&I996qT9a{tv9Y9#32;H;9#M98w(9qCB=ZiFi3v=cU16VuG z)-24K!_~0-KK%u-)dP64{64L{iJNr+aESKEy8!q#v}RfldCm`M#A;9?ye&Nn{1`ISV`@iy0XB4ude`@%$AjK*6`3E{-7)?r*2PB2U zPT>VC|HAYi&Qf=pl_kGor@Er9d?T}sSF?Z4-);O;So)3N^S>{~U%msv<=!n4@Nhq$JA-}Pni z=eZWsDA&k2@fMdt-~y35Q;P}`SOeZ`1vE1UDTsc1qS(McC0$`%ptWLb;mzN=#ziy# z`g3x8yw79Ln;mcYUAmyVp_|7lH<$TT?%h15%O7`Mz830j8FxJF!P^@fH#c!urF!wc mGdRC3Rr=3@J^$3(3YhuC9Bvd@Md<-O&fw|l=d#Wzp$Pz7-F`6u literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_2.png.import b/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_2.png.import new file mode 100644 index 0000000..e3b1725 --- /dev/null +++ b/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://du12drqa16gwq" +path="res://.godot/imported/spr_jumpcloud_2.png-01e4e3192fef7c8254f57435c46e6e7c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_2.png" +dest_files=["res://.godot/imported/spr_jumpcloud_2.png-01e4e3192fef7c8254f57435c46e6e7c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_3.png b/Char/Char_Components/Floor_Wall_FX/Art/spr_jumpcloud_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef88ca3a04719661dc3e1a0f9478e4884bd857df GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3P5bk!3HG1S#TW$QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtV507srqY_qUff@*Ys&VQ@TuN-I)Pc>|Yn zis<&v36q-mG+9~8dtd(9a0YgUW;GTj~E9p$t(gxde(Qm9nWkdm{F>e$#yR*^2WQ zti6(%l<%&vIoP4exn`EdP?u literal 0 HcmV?d00001 diff --git a/Char/Char_Components/Petals_Leaves/Sakura.png.import b/Char/Char_Components/Petals_Leaves/Sakura.png.import new file mode 100644 index 0000000..ee4a6f6 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/Sakura.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2ncysl2v71nn" +path="res://.godot/imported/Sakura.png-f3726873e9009fc93cd029d0af4dc755.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Char_Components/Petals_Leaves/Sakura.png" +dest_files=["res://.godot/imported/Sakura.png-f3726873e9009fc93cd029d0af4dc755.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Char_Components/Petals_Leaves/Sakura_Component.tscn b/Char/Char_Components/Petals_Leaves/Sakura_Component.tscn new file mode 100644 index 0000000..a46fb24 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/Sakura_Component.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dkgg53dn8lr3k"] + +[ext_resource type="Script" uid="uid://ra8s8ac2gvb0" path="res://Char/Char_Components/Petals_Leaves/sakura_component.gd" id="1_qmr48"] + +[node name="Sakura_Component" type="Node"] +script = ExtResource("1_qmr48") diff --git a/Char/Char_Components/Petals_Leaves/Sakura_Fall.tscn b/Char/Char_Components/Petals_Leaves/Sakura_Fall.tscn new file mode 100644 index 0000000..fc93771 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/Sakura_Fall.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=6 format=3 uid="uid://dkdigqo1emefi"] + +[ext_resource type="Script" uid="uid://bdhb15mqnjfg2" path="res://Char/Char_Components/Petals_Leaves/sakura_fall.gd" id="2_2mj48"] +[ext_resource type="Texture2D" uid="uid://c2ncysl2v71nn" path="res://Char/Char_Components/Petals_Leaves/Sakura.png" id="2_4qm7o"] + +[sub_resource type="Animation" id="Animation_cppck"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Rect2(0, 0, 6, 6)] +} + +[sub_resource type="Animation" id="Animation_630tj"] +resource_name = "move" +length = 0.6 +loop_mode = 2 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:region_rect") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.4, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Rect2(0, 0, 6, 6), Rect2(6, 0, 6, 6), Rect2(12, 0, 6, 6), Rect2(18, 0, 6, 6)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hi3eq"] +_data = { +&"RESET": SubResource("Animation_cppck"), +&"move": SubResource("Animation_630tj") +} + +[node name="Sakura_Fall" type="Node2D"] +z_index = 3 +script = ExtResource("2_2mj48") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_4qm7o") +region_enabled = true +region_rect = Rect2(0, 0, 6, 6) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +root_node = NodePath("../Sprite2D") +libraries = { +"": SubResource("AnimationLibrary_hi3eq") +} +autoplay = "move" + +[node name="RayCast2D" type="RayCast2D" parent="."] +target_position = Vector2(0, 3) +collision_mask = 23592960 +hit_from_inside = true diff --git a/Char/Char_Components/Petals_Leaves/Sakura_Impulse.tscn b/Char/Char_Components/Petals_Leaves/Sakura_Impulse.tscn new file mode 100644 index 0000000..3d98af7 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/Sakura_Impulse.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://bg1ufqdro4aie"] + +[ext_resource type="Script" uid="uid://bwknlix5qpg3i" path="res://Char/Char_Components/Petals_Leaves/sakura_impulse.gd" id="1_s7d1x"] +[ext_resource type="Texture2D" uid="uid://c2ncysl2v71nn" path="res://Char/Char_Components/Petals_Leaves/Sakura.png" id="1_vlpkf"] + +[node name="Sakura_Impulse" type="Node2D"] +z_index = 3 +script = ExtResource("1_s7d1x") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.6, 0.6) +texture = ExtResource("1_vlpkf") +region_enabled = true +region_rect = Rect2(6, 0, 6, 6) diff --git a/Char/Char_Components/Petals_Leaves/sakura_component.gd b/Char/Char_Components/Petals_Leaves/sakura_component.gd new file mode 100644 index 0000000..c1c1958 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/sakura_component.gd @@ -0,0 +1,62 @@ +extends Node + +const sakura_impulse = preload("res://Char/Char_Components/Petals_Leaves/Sakura_Impulse.tscn") +const sakura_fall = preload("res://Char/Char_Components/Petals_Leaves/Sakura_Fall.tscn") + +# 距离线的最大偏移距离 +var max_offset: float = 60.0 + +# 生成一批樱花 +func spawn_sakura_impulse(start_position: Vector2, end_position: Vector2, batch_size: int = 20): + if not sakura_impulse: + return + + for i in batch_size: + var sakura = sakura_impulse.instantiate() + + # 计算线段上的随机点 + var t = randf() + var line_point = start_position.lerp(end_position, t) + + # 计算线段的垂直方向(始终保持向上) + var line_direction = (end_position - start_position).normalized() + var perpendicular = Vector2(-line_direction.y, line_direction.x) + # 确保垂直向量始终指向上方 + if perpendicular.y > 0: + perpendicular = -perpendicular + + # 在垂直方向上随机偏移 + var offset = randf_range(-max_offset, max_offset) + var final_position = line_point + (perpendicular * offset) + + sakura.position = final_position + + var random_dir = Vector2(randf_range(-1,1), randf_range(-1,1)) + var random_speed = randf_range(10,30) + sakura.initialize(random_dir, random_speed) + get_tree().get_first_node_in_group("Effect_Group").add_child(sakura) + +func spawn_sakura_fall(start_position: Vector2, end_position: Vector2, batch_size: int = 20): + if not sakura_fall: + return + + for i in batch_size: + var sakura = sakura_fall.instantiate() + + # 计算线段上的随机点 + var t = randf() + var line_point = start_position.lerp(end_position, t) + + # 计算线段的垂直方向(始终保持向上) + var line_direction = (end_position - start_position).normalized() + var perpendicular = Vector2(-line_direction.y, line_direction.x) + # 确保垂直向量始终指向上方 + if perpendicular.y > 0: + perpendicular = -perpendicular + + # 在垂直方向上随机偏移 + var offset = randf_range(0, max_offset) + var final_position = line_point + (perpendicular * offset) + + sakura.position = final_position + get_tree().get_first_node_in_group("Effect_Group").add_child(sakura) diff --git a/Char/Char_Components/Petals_Leaves/sakura_component.gd.uid b/Char/Char_Components/Petals_Leaves/sakura_component.gd.uid new file mode 100644 index 0000000..08c5141 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/sakura_component.gd.uid @@ -0,0 +1 @@ +uid://ra8s8ac2gvb0 diff --git a/Char/Char_Components/Petals_Leaves/sakura_fall.gd b/Char/Char_Components/Petals_Leaves/sakura_fall.gd new file mode 100644 index 0000000..249b022 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/sakura_fall.gd @@ -0,0 +1,51 @@ +extends Node2D + +@onready var ray_cast_2d: RayCast2D = $RayCast2D + +var fall_speed: float = randf_range(28,32) # 基础下落速度 +var horizontal_speed: float = randf_range(30,40) # 水平摆动速度 +var rotation_speed: float = randf_range(1.9,2.1) # 旋转速度 +var vertical_wave_amplitude: float = randf_range(5,15) # 垂直摆动幅度 +var horizontal_wave_freq: float = randf_range(1,3) # 水平摆动频率 +var vertical_wave_freq: float = randf_range(2.8,3.2) # 垂直摆动频率 + +var time_passed: float = 0.0 +var initial_x: float = 0.0 +var initial_y: float = 0.0 +var rotate_flag: bool = true +var direction: float = 1.0 # 新增:控制方向的变量 + +func _ready(): + initial_x = position.x + initial_y = position.y + + # 随机设置初始方向(1或-1) + direction = 1.0 if randf() > 0.5 else -1.0 + + # 节点进行随机旋转,冲刺生成樱花专属,因为会对初始位置进行调整,不适合impulse之后生成,会有瞬移感觉。 + if rotate_flag: + time_passed = randf() * PI * 2 + rotation_degrees = randf_range(0, 360) + +func _process(delta): + if ray_cast_2d.is_colliding(): + await get_tree().create_timer(0.3).timeout + queue_free() + + time_passed += delta + + # 基础下落移动 + var base_fall = fall_speed * delta + + # 垂直方向的正弦波动 + var vertical_wave = sin(time_passed * vertical_wave_freq) * vertical_wave_amplitude * delta + + # 水平方向的正弦移动(加入direction变量控制方向) + var horizontal_wave = sin(time_passed * horizontal_wave_freq) * horizontal_speed * direction + + # 应用移动 + position.y += base_fall + vertical_wave + position.x = initial_x + horizontal_wave + + # 旋转(可以也加入正弦变化使旋转更自然) + rotation += rotation_speed * delta * (1 + sin(time_passed) * 0.2) diff --git a/Char/Char_Components/Petals_Leaves/sakura_fall.gd.uid b/Char/Char_Components/Petals_Leaves/sakura_fall.gd.uid new file mode 100644 index 0000000..42f9bdf --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/sakura_fall.gd.uid @@ -0,0 +1 @@ +uid://bdhb15mqnjfg2 diff --git a/Char/Char_Components/Petals_Leaves/sakura_impulse.gd b/Char/Char_Components/Petals_Leaves/sakura_impulse.gd new file mode 100644 index 0000000..b5e30f8 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/sakura_impulse.gd @@ -0,0 +1,68 @@ +extends Node2D + +const SAKURA_FALL = preload("res://Char/Char_Components/Petals_Leaves/Sakura_Fall.tscn") + +var direction: Vector2 # 移动方向 +var speed: float # 初始速度 +var velocity: Vector2 # 实际速度向量 + +var time_before_slow: float = 0.2 # 时间A:匀速运动的时间 +var slow_duration: float = 0.1 # 时间B:减速持续时间 +var stop_duration: float = 0.1 # 时间C:停留时间 +var elapsed_time: float = 0.0 # 已经过的时间 + +var is_slowing: bool = false # 是否正在减速 +var is_stopped: bool = false # 是否已经停止 +var original_speed: float # 保存初始速度用于计算减速 + +func _ready(): + #initialize(Vector2(10,-10), 500) + # 初始化速度向量 + velocity = direction.normalized() * speed + original_speed = speed + +func _process(delta): + elapsed_time += delta + if elapsed_time >= time_before_slow and !is_slowing: + # 开始减速 + is_slowing = true + elapsed_time = 0 # 重置计时器用于减速阶段 + + if is_slowing and !is_stopped: + # 在减速阶段 + var slow_progress = min(elapsed_time / slow_duration, 1.0) + # 使用ease_out实现平滑的减速效果 + speed = original_speed * (1.0 - ease(slow_progress, -2.0)) + velocity = direction.normalized() * speed + + if slow_progress >= 1.0: + # 完全停止 + velocity = Vector2.ZERO + is_stopped = true + elapsed_time = 0 # 重置计时器用于停留时间 + + # 如果已经停止,等待一段时间后再创建樱花 + elif is_stopped: + if elapsed_time >= stop_duration: + create_sakura_fall() + queue_free() + + # 应用移动 + position += velocity * delta + +# 初始化函数 +func initialize(initial_direction: Vector2 = Vector2(1,1), initial_speed: float = 30) -> void: + direction = get_random_direction(initial_direction, 30.0) + speed = initial_speed + original_speed = initial_speed + +# 使用旋转矩阵(更简洁的方式) +func get_random_direction(base_direction: Vector2, max_angle_offset: float = 30.0) -> Vector2: + return base_direction.rotated(randf_range(-max_angle_offset, max_angle_offset) * PI / 180.0) + +func create_sakura_fall() -> void: + var sakura = SAKURA_FALL.instantiate() + # 设置樱花效果的位置为当前物体的位置 + sakura.rotate_flag = false + sakura.global_position = self.global_position + get_tree().get_first_node_in_group("Effect_Group").add_child(sakura) diff --git a/Char/Char_Components/Petals_Leaves/sakura_impulse.gd.uid b/Char/Char_Components/Petals_Leaves/sakura_impulse.gd.uid new file mode 100644 index 0000000..cb44be1 --- /dev/null +++ b/Char/Char_Components/Petals_Leaves/sakura_impulse.gd.uid @@ -0,0 +1 @@ +uid://bwknlix5qpg3i diff --git a/Char/Char_Components/fx_component.gd b/Char/Char_Components/fx_component.gd new file mode 100644 index 0000000..04d5540 --- /dev/null +++ b/Char/Char_Components/fx_component.gd @@ -0,0 +1,60 @@ +#挂在角色身上,由角色产生的,可以由角色调用产生相应的fx效果 +#包括:地面扬尘、蹬墙跳特效 +extends Node2D + +# 预加载场景 +@export var FLOOR_DUST = preload("res://Char/Char_Components/Floor_Wall_FX/floor_dust.tscn") +@export var WALL_JUMP_DUST = preload("res://Char/Char_Components/Floor_Wall_FX/wall_jump_dust.tscn") + +func create_floor_dust(direction: int): + # 实例化floor_dust场景 + var dust = FLOOR_DUST.instantiate() + + # 获取Level节点 + var level = get_tree().get_first_node_in_group("Level") + if not level: + push_warning("No level node found in group 'Level'") + return + + # 获取或创建Effect_Group节点 + var effect_group = level.get_node_or_null("Effect_Group") + if not effect_group: + effect_group = Node2D.new() + effect_group.name = "Effect_Group" + level.add_child(effect_group) + + # 设置灰尘特效的位置和方向 + dust.global_position = global_position + # 根据传入的direction参数设置特效的朝向 + dust.scale.x = -1 if direction == -1 else 1 + + # 将灰尘特效添加为Effect_Group的子节点 + effect_group.add_child(dust) + +func create_wall_jump_dust(direction: int): + # 实例化wall_jump_dust场景 + var dust = WALL_JUMP_DUST.instantiate() + + # 获取Level节点 + var level = get_tree().get_first_node_in_group("Level") + if not level: + push_warning("No level node found in group 'Level'") + return + + # 获取或创建Effect_Group节点 + var effect_group = level.get_node_or_null("Effect_Group") + if not effect_group: + effect_group = Node2D.new() + effect_group.name = "Effect_Group" + level.add_child(effect_group) + + # 获取wall_jump_dust的生成位置 + var spawn_pos = $pos_wall_jump_dust.global_position + + # 设置灰尘特效的位置和方向 + dust.global_position = spawn_pos + # 根据传入的direction参数设置特效的朝向 + dust.scale.x = -1 if direction == -1 else 1 + + # 将灰尘特效添加为Effect_Group的子节点 + effect_group.add_child(dust) diff --git a/Char/Char_Components/fx_component.gd.uid b/Char/Char_Components/fx_component.gd.uid new file mode 100644 index 0000000..166f6eb --- /dev/null +++ b/Char/Char_Components/fx_component.gd.uid @@ -0,0 +1 @@ +uid://btvbc6o6gwpms diff --git a/Char/Enemy/Art/1.png b/Char/Enemy/Art/1.png new file mode 100644 index 0000000000000000000000000000000000000000..f74685305f0c6fbb4b06d25e100aa035d9aa069f GIT binary patch literal 1096 zcmV-O1h@N%P)Px(0!c(cRCt{2nNMgGR~*MbQ(6))g+K#FlGB<>Dri#^aIA$S64HcN=p~d;&{Aj` zL~Kx$cq@WJ>!L!7jUeqIh)Ai2govd1Q)=Bn4z@jLldz{O=CA>w^spdgJS^{Jb~3y9 zW6b-7{yq@)?Yx)e?PtF4&2MHwQ4~c{6h%=KMNt$*Q4~c{6h%>1!E-%WJ2b}C-p-ZF*y(b51vp>Aqp1`h z&)<#ho1Pft`Y$(m>%D|M7H&(xxxgslJvil+H#0Cx49^-lHv5d8J)w|2~}Gd;G?$s||7 zc>-H~pUIj=`~JUw21!&`*}v|~15DO5(o~xeQ8-6&epXE}U0G4?0es$kxIk1ov%vZ4 zcL2DUdCcTo+WDNrI8R_@MY&f@p5bEVv29CBqH}@8NM{yS95YFjgor}At-ULss@&7q z{<7T%c+_%;`Vm>TaUdXpMqX=TiMqWzf#vi?Q|`$h-5t$a`kkB$G=xi-3!i)hK$ZUi0LdFkJI;uNLYc=-_R{M6ww~N7#0Z3ViQSh6 z$Ue^j@L8u{Fy6=vC-}^FKmUIP#udp%o}u!Ma$tFXJpILK+n2nNWLL)t`+h5yvlxNJ z?l7VPAun-qF6})X_$GkmrT*c$D?tA03{bOozx|(AB~$cOIQu-uX#XhyS}$E&(O=>T zP5xwzKeVOJt&s_Pf;Lm8m;@Svzf&ucxRCnYrVPN_=dXF*;iB8fG_UaTrO&ny=VwR=F zY|;L38kZKcVx)_^3YU^ts?QZ-61ZIvD=_Z&UunMyg8+e2_Ogv4Y7b0QSB2Zb&4~vE ziEFA&1mQ72;5wDg6Bs7$$Mnq@`zjG7P*D^`Q4~c{6h%=KMNt$*GA{s{^l#1yRtPx(lSxEDRCt{2noVdEX&A@<6BIn}CR;`uD1>+^xb&bHh|st##UdWMS=$d z_po){gC`HW>;{%~y+rUPDt_!iq|2fv*G5oZtbChxp?Cm*&m z^9aumN;)4Ip8V(kyzev5I{?El48t%C!!QiPFbu;00P6oWoUmi)MI`J1K6l6pDBP!W zAth(-3p;>8pd_4tqyz6P7aag--oK7$bpt?KJb51l$O(97x#&!$Qm%cncxLKEC~b-;ZNhX}hcyLv^2k zns`7!4jfM=I>b}=%ar0rF`F;o>b=LfGBW`HI5>ZqoOnQhDJ+CLJvHXqFFR9kb8!x* zE?mOl=`4Qz`x$2Q1&k*XPA-!sSH=Wd2g>eKg*=%$?h@ypn}4-FBheV9X3paL+(lq! z!nsv^LB@@~2O`pR=N)k93;j8z?XsZ?sPf@$9RQFRHbF^1UsG6@o`RisgIy~UjUf_^ zq0)H2+pzW&-vrDrWSt*xJT!n#vDEF+kwYCq*X*k2wR^cWNCKNg=Fg4c^wd~~cwVK< z)~g+?SZi3Z)`AG{lkrtRG5*b;Yfl*Be=#1)rHt&lld0oauhambB_c&JeG^cmuMV%t zMCItnSIA}3a5gPGFZ=i zzx)XR*m|`?!hJvh0;f9%Kf8rVV@N^ac@YB){hJ4M$un7R67uBTNS#rz1{MrTp zyj*?=0LW$1j!y7gChd6LtRV1BK(DdQ%YEI}JL02X189q=yY_f8;mCix2z?-Ybzr{} zgtKY6e(-n4MqS6B|9%zUEL{W87FtXwUI-!c3t6YzBjs-Ky&Ka@L?ND7D9U{Meb?(n zs~d1OEyuQ2TO!K6LfL(4$HxyyEo+L7bH6F5s}sz=oGlBAJ8^uSrp?=5bFg*!<7M6ef+~N{)nY1HH6v2b_EdXeZgOt`r$ONLc>xEeI z8u3%h0szcTXUN1&CJ>-4qNoAA807KKZ$eLDnOnsdMy2r{k!Y;r*r^MbkQg?hrgzwo zxs!l*r@3ZV5!-*DwapG30MU7=Hyfxo8;C?>q+0r9>OfT#UCV07j0YA^zmRnxMX_{{ z7)x|1sX9<6D21*xIS1D4Dr$E1vvD9f0f)>uhRk@&ft0$>I>-qK=qC_L>mV{D1QcVL zNMC_)pZHXdQ-Dl*yea(Vnn-l-1NL)H(2%GDWns+JiLTuie#u;6JehE2^92CC#W^^C z*|4qEAj0aK&{M$kHD8Z~qh99(O{fkGb2)Oa2t9>$P;geigchjIeR8i)_r`(l%>=J= zgMyR;dv&5e^;|z8B_P8v48t%C!!QiPFbu;m3}yZYmow`r0>Wg{00000NkvXXu0mjf DgHSr1 literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/2.png.import b/Char/Enemy/Art/2.png.import new file mode 100644 index 0000000..37ec223 --- /dev/null +++ b/Char/Enemy/Art/2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6g33ompg5t8a" +path="res://.godot/imported/2.png-286b68d6a7eb0bfdbb8206bc70615168.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/2.png" +dest_files=["res://.godot/imported/2.png-286b68d6a7eb0bfdbb8206bc70615168.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c05cb1f0268772912f655860c57e4035cfa69a3c GIT binary patch literal 662 zcmV;H0%`q;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0xL;GK~z{r?UX@I z0zni+If@>^om)-Za1GWjTyq8E%2Swl5)+Q#RnVH$n^Zmx^e})ME2&KLyMO&R!@%NS z*U;_F?e_8Eaj@1dUtb!YFnJFze0NW&puHep$6ZfT4C3puBSptuO%Tsy(+| zMhT(y>i%vAD6c00EuU7~)${9Uebz8z?hSY(qspp>D zg2{c(dt_TQDy#-(7=bMi-Wf7vz9OuieA*trt89{i^7f#5CM}p_^@NdCbM&rg;I3UB zMJUcedXHq)sOK8jr=yzVrzu0LTL7$UFE>0JCWlqG>cB`@ukU7kC60>leK2zFb9MVD z4dx{Wr1g#-R1U=qXK-uZ?V~i<%kjTW>sc@W=vrT1nVQy)IIkF#1|mUPYe$?<3`i#o zgZHf+Gha2BpXL-hYQ6|eAYBEOe`Ks>ovHhdny2K4&m;05? w8jep1Q%`=qF83*$r@SBgM1Rfn_OBL;A6A-L1=fOZI{*Lx07*qoM6N<$f~3|Qe*gdg literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png.import new file mode 100644 index 0000000..55ceb2d --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvf5wbsg34qv0" +path="res://.godot/imported/spr_shotgun_hurtfly_0.png-90d9f7f37b7b7cbae792d7a42083b7c6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtfly_0.png-90d9f7f37b7b7cbae792d7a42083b7c6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b56e6d234e7cb4f354c991d7d1a47da76bacdc8 GIT binary patch literal 641 zcmV-{0)G98P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0v1U`K~z{rwUxn5 z!$1^7Qwo&8jVqD3q>Y?8a83(|6ICEl2@)mH3TRgIqT#bi9D6;|$m_rV&&=B3Y)0Vi z_3$HpeSS4+?XC5(ec1jnCqUNRx;_Y#=Bi~#x2}uZo7*3eFe0_2+t)?USlr*=HEQkF zbs?jC5_&BP@bSEBr0(|lkl6S8;V8O)dTC5?%tV54uURM!kIY8~B1{cMkbEi`1UA9B zkU$F8K)c6%`!C^1i1~_`V^*5#(H!%-Z)WF^B2`!-2#UQx8A{C8#~hp#ieX47h6y54 z6ZN`S_m~ICK=RB(w-5=2(=0`kxyRp7UBlj-0_4+lgv+RcDVia;_5wkkIJ_zdkWeoO zuPy_y7Cqjey?i1r&jTTny%4$Y(IXVb%VkKDOC*>_$D^9ndzf{Pjzt=#*(qkPCB~r| zB&p}Vu6!UZF%D@Ct8s>@w9Huaj0llIYR%(gA>sViRAbERy~oF)XEKEfZ;5e`a1Ek0 zU*`NV)L#BD(r>BdKu}Br*43PQt@99;TLzhkn541DK5KdilCo^7a=g$8_iis{yLWWrsB7x`}LBh;A%qp0E bn9b%FElC-lC(LSe00000NkvXXu0mjfLkb-h literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png.import new file mode 100644 index 0000000..a8afd30 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqewxn6t7xeoj" +path="res://.godot/imported/spr_shotgun_hurtfly_1.png-6bc34ed4312e09e31cd42a0e6d410345.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_1.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtfly_1.png-6bc34ed4312e09e31cd42a0e6d410345.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4646925ca1f84e40e2f51486f0495d1bfdd3edf8 GIT binary patch literal 605 zcmV-j0;2tiP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0rE*iK~z{r#g)xX z!$1^-Qwk}88&@K6NgFwH;G7l^C#pcA5~P$sD?ww;7mZ%l`LVNMq*1)P@4fl#K)jfv z<->BndR`q_`!4w(0rvT^-S2*OgLPfkF2A4hiM4=o?UwsVa01{nffD-ea0!-Akae}& zrtAA{z5o5%4qm@(25(;957#am)B@N%Jsw&6ZkewH6j)k-6$mGctT}n!y1|PDkcI-N z&laHmh6v^B6d1kL*-xKiFIR=b+_g+d0?G-Oy>h}~o?_Mw5M#|+2k zQ0u%YnR?E#F~+4P4XeSqpRP4Be}8iB)6=>E$4^rYz}h?Y6Vh@%F^``whF37YX8t+Y z$8JAJaK5~)08F=_^4zWcm7(Vhs9XE1hSxRDeYf^i0%Z7@v(_W}sRpLm&vSk9W9>8+5p zZn6ldPp1XvmO=ETwO8wAiGi(UkG1Nkj9iyCj6VYkDS$ r5bW)i literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png.import new file mode 100644 index 0000000..15257e5 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b86ds5spivgom" +path="res://.godot/imported/spr_shotgun_hurtground_0.png-6358fda8e3fdf87a9f4eb71d4ffd02fb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_0.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtground_0.png-6358fda8e3fdf87a9f4eb71d4ffd02fb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_1.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2bedfedbc7d83c0692a1ab41a3d34746dbf7d3 GIT binary patch literal 556 zcmV+{0@MA8P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0l`T`K~z{r?UuVu zgFz64T?#INj1)^GZo@GFF)bh>sz9O=B$q%dKN@R3YqT8Zgzq5nNTb_(?C$6L{aRgg z(M1EbzFIGv+szki-ADdMfW16FF8lZW!HVnL$Nx@wV=bVZJLT^rH~}ywP(lxb`*`hp z1PPWm$h_KVzth{pcG=xrFM?CNz1uCj`=`Sw``A$}0OhAycgj&*fckV@h7PG92?9$4 znJ^d_<)#6wxmtO35R*rvcOcFH~bMGZY^`= z3Pz6hbl&YxizG}VL1~_VGV2(?1S20X#r2Ha|Ez?_#<`x(eI9Q%7D(o6WL0&&W=nDOic>!3HFwer?hKQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKnD z516a8b-h5)Q<26wM;<6Y(c+8$lirrt8k&(J{`=wPsJHLVe4f6cZ5)i>UndAD?PiD>*E5 z3}#lgoasEJw{e|PfJuR%K^#y%!zBISpE{XYWt~>C_l|j&a0iI-Xy!4oU-C>*J3{$uU{eS4@;TqpE)2)YLTV;8V+U)v?RmOnQ7v`%{v#-kg4|w{=~H*JCk> zzUt3%XJdO~6oR@O1TaS?83{1ORuLy9@vT literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_10.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_10.png.import new file mode 100644 index 0000000..6a970e2 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6y4jgwebch8f" +path="res://.godot/imported/spr_shotgun_hurtground_10.png-c5146058d36cca932596050a16e691e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_10.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtground_10.png-c5146058d36cca932596050a16e691e0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_11.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_11.png new file mode 100644 index 0000000000000000000000000000000000000000..91ff082602f2e22d625aeb1c9eb2ef9469d1d1ce GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic>!3HFwer?hKQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKn)t6E{-7)?r$e;FDm`FatlLsS76$UXCWF#kJXFm9-4J(=?9zr zl83bJ^-mM2mVf$hte%i`^{^*Oic>!3HFwer?hKQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKnyhOw^j7LSAZIUSS z$u7yZL3G2%b|0w({G;Kvh zai&#Mm4CcdkNjWBs6|N}M?(tM$UM@%x7=S(p^F)iUj`@~5;j{R*l&w?IVuX@!_~v<;hVPk;|=C{KFK`sKGmPrL3eV*B>P{#cwq z^_<_Y>XPK!lX$*W&a+o}&-6U@rdQ!n**U@M^!M$P=UEb>qt&}&PFLc2YpwS1OC?V? bybP0l+XkK`^c78 literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_12.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_12.png.import new file mode 100644 index 0000000..1d349b2 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_12.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bldam5tvknypg" +path="res://.godot/imported/spr_shotgun_hurtground_12.png-a0ef3e24b9d39d34df69fd105b11860a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_12.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtground_12.png-a0ef3e24b9d39d34df69fd105b11860a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_13.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_13.png new file mode 100644 index 0000000000000000000000000000000000000000..df0f3f0435820b4a8afd5433a080915db949eed4 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic>!3HFwer?hKQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKn=>CE{-7)?r$gU=4CPza9KZPF^f^q1doiz zNlZym4lW^$E~*|=9JJdEtuwY59e*xhaYMbgNB91@#|u0)ZO`0a8PpY`&9+LE`D#~V z*3l*f4iK7enC0I2@psTC=lu<>n_udGyzI)n7kJU~O5?tzc z{BrC$?oZu6Zrpg7!Rf8o7U08L={_GQ&F}0Tl5=8q@|s7*TR2vq3Y>88-u-Y%`PCKj z(=sB~X)pdh;cnU7>yt#1L(e}9_#2~j&3x%|9Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0fR|IK~z{r?UON1 z!$1^7eH3y8I$9#p1AQ_T8v8 z09a7jvjD0IU>ZwseU6Cn^!@RA45dlm&GFCV_vdS!lOyUV^1aVReZFkE&!HmC6%33< z>~H{;M&NL?>7bPVD>xk%9EBN(IZ!nQ%b4ULKa4Wak_5n_-?`W-yqGFquXU zKvQq7JqPsth#gM=`7NG<%V+bMh#g1X(3_T;=e@konTWn#H0guOKKCLxqOVga_?&CN kPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0a-~zK~z{r?UgZV z12GUq_bBlZ(xr_djjyqFiqt7`0hc~SAO~3tK0>bI;F+pj0U{u~@ooAuiWsCXELgB9m_ z9IY>afXXnsG2)xS@!1?u?jP-M-oAN^LNL_Gqg+|3us4z& z!apOB8i{>9N|sZGqp3G`fK%&Hwu}x?-+%qj_t$Zxx!d6|d57c0xcKEzF@RJIK;`G0 u;j($&7^BsB@?s9>jj~UHDSsYZ*L?xw5PXxUm!MDp0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0aHmtK~z{r?UgZV z!$1&4b(HuB>C(oK#@A4tB6W&fz@<+S$U#KFN61xdzL*C;V=ZoWWhd;1&+P2(%sk5i z4P9MbU0we`n}^M5`@Fqy9N$hQFdWy`m%#osoX+F=dIIe3;D9>pKdu7a6wU$V3?@g} zIs!rwIK^q2W&`bcl(rR5BLg~&_F2nO+Exzc9-kf;*HPA93@lkt+1iitw#qR1r7t8-Jg!%$6tUMD(~TFQ(wRc%mIBk226L9b1z!e7jS?n zGE{kfN|-u1TGba|ZUA^v0Oq_YoEmG$5|}%~vEK}g=0vOT6x+)E0KmUD1 z)_xu>>&b@+%pn-;0GyT1qir2Ah@n8rKcDaO=Sk7wu<{J|^|q@6sAkzSTzoSHrD2MG o?r_;v;FcO=fdS=k^}&YW3`Dkg;D$aw@&Et;07*qoM6N<$g2o8HdjJ3c literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_4.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_4.png.import new file mode 100644 index 0000000..0a4d936 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://daj03i8f8pqih" +path="res://.godot/imported/spr_shotgun_hurtground_4.png-1a0bcf2f5347752738da06d604887f9b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_4.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtground_4.png-1a0bcf2f5347752738da06d604887f9b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_5.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_5.png new file mode 100644 index 0000000000000000000000000000000000000000..35b6f2f234702473f2958f428ebf68a5143f2638 GIT binary patch literal 453 zcmV;$0XqJPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0a{5!K~z{r?UgZ3 z!$1&4eH3y8I$9#pgu|2ZSFRw?c?^3WBYn4f#Eo|z65sDaN3XK>j|)b2M5&q{_QN_RpA^^&R}ws zts@{5fm58OX*STFM`>Ge8yV1Hw9c~}rETS4?(yM%@j1%ci-9EzDqHJO-c}hVzw{+X zc{?#^_cYEX*L$Yupcy(^w3CL6&->Hy^Y{xeL*+FbZR!gcfjOWL$AIaKa?VAo`T`Cx zMTRQRw}h#aqg8zY<_3V90x;)I;nY||mcZN@j`gOu#sDH#4lKFbe~k8{U0s!iv7Y}z zBG0}bE$hjL3CtlF>;UYQ_M>ebF^Hi+%3mL^^CwEt;jr=ycX-*=0aUZ>8SV#2Lj*Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bWT&K~z{r?UgZ3 z12Ggt_bB8DbhJdG$u+j7pr+sgDLDmF4zfbZ5x7cVR{u%E$E&2UH$?JCBYSQCKQGQo zJ9Kq*b#>jaHg}uT_Hp~iv3)%)f#Eo|z65sDaN3XK>j|)b2M5&q{_QN_RpA^^&R}ws zts@{b0;h4BrrALIbCk9fw~+xIM(fPwC~YeTbB_=A#d(yiBSK3SRJPWmw5>8se(9GS z{5<{w%usm^N1HYhjKCbw!!ckwqi4=VoBHCW z98d;GYx$C_(W<_HA&fw+ zaZB8kgXc4vN6UKhFo8LQ!vVnF(tfn9BZ3G8QvUjQoj+3=9S-X`!yR6BbpX{YdxrY~ zQiz}!ec$1-tH6~SV{QvDKJw?l_)!sYfrjB5Qz&_+j{E8c00000NkvXXu0mjfIwZvP literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_6.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_6.png.import new file mode 100644 index 0000000..f216243 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cii7i4g7iqyv5" +path="res://.godot/imported/spr_shotgun_hurtground_6.png-0333457d340804a2f16ab39f928e0342.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_6.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtground_6.png-0333457d340804a2f16ab39f928e0342.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_7.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_7.png new file mode 100644 index 0000000000000000000000000000000000000000..37aead48ccffb7cd8c54172d3c67b0bc5499184e GIT binary patch literal 452 zcmV;#0XzPQP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0a-~zK~z{r?Uubw z13?gluM}JY87Y=X+{VQO!~`_pkSdTUoBXvOeW^GT0k4+wS_knTxOJNq*;->rSJ zr%jtSZQ4}V?qYY|U++ITwtr7+VD30NRs#F?a5@tylo8j!4PMJyQEC1Ihl~ zTXUrM)!}A7%idTo0&p3WIMVw`Q1k7vynPxoq#MYgaDXv>1>{z4l<=SHxwcws#(Mq; z8Hs&AO16_X11vXo0QT1Qqih?|2sp(+zCPWT-%*VYhc(Y|&v%D5fGU<Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0bNN%K~z{r?Uubw z13?gluM}JY87Y=X+{VQO!~`_pkSdTUoBXvOeO?~{h{t{~W5K)NSA?d;FYe78Q! zo;GdTv}sdayQ|%Kf4jf1w|`GHuxKA0D}nucIGu6IIQ>~Tz@Cp!>xfHWveU*W0s*LT zS(ep`^W3TZC75_S8Aj{GveU+hTLW^wxh~qr$0>qgfs|sWj1f&sjyHz2?$rLuK=Hk+ z*{OX+v%}rITCu?NMF23uGCIAl)M&mxo=-i&OB#!$o*-o(;V7YMwV6V3CvTZ~o;1mP-{_?o~hH8v(Sn~|``fz9isAAbGy4DU;wsw!0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b@x-K~z{r?UhYR z13?gl=P2d~?%W!1lWWY{h3i~FT;&u2Pa@<9UPXCBeex_iBw*J_pdUPX`tQ}3O2SM- zLqkJDH?Gay=1bl_Zkvu{>+2F2j^pbIuxkM0%6hs9xWn827i7zEWgV%YcSeAWr;pQO zJ^MVa*2}vxKin_QF#iJQU=GI|DDSEq*K6fqGH~xNyQbq>tumC`;WBJouTu+%uZ?-D zds>T#I;r^XY5p;A{@VgFJ0fbN0s@+!UzdNKMgUvRun|)u6>u<(4hPJ+?nO+ER6tO< zbAr*_p@7u791(SLIP4%8KzBsch$0ybx8QuP4o6gfQNYLS7MQO^RDUU4P`Puy1_aLM zBdWhB)`Ia4Y2VN0{fO%;1yd9-JyX~LfRbDL5&3sf1XGyqeIEDAt4X87Va+pKxA!dJ z8nKG<{uC6W?>k&}7dQoFFif`q(_HJ9!1z#6;tEaEH+*W9S*s$+R{#J207*qoM6N<$ Eg3-amiU0rr literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_9.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_9.png.import new file mode 100644 index 0000000..2062190 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_9.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b60swed0ui7mw" +path="res://.godot/imported/spr_shotgun_hurtground_9.png-9367af2cc0392776554d64a8427c640c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtground_9.png" +dest_files=["res://.godot/imported/spr_shotgun_hurtground_9.png-9367af2cc0392776554d64a8427c640c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png new file mode 100644 index 0000000000000000000000000000000000000000..99358ce42e4892b8f30781062faafaa67f8d056d GIT binary patch literal 662 zcmV;H0%`q;P)FV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0xL;GK~!i%?Uu_; z13?f(9g8LI964L!;wXIK#(@l+0OCXvNF?G6$i}FweyC`VKQOzq3!0Kj)6?7CQ{`Q+ zz3AxZ=;-L^=;-M9U$|K=_p8! zA^NBP@wWZOXrCS!;H@GP7;qDR!hqI%7fO_&XrCS!I47F#1SB6LriB|QeGf{)OF1z{ zwuKIM1BiDMVo5Zy=ZTq3JSs4NXzm15F4IMq$aNS;4R4AA-GqzB6syw(miDJ=#W=nm z4A<%=AbEe4Dn{5TX2GTFA)yX=u$WC?Apagv>%Cs*`I4cKPzOKc91#Y|V<4Mkjbo0^ z8SD-Sc`&R0edfAy#N3^d2{Fcx4;KLu?&3Wb>GOW#7(G4^m4&zgYJ5)}`54z0E=sW* zxI|vDZaBuaLl%V){|yk?>$>mVyclEKfrDL`f1<>!#4a2&%E#Dt(4i0^5W%Nd>S=D` zoB`z|G)ljKc<)h;I}&AWfDjkp2BPc;*#wVNQxgbBybC~Flomm6o}oBO#swlv0h>DhOvpL*ETfPe|a|5SjRXf9sRq0UHOg__>M wP$QtGcM#~{npaWnNFpXc5_!pywhHUIzs07*qoM6N<$g3GTbumAu6 literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png.import new file mode 100644 index 0000000..3d5b549 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://budv3124bpoer" +path="res://.godot/imported/spr_shotgun_idle_0.png-df2fb4171325f41d553f78a4cb2c735f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_idle_0.png" +dest_files=["res://.godot/imported/spr_shotgun_idle_0.png-df2fb4171325f41d553f78a4cb2c735f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_1.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ff06f3210bae061bf459858b45b56b2547ddde42 GIT binary patch literal 699 zcmV;s0!00ZP)FV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#HdrK~!i%?Upf4 z!$1&4bCyW-l+=-Ea*8x`6x<*eKvY};iHqb0+$QK-^U!Cq4k3=$TkMyP@ zS#@-DbaZrdbadPnckA_Wv)Pe)!gmk%$IqATFDloxc@`0ETT|CCP zW+KpI)}=Za5~jfqR_rDqdH+37jIc4fSkBM;A>(@ZAU`~tz(D>{qn18us3R{j$LEEN z>)``nHUnLps2t{q+2bkc8lz5TX-;fikJ6!B{r^AvFV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#ZptK~!i%?Upf4 z!$1&4bCyW-l+=-Ea*8x`6x<*eKvY};iHqb0+$QK-^U!Cq4k3=$TkMyP@ zS#@-DbaZrdbadPvckA_Wv)Pe)!gmk%$IqATFDloxc9MhF(H=3 zV=xne9(ZzCp-VYhq!w31{*#rjij~cb~Q9~VhkvTpu zWLys)0J9nB;zZ>zN6a2iN!J*4GD~w}>w1(9}LWDpBkFnHK-NZQq%1LOH{s8gbryNft%H{_G zd^p0zC_8~0P(2@~ss<2_co*=O0fF9phTU9NxQXiG1r2pZ`XWr}y&0wmn9_R_Xz-M;zN!6_ jkcVGuz|WaxWVQMRhZuQ)x~bxe00000NkvXXu0mjfB6%~@ literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_2.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_2.png.import new file mode 100644 index 0000000..e9cc8f5 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5i1yuvaw7ni8" +path="res://.godot/imported/spr_shotgun_idle_2.png-f348bdde431e0911c43cbbc142132d1a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_idle_2.png" +dest_files=["res://.godot/imported/spr_shotgun_idle_2.png-f348bdde431e0911c43cbbc142132d1a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_3.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fb26230d0b43bc3efe120181cb839708cfee68ea GIT binary patch literal 691 zcmV;k0!;mhP)FV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!T?jK~!i%?Uy}H z!$1^-a~33eO6o{7oPvgqf*a%lh>A-fagp4B+XRjEzG!%?gJZ{=Eq0`l_vii0te049 zIyyQ!IyyQ!Ixdgfo14RSyZuA0M@YLs{Kwnwu;1?oYMkd0-WL4iOQL-qDQ!UpB$B6# zc4JK%aPj^om}f>>J8*Fl{&atL_2u$B>UByd69~JRikDKmG5|-7iL3 z8<1ETIAx+~0}}r9@;)$|;3~Oz8H&{FgOitd{VeL~21<<7Hh=-dkG+LV-}BfgTMyZQ zixI~}=k?N9^_dUN0;RRtzyPQ2V<)0uUiVmM-Xk7{jQLPeH{n-^D^T zi}QHKzOQGrS_f+Cuk$}54r&bpB@<$_S_f*F4KR1+bz-SeG9eC4)&xSJi}inC*k?`S zC~;jNEEC}_-p68;xISDIbOQ*_^GLrgB*yRVIaI!$sxcI+4VvqT35@tjm&T>|C|eI| zT%yGI*O#xc##&>H8Sp@MSixClA;#iK>qI4Y~FV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0x?NMK~!i%?Uu_; z13?f(9Sah7j+`xVaTLCA<3I*Z0C6G-Boc83WMfpTep0!aG4}q2rliu&^!BG}cKz8j zG&D3cG&D3cH2go@-`$OFr{nS1QR}>q^mV~cz9icBQL-+`fJAb2 z(Qa&&23)*93HF&$wjQ`R3Ew|HoW5RnXH;y};yHE16ZdtLEDwp5sEOwT?eu$|8*S$U z21E(SuTf2Oj+fTz&%PUGsKsxF8ezc2y9tIlbKG;CUQ=So7zT!6L~EJJB+n@kT=Sa! zB`POm^h0il39%#|gV)l{l&GAL(hoj_p>6^a_um7py@s`@d*pgNQ*%Q~KhVStKsNwg z7~~!`p2Ic9jgKr^tQis!2NlCW$%GiArh$tS5w5HM_vbz__ON6^j4{(9ixCm-Vzcll zUltPOCkNdC!t-AB#Jgs5gW$l~h}+WxvHn54MSyZKack`;V5l>0 z{fQy9qhZMKA+@7GgNJ-;46Pr8JiM;~?=#HEX7dAFV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0xn5JK~!i%?Uu_; z13?f(9g8LI964L!;wXIK#(@l+0OCXvNF?G6$i}Ev{iJd;Yu3#Egr=m@_V!G7SIyd9 zZyFjJ8X6iJ8X6k@7w)#(^KQ5MLFHr1dV%=&*W>wgI(1Z>?_>MA;3r=a?e|f#F35mH za&^&eY?TIFygv!WC-rag;0%iP=9sbwnKW)BpN7 zUNFj+1>z6SZym3hSfv3@9s^=Fz(>i&%TTmf78u|+z3(YxM)~q^1Etd!`9eEci#E#v z1Dtw(0wvL&^Sl^s=Yxh~z{R@>u}?Iy=ZWc0JQ*|u6N+UdQ~696T_Wo+#*J@^ftV0W z;xU+sK##dE?SnDC9yHh0O+fPgE>MiHK4!tC^^i~pA4cD{mO028L zE*vw;N89;;FcBe8;`-QEqg=F}2MD=EOrHtmcq*}VT4=ZnaRJv10I$`4K321taN&q| z0YeOA&T2qI`b-QJK%Ms(T3ZbUXA|UO+g0#U%RORwdLY)nh(iUi7ZbPCjs}K0W9e7a z)Q*Ol;Wf3RK!a<3HEQdtkca=(fcL30ve|qCJ)TVWAB0Wz00000NkvXXu0mjf(LyDL literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_5.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_5.png.import new file mode 100644 index 0000000..ce9c9b9 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_idle_5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3tqsfyivnxxd" +path="res://.godot/imported/spr_shotgun_idle_5.png-e19016d7664aaeae42380123c3ab5c2e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_idle_5.png" +dest_files=["res://.godot/imported/spr_shotgun_idle_5.png-e19016d7664aaeae42380123c3ab5c2e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2c71aa70dc05b6fd2acbf2389c23b3cf98f89adf GIT binary patch literal 630 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_mZ>PZ!6K2=}wo4E>l5MO?mXJmDzW;Ood!3eoa%93#J}TemmpjcMDFYkC87k-){W=UtQnP`t0XF?>8ixnVmV- zcJqdTv~*hX;hdZqy}X+@ViSDHT&!4MdF$-&@3qQjUd!DH7hnCYCvMK;IxcA~9Tv_F z`{Kgyy)%=Y@~h&mtWCdn_S{2l6E9`3X>HrPYfDn={;5nhnjXCo->#*f7Y)o=u|mL) zv%E{w(PLw2f1i8|?oE1}&e0iL1-#*?YeAw#vnW+)gExc2MauzY9XoxLUs&bMMU)KKndDP{v zN@gJe4Nj*#JW^%$D;*W?4B8kevQVa2_PCs&w3dcY>z64vJf2q^o$|n{xF@;4gO}6a z)8DJ*!{t0*PGi^Wj&FoFDlX*d4lI}%uDNdF#DE#M>yETJ_^Z#GaA1uY&!yuVY&-c+ zn@$K?`0ndUk>hjPOK(rVA>g7YcDZTeOuOco<9D1R4ktRBakNe-uimeG)biNIz9i?m zwhfUB_pW+c8d_))thqpGv8h0{R&2mNsoUWxf~%J|KN7j5=5W1)e`&~@<3T%ChvYEK zaMgTQ{Q68%{8H`;uOH{0ZT}YZQ|ki|NPo3n;54=_Ra^U6$VdN KKbLh*2~7a^`Vdb5 literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png.import new file mode 100644 index 0000000..6ce2052 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbkxu5eh3kga2" +path="res://.godot/imported/spr_shotgun_stairfall_0.png-9cb2886a96117fee53b3246ef4055de0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_0.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_0.png-9cb2886a96117fee53b3246ef4055de0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png new file mode 100644 index 0000000000000000000000000000000000000000..565fce44a7a2edd6052260e6fac3f61035c88979 GIT binary patch literal 702 zcmV;v0zv(WP)pur00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#ivuK~z{r&6PoJ z6fqP;`zYiH?AQ{CO|CI(7Oc4fVwF=MaT25)fvYsXtS(coE;o~GjHQ>h%l5B|d&aZv z`~Ke%#nnV{HBnqm6ju|))kJYMS-fam^YZIu2hZQXHaI@mO4}aZJ;a*SW@K^FFsA{~ zfBg8km-zrfArMG4sm;jZq`{CU!vF|%`|y7M`Q@p@P-v;1`#D*hGzMWX2BQA^$KSBU zR^wRD{hTPy5W^NoPYHnneXlmHnTTRS133uhuMlJ1uTAwt6cZ^7PYZnpBV5D%_kLhxg;|A_QxET$B2sdK>!g#>e^%^tU-NZl@4zH1? z&;q4~jc%q-e71a!pEsZZ5)8y}jkM6I;w_lNFdEA7TFwyWErIZ=levaspJT7*yebT- z!Yz~`~Uy|07*qoM6N<$f=cx`-v9sr literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png.import new file mode 100644 index 0000000..85f3234 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djxcnae36c5bf" +path="res://.godot/imported/spr_shotgun_stairfall_1.png-99579b71717f91e18fdadd75e97f16a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_1.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_1.png-99579b71717f91e18fdadd75e97f16a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png new file mode 100644 index 0000000000000000000000000000000000000000..72a4ee8cf4516617ab943e4394a2259e8ced7fed GIT binary patch literal 673 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_mZGPZ!6K2=}v7tn&m6MO-(FY-%al;b}{2RM{Ch?djc#V(F97k^7IY zk6(ZKeERUA6SFE6U%$?(UUD=rMrZP(JcWC2+%G-i=$C&#>%yjUOZF_kdD^2}S>fsW zBT{?V1;54!dUr4WV5RMUzB=gZ=YQfWZ}V@jPvPR9FMr*i{a!PR$tVBwzWtNM+#R?C zZXMY*FEm5=e$}jf@9*E5o-MZcgVMjC=!ENsXPhYCtEAf}u#~I1Hv7HW=klfR?C+Yt z*4Qc@W_R(^uTQ%U-MQ|x_wGaGt_w_Y&Zmw}xb-WmUq$BbQ`4{4o6`l(sJ0vnpE%>2 z*~YKpGxnQtuFzj(n_Bv?`h`K`tm+vpiwyqHfALWDMR&R^SoDy_(x@p+-zGlV`la*V z&MDlfNnbp=;+DiHEn1`ZhhusIUrY5|(|S+6W%spz0R`vi{pj&IbyVfZi&}>b$2dw; zOBT9M5$H9Y5EvBYed4!LAjg!;E%O4Ij#PCzP3$stUzo13oO>VF^dkv>uf$!yCt6Z2 zUM8y7dGMd+miO5o&Oh6*eE04RwxUH})^!a5lG$#;6|BNh*9{p|N*&kSd;QtU(phL9o1XUL7wR$R8Owjlyn4dp`9sFW x;dko1&W>k2cCs3){q6~87MdX;z0+s&pUvL=IP@oXGB8;&c)I$ztaD0e0syZ}G!Xy* literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png.import new file mode 100644 index 0000000..bb20706 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crvk1djjxtl4" +path="res://.godot/imported/spr_shotgun_stairfall_10.png-752f47a4f6f14428aeb454193a0c06f3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_10.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_10.png-752f47a4f6f14428aeb454193a0c06f3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_11.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_11.png new file mode 100644 index 0000000000000000000000000000000000000000..424734999a6a7ed4032ccfa0a55f3517c7fb0cf4 GIT binary patch literal 669 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_mZ0PZ!6K2=}v74E>l5MO=zSidd|oCS>ez z%i_vf*RaBZRY=|O5l2kwM~nKf&-KSvYdFn#l==7gxA~oWXW!kV^Pf-q+_A3B8z1GY zv5+Rr%-gvCmVWv6^4uM^_YdrNd@VQes9@5KQ*VFT^Rn{w>!%d|d-#u`jN!AqKfgEg z`7P^{jtUy^EEaxjmi~O_vx4HiHT&($CC*hcXloffp3#=UBitkCa=oy(>GhE+Ua>WM zMYY2oiTv_hAX%q5@6$hpnE2I+8{)1jhBvC1>r*EZ=-{p}?&$tL*W z12?lZ34M)U-ZMSiXSd(V#_-x3$pgxj%MJ<7&QWNpY-uuNW{lBnPFQ35&E@@Rr-KHw z);M0c(aOZLV0p6BO@{|A1sNIwzQ2VR8k`T{X`baMv+?+^$c;^BGY$nv7)!k7-dGp5 zCc#*Gu5?SdrP8%Xdu^)=4Q`l{ j(O^@%`utyVk!AMH>i2d9>`bfxCMgC_S3j3^P6pur00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0%S=_X~J?eRD8wOJ32hA`2(h^{?wy2nJEDZS{(N6k_naa&8~Bm70*89);R z>P8kI21Foey6*^5fC_)HApNv(vu=pSoGV-de8yB$wD*WUkYGNy1}p4z{C8;-O2drC zfPPyf0il33=$Ns?F`8>20AoI5F^JBiUqu!+%9?7xZh9=yYeW`y3eDq5C|uJ$GEROK zS=gyyaw^HMA`3fJ7^M@@&^pHb(XS#4M-~GqFvr6lL-7lM`=Vb(7Nn?Ij#31FTp3aWz(cBUTf;nZMQ@G>pI?Y8p!6e#85z--skw zlRichH5P+zxVOfz#^*z!q83f{!Hwve1oQtgV&4&2X!ZN`U#Zc zY)Wx9r8t{XoJ}dtrW9vWinA%j*_7gJN^vgB*?$G06}NVj;S2x(002ovPDHLkV1no4 BKHC5Q literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_2.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_2.png.import new file mode 100644 index 0000000..d10e415 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfkd53ysmtja0" +path="res://.godot/imported/spr_shotgun_stairfall_2.png-c4e1938e3483dc495d5ef575bcf864a6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_2.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_2.png-c4e1938e3483dc495d5ef575bcf864a6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a0846ea24e0cdcbbdb100eaad50f2a7ac6c7600f GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_q`EPZ!6K2=}woY_sk(c6Tbegda6hnBJ3qDPyg_FH3+Qxz1sil*9C^_wH9sCpH}tj>tcgg_lm+GvVqL+jp+Z?t!rK6yDX}064c^<-tre3M+V4Nq^c;@)&&qe=B z?HMKKJwM-YL%?KZU6OYYOLnMR>x|d6wf_xc@}-4Ln3liy;|5wap`hsJ5{0i7<(Ci6 zi7eh!o4cam!Pf*oOHmd6dbxSUb8-$$W}9+o@3#{-1a=7WD!Tr9xiUcPuy(Lv)AOC` z8xt4{I>T?dUS#Q_t&+Dzim@I(B`IlAbx_tVHz-S)rw2tnkixQw?A8u>iezmhCsrHd99kPA#EEh z-=D1s=C~nHP_ysfJ^$>tOD1T(w9NiuzM+lRSf?Y++vBmP+b!d0`{ctH;VA=+sq^%S Z{^s~42R?~xd;muORoR` literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png.import new file mode 100644 index 0000000..3ccdf48 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl2qtq84d8gha" +path="res://.godot/imported/spr_shotgun_stairfall_3.png-431a4e2979e2ca0326c397d9b1a2752d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_3.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_3.png-431a4e2979e2ca0326c397d9b1a2752d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d3b213f257a70501b1b2d44f6b8b0454f97233 GIT binary patch literal 681 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_mZOPZ!6K2=}v75BeSs5O4|RnsT65+ao4J zIh}9LWu`|iq8=elE}UDE{;erH^XKf1jY3P#PoMY6c6WVxj{C{HS0cKx#V11pF1b*bYgWDRB(=vy|AUtslg`up-n-UMniF?Na+mb zYn8m8JZ~C^{wjTzonY|ZZvA8H1&k6N^F_|*akj-3q`V7QY|`z(U>fAi$aYI=Rc)MD zm!d?+^;_I;-+mQX_9ikpSYwu#Ld~()tC_ccfBjke8wc};>^^@MmKDuayg34`ZYIH> zw+8UA&8;`&`LKMU!;B@G-+o1H;XnNRAJ0)c-s9>kXYnptA=z#uV#2$0uh*Q+g}2T( zvwkfTwoYo+FnKI{amK=kc<0{&P5ynq*PNXf%fLRXa7CMvrNM>e%l^8=FHHRQhRNc> zoEr%@tZzg&YwD()SvSw!iM73A!r=qgmLJv6Uu(MS=BbGRkybZMOlL$^TdjFoX)PWR zc+vi?S-}4|rWaW}31^loyKu}qKCf6CErO35y{%&~ofNxq#pcg7z~sf?>FVdQ&MBb@ E0I}F1rvLx| literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png.import new file mode 100644 index 0000000..0326631 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de1blurkbtkqp" +path="res://.godot/imported/spr_shotgun_stairfall_4.png-7f83923d6067dec2e92e9b191a977f8d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_4.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_4.png-7f83923d6067dec2e92e9b191a977f8d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8623bed6c2ea6f4189c5982c9af27a6409438dfe GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_mYtPZ!6K2=}wo4E>l51zd|oESO|(X78_ z^My8jHAdehUMq_wCG#5l7YEtNaVUOrDqlA@aa-sbZnqVi)L7Jx9uMpaJvH<3;biOP z>Idhh6j#=XzhPW-eED?Nq$#J2p4@mYIZf;5TVKX(L0a5{-xdIPAZt)hc=Capb(`b{XA*20Z^+iZu`Q z?A&jDE0}F%z|H0A9@`BB_w7#6T(ehW`l;{#*2LbP%;LDKl~*r*g~$W1JsfMMe%~Ol z0H|!k!nGmGxON4}rF7X(Usd8XC28a5=R4PYmJB^{(ZAMfy)m5oLj&v z9VKVHE{-LFYlS+i=KARimJ6>>biO^+s9)c0$8q)Lrv$2+O8C_#9MyYh?-$BZP^K<@ zwC%lC+kE5fqkrBg-0J3iZYpx(1G}u(+JieCH;D_UrD#s@-n(}mm)-A~yJhw<9=LQk Vq*u_Z8JK_=JYD@<);T3K0RRG|6WRa( literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png.import new file mode 100644 index 0000000..00fb8b4 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3auu05maaiqw" +path="res://.godot/imported/spr_shotgun_stairfall_5.png-c08dfe33a55b9bfdd46a042963a31714.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_5.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_5.png-c08dfe33a55b9bfdd46a042963a31714.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png new file mode 100644 index 0000000000000000000000000000000000000000..351f33a98db142b106d6e95ce5d3cabd0f1dab24 GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anM1_mYtPZ!6K2=}wo5BlmD3b>eya5PGXPx#kr z^6gBcv8IBbOXC-1M{iSeR=CW?g#!{@rPY``vciBeMI$ICNiYI`l8&i(0eQUAtvksi4ClW3z9?8CTLW zS}!b`*ZaLAz1~Z^<=eMkF{P6v>$tAD6Z}bv0~1 z>>weWctiDHNJ_t4P>R5TNA66G^+H_73`Gv#kcfYM%;Riz%6hrko*WxEQ&|6&v$aY- z*x%BX7|_tjv&M4S_1jhlj#aqG*6g*P{`qZhvw=>F!5!wgESobU()sHZ1RluW>E3vs zr|M1O3`qfpOq08Z<@czvZC3jF_)wM3x(CP4eHUPKxMX%r`A=e^AID+o!*iq;Rhpc! zl3a6rR`m~N#W%}j+MFhGZ#6jcXsy8kg^uLvyI(_!wan-B-+Y|Bs;r_^{ bUwEgzlfL-PrGpWefEYYo{an^LB{Ts5VGb9C literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png.import new file mode 100644 index 0000000..c88c019 --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0prmgrm31ds2" +path="res://.godot/imported/spr_shotgun_stairfall_6.png-90576f743d5b2a9b91619c8ad9736071.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_6.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_6.png-90576f743d5b2a9b91619c8ad9736071.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_7.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5632aa3bebaa6ace803c4d5873af8edde995d3c2 GIT binary patch literal 672 zcmV;R0$=@!P)pur00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0yRlQK~z{r&6dGU z12GgtDTS24jVqD3q>Y?8aHa*si7Jq&1SuuZit$(;GyWOxIug-h>1DmM_Ww^C6LFJL z`ghoHYizhRHryH;ZjB9rj+y-Z?IrCW_K~{scj%rGHUv6c4vEv(sbFLpb$J_FYlIDf z4wqAC@P;CF*OjFpGbseR8f(}P=*Z2_a?FqScWHOKn|@oYv4#zS4kv{HDKwmXYhC>% zY^Y$wdkoA!pAW6+nwZvD!-h*x2&fcLDSWMluGR<}Iu4J=1n?KfIT|fV@R_W!wIenJ z$EVi>(42D!@k%kuEy+|NV0%Tn8ywsyqH{noK2sS$fgq!FJssua`{N}6oDqnr2nuno zV2zWSK?NM0P!r2dv6+pvxyvpkN<_+s3Za=wun#!hNL!a{~_d` ziuS__@SM-;eFxVGe=2#Hcym7BYhDYEo#X z*E(;_L6oA<)uaF#hHEEuNpsd%!-iX9!>zI5*4S`c(#;RI9lVQ8R!v&~0000pur00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!v9mK~z{r#g(yb z+&~mWRf<)DGN%&YL~UH`z_D5|9H|Ncu0()JP%G5V7iTe?o8|E?*##a*KJxyI2$H&6 zmgOS4M*j8R%kuI5QD8r?UirOrjuWM$YvjGq)8o@}|Kq-c(99(KYfc<3$2> zz0Pr>baaipmI_6b&5T5pj;zw3h6_;SLoyl>+$7SqeiKm`b6L7Go(eC{%c+ z66Jcg@ch&OmeNp`(qdj}56@Jh1ZycgD@7`%&d*)K^OPu+7No_Ln+pNYQKEF(klME3 zg8tS*fHM+NDs4dYz=N*AXDLxCZNSLKx9SK!%ZXBHL+XE;f;SDrd8~o-?i9~(qEs-1 z;XpqH9(D=Nz`o}wQ7UO5ze(u<*X#Dqd5#jL;)C^#OU3p|2{DUA>1eo?QGW&XoTeNS zrQ-$kSdrinRS2XU5+!Lt-0p@aM=u;I1fnDuv~Fv#zIhDT{QiU0rr literal 0 HcmV?d00001 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_8.png.import b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_8.png.import new file mode 100644 index 0000000..e7a83ac --- /dev/null +++ b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_8.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v6yh2242u4s0" +path="res://.godot/imported/spr_shotgun_stairfall_8.png-16962523c70ee4762730acc895b3afe8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_8.png" +dest_files=["res://.godot/imported/spr_shotgun_stairfall_8.png-16962523c70ee4762730acc895b3afe8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_9.png b/Char/Enemy/Art/Enemy_01/spr_shotgun_stairfall_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d285bb14d9f0538398216d63db6efe99d360953d GIT binary patch literal 601 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v4!3HEN8I11&DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9F5he4R}c>anMpoVvzE{-7)?q{bM`W|Qax1#*WP7T8qj|c+!&{n-H=c`mZ{TrQF|TFftn2kbKlZLp3jbMi#N+DZ1s)CNB1yjYPT6_x7wFJ+xBBskOgZ)wg{s~fJT>~D)XD1ORUNPYo?q{ z`nKeQu@|GZ@cWxT*S!(y2~ihYI)$b9-sa7*7dd2DHs~>HPw3bnbK|+rp7TEsh^`ZC zUnsHs&_QpfBX;K{d9Obf%PufzU+KS95X8LUXrnrBO2zNQr2gnX?te@QWtY0KCiA~w zV&z)Y5^H?h void: + floor_raycast.enabled = enabled + floor_l_raycast.enabled = enabled + floor_r_raycast.enabled = enabled + slope_l_raycast.enabled = enabled + slope_r_raycast.enabled = enabled + +func is_on_slope() -> String: + if floor_raycast.is_colliding() and floor_l_raycast.is_colliding() and floor_r_raycast.is_colliding(): + return "" + if slope_l_raycast.is_colliding(): + return "L" + if slope_r_raycast.is_colliding(): + return "R" + return "" + +func is_on_ground(): + if self.is_on_floor() and floor_raycast.is_colliding() or floor_l_raycast.is_colliding() or floor_r_raycast.is_colliding(): + return true + else: + return false + +func start_hurt(): + if !hurt: + state_machine.change_state("hurt_begin") + hurt = true diff --git a/Char/Enemy/Enemy_Base.gd.uid b/Char/Enemy/Enemy_Base.gd.uid new file mode 100644 index 0000000..ef9c539 --- /dev/null +++ b/Char/Enemy/Enemy_Base.gd.uid @@ -0,0 +1 @@ +uid://31cjfbnh8u3h diff --git a/Char/Enemy/States/Enemy_Death.gd b/Char/Enemy/States/Enemy_Death.gd new file mode 100644 index 0000000..8d3a6dc --- /dev/null +++ b/Char/Enemy/States/Enemy_Death.gd @@ -0,0 +1,31 @@ +extends Enemy_State + +func enter() -> void: + # 定义动画及其权重(概率) + var death_animations = { + "Death_1": 0.15, # 50%的概率 + "Death_2": 0.85, # 30%的概率 + } + + # 生成随机数 + var rand = randf() + var cumulative = 0.0 + var selected_anim = "Death_2" # 默认动画 + + # 根据权重选择动画 + for anim_name in death_animations: + cumulative += death_animations[anim_name] + if rand <= cumulative: + if animation_player.has_animation(anim_name): + selected_anim = anim_name + break + + # 播放选中的动画 + animation_player.play(selected_anim) + await animation_player.animation_finished + + blood_component.blood_part_2_enabled = false + + enemy.death = true + owner.set_physics_process(false) + owner.set_process(false) diff --git a/Char/Enemy/States/Enemy_Death.gd.uid b/Char/Enemy/States/Enemy_Death.gd.uid new file mode 100644 index 0000000..ab83db1 --- /dev/null +++ b/Char/Enemy/States/Enemy_Death.gd.uid @@ -0,0 +1 @@ +uid://dhr5agjs0pp1k diff --git a/Char/Enemy/States/Enemy_Hurt_Air.gd b/Char/Enemy/States/Enemy_Hurt_Air.gd new file mode 100644 index 0000000..9efcd67 --- /dev/null +++ b/Char/Enemy/States/Enemy_Hurt_Air.gd @@ -0,0 +1,33 @@ +extends Enemy_State + +func enter() -> void: + #受击状态下,斜坡往下滑 + enemy.set_floor_stop_on_slope_enabled(false) + #禁用one way ground碰撞 + enemy.set_collision_mask_value(21, false) + + # 播放动画 + animation_player.play("Hurt_Air") + + #after_image_component.start() + +func physics_update(delta: float) -> void: + await get_tree().process_frame + # 只在冻帧结束后才检查着地状态 + if enemy.is_on_slope() != "": + state_machine.change_state("slope_fall") + return + + if enemy.is_on_ground(): + apply_base_movement(delta) #会有空中和地面阻力 + if abs(enemy.velocity.x) < 200: + state_machine.change_state("hurt_ground") + else: + enemy.velocity.y += ProjectSettings.get_setting("physics/2d/default_gravity") * delta + + # 应用转向 + update_facing_by_velocity() + enemy.move_and_slide() + +func exit() -> void: + pass diff --git a/Char/Enemy/States/Enemy_Hurt_Air.gd.uid b/Char/Enemy/States/Enemy_Hurt_Air.gd.uid new file mode 100644 index 0000000..861b8f9 --- /dev/null +++ b/Char/Enemy/States/Enemy_Hurt_Air.gd.uid @@ -0,0 +1 @@ +uid://c6go4s15ssa6p diff --git a/Char/Enemy/States/Enemy_Hurt_Begin.gd b/Char/Enemy/States/Enemy_Hurt_Begin.gd new file mode 100644 index 0000000..2e81b2e --- /dev/null +++ b/Char/Enemy/States/Enemy_Hurt_Begin.gd @@ -0,0 +1,83 @@ +#hurt_begin.gd +extends Enemy_State + +var damage: int +var direction: Vector2 +var hit_force: int +var hit_type: String +var player_hit_stop_component: Node +var slash_player: AnimationPlayer + +func enter() -> void: + player_hit_stop_component = player.get_node("Hit/Hit_Stop_Component") + slash_player = player.get_node("Hit/Player_Attack_Component/Hit_Enemy_Effect/AnimationPlayer") + # 进入受伤状态时,禁用伤害碰撞盒 + hurt_box.get_node('CollisionShape2D').set_deferred("disabled", true) + hurt_box.set_deferred("monitoring", false) + hurt_box.set_deferred("monitorable", false) + + enemy.get_node("Body_Animation/Sprite2D").texture = load("res://Char/Enemy/Art/Enemy_01/spr_shotgun_hurtfly_0.png") + animation_player.play("Hurt_Begin") + + # 从enemy.hurt_data中获取伤害相关数据 + # hurt_data是一个数组,包含了伤害值、方向、击退力度和攻击者的hitstop组件 + damage = enemy.hurt_data[1] + direction = enemy.hurt_data[2] + hit_force = enemy.hurt_data[3] + hit_type = enemy.hurt_data[4] + + var blood_dir = direction + + enemy.health -= damage + + # 当敌人在地面上时,防止向下击退导致穿过地面 + # 通过将y方向设为0来实现 + if enemy.is_on_ground() and direction.y > 0 : + direction.y = 0 + + # 设置射线检测,用于判断击退距离是否会与墙体发生碰撞 + # 120为最大击退距离 + var hurt_ray = hurt_box.get_node("RayCast2D") + hurt_ray.target_position = direction * 120 + + # 这样可以确保所有状态都已正确设置 + process_hurt() + + blood_component.create_part1_blood(blood_dir) + +func process_hurt() -> void: + # 更新射线检测状态,确保获取最新的碰撞信息 + var hurt_ray = hurt_box.get_node("RayCast2D") + hurt_ray.force_raycast_update() + + var start_pos = enemy.global_position + var target_position: Vector2 + + # 如果射线检测到碰撞,则将目标位置设为碰撞点 + # 否则使用最大击退距离作为目标位置 + if hurt_ray.is_colliding(): + target_position = hurt_ray.get_collision_point() + else: + target_position = enemy.global_position + hurt_ray.target_position + + # 根据敌人是否在地面上来调整最终位置 + # 在空中时额外添加一个向下的偏移,使击退效果更自然 + if enemy.is_on_floor(): + enemy.global_position = target_position + else: + enemy.global_position = target_position + Vector2(0,30) + + if hit_type == 'attack': + var after_image_texture = get_first_frame_texture("Hurt_Begin") + after_image_component.spawn_trail_between_points(start_pos, enemy.global_position,8,false,after_image_texture,Rect2()) + player_hit_stop_component.freeze() + enemy.freeze = true + + # 转换到空中受伤状态,准备执行击退效果 + if not enemy.freeze: + state_machine.change_state("hurt_air") + +func exit() -> void: + enemy.velocity = direction * hit_force + enemy.freeze = false + pass diff --git a/Char/Enemy/States/Enemy_Hurt_Begin.gd.uid b/Char/Enemy/States/Enemy_Hurt_Begin.gd.uid new file mode 100644 index 0000000..aeb382a --- /dev/null +++ b/Char/Enemy/States/Enemy_Hurt_Begin.gd.uid @@ -0,0 +1 @@ +uid://c7nqhmg3j1vem diff --git a/Char/Enemy/States/Enemy_Hurt_Ground.gd b/Char/Enemy/States/Enemy_Hurt_Ground.gd new file mode 100644 index 0000000..44373d6 --- /dev/null +++ b/Char/Enemy/States/Enemy_Hurt_Ground.gd @@ -0,0 +1,48 @@ +# Enemy_Hurt_Ground.gd +extends Enemy_State + +var has_animation_finished := false + +func enter() -> void: + enemy.set_floor_stop_on_slope_enabled(false) + enemy.set_collision_mask_value(21, false) + + if not animation_player.animation_finished.is_connected(_on_animation_finished): + animation_player.animation_finished.connect(_on_animation_finished) + + animation_player.play("Hurt_Ground") + has_animation_finished = false + +func _on_animation_finished(_anim_name: String) -> void: + has_animation_finished = true + check_state() + +func check_state() -> void: + if enemy.is_on_slope(): + state_machine.change_state("slope_fall") + elif enemy.is_on_ground(): + if enemy.health <= 0: + state_machine.change_state("death") + else: + _prepare_for_idle() # 改用下划线前缀表示这是一个私有方法 + +func physics_update(delta: float) -> void: + apply_base_movement(delta) + update_facing_by_velocity() + enemy.move_and_slide() + + if enemy.is_on_slope(): + state_machine.change_state("slope_fall") + +# 添加到Hurt_Ground状态中 +func _prepare_for_idle() -> void: + hurt_box.get_node('CollisionShape2D').set_deferred("disabled", false) + hurt_box.set_deferred("monitoring", true) + hurt_box.set_deferred("monitorable", true) + state_machine.change_state("idle") + +func exit() -> void: + # 断开动画信号连接 + if animation_player.animation_finished.is_connected(_on_animation_finished): + animation_player.animation_finished.disconnect(_on_animation_finished) + has_animation_finished = false diff --git a/Char/Enemy/States/Enemy_Hurt_Ground.gd.uid b/Char/Enemy/States/Enemy_Hurt_Ground.gd.uid new file mode 100644 index 0000000..26d5008 --- /dev/null +++ b/Char/Enemy/States/Enemy_Hurt_Ground.gd.uid @@ -0,0 +1 @@ +uid://ce2fxr3ubj24x diff --git a/Char/Enemy/States/Enemy_Idle.gd b/Char/Enemy/States/Enemy_Idle.gd new file mode 100644 index 0000000..de1816c --- /dev/null +++ b/Char/Enemy/States/Enemy_Idle.gd @@ -0,0 +1,21 @@ +# Idle_Battle.gd +extends Enemy_State + +func enter() -> void: + play_animation("Idle") + #after_image_component.stop() + +func physics_update(delta: float) -> void: + + # 应用重力 + enemy.velocity.y += enemy.gravity * delta + + # Idle状态下逐渐停止水平移动 + enemy.velocity.x = move_toward(enemy.velocity.x, 0, 100.0) + + enemy.move_and_slide() + + # 移动后再检查地面状态 + #if not enemy.is_on_floor(): + #state_machine.change_state("fall") + #return diff --git a/Char/Enemy/States/Enemy_Idle.gd.uid b/Char/Enemy/States/Enemy_Idle.gd.uid new file mode 100644 index 0000000..4d847d5 --- /dev/null +++ b/Char/Enemy/States/Enemy_Idle.gd.uid @@ -0,0 +1 @@ +uid://vv1x1fxhvlkb diff --git a/Char/Enemy/States/Enemy_Slope_Fall.gd b/Char/Enemy/States/Enemy_Slope_Fall.gd new file mode 100644 index 0000000..021b6bf --- /dev/null +++ b/Char/Enemy/States/Enemy_Slope_Fall.gd @@ -0,0 +1,63 @@ +# Enemy_Slope_Fall.gd +extends Enemy_State + +var ROLL_SPEED := randf_range(200,300) + +func enter() -> void: + enemy.velocity = Vector2.ZERO + enemy.set_floor_stop_on_slope_enabled(false) + enemy.set_collision_mask_value(21, false) + + ensure_animation_looping() + + if enemy.get_slide_collision_count() > 0: + var collision = enemy.get_slide_collision(0) + var slope_normal = collision.get_normal() + + if enemy.is_on_slope() == "L": + enemy.velocity = Vector2(abs(slope_normal.y), abs(slope_normal.x)) * ROLL_SPEED + elif enemy.is_on_slope() == "R": + enemy.velocity = Vector2(-abs(slope_normal.y), abs(slope_normal.x)) * ROLL_SPEED + +func ensure_animation_looping() -> void: + if animation_player.has_animation("Slope_Fall"): + var anim = animation_player.get_animation("Slope_Fall") + anim.loop_mode = Animation.LOOP_LINEAR + + animation_player.stop() + animation_player.play("Slope_Fall") + +func _on_animation_finished(_anim_name: String) -> void: + if _anim_name == "Slope_Fall": + animation_player.play("Slope_Fall") + +func physics_update(delta: float) -> void: + apply_gravity(delta) + + if not animation_player.is_playing(): + animation_player.play("Slope_Fall") + + if enemy.is_on_slope(): + var slope_direction = enemy.is_on_slope() + if enemy.get_slide_collision_count() > 0: + var collision = enemy.get_slide_collision(0) + var slope_normal = collision.get_normal() + + if slope_direction == "L" and enemy.velocity.length() < ROLL_SPEED: + enemy.velocity = Vector2(abs(slope_normal.y), abs(slope_normal.x)) * ROLL_SPEED + elif slope_direction == "R" and enemy.velocity.length() < ROLL_SPEED: + enemy.velocity = Vector2(-abs(slope_normal.y), abs(slope_normal.x)) * ROLL_SPEED + + if not enemy.is_on_slope() and enemy.is_on_ground(): + enemy.velocity.x = randf_range(400,450) if enemy.velocity.x > 0 else randf_range(-400,-450) + state_machine.change_state("hurt_ground") + + if not enemy.is_on_slope() and not enemy.is_on_ground(): + state_machine.change_state("hurt_air") + + update_facing_by_velocity() + enemy.move_and_slide() + +func exit() -> void: + if animation_player.has_animation("Slope_Fall"): + animation_player.get_animation("Slope_Fall").loop_mode = Animation.LOOP_NONE diff --git a/Char/Enemy/States/Enemy_Slope_Fall.gd.uid b/Char/Enemy/States/Enemy_Slope_Fall.gd.uid new file mode 100644 index 0000000..7b888a3 --- /dev/null +++ b/Char/Enemy/States/Enemy_Slope_Fall.gd.uid @@ -0,0 +1 @@ +uid://dv30qyfgqt8lx diff --git a/Char/Enemy/States/Enemy_State.gd b/Char/Enemy/States/Enemy_State.gd new file mode 100644 index 0000000..79e5340 --- /dev/null +++ b/Char/Enemy/States/Enemy_State.gd @@ -0,0 +1,108 @@ +# Enemy_State.gd +class_name Enemy_State +extends Node + +# 阻力和加速度相关常量 +var GROUND_DECELERATION := randf_range(1200,2600) +const AIR_DECELERATION := 10.0 +#const AIR_REVERSE_ACCELERATION := 1200.0 # 空中反向加速度 +#const AIR_SPEED := 400.0 # 空中移动速度 +#const VELOCITY_THRESHOLD := 5.0 # 速度阈值常量, 主要是用于run_to_idle + +var enemy: CharacterBody2D +var player: CharacterBody2D +var animation_player: AnimationPlayer +var state_machine: Node +var after_image_component: Node +var fx_component: Node +var hurt_box: Area2D +var blood_component: Node2D + +func _ready() -> void: + player = get_tree().get_first_node_in_group("Player") + enemy = owner + if enemy: + animation_player = enemy.get_node("Body_Animation/AnimationPlayer") + after_image_component = enemy.get_node("After_Image_Component") + blood_component = enemy.get_node("Blood_Component") + #fx_component = enemy.get_node("FX_Component") + hurt_box = enemy.get_node("Hurt") + state_machine = get_parent() + if not animation_player: + push_error("Animation Player not found for state: " + name) + else: + push_error("Player node not found for state: " + name) + +func enter() -> void: + pass + +func exit() -> void: + pass + +func physics_update(_delta: float) -> void: + pass + +# 应用重力 +func apply_gravity(delta: float) -> void: + enemy.velocity.y += ProjectSettings.get_setting("physics/2d/default_gravity") * delta + +func apply_base_movement(delta: float) -> void: + apply_gravity(delta) + # 应用地面和空中阻力 + var deceleration = GROUND_DECELERATION if enemy.is_on_ground() else AIR_DECELERATION + if enemy.velocity.x != 0: + var friction = deceleration * delta + if abs(enemy.velocity.x) <= friction: + enemy.velocity.x = 0 + else: + enemy.velocity.x -= friction * sign(enemy.velocity.x) + +# 应用阻力 +func apply_deceleration(delta: float, is_on_ground: bool) -> void: + var deceleration = GROUND_DECELERATION if is_on_ground else AIR_DECELERATION + enemy.velocity.x = move_toward(enemy.velocity.x, 0, deceleration * delta) + +func play_animation(anim_name: String) -> void: + if animation_player and animation_player.has_animation(anim_name): + animation_player.play(anim_name) + else: + push_warning("Animation " + anim_name + " not found for state: " + name) + +func update_facing_direction(direction: float) -> void: + if direction == 0: + return + enemy.get_node("Body_Animation").scale.x = -1 if direction < 0 else 1 + #enemy.get_node("Detector/Wall").scale.x = -1 if direction < 0 else 1 + +# 用于根据速度更新朝向的函数 +func update_facing_by_velocity() -> void: + if enemy.velocity.x != 0: + update_facing_direction(enemy.velocity.x) + +#获取指定动画的第一帧texture +func get_first_frame_texture(animation_name): + var animation = animation_player.get_animation(animation_name) + + # 找到控制texture的轨道 + for track_idx in animation.get_track_count(): + if animation.track_get_type(track_idx) == Animation.TYPE_VALUE: + var path = animation.track_get_path(track_idx) + if "texture" in str(path): + var first_key_value = animation.track_get_key_value(track_idx, 0) + return first_key_value + + return null + +#获取指定动画的第一帧region_rect +func get_first_frame_region_rect(animation_name): + var animation = animation_player.get_animation(animation_name) + + # 找到控制region_rect的轨道 + for track_idx in animation.get_track_count(): + if animation.track_get_type(track_idx) == Animation.TYPE_VALUE: + var path = animation.track_get_path(track_idx) + if "region_rect" in str(path): + var first_key_value = animation.track_get_key_value(track_idx, 0) + return first_key_value + + return null diff --git a/Char/Enemy/States/Enemy_State.gd.uid b/Char/Enemy/States/Enemy_State.gd.uid new file mode 100644 index 0000000..ee07c11 --- /dev/null +++ b/Char/Enemy/States/Enemy_State.gd.uid @@ -0,0 +1 @@ +uid://bj1tl0qvu7ssq diff --git a/Char/Enemy/States/Enemy_State_Machine.gd b/Char/Enemy/States/Enemy_State_Machine.gd new file mode 100644 index 0000000..bc7e96a --- /dev/null +++ b/Char/Enemy/States/Enemy_State_Machine.gd @@ -0,0 +1,53 @@ +# Enemy_State_Machine.gd +extends Node + +var states = {} +var current_state: Enemy_State = null +@onready var enemy = owner +@onready var player = get_tree().get_first_node_in_group("Player") + +var is_state_locked := false # 新增:状态锁定标志 +var pending_state_name := "" # 可选:用于存储待切换的状态 + +func _ready(): + await get_tree().process_frame + + for child in get_children(): + if child is Enemy_State: + var state_name = child.name.to_lower() + states[state_name] = child + + if states.has("idle"): + change_state("idle") + else: + push_error("Could not find idle state!") + +func _physics_process(delta): + if current_state: + current_state.physics_update(delta) + +func change_state(new_state: String) -> void: + # 检查状态是否被锁定 + if is_state_locked: + # 可选:存储待切换的状态 + pending_state_name = new_state + return + + if current_state: + current_state.exit() + + current_state = states[new_state] + current_state.enter() + +# 新增:锁定状态切换的方法 +func lock_state() -> void: + is_state_locked = true + +# 新增:解锁状态切换的方法 +func unlock_state() -> void: + is_state_locked = false + # 可选:如果有待切换的状态,立即切换 + if pending_state_name != "": + var temp_state = pending_state_name + pending_state_name = "" + change_state(temp_state) diff --git a/Char/Enemy/States/Enemy_State_Machine.gd.uid b/Char/Enemy/States/Enemy_State_Machine.gd.uid new file mode 100644 index 0000000..19dd979 --- /dev/null +++ b/Char/Enemy/States/Enemy_State_Machine.gd.uid @@ -0,0 +1 @@ +uid://ccl8rou8xjq7l diff --git a/Char/Enemy/outline.gdshader b/Char/Enemy/outline.gdshader new file mode 100644 index 0000000..a9c7021 --- /dev/null +++ b/Char/Enemy/outline.gdshader @@ -0,0 +1,33 @@ +shader_type canvas_item; + +uniform int width:hint_range(0, 5, 1); +uniform vec4 outline_color:source_color; +uniform float flickering_speed:hint_range(0.0, 50.0, 1.); +uniform float minimal_flickering_alpha:hint_range(0.0, 0.9, 0.1); + +void fragment() { + float pixel_size_x = 1.0/float(textureSize(TEXTURE,0).x); + float pixel_size_y = 1.0/float(textureSize(TEXTURE,0).y); + vec2 pixel_size = vec2(pixel_size_x, pixel_size_y); + if (texture(TEXTURE, UV).a == 0.) + { + for(int x = -width; x <= width; x++) + { + for(int y = -width; y <= width; y++) + { + vec2 pixel_offset = vec2(float(x),float(y)); + if( texture(TEXTURE, UV+(pixel_offset*pixel_size)).a > 0.) + { + vec4 resulting_color = outline_color; + float alpha_norm = (sin(TIME*flickering_speed) +1.2) *0.5; + alpha_norm = (1.- minimal_flickering_alpha) * alpha_norm + minimal_flickering_alpha; + resulting_color.a = alpha_norm; + COLOR = resulting_color; + } + } + } + }else + { + COLOR = texture(TEXTURE, UV); + } +} \ No newline at end of file diff --git a/Char/Enemy/outline.gdshader.uid b/Char/Enemy/outline.gdshader.uid new file mode 100644 index 0000000..50e2f97 --- /dev/null +++ b/Char/Enemy/outline.gdshader.uid @@ -0,0 +1 @@ +uid://djwmx2kmd6oir diff --git a/Char/Player/Dragon/Art/spr_dragon_attack_0.png b/Char/Player/Dragon/Art/spr_dragon_attack_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c5271bb44b59d7c03bcc765cb1a6db1b820923 GIT binary patch literal 736 zcmV<60w4W}P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0(D75K~!i%?U=2O z6hRb)M)LGungM03BpbtA#bl zbp3UAov&{tJGeIE?W4db@P5BPa!ilHaTxe-)sZhar*upN zLthCfWywhqS|NKFJ{LM_&?bSQDmewlLr1rPLR;hb{q61W`O|&A zgAefi?oB>l>-1p+h38*Xxv7yVk;}3w1;^1%E1b-jKwyPV7~k%z=>uvKAY6pd#sH%# z!3L&+a3BIe@WbIyAqa@pI0zi$(-xanrBEdRq8(E;lt9oH2n+}SaK%2SwE{s^#P~eK z#sQ%aF;pu7kB$4$(7Ldc>jkphGdpD{j*CM3*{4tCFz3gjxYw+Kc(62K90ni+p_G2w z+hNx%fq0n4Jq$nq#K&(X0@>-GhknWojg76Q2H}0k{<0 z!lUf-^PKj>(8A@_P%LF%KhxJz85!DuG!m>;z#ycKi2cWEozhnqkmVhT-R=(>XxqpB SV-P<80000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0+2~WK~!i%?N*^~ z8$l2?3`}9AqEzLE#fC+Jfsq1A1It1K0t3T>D)lo;OoIIn`H1Vj>AdUP@$Mx#*SWL2 zPkOqY-I=+0&uhzzhK7cQhK7cQhHd=5{@nTUII;P0(t*#9ry0Aak48_MKUS+%M}9dw z>(@1US%!y;Pg`ct2oPtUIxmz2f-nN40E(hW6$g4d1I$pC^4ZHvrUk{83{YZVQbi~! z7Ee9r4bdDW_I#Y_u=#n@fl+umA~SIKQogQ18o*mYGf>ZGB;GL@XvVMWZ${sKHS{K> zuxL&+11#MRYd95lHG*P6{fdFGG#~QyYFkml+)P{&08W_Y`YG)?g z-`&_AVtYv)RbwLY!wS)){n+kmMifEni&I(_gF`jQCt(B(@pu#incv3uLkU8GkOw)L8fWV;}z&#}f!_#vNFoVK5 zJOmio!1MAR?{rt^fue8j_ zzS4glkb$y6Jsu78ps6YB&BYqzdwg#e=m+CkxC=6|ddrlaI}2pueK>M7&}Y3~&sum1 tDxTaK5RSjzhhTu>znXC9I07RUi$CT`ryF~CQ8EAk002ovPDHLkV1nH~SBL-r literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_attack_1.png.import b/Char/Player/Dragon/Art/spr_dragon_attack_1.png.import new file mode 100644 index 0000000..4510236 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_attack_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bged4gw2kxak4" +path="res://.godot/imported/spr_dragon_attack_1.png-c0aae50579a764d653bd3d903ffaf3bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_attack_1.png" +dest_files=["res://.godot/imported/spr_dragon_attack_1.png-c0aae50579a764d653bd3d903ffaf3bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_attack_2.png b/Char/Player/Dragon/Art/spr_dragon_attack_2.png new file mode 100644 index 0000000000000000000000000000000000000000..483827fce2c1c459129d14922ac267883de692c8 GIT binary patch literal 695 zcmV;o0!aOdP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!&FnK~!i%?Ux}> zLqQOPE0G{cP$l?EbR`OjBtc-2I4lB*#Gy#|8JHS0|A8M-Znis@>2m-xh z-R`}2^YvQ7Xs^BYYDV9$hjSkeM+iOtJT`yaoz5};x<9b_;DEebon#o10mfU~7C^vy zJ0cI_hTv1DO8~ky2pDJMv4zI%V0iv!3p}=x=iImUPt)mi4kIY6a|Dx5 z+srzl!0&e#1_EPyXkWxIr4aQan9TeH!t^T7XG8g!jgtA*v2ClEO5r?F4xcm^#! zCahf_O|pHtd+7mdPHowGco^U~_tw_9u268+P8A&j_VSWyhb~PpFveP|!JwmB z=QpH$DedJ@QGd;;J+ubj)}6uldV8=J@X&mrm#fmC>+H|k>Y0%|uo-`W@SMlVrQNWd z{UrhfI!!Z#O^1#Gt9?Jc3)yq7&nNb~0|8MoAb>Q+n*dNzcv?X2?vNtD00=<9 zZQ1tBzm^19kp?XRXzljqrZW%}-{sTp#23NqLYGck&G^(f_Vs486t)HgHClh@VD3rd z{;76&u1kHz5u9RA|AasqB64ao6F>w44)*m^gc1eidJ%M`uk7)@wnRXckQs{halB}0 zM>${xhAKm75kz<^%Ai_jzn7X*4j94UTFW3bn3;2g_O%RxHScdmIdBkC$0n`KX0x_H z5JCh)gD=`mHh+Gy|AN~PgGUfjd0kMedtVa@Zvoa9<&9!*6F}^m6Ns-3R`#j-58xh# dxaS&;egK?F*TIzpW&{8L002ovPDHLkV1hq9F!}%h literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_attack_2.png.import b/Char/Player/Dragon/Art/spr_dragon_attack_2.png.import new file mode 100644 index 0000000..3d15769 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_attack_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bt716lbnswoul" +path="res://.godot/imported/spr_dragon_attack_2.png-5d160b40f0ab5d1a915c1d00c04156f6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_attack_2.png" +dest_files=["res://.godot/imported/spr_dragon_attack_2.png-5d160b40f0ab5d1a915c1d00c04156f6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_attack_3.png b/Char/Player/Dragon/Art/spr_dragon_attack_3.png new file mode 100644 index 0000000000000000000000000000000000000000..57eff98887da12241f3b03d4c11d6aeb65bcf26e GIT binary patch literal 715 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 T9n-bw00000NkvXXu0mjf%j$-< literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_0.png.import b/Char/Player/Dragon/Art/spr_dragon_flip_0.png.import new file mode 100644 index 0000000..e620542 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_flip_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fembvua8hmck" +path="res://.godot/imported/spr_dragon_flip_0.png-ed6e6c677b647fc38325d4dd17bb94fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_flip_0.png" +dest_files=["res://.godot/imported/spr_dragon_flip_0.png-ed6e6c677b647fc38325d4dd17bb94fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_1.png b/Char/Player/Dragon/Art/spr_dragon_flip_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9eef5181e1a36218d51170a854893618e339e3f0 GIT binary patch literal 737 zcmV<70v`Q|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0(MD6K~!i%?U*l5 z13?hQE0G{cP!N12x)Oy%HmSfOaaaTri9?a_F)%e~z5^fP*f+Ot^LDyz3E4}p&A#O2 z_GbUg{Fu8-!=$OHsi~>yz|@HkMhdn6V3+6T-Q8l5fN*aUdn^Une;|Uu+hBg)jyt&f zI!%sKqme<-F}5Otz~2u?$)f}FFq@#(31A8v!@E%pAc#=t6s|E`ML2BZ<3l+ZuFn7| zU8|1MNrZ~GRb<7*WW}VE6s3l2jJertmYI9J`)z%vYIZ3VQW$4qabZ|=350VP!#YQY z`Kn#AgfGvJS>l)|OMn;)3b&bcjs+vGv63a%q$*H9%!_6+CWLfe*KCWG%yr>dJHPga z!Ssj3=5+;gZE247XE8qL=UWSaStuQrq;YAD?)AoAy~ldMyxyJ-2SjO7Uuc-lz|?-9 z#<&OX?fh!mecoS~@yHGF313mEC>pV_WGxu&*DDM`2*Xb}Kj)}n5cvW_C>1C+X`C?J zLm2*2@G$h?K>tt?2(SRcJEKq@2u9pa8i`UjVRj8yz^Dl}W}ubs0E7kr?IF~d?~mKP ztZ)TE3=a3LsC@8#7~YTw0U|+61K#a0t=$#li?h82n`w66Tt?HGAYD zP%3gmx2Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0&_`3K~!i%?Uyl9 z>p&1h9TGxF3iWe`#14r#!aoAx&qxUfxd9PX9D~FOF?Zk)`rG5_t=4#jFvwyJ+f`ji zvoouHUX{x%nwpxLnwoyFy5NJBLHs#8%ifd+rQl<|v#YzmyXn^JH9vejHq}vCuY|Sh za8kY64tsxId?5bvx_db_zdao1I_x8=Jmc#*Jgn=Xz8`5Aeem=3xxv7=<~r=7syyfG zy}jbS)TfthzV%SR{JmJ36>2k?wKeNKTl+=Z^jC#nzW!6*B%9~Jtl|3U`ZAmA@MhX% zvoPm48*8i=_V~Q?{}X*sS~BB7S|<$GBusCHHJxRR>uR5!Mm(jVhsS#9l+eq582j;B z=e39CZ1Ob1!vU2pb7($@*9^pa0JmZ$3;_YhQ{#!j3P507!@f;j zVqhBg0E;K4fH*0hmTyy+5R50KMlAx{tLi{LemDZmkiDg;si~>yH*2x@4-A+Gn0J6; QD*ylh07*qoM6N<$f<2i_u>b%7 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_2.png.import b/Char/Player/Dragon/Art/spr_dragon_flip_2.png.import new file mode 100644 index 0000000..ef235bd --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_flip_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1x7i1v7w5iy7" +path="res://.godot/imported/spr_dragon_flip_2.png-49480579be52cafc3fead6f7f37bcc3a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_flip_2.png" +dest_files=["res://.godot/imported/spr_dragon_flip_2.png-49480579be52cafc3fead6f7f37bcc3a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_3.png b/Char/Player/Dragon/Art/spr_dragon_flip_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8dfc441d1a4d3f9ed700f8697600deed9c7c7dac GIT binary patch literal 786 zcmV+t1MU2YP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0;fqtK~!i%?U$jB z6hRb4MDe^>etFvP+6 zbSwzLvBUhldlxX857bhpaBkIC{9!-{nx&nN7C=AEK@AIn&Nz_f+3~7t;;xqfYF-4h?l=tNQ!oa! zjyPs=hTkcef|gPk009XGj|0PNw}C;&U>GlTX9ySsPHwS6TZ zhd}}=!&zvDVNA{EsZ*_21C$6+E(buWxh?Eb7)`t_p z7Qr5;gajBK8Az&NM}TH9>ESgC>>UtH12w#AX!)`H9|+rz*x@yUaiCO%N{=h=07q>B zNUC$=ZbTVCeHlCfG`<`N3o0INRDR6Do9<9i`!D!eD1f%!8JD`#xl6mPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0zOGZK~!i%?Uu1l z95E1vucS;$q*S2vl+;(IN}2McE7DS?qotsvq@#+I$4GMxHSfSfEc*}hS+mA>9Aw!g zXnyIJ?XkU{Z^v5gB9%&|QmIsGUfth(>g4YBu-K>mF99Oo{W>Uqmtd>YlTP;GizToK z>*0CC+g*L`p?Y7Od^h{_-U3R`QtRRA#kB!QeZ^i229yuykpR9P9TlK|f#L<4j@ao1r!sdVlr1S&PV%p)8tnU7zeV$ zNldYrsGzul^y56%K7s!|JGOOt=2S8WB|$$z)IfOG_0t}z8QZDAED5!k#2B}rsDLaW z0V>9x>mOeXKy3t*`}sFjNdng}(Gf~X0wc3W5C8$f*KR5(WC`s8icsnc=+D`=?(X-w zS-(vH#H!2+MB=gEGV6iCB)tnr?)Q!--m(wT03!Blvo=;IT5BRu?NLAFI*cpR59o#Taww8@Dm`9&!at)d2UUC@^LDaN~Kb%R4VmRv{*aPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0t`t+K~!i%?U*r6 zLopCUQ&K{SM1@38Nu3i=QbtO_73k7ZP*T!Sag;RFxdVszc$^(;vMeMK%C{4Fq|x_Z z@0xkB2ojU7uCA`Ge`+wFj0kiZP&e1trv;QWJkIA$L6tD}Y40p|JA2O`N+pa0+$#2S zM%GnDfZ_FJQP$gnF?=f!UJO)VEMyo|L9DM`xu8G72K#LTO{dd=w$McZ2;H_k6v6OB zEiE_99(Ag>r2r^DS;u>1KWDRTCSx^q_6k$=HSY0?E_}B1*kfh z-B6K2Z3ENUsz5#{!`pUwr=wmNz3Y)R2yLaqOT%bL4Vv1DwcndPv%A~u(P1DBpI(1J z=^h*bz|Xh$*|UoTlRSK0X0M*kus@!n;CO1Cdw+o-H~^Xf(x43f8xTSgL}3WT9@g^@ z8cRNODh+QBS2;`s!H|5{8{rJjWgpg~Xt`YSe+>DHVfC>nMnM1RGd$J|&)Xmbg*|*3 zj0yx8K*2e<1ELA!!mBq_<(o|fuyPv#6o6pD@P=%>NN)veE7ukNcD&i|4^05IzX9G# zv{zjU#E@!*_4{^2dm@w%jCa(n?RccOKrq6<)^=P{Ahm6Gb#--hb)BdtlW#ageAK)n RNwfd}002ovPDHLkV1m2u48s5b literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_5.png.import b/Char/Player/Dragon/Art/spr_dragon_flip_5.png.import new file mode 100644 index 0000000..6d4efe7 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_flip_5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://o63kxaeu8x4h" +path="res://.godot/imported/spr_dragon_flip_5.png-63737ce4ebef6f852f671182ccd9aa76.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_flip_5.png" +dest_files=["res://.godot/imported/spr_dragon_flip_5.png-63737ce4ebef6f852f671182ccd9aa76.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_6.png b/Char/Player/Dragon/Art/spr_dragon_flip_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3f743abf80296d815e1e45828215196f8619cdf2 GIT binary patch literal 733 zcmV<30wVp1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0&+=2K~!i%?Uy}L z!!Q(tQ&K`n8-_k5bxJCZz!6f?rKOmTW)(!7`u<$*#-^V!0vIGmXScR(o&W7$dvO;7|Rh{j{>IPyc((Oy}t3~Ot5 zQ;paTd+#qEh`(G{U)SdEx62fVV~Z;F#C#ea*1U@!Mmmfh{JFR>7#M5j;n=E5eKFtI z%Rftec**7)hXUsDZe~`fx-)5`H`Z+I=WX486@K}~pYkTzJPphk)*p-eWaiuuMbqAg(zOp9#d6*7C;r%wDZ!J=f90$$#SOrwjWM2&oiPAQ<%=-dlUT zv1f~i)%tx|!5D%t9*9Pa-W3Mce(|s(5WbQDq)@N|aWJeyt6B3}rF2jkne~A6NK7uvaj=ZhQq{LWYtJ^NWQaLWt!h3Bs#H^tkE+vFt-#+yPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*FaOK~!i%?Up@G z12GVVQ&K{SL=}mik~$?Ppp2A)mXaSXoxcHT6fm&q1BPI(x5{dCs6-d`OTTn=P@d(*7nm(d@OccY=M zr_+YE(0-(qVIMGnAP_t>5e1=Vv)Q)&#sL$?0};em%9iyKlP7=zY22nyUY?iej|0Lp z0tmDKf(e1ce5H1Q(!}8q`T=D?anIFimHLClst^dRhfp&yYm3sPUE&E!W2lZ?j}w8C zL*h9ot4@Pok_i;R(imYZSycjHD;_6S25&NbhWK)zaSad{Pzq*SQ8AXO&NgvQ*Svlr z5a7@vc{P$E1VJ7aiv$<8h@M}B`N4#NIi`>_Vg|e)`9tln)M|BLg+d<{hW&c(;rFJ) z`0vUersf!04@5JLN&|?A!eRT3YsMJoImly_xH&h>+0Q{A$>+cj<1NQ^a5yTpVknJa z?>00*+@O?jn39|u=WXVpwgHK~Hukp|m7BjQE>ydN;|l_9u&wzEk(i$d^1L7ErHSN+)ac$&ekj9GinTLabpgR8sEl_}zqRqJAClJFLLqHh5Um^WL{v2qC092|H zpFueDEJ23{1eK};5L5|$0tpOscrXwul&g{lqT^tz!vxwU-fjls0gewSs04GgIw_c{ ls;a80s;a80s{gLZu|L{fsJ-h$_002ovPDHLkV1mp~Oo#vg literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_7.png.import b/Char/Player/Dragon/Art/spr_dragon_flip_7.png.import new file mode 100644 index 0000000..d894f23 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_flip_7.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bo0k3qe5flftb" +path="res://.godot/imported/spr_dragon_flip_7.png-c404fd6c70f39ae028cf3f6f8a77b7a0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_flip_7.png" +dest_files=["res://.godot/imported/spr_dragon_flip_7.png-c404fd6c70f39ae028cf3f6f8a77b7a0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_flip_8.png b/Char/Player/Dragon/Art/spr_dragon_flip_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b655c5c92c3eb281810ec3a6516df20f4133d8 GIT binary patch literal 773 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png.import new file mode 100644 index 0000000..ae1bd12 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ousnf1wu7s6g" +path="res://.godot/imported/spr_dragon_idle_0.normal.png-7ba7783f1ff5f352012392d43dabbf85.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" +dest_files=["res://.godot/imported/spr_dragon_idle_0.normal.png-7ba7783f1ff5f352012392d43dabbf85.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_0.png b/Char/Player/Dragon/Art/spr_dragon_idle_0.png new file mode 100644 index 0000000000000000000000000000000000000000..69836acf19c50a7b92146eabd2c42682798aec0a GIT binary patch literal 691 zcmV;k0!;mhP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!T?jK~z{r?UtcV z13?gmE0G{cP!K#4U4cL$kt7IgWgQlQMB-2+JO-u)-FM(2%6{AVH*?D^?X|n7_>(_( zJ3Bk`-QHf)$-ipr`|WVG`Z`W#yqq7bYd!3z^=k<;(7K_!x z{e6rHXjCYG!Z3mWrK^XL*DD*S=bS_cb_SpV%toNQqxJ8We# z!?I#=0G=*xq5%Si*w#Rjhsgo_eMr?c?SKGijs-)Wa(C4)fIidA12D#~;p@~rc~*0K z6&7}ym)r+{t;TLrF`Xe54pZqs`!7sQ<#m-xq7eq-d483i6o=^uq%TcC?i|$-#c0Bl z>*)o=4hbxzM(dNs0;&o{GlB5rm>3Q8+JFkFF~%GQtOuwLlt64)JlMI(X#%u`Vnf%o z1EjdiX(u(!cA*2HxN>b=Uuxii)ExV9UoJJOsn9@`Wyi=|khQCeFKN(E&L_o+13S?_K0!!)4CrUsol8)}us!fNk7dxbmI z6HHAYU(@2lrCQV-RF7o-A9Kv*@Y|GVa7 Z@&hGvs#aLx3K;+Z002ovPDHLkV1n-bGB^ML literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_0.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_0.png.import new file mode 100644 index 0000000..3766250 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqemid4qkvhpx" +path="res://.godot/imported/spr_dragon_idle_0.png-fb5541cdf0cc78057e86fd28fe507614.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" +dest_files=["res://.godot/imported/spr_dragon_idle_0.png-fb5541cdf0cc78057e86fd28fe507614.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_1.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_1.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..5e738e801c7b7efb2f884ae55eac2500bd0b8136 GIT binary patch literal 2196 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_1.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_1.png.import new file mode 100644 index 0000000..36a9149 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mnyld8ya3sdv" +path="res://.godot/imported/spr_dragon_idle_1.png-6883cd50e0f8f4ba4a0de8f4abe33c4f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_1.png" +dest_files=["res://.godot/imported/spr_dragon_idle_1.png-6883cd50e0f8f4ba4a0de8f4abe33c4f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_10.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_10.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe5d41618978babaad61cb1758d958a883972d8 GIT binary patch literal 2200 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_10.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_10.png.import new file mode 100644 index 0000000..f108d09 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpkeoyownslnv" +path="res://.godot/imported/spr_dragon_idle_10.png-c524f4c974d98864db5261a8cec52e85.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_10.png" +dest_files=["res://.godot/imported/spr_dragon_idle_10.png-c524f4c974d98864db5261a8cec52e85.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..9e5081c60c3475c1bfdb4ed15479099b4c19f033 GIT binary patch literal 2217 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 rUa|%>Ml00000NkvXXu0mjfxOYM~ literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png.import new file mode 100644 index 0000000..ce5eda3 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ke5cferl1gva" +path="res://.godot/imported/spr_dragon_idle_11.normal.png-6a2ef28cd624df17e9144c26aeafe339.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png" +dest_files=["res://.godot/imported/spr_dragon_idle_11.normal.png-6a2ef28cd624df17e9144c26aeafe339.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_11.png b/Char/Player/Dragon/Art/spr_dragon_idle_11.png new file mode 100644 index 0000000000000000000000000000000000000000..90ba9a48a135bd4dbab8b7d9e829b526bb5ddde3 GIT binary patch literal 692 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_2.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_2.png.import new file mode 100644 index 0000000..eea1c00 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cejmhawjklaph" +path="res://.godot/imported/spr_dragon_idle_2.png-f2bd4071369e9918dfba191da5d5d207.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_2.png" +dest_files=["res://.godot/imported/spr_dragon_idle_2.png-f2bd4071369e9918dfba191da5d5d207.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..5141b2566e36b2952f2fb8643c6960b0a1139323 GIT binary patch literal 2295 zcmVPx-u}MThR9Hv7mwQyyWg5pnzZr)6Ww^;zaq)sH5}}!it3hqHD0x}UOIB;PWp%V9 zEl+1lQWG!LuB*q)-EHf5(o|d(!~2b>1Qmh=L4-gDMs5QG%rF<2nRgGgdb|J*Wc&N~ zeV_01d7tNbpXdEa^y2$k?=DJRB@7a@-(qJJAd{f5RgmtkmwF+2*H*iY%Zfcjm46V` z^(!$i9fO;zjKavUPQmQ4+30_>ADMSLxmlGMrt0k0y_3i;!`1`t!l(@9tp)F)v6QoH zU=$wlp`6Kn(WrPFF@K;0b*?MaNdu(PMDVgZ>1Ms zm4|Y~?+V2aXwV&N`Tqjh)&~pMT-bEzQU1L690jQZS)(rJnwOsPL4x|TeXpBaBWCxh zs>eo)@DMGkHzcaU(wo5+wL!3oh#!rMeR)o z(N~9yq7+ArQVokf^Wj3jMy`b`nDby684F*dPFqObgmb?RPzQZU$sm!4hSG>;>Doni zG4!$mOQt{dMMfrGwi4Llj4FIG8#c`2xqqk9>QRPmOdF<`kNhI2E{#h{JcY(9l;3U9 zv;4zx%#+5q|X|=JvzYIqyihcde?9{%6ao!a6>`B0@Ny}jCM8>@LE-SKMN4sO& z{RO&FY#*Q$NBta_)-swA2a{PEx*2CjIB+nYrZ2KsUfWJ~tckGXA-or=<<%|2s9pK` zFM{dt-J`%FbDYS&n7~Jgr`TW%L=~W5hJGT04TT&75)b@=;s-zF%+=wX+ntMf<=%S& z6_+VRm7k3dC5a2U657XZZ>T*A9Mt=YB`Pb`yPsm=niA$mj>B{~lOsVbupJw=*cfxlx2Tc&EsIj?7x+)8nTjQX>^05VMX6&?u^)|WM% zj?`mDiNLwnIkv#cK36l%?G7{xoJ9Is2x;)Y8#$ZwDZsSjmHInc6P|@&hRp-77U#E%a)CCBOocs^snbDMircB18 zp8LsnUcv4WB}83n=EV=c=ljOT*_JP-!q`fV!iG+vpvv2Y{HmX|>~4%Fw80|!l8l@v zH#V38$xKlb@|+vt15M zWX(4hkol+?;kuC1XI9YO;E!KrBSTbAa%!oDi=l}m1BHfdG)zkGHB^@dtE32VUDn2@ z){4&cwXz72yfy;2L7q75@WkS3#c^;XRn1@0S{a02|7!l?b&hvRl+Tk` z$pM>0s_$uviVjGZ zhEEep4>fXUZ??uAW6$gav`uPiVhir+=jJWzsVB4?94QQ*enfo|g=57DJaj$;1S};k zF0m6RKR-#t7aDLZjl4O>>f$E|7f%BQj|857b~4|a7NMV(bAN!W$uUCnQzCKGN#NC>;5sFO>t*2 zgsJbE=C?-c&eV6LPFT#;X-BYk#=l4jiJ|@F{ClRZ+YOq-iK5VTA!p7cvZ?HqK0UlT zpfokESmhza%=rn+yBU24G9}LxYf0@q_&T1p>#cKVlr#y6LXs=Ee$|IrK7%QnyPx(~ z&-ZS)-Vp5o>S%IV5!YCk{#mzgot|!K$6BXO_Oi}x&n#L`<5TsPMjSzfL(;K zYv(a6Nj;yeJFt!@8HZ1!X?_+P!!;cGvAoB=)Gcjm>L{^q!X!3Ux^eM`U3L{@S5Sr* zo)FS_Gi9TPu-APeDJRzUsMRe{?f5ZbRklQsa3*D@6~nG??^%%DMX7bpc(G=$oFK`> z>PG~1-**2)*{u`P_GpnbM}b;5kgSto)X)C7&p?@hkBP%A19^Lv2gkSMGRN(^Zne5y zsLu=#>&AJKT3{nsIg)~$N?K=T_Zh0@)D)o})WQIjij;A3_T)FC9#wajUY8E6Z$^lc zw0733jMO?i5MdrcY@?pp?tM>NNB1sN>2R0VQERfWet-)lQx(|$T5=o1e*uOg)>ixZ RA5{PV002ovPDHLkV1kf#a~1#q literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png.import new file mode 100644 index 0000000..af2ec2b --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckhi0g1svhqbm" +path="res://.godot/imported/spr_dragon_idle_3.normal.png-f0cb9821f12c5104971ac0252821318a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png" +dest_files=["res://.godot/imported/spr_dragon_idle_3.normal.png-f0cb9821f12c5104971ac0252821318a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_3.png b/Char/Player/Dragon/Art/spr_dragon_idle_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a60c00998be69f87d1a58862d94bca239ed964b6 GIT binary patch literal 714 zcmV;*0yX`KP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0$)i)K~z{r&6lBa z+dvS84GR<4nWALE1A`3;f&vRO6A&6078(#(7*^DoJVuF0aNeO0q1<=c|7LY3+p=}1 z_MiDjr_6f#h@v}Jcinouj`K~SD46dH zdwL=WP#l2(NKk!bBY7x2>R}jR=!}PH4wY|M_XdtYV=!E60;J9eM#ZgI0psUw+(sTI z2k_$%+8)NK0LbmJtQiYE}oHh~%`PymI4&Idr%p?1K; zBH5f&K-v6!`NZK=iBkct8`MBK&{)h-QesP300nI;RCK8d6iK{o+G|&l0?Ou((*&5k z(%Sz9C@8H5XhxoDK-KaL+C3+c^32Yq`#!tXwKlg;aC8z=m0Z@9=$Rd=lZ%D?KGLVE w0i|5}8*Z2Oi(r1Jd6*hNSUJgG=3K2l0j$riWCp%jJpcdz07*qoM6N<$f{YnDUH||9 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_3.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_3.png.import new file mode 100644 index 0000000..506634d --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7gd4jcucrkc2" +path="res://.godot/imported/spr_dragon_idle_3.png-716c09547254d99bca732ede40ac412c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_3.png" +dest_files=["res://.godot/imported/spr_dragon_idle_3.png-716c09547254d99bca732ede40ac412c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8cddebb33babe0511afa579ff29f20a226b9b4 GIT binary patch literal 2272 zcmV<62p{)}P)Px-nn^@KR9Hv7n0r)|Wgf>r?+h~x_lsN=1qH$sB|=3p@=|M=SaLGOI^8!tcFZzU zPiIS`6w}rfSE<~sJ>^Mr#Zr7e;rPJ*VmZ@tDEIu3fYG_+=G4(O-!>?#fh?;8AISuLy_?<#5x#vyBH>-$rSVHpHGG5Ou z#$BeR$Sh;$LeQtST3y?wg!)9)6NU+cLE=S?D?dEjL&dYMoDXs2^~*h|kIJxYEw%~5 zW}y09U*U5m7;Vl(Ufp++XAIqByVz6G+sm2D23n?Te_J5Ux4vSO-h;nBE(mn%#>3r> zFDnB`_qxutiE27CI(}Oq;|u=6y~V`#GY|6nS1wSH8pNjhN^ZF6s0kV_-9_lyH!Qra~^m;=uFG(v;R{{gNl3ic#GvrWPGYhN1av$Nv{dzj&Cqkq5iW zR2&cOA@YWT7^7g1pM*sbLYj}nKFu0>o_dr62j=3Y)evHyL-gBku|8)dn!US+1iDu4 zF6z82d>~0&x-6lY{qJ!xq;Mnd;-r@y3pyqfeslw?19qZP!jYr1(0-Q9x+WtzF?s?w zgz|QPhUF<^X-Zrt4Px+@K%l>pqsCXk@nt65g`PM03Z-io8XwpNULQ8LbxRvDlM*B!uoAT9*Il%c&W)^bS*? z(CQgo=*^XwQiMrP{>E86uFXPSE@Ou4VXmLAW$M<=e5t=;mH9xgx&1=RS|6dk*Zr})vdx0 zJ(MF}-Mf)Dn(S!E^JQh($E@dGEbR&c^4yW@HM~^)H1Qc#yctkNy4UeLhPorc;g0)6 zMf-DX`tA}k&w9cgmvJU@J;qjVylUG}nnzNe;M2dq_<%SHyLZ$2$elr14OCJxQG65_ z%$^fY*zI-28jFX*cE$7^H*(-*wWSKYg*@r$5ngp79@v#E$UZM8?=Myy(_ zJsB-!%K+#zCYX13%D2seT#JD%{a`8geJ#q~FJYUYo%2?CdOkH_1 zosU|7*I5PBd1R9KLA8r#wkKnt5V<0hSE3G)m?-t@zwlTllKh(}EB(-F@(&XP}O>7&WyVSG$ZSnD9Nn4^&D%M zHbH2#Bl!EGbPg<@i$+^dV@!cnP`6!Vd~J#-IX!^|6w&3v|)qj`;6}gYWrfD zm=*5$i`%>;Y@)EphWA5li=1qAO1A~-NlFk0lS5e}C5Bz6`hk8ruA*@ZL{fwA zt$zAxgj^dtQ%ItXKByV*jHlNvgZ76DZ|gVY0`=E%qR?>}nVE6C&l3Yq->ezO#LVyJ z4_HUPVvaCtdT9<>&VRodF)q!w38?$|-w7$!K>6fQ4m!^v>6^_%)*95LDK=WX znbR3t4l)4l(kO+bCAbtS}#O$X)pOM2d$Dri18_{Zd+Ci*=QVpW2I`pzJ-PY2Sn zc$>{YXZ>c2uRDTRyU2x8DVIrb`hL(_gI;Jk>nq-$?n-Kbh2ie^Qjl9q*TNi|p&Gw^ zRMZD|Fsi18r0H@F%n;7;lar{J{hrN0eUrPe urW0p*GfjFETShrh`j`UCpGyCu=05 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png.import new file mode 100644 index 0000000..7bfb9e3 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b80a5ex07ox6f" +path="res://.godot/imported/spr_dragon_idle_4.normal.png-eb0d51214a242143dabbca9bf703cc51.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png" +dest_files=["res://.godot/imported/spr_dragon_idle_4.normal.png-eb0d51214a242143dabbca9bf703cc51.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_4.png b/Char/Player/Dragon/Art/spr_dragon_idle_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7b865dfd527b80db7b3d87c99be6f6cc3af8c691 GIT binary patch literal 719 zcmV;=0xPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0%S=0K>Zh7^15Z5fVuDSra3>3e%t)B9!Y@3p7+v-WTgJzn7 z_u}Rxt&eisfRF`25CT`>UxXzEp0prh$-dI&!5~ffN1YOIzb)3R1?1N)R$deq5Dp BKXd>9 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_4.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_4.png.import new file mode 100644 index 0000000..80173c8 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://isdcb3pm0ywa" +path="res://.godot/imported/spr_dragon_idle_4.png-e52c07ecd1bd2b8de73223fb9783d0a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_4.png" +dest_files=["res://.godot/imported/spr_dragon_idle_4.png-e52c07ecd1bd2b8de73223fb9783d0a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_5.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_5.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..df7269e2dde7a6aaa0cfc86c65cf39d9c065ae0a GIT binary patch literal 2279 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_8.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_8.png.import new file mode 100644 index 0000000..50185c0 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_8.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do5oa1ajdlxc6" +path="res://.godot/imported/spr_dragon_idle_8.png-d27004aeaed904e5e5c721ad27ced5c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_8.png" +dest_files=["res://.godot/imported/spr_dragon_idle_8.png-d27004aeaed904e5e5c721ad27ced5c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png b/Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a50693c28fbaa70401f42a09da3f200f0ca27720 GIT binary patch literal 2205 zcmV;O2x9k%P)Px-S4l)cR9Hu)n0-{#RT{@XGsEyQ3?s-mAS&ppL0N*D`F1SK(lv$FHA}aXTf1AD zl|^oDoX*K(n`oN3tLvifwr-wMQcvp1d_h#Oj-Y^GATWX&$dC-f3=H%BcK2XM7b_Wl zHvi7^^10vV-tWCLGVbDY)T$OWY8eh0czfhK1)R4E3ZiYYyC{1jMRMYmi&4T9t;6ho z9^*GJbNO=Yt==V*O1L&+5otp@Fgg_!Y<0og9g=!T3buWz7LJ$!G#~$*oQpa}T{d$6 za2?g7lGwLzA+z*NWX2C+QA{}s?{zNMNmoh|P~a_%FnlwWR?igv;5D$MNyVH;)V!(u zJtxfRJX<8^?KD5h1FhH(StQlIDYK*`|Ev9kq4++^uMA>CWC**)-Ah!0jfp3ZVd>w> zE2YUSpLG?@bT@%FjFM{K70{JY8qs_`gs@O8%TO?(wVgD%kDVGBoe{98MM;dp%|*YQ z%};@AZ@XkD$qC;*5G&kn1@qmpG~VN-Q6?i{VKV(wt1yLGu4hOBAJ2J3Ak(p$V1~hfP3c!N%bWuq}OXiN7Mi&AMhZ24$KWN zP@Q*}^>!O-UkEnMsf%e3J~NiQ!&ZEZm=!Z_Pf+NavT=-40CXv8{s2o+=0?EcFh-q99vt=7)Y zPiNCs@fB~RmS9Vk;r>T{pJ8enqD8Yd!1gd11;sMy&yQ@hB1)!VvTg+H0`WA(DVb-R z!KCCQve$e`bH~@TJ$kxVpe=rlIA~KcAaoF0p0rSQ&c;TcpL3(-(t)}qHcoq3L=6d0 z^pTo^nD3~yg_Gf%$@kW=tUj;-U)Jr{N3K6wvHhk@)^>WBFeP*WK4y05 zxW2xFyaP(EI_;Dx19T~sG{;0x+1z{^Lr|borev`{ri)FAmRqqenOBHyf7^ku2k>hi zK=VK?eup4?%4W7UevIht3R{04yhS9jmKzW&+7Q2rVD9BHZU`OnJ=1u%B9#bXj{uM*!h_mde3EUb- zU*6fhDwN;RUu+N6v29r%)9-%2*~QFJzuw`(TLlk*v5dyE}B9Apo!=ZN-@B&eSR`(M@y%S9DWSNVu`xk+(_ zQ4^^nN7u%CEh;`=Ze{(F)vPWmMc&`Q{i?+rJM{?)j67EO7H9AICr6)M%IM}p%pE+3 zYR5L(pXfW(&(iOYh!wd?$hZFR1pOo|Rg8#HQD^qDbRnoRQV97>gHPorbi^ncIei02 z*KjW(UN!nm8{gfhF1u0FnlV;5tXe9=-}}Lvw3T>Y zD+$^!Xn-g8A9CQ<2H%HlwlMVWyoq%(uGWz3CI(8;^`M~ zPWzZZz!h{a1qE{EED&qA&t+5k85~Il+^hEWn$r`o`x1`OI54HX#Y5x2!ct%NlZ!W~ zG4>2F9iAhqRf{=wY7UzkmSFj8ThImkxWUcQjUF-q%Y@@W$JT3un;W&e$y(+IRp;mK zs&18p&&_iE48F)R5Rq!^)hL4k6;Apy#mSAVJ@hf|*ZTev>P+0$N zuXTC_G9OMCXT~LxM-q9vjs>0noo;j2<{6?seF*!8DOrD{6vzDXJNE4rsG(}2DAqmB z;*AFUE#-Ihv*w0v>>Verq@=M=J%gO%Yw*5QDILiBe!AHHeiQ+J8(W4$U0rYwxsyWn z1yjZ9eF_H3T>N#S!1(o@UHgutuAQkOYk?9&*HDTJl4yHogX9x-6YzBWqvEi2C@Y?h zB7aLc3nIUfu29?QII(t$hP_n*5~9aaRdx;gQ+Kb@^%I%GFx*OFQxiE;6zr+zrs z|FZoossGJnp+D&5gC-}f;UTE~I;s<+sH?l(rTg+Ey&2Q(+|^B8s1-(9T|PcYj6naS flE6p$+Zg@_wpYKBlJW$000000NkvXXu0mjfKcYhC literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png.import b/Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png.import new file mode 100644 index 0000000..f2011aa --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddf0ni01bcimo" +path="res://.godot/imported/spr_dragon_idle_9.normal.png-08843611a55467fbe79ef6360a811fe5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png" +dest_files=["res://.godot/imported/spr_dragon_idle_9.normal.png-08843611a55467fbe79ef6360a811fe5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_idle_9.png b/Char/Player/Dragon/Art/spr_dragon_idle_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8892f09973cf8c3604451f85f8931ebd9f4c4a50 GIT binary patch literal 702 zcmV;v0zv(WP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#ivuK~z{r&6lB4 z!$1&*E0G|XLBZfF(G>_364{vwY-Jr5QHiWWF~ehEYS4WL9wOX#-T!8DX$G2H0{_fT z?>4u)U-vFaJL#g2N2i!bd zB%g&0D}XS;Xsr4CW*U8rEo4~H0YRy-hk0M##V(Bsb$xl6fEZ(dXl%>I6CDr~AiKAx zn%T1P1PD-A4#eD+jVA%oC7m1DpKKe4RfS*H`>t%a+v;(#h`!luHVzbp*%rHdVo^YV z(x-q%hYG`35C}R0kcW}&qXtrbcs)=H%y2;Jj7$K0$^^nVgbdpqNnk4OA-clM&-Sky zp7`9g<~~Y|j^t+RS_Q!K^gbFuz~Ji&gbsqZF4g1#^fDHVVr^+>#Uvc){9r3N#VDG# zBh0Z)c&KXJ38W>Ec`Al!3;i|{%eA;2mZuYhm%feeFvh{13dU=pU=E};bR;G!A+`gf z=z4XV0K%n)Q9K6<)?Xw8f~T)u2?C-+VM#3LiY8y)9UJ!(#RbA)#qg0_4@Fn32IT$O zyq^SO({!-?mbhXGfNL6OYsyP7vfz>-Up$Rj=ltcQFYK8Nd zqEJ3@nARZ7&^SO!YzYq~^*+BQ#(1D2P)c+}!Wtkk#k%A{x+Wv;UjYTh*dp7e1bq{g z%99fHZFi|WwcEWfkk4iAPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0&+=2K~z{r#g-v& z8$l3-4Fg*ksVG&sVX;9$QDI@EfYQLQ(1O6gvZ6};86_sg`49aO?tasG+qdgD@%ip@ zPkP$j+1Yt-_Rc!5PQ|b5x4S>zUj=u+&w~#)XS>{<7rk(A0xBnuOb3c0AiRefPZ~4Cof}*l-}!8&C{EiT2{me_nsA@jN;l6zC1S zySRv$n|Szf8>5TEJTeXvL%3%(QVbxdxaL`6I5@o7Y=SDNL3UArlDS-`xfg%qt%!Ec6Co2?w?3;+TP%Hy&<4 zCKNA2HL%@o8#6CrKzlMk=Q6_HsJGuCF|m*79gsMqZh>Dx6d3~-gMI8N1Nu2ep)qhl z=rMl`%w>qZNeo=RUb}G6V~7%CPCUMVWfZ9~2o$0NIuR+PZkY4Ik+=*ft}h`ma=xxV z)sGePXH9X4>l87=p}U(8F-nNh4fLdrs52Po4VBy$B&&18-2gY>Mi57!9IK<~24qqO zxFJT>!A#lThd%-e=`mo!yO$7itr?XAEhm~(O-4PogWnD%=d$@oLCwpS7ijkVOzsDi z6OZ+nkCzuK%UV?HNcxYO>&(5=Ajf68*WJI2K+S=k)8!q9EEYJTaAS}WD#vRL0tc-i zXvD2>W5DOJJ0Tha84Dn$pKw`DE-XCOz2M!?hAQ6QKw{SJLG5zxP7fhEJkb5@sGToj zz{MB2eu*z)z`HjC%a~Y19GLLSizk*hV2@xC)IY4bUIdHY0GQz&Sgrm7hcMR3c9&9u P00000NkvXXu0mjf`xZqy literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_jump_0.png.import b/Char/Player/Dragon/Art/spr_dragon_jump_0.png.import new file mode 100644 index 0000000..0776416 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_jump_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0kl0n0ojf355" +path="res://.godot/imported/spr_dragon_jump_0.png-a73a440ebe8e588ba6821bcd5980c4c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_jump_0.png" +dest_files=["res://.godot/imported/spr_dragon_jump_0.png-a73a440ebe8e588ba6821bcd5980c4c8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_jump_1.png b/Char/Player/Dragon/Art/spr_dragon_jump_1.png new file mode 100644 index 0000000000000000000000000000000000000000..85a480fda889f972fcbf12a21cf9eee928a162e7 GIT binary patch literal 729 zcmV;~0w(>5P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0&Yn}K~z{r#g?IN z96=C74+h3CQjjh4gT@B}f&v3A8JHTHg&G(Jh6P2+XM`Lv_CMq!&iiJ&+Lh6+9q;Vk zmQJY3l0$J=*>VifW{C)E|bFsA@=clI!hyit> z@YlC8$^hapwzUDF2-ASbTrtuaKu~$bvF+_(^KQ2*RM9cY1fr!A!KMyK{54{L>wpNl z335^H?HCdpJK21H`>Bi)VsryFWl)`A4`yUY&&+k}pFu+RD3Zef9dILV03k+^=bAD= zha?U$Q?AZ`y6Y>TfUW@(tdRi;bg2~As5M&W!rF&;>FU_KLyO}v;o`(y%GYGx4Gh&8 z%DoCNs<=zng$7N;TpPTg7*jycg}#ostZ2mxMN?cOWR3Q)s2Nsl(1438SFM{4ou&)( zWc^GJ#Q6I1I})jR;inri(80T~7*c#hNG2CUiZ6ZAF|2AJ#b3CB<>11MFs7CVqN2o! zV|sZE2p_-w&MtLa1HgojFCJLmfL*~V$Um&{yb4zB09fENu-QBTpl7>t&@HHM00000 LNkvXXu0mjfoC8W3 literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_jump_1.png.import b/Char/Player/Dragon/Art/spr_dragon_jump_1.png.import new file mode 100644 index 0000000..a5ddf3d --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_jump_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bq5m06b3afmon" +path="res://.godot/imported/spr_dragon_jump_1.png-616bd4f09bc01c4ed0be91e9540a9366.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_jump_1.png" +dest_files=["res://.godot/imported/spr_dragon_jump_1.png-616bd4f09bc01c4ed0be91e9540a9366.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_jump_2.png b/Char/Player/Dragon/Art/spr_dragon_jump_2.png new file mode 100644 index 0000000000000000000000000000000000000000..02f70579c8c9cfe13e1b6862f538dfd8c39e8582 GIT binary patch literal 736 zcmV<60w4W}P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0(D75K~z{r#g-wD z+dvS70}ESNspzWmz~X>{qQb(H4jesrthC@@VOde7{*024;`P25rrRreyL&*BN*UJxqUtq9b%nEX8=L-#-+q`aPw}r3tF_@OHIVcnM5J`Qf?Zu z*ccTj=5as-vk7vg^Vx_~$iz&1cE;Wv8X(REyKS)9i{7<# zCZIWL*NHsm$Fn{)GEK}AvwYTgwpp3a?&D3;mg ziDh%z89ng<1AyEz21;&O*`<~>02D4<1?w9~k6;zlKdfcH3Rax}xWH#%vv~ro#NDS( SEwV-c0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0&Gb{K~z{r<(46H z6hRP$Pa;85g$jj_M4v#QkjPX;U?byV5s^q7iYk5v<_tRjfgf?~H|cM#ci1D@+uf|- zRlS<&o|%4cdhc#;a|(W5z25)+_I$tp^|FpImX`+x6vaR`ad-W!Ft#oO1QcwU4Kc=% z`G9!7u|m$Xxyc47@b%-X!btsfd-iC6@#5`y&rlp24}=hAbe>~GoM$sXuHM)6D0Lbr zf*?0~b9PqPnz;LZQ^hcVIAl+hIUR})u^Qe^Xc-kn#hcDr=c|=Tj4LaH-!jB%clv8R*bky7rLea z#F@j`HyuX|lzcaoSOdG=uFM(p-pR-&vH|I>7d4RC=7tR9y|W+-wnQ{P0&nkEF-lBB zE1HQQ;F>&zY7b^AqdG4ljj}4D5)_D6ygSu+dv9=8|J)lG|(NXrpWsy zB*&i5=O60Jiur@4*kDT`M#$Y>zbm6cjQRGAndGErFrXpEZr?DxxzAGrbRZk)w)TXG zr8yrHa}Cg;M|Z?WKmi{ECKOb_ZoqbpSZY2KGv%{$?A^g84!1(aO;83wRCL{m=002ov JPDHLkV1iElK%)Qv literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_jump_3.png.import b/Char/Player/Dragon/Art/spr_dragon_jump_3.png.import new file mode 100644 index 0000000..a8c3195 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_jump_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ceo17ioghqbuj" +path="res://.godot/imported/spr_dragon_jump_3.png-c433f3ad0ed89a86ec565b3786601a80.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_jump_3.png" +dest_files=["res://.godot/imported/spr_dragon_jump_3.png-c433f3ad0ed89a86ec565b3786601a80.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_0.png b/Char/Player/Dragon/Art/spr_dragon_roll_0.png new file mode 100644 index 0000000000000000000000000000000000000000..235569a4ae60bee61db13f2a6478113a5ed148b2 GIT binary patch literal 711 zcmV;&0yzDNP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0$fQ%K~z{r?Ux~s zR528VM>$RjXF5T6GB;zCRs)ettaU@N)I-_W6K;0SfUdh;xbo`aH^%O%T{L(m6IW;_Lj1)bY0M-=6S=M6+mc7QqG@3sKFxVjp4yIq(* z9>c}DsrJUa?=kl5E&;jc;QTpa-JG7RTK4UxDIhGM7L2ijIn?#bZMZvBs)CV;`}pn6 z&G7NVT`>S(Z(jw3au@@AzwL>{L3}wjzJ9VjcJr!u#d)428Xycz5gjlJG?3i6Js7AK{3WTUrBSCr_HH{6Ndmv3mAQeR6+iv$kCI-%E7s9 ztN0lHaSr63UL2;I#Po6ex+R!m4mB?QTakUiBn}niAuygH?YN{WQn_ySb1BK6(}!R|$!UHO$y)@Nigl0Ss%;C!IUf?(*ez@1Na&~vfN>jhYi_FWx%k;dp;?F* z9t9G^^rxU?@)sp97TZ{=Kyn<=%IyZG!zT)Gkgy7l*^H$tbqDjp1veF=k8KVqUP(D} z4=_Ktg7Ts?uUM>{fkN&244+kgcm?J_kvZzvLdhGOKh~d9rGVCoN7ip0Q)H~u2hzVV tId?V%02Yv(@qd!`5S;xT`JdWsegV=V%y-1w@SXqw002ovPDHLkV1jeeJy`$% literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_0.png.import b/Char/Player/Dragon/Art/spr_dragon_roll_0.png.import new file mode 100644 index 0000000..33f23fa --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_roll_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuym4qxnae6k8" +path="res://.godot/imported/spr_dragon_roll_0.png-1f4fc7483e87bac1a8616e0a24a48952.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_roll_0.png" +dest_files=["res://.godot/imported/spr_dragon_roll_0.png-1f4fc7483e87bac1a8616e0a24a48952.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_1.png b/Char/Player/Dragon/Art/spr_dragon_roll_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b27966dd60861003d0f792102efa4ff86b44d092 GIT binary patch literal 745 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0)9zEK~z{r>P3jJVf#13qaG z;NvsUs8Q1M|{ z5~6cy47q9yrfk6w2bq^rO)1x<4I#HN7^b2)wmEa)*r59y{M6sa+^ zG=?_G-xsk?za-SyYPB+=@9Q^$xUmxP9A*AsppNG3+bCZJD literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_1.png.import b/Char/Player/Dragon/Art/spr_dragon_roll_1.png.import new file mode 100644 index 0000000..3b770cd --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_roll_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hl51s1vfb4uu" +path="res://.godot/imported/spr_dragon_roll_1.png-7b260f2b2f9f6835e2955bd17217ca55.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_roll_1.png" +dest_files=["res://.godot/imported/spr_dragon_roll_1.png-7b260f2b2f9f6835e2955bd17217ca55.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_2.png b/Char/Player/Dragon/Art/spr_dragon_roll_2.png new file mode 100644 index 0000000000000000000000000000000000000000..16effacce712e504492270376023125b5ea09125 GIT binary patch literal 675 zcmV;U0$lxxP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ys%TK~z{r?U*l5 z13?hQE0G{cP$l?EbR`OjY*K-(#ML5@NF0iUkAbN{^BwpQ$G*9Jo43>L9|*VUUHX!j z+nb%enP2DH5JpEGbyRQEhzBQy8xG*rc--92=Lrn=wlM%H&~U&A1P^LjfT3fo|MF0S zf$I|(8r$o&a!}0AKq<{t$L%VzCS%d9#icnlWNYkAr_;-u&uNTj z@V%a0PnwU#rTP2y)ZBcY*8wawMZOnhm$&xzR?g$jfzbgClt>R z3XPYb=xShpP!SB!0DHN+$lyE}jJQ4Nz?7y7bBeeEN=?8%fUQjnKr}#T52MC@`?$lA z0Voh+*ua`o;w8H;Ia@?hKG6b23F;kIsDU=wuc813TuE>g;OaUCdhjQ4QcK7=xu36 zvxwu*D|oe9*%fEor?#p-wOt|{rWTt`Pzr}Dp>T~K!Y?!${Qz{}rqe!oRo?&r002ov JPDHLkV1f~%CG`LR literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_2.png.import b/Char/Player/Dragon/Art/spr_dragon_roll_2.png.import new file mode 100644 index 0000000..4654f0b --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_roll_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://codslssttoexv" +path="res://.godot/imported/spr_dragon_roll_2.png-3c65a8890221b44e029aef626f073d06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_roll_2.png" +dest_files=["res://.godot/imported/spr_dragon_roll_2.png-3c65a8890221b44e029aef626f073d06.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_3.png b/Char/Player/Dragon/Art/spr_dragon_roll_3.png new file mode 100644 index 0000000000000000000000000000000000000000..755b6d169464274e5712ed38c91f3a95bc7e86f0 GIT binary patch literal 634 zcmV-=0)_pFP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0uM<WLL4#R0fK}lFQv_eVm z^yP$3gIn!iK|u+SS$=n(C#TMETrmaGaRND6X~;CF3#c`m?^~xUg`*)Cj$^40s)Hc0 z)+JtV8TWGz99iR>GIxG4O#OXn4kZoH3c=nuPS z0M8E8a9{|ZZbxp#&}!k(yZhMe?+IWGj^CBH{V*OJiZBXBI06z3MnFK(00RsSIIiL! zKyY3W24Udm`F#VC8juLe6;m*N1>rDlpNA3P_;wK#5W0FC<63Ap1BzR5IH0Qf1(6Y2 UzR+$A3jhEB07*qoM6N<$g8aw}ZvX%Q literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_3.png.import b/Char/Player/Dragon/Art/spr_dragon_roll_3.png.import new file mode 100644 index 0000000..91edf26 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_roll_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dysoofxx0stl2" +path="res://.godot/imported/spr_dragon_roll_3.png-26a18cc732812524d1a0d42c184a51f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_roll_3.png" +dest_files=["res://.godot/imported/spr_dragon_roll_3.png-26a18cc732812524d1a0d42c184a51f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_4.png b/Char/Player/Dragon/Art/spr_dragon_roll_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8623989885ab8f62acc98be4723a111917abb618 GIT binary patch literal 618 zcmV-w0+s!VP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0sl!vK~z{r?Ut)f z13?&tE0G{cP$l?EbR`OjY*K-(#ML5@NF0iU$H3H}`wl$BvS&Kqa60TRCF!OtnUkFC z{I{L|%%~|rtk}iati}ARE!Fveky>hz1+2te zv`b)r!nGs0I8pxB#Z@3VYEq1)IZ`|dNy0LJz~jR*s_1IX$ff_f7vz#uZnqc(>8low#5~Rn*g%Kmq?Tm*7s}5a&1c|rv zc^VV*{MpH5IHE)sq%pf!mu}VQy_C->KRMW9jPD;>-G&uTO=|2-xFC(m^`_&gBvG|_ z4)-Kh`}PZj@nJwfyoLiY4agJ`M;;Ap{F5lrV;+zG@Q(YtEZ@%XVqFo(WOYh-q-fOr zI#z{v{8ADRv26EUkVqcnz6isnub96ZwBjmIA>z~!J4OQ>o$e>sTa)_dA7M`AFm4eg zq#V!3hPC}WAP)LU%jO3yKh(ijJ_I3_p`um_ArpLK^qehtwOtN;K207*qoM6N<$ Ef+%GZJpcdz literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_4.png.import b/Char/Player/Dragon/Art/spr_dragon_roll_4.png.import new file mode 100644 index 0000000..184b8c9 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_roll_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ogbn85vmy3qx" +path="res://.godot/imported/spr_dragon_roll_4.png-fe808a1eddc50c60485fa163f6f2d477.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_roll_4.png" +dest_files=["res://.godot/imported/spr_dragon_roll_4.png-fe808a1eddc50c60485fa163f6f2d477.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_roll_5.png b/Char/Player/Dragon/Art/spr_dragon_roll_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf1dce2ab7b4cfc992a92afdb1c93c4e1cbf28b GIT binary patch literal 732 zcmV<20wev2P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0&z)1K~z{r-IlFV z13?gkBatAfLWROdq9ajAWU3;tk+@g{5{W}m#baP%(0KZb5~rA2Ul0 zqmQoJWfg%atULllc|D(3_jgMxJtGY;j^mu-U;qM`H-8l&F4si1gSc+(VD9)Y5ct%$5Cpq@7eqRXl+7z{92v$o|TDX(~O zC=`Qb$qR%~0meK#nwY&^PJjv-vw$^dt#doV0Hra8Py%MoEY{x$VES43jOT<`Hp~G0 zgSn4dze1rc+u1Dh69BFKzIgiyFX8#%1%Qm9tRF{zrQG?$@5Yu?3R3OQvT~UILTP|)p6S4vCPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0)9zEK~z{r?U$`i z13?spE0G{cP$hUIx&pxyAe&TRkvLueiNv8ucnnMpns?wKmN|FtnVh}MmeR7FZNf=z z=I74Lo^S4M(oX(0pqlsN=JWZm@!|gJ?e?@m00vNqkGlg4U$S34nlj-nY~fZkLAQO|wEiG%y6`6{Zxvt)5`A^!gB*a2Rur5yv`jht$+66IvOq z7=w9U4(HJN5%qL7oi>QsY}N_RYm{C`wDXJe9Mz$s=?JEQeA<%1UT?1qfO|1Ui(Gqp zMJY@gu7pGGX0d1t zHnSt?H?azg22mk^pk=?$H0HUFXM1Wm;TxDAr4QZ%V?;`Qd$<~8g;*`*`V13>dl8-* zPN)!oaO(>9aCg}YhPDLe%ld@8#Tsk37rjF>+RBc_b)Xm>Aqg_!+B{2R7=4F&FB*;MUMkttn)4P%0zV|y|fFKwk zF_wH$v7!p+Q^N};Xap@y6H;5|G`M$^il!At`*Dqi9W+9jc?~g)fQorpH%_q%u_B&^ z2nA(0UEiigD4Ogss$lus{9#XhslkHD4ivQyU}n6>WDyFAUPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0z^qfK~z{r?UtcZ z96=OCS4IYzswgP@%IFmcRAeMo2rLp88-a|(p;EN*ANYu2&g0$5on9C=3q7-& z+FNz2=e>U2eY%fJTi`OesvEfZ_PJY_Hq(P*jKi1E^1AbFEQeobLF#2~z=2EWuzCWdTofqa z{Lii!du{e23Lnh z&q2#=ci1=Q@OPJ|0jW(AlaGmO%b^6;ro*0B9|n$-4e(#zdyYxRkYGw+;u75ZyVt^? z*+|znYL^433!1{V{UgFCQtQ9QD=@XF#2CqP=j zW$%kYBTEZ+AoAJ4y!kQz8ZFlwEp-mB4fw~Hb#(<828>Xs5~de>j#jS;16}lMvzZ!2E06+A$THqOmC)F8xw&b?;)2PPv~t>l z)pOR3FG07DJuqUdegpOAX(RxFI$(mWz!O{lWC{T8SDvxM3s_do)X=E=W#joN_4kBJ z=pvq0uYhPn+XXERfjjV4K@Ul=`A+W!bgO{PQ{EZqIBnf7+&Vk?n&5Z&UwSRgW{-B> VoRWcWd5i!6002ovPDHLkV1jd1NdN!< literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_0.png.import b/Char/Player/Dragon/Art/spr_dragon_run_0.png.import new file mode 100644 index 0000000..e4b993c --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di7esul13rycx" +path="res://.godot/imported/spr_dragon_run_0.png-dafc9fd3534d9d4b67303cd93e642105.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_0.png" +dest_files=["res://.godot/imported/spr_dragon_run_0.png-dafc9fd3534d9d4b67303cd93e642105.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_1.png b/Char/Player/Dragon/Art/spr_dragon_run_1.png new file mode 100644 index 0000000000000000000000000000000000000000..19af5511db3f154cfb0342be70f460a6ca9a920e GIT binary patch literal 675 zcmV;U0$lxxP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ys%TK~z{r?Ut=h zLqQOQE0G{cP!N12x&nbhBAZlTkvJ>@iL67B@EDjHH1EJeT=tvJ+05Oxq$KxeMNe|F zJ9GEv+qruwlYDpK$D}|&yw+l(>g5G|7v@HX%?W?TsPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#r#vK~z{r?U$`? z+&~nC4GUXXsVG(W!r}!5MTLct0zw1BLJI;5!-^{PF-n#c_Z|8W?tC}*SjX#iyH$3^ zj+7%E&F`K0=6bw8-Lsyxa{ah|+vDF~U-tda*Wq6`FTy!xT>=bPx4>okR(F8=Pj3Qh z4q9d`L)Ia{WgXxUxSV0j3s~6!_uF!YEhC`FFm+{GrL4?T(xy%s3$&DHO)$WopPda? zMeq)N@op1VOfFYnf&j2I2h&!c!+*d25P%w|tpk<0b)+m&r`&G06AK6va&>vxf4RF2 zI5HdH-)=`{y{b}n4*|;#jRnq_u7yK$kXXEdMv$t@jLU*nnf=`o&}ane*>&%ByMU#% zIgb;Mi$~52aq()?f8KlyAM=6;!r?J}>IarAt0e9uihEWdfd^dhwEYm288T=NoPLcd z(gG*Rgkb+iSCGgGevL6Ci)j5P8s!Saqu>djSjFD~s=wtn+ z0-i$vu7lAA4m;f4&HDf++qy24#N={|X~;4LXbxP^l=+kv(+JuvcuF9-Chny(K7i`V zB+#f2a39BId@(u11QzSg|IIAaR1R306CVqo@%7~}f-Bv!%lpHc-yHnVrn#|uq?tKG zY>w3v8|*`uZdsZ@D6UjThjl;9tRNP5;N0w=8+u%6PQV{#RgyN*rlspBXykDYox^pc z&Gt4tdQ;}>tKH(ODgYk?jfml^y&13@@T~v00B-VQiVY0Zy?X6mizfjsMb=y0%~L9X lpCWjtPm{I$OPN>K{Q*dasd@OrsLKEV002ovPDHLkV1hI{JL&)c literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_2.png.import b/Char/Player/Dragon/Art/spr_dragon_run_2.png.import new file mode 100644 index 0000000..518ef4f --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bydv5fssoxi8q" +path="res://.godot/imported/spr_dragon_run_2.png-bc51bca0b2f2d5bece99d950b27732f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_2.png" +dest_files=["res://.godot/imported/spr_dragon_run_2.png-bc51bca0b2f2d5bece99d950b27732f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_3.png b/Char/Player/Dragon/Art/spr_dragon_run_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4d213b50ffd300f190a37e7ccbf77745aaca20dd GIT binary patch literal 765 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0+LBYK~z{r?UkW! z8$l3;4FelksVG&rVX^ z|I)ABo1LBc_HLc5mZ0wM+wR}bH=RE&SAXu_cNkcp@#EJEv!^UefB_pVaGBWR4)Eji zJA)d6mRa*H^GeP0=LcNY0Wx&7Z<|MI8UYzu(?M_q%+HEh!8xR+{%Fzx@W)%4EyN?E`Jf4YL;Zurc zebCV*t%7~Iz3sj~+}p^THSk~ejdzt#B!B=Z(_UCvz~n`6*6Otg&>X}Xj1fh+YkaDk z%k^LZ00dPYE1cpHnsw#Gx6MdAf&=Y)#>tA5`-TDkw*F*u4x%}E5wbkix#Gm4f!uDl zb&NUMlU>%vOPhg>UqEvm!W)?Ln~rP1@|HFB<>DB}W$!cri&dC;J_K`5f6|;7Z&_~| z=m^O=8x>PL{$RNUp;3vSdHU-Ra|#kIkK0mQe69A6h1es&B`H~W_}>O@%XlV z>yTKlz>L)0Egd0mTnh;h4}t54c>r`H>ZzuOj+P4P5Y=kL2)M2Z@I05CQ93!eu0b@Q zjKE{tu>d^_J!ISYnsSIi@c3sjI_6lRITf2bKr`Y#XsmVF3eKh6+yNRB>jTFZeL{_CVzVG37$&B5thn;oKT=J7uQOg5Bo|d& z^Aw*X)yaMIANJ7NwweEK%(Zc!$+g`R#D02~shQq5)!!>SDQ3P4wTcDD6y782r{0rl vzaY$5HNcY?UJ1PUnjSjqth3IVU8~i9vMVjd81^U600000NkvXXu0mjf*eGrx literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_3.png.import b/Char/Player/Dragon/Art/spr_dragon_run_3.png.import new file mode 100644 index 0000000..f06fb2f --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kjjjdso8fvqs" +path="res://.godot/imported/spr_dragon_run_3.png-67657fe3cd463bbb975648fce68d7efc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_3.png" +dest_files=["res://.godot/imported/spr_dragon_run_3.png-67657fe3cd463bbb975648fce68d7efc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_4.png b/Char/Player/Dragon/Art/spr_dragon_run_4.png new file mode 100644 index 0000000000000000000000000000000000000000..91441c1fedb77410c7772cc537837fb7f69e15c4 GIT binary patch literal 746 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0)I(FK~z{r?Utc# z8$l3;4Fek(smM{dVX$FQVPT|z(7-U$fWW}AqDp;?5|iS*Lm%S0|J;0=x%K&ct#0kB z+6?~jl2)Gv@feCB^f$J53>^op6jsBn)hXOL?XfX&;ocR2Ug=e zM-!(#=+oL}HNeR%)fo#*m%3u^y+Nv1?&Lh2>x(?-@LwTY+P5uPB+0u$M`nG zbTZJkI}EJ(2vUOEeGbs^^w~pgoNv<>(nj3byUW#3#lYvyNhHTP3^c9gBY1?C*%R=x z$h7`lHkn?%Eb!;mXX|URhoD|KtZ@nvoLIYER6mXj`_#|U`O^Y>zLUlHo3kR5n{ z>9;$bP!u5ZEyxtd$D>!t_`jTXb!FgG1Rsq|K|1YOoOq8i}%@FPiZJ&{vZ__`vO%f_@mu(l8*t$5j@)WIEu=oxd@H5Az2w*W?eLE6r^lVWM8x17!5kAe=RZN~9I}maFkWT{cT`9vxGp@F9RJrD4>VTB?n2yH898(>b zAt2_Dc3nnjG;dXka;*Lk) cX`mO2KiEPq_VB-NQUCw|07*qoM6N<$g5&jNcmMzZ literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_4.png.import b/Char/Player/Dragon/Art/spr_dragon_run_4.png.import new file mode 100644 index 0000000..88013c8 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ciwxrimunkf0e" +path="res://.godot/imported/spr_dragon_run_4.png-836330d4debba3fdc051e1609608d148.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_4.png" +dest_files=["res://.godot/imported/spr_dragon_run_4.png-836330d4debba3fdc051e1609608d148.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_5.png b/Char/Player/Dragon/Art/spr_dragon_run_5.png new file mode 100644 index 0000000000000000000000000000000000000000..91d5daa7c820813e0a7b3cb5ce7a49cd785fa58a GIT binary patch literal 709 zcmV;$0y_PPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0$NE#K~z{r?Ut=l zBrz0)M7NqQP)JMFa7f2ij9ph?}WMXlGzZ=Y6gqgd#p@V~E)8mt=l<$5nVP3cc8 z@~2F*s= zQo|_%I&c@XTAn$$Lo=T`eQrnvGoY*u0J&T)b4!f*wLMP;xV{w}=5H+(DPVmJET^oN zXR<@q&{(HkJLI-vSNiB*?9ZFq`H$%OvqZ7fl~y1Gj{T$)v{dADS@TFh1vHA+5g>sF zT=0y26SOHMOQ61>VgNHv@ANvY&2_ia{vuBR{vmu*wGrQxZU%?6oa2iV7kG8rD^h;S z+g>UrSoPV2Zz@bJp#6u$^G^fXMiDG*0&w~o3!L{*(0A9T5u8`Wzb<2LBtz4e8FzvE z4>jG=xDq^Ved@G8@{YUP%<;7Xjuo54>8?=(#6UWHijOY`Q$K_^fsZc-6`04c#*+be z&@jw!0#!_&1awk_;WI`bcR^cx63Tx-=(nM_7SQTerlXFNETD0UPfIoUmw;X)Ky?dW r2D&(Hezf&%Ojdw8{ILJ=&1Qc9uoBu8JntXs00000NkvXXu0mjf3;RFq literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_5.png.import b/Char/Player/Dragon/Art/spr_dragon_run_5.png.import new file mode 100644 index 0000000..8754f46 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c00suiuifsvva" +path="res://.godot/imported/spr_dragon_run_5.png-4b179b9c59e766f8a8fb8122038b2dc3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_5.png" +dest_files=["res://.godot/imported/spr_dragon_run_5.png-4b179b9c59e766f8a8fb8122038b2dc3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_6.png b/Char/Player/Dragon/Art/spr_dragon_run_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5f440a758cff041462890bdd09834fb11f915056 GIT binary patch literal 712 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 KMNUMnLSTaad|7q? literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_9.png.import b/Char/Player/Dragon/Art/spr_dragon_run_9.png.import new file mode 100644 index 0000000..1a77d51 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_9.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4nq0omsnuvyu" +path="res://.godot/imported/spr_dragon_run_9.png-7bdf7861f84ffad75c84feade39582f2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_9.png" +dest_files=["res://.godot/imported/spr_dragon_run_9.png-7bdf7861f84ffad75c84feade39582f2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7708a1c71e668264bb6e57d53c6b0d4d548c93bb GIT binary patch literal 679 zcmV;Y0$BZtP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0z64XK~z{r?Uo@^ z!$1^-E0G|XLBZfF(G>_364{vwY-L?7q7sQiF~iTm)S&wx_z~gu`u1jXxui)hiR#Ym zB)xlY-asiUOXuppKZ%OjKTo`Mh)-dyv|}chViLw%Zq~+i$w_x zb%X;@?B&Be4~$YkHGpUU0*2inbu|V) zo|@oNd%89{927&OKC8KI?UTuWzg}0X3Xnn(_}G%E<(2y)JG)ySm>Oim0+{Z{9s~@( z@&w~6z%5sXE10gwW}Uge5cIy=7W@6a*livI7#zc4tqClGD&FSL-u|K8I}q>6)-Pi; z0Sa&cLnE$k%NxVufhi!Z!3&u$ZT>WH54hG~H~|{r{Be3n3st+8TBDz^`WHj(>e>q+ z7}~P21QT0N5_W6TNS-`t>?v61Q|hZzVDRK{gpy%uRS68X^>NhYB)Zh*Dx6l!VWA$^ zA;Az797DkJvWg!8C=4TE%HB9TQKTA5a0!Q0^lR{35 z+E(&|afLHNOF8B&`9S`sVc~rgP8QD0I*MTkqHU{_*vmXTY&vT;`v<;k)C}I=!!G~; N002ovPDHLkV1kA-CFlSE literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png.import b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png.import new file mode 100644 index 0000000..fbba79c --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dah1r7p2uilp1" +path="res://.godot/imported/spr_dragon_run_to_idle_0.png-21528c9a4608d0ada77071fd0efdbb4f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png" +dest_files=["res://.godot/imported/spr_dragon_run_to_idle_0.png-21528c9a4608d0ada77071fd0efdbb4f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_to_idle_1.png b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_1.png new file mode 100644 index 0000000000000000000000000000000000000000..51205372eb5167055765e22621e89b5959694ca5 GIT binary patch literal 725 zcmV;`0xJE9P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0%}P_K~z{r?Ut>M z6hRb)kw}mvs3GfDqDLT5NaQ9fuq)SL5i5~66bX-k8H45>c!;LI+IxyqMKwFqT{Q+y za?)LY_k44EdNPmx>z~w*+sD)N{n;P>`T5E8?dHW4+s-F|mZ01K#*y&?h`<)elH=$& zwSbtb=Y7lviR0r`hqoT*r?<~Dm>zi?A1^_*I#ojf8pqC~i`_1FN4|P_Ieoo(oeUIv zV*41SpfB%>5TFPa0A`==nUAe~MF-+GsfGg#1E4Os=^lWwy`LNmAeqpZPH+PAJpk?Z z`|Q}>M}YAq_E7HisMHO?F;8JyhAyhfH?z<>hd8~??EsEaO%u_ zpoU~F{bbBto3|GotD&$1V8DQ+hJf*XdLPfxMC+gAyID`WO@Wxv1x)nlxo2*)}j zQ|BmgP(XxW2M`=#9>P6fbb_%%X?-q#JV;9diec`|d|TLq-42DdKWYqB4s3zA1E$!Q zD)g4Z>QE2%HLd#^rq&1*p$<{I1vL^3WvC@EUq2^Y5!irpEds`RAGJc}=@w9};czXm zV>JejqVr`77)s~8M$}y|fngP1Sv14BW9>8Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!~RpK~z{r)t9YK z13?spE0G{cP$l?EbOi#1M3PisE91~7)(WXLQ&2N;;;;-M;Fy#)hP!P+WjR(Q zl5Mz)T3}h=GJyppZnRrYyQ|>dclaxxuUk$Q^UFhbm;;U+%BTOQHg%X-z)v9$l?x0j fFMIsWI~x4}#TuSAQ<-cj00000NkvXXu0mjfR1_}a literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png.import b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png.import new file mode 100644 index 0000000..002eecb --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh2ta4te4ojph" +path="res://.godot/imported/spr_dragon_run_to_idle_2.png-7b692e3a418e88840e1e6cbc4c9c97f7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png" +dest_files=["res://.godot/imported/spr_dragon_run_to_idle_2.png-7b692e3a418e88840e1e6cbc4c9c97f7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_run_to_idle_3.png b/Char/Player/Dragon/Art/spr_dragon_run_to_idle_3.png new file mode 100644 index 0000000000000000000000000000000000000000..353d258a3eab28a0a852979186a1b90566e8dbb3 GIT binary patch literal 706 zcmV;z0zLhSP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#`{yK~z{r#g?sZ z95EDy7Z$d#Qc-XIA^?`bhG1e zk96gqxjy$B+q2ruvHE>=K0N$*Jq&-|9>o3itAQMzr{rFm1M&clHkS0!9K>A2vi0R4 z^lLkK_vKw`yB;Sn9u5S^#fNPI>wd>5Dk$GALH)Y=l)&^nmi5v5v$G6Gp8!bxNb4_l zL~sDz|Gb$*r1h7M3BVGJaisN^px8CtE5&ZN>vx>ml^CYqGKzn{ecYk_em{J@yi9X| z{WmzkXaE9^)}a*SuB!452@I%mrwnRcFzu9}1VIZ}3B`C^ruLt@c(YAkH!sV5jp^g% zP$h`>$JEq52L{Nu?dKGL0ma-&V4(w$xrqF{BLV?}5LB7JL=ylHhoz{4FedKCpBeSZ z3(wP3n&?h&@%3d2tb{8;+-I>c)d!IJ23Gqr1<(}2MNtBn+v|_{%?ZH9lnhDG7aZ~E z(n!1|FdUJNNnq@l0QHy0K>_of8|~U2n}9eXf;kH6IDs2e)BT}UI8+=X(M|%2;lbq} zmBxg_Y0kl-U0*6(?8*U{#+J99RLH@i=mbo2WiB4gg>j|OBpj;Dw>9ll7Ey5vGy&7t z*V)=O@&Z;^%441th1Z2s!7!|u=DAAIDqK8UrX#>y%5&xQ0;}Y_TryR}^mD4^OgvuT zHLr$d6Q6}%PhgFXAVW3r)7@xbmZ20ef12EAsaZ=e{S2g7y8SJ^k{N%8^p-8)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!B$hK~z{r-IuLS z13?spE0G{cP!N12x&nbhBAZlTE9+_zl}H?lgvY?tp!*Iy#4_J-&*tvzZoA#TCYD&keC}4IU>)f_UZ0?7zTIxK*UdVP&x=JKpUr0D z!Ra-HX>1A*FoGi{sFQ%zK?z8^3#CuZHTFQ>H; zutrc6;Y{!vHmmy_3UkkcDWr8py8onGz>#rCrH3>1ypyiCK6PYPX-kfo4KaBi6uaq z4<|KC8_UFGt#fPp7lqX%X;y+_UbD7eHEH6Z7@OpDQraMdDxt!l_^@DU@w&nZ6pCx* zUcuB%MVZGNPFnMKRZ;=Y)^?LCw70R1RVqPQz4oHOzFlgl9LCjZFBQQZp0EIfE#6MP zPzR{0PjEYF%fmFf3shfqVj+HO>FGKZ3nE{&sC#rh5->mH1ax$fM5-Y${TF1nO_Rwl XSip{jwoAYC00000NkvXXu0mjf=5R0o literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_squat_0.png.import b/Char/Player/Dragon/Art/spr_dragon_squat_0.png.import new file mode 100644 index 0000000..b17a444 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_squat_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdrjq0ahsfccf" +path="res://.godot/imported/spr_dragon_squat_0.png-c6ba6c4ba185db28e9a665900ef1c16a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_squat_0.png" +dest_files=["res://.godot/imported/spr_dragon_squat_0.png-c6ba6c4ba185db28e9a665900ef1c16a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_squat_1.png b/Char/Player/Dragon/Art/spr_dragon_squat_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f86d520875467b4a2b7be47df24ecc36447b6803 GIT binary patch literal 703 zcmV;w0zmzVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#r#vK~z{r?Ut=h z15pr#E0G{cP!N12x)Oy%k|3~192S8@;!q?!2BrqhJMa+8e$zQOb1!$dTe=ITCpo!) zb7#KJZVR)WcG_vDe^&Ex*nGY0H@^HIz2BZR7!ZK)=iQ#!L;g+_1w-WlGG3j{lScuH5TykrFhRZDo?CI9v1a6Km30f%KxBca@Xhsg^YnOcBONiY*Za(? ztc3`sr4U~o%!g1X2=fkrbiWkfNbM`O3xH9pdRKIw(eC@4gthkAY5WjoML^wxzs(nMc1$r#&?7m_VgYp274-GK=H#A z=bMSk00}aF#kB_vR+n@h&3=T!UgCFB@jfWMu$u?FPllPCj;g<0bgN74oU9oFr7b6rNQoKt7>dCQIx@bw1$j6$76tVm2Sor5}BN<3= lp9Uq@2NW28BY%R;X5SD0xRJPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0<1|yK~z{ry_c(w z95E0@2L>iEQqW4_1A_+y1O*1Jv>-HaS!lq*z_6f5`H>;P`w#mOj*q9VRa5P5dtQB| ztG26bpSE4otKF=nzu!Kk=Re<*b=MKVRiWDDs$ju@Tj=)kJGId5_5SW|-CY9Q?RM1` zzOAkT{q^NtdVYMB(!aOmY2jIU;4oAG`Q`WPqy7^3>|J`moNZ_n@#MjWa7S@hxD~@T zrR*+0ss*)pUo7S!b1#9p>v){DI|0X_zF_V@Y%54{0WmQakKnw_I1sUrfc&_z+Nxqb z0WUz?x_`4x*t%8P0iQ4}s?Qov`r5VfxC{LH@R0WVefs${{Wg}}+ILfKL9xGAo_YFt zP}G772q;1WxGkUnd0Oa5+F1lLM?frK7s@^U*nTdayH_L_rkG^y&_e;rHhn4$_Hau@ z5ieJv(*Xut1sB1z4^xA9dyWp6CRwVb3I~>H<9;zeORROhmQbz#{} zu6aFyX`HTU7^>>c-Fh_M#AN{}Br2E}_Ar@wJoB8X7+gMi*%2n^Va2|UZPA*;Lr@ZW zY{jC#d%f&}YBIpWb`8q^r{)MC0=7ZlTF5^z=M6^rRKo$<4|T>96+x>wR>^B*2* VY^QcFR80T?002ovPDHLkV1h(dYvBL@ literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png.import b/Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png.import new file mode 100644 index 0000000..51181e1 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqsouxi8vi2o6" +path="res://.godot/imported/spr_dragon_wallgrab_0.png-fb2dd1ea832b6c5611212e74e15be248.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png" +dest_files=["res://.godot/imported/spr_dragon_wallgrab_0.png-fb2dd1ea832b6c5611212e74e15be248.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Art/spr_dragon_wallslide_0.png b/Char/Player/Dragon/Art/spr_dragon_wallslide_0.png new file mode 100644 index 0000000000000000000000000000000000000000..23bbeb992f94b87cb1ad913abf6edebde846f160 GIT binary patch literal 769 zcmV+c1OEJpP)P001rs1^@s6-IlU;00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0+vZcK~z{r-IlF# z6hRb)S0ag|3Y9ASO7sc@3W-cr1Qr<=i-<(xP*m|EYtVUzJVeu9&pmhV^xhsOB!l2o zo$CMdbx+SuvfEnsKW>Xvx6#kf@5|;80RIHSX{`DDdUJW%0Gpl!$l-9<_9Osg>w13u z9}wNgrjV)xOt#1pkY?9tWU^)pf*4Ufrr$`~~1a&eO zUz^!P@8dT`sNO2-g5crh1JT=6n|^_qHnxQ=um^?TnXfwo=_EJ;1U*LYTngqF%c^fV$b|aRO~BhRZ`pxRWL=s8t8(WZl?V zzv`@W(IE)CvhJA_6aqX@j(v}Y#Gnu`>%;1!WZjtv=Na2C*cEqMn-0M0#}RDf=K>Pm zFjs_x0Dmlfzd09+0L9Cf6sX3XAs%ixki_t zXa=DjLE1HlGzNr1nA z=v4kF0kwf%YcGF|1WmQ_HGZ1(Z;v&fpxy2_;$kquV12~;00000NkvXXu0mjfYOGjc literal 0 HcmV?d00001 diff --git a/Char/Player/Dragon/Art/spr_dragon_wallslide_0.png.import b/Char/Player/Dragon/Art/spr_dragon_wallslide_0.png.import new file mode 100644 index 0000000..2f45fb3 --- /dev/null +++ b/Char/Player/Dragon/Art/spr_dragon_wallslide_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyqpmfmfuxbrh" +path="res://.godot/imported/spr_dragon_wallslide_0.png-dc8fd25a2837202b035ddc9b06b0b5ed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Dragon/Art/spr_dragon_wallslide_0.png" +dest_files=["res://.godot/imported/spr_dragon_wallslide_0.png-dc8fd25a2837202b035ddc9b06b0b5ed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Dragon/Dragon.tscn b/Char/Player/Dragon/Dragon.tscn new file mode 100644 index 0000000..dc77aef --- /dev/null +++ b/Char/Player/Dragon/Dragon.tscn @@ -0,0 +1,786 @@ +[gd_scene load_steps=95 format=3 uid="uid://clbhclvndl73s"] + +[ext_resource type="Script" uid="uid://cy77v0f8ysxdn" path="res://Char/Player/States/Player_State_Machine.gd" id="1_8b1ok"] +[ext_resource type="Script" uid="uid://ly032d3bnh3n" path="res://Char/Player/Dragon/Player_Base.gd" id="1_8x8nf"] +[ext_resource type="PackedScene" uid="uid://dd7k3qbsw1bhq" path="res://Char/Char_Components/After_Image/after_image_component.tscn" id="2_decx5"] +[ext_resource type="Script" uid="uid://c3evnbnu55wyg" path="res://Char/Player/States/Player_Idle_Battle.gd" id="3_pu8qh"] +[ext_resource type="PackedScene" uid="uid://dkgg53dn8lr3k" path="res://Char/Char_Components/Petals_Leaves/Sakura_Component.tscn" id="3_q3boy"] +[ext_resource type="Texture2D" uid="uid://dpjxum07dbwf7" path="res://Char/Player/Dragon/Art/spr_dragon_idle_2.png" id="3_shf63"] +[ext_resource type="Script" uid="uid://ivsb676j6ymo" path="res://Char/Player/States/Player_Run.gd" id="4_8gmn7"] +[ext_resource type="Script" uid="uid://usn2b841v0e" path="res://Char/Player/States/Player_Run_To_Idle.gd" id="5_o8lre"] +[ext_resource type="Script" uid="uid://b3qdqr4f88tel" path="res://Char/Player/States/Player_Jump.gd" id="6_pj6pc"] +[ext_resource type="Script" uid="uid://lip17xk6ycgj" path="res://Char/Player/States/Player_Squat.gd" id="6_rk7vx"] +[ext_resource type="Script" uid="uid://blmxhheiqno3m" path="res://Char/Player/States/Player_Roll.gd" id="7_f3k8f"] +[ext_resource type="Script" uid="uid://dx7idxrq88pha" path="res://Char/Player/States/Player_Fall.gd" id="7_l6ktk"] +[ext_resource type="Script" uid="uid://b3ovdc2fiasfo" path="res://Char/Player/States/Player_Wall_Slide.gd" id="8_0jioi"] +[ext_resource type="Script" uid="uid://b71px30wip3gu" path="res://Char/Player/States/Player_Wall_Jump.gd" id="9_omn5s"] +[ext_resource type="Script" uid="uid://be7lbkwkjnli7" path="res://Char/Player/States/Player_Attack.gd" id="12_qfaga"] +[ext_resource type="Texture2D" uid="uid://npefyqisbjoa" path="res://Char/Player/Dragon/Art/spr_dragon_run_0.png" id="13_0wbuo"] +[ext_resource type="Texture2D" uid="uid://cninf8m61m206" path="res://Char/Player/Dragon/Art/spr_dragon_run_1.png" id="14_jer7q"] +[ext_resource type="Texture2D" uid="uid://buj81c5rfxrdq" path="res://Char/Player/Dragon/Art/spr_dragon_run_2.png" id="15_lptbu"] +[ext_resource type="Texture2D" uid="uid://f6umjxbcjm8m" path="res://Char/Player/Dragon/Art/spr_dragon_run_3.png" id="16_0tuwh"] +[ext_resource type="Texture2D" uid="uid://u0qiufvfp7dv" path="res://Char/Player/Dragon/Art/spr_dragon_run_4.png" id="17_kyfki"] +[ext_resource type="Texture2D" uid="uid://m6nysr4cdl7s" path="res://Char/Player/Dragon/Art/spr_dragon_run_5.png" id="18_jj3qc"] +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="18_wykc6"] +[ext_resource type="Texture2D" uid="uid://e5q7xv1s2yk7" path="res://Char/Player/Dragon/Art/spr_dragon_run_6.png" id="19_fuyqw"] +[ext_resource type="Texture2D" uid="uid://cyrddnhdejex2" path="res://Char/Player/Dragon/Art/spr_dragon_idle_1.png" id="19_tlqjx"] +[ext_resource type="Texture2D" uid="uid://bevpl7xngboh5" path="res://Char/Player/Dragon/Art/spr_dragon_run_7.png" id="20_8skjp"] +[ext_resource type="Texture2D" uid="uid://brgwp0glr18xq" path="res://Char/Player/Dragon/Art/spr_dragon_idle_3.png" id="20_lgiem"] +[ext_resource type="Texture2D" uid="uid://c2gg2hm7rdt0t" path="res://Char/Player/Dragon/Art/spr_dragon_idle_4.png" id="21_avpxs"] +[ext_resource type="Texture2D" uid="uid://bv3acm24r4k3w" path="res://Char/Player/Dragon/Art/spr_dragon_run_8.png" id="21_o4ru4"] +[ext_resource type="Texture2D" uid="uid://qlvxsg5iax8c" path="res://Char/Player/Dragon/Art/spr_dragon_idle_5.png" id="22_8yys0"] +[ext_resource type="Texture2D" uid="uid://cn0tdgaabqirl" path="res://Char/Player/Dragon/Art/spr_dragon_run_9.png" id="22_47m00"] +[ext_resource type="Texture2D" uid="uid://cnxu51medgdpe" path="res://Char/Player/Dragon/Art/spr_dragon_idle_6.png" id="23_dp7xy"] +[ext_resource type="Texture2D" uid="uid://esmd7omd5b2y" path="res://Char/Player/Dragon/Art/spr_dragon_jump_0.png" id="23_o4nm6"] +[ext_resource type="Texture2D" uid="uid://bt77wxum4koix" path="res://Char/Player/Dragon/Art/spr_dragon_idle_7.png" id="24_fsprh"] +[ext_resource type="Texture2D" uid="uid://um1fll4rdsog" path="res://Char/Player/Dragon/Art/spr_dragon_jump_1.png" id="24_g6xq5"] +[ext_resource type="Texture2D" uid="uid://b8cs32aff7vah" path="res://Char/Player/Dragon/Art/spr_dragon_idle_8.png" id="25_74tuj"] +[ext_resource type="Texture2D" uid="uid://blpk6010mvkfa" path="res://Char/Player/Dragon/Art/spr_dragon_jump_2.png" id="25_kewkt"] +[ext_resource type="Texture2D" uid="uid://bd537mp4lvwib" path="res://Char/Player/Dragon/Art/spr_dragon_idle_9.png" id="26_48fq6"] +[ext_resource type="Texture2D" uid="uid://qbqyuffl0dsb" path="res://Char/Player/Dragon/Art/spr_dragon_jump_3.png" id="26_hwbf7"] +[ext_resource type="Texture2D" uid="uid://docua10e7sugj" path="res://Char/Player/Dragon/Art/spr_dragon_idle_10.png" id="27_2sthe"] +[ext_resource type="Texture2D" uid="uid://3j8dum5ilm5v" path="res://Char/Player/Dragon/Art/spr_dragon_fall_0.png" id="27_5lstw"] +[ext_resource type="Texture2D" uid="uid://d2ibsjy2r2d1r" path="res://Char/Player/Dragon/Art/spr_dragon_idle_11.png" id="28_g1nrd"] +[ext_resource type="Texture2D" uid="uid://ua7qswi5vcvy" path="res://Char/Player/Dragon/Art/spr_dragon_fall_1.png" id="28_p33vv"] +[ext_resource type="Texture2D" uid="uid://caogd2twl7gv" path="res://Char/Player/Dragon/Art/spr_dragon_fall_2.png" id="29_idvuh"] +[ext_resource type="Texture2D" uid="uid://b6v5yssyrupav" path="res://Char/Player/Dragon/Art/spr_dragon_fall_3.png" id="30_a2wcb"] +[ext_resource type="Texture2D" uid="uid://dybwowxk2pbwp" path="res://Char/Player/Dragon/Art/spr_dragon_run_to_idle_0.png" id="37_h4ki6"] +[ext_resource type="Texture2D" uid="uid://bx2bm62lv4ejw" path="res://Char/Player/Dragon/Art/spr_dragon_run_to_idle_1.png" id="38_qv625"] +[ext_resource type="Texture2D" uid="uid://dw2ia1ckp88bm" path="res://Char/Player/Dragon/Art/spr_dragon_run_to_idle_2.png" id="39_0mny5"] +[ext_resource type="Texture2D" uid="uid://ujhm5qv7qs7x" path="res://Char/Player/Dragon/Art/spr_dragon_run_to_idle_3.png" id="40_3lg7x"] +[ext_resource type="Texture2D" uid="uid://cmdb2shk4v3fd" path="res://Char/Player/Dragon/Art/spr_dragon_wallgrab_0.png" id="42_by0sa"] +[ext_resource type="Texture2D" uid="uid://bhkdagiro5wv" path="res://Char/Player/Dragon/Art/spr_dragon_wallslide_0.png" id="43_7dq01"] +[ext_resource type="Texture2D" uid="uid://ccuvf5fp55ehk" path="res://Char/Player/Dragon/Art/spr_dragon_flip_0.png" id="46_nm5et"] +[ext_resource type="Texture2D" uid="uid://clbq0gnv4lgmy" path="res://Char/Player/Dragon/Art/spr_dragon_flip_1.png" id="47_2mdav"] +[ext_resource type="Texture2D" uid="uid://ce1eu4xeoov7c" path="res://Char/Player/Dragon/Art/spr_dragon_flip_2.png" id="48_jflmg"] +[ext_resource type="Texture2D" uid="uid://ctovc2rw5c34n" path="res://Char/Player/Dragon/Art/spr_dragon_flip_3.png" id="49_bke4t"] +[ext_resource type="Texture2D" uid="uid://c7gue6dsvy8kw" path="res://Char/Player/Dragon/Art/spr_dragon_flip_4.png" id="50_n3ffw"] +[ext_resource type="Texture2D" uid="uid://bohheg0uo1f1y" path="res://Char/Player/Dragon/Art/spr_dragon_flip_5.png" id="51_65kfe"] +[ext_resource type="Texture2D" uid="uid://dovf170ymw8x6" path="res://Char/Player/Dragon/Art/spr_dragon_flip_6.png" id="52_a6q1p"] +[ext_resource type="Texture2D" uid="uid://dcj4yru2xx1t2" path="res://Char/Player/Dragon/Art/spr_dragon_flip_7.png" id="53_raf4l"] +[ext_resource type="Texture2D" uid="uid://cf1qrbmcy6hju" path="res://Char/Player/Dragon/Art/spr_dragon_flip_8.png" id="54_dujc8"] +[ext_resource type="Texture2D" uid="uid://b75i8a73orffo" path="res://Char/Player/Dragon/Art/spr_dragon_flip_9.png" id="55_yhu0e"] +[ext_resource type="Texture2D" uid="uid://dtx0cosra1whw" path="res://Char/Player/Dragon/Art/spr_dragon_roll_0.png" id="56_ec61u"] +[ext_resource type="Texture2D" uid="uid://debnkk3xrb2aj" path="res://Char/Player/Dragon/Art/spr_dragon_roll_1.png" id="57_a1juv"] +[ext_resource type="Texture2D" uid="uid://bnt13pba1a1fr" path="res://Char/Player/Dragon/Art/spr_dragon_roll_2.png" id="58_y58dp"] +[ext_resource type="Texture2D" uid="uid://voctn5qm1pi2" path="res://Char/Player/Dragon/Art/spr_dragon_roll_3.png" id="59_ases0"] +[ext_resource type="Texture2D" uid="uid://bk8cr8q4qkigj" path="res://Char/Player/Dragon/Art/spr_dragon_roll_4.png" id="60_mp24o"] +[ext_resource type="Texture2D" uid="uid://c2seob4ri365x" path="res://Char/Player/Dragon/Art/spr_dragon_roll_5.png" id="61_37shp"] +[ext_resource type="Texture2D" uid="uid://uwyasi78it04" path="res://Char/Player/Dragon/Art/spr_dragon_roll_6.png" id="62_p6lss"] +[ext_resource type="Texture2D" uid="uid://dsavi8xyqclt3" path="res://Char/Player/Dragon/Art/spr_dragon_squat_0.png" id="63_1m5y8"] +[ext_resource type="Texture2D" uid="uid://bes1ltj266aim" path="res://Char/Player/Dragon/Art/spr_dragon_squat_1.png" id="64_562uw"] +[ext_resource type="Texture2D" uid="uid://cy05vwjwnyk5y" path="res://Char/Player/Dragon/Art/spr_dragon_attack_0.png" id="67_r4cet"] +[ext_resource type="Texture2D" uid="uid://c5yuv16qo164" path="res://Char/Player/Dragon/Art/spr_dragon_attack_1.png" id="68_yibrd"] +[ext_resource type="Texture2D" uid="uid://bme4d2aaciqcs" path="res://Char/Player/Dragon/Art/spr_dragon_attack_2.png" id="69_pwmak"] +[ext_resource type="Texture2D" uid="uid://c6g44ugtbdhx8" path="res://Char/Player/Dragon/Art/spr_dragon_attack_3.png" id="70_j2jvq"] +[ext_resource type="PackedScene" uid="uid://c4ighm8k5x65y" path="res://Char/Player/Player_Components/player_attack_component.tscn" id="72_m8ad3"] +[ext_resource type="PackedScene" uid="uid://dnlln6iv8ksy2" path="res://Char/Player/Player_Components/hit_stop_component.tscn" id="74_nx5vo"] +[ext_resource type="Script" uid="uid://btvbc6o6gwpms" path="res://Char/Char_Components/fx_component.gd" id="74_x0fc2"] +[ext_resource type="PackedScene" uid="uid://mhcxla3f3vac" path="res://Char/Player/Player_Components/hit_queue_processor.tscn" id="75_cx437"] +[ext_resource type="PackedScene" uid="uid://b6sngy5ab6s24" path="res://Char/Player/Player_Components/player_dash_component.tscn" id="75_r8ire"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g868p"] +radius = 22.0 +height = 60.0 + +[sub_resource type="Animation" id="Animation_otybg"] +resource_name = "Attack" +length = 0.3 +step = 0.01 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.09, 0.13), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [ExtResource("68_yibrd"), ExtResource("69_pwmak"), ExtResource("70_j2jvq"), ExtResource("67_r4cet")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.09, 0.13), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [Vector2(5.96046e-08, -30), Vector2(3, -30), Vector2(13, -30)] +} + +[sub_resource type="Animation" id="Animation_sem5a"] +resource_name = "Dash_1" +length = 0.1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("68_yibrd")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1.78814e-06, -30)] +} + +[sub_resource type="Animation" id="Animation_mcrul"] +resource_name = "Dash_2" +length = 0.1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("67_r4cet")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(13, -30)] +} + +[sub_resource type="Animation" id="Animation_caa4o"] +resource_name = "Fall" +length = 0.2 +loop_mode = 1 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [ExtResource("27_5lstw"), ExtResource("28_p33vv"), ExtResource("29_idvuh"), ExtResource("30_a2wcb")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [Vector2(-2, -36)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_wspq3"] +resource_name = "Idle_Battle" +length = 1.2 +loop_mode = 1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -32)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("AnimationPlayer:speed_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:texture") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("18_wykc6"), ExtResource("19_tlqjx"), ExtResource("3_shf63"), ExtResource("20_lgiem"), ExtResource("21_avpxs"), ExtResource("22_8yys0"), ExtResource("23_dp7xy"), ExtResource("24_fsprh"), ExtResource("25_74tuj"), ExtResource("26_48fq6"), ExtResource("27_2sthe"), ExtResource("28_g1nrd")] +} + +[sub_resource type="Animation" id="Animation_rtm6k"] +resource_name = "Jump" +length = 0.2 +loop_mode = 1 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [ExtResource("23_o4nm6"), ExtResource("24_g6xq5"), ExtResource("25_kewkt"), ExtResource("26_hwbf7")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -35.2)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_sy4nv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("18_wykc6")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -32)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("../Hurt/CollisionShape2D:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_hwf1e"] +resource_name = "Roll" +length = 0.3 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("56_ec61u"), ExtResource("57_a1juv"), ExtResource("58_y58dp"), ExtResource("59_ases0"), ExtResource("60_mp24o"), ExtResource("61_37shp"), ExtResource("62_p6lss")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -27)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("../Hurt/CollisionShape2D:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_arpr5"] +resource_name = "Run" +loop_mode = 1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("13_0wbuo"), ExtResource("14_jer7q"), ExtResource("15_lptbu"), ExtResource("16_0tuwh"), ExtResource("17_kyfki"), ExtResource("18_jj3qc"), ExtResource("19_fuyqw"), ExtResource("20_8skjp"), ExtResource("21_o4ru4"), ExtResource("22_47m00")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -30.4)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.5] +} + +[sub_resource type="Animation" id="Animation_jv5y0"] +resource_name = "Run_To_Idle" +length = 0.4 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [ExtResource("37_h4ki6"), ExtResource("38_qv625"), ExtResource("39_0mny5"), ExtResource("40_3lg7x")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(-3, -30.4), Vector2(2, -30.4), Vector2(1, -30.4), Vector2(2, -30.4)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("../Player_State_Machine/Run_To_Idle") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.05), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"_floor_dust" +}] +} + +[sub_resource type="Animation" id="Animation_fdmlk"] +resource_name = "Squat" +length = 0.1 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [ExtResource("63_1m5y8"), ExtResource("64_562uw")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [Vector2(-1, -30)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_sybvl"] +resource_name = "Wall_Jump" +length = 0.65 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("46_nm5et"), ExtResource("47_2mdav"), ExtResource("48_jflmg"), ExtResource("49_bke4t"), ExtResource("50_n3ffw"), ExtResource("51_65kfe"), ExtResource("52_a6q1p"), ExtResource("49_bke4t"), ExtResource("50_n3ffw"), ExtResource("51_65kfe"), ExtResource("52_a6q1p"), ExtResource("53_raf4l"), ExtResource("54_dujc8"), ExtResource("55_yhu0e")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.65), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(2, -27), Vector2(1, -33)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [2.5] +} + +[sub_resource type="Animation" id="Animation_fiuvk"] +resource_name = "Wall_Slide" +length = 0.6 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.0606061), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [ExtResource("42_by0sa"), ExtResource("43_7dq01")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0606061), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(2, -32), Vector2(2, -34)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_irhps"] +_data = { +&"Attack": SubResource("Animation_otybg"), +&"Dash_1": SubResource("Animation_sem5a"), +&"Dash_2": SubResource("Animation_mcrul"), +&"Fall": SubResource("Animation_caa4o"), +&"Idle_Battle": SubResource("Animation_wspq3"), +&"Jump": SubResource("Animation_rtm6k"), +&"RESET": SubResource("Animation_sy4nv"), +&"Roll": SubResource("Animation_hwf1e"), +&"Run": SubResource("Animation_arpr5"), +&"Run_To_Idle": SubResource("Animation_jv5y0"), +&"Squat": SubResource("Animation_fdmlk"), +&"Wall_Jump": SubResource("Animation_sybvl"), +&"Wall_Slide": SubResource("Animation_fiuvk") +} + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dcd6n"] +radius = 13.0 +height = 60.0 + +[node name="Player" type="CharacterBody2D" groups=["Player"]] +z_index = 6 +collision_mask = 66584576 +floor_constant_speed = true +floor_max_angle = 1.0472 +floor_snap_length = 10.0 +platform_on_leave = 2 +platform_floor_layers = 18350080 +platform_wall_layers = 2097152 +script = ExtResource("1_8x8nf") + +[node name="After_Image_Component" parent="." instance=ExtResource("2_decx5")] + +[node name="Sakura_Component" parent="." instance=ExtResource("3_q3boy")] + +[node name="Player_State_Machine" type="Node" parent="."] +script = ExtResource("1_8b1ok") + +[node name="Idle_Battle" type="Node" parent="Player_State_Machine"] +script = ExtResource("3_pu8qh") + +[node name="Run" type="Node" parent="Player_State_Machine"] +script = ExtResource("4_8gmn7") + +[node name="Run_To_Idle" type="Node" parent="Player_State_Machine"] +script = ExtResource("5_o8lre") + +[node name="Squat" type="Node" parent="Player_State_Machine"] +script = ExtResource("6_rk7vx") + +[node name="Roll" type="Node" parent="Player_State_Machine"] +script = ExtResource("7_f3k8f") + +[node name="Jump" type="Node" parent="Player_State_Machine"] +script = ExtResource("6_pj6pc") + +[node name="Fall" type="Node" parent="Player_State_Machine"] +script = ExtResource("7_l6ktk") + +[node name="Wall_Slide" type="Node" parent="Player_State_Machine"] +script = ExtResource("8_0jioi") + +[node name="Wall_Jump" type="Node" parent="Player_State_Machine"] +script = ExtResource("9_omn5s") + +[node name="Attack" type="Node" parent="Player_State_Machine"] +script = ExtResource("12_qfaga") + +[node name="Body_Physics" type="CollisionShape2D" parent="."] +position = Vector2(0, -30) +shape = SubResource("CapsuleShape2D_g868p") + +[node name="Body_Animation" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="Sprite2D" type="Sprite2D" parent="Body_Animation"] +position = Vector2(2, -32) +scale = Vector2(1.6, 1.6) +texture = ExtResource("18_wykc6") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Body_Animation"] +libraries = { +"": SubResource("AnimationLibrary_irhps") +} + +[node name="Detector" type="Node2D" parent="."] + +[node name="Wall" type="Node2D" parent="Detector"] + +[node name="Wall" type="RayCast2D" parent="Detector/Wall"] +position = Vector2(0, -34) +target_position = Vector2(26, 0) +collision_mask = 2097152 + +[node name="Floor" type="RayCast2D" parent="Detector"] +target_position = Vector2(0, 8) +collision_mask = 35127296 + +[node name="Floor_L" type="RayCast2D" parent="Detector"] +target_position = Vector2(-8, 8) +collision_mask = 18350080 + +[node name="Floor_R" type="RayCast2D" parent="Detector"] +target_position = Vector2(8, 8) +collision_mask = 18350080 + +[node name="Rope" type="RayCast2D" parent="Detector"] +target_position = Vector2(0, 15) +collision_mask = 33554432 + +[node name="Rope_L" type="RayCast2D" parent="Detector"] +target_position = Vector2(-9, 15) +collision_mask = 33554432 + +[node name="Rope_R" type="RayCast2D" parent="Detector"] +target_position = Vector2(10, 15) +collision_mask = 33554432 + +[node name="Slope_L" type="RayCast2D" parent="Detector"] +position = Vector2(0, -3) +target_position = Vector2(-15, 0) +collision_mask = 16777216 +hit_from_inside = true + +[node name="Slope_R" type="RayCast2D" parent="Detector"] +position = Vector2(0, -3) +target_position = Vector2(15, 0) +collision_mask = 16777216 +hit_from_inside = true + +[node name="One_Way_Floor" type="RayCast2D" parent="Detector"] +visible = false +target_position = Vector2(0, 10) +collision_mask = 1048576 + +[node name="Hit" type="Node2D" parent="."] + +[node name="Player_Attack_Component" parent="Hit" instance=ExtResource("72_m8ad3")] +position = Vector2(0, -25) + +[node name="Player_Dash_Component" parent="Hit" instance=ExtResource("75_r8ire")] +position = Vector2(0, -28) + +[node name="Hit_Queue_Processor" parent="Hit" instance=ExtResource("75_cx437")] + +[node name="Hit_Stop_Component" parent="Hit" instance=ExtResource("74_nx5vo")] + +[node name="Hurt" type="Area2D" parent="."] +visible = false +metadata/_edit_lock_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurt"] +position = Vector2(0, -30) +shape = SubResource("CapsuleShape2D_dcd6n") +debug_color = Color(0.913161, 0.221281, 0.489025, 0.42) + +[node name="Cameras" type="Node2D" parent="."] +visible = false + +[node name="Camera" type="Camera2D" parent="Cameras"] +zoom = Vector2(1.3, 1.3) +limit_left = -16 +limit_top = 0 +limit_right = 1726 +limit_bottom = 435 +position_smoothing_enabled = true + +[node name="Camera_Shake" type="Camera2D" parent="Cameras"] +enabled = false +zoom = Vector2(1.3, 1.3) + +[node name="FX_Component" type="Node2D" parent="."] +script = ExtResource("74_x0fc2") + +[node name="pos_wall_jump_dust" type="Marker2D" parent="FX_Component"] +position = Vector2(0, -23) diff --git a/Char/Player/Dragon/Player_Base.gd b/Char/Player/Dragon/Player_Base.gd new file mode 100644 index 0000000..cb9b812 --- /dev/null +++ b/Char/Player/Dragon/Player_Base.gd @@ -0,0 +1,102 @@ +extends CharacterBody2D + +var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") +@onready var floor_raycast = self.get_node("Detector/Floor") +@onready var floor_l_raycast = self.get_node("Detector/Floor_L") +@onready var floor_r_raycast = self.get_node("Detector/Floor_R") +@onready var slope_l_raycast = self.get_node("Detector/Slope_L") +@onready var slope_r_raycast = self.get_node("Detector/Slope_R") +@onready var one_way_floor_raycast = self.get_node("Detector/One_Way_Floor") +@onready var rope_raycast = self.get_node("Detector/Rope") +@onready var rope_raycast_l = self.get_node("Detector/Rope_L") +@onready var rope_raycast_r = self.get_node("Detector/Rope_R") +@onready var wall_raycast = self.get_node("Detector/Wall/Wall") + +var can_attack = true +var can_dash = true +var add_attack_up_velocity = true +var can_gameplay_input = true + +# 绳索 +var _last_rope_contact := false +var rope : Node2D = null + +func _physics_process(_delta): + rope_check() + +func set_floor_raycasts_enabled(enabled: bool) -> void: + floor_raycast.enabled = enabled + floor_l_raycast.enabled = enabled + floor_r_raycast.enabled = enabled + slope_l_raycast.enabled = enabled + slope_r_raycast.enabled = enabled + +func set_can_gameplay_input(value: bool) -> void: + if can_gameplay_input != value: + can_gameplay_input = value + +func set_one_way_mask_value(mask_name: String, value: bool)-> void: + if mask_name == 'on_way_floor': + self.set_collision_mask_value(21,value) + elif mask_name == 'rope': + self.set_collision_mask_value(26,value) + elif mask_name == 'all': + self.set_collision_mask_value(26,value) + self.set_collision_mask_value(21,value) + +func is_on_slope() -> String: + if floor_raycast.is_colliding() and floor_l_raycast.is_colliding() and floor_r_raycast.is_colliding(): + return "" + if slope_l_raycast.is_colliding(): + return "L" + if slope_r_raycast.is_colliding(): + return "R" + return "" + +func is_on_ground(): + if self.is_on_floor() and (floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding() or floor_l_raycast.is_colliding() or floor_r_raycast.is_colliding() or is_on_rope()): + return true + else: + return false + +func is_on_one_way_ground(): + return one_way_floor_raycast.is_colliding() + +func face_wall(): + return wall_raycast.is_colliding() + +func is_on_rope(): + return rope_raycast.is_colliding() or rope_raycast_l.is_colliding() or rope_raycast_r.is_colliding() + +func rope_check() -> void: + # 创建射线数组以便统一处理 + var raycasts = [rope_raycast, rope_raycast_l, rope_raycast_r] + var has_rope_contact = false + var current_rope = null + var current_collider = null + + # 遍历所有射线 + for raycast in raycasts: + if raycast.is_colliding(): + var collider = raycast.get_collider() + + # 如果碰撞到的是绳索部件 + if collider: + has_rope_contact = true + current_collider = collider + current_rope = collider.get_parent().get_parent() + break # 找到第一个有效的绳索碰撞就退出循环 + + # 处理绳索接触逻辑 + if has_rope_contact: + if !_last_rope_contact: # 首次接触绳索 + _last_rope_contact = true + rope = current_rope + # 每帧都更新绳索接触点 + if rope.has_method("handle_player_rope_contact"): + rope.handle_player_rope_contact(current_collider) + elif _last_rope_contact: # 失去接触 + _last_rope_contact = false + if rope.has_method("handle_player_rope_exit"): + rope.handle_player_rope_exit() + rope = null diff --git a/Char/Player/Dragon/Player_Base.gd.uid b/Char/Player/Dragon/Player_Base.gd.uid new file mode 100644 index 0000000..517a112 --- /dev/null +++ b/Char/Player/Dragon/Player_Base.gd.uid @@ -0,0 +1 @@ +uid://ly032d3bnh3n diff --git a/Char/Player/Dragon/Tres/fall_0.tres b/Char/Player/Dragon/Tres/fall_0.tres new file mode 100644 index 0000000..2f711ad --- /dev/null +++ b/Char/Player/Dragon/Tres/fall_0.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://cvvonlws7ekre"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_tacr7"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_xned4"] + +[resource] +diffuse_texture = ExtResource("1_tacr7") +normal_texture = ExtResource("2_xned4") diff --git a/Char/Player/Dragon/Tres/fall_1.tres b/Char/Player/Dragon/Tres/fall_1.tres new file mode 100644 index 0000000..a9c5278 --- /dev/null +++ b/Char/Player/Dragon/Tres/fall_1.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bxmiek382rxlh"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_mrvit"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_me50u"] + +[resource] +diffuse_texture = ExtResource("1_mrvit") +normal_texture = ExtResource("2_me50u") diff --git a/Char/Player/Dragon/Tres/fall_2.tres b/Char/Player/Dragon/Tres/fall_2.tres new file mode 100644 index 0000000..e25dcaa --- /dev/null +++ b/Char/Player/Dragon/Tres/fall_2.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://c10gmbpp4vs6b"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_eekxp"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_71ito"] + +[resource] +diffuse_texture = ExtResource("1_eekxp") +normal_texture = ExtResource("2_71ito") diff --git a/Char/Player/Dragon/Tres/fall_3.tres b/Char/Player/Dragon/Tres/fall_3.tres new file mode 100644 index 0000000..10cf43b --- /dev/null +++ b/Char/Player/Dragon/Tres/fall_3.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://byvo5gusdpsc2"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_xm7ol"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_fff7r"] + +[resource] +diffuse_texture = ExtResource("1_xm7ol") +normal_texture = ExtResource("2_fff7r") diff --git a/Char/Player/Dragon/Tres/idle_0.tres b/Char/Player/Dragon/Tres/idle_0.tres new file mode 100644 index 0000000..3255952 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_0.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://dixrqik2osxgv"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_e2hk0"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_r0w35"] + +[resource] +diffuse_texture = ExtResource("1_e2hk0") +normal_texture = ExtResource("2_r0w35") diff --git a/Char/Player/Dragon/Tres/idle_1.tres b/Char/Player/Dragon/Tres/idle_1.tres new file mode 100644 index 0000000..c67904c --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_1.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bsdmqi5o51kne"] + +[ext_resource type="Texture2D" uid="uid://cyrddnhdejex2" path="res://Char/Player/Dragon/Art/spr_dragon_idle_1.png" id="1_8jg5v"] +[ext_resource type="Texture2D" uid="uid://bmkjjq2g8yb7a" path="res://Char/Player/Dragon/Art/spr_dragon_idle_1.normal.png" id="2_j8jjv"] + +[resource] +diffuse_texture = ExtResource("1_8jg5v") +normal_texture = ExtResource("2_j8jjv") diff --git a/Char/Player/Dragon/Tres/idle_10.tres b/Char/Player/Dragon/Tres/idle_10.tres new file mode 100644 index 0000000..8039eb5 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_10.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://dl12ugckudcf8"] + +[ext_resource type="Texture2D" uid="uid://docua10e7sugj" path="res://Char/Player/Dragon/Art/spr_dragon_idle_10.png" id="1_7006c"] +[ext_resource type="Texture2D" uid="uid://b12asxwmq6k0g" path="res://Char/Player/Dragon/Art/spr_dragon_idle_10.normal.png" id="2_rtlmv"] + +[resource] +diffuse_texture = ExtResource("1_7006c") +normal_texture = ExtResource("2_rtlmv") diff --git a/Char/Player/Dragon/Tres/idle_11.tres b/Char/Player/Dragon/Tres/idle_11.tres new file mode 100644 index 0000000..c62b74c --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_11.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://daiyb2afxug4x"] + +[ext_resource type="Texture2D" uid="uid://d2ibsjy2r2d1r" path="res://Char/Player/Dragon/Art/spr_dragon_idle_11.png" id="1_w53xr"] +[ext_resource type="Texture2D" uid="uid://js8qlguk4jow" path="res://Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png" id="2_xoet7"] + +[resource] +diffuse_texture = ExtResource("1_w53xr") +normal_texture = ExtResource("2_xoet7") diff --git a/Char/Player/Dragon/Tres/idle_2.tres b/Char/Player/Dragon/Tres/idle_2.tres new file mode 100644 index 0000000..21fbd22 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_2.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://drbbua8t6sdeb"] + +[ext_resource type="Texture2D" uid="uid://dpjxum07dbwf7" path="res://Char/Player/Dragon/Art/spr_dragon_idle_2.png" id="1_scvon"] +[ext_resource type="Texture2D" uid="uid://sts53xjilk7f" path="res://Char/Player/Dragon/Art/spr_dragon_idle_2.normal.png" id="2_q5a7j"] + +[resource] +diffuse_texture = ExtResource("1_scvon") +normal_texture = ExtResource("2_q5a7j") diff --git a/Char/Player/Dragon/Tres/idle_3.tres b/Char/Player/Dragon/Tres/idle_3.tres new file mode 100644 index 0000000..5e00fc4 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_3.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://lw2xfg6cvgox"] + +[ext_resource type="Texture2D" uid="uid://brgwp0glr18xq" path="res://Char/Player/Dragon/Art/spr_dragon_idle_3.png" id="1_kbu0h"] +[ext_resource type="Texture2D" uid="uid://bh778kjsncdv8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png" id="2_2x3cc"] + +[resource] +diffuse_texture = ExtResource("1_kbu0h") +normal_texture = ExtResource("2_2x3cc") diff --git a/Char/Player/Dragon/Tres/idle_4.tres b/Char/Player/Dragon/Tres/idle_4.tres new file mode 100644 index 0000000..934a0fd --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_4.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bmer14ei54g3"] + +[ext_resource type="Texture2D" uid="uid://c2gg2hm7rdt0t" path="res://Char/Player/Dragon/Art/spr_dragon_idle_4.png" id="1_lidrm"] +[ext_resource type="Texture2D" uid="uid://b0al80h3n7bxt" path="res://Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png" id="2_anmpp"] + +[resource] +diffuse_texture = ExtResource("1_lidrm") +normal_texture = ExtResource("2_anmpp") diff --git a/Char/Player/Dragon/Tres/idle_5.tres b/Char/Player/Dragon/Tres/idle_5.tres new file mode 100644 index 0000000..ff4ad01 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_5.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bbvoouy3cf1jt"] + +[ext_resource type="Texture2D" uid="uid://qlvxsg5iax8c" path="res://Char/Player/Dragon/Art/spr_dragon_idle_5.png" id="1_rj25j"] +[ext_resource type="Texture2D" uid="uid://dgobekecpv8kv" path="res://Char/Player/Dragon/Art/spr_dragon_idle_5.normal.png" id="2_l0ift"] + +[resource] +diffuse_texture = ExtResource("1_rj25j") +normal_texture = ExtResource("2_l0ift") diff --git a/Char/Player/Dragon/Tres/idle_6.tres b/Char/Player/Dragon/Tres/idle_6.tres new file mode 100644 index 0000000..45d81ea --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_6.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://dxcmvc8y5m3bt"] + +[ext_resource type="Texture2D" uid="uid://cnxu51medgdpe" path="res://Char/Player/Dragon/Art/spr_dragon_idle_6.png" id="1_8d17g"] +[ext_resource type="Texture2D" uid="uid://do7wf0i2upqjp" path="res://Char/Player/Dragon/Art/spr_dragon_idle_6.normal.png" id="2_mk7iu"] + +[resource] +diffuse_texture = ExtResource("1_8d17g") +normal_texture = ExtResource("2_mk7iu") diff --git a/Char/Player/Dragon/Tres/idle_7.tres b/Char/Player/Dragon/Tres/idle_7.tres new file mode 100644 index 0000000..43d3ee7 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_7.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://b7nw17p8kkg6b"] + +[ext_resource type="Texture2D" uid="uid://bt77wxum4koix" path="res://Char/Player/Dragon/Art/spr_dragon_idle_7.png" id="1_degof"] +[ext_resource type="Texture2D" uid="uid://btiheicliiqf8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_7.normal.png" id="2_ckvrn"] + +[resource] +diffuse_texture = ExtResource("1_degof") +normal_texture = ExtResource("2_ckvrn") diff --git a/Char/Player/Dragon/Tres/idle_8.tres b/Char/Player/Dragon/Tres/idle_8.tres new file mode 100644 index 0000000..3f8cb36 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_8.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bayb1agp3jcis"] + +[ext_resource type="Texture2D" uid="uid://b8cs32aff7vah" path="res://Char/Player/Dragon/Art/spr_dragon_idle_8.png" id="1_pxjlp"] +[ext_resource type="Texture2D" uid="uid://lu15sul1g373" path="res://Char/Player/Dragon/Art/spr_dragon_idle_8.normal.png" id="2_2y8pf"] + +[resource] +diffuse_texture = ExtResource("1_pxjlp") +normal_texture = ExtResource("2_2y8pf") diff --git a/Char/Player/Dragon/Tres/idle_9.tres b/Char/Player/Dragon/Tres/idle_9.tres new file mode 100644 index 0000000..50a82f7 --- /dev/null +++ b/Char/Player/Dragon/Tres/idle_9.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bm2fh2ats20mm"] + +[ext_resource type="Texture2D" uid="uid://bd537mp4lvwib" path="res://Char/Player/Dragon/Art/spr_dragon_idle_9.png" id="1_u523k"] +[ext_resource type="Texture2D" uid="uid://bnn8arkjtbwqm" path="res://Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png" id="2_v3lwd"] + +[resource] +diffuse_texture = ExtResource("1_u523k") +normal_texture = ExtResource("2_v3lwd") diff --git a/Char/Player/Player_Components/Art/ATK_slash_1.png b/Char/Player/Player_Components/Art/ATK_slash_1.png new file mode 100644 index 0000000000000000000000000000000000000000..560bd6b8242d157bbdf107b8cafb2611065364e0 GIT binary patch literal 15918 zcmeI3e{2-T6~_l?D&jPd3Q(GsHm5_St<2v3xSzY+9RVN2Mmfhajxa5Wy|*`KuY7lV z+^&6R6B<-nk~AoykTe+VQW7LkTj8AXQ3Hpfsd}A3;q*sFQ$YkwViy>dxM8 zkIy60rm9lSNw>Fe-hAK8e%{R6y+8Kxy4rhhulRBW0O0nT>OegJldq!lnNvTHj;EeD z(1U(%O;oSY0ho5w{7!nha@tn_nBT27G#ZV;`y@q++2pVmg0^%lfqDbrU64-5N*gpR zA=skEeb(U@4_hs2*k@ht406Fl6>L?jyOMBOS8apR)uxDH>jHm;H!Yz6F=)t^bSxUz zrL@nQi7TOVvzfJ8GF^-|pLL-*prtWbXQ|SX(BibY7=^ccEN;=pJ4KJ+m}e0<-oH|x1!y(IOZ8eO9#ImVW%9gU*v}6m*i=xPK0xJj% z>cQxpaYIfsaeYoUNIp&g>Pk{g7^)Vxm~rKh)^7N$R&$`jCwE=3L}8$~o@0k7vS~TN z@-~hwCkiVCO`<&+%}gzEVw5e8091wER0=tzOh)@ zp><<%2SSiTT2`qybS5BM4|T0Qslde@=u+mCyLv;76q7S1lIfXn?l7%RATvE#S!O9@ zGvr0rDpe(+Y-q^_O^f=otE?`M&{9=pt}3_Xo6FUBSWD^O^0K(3nD1gV7?2I<7dXMe z@EjwE4ZKHkIwamz$$2D>D+!YAiNy$NVKvfO5`#wzx?DLJSljWI~+7!^mz=gz?C{;&uscm(20`&?WM5q3=(ssM5*Nl0N3_ zKj{!?~QgX!T}l*)q6lY-`>TRWmgyAt!Zc?l_+{zvT)=tWcv&O=jmx zvSL;$iN{E_!Z>L|WkY3pO&mnmB1TG1!i6np zP29|0&qf_9!^3-7v-(HX|3V^kx#K@egF^{%q8)7^kL-#toa_)7QE@6v$mxV0k$1RZ z#GOy`Crv}XCJA;)aO7*!|1J&1Rjjni@fH~Nv-vB_H++^dcXJi+-`ha>%#FF5{2yd4 zyA#LO#C$0qUqij-gM@_YFRBG{rtYD-Kd!B~X0rVo%{m%w&-52v9Qv@ldCW;m-MDlG zSz7AGrA6ffanp4Wo?#72Pv+^G@J) zq6^E2a8Fs~ilR~&BP?;`gxOq`JVR&7XSNkRp`$+sY~kO*xXN0%0ezY$#Vh(Wqhhh> zAQ%v`NpX?+U|xy~141?_E;1j?OL1X9$R@=_=7V`DE({3Sq`1g@FfYZ00U?_d7nu*{ zrMNI4WRv0|^TE6n7Y2lEQe0#{n3v+hfRIg!i_8b}Qd}4ivPp4~`Cwj(3j;znDK0V} z%u8`$K*%P=MdpKfDJ~2M*`&D0d@wJ?g#jU(6c?Ef=B2nWAY_x`BJ;t#6c+}BY*Jig zKA4x{!hn!Xii^w#^HN+G5VA>ek@;X=iVFimHYqMLAIwW}VL-?x#YN_Wc_}Uo2-zg! zswlp13*+b|+Z1}6HvZ#3Tt{!>T9oSgAOKxo2Vm_w06rc?ze51Da{#>G41lx+fIGEK zO|L9Lul-K12`p?#pZ)LxziAsc6V!cw6riKPj0O4ePTxU zi3P8}e{s+As~)KQ;YRy+J6`PF`|JF@^Z}j%brJ{``dPB#jNkhmv6*;_2IhEEwdMG z(T@!6fAtq1?2k_ZKVAQ)p^xS~{a)HT_{Iy{9-9xqyn7no_O-mVvEtIZho-;WU(?rr z`NpefP9EO%mmcMw$>62Q^8^!i+Z^*a_bOT$k0aHtqv!xeN2h>0EB8F~rvJ!#WP+N- LwSnD>n!ooiNW7WP literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/ATK_slash_1.png.import b/Char/Player/Player_Components/Art/ATK_slash_1.png.import new file mode 100644 index 0000000..8dbd36c --- /dev/null +++ b/Char/Player/Player_Components/Art/ATK_slash_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c37du1hq6b4f6" +path="res://.godot/imported/ATK_slash_1.png-f422d7ff51c62a552fc0b67081f56f21.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/ATK_slash_1.png" +dest_files=["res://.godot/imported/ATK_slash_1.png-f422d7ff51c62a552fc0b67081f56f21.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/Dash_arrow.png b/Char/Player/Player_Components/Art/Dash_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..66406a46fe0c379d2db84c56eb8541a8f2b5f8fe GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3F`h1tAs(G?CmrNEV8G#g`QiWi zj|XB;-I!6K;Uam~dfKJw8H|c8Kct!KjP8{(DDN&XSi`@wyyG&1n5+;pLosWZ%3qcj x0{43_-{0=BW#9DWiwYxpG}C;7I26mCFbQ7b7H^!Pc^YUBgQu&X%Q~loCIGZfGtB@1 literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/Dash_arrow.png.import b/Char/Player/Player_Components/Art/Dash_arrow.png.import new file mode 100644 index 0000000..1eac167 --- /dev/null +++ b/Char/Player/Player_Components/Art/Dash_arrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjh8c02v7ilde" +path="res://.godot/imported/Dash_arrow.png-0940d9b064a097347bf0d38e1cff6277.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/Dash_arrow.png" +dest_files=["res://.godot/imported/Dash_arrow.png-0940d9b064a097347bf0d38e1cff6277.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/Dash_range.png b/Char/Player/Player_Components/Art/Dash_range.png new file mode 100644 index 0000000000000000000000000000000000000000..47f1d5e4da654e007f2173d464f39651d5d2192b GIT binary patch literal 20292 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 S+Tc+D9?xSe(hO8!4bj8VA& literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/Dash_range.png.import b/Char/Player/Player_Components/Art/Dash_range.png.import new file mode 100644 index 0000000..0e589d0 --- /dev/null +++ b/Char/Player/Player_Components/Art/Dash_range.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmvnl5ql7i8h4" +path="res://.godot/imported/Dash_range.png-71e9c5292759780fc66a4cf19cf2af87.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/Dash_range.png" +dest_files=["res://.godot/imported/Dash_range.png-71e9c5292759780fc66a4cf19cf2af87.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/spr_color_slash_0.png b/Char/Player/Player_Components/Art/spr_color_slash_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6682547efc69fad3155b1614ee4706ca10b3633e GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^VL+_K!3HEXx2^F7QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKn+2jE{-7?&Tprk^<_2`aNEvu&ZA_Kp2bA2 z73%D-7I3(T2e2-WX|tH+nD*u7N44f7Rr}QUI&UdU`~1y4l0&gYzzIrRJn?yU#s0G0 z+w^br|Bd^i{kc);+Mx+?0$ZO>*%)Xc%=Wn{V7rxThRBr`#k~qXQ;PQd-dJ-j_}~8p zGfrG@KfbwMb{k*i$xU(f$7Bv1(7Uj8QG@cdy;W7k!S^QG-CCh>XN8p=f41}DjK$Ob zTA8tniMKlZD$Tw!ai@dgqN{;F9SoJO8d^F!F1jKJAt55274?&<4;n7g`L9tD#bly! zsXbHH`QWR^YfV32?6iEeG@|svysc>z?$;1}&Rr!CX~%l3gTe~DWM4f@^H1@ literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/spr_color_slash_0.png.import b/Char/Player/Player_Components/Art/spr_color_slash_0.png.import new file mode 100644 index 0000000..7a686b8 --- /dev/null +++ b/Char/Player/Player_Components/Art/spr_color_slash_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmwbrvmvfiwih" +path="res://.godot/imported/spr_color_slash_0.png-b741b9bf5415acaac2119376a2338dc9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/spr_color_slash_0.png" +dest_files=["res://.godot/imported/spr_color_slash_0.png-b741b9bf5415acaac2119376a2338dc9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/spr_color_slash_1.png b/Char/Player/Player_Components/Art/spr_color_slash_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b46b70cb87a93eeeb8fe8efdb16ea759eb7a87d5 GIT binary patch literal 592 zcmV-W0Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0p&?VK~!i%?Ulhz z!$1&4T>@t$I!PCtNCnixfjTGx(FIh&iOZ6S{)EZ+?|N+~BHo=RJwe9njr3TXAqavX z2!bF8z}v%P`rhsGzLx#m?-RCa6CViUBE_gAVy(@@o;-C>)>W+~vDUcB&@_xuLSpHN zY-keaQf?+P3sZ_&;%qMxWvS`sZX~|4A1)nLWMNf&?R81d?@7eRf5pd;*J>rp-aG-?DpTkEW__}COIvY+Mj@%()l z_X`VQ12KJ6#je4qUsxy`h>2w*YSwg(4aCH<5jAVN#s*@>t6%~CpAd5@Z0>s3Xq@}> zr_QWce!~7iFbal`r?ZGQs-0VL=LroPr`5nhGIL?$v@*^9vA>uag`H5(g7<9Sr&EKKm>D%5cZEcvN?>m=fka|4)nElI eZk)J%=P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0n|xEK~!i%?Uv1L z0znK$DIw=b>4YwF3KgWD98yP$h|)!SONjBN6)*PfrOSwc&EN>Y>GAOvWB_dYB zZI>mzekKY({tKh&WdU4vS+(3Xh}Fo4ulbplXgzny1mx;U-g#M2$MagFon5Kr1m7Xh8D5JU|&e}L9wN)U_?mu z!Fza;+`tFLO1KovK~F6uCU+sUSPGYdIf%^1^e0xPRzC*~h*XRS#qjpPWMQ;_L~SRyeYRS;=7 z$#`XC5<+uSO0;qj8f2)I+ju_*f)*Si8$fX(@CH~v|6oB-aIiIYyIPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0hvieK~!i%?U=!B z!!Qg*Jwnd~vPrh+shObj^w2pvMA0ppDRSyXDP6LlS<04Wx^=AofPaug3&=BN2krm> z(OizlMByQb;Pvp(OSPeSE*bD~I;G3YSB(=|#8pUR=C1i6@dG`{+5oq)oJBo*Ko<%Sn_v9)eP|)Z9%ey;(q^JC~F^o!8vI;kWOQX?=o!AkALf|-y|)#1N{qEjmosVa~f zf$mr(mRCVFRxAj>N~JMa2&4w1WkM(bO@O1m67n1kr|Yh9qrXiShz(x=0000Nn{1`ISV`@iy0XB4ude`@%$AjKn+5kE{-7?&Tp?Dk4+KJe?9-`coC!inmWM9gH? zzv(jX^on3$5NoTC5LSBEfAfBf*}<8vZ~OF=U2C#Zw>56C%WE$WkdAeHE$C$JY?^4l z$n5&ArfDv=y&T$$cKqUGV3;|v{mu+?j+(?k&etcJPW9B9I=jn+via#~sEaaunBVn? Zb;Xg`)N8?SjDSJL;OXk;vd$@?2>_?#l8XQU literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/spr_color_slash_4.png.import b/Char/Player/Player_Components/Art/spr_color_slash_4.png.import new file mode 100644 index 0000000..1391493 --- /dev/null +++ b/Char/Player/Player_Components/Art/spr_color_slash_4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://714r1eiywgmy" +path="res://.godot/imported/spr_color_slash_4.png-572b4c1897d692f9958905abcbb0544c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/spr_color_slash_4.png" +dest_files=["res://.godot/imported/spr_color_slash_4.png-572b4c1897d692f9958905abcbb0544c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/spr_color_slash_5.png b/Char/Player/Player_Components/Art/spr_color_slash_5.png new file mode 100644 index 0000000000000000000000000000000000000000..66ef0f678e303afd8bc3da97d0b33c1f85fb4014 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^VL+_K!3HEXx2^F7QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjK*8yrE{-7?&Tp@89wZQf;k~N&R3==N1gQVD6(GpblOMjHLi2FM05jfV_-1L5_bma6}f%->xvuG x-wB?dbL~Qa-j-?H3Nn{1`ISV`@iy0XB4ude`@%$AjK*2yy7srqc=eHL&@-{f|usBY4a18m>dQmpS z(IqM6i|m6JrpmDeFORKymwf)#o|2U-o=Y5Js(-pUH8*Y-2RBeZ1eokF+JDg}g5jFL YM<)IQN(G&Lx$i+Tp00i_>zopr0ML9pApigX literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/spr_color_slash_6.png.import b/Char/Player/Player_Components/Art/spr_color_slash_6.png.import new file mode 100644 index 0000000..815cb66 --- /dev/null +++ b/Char/Player/Player_Components/Art/spr_color_slash_6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhgn426eulul5" +path="res://.godot/imported/spr_color_slash_6.png-52fbf8b6e888c373679d52d15eaf4b1b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/spr_color_slash_6.png" +dest_files=["res://.godot/imported/spr_color_slash_6.png-52fbf8b6e888c373679d52d15eaf4b1b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/spr_master_slash_0.png b/Char/Player/Player_Components/Art/spr_master_slash_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bad438ea65b2ae224b5319b50b194274964989d3 GIT binary patch literal 462 zcmV;<0WtoGP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b@x-K~!i%?blIm z!ypg@P~ZPE2kaesf+lP2S{pLJf-%(5JZV(Lg2iF_lZ}Xoh$!N3vd1ruz7F+}3yerF zJ-ROf&CX@}38crUIscK~^ZP}f=X8%lm>{26q2|iYcjx0j^bICc*dqvjiXsTUYl+8i$mtP9nTS}DQqhI^`wO*2^ zBX;`e;4jk$6`Bj$UrP_$t6zm?*f0D<;b+MVeHB_IEwz+UY@WUXt>BB5c<9*(GEN}u_4@>fr#DL|pQSW%@I^!%7b6S(49la|*SeFGW>lr$qB#ey~Z zhSUvR>Y}`rOgG|6Yzo}~Dy|l~5mX=w-2^I6^3}HO3A;luUpv<`kpKVy07*qoM6N<$ Ef{jPX7XSbN literal 0 HcmV?d00001 diff --git a/Char/Player/Player_Components/Art/spr_master_slash_0.png.import b/Char/Player/Player_Components/Art/spr_master_slash_0.png.import new file mode 100644 index 0000000..80835ff --- /dev/null +++ b/Char/Player/Player_Components/Art/spr_master_slash_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnulu3rrowdut" +path="res://.godot/imported/spr_master_slash_0.png-a9f2e2f4c283b1480ee36159317e6928.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Player_Components/Art/spr_master_slash_0.png" +dest_files=["res://.godot/imported/spr_master_slash_0.png-a9f2e2f4c283b1480ee36159317e6928.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Player_Components/Art/spr_master_slash_1.png b/Char/Player/Player_Components/Art/spr_master_slash_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd444fdafec419d0817ba9b4ef68321e35a0f3e GIT binary patch literal 577 zcmV-H0>1r;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0oF-GK~!i%?UikE z!Y~X(x&O}|uy^1DG%~xXViZR<35cLKvqP|DNA~N-C3yqCw;P_4)048lh?E@&klsF3AvZbm|_w zvG!sXbrWADTOYoa`NEDs$*^Me(~~u1Z$WC%$@!=+LubC^J>i~?SUruV7i$ep5F7Mb zs4u|^mW^RZ+ap$=o@~*ollPX-PvG9_Kl&0RDBGV()LyCk-^v!=I-DvN=&cD#KZ8Nx z9_m^?Z>{G#bog4(gPXTDYheg&h5h%2$SdVj#>)EvYjo`hd>^)b9_;Ie4OmT}WCp{> zLxF?nGxbE)>T~Kjq5ggZ`W+IqvIMm*);7ZQ1DO7J^d+vPoLBvoSYvD61NT6C&w)J) zTN|Uy1SO||ccDYU^?5lj@L3{r_tAB9ZSrpT??Q!=P+`i()GS+%B~htmPf%=`2U<3U z3ir|FSP~IKG_izR-vxY4!qN~;L^vbgDV9G798aR+kgTEDniL(GPRSM`8IMUwc92Z+ zw>cWMT*gadZOV>-A!Z1@j}A!LXP_Z?!PPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Q^ZrK~!i%?bdA$ zf-nq#VebFa19}HffQ~>zM#n15t#j{_G%=zP`{Kt04C(Qj=Xlmb=*IICEi+o^60@EG zic$jJnQx-Sk3F09DKJywWT%mA@P_B++F@C7(EW5my#Vn4mgpT_sJMYo`Cy3MLi``V zGKCPlCM{%`O4`S+{D$4xN8gXZ;kP*Ry!x>(yr~gwAya|WW3Ki|+)K3J*89*QOUQ0w zb5)*8?&tGu8IFYsw%cyMMdbvMWZ94F9TK@Lx4R^CdG7Wpk@;s{o~NCjg_dI(*2j%b z_SEbG2ro?NpOZZ$_T7{Nn{1`ISV`@iy0XB4ude`@%$AjK*2ShE{-7?&Tnrz@--XqxLmwbf0Mb0-EV?W z$YPD62GOIB|1XK$=xOYCW!j``L9gW)^uI@D%YLqI`S3>TnU&a;>9^Sr2CmZR5`8u` zyOCl2jcMCAoA$ka*WA0^P*>0;_IrHK?8Unx{~D~QbMuLKSl*rPz@Q-Y-M)HVvF+vQ zCR5gSPVRlaGnn00WG;)Vy3@_hEt_=H@AF7<3A$gL()-NfukoL_GY^XdfDSEKI7RNn{1`ISV`@iy0XB4ude`@%$AjK*0o07srqc=eIXEay2N3I9&Yxe{uaSafw#F zM@az>Udt4C6nuP@#0XUQVQSHpTkf-W_1-tRY5wf`!*ugTm#Tz`lZ7RKk_-)V&)nPk t_ku?b&u*z(2X9=tTyWj$BI5&9L3OSDp3`b7el~(sdAj void: + slash_player.animation_finished.connect(_on_attack_animation_finished) + pass + +# 添加目标到队列中 +func add_target_to_queue(hit_info: Array, is_batch: bool = false) -> void: + if hit_info == []: + return + + # 检查是否为二维数组 + if hit_info[0] is Array: + # 遍历处理每个子数组,将is_batch设为true表示正在批量处理 + for i in range(hit_info.size()): + var is_last = (i == hit_info.size() - 1) # 是否是最后一个元素 + # 只在处理最后一个元素时将is_batch设为false + add_target_to_queue(hit_info[i], not is_last) + return + + # 以下是处理单个hit_info的逻辑 + var target = hit_info[0] # 目标敌人 + + # 检查目标是否已在队列中 + for existing_info in hit_queue: + if existing_info[0] == target: + return + + # 添加到对应队列 + if hit_info[4] == 'attack': + hit_queue.append(hit_info) + hit_queue_1.append(hit_info) + elif hit_info[4] == 'dash': + hit_queue.append(hit_info) + hit_queue_2.append(hit_info) + + # 只有在不是批量处理或者是批量处理的最后一个时才执行处理 + if not is_batch and not is_handling: + _handle_target_hit() + +# 处理击中目标 +func _handle_target_hit() -> void: + if is_handling: + return + if !hit_queue_2.is_empty(): + _handle_hit_queue_2() + return + if !hit_queue_1.is_empty(): + _handle_hit_queue_1() + return + +func _handle_hit_queue_1() -> void: + #print("hit_queue_1: ",hit_queue_1) + is_handling = true + var current_target_info = hit_queue_1[0] + hit_queue_1.pop_front() + slash_player.stop() + slash_player.play("Slash") + current_target = current_target_info[0] + current_target.hurt_data = current_target_info + current_target.start_hurt() + +func _handle_hit_queue_2() -> void: + #print("hit_queue_2: ",hit_queue_2) + #_handle_hit_queue_2是一次性批量处理 + var queue_length = hit_queue_2.size() + is_handling = true + + for single_target_info in hit_queue_2: + if single_target_info[4] == "attack": + single_target_info[4] = 'dash' #避免当attack击中瞬间,执行dash,导致从hit_queue_1转移过来的列表数据,进入到hurt_begin后,又会定帧。 + var target = single_target_info[0] + target.hurt_data = single_target_info + target.start_hurt() + target.freeze = true + queue_length -= 1 + + # 所有目标处理完毕后播放动画 + if queue_length == 0: + hit_queue_2.clear() + slash_player.play("No_Slash") + hit_stop.freeze() + +# 转移队列 +func queue_trans() -> void: + hit_queue_2.append_array(hit_queue_1) + hit_queue_1.clear() + +func get_hit_enemies() -> Array: + return hit_queue + +func clear_queue() -> void: + hit_queue_1.clear() + hit_queue_2.clear() + +func _on_attack_animation_finished(anim_name: String) -> void: + hit_stop.unfreeze() + is_handling = false + if anim_name == "Slash": + await get_tree().create_timer(0.1).timeout #两个受击敌人的定帧间隔 + _handle_target_hit() # 持续执行_handle_target_hit,直到列表为空; + +func stop_animation() -> void: + hit_stop.unfreeze() + is_handling = false + _handle_target_hit() diff --git a/Char/Player/Player_Components/hit_queue_processor.gd.uid b/Char/Player/Player_Components/hit_queue_processor.gd.uid new file mode 100644 index 0000000..d9248b4 --- /dev/null +++ b/Char/Player/Player_Components/hit_queue_processor.gd.uid @@ -0,0 +1 @@ +uid://d1k113ofbei13 diff --git a/Char/Player/Player_Components/hit_queue_processor.tscn b/Char/Player/Player_Components/hit_queue_processor.tscn new file mode 100644 index 0000000..aab7e33 --- /dev/null +++ b/Char/Player/Player_Components/hit_queue_processor.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://mhcxla3f3vac"] + +[ext_resource type="Script" uid="uid://d1k113ofbei13" path="res://Char/Player/Player_Components/hit_queue_processor.gd" id="1_bili1"] + +[node name="Hit_Queue_Processor" type="Node"] +script = ExtResource("1_bili1") diff --git a/Char/Player/Player_Components/hit_stop_component.gd b/Char/Player/Player_Components/hit_stop_component.gd new file mode 100644 index 0000000..c2ba365 --- /dev/null +++ b/Char/Player/Player_Components/hit_stop_component.gd @@ -0,0 +1,274 @@ +extends Node + +var enemy_list : Array +var player : CharacterBody2D +var after_image_list : Array + +# 存储动画状态 +var stored_animations := {} + +# 震屏相关变量 +var main_camera: Camera2D +var shake_camera: Camera2D +var shake_strength := 10.0 +var shake_timer: Timer +var shake_duration_timer: Timer # 新增:震屏持续时间计时器 + +var is_frozen := false + +func _ready() -> void: + update_freeze_list() + + # 获取相机引用 + player = get_tree().get_first_node_in_group("Player") + if player: + main_camera = player.get_node("Cameras/Camera") + shake_camera = player.get_node("Cameras/Camera_Shake") + + # 确保两个相机的缩放一致 + if main_camera and shake_camera: + shake_camera.zoom = main_camera.zoom + # 确保震屏相机初始状态是禁用的 + shake_camera.enabled = false + main_camera.enabled = true + + # 设置震屏效果计时器 + shake_timer = Timer.new() + add_child(shake_timer) + shake_timer.wait_time = 0.01 # 确保频率够快 + shake_timer.connect("timeout", _on_shake_timer_timeout) + + # 设置持续时间计时器 + shake_duration_timer = Timer.new() + add_child(shake_duration_timer) + shake_duration_timer.one_shot = true + shake_duration_timer.connect("timeout", stop_screen_shake) + +func update_freeze_list() -> void: + enemy_list = get_tree().get_nodes_in_group("Enemy") + player = get_tree().get_first_node_in_group("Player") + after_image_list = get_tree().get_nodes_in_group("After_Image") + +func freeze() -> void: + is_frozen = true + update_freeze_list() + if player: + freeze_player() + for enemy in enemy_list: + if is_instance_valid(enemy) and not enemy.death: + freeze_enemy(enemy) + for after_image in after_image_list: + if is_instance_valid(after_image): + freeze_after_image(after_image) + start_screen_shake() + +func unfreeze() -> void: + is_frozen = false + stop_screen_shake() + if player: + unfreeze_player() + for enemy in enemy_list: + #print(enemy) + if is_instance_valid(enemy) and not enemy.death: + unfreeze_enemy(enemy) + for after_image in after_image_list: + if is_instance_valid(after_image): + unfreeze_after_image(after_image) + +## 存储动画状态 +# 存储动画的关键信息以便后续恢复 +# @param animation_player - 要存储状态的动画播放器 +# @param key - 用于标识该动画状态的唯一键值 +func store_animation_state(animation_player: AnimationPlayer, key: String) -> void: + # 存储四个关键属性: + # - current_animation: 当前播放的动画名称 + # - position: 动画播放到的具体位置,用于精确恢复 + # - speed_scale: 动画播放速度,某些情况下可能被修改 + # - is_playing: 动画是否在播放,用于区分播放/暂停状态 + stored_animations[key] = { + "animation": animation_player.current_animation, + "position": animation_player.current_animation_position, + "speed_scale": animation_player.speed_scale, + "is_playing": animation_player.is_playing() + } + +## 恢复动画状态 +func restore_animation_state(animation_player: AnimationPlayer, key: String) -> void: + if stored_animations.has(key): + var state = stored_animations[key] + if state.animation != "": + animation_player.play(state.animation) + animation_player.seek(state.position, true) # 添加true参数确保更新 + animation_player.set_speed_scale(state.speed_scale) + + # 如果原来是暂停状态,恢复后也应该暂停 + if not state.is_playing: + animation_player.pause() + + stored_animations.erase(key) + +## 冻结enemy +# 暂停敌人的物理处理和动画播放 +# 重要:使用pause而不是stop来暂停动画,因为stop会重置动画状态 +# @param enemy - 要冻结的敌人节点 +func freeze_enemy(enemy: CharacterBody2D) -> void: + if not is_instance_valid(enemy): + return + + var state_machine = enemy.get_node_or_null("Enemy_State_Machine") + var body_animation = enemy.get_node_or_null("Body_Animation/AnimationPlayer") + + # 暂停状态机的物理处理,防止状态切换和位置更新 + if state_machine: + state_machine.set_physics_process(false) + + if body_animation: + var key = "enemy_" + str(enemy.get_instance_id()) # 使用实例ID确保键值唯一性 + store_animation_state(body_animation, key) + body_animation.pause() # 使用pause保持动画状态 + +## 冻结Player +# 暂停玩家的输入处理、物理处理和动画播放 +# 重要:需要同时处理玩家的身体动画和攻击动画 +# @param player - 玩家节点 +func freeze_player() -> void: + if not is_instance_valid(player): + return + + # 禁用玩家的核心功能 + player.can_attack = false + #player.can_dash = false + player.set_can_gameplay_input(false) + + var state_machine = player.get_node_or_null("Player_State_Machine") + var body_animation = player.get_node_or_null("Body_Animation/AnimationPlayer") + var attack_animation = player.get_node_or_null("Hit/Player_Attack_Component/AnimationPlayer") + + # 暂停状态机更新 + if state_machine: + state_machine.set_physics_process(false) + + # 分别存储和暂停身体动画和攻击动画 + if body_animation: + store_animation_state(body_animation, "player_body") + body_animation.pause() + + if attack_animation: + store_animation_state(attack_animation, "player_attack") + attack_animation.pause() + +## 冻结after_image +func freeze_after_image(after_image: Node2D) -> void: + if not is_instance_valid(after_image): + return + #AfterImageFreezer.freeze_after_image(after_image) + var animation = after_image.get_node_or_null("AnimationPlayer") + + if animation: + var key = "enemy_" + str(after_image.get_instance_id()) # 使用实例ID确保键值唯一性 + store_animation_state(animation, key) + animation.pause() # 使用pause保持动画状态 + + +## 解冻enemy +# 恢复敌人的物理处理和动画播放 +# 特殊处理:如果敌人在Hurt_Begin状态被冻结,直接切换到Hurt_Air状态 +# @param enemy - 要解冻的敌人节点 +func unfreeze_enemy(enemy: CharacterBody2D) -> void: + if not is_instance_valid(enemy): + return + + var state_machine = enemy.get_node_or_null("Enemy_State_Machine") + var body_animation = enemy.get_node_or_null("Body_Animation/AnimationPlayer") + + if body_animation: + var key = "enemy_" + str(enemy.get_instance_id()) + # 特殊状态处理:Hurt_Begin是过渡状态,需要直接切换到Hurt_Air + if stored_animations.has(key): + var stored_state = stored_animations[key] + if stored_state.animation == "Hurt_Begin" or enemy.freeze: + restore_animation_state(body_animation, key) + if state_machine: + state_machine.set_physics_process(true) + state_machine.change_state("hurt_air") + return + + restore_animation_state(body_animation, key) + if state_machine: + state_machine.set_physics_process(true) + +## 解冻Player +# 恢复玩家的所有功能和动画状态 +# @param player - 玩家节点 +func unfreeze_player() -> void: + if not is_instance_valid(player): + return + + # 重新启用玩家的核心功能 + player.can_attack = true + player.can_dash = true + player.set_can_gameplay_input(true) + + var state_machine = player.get_node_or_null("Player_State_Machine") + var body_animation = player.get_node_or_null("Body_Animation/AnimationPlayer") + var attack_animation = player.get_node_or_null("Hit/Player_Attack_Component/AnimationPlayer") + + # 恢复状态机更新 + if state_machine: + state_machine.set_physics_process(true) + + # 分别恢复身体动画和攻击动画 + if body_animation: + restore_animation_state(body_animation, "player_body") + + if attack_animation: + restore_animation_state(attack_animation, "player_attack") + +## 解冻After_image +func unfreeze_after_image(after_image: Node2D) -> void: + if not is_instance_valid(after_image): + return + #AfterImageFreezer.unfreeze_after_image(after_image) + var animation = after_image.get_node_or_null("AnimationPlayer") + + if animation: + var key = "enemy_" + str(after_image.get_instance_id()) + # 特殊状态处理:Hurt_Begin是过渡状态,需要直接切换到Hurt_Air + if stored_animations.has(key): + restore_animation_state(animation, key) + + +func start_screen_shake(strength: float = 10.0) -> void: + if main_camera and shake_camera: + shake_strength = strength + var camera_center = main_camera.get_screen_center_position() + main_camera.enabled = false + shake_camera.enabled = true + shake_camera.global_position = camera_center + shake_camera.offset = Vector2.ZERO + shake_timer.start() + +func start_screen_shake_with_duration(duration: float, strength: float = 10.0) -> void: + start_screen_shake(strength) + shake_duration_timer.wait_time = duration + shake_duration_timer.start() + +func stop_screen_shake() -> void: + if main_camera and shake_camera: + shake_timer.stop() + shake_duration_timer.stop() + shake_camera.offset = Vector2.ZERO + shake_camera.enabled = false + main_camera.enabled = true + +# 震屏效果实现 +func _on_shake_timer_timeout() -> void: + if shake_camera and shake_camera.enabled: + # 使用较大的随机范围 + var rand_x = randf_range(-shake_strength, shake_strength) + var rand_y = randf_range(-shake_strength, shake_strength) + shake_camera.offset = Vector2(rand_x, rand_y) + +# 判断是否正在震屏 +func is_shaking() -> bool: + return shake_camera != null and shake_camera.enabled diff --git a/Char/Player/Player_Components/hit_stop_component.gd.uid b/Char/Player/Player_Components/hit_stop_component.gd.uid new file mode 100644 index 0000000..c530360 --- /dev/null +++ b/Char/Player/Player_Components/hit_stop_component.gd.uid @@ -0,0 +1 @@ +uid://b8801iraarw7b diff --git a/Char/Player/Player_Components/hit_stop_component.tscn b/Char/Player/Player_Components/hit_stop_component.tscn new file mode 100644 index 0000000..e9ea7c4 --- /dev/null +++ b/Char/Player/Player_Components/hit_stop_component.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dnlln6iv8ksy2"] + +[ext_resource type="Script" uid="uid://b8801iraarw7b" path="res://Char/Player/Player_Components/hit_stop_component.gd" id="1_jedqg"] + +[node name="Hit_Stop_Component" type="Node"] +script = ExtResource("1_jedqg") diff --git a/Char/Player/Player_Components/player_attack_component.gd b/Char/Player/Player_Components/player_attack_component.gd new file mode 100644 index 0000000..21baf13 --- /dev/null +++ b/Char/Player/Player_Components/player_attack_component.gd @@ -0,0 +1,165 @@ +# Player_Attack_Component.gd +extends Node2D + +# 节点引用 +@onready var animation_player: AnimationPlayer = $AnimationPlayer +@onready var ray_cast_2d_1: RayCast2D = $RayCast2D_1 +@onready var ray_cast_2d_2: RayCast2D = $RayCast2D_2 +@onready var ray_cast_2d_3: RayCast2D = $RayCast2D_3 +@onready var hit_queue_processor = owner.get_node("Hit/Hit_Queue_Processor") + +# 导出变量 +var attack_cooldown: float = 0.1 + +# 成员变量 +var attack_timer: float = 0.0 +var direction: Vector2 +var hit_force: float = 630 +var damage: float = 1 +var checked_objects = [] +var is_attack_active := false +var raycasts: Array[RayCast2D] = [] + +#region 生命周期方法 +func _ready() -> void: + _setup_connections() + _initialize_raycasts() + +func _physics_process(delta: float) -> void: + if attack_timer > 0: + attack_timer = max(0, attack_timer - delta) + if animation_player.is_playing(): + validate_and_hit_target() + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("Attack") and owner.can_attack and attack_timer <= 0: + var mouse_pos = get_global_mouse_position() + direction = (mouse_pos - self.global_position).normalized() + execute_knife_attack() + owner.add_attack_up_velocity = false + +func _exit_tree() -> void: + is_attack_active = false + manage_raycasts_state(false) + hit_queue_processor.clear_queue() +#endregion + +#region 核心攻击逻辑 +func execute_knife_attack(force: bool = false) -> void: + if force: + force_reset_attack_state() + + is_attack_active = true + owner.can_attack = false + + _apply_attack_movement() + _update_attack_visuals() + + # 在动画开始前启用射线 + manage_raycasts_state(true) + animation_player.play("Swing_Knife") + owner.get_node("Player_State_Machine").change_state("attack") + +func _apply_attack_movement() -> void: + if owner.is_on_rope() and direction.y > 0: + owner.set_one_way_mask_value("rope",false) + #print("set false") + + var current_state_name = owner.get_node("Player_State_Machine").current_state.name.to_lower() + + if current_state_name not in ["roll","run_to_idle"] and sign(owner.velocity.x) == sign(direction.x) and owner.velocity.x != 0: + owner.velocity.x += direction.x * 50 + else: + owner.velocity.x = direction.x * 400 + + owner.velocity.y = direction.y * 500 if owner.add_attack_up_velocity else direction.y * 80 + +func _update_attack_visuals() -> void: + var angle = direction.angle() + self.rotation = angle + self.scale.y = -1 if direction.x < 0 else 1 +#endregion + +#region 射线检测管理 +func _initialize_raycasts() -> void: + raycasts = [ray_cast_2d_1, ray_cast_2d_2, ray_cast_2d_3] + store_raycast_initial_states() + manage_raycasts_state(false) + +# 统一管理射线状态 +func manage_raycasts_state(enabled: bool) -> void: + if not is_attack_active and enabled: + return + + for ray in raycasts: + ray.enabled = enabled + +func store_raycast_initial_states(): + var rays = [ray_cast_2d_1, ray_cast_2d_2, ray_cast_2d_3] + for ray in rays: + ray.set_meta("default_values", { + "target_position": ray.target_position, + "rotation": ray.rotation, + "position": ray.position, + "enabled": ray.enabled + }) +#endregion + +#region 状态管理 +func force_reset_attack_state() -> void: + if animation_player.is_playing(): + animation_player.stop() + + is_attack_active = false + manage_raycasts_state(false) + owner.can_attack = true + attack_timer = 0 + checked_objects.clear() + +#endregion + +#region 信号连接设置 +func _setup_connections() -> void: + animation_player.animation_finished.connect(_on_attack_animation_finished) +#endregion + +#region 信号回调 +func _on_attack_animation_finished(anim_name: String) -> void: + if anim_name == "Swing_Knife": + is_attack_active = false + manage_raycasts_state(false) + attack_timer = attack_cooldown + owner.can_attack = true +#endregion + +#region 命中检测 +func validate_and_hit_target() -> void: + if not is_attack_active: + return + + var temp_exceptions = [] + + for ray in raycasts: + if ray.is_colliding(): + var collider = ray.get_collider() + if collider.owner in checked_objects: + continue + + if collider.owner.is_in_group("Enemy"): + checked_objects.append(collider.owner) + var hit_info = [collider.owner, damage, direction, hit_force + randf_range(0, 150), 'attack'] + hit_queue_processor.add_target_to_queue(hit_info) + + # 记录临时例外 + temp_exceptions.append(collider) + for r in raycasts: + r.add_exception(collider) + r.force_raycast_update() + + # 清理所有临时例外 + for exception in temp_exceptions: + for ray in raycasts: + ray.remove_exception(exception) + ray.force_raycast_update() + + checked_objects.clear() diff --git a/Char/Player/Player_Components/player_attack_component.gd.uid b/Char/Player/Player_Components/player_attack_component.gd.uid new file mode 100644 index 0000000..7b042c5 --- /dev/null +++ b/Char/Player/Player_Components/player_attack_component.gd.uid @@ -0,0 +1 @@ +uid://bgrghyry1tuct diff --git a/Char/Player/Player_Components/player_attack_component.tscn b/Char/Player/Player_Components/player_attack_component.tscn new file mode 100644 index 0000000..5318df6 --- /dev/null +++ b/Char/Player/Player_Components/player_attack_component.tscn @@ -0,0 +1,225 @@ +[gd_scene load_steps=15 format=3 uid="uid://c4ighm8k5x65y"] + +[ext_resource type="Script" uid="uid://bgrghyry1tuct" path="res://Char/Player/Player_Components/player_attack_component.gd" id="1_col3l"] +[ext_resource type="Texture2D" uid="uid://dnulu3rrowdut" path="res://Char/Player/Player_Components/Art/spr_master_slash_0.png" id="2_bvv8w"] +[ext_resource type="Texture2D" uid="uid://cb4dyy44jlhue" path="res://Char/Player/Player_Components/Art/spr_master_slash_1.png" id="3_rqtbh"] +[ext_resource type="Texture2D" uid="uid://bm8o8djx1ckua" path="res://Char/Player/Player_Components/Art/spr_master_slash_2.png" id="4_5peu1"] +[ext_resource type="Texture2D" uid="uid://b3vxksto2j673" path="res://Char/Player/Player_Components/Art/spr_master_slash_3.png" id="5_p2s04"] +[ext_resource type="Texture2D" uid="uid://bi22tpqxju30w" path="res://Char/Player/Player_Components/Art/spr_master_slash_4.png" id="6_f6fdd"] +[ext_resource type="Texture2D" uid="uid://c37du1hq6b4f6" path="res://Char/Player/Player_Components/Art/ATK_slash_1.png" id="7_eo8bc"] + +[sub_resource type="Animation" id="Animation_v123o"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [null] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(19, -8)] +} + +[sub_resource type="Animation" id="Animation_6otjy"] +resource_name = "Swing_Knife" +length = 0.22 +step = 0.01 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.01, 0.04, 0.14, 0.2), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 1, +"values": [ExtResource("2_bvv8w"), ExtResource("3_rqtbh"), ExtResource("4_5peu1"), ExtResource("5_p2s04"), ExtResource("6_f6fdd")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [Vector2(26, -2)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.01, 0.08, 0.22), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0.784314), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_b5tao"] +_data = { +&"RESET": SubResource("Animation_v123o"), +&"Swing_Knife": SubResource("Animation_6otjy") +} + +[sub_resource type="Animation" id="Animation_0pojb"] +resource_name = "No_Slash" +length = 0.5 +step = 0.02 + +[sub_resource type="Animation" id="Animation_ptb0m"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:self_modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} + +[sub_resource type="Animation" id="Animation_jov6j"] +resource_name = "Slash" +length = 0.2 +step = 0.02 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("7_eo8bc")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(-800, 0), Vector2(0, 0), Vector2(800, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:self_modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.1, 0.16, 0.2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Color(0, 0.694118, 0.694118, 0), Color(0.213405, 0.838908, 0.916265, 1), Color(0.984314, 0.396078, 0.901961, 1), Color(1, 1, 1, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ruoal"] +_data = { +&"No_Slash": SubResource("Animation_0pojb"), +&"RESET": SubResource("Animation_ptb0m"), +&"Slash": SubResource("Animation_jov6j") +} + +[node name="Player_Attack_Component" type="Node2D" groups=["FX"]] +script = ExtResource("1_col3l") + +[node name="Sprite2D" type="Sprite2D" parent="."] +self_modulate = Color(1, 1, 1, 0) +position = Vector2(19, -8) +scale = Vector2(1.3, 1.6) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +root_node = NodePath("../Sprite2D") +libraries = { +&"": SubResource("AnimationLibrary_b5tao") +} + +[node name="RayCast2D_1" type="RayCast2D" parent="."] +visible = false +position = Vector2(-14, -24) +target_position = Vector2(109, 0) +collision_mask = 31981696 +hit_from_inside = true +collide_with_areas = true + +[node name="RayCast2D_2" type="RayCast2D" parent="."] +visible = false +position = Vector2(-14, 0) +target_position = Vector2(109, 0) +collision_mask = 31981696 +hit_from_inside = true +collide_with_areas = true + +[node name="RayCast2D_3" type="RayCast2D" parent="."] +visible = false +position = Vector2(-14, 24) +target_position = Vector2(109, 0) +collision_mask = 31981696 +hit_from_inside = true +collide_with_areas = true + +[node name="Hit_Enemy_Effect" type="Node2D" parent="."] + +[node name="Sprite2D" type="Sprite2D" parent="Hit_Enemy_Effect"] +self_modulate = Color(1, 1, 1, 0) +z_index = 1 +texture = ExtResource("7_eo8bc") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Hit_Enemy_Effect"] +libraries = { +&"": SubResource("AnimationLibrary_ruoal") +} diff --git a/Char/Player/Player_Components/player_dash_clock.gd b/Char/Player/Player_Components/player_dash_clock.gd new file mode 100644 index 0000000..cd0cd2c --- /dev/null +++ b/Char/Player/Player_Components/player_dash_clock.gd @@ -0,0 +1,14 @@ +class_name ClockProgress +extends Node2D + +var progress: float = 1.0 # 0.0 到 1.0 +var radius: float = 8.0 # 时钟半径 +var thickness: float = 4.0 # 边框粗细 +var color := Color(1, 1, 1, 0.8) + +func _draw() -> void: + # 绘制背景圆 + draw_arc(Vector2.ZERO, radius, 0, TAU, 32, Color(0.2, 0.2, 0.2, 0.5), thickness) + # 绘制进度 + if progress > 0: + draw_arc(Vector2.ZERO, radius, -PI/2, -PI/2 + TAU * progress, 32, color, thickness) diff --git a/Char/Player/Player_Components/player_dash_clock.gd.uid b/Char/Player/Player_Components/player_dash_clock.gd.uid new file mode 100644 index 0000000..6f86d80 --- /dev/null +++ b/Char/Player/Player_Components/player_dash_clock.gd.uid @@ -0,0 +1 @@ +uid://drfptmhyxsru8 diff --git a/Char/Player/Player_Components/player_dash_clock.tscn b/Char/Player/Player_Components/player_dash_clock.tscn new file mode 100644 index 0000000..4f9fc9d --- /dev/null +++ b/Char/Player/Player_Components/player_dash_clock.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bob6s3frdj7j8"] + +[ext_resource type="Script" uid="uid://drfptmhyxsru8" path="res://Char/Player/Player_Components/player_dash_clock.gd" id="1_ms8x2"] + +[node name="Dash_Clock" type="Node2D"] +script = ExtResource("1_ms8x2") diff --git a/Char/Player/Player_Components/player_dash_component.gd b/Char/Player/Player_Components/player_dash_component.gd new file mode 100644 index 0000000..223a418 --- /dev/null +++ b/Char/Player/Player_Components/player_dash_component.gd @@ -0,0 +1,469 @@ +# player_dash_component.gd +extends Node2D + +signal dash_target_calculated(_target_position: Vector2) + +@onready var dash_aim_raycast: RayCast2D = $Dash_Aim_RayCast2D +@onready var dash_hit_raycast_1: RayCast2D = $Dash_Hit_RayCast_1 +@onready var dash_hit_raycast_2: RayCast2D = $Dash_Hit_RayCast_2 +@onready var dash_hit_raycast_3: RayCast2D = $Dash_Hit_RayCast_3 +@onready var dash_arrow: Sprite2D = $DashArrow +@onready var dash_range: Sprite2D = $DashRange +@onready var player = owner as CharacterBody2D +@onready var after_image_component = player.get_node("After_Image_Component") +@onready var sakura_component = player.get_node("Sakura_Component") +@onready var attack_component = player.get_node("Hit/Player_Attack_Component") +@onready var animation_player = player.get_node("Body_Animation/AnimationPlayer") +@onready var hit_queue_processor = owner.get_node("Hit/Hit_Queue_Processor") +@onready var hit_stop = owner.get_node("Hit/Hit_Stop_Component") +@onready var slash_player = owner.get_node("Hit/Player_Attack_Component/Hit_Enemy_Effect/AnimationPlayer") +@onready var camera = player.get_node("Cameras/Camera") + +@onready var aim_timer: Timer +@onready var clock_progress: ClockProgress = $Dash_Clock +const MAX_AIM_TIME := 0.02 + +const CAMERA_OFFSET_DISTANCE := 80.0 # 固定的相机偏移距离 +const CAMERA_MOVE_SPEED := 0.08 # 相机移动速度 +var original_camera_offset := Vector2.ZERO + +const MAX_DASH_DISTANCE := 330.0 +# 目标位置检测需要的碰撞层常量 +const COLLISION_LAYER_20 = 1 << 19 +const COLLISION_LAYER_22 = 1 << 21 +const COLLISION_LAYER_23 = 1 << 22 +const COLLISION_LAYER_24 = 1 << 23 +const COLLISION_LAYER_25 = 1 << 24 +# 组合所有需要的层 +const TERRAIN_LAYERS = COLLISION_LAYER_20 | COLLISION_LAYER_22 | COLLISION_LAYER_23 | COLLISION_LAYER_24 | COLLISION_LAYER_25 + +var is_aiming := false +var dash_direction: Vector2 = Vector2.ZERO +var dash_force: float = 630 +var damage: float = 1 +var dash_shader: Shader + +var camera_default_offset := Vector2.ZERO # 相机的默认偏移值 +var camera_aim_offset := Vector2.ZERO # 瞄准时的偏移值 + +func _ready() -> void: + dash_arrow.visible = false + dash_range.visible = false + dash_hit_raycast_1.enabled = false + dash_hit_raycast_2.enabled = false + dash_hit_raycast_3.enabled = false + # 加载shader资源 + dash_shader = load("res://Char/Char_Components/After_Image/player_dash.gdshader") + + camera_default_offset = camera.offset # 记录相机的初始偏移值 + + # 添加进度条初始化 + setup_clock_progress() + + # 添加计时器 + aim_timer = Timer.new() + aim_timer.one_shot = true + aim_timer.timeout.connect(_on_aim_timer_timeout) + add_child(aim_timer) + +func setup_clock_progress() -> void: + clock_progress.visible = false + +func _process(_delta: float) -> void: + if Input.is_action_just_pressed("Dash") and player.can_dash: + after_image_component.start() + start_aiming() + elif Input.is_action_just_released("Dash"): + after_image_component.stop() + end_aiming() + + if is_aiming: + update_raycast() + hit_queue_processor.queue_trans() + + if hit_stop.is_frozen: + hit_queue_processor.stop_animation() + + if slash_player.current_animation == "Slash": + slash_player.stop() + + # 更新时钟进度 + var progress = aim_timer.time_left / MAX_AIM_TIME + clock_progress.progress = progress + # 更新时钟颜色 + if progress < 0.3: # 低于30%时变红 + clock_progress.color = Color(1.0, 0.0, 0.0, 0.8) + elif progress < 0.6: # 低于60%时变黄 + clock_progress.color = Color(1.0, 1.0, 0.0, 0.8) + else: + clock_progress.color = Color(0.0, 1.0, 0.0, 0.8) + + clock_progress.queue_redraw() + +# 更新射线的方向和长度 +func update_raycast() -> void: + var mouse_pos = get_global_mouse_position() + dash_direction = (mouse_pos - global_position).normalized() + var distance = global_position.distance_to(mouse_pos) + + # 相机偏移处理 + if distance > MAX_DASH_DISTANCE: + # 计算目标偏移值 + camera_aim_offset = dash_direction * CAMERA_OFFSET_DISTANCE + # 确保不超出限制 + camera_aim_offset = get_safe_camera_offset(camera_aim_offset) + + var tween = create_tween() + tween.tween_property(camera, "offset", + camera_default_offset + camera_aim_offset, CAMERA_MOVE_SPEED)\ + .set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT) + else: + var tween = create_tween() + tween.tween_property(camera, "offset", + camera_default_offset, CAMERA_MOVE_SPEED)\ + .set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT) + + # 计算目标距离 + var target_distance = min(distance, MAX_DASH_DISTANCE) + + # 更新瞄准射线 + dash_aim_raycast.target_position = dash_direction * target_distance + dash_aim_raycast.force_raycast_update() + + # 计算射线距离 + var collision_distance = target_distance + if dash_aim_raycast.is_colliding(): + var collision_point = dash_aim_raycast.get_collision_point() + collision_distance = global_position.distance_to(collision_point) + + # 更新中间射线 + dash_hit_raycast_1.target_position = dash_direction * collision_distance + + # 更新上方射线(向上旋转30度) + var up_direction = dash_direction.rotated(-PI/36) # -5度 + dash_hit_raycast_2.target_position = up_direction * collision_distance + + # 更新下方射线(向下旋转30度) + var down_direction = dash_direction.rotated(PI/36) # +5度 + dash_hit_raycast_3.target_position = down_direction * collision_distance + + # 强制更新所有射线 + dash_hit_raycast_1.force_raycast_update() + dash_hit_raycast_2.force_raycast_update() + dash_hit_raycast_3.force_raycast_update() + + # 更新箭头显示 + var arrow_target_pos: Vector2 + if dash_aim_raycast.is_colliding(): + arrow_target_pos = dash_aim_raycast.get_collision_point() + else: + arrow_target_pos = global_position + dash_direction * target_distance + + var arrow_direction = arrow_target_pos - global_position + var arrow_distance = arrow_direction.length() + update_arrow(arrow_direction, arrow_distance) + +# 确保相机偏移不会超出limit +func get_safe_camera_offset(desired_offset: Vector2) -> Vector2: + var _camera_center = player.global_position + camera.offset + var new_center = player.global_position + desired_offset + var safe_offset = desired_offset + + # 检查并调整水平方向 + if new_center.x < camera.limit_left: + safe_offset.x = camera.limit_left - player.global_position.x + elif new_center.x > camera.limit_right: + safe_offset.x = camera.limit_right - player.global_position.x + + # 检查并调整垂直方向 + if new_center.y < camera.limit_top: + safe_offset.y = camera.limit_top - player.global_position.y + elif new_center.y > camera.limit_bottom: + safe_offset.y = camera.limit_bottom - player.global_position.y + + return safe_offset + +func update_arrow(direction: Vector2, distance: float) -> void: + dash_arrow.rotation = direction.normalized().angle() + dash_arrow.scale.x = distance / 30.0 + dash_arrow.scale.y = 1.0 + + +func start_aiming() -> void: + if not is_aiming: + aim_timer.stop() + is_aiming = true + player.set_can_gameplay_input(false) + player.can_attack = false + dash_hit_raycast_1.enabled = true + dash_hit_raycast_2.enabled = true + dash_hit_raycast_3.enabled = true + + # 显示进度条 + clock_progress.visible = true + clock_progress.progress = 1.0 + + # 记录相机原始位置 + original_camera_offset = camera.offset + + # 显示视觉效果 + dash_arrow.visible = true + dash_range.visible = true + + # 创建范围显示动画 + var tween = create_tween() + tween.tween_property(dash_range, "modulate:a", 1.0, 0.1)\ + .set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + + # 设置初始位置 + dash_range.global_position = global_position + dash_arrow.global_position = global_position + + slash_player.stop() + + #美术效果 + var sprite = player.get_node("Body_Animation/Sprite2D") # 根据实际节点路径调整 + var shader_material = ShaderMaterial.new() + shader_material.shader = dash_shader + sprite.material = shader_material + # 设置初始shader参数 + sprite.material.set_shader_parameter("time_slowed", true) + sprite.material.set_shader_parameter("effect_mixture", 1.0) + + #减速黑屏 + TimeScreenController.reset_all() + TimeScreenController.execute_effects(0.02, true) + + # 添加计时器和标签相关代码 + aim_timer.start(MAX_AIM_TIME) + +func end_aiming() -> void: + if is_aiming: + is_aiming = false + dash_arrow.visible = false + dash_range.visible = false + clock_progress.visible = false + + # 恢复相机位置 + var camera_tween = create_tween() + camera_tween.tween_property(camera, "offset", + camera_default_offset, 0.2)\ + .set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + + # 淡出范围指示器 + var range_tween = create_tween() + range_tween.tween_property(dash_range, "modulate", + Color(1, 1, 1, 0), 0.1) + + # 恢复玩家控制 + player.set_can_gameplay_input(true) + player.can_attack = true + + # 计算并执行冲刺 + var target = calculate_dash_target_pos() + _process_dash(target) + +func _process_dash(target_pos: Vector2) -> void: + var start_pos = player.global_position + # 确保射线有时间更新 + await get_tree().physics_frame + + # 获取所有碰撞目标 + get_dash_hit_target() + # 禁用所有射线 + dash_hit_raycast_1.enabled = false + dash_hit_raycast_2.enabled = false + dash_hit_raycast_3.enabled = false + + # 更新位置 + player.global_position = target_pos + player.velocity = Vector2.ZERO + + TimeScreenController.reset_all() + emit_signal("dash_target_calculated", target_pos) + + var after_image_texture = get_first_frame_texture("Attack") + var after_image_rect = get_first_frame_region_rect("Attack") + after_image_component.spawn_trail_between_points(start_pos, target_pos,30,true,after_image_texture,after_image_rect) + sakura_component.spawn_sakura_fall(start_pos, target_pos, 20) + + if attack_component: + player.can_attack = true + attack_component.direction = dash_direction + attack_component.execute_knife_attack(true) + +func cancel_dash() -> void: + # 重置各种状态 + is_aiming = false + dash_arrow.visible = false + dash_range.visible = false + clock_progress.visible = false + + # 关闭射线检测 + dash_hit_raycast_1.enabled = false + dash_hit_raycast_2.enabled = false + dash_hit_raycast_3.enabled = false + + # 恢复相机位置 + var camera_tween = create_tween() + camera_tween.tween_property(camera, "offset", + camera_default_offset, 0.2)\ + .set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + + # 恢复玩家控制和状态 + player.set_can_gameplay_input(true) + player.can_attack = true + + # 清除shader效果 + var sprite = player.get_node("Body_Animation/Sprite2D") + sprite.material = null + + # 停止残影效果 + after_image_component.stop() + + # 恢复时间速度 + TimeScreenController.reset_all() + +func get_dash_hit_target() -> void: + var excluded_objects = [] + var targets = [] + var hit_info_group = [] + + # 处理所有射线 + var raycasts = [dash_hit_raycast_1, dash_hit_raycast_2, dash_hit_raycast_3] + + for raycast in raycasts: + # 清理之前的排除列表 + for obj in excluded_objects: + raycast.remove_exception(obj) + + # 检测当前射线的所有碰撞 + while raycast.is_colliding(): + var collider = raycast.get_collider() + if collider == null: + break + + if collider.owner.is_in_group("Enemy"): + # 避免重复添加同一目标 + if not collider.owner in targets: + targets.append(collider.owner) + + excluded_objects.append(collider) + raycast.add_exception(collider) + raycast.force_raycast_update() + + # 清理所有射线的排除列表 + for raycast in raycasts: + for obj in excluded_objects: + raycast.remove_exception(obj) + + # 等待一帧确保所有射线检测都完成 + await get_tree().physics_frame + + # 统一处理所有目标 + for target in targets: + var hit_info = [target, damage, dash_direction, dash_force,'dash'] + hit_info_group.append(hit_info) + + hit_queue_processor.add_target_to_queue(hit_info_group, true) + +# 计算目标位置 +func calculate_dash_target_pos() -> Vector2: + var mouse_pos = get_global_mouse_position() + var direction = (mouse_pos - global_position).normalized() + var distance = global_position.distance_to(mouse_pos) + var target_distance = min(distance, MAX_DASH_DISTANCE) + + # 创建四个方向的射线检测 + var space_state = get_world_2d().direct_space_state + var check_distance = 50 + + # 获取冲刺目标点位置 + var dash_target = global_position + direction * target_distance + var check_origin = dash_target + + # 上下左右四个方向的射线检测 + var up_check = PhysicsRayQueryParameters2D.create( + check_origin, + check_origin + Vector2(0, -check_distance), + TERRAIN_LAYERS + ) + var down_check = PhysicsRayQueryParameters2D.create( + check_origin, + check_origin + Vector2(0, check_distance), + TERRAIN_LAYERS + ) + var left_check = PhysicsRayQueryParameters2D.create( + check_origin, + check_origin + Vector2(-check_distance, 0), + TERRAIN_LAYERS + ) + var right_check = PhysicsRayQueryParameters2D.create( + check_origin, + check_origin + Vector2(check_distance, 0), + TERRAIN_LAYERS + ) + + var _up_result = space_state.intersect_ray(up_check) + var down_result = space_state.intersect_ray(down_check) + var _left_result = space_state.intersect_ray(left_check) + var _right_result = space_state.intersect_ray(right_check) + + if dash_aim_raycast.is_colliding(): + var collision_point = dash_aim_raycast.get_collision_point() + var collision_normal = dash_aim_raycast.get_collision_normal() + + # 检测斜坡类型 + var is_slope = abs(collision_normal.x) > 0.5 && abs(collision_normal.y) > 0.5 + var is_right_up_slope = is_slope && collision_normal.x < 0 + var _is_left_up_slope = is_slope && collision_normal.x > 0 + var is_ceiling = collision_point.y < global_position.y && direction.y < 0 + + # 返回值处理 + if is_slope: + if is_right_up_slope: + return collision_point + collision_normal * 20 + else: # left-up slope + return collision_point + collision_normal * 20 + elif is_ceiling: + return Vector2(collision_point.x, collision_point.y + 40) + else: + return collision_point + collision_normal * 10 + + # 非碰撞情况的默认处理 + var target_pos = global_position + direction * target_distance + if down_result.is_empty(): + target_pos.y += 40 + return target_pos + +#获取指定动画的第一帧texture +func get_first_frame_texture(animation_name): + var animation = animation_player.get_animation(animation_name) + + # 找到控制texture的轨道 + for track_idx in animation.get_track_count(): + if animation.track_get_type(track_idx) == Animation.TYPE_VALUE: + var path = animation.track_get_path(track_idx) + if "texture" in str(path): + var first_key_value = animation.track_get_key_value(track_idx, 0) + return first_key_value + + return null + +#获取指定动画的第一帧region_rect +func get_first_frame_region_rect(animation_name): + var animation = animation_player.get_animation(animation_name) + + # 找到控制region_rect的轨道 + for track_idx in animation.get_track_count(): + if animation.track_get_type(track_idx) == Animation.TYPE_VALUE: + var path = animation.track_get_path(track_idx) + if "region_rect" in str(path): + var first_key_value = animation.track_get_key_value(track_idx, 0) + return first_key_value + + return null + +func _on_aim_timer_timeout() -> void: + if is_aiming: + cancel_dash() diff --git a/Char/Player/Player_Components/player_dash_component.gd.uid b/Char/Player/Player_Components/player_dash_component.gd.uid new file mode 100644 index 0000000..f15e430 --- /dev/null +++ b/Char/Player/Player_Components/player_dash_component.gd.uid @@ -0,0 +1 @@ +uid://ck400w6y8evl0 diff --git a/Char/Player/Player_Components/player_dash_component.tscn b/Char/Player/Player_Components/player_dash_component.tscn new file mode 100644 index 0000000..86faac0 --- /dev/null +++ b/Char/Player/Player_Components/player_dash_component.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=5 format=3 uid="uid://b6sngy5ab6s24"] + +[ext_resource type="Script" uid="uid://ck400w6y8evl0" path="res://Char/Player/Player_Components/player_dash_component.gd" id="1_4k6pq"] +[ext_resource type="Texture2D" uid="uid://bjh8c02v7ilde" path="res://Char/Player/Player_Components/Art/Dash_arrow.png" id="2_0r5c1"] +[ext_resource type="Texture2D" uid="uid://dmvnl5ql7i8h4" path="res://Char/Player/Player_Components/Art/Dash_range.png" id="3_4n8a7"] +[ext_resource type="PackedScene" uid="uid://bob6s3frdj7j8" path="res://Char/Player/Player_Components/player_dash_clock.tscn" id="4_k2gph"] + +[node name="Player_Dash_Component" type="Node2D"] +script = ExtResource("1_4k6pq") + +[node name="Dash_Aim_RayCast2D" type="RayCast2D" parent="."] +collision_mask = 31981568 + +[node name="Dash_Hit_RayCast_1" type="RayCast2D" parent="."] +visible = false +collision_mask = 128 +hit_from_inside = true +collide_with_areas = true +collide_with_bodies = false + +[node name="Dash_Hit_RayCast_2" type="RayCast2D" parent="."] +visible = false +collision_mask = 128 +hit_from_inside = true +collide_with_areas = true +collide_with_bodies = false + +[node name="Dash_Hit_RayCast_3" type="RayCast2D" parent="."] +visible = false +collision_mask = 128 +hit_from_inside = true +collide_with_areas = true +collide_with_bodies = false + +[node name="DashArrow" type="Sprite2D" parent="."] +visible = false +texture = ExtResource("2_0r5c1") +offset = Vector2(15, 0) + +[node name="DashRange" type="Sprite2D" parent="."] +visible = false +modulate = Color(1, 1, 1, 0) +texture = ExtResource("3_4n8a7") + +[node name="Dash_Clock" parent="." instance=ExtResource("4_k2gph")] +position = Vector2(0, -50) diff --git a/Char/Player/Shadow/Art/attack.png b/Char/Player/Shadow/Art/attack.png new file mode 100644 index 0000000000000000000000000000000000000000..cdce0974584f5fe0220b0acac16b9753ae7b3214 GIT binary patch literal 26193 zcmdSB^;=Y3*!R6@2}MA{ARR(NN)(V1K{})x1Oz3dy9N;zK~g$JM7kN8p}PcWWRUJ| zhT&Or-S_kU1@8~<>v3GirHr%p+IyYrT<7|J&aWZrs&dy!?vOwbbX`GSMgxLy;Shuq zd5sYKMB?B#D+Dn?3Np{MJX1FR2G|*myYZg$-jCq;{%}<5y8_|!>&8KE?}yT`P{nI- zBoDR5a!NN*FE&;qxbVWC-H*1P(|6jShG^W9{o=!#sIzj(Z)80-Sw5J^m?Cnp;42Beau!|;Yl&?b zH}OgJgINCG|CM=XTz!>1OCuK@;Po7X#2|ha=Bi0Fs_$M9D>7fb12@c54PInB+SH8o z$CDC0+t@G;nvO#V^k#nf@(96C81gx1TU!>FV_yZ=!Eh?6%nyH$A=h8_&a{SKgKYvn zCB@6Xb%nzYO@GGg2p636*yq5-hnPmCllO%4yzeI31i=Cio(%eQMC(Sco(RhPjO2P8 z@_GNI8!=O48XSiyDy3Cxp(e8o>A;^UDUiE z8s7UABT4^B%A2A^Au&%jtCXkRoseZ;LkQeFQQhq|@A!c=WqbnqW%r`N=TjbO@H>&U zcDW)GZLfzu1|eNaqcFH&h!QjtQ`B#{B3fTrLGQq0-`Nza1MaxD{>q?2-ontP%!MA_ zLc>yaEeiFr(L?^IAYo!paT{%L>+@%sb{`15wRPqCzazg=w;u0}4ZGj7w`m`XlOG%G zu`o0o`|fl8h!^^vxw`1U=0pr02qk+BA~SkRP;xUUbqj+3a5>oQ&wQ_drlxu-O58V^ zt|*hGU4feuBgtg^H(9}`1v?m{x9x40sluX998@sME)o7wu~M7~su;L3nfK%rWwW{_ zEdn7^Ht%e!gf9>kzja;nZx6eB-xwY=kU3c_8JqJ*cwn^g%U|L)Wens&;5d&_g_<_I z?~0iI^1BpRIf#35mCG$2SWhMI7uDPw_KeB6JH}rUqN{%#+&$p-#uQ0bOpkFJAW*nC zfBnYmAbo;L-ix1>89cIhI@iLF3ieeQHJXR#BEy+YdRZFL?H^5d%Eup&ECqPf?5Q%n z4Sa{QL6U0U6ce~n_;af$eS~-x+`Oo`f#LpeUvpR7DNf>I@%^!|plWy^SE1@Y5mT|v zqu=J9?N%p;Z*@bZix{-aB`XcsO!FA681vc^bh&UBN^0@rpeas&c*Bm`t)z+mwEDnq z)nmNqWc^or<_~2Ei?V#w`sw;AnQ(@Ai0^IYeCsoLJNjlFd_dYkom zetjX9p-`zlm^vZ*+xqdKqyht+xyn{#2e|5Ln#9+%pie0NeBECiV(r`$3)L^JRL@kyLm8QiFsq7*IALeQ~(EJa!n(?U_t-3?ymyZL96Onrzci;4ivJmL&{FGFC)8X{ma}{Gc<*Xgi z^2(9FpYn=d1Z?dVr`C-q9~P>z2QKWyUuCTD5BAw31~ayc@U4{R5|FsSDH}_;7ZY!dtWIsj1{eYvDOn7Y94OIm5muF4F>;jiNlDWAfA zA1LBZkMp`r+0dnD(K0_a>3ogjNYi)8wcS>=ed^j=Y#c(j$j|pS(1d^+FDdPf%HGEa zc+Ira;lJ@zOw;z-2pA9%W}Y8vI=X+ciybDF;0=a(1fN%Qp(*loi2pX2DZ_sZT?1h$ z(h;xuGZ(gXP&Q2(&CEUVx?vAzwz|#?%=_|(@fb=lm znZwe0;a!!WQ_gMmV>(+(WU~!*>Qf zX8I}Houx&-URdG$~Gnakgv!3z42}R_vDo21ogIg9-_pD77w+;2l^K# z870E&qV%)goX?BA{gt?B)EOGvCCeLrIp5;``;*Zg=_#uIS>B&|;aqR6O-{3w>w3|W ziE#T)7I0qzNZ8Tt&c!Fjo^wBC3OT;(Tkw6UC)x`)D5Yn6)G+ z%->|!=hyj9T6U}0DP^>>^$XQkA?Mz^Q@04oRcp?*ao*v@RQb{{J8Q+k0>PdorJ27W z65Z!j$x7C^)~FuN`D^}vXSiW~mL{$<+5}xyZ!T&FS6*!f48+vL z8W%V5%iQWHxpB~+!p6}eo5RE?P3&Nyl7LfY-^+Pw_P|9QLh9!zC2a;lTF!>tY2)dp z;UDK|q6E*v1&1&5-j7P|&yTbHh;ZyanR6alCK@*v94;ibQ^={8iU{ofbcnmXz1b4} z=8u%-dOl-HygWvn8H6_Fp z?BbP|7zW?Sg!aj{!9+ZQ8z*MtvkwCQB6@`ZKxiB79{Z!Y3`cM7`PoKd2Na!;iie4vV2vU@N_Ur(IrPO-zmfZHT@_t6kouBZ!4IXSN@-` z+#M=%wv2SHy4cb!mDBF~<<{o0qkMJ}pA^!*OX49`#&G7_aKfXTF4tEii6k!cSDYHI zlQk*e_IHLTG7nG0MK7vx4tf7$CZ!0GJoA-%^yS~$reW7)bc<~jCf~>*eLZrEgIV7f zjc{Td1DnhQdTy$~M4Ra^qQrNaVPgj-z>CXIOSAmytfc_A=U~z5Mv~WuxGj-eDS7gc z8w$01c)82s)NSBu_>9L=|TO6S9pp|^PPziSL_5n0Ww*;HU=!JHSB7aS%AtXRe9 zjWV<^of!t!2jr>ML?glTu`%?Mt~4I(Za@j>s3#}wPRGfQCk!Y_#Ovbop3726DWDhM zk(7yw`9@+{*5?Mj}Z++;#cm+8B;$6CgfadU4SzPALiCKS?}CFW`WC5C%RrSl6)d(BF1{mO^4VQ3U=Dx@)4 ztpB!MU$M)wE2tIaVvG{rjI&G1r%WMM@)Gvx~=zDJ4UsXS)jI(F&w zlKjMw>Q4vo_-?UmFZnH@gS_n1zY$Y9ZnG3$Yr{X*_**jS$O={|N8guF+?&nCcpd#Z z*S>-svwXFGaQRB2bHhiAK5xyzLJ3oEU~Xv=hnKNbpmk=puj@s-g{d3hZu$*lqKOm!0pt${Q7t`Pl-RXiT_6zEf%tZa+&~(#VqTbp-sF9n z`4UapGWa3XAwN@E@jok)+B;~z-JQJILUE7KM zrs41yg>6U8A_2IHBVk#<1!lY~%>%{g@ZjR&$2n{i*)?RM+=g>1?Si+rD&l#qw`%L(dc5zNy}km5l5_>r5Fpn>ZHwqWJ`GXW+}?bze@PX+ zOOIK@4^K~M1NqqLp;w@j{?ER}8D;z+)oY)A{Ysfd`o@SO?rNofvBQ~0bSye~ansm0 z7yUA6TK$Iy4F{q2?R`?VOed3`3Oe_=aVuNC;dPgcTMTAeRC2f+AaA^O=%92(>zFre z4ssOOAM~p}jf~PEL&Y0i57{9Bxvt&W(Ms0U{5P-j?LECoz7jm3lD!kRJ()Gt+BAj0zx;RJMk4X`bD}q{Lw!_)JzmX;A{|FZMK}+w8XeMl^N|Ci zU)1wXa9t*6*WP?< zr}VWQ*%VA5kQ7U#lfU%Iwuq8GnJ$MeVxXDPM7 zt{bJqi~N!{Td6vuxMU!?EXz5y6d3Gw@8dv)J56GbdFL^bZL&>&e2U`xzf72Wu7PYVb+eDRuME&b(XYvF? z-6SovSIWLOclW~O#>ZPGh($F|)_~R#P0zI@U4HLVh_YK`(|euZ-s$X<)NYZel;?5< zw?P@9%H2EI4F|7|%IS*db)HGEmLZLjTG_&0x$2RAXQ6)0nCso317Fnwp}{z^o;6%6 zfj69oVj70N8?p*4BA@gs+GFw8{|Xl`yt0#!@7rfsqgMZI*qmtCd=SK&UFG<+j_;nD zB-=B#biB3hnw2?bYk~@==TAT^DKnBa@X_syN$tGcF-wf~hq1&>!&hUmU zGPpng)FvHSy9$HF6g?&=r+)=js~)v|`@eKmy(^VlVP9bIT9P+KH~PBuy-mQ3zdbxE zdd5BV{@>|0!4d^^CCY>iOJA0|2OM;%=P#k44WG+6<7+m-a5KpR=Xs4I_MNHMWF^HeCF@e!pDOF2G%l z$G0h~%uiUv`x+_+^p4K+C+DTimliu=k2#MrrbW?hN z{5Ael>D%up6VuPRq#}kLFG`;Z775Vg%m44*2E-HLd_7`@L^$i56=nQxcPH(gcR;{c zm+OkfcP0(DbCtFBu%^vm(@Io6(vjnynkRDx3l1ALq5fMu7RPuma}nPT99Bnlb2^{) zKOPXFN*(Bs=@moR<_ z-xt%t%~iMB2^+FLpIlX}2!Aflw+?D~XBDk5%vK!)g)BaCIX+mUOH(kC22mDYqqb3vq~Z;>rMV{(AVIYRIc#>ypp6R*JsZ7VMW>BxzhoEUFNtx|Bj8Me z!aD~=@pOv1Phui?AN9fJl1eOo)94~co$eDKJ|#}?;-dI-UbWNmByBqN$k)&`BN5#V zA4gWi8X~_{$vEGTJk4jsljnW^vsr@1zS}@+0r*!3ySd7`;NibudAb#XOS{Y&4l z`ILPvVArFM5Iwt?#5B|&5K&vQId#7kDbY^q{~=|kkfDEhpYvOoi~m8n*YBTOEwEgJ ztD|KU?`3k9Y;ITK9GJJHXcsiN=vY2CRkw)P)yxQ8C=ze&N=X-|ylV7t&=iz0+Go?% z-|t#oF-3iTgz)OfG}?V77;sQe6}k*71R|5B*MnY3__`{1(dWkwVBHTGOZ5eR2!HO? zXafH%c>k9tqYdX5d;jeX;{}-e{cf1*i9;(WY$tzkT5v-huc(RZfmnr1-$I2BN+xbo z(*bF3Zk?(GQ*X~Tac{SXaq<(`HcKew8(sI=yQfyteJN0$UUX1O{xsx+*H94YhW1iv zl<_~reb&hmDMH+w|HW=LQz@W-;)l5cSwHNd$U>6ICOFNewx&_7dvc}X-%wNIKg%~K zV3*0&!UTtX{J3daOx1)vQg zcR?O~JWF074Txbi>s4vt7$V64+FPGZ2FPcFZQSXdKUv<)vU>t~fQ#6YH4?gL& zp}FUY$nl*qGb+5NUIc6+=x8LEffPm(+F3ExmB!@b4kBgpi=^TwIv zS|Em6)RN%4Q+(FH#8ZqxCrW^w5~8KM_IHmw>Gr_djMNvjFR}k@Vr(%uHKDkt>b%Qi)0m6tT)Ys`0RQ{sbcfb}K|e-L$9u@iWR;rJ}{bTAx=TFN@pMu;HsO`F!-J zIkA}tBH-W%o13sZMdGLwJcNn*D=#+XeYw~;8n!WY)02RY%C%WF46&%0=c{p4 zu8lu>a(l>)g`PAt0_mFNcZ*q-ki@O|Bbx-TrO)3Ka4~E z+`sXBEH2dOgJplNbNtQlpvwD^pteA~?3YoOm>}1i?yGbCmU*rrzk>oYx_%Jr&h>i? z-nfK{Q~~Xgir0fb-S&|Zy`e}E1eE+cFUT1k^S)TQMdg`JIuLkF1BJwN=MF5|Wq<^$ ztq)}>&IU!^&8FRF@Z_qVg5hP{4*01I9pqvX@k-m6bbF5m!6SWc|{i%6> zQRi#cv>hKaf|6s;LjS;aZOJdWn8|r^4i%y3y!dfC;h1WCrfUCO8!yIN+{ii?C|Gxc zn_3EzGTlk~s;BWGwI^^_(^s#G_^NM z_&~OrMR_my4VyyGYBcJJ@_2rRHyZ>n%EWdsG*y(b!DYa&(GSFC2D01u(%3)5w&F*A z{`{H4G6ABbpr8mQqmlwdC^PaEt~~hkmVh!80zQ`hNX!I2ec8o_0|OtE-2R^{G5`Pc z%PxjLQ4scN<$#vNnm!1074_~DN~`}Kmg6Qk=wU;D9Guv>g8qB(*wjSy*Umu$E_khU z4*yGT9_;focXE=&8iK>Ef7+RN$J@1CmYXb@H)Dv$^Vg*-^sF@E|bZeg!DgkO~c2`h7^}!y#%E={#KkZobDt$u=u>~x(fO+Bg zVAq{)ANtkMS&OsuO(+-f9~i|wW#wmiaIgEPXr)NDWv zDr+AGsKCkf-K;!%v-X!-yx7>CJ9M=WFD^3+32S+#^_}|1uP<-21$-kWbXv7lR({Ygqpso`|s*>FH_!gRozHXA-0{F_* zI4_>ryR)fo7a)kY!q72N9hOcY`bO#e?1+dYIKL@pfpbUEmNC*^#LLdMSG0qk+Ab%T zi>nCMj0c~Ld17Qb%}{J-pL-@zj@~Y zI~m9q5Ik9>1tX~PY?V75qfd8lM6mii-r9(Nb-Z|eWuuUX;umFM><>9U?gWS?@I)X> zV^`Fq)z&F$C(&N!F~YtkTu+c~dk0^A0&y=!it{7PRg^eI+zYSjT*ty4eOXWW{A)LA z{=-9@!@Cvx;+w9RWPYfSQXcHY=+319hf5b`WP&NT+Td|0P^RPtoY=&zN6qKc|(kmVs z7_%8a*r)NpJeitRVO$cmO)Iro__&@TEY$FT(`*FDwGcccFcpGt2YoW4Wt?2iAGsY6 zO4VawW)~le4Rxkp;mO!CA1`~RYG{LuC)0dUG`jT|J$SW#?A*wjrzsGqc%i z7n$Y2jk)3PQTQ1e6<&S)XN~Hht~W(x~wzx zx-}6ui4m&$c-uCVHqQsA_k*o!o@j|>1^{;U#a)X|q<3$8_!eqkr#!C`zSQ+=T=B_v zRsES-*wg)6K+iZTuBK|pRo+=0i~Fo;ALZl--f^wyG=Ev%UA3800#LiJz&?Xn!A5~n z2a2ePOQ1Ww?H&{c&NdW zeS(oQoTW|#Sw#4DOf1YFM1&aa?Q`D(>F_19z9>fV+Z(W(T@|-n)zUk79}YkPdvq@v z{b`{?h7ZeEoqF=bH;u_e<@`Os7JpBk{Q0w# z5?1Vo(XCoA^zfakVSgpjohHT>BYc6=%}e}E_>Vnt?Vy%K{K^`Ji^;Ejc{&{M0uM~Vp7&>a;PAbL+@p1|M)0r@pc0VX?Ylg-Vos#O zJX+LJDr#MFE6b@rge$5<%gGgavRMv-@YVv4d+R)ZTG4f{gYA-a8-B=7?3@*vJ7gj9 z**OY!69Sxx2m(5(Lw*c7fRnh;J>kb&cHLOI_GA5o%tYxbzMFB05=5Iq0ZtP*IKl#T zC95}Kf#+vo`THcs1VirBC0`3ken>t^{@#v-Q6wq=`-5y{t&i7)&$nr(i|NsJlFEKy zkRJGRCx$qS3oc6hZD&K+k{}W-PpyvlcPPUhQ*!wF?NTjE%zAnvnwZ{azXn~EqAjHZ zjYwU8(*e=~@75s7kl@bOv3p<89?rHEz`)~;t z!v>G5y{@GFcBJ1f5(zv(j6KO`!xcD*j4PZ2C|^G`5^PVPfg@r^3@r**cAMPD^35Gy zC1H-DT|<^>n;*)MK@MTajf*-@S+=ECuCoys#kau+!r${imgSrSnatrQFM#Uvw12Is zCpiVMt8%jD1~wCcw{9-`vFy|sp9K(0!@B}@ozAOlm*a7MgkTlRDxi2rX>-pfDJ7eb zcknC`zCvJ&SCZ&v)Yi%IhJ*|y<7!56EN>_uiEFE0lUkkFafJ6)XQ#hOhV?&2YB zD0sWGjMYDBHt*mm2ep~($IU|#z2zEP(X+b^=ig(X*>%IMl&GcPZpO)pJbx1^{+GF) zJi@T$zRo^UsrodfC5kD0_0^EcxNF{jPiK0=9SWOiG1ljH_^Mr5iL`;xcEX6EJu(ad zb^N}Dun>XfHfW2#?HOzGL{04Holizf9vi=WaH^erNh#XEQ?L-DV0MPh7l){;h<+eZ z^q+UG**~r6YAt3d2O6s1EBRJ%f?^FQ)|&1+#&a3!JJAaVYZ9F1jT}GdN=!Ehtv@Xi4EtNd@pUQ zBA#juZL^%?#L_A-44oHobNlGR6v+z={o40lWqcrknhB>V-~y?i4{QY3Oain^;U~#$ z06i3ZK?o3Y2dcBfYr^G*oV6{(E^Guio=d5Hv4C|jlLLlO?Q#?|bKhZ-O_^z$0rA%ZGlc?b8DQmw_tM;e9-Mq*vW+}^= z-YdhsD9qF!_Cx{QF~1`mv=~?VQr9RkeWQ_1$HK;xIp8_Hiv}?cy#IMX2;i^-2bPp^ zGVlC%WitYjsVtnA)0GD_jzGg4p0c%xnnSY+*=Ae$&LtNYAM-MG0K(q1sbN>j!MgzT zv>6Sqfg>GJHd)BkxVVAYAt2u_&XIDD%BgWKc-;l`(C7 zA1Lygh^yTd)JDKW6g_R9pvixX4W#EN3c;2F-kJIRFXfC^TjYC9@eG8K zx#$M*Q@MeYeoO;kL1V!?VEhSBqNSP2RoEqqJ7v5g@-qul;LqjV>0vkQ_SirE`c-oO zj$4OlgAX%+9RHz_SJjA*LJBuJ7p$=bCDn9T!*EVMzB+l5x6(kdQ_v-#rdl=qA-`ELqAA=upPJ93Z$=CT{(1BxC_7{ihZw!D`?f z>c%hfm8kKsLSH?oSan{q=aQLmrWy z;MyKJPQZA6fkk0hrAYiCRk?Co$l^UPId zh4TPFIPBtzz*$R^61))%4kIDrX?O`by3|rJ+iF89XUou=cfBfYC|R|gsRGom;;wJR z_4miP@v^wxG)VJf2Y|MErMrd^(z+4M<|}|>3sC&r5{`fG0r<&`H5QFPg5d8Q=ZfX3$F8XvqugX)%80Sw=1pX?XsrSUBhW>5+`A5GV zq7a>x0^KJ$H>R%_RE2%DQt2So=)#~X{sBGI-RVk-lhkm=lb_wxrHP+N(nWf_(>9@x z^Q(b!HDJiz?a2oX>04^Lg&^s*DpYsKi+Qv9Baqfb`Je6s=8>BR?b4c<0}%n{jabkJOVxEC8GlAwD)A|3drj&2u7z_sKcwSlqRg5^ z-Bgj34=oFNO`lUKdrLn&?0a0?P1i+MF` zdpYi1v8#v$Z7`q;wg9-tJo}62?gGSv$$l^eDG2Hi$y{kt!~I|RgJtFBvpiXIS2)r| zY?MvD(GucL8$2S0vK{p;D(pcZD_Yz4y0sk7aRdDzMj;NYHUJI>*W4j){ioD@)+NKjRda~kSif|RC99)>Y;xbW6~lk=FHZLc?8 zxxi|k2&zl-#xeC@#2I&4^7CR1w8{@Oo7ZLRBaH$|w_z{NT=@M&O}DzhifT{eLuUTv zSoE6ljSl0tTK2elZ-(P-GhL_2J=r!#9vR7n0#L@ zZYr5=q1GW(LsT0wjjWWr>R+0_&*U>r+XeIY53mqGa~~hS$yUlX+^ja z#cAYB0D=mPT8l>rZhz6#CN?WoNVmFSjvzh*Fna+6@?6~)$2vL{GA_*KfJb|60&tGiDNJ=!R_^B`t@CG`7re?coU%j|&_)ykiRp4vPmk z1BWU9nm|nT;?!|v1JPgdoHaUp0jDmm-?YW^#Ae?W(#Hpb*O9vNyZB57b zR9lXIXmzJ&^V0QHrBAtkPqp{8=;JYwrED^fZfsZW$aWB`nm(%BGQaNk=zUt)5+@t| z?tYDy#iC6gsIt0e1((vaWLb%b6wrM*d*qB>OdDek08;LKU2(57SB{os@;TzNn|9Np zf3J#O6tbr((YxaEL5-O^Q5KOe$z$LxYOH2r1YAS-C6Re568UO(iwU*u*_<9&-)|@? zTTBX5K`iou=zjj4w)-tB@X(VmB>6^y*Q$dHI#VVC(^4Xu?ojIdU zyEnYsQ{Iu!Q9QHM3}56$<(ZbU5xVd9peQ+fa1-*U;?*2+~|<>`bLyq7SD0R1luc}S2ok;F_MO8r|&Nf71N+| zR{x(8{uccCxW)E!Muv`vam^t6)|SEb6TLqdKOWuA%H!X|BZ+wS_RD~q_C4)lMRtFG zOKx-JsC0uI^jjnNH@R+*V3H1$&OULv&R5dMf;*sRf23$WA~XXe4L>sVbP^O+gD^*m z`XaJ?LKFTsI;Ie`UaE0vSS>_Z&vc>g(h!l6&l^^Ct{%P^VKb6R)ud>=cMMP*E@?=D zRjP0BUW0EQ-~NsdXt_x31SH5L{A;(zg=qS(s82TcQtbG<)|LG7Wf=3)O9u-*cwPX} zQYklDvYd%h2JM8S;T@_71({q=?oJ?si@(k(>atDjZ0%ys8^o9f%;jzJcast!=?W}a zBL9^`nVH(QjCtHIg1mXpi>^bv!@V0d*LCmrXrC!XNH&K(4MPrdisF!Y3vpLHif&Dm z6=5?uU`UcW=X-NdnRpni6v?j_#zYm!#}9hYt{e*3r80dTr{nD;wEM^t@iOr>Yhom! zqG^j*i(U-RXXkuTMc`9 ziNkr>JZxt^x&nl5eQTwq2AC(AVa~7sQ4FLdMi|)A+3=C@Bd59y0ru)2opsU9{5xL_ zYyfAguuWEDq-}i`4&U!IE5-7qpD5|Sxp7y6$uTAXx2=8_(yaj51b`+N?Yx=k#>;6B zZ85?naX!LOO-H^gjb==0|Cbb)l?Lv^RvJD?_$$V0$F$P^?By8&eNb>cuM0I!(&i*2WedtMxvtym^J6#~S!t4@Gw)!`vlArnzIN_DjeYI}>MxDQTOzsu z0*-Z-$eZ0Zj|n_I$XW8lT=uci#8pPE3;y=|hN-IIfRoL|K@6Q&{y7QLoN*wreCxrW z_!fTU%!Y2X6axX(4eIb`YWH?qei~qANB1Q-?tfk^Ho$Cy-`W_DoG%+Q1$)xxFw;7chreUON?0GA^(f z%^VhzB%)t_pTK*wt2B!~N83quHUbpI$)4t;D|`%Pm*VQNV7(MoAHdgpfG$8CN^BNV z%8R8}dGu6G0%oRIM5Qgr27ldxk;K}Xbd;gqt}$9H$kKXSPvY53eq%=ec>Hv~h`bkb z2mEyLt1iy3(*Gr01y}&~@=XbDLI=tJCt(*ZEfC4H&&5CJzxfXid})61%)Fk0V)B2z zSi-70L-xSK^(;~&G^gR7~Nb9jSbCMpk=IW&giQ zsaKmXzxO%yIXE@*M<_NIcMSvM*Z&*@`2PHfJwk)}q4bTC*-q??bUcJBC08J_17Ga< zp!lpaKD?o-PGev}bQ>IG^h3VOj!>0{ix=}pILQS^x8p~q8M4NKBif1xSTba6+2C@) zfGCi4`~vlxdt-6BQZsSCER&RI7ily=$tfpS-|3J?*UH$U*69^ro0R;R0;YUldovD08 z&*7zVq3oq&;(k+JVWo1h8MF+Uz(oc;bh~ZGs5aYA0jYwsPzEsI0EVCz*k=43@A=)F zR{Wuq4-o_Xc<_-E+zgwbXq$MRGmFiaH52pwuu#(uhS+GY*EQoU0PFp)`zyd2__+pF zp0$DHRZ;sFmvDy45wrmjIW-ga_!2#X5_}Frxz#kE(fMdSsO9XM_@S|H=qWz~>T&F& zji0!_f8w+Mal`hYv|IHZ5z)_gR8ooX%65F#myKEbxJ{Gq!QCHp|Gs0J%`fMoQ>@FDL7v+w!c3VME6uSb334ZXNhxiX| zK-c@{(IWI7EV;k1JDT`2@)m+Hh4IF#{aS~_hl0w*ZCN7S6x@T{X zdrSC}&=W-vVHp=6WD!9lrxtES)rbma27gd|euCS>VhPL@VCG*Nzk!)5*{K3?CwlKB zbqBR>__gY4`ES#FxH$Z+n?4Ty96s}$3Bg9wx4T5v-R$TpmNfmYy7M1gb90hz z&Z`5n_W2Sa2X6_AR$xl3zw<+h-bW_MwEi&r-N~hX2g4FeNSfDJmT5uTU5OSQ-#det zU8nk!zT|<0WJaS({%r#?(k~ zG{0MK{@i>xtREZZpkLTx&to?V~ke z)UKlX=DlRD;{-gH67_6vnw}n83i;+c2myH4qyH?+F`CU6x%HSA1V$U^!Dc7^Rx=1X zm_%m%R)8nU{?*%0YyWGBa%2UY(LP7X)+4Up)avonQuJXzbR}KIF{z(Si6SQ@N(q+! z7K_~(div8lD?9KPi+Ji#68i z|9UsUIfT{D9MA{X{4I{$H_>&HZVd4?$CaZijDr&ZdxwA7Brqc1g0BGY^2jq zTvR*+9ezPr17821`a9uveTL+?iPeHWr6eKZO@6Q0Eh3Z=AAOHx7e0MNruUNqJ(aC`S#|+N7jpQS1Sbw1-Nc~ukyC< zgJpiuluxT#RKn_$X+LLLcP4vVR7}y5l*!QZ~9aCwFdFd3DPR; z#0{|W&du0SN@Y{#_~3))WD!q$5>uonfz)=*v0%V{L{af=kLH{@{F{#KfdJCMx*I*+Yso8jCKr}ynT|t0MO>s#Juv)xz<6bf$w8`ktv0>flzeiFG-KfC| z!nmSfIu(yt*9QDU4%@URked8Gg3hCeYZk(%fqRDlDyX)7 zt+Q|d8)O6jO#%Xi!h@>C0!Sf8&~+SxzphxyBjHLp;ncZBmzIXLIO#c!D?%lY z|MtQ;g!w+kYkhAAAy>3>(H`8EraS;74LrERrZ})W-FC2Ky@Z=<`*`0F{~s|ODj7(& znhD8gG$O>JIk!u@n-f4ttD=_D#5S@7UV}jYrMt`ztbNFunj0tAiHYoqv3^w6&UXji z=H>6mw&|b%d`OisYzyvqcJ?=QjWouU40lc22{Z!^EC|pgQQI;|sKPy{r`+EZ`y0)x z9efe*xIHN^)-B5{#dcN)EE<3&frEA3)4CLCQV3WsiZ*N$gO)sqj&?G_)U}}gMYUDP z$Z5RiOObp|Ew(bL6=8rF&W|H@d9R`z30r~WS#JI!S~3@l;m-M?35u_x{2X+l|6iDu)WH3sWAX0yGeIj~7(1LF@!GeIVaGMK`SR8x| z^{iXM65GI=)u-YMPA>3wqdfglEdBv2lot+;$I_;vCkdY)I6l4;4_P*s4XU!z#n#KiR9$#z&|*+gD%*(DdPr!q8P zTseDIZUG5&&w*j4*yhXsWrO>7r;FU2l3*|6XE*71-KUnyyWysbbC?HO@%eSn67g86Ej+B_ zK`Vxgoeq8jr=SUcCnwWejlVH4bzW(Ibd@CjTzJjDwcLVyeiiSig7nUb`y-$Q`ZL)U z0i;U_sMIN5*FB2+3K_FE2Mj#9iYUj`5cZK^BY}7oS?2!2hcz?opJh4#K`4zr03SffCWHg!l08> zKSiEWn7>4DBS%Q^Opulf9P@Sm!r;*}YgU?)%i50nH3bPv9^UlZq>gUV?&OW7jI9kP zIJ@cJaC~GVW9fS0Yp(6(OXF?NYIQL1=m1}eH*|Qo?LqlmM6pX57kCzX6mebpN3=|Y zPrt?fn^w?uvPGX+eR!v>IZt9K%* zs@*l|e1HStE@b&tB^vz|7K6=SAoH;@Y#4@O`;5v!;0{Q)DiijjRF9?l{Quu`6!#BoOr>098*b8W=Z+nr8zS|(vZ9- z--;8i;Rl-Er``4&ZYxV!Nu_*7ZjclJIbTYY0)IHB3=`QYq~8txWd?1ZKPQKNc>&l3 zgiX9E;mb@kKJ#4qlI*3++7yRLpO-52LWrNZDCtDFAv~#oxp88|VzNg6MD?0Q#0Q3h zeGzL)dDIrbKpop0V6TC}(L#~47;3=V zu-*gUkt)jKrLq6dhvHcqu{>z%bual7hEmGP>`zrQjwiGHL}JyAKMLQ0{7zvz@I^59 z+VS70@Lpdwb3e@8;Lt5c>oae_ED!&O$du&;Q2Laej`HwP`e1E5?UP}p*e3EpuTbG= z#kuW)hvQp3ueY~AEjO-BpdRoS`|o<}xl*obU!MUHik9fmKO0rXPYgASl2O1W8Ll=j5w#OK=dfW}7dgG^(%HG=sJ+IW5|WO&)~0LMcdNto3`3Cpqp zYwQRm09*1rUPv^w8onT!uuzMBCP?vZuLv~v7l@uyL8Lsqq=m#9xxc5I!&-NvkTr!o zX26A}Cw$8rv`aOjyYTcSc}qnY(p~KddRN43c<6+pAjN&6EVVk1=%(N;Js=pX;=fk^ zW;yVPL2_g2&g1U566GEUFS=|E#s>^U*o+2hhyAcRqfm0lOQr1|td&Qgf)->wEBnOm zvEptT4=d9O6TaTlJO?4`S&X^~x!JvsQH4uTmx(KA;1=F(aH!22k`kSTg(qAiEMBLQ z0w`w98iSN677$puTvC;qO?z{h~{vUXc5kiO*WoKk%M~ZXo zQCZpRSW%gWWILo1M~=OBDufde3CEt<%E~^@xv$gbd;fv^K?im?>hnApgmO|=cE_B)L(1_ za@gw2R~K^dW(WSO>P#Qutrp$9_?Z4<`^PRKDaCdm6!JkEWt@z3OJD%)`g z+R^Rz_S$>-Wy@3l@&XhtE7!GE<>*5Rr2(P4CNuTqOba+-`rC4Xb@7t)2^y1C{>b1B&0aQ`k@Od*;-0x@6FYbELJ45pET|(N46*TrzJDUyn;z% zi4LSG0UJ#9@78F=46eu7Z)B8-zfcxht)o=1)4FEq?{~Sv|K>N|CGY9<RsJ5n7~da#6GyCNTc~~;H@bV7;zj#3smSHp2MrHE#>HVrA$O;>yEG#w z&Z>cg{8pXJ`H4hstv_%MPSOK8J}^R0ZonOO9+|wJb44$>TAs{y?{>{^)(I+3v;c>| zugULJUb(UQlr8n}za)E44#gbFq6)xM_t$DZ216fy0T0u9yLI!j!EsrdMO3lGQM+xq z4WoE`R&Pcj>5lC(=T_?=WT!W|r{zGpVFK3V9plwhbv;^%z}heC)-Ve%NDJJP5Q5vJ zX1ld$v_&i`HeU6lezbnHyHGuqmk2F}ka%Kw|HcxIEWK3=>M6xh1%+pEA^A%vi=yVS&SLem|ql)vfl z%j8Uozl`7LUk5W$-*0lVlEL93MUW+cD$mT=3qCxWuKwbA()N^ikFW2;8od)$n>Cmr zHUT#hq3#ZL%LO$qHv@1IRvU{lR2e98tI4R2PVQl4pUGZ7#M zBC!E)%_=BAULX-fDJb8(aprq`iQ)v>*IH(i$vb_9HodjviFe8o=tP8nviJ4BB{YGj zp@3yI;U^O_*>Ry$-+ynw^wlC@0SR-_ zWav*4Cg{zY6$caRS~vVHY=-Y)&2+|}Khr8oP#_rAYkxybieg|aE#87i^}X0cNfTxv z$4cRY@+;saXT`|Ge0N+t!YM2EddcD%DTf1F*!VMbJGg}$Xvx6?G@v|Yi=M#fB(-0^ zhdPxzGY8S;TN%AN$c8i)W)4!>pUm{Za6IN}cg20Egi|uN*LW(jMc8oGQNzpcwu!J% zw|0cdE|F{^;n*7{mpZvkbOn}d4qSgaBv+Gn=Rj#GcK1EhRUGh!=3b(8pT4F*Qoxb6 zw^@ZTjC3j?&F1FKsI^PP5o4VgD4)oS%1OGq$sRb#$Z)P7C|xMvWW6U$QNOHhYi$a~ zP0wuu7(fDijM3W#jBy1?n48>4E!pip^M5^-qE96Y8>xA0q6)X-u&4gF53xbO(QBjM zG#lJEN|&qKnHzdaa#d;A=8AkU+7`mx3Ot16VXV-)mSkdnJ1)HhjX2Q(0Fstm9oYyh zO&Hdu)s$<`bt8_=qbtm2p5RwUDL~_dHXOUq@)6v2uNzozRFJ2cR?^xDTt5U#0BhDd zo)2LOTdO$zTP+hq&!3mKyym)2oUsvtI8P$vIIb^^n)MtyZoEK=?>qcRsqD;c=jv)2 z6zS36Np2X&(Z9^=Kl4?Ouz@x_l_GvuAxyD58sFRQ@~2OIe0*}?In!}y^*rGKl5*?l zLkjdMpf+et-xB}WVrGCrsUxuUnnDb;q)?Y|+GLyA#l!0PLn*A`_>%gfgxL#;ZsitT zEH$kyc%I~AD%B;Pik==DTO{L8f|{O6VS0hxCP5(V_OJB+(G#CE_8`(nS4p&ll0fl) zzZO`w(ArsA{O80mehnnc$-iw|0573#oc;fs9fwREoW+tu8A-KMIU7RG_TRbPo>^Pq zi+O=A7}js4s9e90_=~sBbd4l<%3BE#R+wexMKy_QJ5g^{=aa9csxF|5hS(yi-;^`M z&fcC_2n%x93%pKJawZEfoX#gx2#ISpvv`%W35Z;D{CGTk4>+p_NCJ_>x+Ifrim?B< z2}#ccRgEr3Fq*+W2xRv+5f4$V+lLkm!N$z>7kNV+1uyX$)5f%}naZEdqr4B?`{{Rq ze|GsKfs#SamkdI+a35?;w`Oqt0+#gI1L;xS)e0PtvZ7=G4?!tN5vwa;M*o$kD7T-j&}e`zO5OYWQ3D7%14t~0 zu9N42X6{+*HIhm)ZXnMJBk}#~6@Y+%-4_LUZV-r-)yUk+ufEWh^$Ssvd zb2-L6<6})W|0ICIk_z$kKw;ImDxwMBZ9U71f4|vPPaeNAHst`;UHlTq$$k5Twhg z0FuBTWPI4!61k`OF5u~&g=$B*OQad>&h{GT>!q{-tqaG$&Lbo zXtFTSGY|A)of~!b7Nbs(EHDI$sgrxL_lD3Ndam{}cPD4gh9S(|A4`)ZU4=K2>x~Lp zLIJ6ew4r2lS|xy7N}+a))9v#l6Qg5VMUK?b9@j0D)z#~ho_NeU=$kvks9v>J`y#t%jue&Wf71aU>dot=r32e6& z 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Shadow/Art/roll.png.import b/Char/Player/Shadow/Art/roll.png.import new file mode 100644 index 0000000..11d7478 --- /dev/null +++ b/Char/Player/Shadow/Art/roll.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csiepgsoqspfg" +path="res://.godot/imported/roll.png-72d07e6382d1e915b6f61aa7d9aaad66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Shadow/Art/roll.png" +dest_files=["res://.godot/imported/roll.png-72d07e6382d1e915b6f61aa7d9aaad66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Shadow/Art/run.png b/Char/Player/Shadow/Art/run.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3bdc2beaae69bdb188d950efdd24b928e27102 GIT binary patch literal 15151 zcmdtJWl)uG`0x8Hx&-N#knWHY5GjcTf=G9Rgp_m&C@CNvN`sU%NQV*<(%mV!=#)A) zzyItxb6%dA{buhMz|3OZ@!WC6=lVWjsxRdpU{PQ}5cEJnUPcXqU`ybK0|O0wLV0Vf z3qiDyf{diP#}~v`2RkZ_)IA!)r?{!pYgmF)EjHaBKW}gu6Dpf72bg@9PqQnLx7BF~ z7(&CWkc@l&OzFvEG~UGI&z1N>x@gaMgfZ|;WuN5Wh*loaZ7XT_RK_wLMiI^%BfED8 z*2NhT#I37j%hM$fol9SSf9ATa?piZHuQ7gl&A{&F>gt}i_-z09R%CbB@)sg^HPXXQKS#ik_*k+$6YHPzr&yxj)_WlJY}y?brFPlf;1a6x}_2hs7T zFRd^J{Kw|S3ThqI{im6#gi;uVC}CWZ@H6&Et8dF1;hKY|qJ!9pnV59B4Y?G0`cZDT z|4@yLsPiAqQ_YBKrF5RSUU`Y~rhnM+Y*3B6h_SI_ji(66y&b0JZzVkJVyK3O7HTQ% zx0ojDU)8u9U>$%_vE!(BhQwXGhUsyjML(B{_bZe}YM(eiv@E>zhP*^f%G#;MCE;H@ zrt!+{l0k=?Q99|;l-<}BX?t-lmm>Xtxl9Dzd!8|!Y5G2Yz%B65m9%0B9@-G_Ea=VwIpd+ z-kNSEeMj-9-BuG4a)19;D3I^Js&qFv3t&VhX|Q_foz5Qgn%G1#oAs26d}{f6K%(JS7XLlu1U?7X{Bf66kmm-0L*(u7CK&ck6hp?DLXcXOZQ{F2_(n z7W-?6rQ=n;I?s(mpI)DzvPQ57COd;nZs)5VT#6w@3TSA!2xq~xtPU*+zGTD~|Go&_ zD0Y4umKc>vUh#z7fT4|`scZj?JFOz`7vjr!i8Xxm>6O5n{mrbI2GN}o^F5tu)J*d4 z$m|fbq2foqDWE4*0$H+or9?0dlb1W1zkMXFl~0xOwx02m8ht;G$5uhgcg(myog!(* zZbTCA4v9}}Ce*6v37#?O6`Q#X_Hu~{9B7@Hfxhg+iq9Iuy_&WV=RE#5QpoTj4cY>X z2+67kTA%BENCKumCuPTDybef;N;*FMMWhdd?~s3XJaGB_+zF>Rs=lNIL-w0~7Mv*} zH~ymb$M-Jq4AgF#s9L*w%s*c}Tx#HwbRYb3M)dkM3F8ZmoC4bFx7zRPAK+zz@rqi$ zJ;98^nYz_*r;QV}rODXUM)y#%779Bu?|z!dBAu^(U_oF+C$A}!9h7llNm+_ij%3|7 zo1gz&cm2Aj4B_;Nf;pQF9IM`^#_tBd7;X|1@mk10RQL(114{3nORL_BN7^+PdcL&6A##TS8-~yL!Kr!@A`mc)O*>GA#~!#JFKf@ zQ8hDmYB+TC9?u}9^2#${yh+Q7Kka~`=_#Lw!f8sYUsjg)-)gwN>q$3%(%?T!Ia8}k zgB!YKf?NdcOPxRAO7Z^|9H~O0dlvLk)mo-YNYftaM1&z`cWGMJ3rt=mk(Y;0F3pdu zed&L!bEKw7apcz@SS;rxSIo6|T>B(XpU@?lx)Z&O91*yHHx}liDbt^9=L@DNadQ(_ zhu(%R;W>NyCH*t<*}mzHT1!*n*mns1GUjxox~-kkUM5)ij4*AdDuaEPpS~tbeL{~d z?$m7bv26vWEuyti4%d-N4rPAtU-Dd4CAM_^2gSdNwqg!m9hG@(EqsU0*5+7d(`K97 z)}5QFdlc7rz2CS{FJ>LM1hsA7&BK+Tb7(+NU)EvyiqR-3NQgq-Ew`5VooE52(cZoQMT24slm-L&qV%s+5BPyWaJT>P z=Z?JEyYTWqAxdQRzp{{}Y8`Gj$L3ys^7VXlQ34aH6Rdl5am?a)4()k%dd>Bfg~%GH z{H&Cj5`n>g3+lUumGxfbe53LQ`zr-z5NQ#;+$xdQNy&aYL)Vq-h7x8v&L~eH(0Ax< z=sEW&_o?_}^j#WpQTiHLFN9y5W90*_2%XP-14drE%5$Q13r?jN_2#ltM9dou_$lUv zIoy&+CA}XMeDW9&AJ|%6X)hX0BH?J$mtY+ZC9ozPoRPHb3zNJ%cxkt&IUm8y^|#E( znyi8E128BrUa3cO3$)QMe+FjtLPInVMTT4aEPrRJ<`?&>xBsKg^SwuHwGy{T=S@e# zrPO{Y(+HYsRr$ z>hbLsOx3;pk^RK!_~?~cC_6^U4N;e|^Mm+Q8`HBXW{A;&|mMSZHTIRwl(LyhfI$`XeiJ;xC zMeX4+ug-vv)2;#D2Sq6LyvT)A+W{k;WGpijj+Szg_k$;Sd76I~E~a{^9>Vdy%F)&j zmnW2a=_|29Vd@GcwNmpEc%G>TKcI+Bq_)0qcNqeIyGvTnua|M4;!YyjD<-J`2jH_+ z(F;j~wyF(A>aGtr>c%(peGia`7Rz}>?8o=u56Y8oCP;3oUJBF_HL+3sB;8^Xy%OgW zioUZ!;_|;1d2#G1HvD6v_WRW27&Fr{otZXupUuPX^ewuKE|(>?836_1+%W+J?^F*p zUco8uf=yG7UM$X+#(uOhUwFXkqYe|CHlVI9%F%?!^SzONP@XLo8W(I7fSUaE$og6I z^k7MB&36ClQf6G}l(sGw#3RQ4;VZQP?rf@EvnPkyteWAsczd0|QaYxbt#0aQ_Vp5A zbpk3+VuPK)I2W7;*@refL9mvBmQ!F$+3 zc-uyT*xT@pG5ce(Ly~d?eeuvn-`J)1)Y-|Wy+D6Gfvqiw*g>E?bCHmHkiV*EfbGbt zZsslf3LM3TZa!#kgS5ExJ+edvDXgYkOBYot@f3b%p2R%-eLODM1up#;V#3pjc zJz7Sf&fTP3R(6~nQH`!O7ep<~V3l*#0-quE`4fpDzxiqVCUc8XZknSJMO(7>wTV^kbVfQoH> zT_63Mw%mB{FJhC#tc+d%;g1=)Wh>piK>>Cyfx0>TfpQ9gj#v%LtA8R^ZPbpi0VVki zkw(uf-wsTzc47Bt(E{IJ(iC7h3-mS8w}8m-YRbcHhQx^Y^>b>WLsV1xwubWUK$hre zi)a|cR5`I?%bN=KA&o-lhbE6p7ANtHpU0lFGXBmhO+t~LI1a<;tDqgER{Hk6M@Tou z0;@d0n6XGV{%^M8cX&LLl09mflC_5=7UArV&U_+r!R>}wm&*t!K;X>|u4xhN&NQ!T z3rnB(mIep@;^A(!Z)vE5k;AuD51YZ`WSSYhqr1F4WP>fG7J^`=w)N2Ih$}->$Q&1e z4n5ClJ!s? zoEJ-ERk~gh>}J9?jj#RY7db~+hFoqr4TCJldLAwGMW_#tQ&$~0?TMAnU6hV>zY+aP681A4(fGc*#kuf8RV6p-?XG*|{$*D4^E=IMk43RW7)g;1 znTWBL!~%`@2Vfp*eRBleq^B|Au47NTRg|9IPE;8YvnpIz3|EqPBryF1zLZL*?8&W_ zOHz4N4tA^Gy26!MTlnpo*WlM5l?62O(|^gTjeP&Hg2xz$BKzRbT0a#N{I$HdqWGn% zm6h}E5%t!VK?ImVS0b|NoTI<#m7q#v=^N$QGY*T%ToLP=D(>}QS4CfRs4uaIAMML~ z65|ECPHqS}JWsx&k*khLkNHo_`clF&+Re)gUs7|l6Aw2EQPGBj-+E;x^xkMYd?BAU z;FJog$oBP2trclgU&|F`NAu81PSCHJj9}Ql^mXW219p1^(3E%AGoQ6Z#18(j#%Js8 zVhbUYr{{&fVq4-ymnDj)QR;#5B~ADD^!~oS_mYBq5MFyekBm4Qd#opOMc33A726hJ zN&j%61@h8D32UPe%~+~G8x@{AZ+FhJus8GMCA$s|gVD9tSG4{>O9Wzs+iH&&&nafG z%hFya5*XDd7R>NhH)pyIKY1_*4)ftkixy&6C@JGtl$GK0ze9c}c)R6;vlmHmwFPXx zy4{%x1=D@THfSX+QJE3F^~avwNhR@{OmxU-Y;lZ*g6JjkQ+=NBn0!lFuNrAiSr|`v zS&~7{Q^%Ze))=;P(MnO-OZG3DK?Hs2{RDeC_S;knNic*mnsyp7wuP# zPS+i|W`cGgd{ctXS_Zt>m*=zmQJ`+8`O+~>mz#Z{$2w;7?War`2damw$rF}!(! z7nNJ^`ZEwJ6TI$DUfp2O%w+btw?aD$4&3~S6Du*>s0H7tPRNK z5gc`#^X3tyQK98Z$*6NX&5WuMY4(r3MWtLXffp=Q$Yng%Nb%hu6!W?i*9w#7e1nlb zo6hQiioR~%s=zAAjjHq3Jk^m|BS!T0(j8jDs00a*8OX%BlvCYgW~PTf^b3(v*PixH ztO|ziBmgJd?ttU{{f>AnmcgF#!F`5r8)DRDphAkw{Q9pbNYcrv;I6NIT*36H=1$H* zk3~TQmY7c~L5No$tB(JgKg>;T0j4y z;L20up}zbD*z1qFAIn0PLG;*aVzoFmWJg2vLq&Ri^%!(^L;QP^y=?k_hGs8*PNS$mLPzXO7 zV(tza zLtqd(OzhuYhTTSqLl?KG$>+_SGi=#ln6RC#DR?BX&zx%BO4+PCN9=Shf$A+QOfAp9 zV)CdGnS}ZD^%$RiYEnR8J`I&A8GrA&zvM;L@sofd0|w9j)U&L}SR8LK9vK=Ol4N}r zNd@)(R=?>G8u-aR_7y^24=bHi%U3)PP*|^!CF_ioBQ-+PIQ%)d+)}r%VQjMcmA0dT zK?m<5%t7SrfY_-+&*MWwN^lKXQwM2)+3_dEHU;f*X->VX>8eL)cH(Bvbp&Ge(^q=l ztf>vBB{bFUh{E8DUJpNDh|gYz98o-9NAxOaDC8^Cc`T!`*#O5eH{@yN+`O z@6RIf*2C`u4QjhjH;%}Vt*ngr%op-2)+CVIHT$svJJj}K%k)JQ$pq}ta6oF@+~&ycSvkI#n=ES^FKmXaze+<1@ItJ+DP;!$s_7 z4pza|3pUA3nyF=vz1zj>BKk=Z*JM~+L(sH?7=Gg)qt>C!mv!{Ro$<|H^P1&UGb75S zlv`tu`vVkqS!-V7hCSjlv9eosXf`J|*Lp(0Nh112(ayes_>GYR^Sur5s_{2P)pqM= zdwV-5Znmn_%&k?x-1L^eKw9(#<$M&Jl`>668>QJFa%KM+MrW`**@)CC`>AH4(+!KwMH0o)0&2q_`w2;Bao%J>S3HU0FYu%25`(zI z546w7sJ(wD^D$;RGr|d;Q5mhrS;Nj|wxby1JtRfDki}n{_QW!L?HC9|D@hs38z@vi z>(dz;|F!e1jV*E@2OXZsfE8RQmxaLt2s8nzhlDY}&IUg@Fmf`mYHR(SI#aSlYl>|_WfoH#9B2e^IWGkjk@i7JNxnDfl`J%?2OPz zQid$x*DGwk0%b>@$w%|~p#M)B3T~7gwc8>kZ)FH88XrAL!b*NKx@ktR=)8-Ca@=Wx z<+!3aB-ue)-m58H&$`(C<4GP>cU1qM*?pL5=&z2xF4HuS(*SSnW+BZq22-|?E9`L! zm>n=xaq2KE5VW`y@tS(CF_D6ivfE%~L0ZdUbkLar(_RRF%$|mrgk|qU5GKITiH-2p zAVB0~0l&I(h&$+YIa$q9%*u5}srmlD*fuAM3E=hV?c+nl>?}D3#Sy8~sXWuV-*vY@ zq2UtkPqpnk9*wHNsMnc3M*Rfu9%z?bAeDoH2|BlGuE9_e zAt-ghFFL3JEq=8+y8n+T5(k>ruxSM>!LTCRU{#uxhO>6QsW^i zk^zmhBlDiL-<1-aL`bqluol1KO?Yx&KA7Ui0KFQ&{e`?s^8%`|L4|IL_sXdS5EOVM zk6Wa^_&U*}01$S7blc1j_gT4HSE!^sn%lyc4fA7_)f8%*y;+<=5{3S7?YN|6vGLI>R0syV^E%o&*Pj z1*whn8S%XSJty{Yfh$ok>FAO9RzXHuRMOMTt&-x9RLq@Fd$K3p5o$NS z714`|AG{9lyJ=(n`Lrlbvnm%H9%B>n6qf)H!to?d-SnPPAO{qN&UcD|Bl7; zNlHFT3n_-B+V>6kA-D(%@ea}?QEp}or{m5rd}E2AVspw;3ZZ3TfXgy&Zx!Z{mx3~y z5MG8LCAe}IN7m~l4M&mY)bjFO_(xE+@betr@^%jGo%pK(CF|~Fiy1R+L0fdpVDthAzs8zIM)i9mO40r0jrog=C`) zicO$mQ5#uvkn`01^c*0>sF6u{baR+D`lP6#3VmH^l;)CAhNBpXM$RPr@g(Hxe5#kt4@yh^fJ2qzx1N}(S$qH6$lv#p=t+s2DF|`rIo(-LLBt9 zWyrm6L@!4~BSQgrT@pCz^p6uHYrfqkC;4gwPMw17`~(O*l^o8?uj+}kX>T`Sm6`uc z$MZ+tvdE6PiNKZ6c0Z)z7b6?^xw*YFd6LoXyE9tn;5#D}I|4V58jDQ-&xXg?d<+BY z4F1uuJDC9WarZGLFw37}X@4;we*$dki_{`=zWftSTBx8!n{-h*y5vLnUIe)1awB-m zY{+L)pGw@_wATwkGC?&z<&eRjI=Gs#w5O4b;}0U-Mlk}}9A?bcT?Mq0rNAn~)1cX1 zOwFgJT7=b3h(kS1ZOq1z{PE5~KQ{W7l?aDFgRou%h6YW^tlD|!D~4et4kHNPK;pVX z3x~6-70{Vg-PZ(<8Xgw6CpccN4muSN+9sntp?3Ay%PF=2~VmlJOjnP;12(il7kM_-)ulBWO3d+LILwS=-E&9$P z99aZulQ?Rb+-1w-iNk3k!_>@3Jex@7o5fAOa|nIS?#GLW^RP+e$EB(Nork&V_? z9)c*g@3jEEEyC3VCqd_=qzYQEBb7fV(i8={eH(xb75Oz6k`s!N&8j)f z5+Pi9xT8t5z)RP;U08H4z7q5i2$M={4>oeldn{zfb3>DTcBe>?f4DWSrg}*~AAB_e zbu|s<8T_(fU19I|^HIRy;}cLk{Z)T0`voA2L&7*=_l4%#GXN+MG_E450%dSCSCB{S z@bb3MG+ZD}JpE;3&nQJfv6marUgY7dpT<535&xGEPAEb`wR)3R{BsuRA`6Hf&sW(<; z&1(M0^J)U1;==B5zw=D$v(1mlz?S?eS7BSX1%`zJ$@q+Dz!Jj{$vCd$YK$FIJEteB z4Hyws|K&y%8|m{FHzTueA`TAv<10=|Zf}PM1w|JI9sXFW6vUu-5gu!1dPO@{5iw8Gq4~C9pkrea2n(Kt#q|?$|R2BMqsjU_ksZC!bW8C4LcW?30=E zrsO>$z4hhr?suE8S=9QJ-&q*3l>a}Fx0|;u<)$cmmfx9H(;xxzXm&5<6-Ms=u9X5Un^%7N;K` zZ_f^C+QJ-X)H^1}=qZ%G`69En?!b@8CiLV3>W{RyT}Ig{*bLjNwDMkcE!4E1-cxD4 zDdjT6sW0Wl>?5CN{>VS_5|@uJDV+_i-J+VHoeNpDB9@&3{F)OK4Up2!njp6|^qWkI zI4e~$OLm-t>qh-i`3MqRX6^#Kkov}h7#_?_jr%-UOWX~B!r@x_6+?LRJG~_5DYY&6 zhEIK%rA;$0*qFX;5gTJh*yC^Q7e>u9M4L2!K)GNRmXz@{+n0_~jPsg1)h~QPVfO~h zhtW(+C+=-m^q!r|l-ez7$U9M{%LhNJC0@}vj};YxqM?qd*Z^MSN{Y1x%dV| zI1+VTpG*(4$EeLp1ys=sfD&9n)=KUyUVyDa@mu)id0k@e2ZKP|8g!24N3UB|FuW#l zM6@KB1~uRVUbXDqP$uX68jEysvf%E4ZboADZ_mQb#Si*^xT5KvuoUU5VTtlz&m2~b zUXuJEP*;Ty7@pa~g~*eVJ*S5p7OevWal^GPU)c-Dr?unZBR~nUi+1}RC=l=pST6wX zXw<6KWK?oOFbN!m^R#mEfbX`K#LOgRoO0jS3>UCJ`&2j;iyde7wHU?XOZN~Gl;;l) zKKpYUN&^5qupwTY#gtZw-V{*Cod(QG!E^}CKaM(ZBP3n>18;?l{}k8(7>Hf*=6&lM zCMNW)5&T0`a*OX91i~lG=dXfgt3#@88_PP{+ni(+|Ex|M)V8Jm`vq!T zk6$>bl~fetI9#k{uX00HFJvf`&TgjJRWSJo;iQL6MGo7enR_=VG3*=_O0Q~9&yD~sKjm@KE!JU63nNgcL*D%uKF$ZXx&zcPUO3|fKP`_iBKgA&B zf39w#Y1I!qc%oT&j*pKPo-*35?C&5k@U`@(G^t6&IUwZB&YPx1D*ebySfy*8)wZWY z-7P3{Hg4O*#^L~;?k*~~$1Uh;mq^gn$kN0?ySbPw{}!VSy%+pmGP?7^cR8$e;^#+2 zaWYS`y}9*2U0^9yt5OGsmYIpCny}&&J}^uvR~NgMQ7?1cY)^O-Mp($TjjR2fH&bw$ zv>b`^b!VVP zr8iBuPsa?P-e>!jXad`l`uiMi18w&_JnDE)c=#8INgG{h(M7F<4|C9JGVM-1YD%P5 z6vpJ}b=nY$uskap8`0OcuX!p=pS#wocQ}hmg_II-#rYGLwB6*wD-~sD9u%10tP_IteqC9#4EXGt5+AZ{6+jS)`gqMWw7GCutG+p@gzF+h%mB&|vv$3hB?5NL3RweWtv`7cm#lyOrfnc`xCt5)$Wj&V7Rrs>dtg z37Ve`^>te0scEf*YT{%vop|_0QZU0O|9ov^gU7qqgrT!A%tEN-Sts`4=aDO4P#-*K zz*iy2g0w>Wvu=R$^WLy{yEwW2@@VBq8AB7dMyf-YQ;}aSqd^=-FQ|P-AGGgBxhn)A zHKBB5^(B?~8>91uoJo@!Nnt1u6dCDn&+l!M4+NId=2IK4k>$8b$rJF{3-z>=rKs+q z>pOTP=t4Vva)+PLm_&KmqVcMYPKND)?V4_tJH^!qYo>7o7AYGw+@ZRH-sNRX#N*gk zpRC*ygyVu0^cs5Tes*A@)+ws`AO`7MQ7Dec2|h^$!o)TEY$7A-`A8iwODd7(p=P*Up`B6}!AoL&!`-F0(O4{gzEJ#^ztHSz9XIt&Mfc&kyzW$mD0hdRzw#IPKejPxpG_ArVVRiQm7-@0##_~MYb>R&F zm!PSaU!tCh$#^jTM_a94QX;dpVP(I=*F@&PY_fhWwM~fSh%(fvMQjL7-C9(^Jz#L3 z(^Y^rx5}mO6FSuoT6sXFS?rrRt6k<;&~2^qUz6V#rhRNYB*^i0ZSuWgmFq7o;vthxA|I?kqnde^A!uEc!TGw)Y`RVUB_d2WwWG5H{9?_sl4w%a|BaXmwzg>WZ6 z^%$Mq=QS(hlkC*m#e$|k7XQ|NhTS&Jj*E3aKAwqXTiARkP%ahuK5yfw%a5#c{T1Gp z!ly$KL2P6KG`v7cYl4&8WIbPw7u>TnR0r2_c~-#<-A9~C-<*tQF6YkWR7CigFVn=AX6VF?1%~d6GP%)Z^x5o#^$xxi zcTQ|H7tJg!!7+-UwuRRJvlyTwvnLKB+eUYG{Ls==D^+I^&75UKDaPS_X0r}gqdZ{? zTI}FxBiID_fu?cILU_^J@wf1TY;;{DcBpo zc{!mmLe;=0yFo?3ba+~M2&9YtQd`ejL(AifSnsD06WU0Zuo{obDxMYvn1N1J{8J#z zp21C-CHyD{Ox#0;OoEgCb6{5Pi6od88Wh#9_5CeR8-1?d(oH~dXgt*ifcK0J6O<+y zT8?~b`U}Ik+bC;8Wb0S3A*0-{LJ$C86(Bv2Tt(b02bQd1!1#=DcUUN@!`W#vWq}&A_+{}+pvGSSl8oV6 z)$pb({(qBRGQ>u0jm?m%IVN3A&K~NNtxmY`@-i>Gv<+Nn`PVFVEk;^pF3|Hm-6Z1$ zGFb3Qo0W+Xu>5s}-Y}9TuU4QN)FX5N#rU?~kBsm{KBi6~KcFmea+lkxnZ_x_psQix zMZ$p!#Rtv&tjliBrLie(^{=Ka=PF%)tj^8-Yz5-NA$MIQ#fXY@*U|b(w2Cc|iQR)p zSlg>0_tKHt^LKmXA^{-QUaNM^2DPf6 zK*BTInii}>_W#Z5zewt#o($^O6qYQDW5JDwXSWDU+Qg1iBuT){0Ybj}rm64vC#v&p zSAI`e;I4vPQWUubPy&6?>&jIs@6`{Vk;w*M-dE4|ZHp$qV{<`YL^Haz`riIbpj^~A zY9(MV!Z+`+jk1Womvjw^H})ORh4|HyYg_XcAW+}1CmW{yH<(N|3Ma10!E7HX%V5ek z3O%fQe3X_k{~>3_%<$?OiDjY5pgvt-%ks(z^O1TxYCyEhhSPeNyKs7I-KK3RDH}By zr3pwBPEJZYyB0!_B(#di-7@^q+@QbAUvMfh=*H>a!JhpmsvMZ^YM|YTC$LTcQH_e+ zJV^8jS^k6ie2Ezv%j5X%H#Ywz$2K%7*-QT_#%S4r9|Q75WN0>h`z!;{S4~z}0*V$W z1N;O+$4*cMmjZPjEjO8MHtlVV1-SyrC#E$srJa?$@=rY#a-J6E=Bj%-rA$N7ZC2;tZm- z^}Q!eSOw;2O;h?sl&0q)(buA2Z$6zFjHY&JW%z}&3$^@GMAHc#qc+(?r7le4y|9pt z>hGW(0s_F9?BX+25Jt>W+Jlp5Z&k7v%K%iEm8jYXSVYy{t1~nbUJ*aj*r+LF);lYp z+%)#he+mEywYHrrOakC5lgAptu&FbkU$PkV(nP$)!XPupkLB>-|A?xH_{H9uF{Wavx-t{TMY2G(h)POA??c56PB%=3nHR~Xci11lElnv@l&&1pH`P7o%>&!MA#K8a1q3drJ^bO9lk~g)n|D8$(HSs0I`{Ip~-Qq{N#hbX* zI$=Lo=LF1Vs-ngCuLHtlUTAYb3UTFs%)aaK7j^gUPZ`u^5ki}1y$lqqbvs+lQ8?P2 zV-6%^ExZT?`AQSKIw|=s=X=c$$^ppzkBIa}`AFlSi|@otmNGud1!sZ|l6SreCW`>paou7&x|>knhV0_i{Vv0I$`XEPyec2_KiOh0Vr4<{}3q z=h$AXl#Y-rZ(^qW*?}f}*ibU5@CSF9qkoj4s7+z_jav=h=^1NVFav2~W>SFBR-O99HggNng7u0;G_6}~m8+T!yn8OOS*V0#Y~wagMW60NoPW+2de5rw3J@=7r*=8Yb*!XLYd3@ zk>3br3+~MV0~)&AmasgCTh<2z%z&JMH($ff~_$QsD8`-gan2kL%g3Xb8a zXWhjvAd>6^DkgWPaEH?vgI_BLmqqR}^uaN@4;yi&3|F!fqJzTAVnnL_hx<(Bn@mWQ zFv5^32#hu4gA${aSJ)Xh4|lmnU&|x$gz5Z;Sb-KKT&%6`NVIuH!p2QZZ= z56Tn2dHUXKgHZj9Fz6EK1=J)}cjZxfJxaRcVmuQcW zN~~HV5R2O{6CZNlr>7GU_xAN40#`PZ^(S!m58uE96Vj8AWRpGU79U);^mK@iHh%=~ zF%rn=2Efj7{sPUA@uGzsCn1`zxNk_lbB0Rn`#0G}|D$VN`pX#{6aMgW7Js{054u=y zG3ge0HD{IFLD*V^-I)~gFX$YZ>wTeJ$%1Vnk`i0k^$i9>*l`;B&1^~Y2L&0 z-2dRcU+#ygbLO10*V=op_^lQ5N>dsC3Dpx22!yYy0?`J6P?CY~{n(hmdoNkT8VCdi zsY2v*{BjTST%1id>yI9IK4vYxPn}Rta1px5(sT8(&)sJIfX81>wv$T2Nzdq|BNk1~ zJgA|F8U%K6i`CYDHHB3&CLUp2B8D9Yuh0r~aNvFcxzOOex@J}Qk(kD0sj%QQ=9fxb zt;((uOWKt@a>r*DI34nL?)0y;V4&^2%)sF9Ptv^p(;?HL-_Ki}!-(Xu86y5S-|`() zSkp4@@gtJSh#Z|YSS!sPznmR`p--x{zElh2fIQpH;V$;ihc~M$bm&dEzUnnF%Uty5x9d#kfYZ6!>s2kOlv^n$44Y=u^PfnQGOVcM z1SpLbB7Yh<#;*gTwr|<9H3?cT$~`g;uvafoEOxd6UkM3VxNT>e-Nfli38@ph$en7L zmBG?M6VN#UMM_c#=}1^Xt~v*nV!J2s=-j@wi4(bz(?IRGd~{nPS{2c=(RrSI16ofi zzD&OjC!#e%U?GGNhNWon8s#OWQ~7=~gHx*~umGC*Cd@ZM@RcYfKXwG8{jZtJUg zEl|>)iohF%BJzD=A}P!mk7_0YJ0r61_x`z63R}l|D@k%NzoAHhqH2JDU;?&F~{DEHj zm$Kxyp9V%R>-uN9I$cJ8=xUrrfIF8&y+7QKJB51SJm8&Ba}qqU;d~ndn;m@9Tz%@e zeN~&aTuV(+w#+l+Rz>0M(7jK3&Daprmh4uZLNF);tj3a>O9P|X`YcjGcXdyz3ktca z63@~jDBM3}zPJ929`~=S0X4W=XCI>PX=mYJJ5FgB`YBzB%yKHD1quI zg@}5>X3t*(?*X;vkd1oNcSc@>jB~fi+!puO2)dufTKDK6_oF-NF+qXdYp#zp3|07M z!=dC(P3#NuT|rcxQf0|ehh`z%U+_&`W=jvrwI_zlCRMO>Y33Y{?)DBl{q|c=gQB1G zpAcWkqoSlrEBw%K&oWS3jT=g8*+QV6+VN9L$5f7p#Mk>uzBq_O$V7Nq*@3vQMo_-P z(_J{zf^6gb@+PE1$)%Z!vf@8=)2|qJs*8s9PK~1WSZ(^vS=hT!kXvTv$<$6hZ#|ng zAH7YRq0K>IFYEsH%lzpKukbASlSFgzq&B*4;)1%(6_D1jaZAH4yexDM-!j6e@$5Ex6#X(oXPRMctmBYizwx^Wmg{>+ zGXeyU=bJxf2uqhPyd+v_JD3=8G7q|EF!`m>*^z|ed)Reoe(2fe`>WH|LL7VVlMHpg zu!IdgL`(YA)t;+_HXUj?lSn`C_4B}BzaHI=#_~J+U(wGxJn1B}Cp6jewb$#{mEEoO z@qjHUAHihq%t(KRvQV(*Q}ld-)kq3tF+6f7j`qi?FX{1HI4NPlZ(JN3M;9X%?d_;U zk)Um{3ffDd6Gb=1KK52l1!Y~hoUBV#kYlqg+h@Pa=n;9Lb^VbR8ohSLP}lwVQ>p`< zXGSV@(l7sjw1XA3o}8?;V|5&@^Pc6$euFeDxx5ktY_1P7TUd@{=NT#C!w*H>Qg`g; z(jjfDE04_A0v`?3Kov=^Hq_%Bl8~HRrU!GtJhQ>i*9Rq!))!|#>R@1WHdPCXK^g1q z25^5pY`2PjnZp9$TgXs7>Z3dM#dx3mmMOr4)P6n+JiY<+5z@2vGqA9w zS`nVTyunS$l4N4pVY?NgZ2xYNzk)VTE?Z>xlT4gUdjsh9@@;%@AVEv$75A3#fUJE{ z29wBWyT-G)K7JwsG})+7l3OlQVWITic$*F}z3;B7^Hh^juGXO0>x2W!txFa<5Jq>D zzJE9Q=XplMgb~u6EVbyF1K04|8h^uEC2BHdkw2qZ_by9Yu00vP%Y7-e9YdU_&o}hO zgc-n*uxLK=B*`SKuD9_$>(4%E4TDqW*g`VCKL?RCv?cCWijyZ5EGOuA)Pj%SMoGD_ORE9VP?+e zKsi)9sX;4oD;|b1UoPgn_V!xrwCSKe-2K@CTb~zCU7N6XTE0xj^Fe6JV?a@7x^3j~ z&!^e$c6KDg3iwMfJ)a%sT4|QO+P;-7qqo`>g9{y%1gv|tb_7{_CyAU4XEWIfz=@_1 zx%sBEfjf}y_z{pMDl~0h{+2rV!lP*)9_&dI=G&4DIA5=DssY&=VIv-7|9Qw7p~RZ7 zODeAFPZW#&flNW|lZ^Y)08ecrDR~8~F*FN-fN`J2Zq6c#ZaRrKi+n#QdASHz$(iWZ zx*NGQN<(Wh3L*BltJ9+zer!-;&?ud2ISij8M1eh4{%SyEbAq#CSl4xOr{OBQc%$cj zI>1*u=BJ&Yz*FkAAD$U6Z%O?Rx_8NPo^My|9w6k(_tCC6l#*6g%gz z+rBXkCLZ#iqiQ7G{2CxvHh(3?A}9H*c4OP-YX&qK5YuxeGXPX@n5V-dx#JmQD8P^9 zct_+fY{NO)(T)5ArkUDE<(lhF~kvj#l$q(r>vzh=GVY>3R*92Q@r9l zl;DO+wtru{5e(MFSd;xdTll_IOza=>){qO3H_^Zz`P|ps5M$#gK2C9vMfL)wU)39QBjVFG z(t+9j3uDK`^ z$IkQfY=7*l*y?3WE58sCr;FG9TiIFAW+L-%E&IQ??obcgtucR5V~VUdg%3YlZdws1 zkK<){>Z$|`FcW6)9Na_xG7g4aril>y=__tn@93jmBfW?UY9vw~DD*Mz=A`XhB*X+= z`yTXMI`t97@rsKI7{N^8uI~$zmb`pLUGbMTV7-#naXw@$n_aBSrSA43c+S1`;lr2t zZjmNq4sgwaG4{a9dFQ}Jj02ZH&0d;RrgT!(-(~h1Bj$XCo+7hFPB?JUj=#0!)I}Sc z%qf4@a^>q2e`)@>X=dX06&9F*+<=t6RB^+_S}**@)i}u@XuxO})q*Sr7ugegFu#}n zS0YqG zWUP_M++@tHQr9_gM|{0$SbS$BS&O;ET+pf6tTn$eylJ+@hmGzXJL6w2_6eTS_2XYk z*R4C!Ey(kR5G;`9PB(i#7goM7FQd{iXOhdiT#ecAbaRsKj*m%_j2e`Tj3}Sj84vz^ zi2Yvcn2gs=niQ0b!PUfvg`%K_u{dbn{KqTo{V|NTEvFTz&iT1+?U@ADA^>x zOcBDfS}z(r$Uzl}t@NFjc`_wkL)O{YL`B)4)=P$f_QkHrDu@V2)GoK`W9$e@zloNm zQd6@OYVm>o5CJ>=nVOeeE{veDwHxjEvQpQtU}{=rzoXHPCbJ1NczrH+z;NAo7mx9u zJ+;_br3J|TW7Yz!hq7_h;tHPe4(FdW1%f@^=g$LgGQD}ZYPpzYDxSR_11$1;z%=)k zPY6=hk~tH+q*9_Xwxg#~MJowk_{FUl7gaiqfv(~cr4XHDIdO@^qlSf9?_sBnrGdii z2=>vEcd<*`yqPgNchGMnT8ZgiFQQFn zXN0Gg!ZTj&S?M;R^2$NbW%ZCm#a)FM8|7$PvX~3!{$VZj_y~kV2-TO|uy3dWw3YFZ zS)26WP!DmR08HSyv(q`*oC4%YOea&y)eg6Qy-l8f2oQ+ED&MxR-Zlz&z=|kCFXoQN zMJj$MJCWttC0V%6JAob7vzhmLA!JftYfsYt;Urv+R%xU}(9l7H553Pc;ya*RMQPhx zzfNnP>G{5u6oq1%f4am6-RwV2?P7fzO+b&qmtF5&T(kt}p?RMPC5xO|P;ioEm{;mr zdJ9>F^*{}39DH8SK^F?v* zEc0aot!@#@*e-Ems>DSrQRz}?2@nqJc#jNt`pG2Uj@7FDmN@(s%pSOdEo#h+Q7lNz zeS0lsJpKIkzQ+w!#YdLi4&~}Vz^DoaJ3DjrekTMz2rE9w7nh3P+0LnyXnCng+|9!} zZ}_;Oc}(Kh|M7-QWMq8UkfGo!u7b2*+xLc8Q|0(s?}-9h=+&odC6pcH(W3Q31=8a_ zI(SIwkdbZ^wcBUSYhY#?TWegP;Tlrt!Nd#QMNH!xaekB3sk(mL&{VIJyH*_tUKvT& zc0UD(+%nFdut98%VcVlVz~fa<0oJ@va_Ps!_MLR9aBp*g9)F32J_96y|`bqm4Sf z4uiimA0ewlOc<)@+JHk=>yNc;BepSbH`aTiA`Kj0_IkgPRg(&v?6gGm+ne$}<)VON z5712W zwj`MZmo{TlmVgBxw}l@<&)4a)V{!W{rnps!!=1m13I{0kM4I2CfJTv<2vm@nVFL!C ziGN-RSN<5qDKJG&v0vCp1@4Tym&OE|1%r^AmspvlAL8XGwP7&FZsKK)*MrPuRsG1yZpgq`Qi;4uA&zD2#LZ}G3J zz7F+m8rux?qUoFU0V5DYm>V{fSk48m3M9+-DA+MD_o!iXLG)Ulgg~)rRds8aCZCl4 z5^z~3LpmZs`z^1MyZBrf{0^-25_De5w$>1Ke3{__Jetwj-z?d`QBm(8UqXDaucV%I zgwF1#C3WVkeV!r95-IGzQQ%)=fDZbSEO-)q!7H8}C#y|<`MV`!&TNR>hTPL*$i!PB zWAG2lp)52U!Ae)`*Sh~l*}Q4%&{fKP-n6%ZH2f)1M|mGtH_ev|b>kyL zqzsldS+SwzmulWJhUCOE)%w#ee|FEvEWKWZ#3-*_m*C~3WH4P++t6|jOEJ%%Be$kW zZ9@$m%m*@pbyBmR5_R%0T5rA#x#!vPC>JD@_;RbdLd~2oV-SrU{iz}+$?w$$uJS($ z8NOOV@H1$+0nXlIlpmm^G}UvoQfgreAB!!7_4v2JLWo>fASmJs(mj0Zxw2%i+gdYVZzm-WwE>`Eesq$ZX{owVKUS zN9X$aa?+IKpv+R86=q{f+r4vE2}U#L?$F{baK)?ciqcylo2Gg+%I| zMVjY)QDNN_|Nom{SesSpY*ozW52($jpI1jUVg`Vt5Oz9&!QaQ6}&&>N7+RbVkxHkiG zYuWa4$RAJUCi!ft@>!=O%(|t&tk7#4AV9rUxyk^wpCfia1$D2fgThoA#gA0tH?%}@ zKMAwXeY`0p=w`rJ`o)#^HFhD6E$$A)+0b?ThrJlawUS=(sP zVxA?ynn7W-!wfSwtRJ3&wDZs{G#W@%{JV$V&N&wy$md)pjdZ(+AfFQXCy11XsIh=` z^}C(`#e?W+=vzLK9OV4huM2$D>HS0ma*2dyC4T9s)%am}H`cWYGz(*`F(o}us{uch zsPabX;;q0$(}2HJbvkGoKFZpiR*}~$2~dB4;*Ol|@cP)25e|kvR*~uq-ANV+; zp?TwUGb)myu>W}BlzD`{e#2XU-a&<;1@@Wx0HQg@+O4LG1M|j|%bh&Slt8im@Xfhy z$wv?*!6CzcQ25z}Biez2I7OPi&H|8=6k20hQ5s?6r43;Jw{#?I=pc%f%l`A+%cM*{ zQY-5DAsJ`r4uE+QRY;V6G%~)m6OY5zWdPgS0W{td(=1Xx578s~!c*G|iXF<2W$BP} zQXq)FWZn#5Nfm@rkdIH!UN9+Cn=736?Iy_|v!HdRnU0f7rIkDb``d4Om+Dn_J?FWk zNe(#xPbArlO&heOo*)2d@qDSunL#u=9T4he7T|IcL(M~k$^%fj!Degx)#>g&*m(&s z*~RS^5&&s#Q&RfmP65NHvE}Wi|NR^7$HF6Cj56hEM-m^lg%<4vNqoIkHR+fHe~jwQ zb(Vk27V@<5=?8r(9u-JN0)U=TK|nBq2|A09HQ9?z;m{z zpz^p7U~URS@A>KngPH_`?(C9Qzq5s+f_<&qff zQZt94V#6<)?T~3X2IaTovVGsB8O!jBg{w-4#$EYk+ko*Xz(bwb)duwdlX$rvi0ilW z7ttsYkq)1g(@TUD)FfJzdXZeuEQNorH>HH9)adfGs7$NqMfnFSQ@`+*egLSn2VLBc zp%nmf^WA*jUzUZjzCuNvRfNdQOb`^|(^~?dHuSD6GtX)*tXX0qj9vy0)Cj%B2CV{g zS*IdjgUfyarf^y_6cs)UTKvew4umXD;~#pQ_{)Bf$l&ao8QA)FFG{L1RsiS_G~VS| zbfnow>Cb;n_z?dvK1~3g3O5+yrki*heA7lan$wCg7DXuNoTlEX{O~6qIhAyu#UBT| z7)V%F>W!NHWt(|;Rr@GsXA*tyY{S-%o6MCifU0*_&t&J_pjd0-mzq{YYac|CHR5%5 zlM<2$3L~QNTYNzlY|k;)io?2G1do@_0UHy2ntL&j|7f_(Y)XHAtpzCO@&p|~gMY5v z-aNbiJ7PL}H{^!m9(VVM#~ zUZs+_XqfUHM(Z2LGCj^G>T;PhY^b5?hwbB;N&LNh<%z!kyVDeKlTsBk=~U1?`V}lm^Ix zi>~iDNaFc%4KX`iEn!Tsrt=;asE-GJQiyI+r|k1f@+pURbh0M+k;P)C=wY2&pFHm2w9UE*B($1& zpFEr`F^#T~F)nxeSlwz5wl-7P*4Pzm}GWqwQC#+8&>NdBoiJk6&#lXfgw`xkn^gXzhkGnf?WcFWW}|` z0gP3^%<629uts$Hu~Y(-dD!|>kx9l1qT*Yw`82-w=w4hYL}?YoM8*+08dA=h&Nmx= zO3Wo#cAtEx~;V@2j3gp(;SzIQEN`D~u;AGVs(5o&LwPnXImH%lxXP8bOpvOmSt_HM} z>;zTXM?l3R5oQA8U6Z*d@=}Ab{=KFNGsGS!=0Hd9Z}mIx$>Zb@pv{74pS)1rSy<=- z2<`gh4&{Hi1*rXa`(M!I`FZq5%6W*jxg7-ne@(3zSmXV06}s2|v?o-q|9xRSesR>z zW6M1ea84T~d8EWY-;~+qmbc|%=+hVpJ%UVt^olcmZ46ki0fBHHSs)KKFSmS5d&zFOm=|a`gwz! zI_l}+`1jdA^GGJ(aBn?h9uajod9w3dG%OaP^55v|?7XsXq5t=f|G}cyh6w5W=C(5I z=%zcLz{beeKd>H=e_|fBWSZl|CTwPiwG<7_g1amtieRmK^~CCls@XPJ1X7glTx75iftP2Q}4_ zSIoHV7Y}cEAMGl=Mq5mk^pyakc`zve6#=Z^Om+c;NRONT{Dm@_w} zBSTC?j>q=#Yd~wt0Ph6)IdZ=#x-~tP|D256?6<)fxnk&gvLJv-Jvbtdn{hOOf6bgC zXA(b$&X_4fB7z{yk0O5hthmSww73v$)c|$4M~4BZK+>hf;Z_W^3Z$wAFw@>QSfAW+ zT7Fd3;sSAFo{sNsWgZ*bq)att8Op-R&X_R2o{SSvpt`E*}B ztp8i3^ZQyZE1N=E^3_jtZGhD!L&r{WuT7&wb&r9K0_H)ZXnAICv-Q)ECUc}dyA!Z| zOAEa~i|cPr{LJk#)%$INM~-j5St)<0#wL;l4Bs1T51Ldnb?-?*foul4aU3AUM-RE2 zFmFo4v87~LkRbU`?fIW>Ah)GM7RI@4V1EO9L;`m)%sX%oQRKIw6xW;y!`2>2Jt>4W z!O@b*iEYCmB>fJp^MA68IkF~5`Z9Svy*h({G-V;6!BQaLDTt3Ycw#^{;xW~ooo<=B z3X&*Y<9AETCM=Z(S=<8HD(AvIZs@-5b%=eSwK4iEv4bb;C+vW>$>SYLWvRoamWBG& z56QAmU=|BW%CmsDV$@!*^pZ81aq<7XxUV}k(mGNC67F4Zumo#pa{mk~^U1u9H-RNd zr)$TXp+t4wjpBrp$KI#?J=6TRggbA>?>!H4HourKrXmiBiZ5{L!Zw}~=B&r`WSYDy zP=qMA_J#b|@Gb=S%Rt~~Fa_B>F%~n6;zDBOe^YWY*+CBc z0{g3Xz63@#bM;Pb@slvjVQ)O^H;_sMN|)cO1}qvTU4gW3kPH>;xiGrROn)@_Gf4nHDGL_K+A>|G25;3Q|mYBKtk@DD}b)9bJ$7#hV zJ5L8{G!{Ss<}(FlZdRRl4XA6|ZC2mze1jAkc!)J~S%&&UaRg|n5Iv2&`m zs5R;5^KL;Q*~gE3)){q_XG&H?L zO1nEz=)c+8$~oy$)8ac8lCgD0+rRv6cA@~-%FB7_amy|_PiKh>&O2~;-SC$B)yz*2 z$ga#T@+Sj>){rnLftytu6?ec zuFd~tD0#A{-bk2)FWPZ8srLlkwblr-ChdiOFTpt#SEma_m=)u>iY_)xzqmykIXVl8 zK-*nTA7_o(%cKHC0D5S$kyLipWKrf9$ue_n>c>xsFLJI6IMBPJ^4C%bJwua$x(dOw zfYpYAxMYy4a*v8ANlrm#VbW~(5-Vff>)=-zsM;LJ{*1_3HJ)>ord+aQr~xaNjV{5P z#qgKJC|L=UXyNn_gve@z6G=s?gOg)=@Zt#SgBjV zgU0T=^JLXPg=f%#WG3wTl^xltSL`L9syAWT$HT7CyE=*PiB+v^WU zR^+MF)vB?-pQf#B+v_u$Hko7pV^in9x@sAmRz?@Z75BdUVuefmq-}fjx5|d#;B`@q zn@(gH_GV(mNa)_rvoy5aztrgCUBa<|s52U6u$Ews(>90S^?D)wZ+D&i^F zyTDS*xMvUl3)Dw+>U6s116ViVs+H}j8Y(J23Md0EBm+2 zZ_tn%+*Ce<2O+@`UH|y&SEbd&n5gDDHXnyRUdO|(>_c0_>clt=jv-qvbyhlrMQg(GCodc`@`6+qH6fMq7VrKaW2kStN%cgGv-6 z=bUpM!rSvZ=hVBm>b}3;t9n&VSvB-@@7}%k+G~B*cXgP$sys0f4G{!E#7`AuG$9B} z67zxKgKxT{vcEwP9C|7v^~~ebX1$*+-EiD8`qcszhiGJM!IO_S^sK#*Box6vN_nvK zo{R?hKVp(@B`Smv}KgQpYf46s#Rd|5Ta%@jg*T5Gb`mxHYT>Y^rl;@4 zmuFpXRomFIMHu|pfCRJ)kf2PuD0{(^f)A>p_&jWBo=wbX!3 z`lQ}#Mu+|&+T9ztQZu-UP{1b`w&cV5ciDrlJ``64E8&t;f~KI3x48I{-B-)zEjY1Mx|J9&ktRGM#kXmPXtTz7fOqxuHo zT0JJb^lbB5y~<1xPw`mB&eDBcUO_JYH>C^UCdi*-%}hBz5FqQfW%s!jPgbJVa2i}Al9TwRxuZLgt*?=s+NgsNJKl9D545UKOVA6vo&n6n*8>LN*e9OYn z*;3-f9NGNo_nhmOgDR#WPyz=qUZ&40S#C_Kq`PF6btA=dfsyjzEXM*V68%Kj!{Z^Z813ZZ$jEQ&! zrnh_R6RRdGZ#w(xV?ko`l-$7s;rN89Q!^f;Wc}neO^=@sE_|fj%{ssiGhuSI6&c6M z;3I^d-icML&VC}*o**n~*hrx=+?P@>FXngDp*EA6I}JgiXCpW(x6{Gki8o~{nUPF7 z)Ft`lr7|Cxg(j9%U+sM*s||>jDVeAlkfVSo?Gfqvw0-a!&%8aUu&06T*(6_|on`a8 zE*V_U8>V$~l6Ak%>zJB@eg;e-IBnxZ-_+QZKh!cnu&7GUuV-bB^zM!p<~CmzTW5=0 z(JkFxTi^V_@rM*U4K`zFGyeTqqDXym>G>NlQ11HVrfJ`Oe(03Ej;-PLN&h_Lzs?eY z1vMPaiBCwJz#(1HRyjuJ{pkFkOy6Ua=@+?2!$ljm7CaA!!E~HZKi^qMlYrEX)-uj? z7_Pq~e%B^b^2y9uVyA#CSw{V>#U#GK1OfE$Mo#-lIrXtnn&q6@C0knE?i(pPQ+_4W zbIzcp@UCZ1o_16bJc(QtbAIAoYH?)v`*@9B&3(_u<%mduo=zPIp`{$o?ynEX; z3HXGDzY5?K7?n*rDK=I+ewtcNNX6EGT>w+d`IsM^lKMw3_rRc+fXaO5RQ24JFFQ>~ z|NOkw9y^HDb+7XtG90#;>rwhRYT6}GLSEF^>y_f2l@37(7xxyg9_ACsOh=+Rw#N2# zz8l&NpImJi+t1A=`{`9J@Otre63AgQ!$i^LlT`FpC_^xR_&vn4b$LJGupFEC<=)E^ z!ox)7$Q1{BD+j4>{^QjeGeYdXQ05@kg-|w${{&YM`NDz^^ri!I&t#$|us0WXtZe{9eADDN`pK4nFTtK9t*S?TX#jrG_ z&1GYu2kV@s5q}|Q`?87P@0X6>?w1$sl?VvVk__$!H`r0NdSL3%P)N=3kY3qupa1XA z+L-0=82QH3y0xwSUre@NY7}$#?wWb=2g(faZ!}YXD1OWD3MFm=r&5eh@+*5RY-XPp z<-aVbwQ4$?_F$}^bP4sCI0!_@@9p9^rMi0Yo9BsS|9ObiBp6ns)7ri(1*d7Vz$LC3jKAD3 zT*T&zXr3y*T%xZ#KDD`ZHfSJ`H~+S9%}nXMcBtZ&yX|&+#OCBJB~I2iIR3+y)9rD` z5>4QvF(;U$n%@yla{pkJw3A;mOIA>zr@yqHKS=Vt-r<}%ZNm5Nr;DCv@cE;teO#MWyt7R#Czn|!j}a+PHpSbC83$NV zN_QP;x>FwASx)0UP9EMA4~>-2!$urDW=7S9)?b|&v#0Ar z`*Q8T;9J(O^6p4_db@kQ%9V_5dMuT>?I3+kb0O zp)3wQ1WZ-{HucyxHbH42SEsH{wU`6{D z9Us;YN>u3rvd~w#qsovrbHAqP$G032Pb1<+;8yNv5v;p01a0{WCU1U{>HA@nT>Jsc z>A|gJ{@h_BvCDB}ujk?;0(**uqH?=Y-~wOB>0h4AIdKk7me$i=@M?`v*x{%|?Wq2~ z9pTR3CGL-jEy_eH+|7HL#HbvSS{-;&pG(U>z=7gBaKm0@xtg$?yrj6u-{6` z@QdN(gX43sDyhGILGbspgl!lZi+kf>_ALK%nP?-4>U{pW6JNw=-#*JSgL(t_sLwkw2cO``kQrc*%`?_4#EhT}eUm<22o?i&eCDOHe39>W}dX;aE zG;=z5IW0@VogN{Y#^*2=AHp?hqwlU*{meJaFl#hoIDITEe)VM7XyWa9XLm&LxNo1P zFzyX|{SG#g^IwEs5B={UB9FyPgj9(mG8|uCB=^p)ZBCCP(&_&!iVvR%DoXfT(5IHF zoSdf;GAZ7Ua<98T7Q&I@>~@=XLBq8+SPIv*=^bCCrRSRe#_rk1I9T^@)*RII#MJ^h zN56iw!_$>DD(1hxn-vwmm&?Q+F57cG%*1`K?#*V+wCqVkH@0(st>2E6=>CBXp3${1 z2G^wl%Oxzy`p8S-mI7{mxvAG5&q^d=ST{Vnn49k*V+ArO*f>K(T^q;Kjhtltq^4)e zl2>?FfM3Rok(WdSjwZD}aA^}XcT%dPkbtB1SS!7Le$qd%!JnkYs!I>PQQX^LxN}xZ zTPDfFE?CULw6rnP!(Ls8j@pL;Z2pA9RZe3o^mT_c%+9gYo28kO{NQ9PglaL{hR7 zBpZBK`(22co~~~QrDo+wG~=sT20XxBV&dTN&LU6z)>SFvyiQPQ8!-o*hizEJtd7Jv z+hO&!m}SSs3pJu1jrXG_5|)_Q@>KL$?+LDpK6c3naVIfdtk&QD1UhUXG{0F#1b75L z^_kV89uh+~W0G7bp6;(Wr!NlVek2eM$l$5a33Y$M30{0+G{){&)<~z-vKCrCW9EfN zJ;3&GV{uMi^gQ)4**HCYB#a@7*0dw~+Aqol;&<;E#ByG^TbD5JX3d8S=T|45k>&Pw z&0h?D7nb{rr}|h0&i}pMI?{|V+qUJuNni+Hn5*QrUD zW`AUzOJ~+P5T~&JPK0~FC6yM#+?_FB8Vmr(s*a>U zupn)h5PYj%xRik zokjh|FQ>Hr7Ge%0U+7MfGhE`Xd>*T{x!2}G%_PCcYR|j}R&xX=CI9%F7rsN`%lc=Q zIeo+9VJLCo5R^FIb?DYe8G}}bvBoh&2KUyeJ0g!}$Fc5OWc?)%50m`2G=c*Wg0IVG z2R|7oimF@3J+}I=pi{e_m59NY2D6SJh)DBYPJjx8iaS?KU&=*5U$^OWN+(vq4g|i~ z*zg^RzG8AvSF7%8r8Oy+7^U~O_WtDculcbPJI z?ebMT-%6xj3PPuUB7vV>s|u&Vr^HL$=-HkUaFt%n?hM(s@A_O^spT2*qb6Y4-YQrH zJcu*S41}|Ry;H7175iU&**Xg-zAte@_9_kR05Kv2+%b=}6DpXL=@~k@e=!NuFIW@z z;_Z~_v#AUQs4#Xq2izc$a9@GU`kx;hx_xVvNFTjN&bMf_mI^XI6`${c86;n)+;ef{ zSKO2^LCA~qV}qKp6orej5kooUKn|^2qO=)Gu>iZ0 z;h%lLw?6gT$JILt0>%c4hMZM)%u$prr7}HiG$Opk!rPe8#+-3PVJG{kswrM?b=0za zCCj~9jgAF*RtVtH48bN483=A`^RpO?7kica{m+2x>ZwHNMPaR^nSaA4iM`>K{X7!I-o^W`F)sAURh>2J>Q1K zuT%St<4e=)k_aY3IBM(D%uxohigGOp9%1h>&X?Qe$424>(n3V$p7H`xjGdAFtSWrp zU~6pBh`p6zZKvrTBf6NAe#=QW?%KXK4#e^`72amP#~W8i$It#^P2&@Bj~9Wp5gd?x z$%)#OTtPb?eNZzwQ9V(Lf)%04#>xDVD(|$(J-zU>Dxa5JjZe1>PG5z4iFFF{?jII8 zZr6Welgr)-66OiJ>FIaQTLX(e>37FEO?e@h3`?F#jcXRHyz>D+&B@Xu@XyCo?m~_1 zBP{6ZL`?z*QX2E0>d=BQle5d8BeByT`1u~$b%+T(#XYUCx!NT)Ke^{zYjTHw^Z}Kf z_JvSrv%Ckh{{$MRAgeT$yIM%qtW(egxA{I&buQQ4jA)V7H~iTXYZkxBJhz#jb-TRJtXz zXI^SQEh-+v8)!&q^0qOj<^Rxrmsb%|dUSopK5l<(V{0__QvBXh z`fC@~g$Hi?4sgpdxyhq?gEz~b7A#*U|HfQQ6!FcK2jKSNH1O{&LtSWBs+P!XCt?== zR?Eug$;ynd#%O9>vWIsU7Kff_==9Rrdyy)r@aA=cS z!iBAyzcWmXv1wsn3vrvWrE<=ol0Q3xMUpgb~Dm6K?ZLL`|&Ghoz_vC&7J6^q#G%bf;1A?+|?wpXaB+ zSzLMZhf`rHb{Pf}MF&>6=#Mk|({l&nz6A8X5AH-2w{okflArs4tvxSkQh{)~D^h|8gbc)Fas+`gf1bhu4D9Zz(~=id zLqorZ4r<8OIs#>k9dcQwf;f>zsg*;a7Z2zAysv&A@r%he29t5i>xt&B+zTl$F;-cJ zUQbIj%r*fJr=`({pX)OKqX9eT8 zn{KG5_1p30D9MQ%uT6R{MT!a}PJAyFchF-O;(qs|2$+x9(w&OZ6Lfbw7G_h$c^xKr zlu;TNwq~U{NBK$AUn1!~X^NFNW$ujsXnOS^?W-|8+}KyrW3@@0)x472uCM+Us(5;P zUq|u&X0QDrg~^mz_k&~m%F56B=+g#@dsKGitRD97-we8#W7D6lEf*13LA&diYiFPM zULev@nh)y{TGdfcOAZP<{G}i96^d3T8s#bGePFp;ven>qo8-iEOL6y~(f;pWTw+3q z^WIJG2cqJ>77Zq~9B>^ih0MKptCTag<%$&ko02GJ2Djy+%8*XXZ!aYZZ=i~O!Ts03 z{5E%*5ie6f{2By8z7=HW)x+$ivPQRJ?RAip9%cWCj;S0!8jQGk?G!Y z+=w4)hHLQ$%4-GX?& zN_oGbJv(l2n$6I1IF;Su;@PjJLq7`v{RRS?;f&7EI!e^vIPKz(cP%O3XWsD*__aw8 zG#uhqfzx$FTV3N10{v2kz;W(4BMy($amVv(Y+x71`RkXGyrH%^dJiUO@UZ?{ntQ7r zx09<>y+DdCyGOBl(#5&GKO(F0E(>~fn;N|cPig&J7(qX!x%RycAysME{bUAg0B+(9 z#8;<7-)U}I1#v%On9iYB<9Z4GFvU%<@lA3K7%6t~FnT9kG}0?J=m)r(VZCwXG=SsS zsls1h!<5@``~g}8bq=B_3Ne4_Y2B@@iCM-GiynN3xqyo=wOkQr=*6!fT=fkd znz}3OC2<4NqkU1_oK*+=y3-SZIKKN!^kKC;^iaVTI;&ANdzk3^Y|#)*ZrDBS;+H=@ zS!uer@&&d3_gTP=Zk_!oyt|>pPa1Xgc+#=;z#1RWY3`baYie7kI8Y;i{j$CFr+>!5@@NATo3uY*b@o`9sR(Z?VQ|`8jB<1))lBqV43L(~oSSHI^^Hs~ysl zziywgSSHBcyBWdH<92id9T#FRUz(m|c9F2>cMsuEG->NupSGzJNA}oxUo*xqI<`(+ zizNS93n*{|oSsxj*8KU~Ja}uf`Fd%(Ser0E{D|q(8JDMT&iQMmkz#8h$r$pd=T%s* z58%T|wSB)W9cJ97hp;QXy!hvT{Vj6;)EY_id8GJp&VpF^lhX9twU_zJTeRH>?Q}e5 zR|doB>^iD65jc)haR~kN*7&yu%kGWZ`0c;-8FDFcW&64(aO_x1)VQzy?vUEFy%n0g z&4RNH(UW+_RW1cjXDDDn{}m&sZZG~r4SR?Mj>b^=OD)9@9)l|L#T^14DSg&PcI{C;hpDj?EW# z^eSJ?#k)h}RJl^)zZL;cCpNC*FUUo=$~OWcn-Ss4(uvD80jJFDpOo z6ub(plaKk=5^MIbKow!IboKA`%dM1Rtj^l;|5BoeJHcuMgoyxZ*T^O>&A(y-#~O@B z+7bkHAc6+iOK8#E9hI{-Tw5&{fuz`0w&>vMtLGd9R=-Ti0SniP%mvidh$G$cqV>@^ z=RehnHKFByW5^F+p}cZTR(1Fy!x!FKvy#{TbEEUk_h}5#(z#kN3%H=UJr8%vjk}jz zlqu*Pxp-keZp>sp>~}byePB$1f{zz3*#x-mGJOr00*_wqg$Uw!>&*tON?z}JnNK(~ z^6Zgy(97Qd`s!M&R^?jGxo^{VP+x6dk-!~l<;rMhe;{)-(fm%eWi3Ud3DzjztUP32 zwW(!*kih|jApuv{gjz0ecswTB+|L>GkD(JR|7P;MewxhH;~lw?(p~!N4jauyA_9Xf zBFYOJ$J23}G^5vC-pPc{dQe|ZQ#8bE$Op-uyI{!ktVa);Z4x1&-W&K5l?;RPOY+3` zNWcTLBa3EdDvD={ukHt+@agIs9emaa;+Lf!rBUznOqBN1)LaOUy(5MIQ*pMFpa_+# z$b8NC5{wP}@P+Nkx)s~y6R+}nXuQ0AFFeBOopv8Tqq7wnMExe4s{`uWHa;bY3rIR@ zZQCLWrQc{Vm z*?k;$WKa5?e|gqJA7H;h{i8?U=F=IEtegF&pzC6wU!29C@C^KKtN{gV}_De7Qnb2PQ;--m^%|t3|1PLjK%R- zS{;sk1l_8S1Wq+xjwIrzm2mhV>@bY3zCUS0A@qW%KUi%;M|dJ6{3YsJFShe869&iX zI!RreVBp7yeFdtNSC8p4DSeJqW+Fi$B{LdpX$8lB9VWxlbu>U=!m?YIHAb@|`yVZU z(WcIK2%zkrYH%Isv}>UFK~|Fe)6VVJ>p_M_nNyF5>A^zBu+sP*B{1ZhpGo0Aeo1aD zlMFxwxy8+9sCO2C_N@-g{2<7%F9CZPAia6Z6Rw{{l1MPLLPxWEtuxb;c3l{v*Xv(RkdzPiys_1o6-ZGvqwj2kD?~EvY^L zc(*^%mZpWT;@38rPi_U`ZQn$Xn$t*z%o|!mSl?_=a+{E5AN&S$OY75Z>9OxE^L#d z7h$y*ztZq>RM)?307RP?&WiRD`KVaT2oksUEWcd)LJ$(jKCCB#bQKK*-bu5MeG@1z zs61?(u&}Sh|JI7g(ZsVydC5hJf0|-BVrzXVu{T#ma0ef)%}3ZQCe9huvdek%Pd{gA ztnz)PH}RSYk4h{h0DrgX%xPv{2 zxN~~c>g{yal{z}GX#w~jaN*JnY^VrtDQ;F6sLZM9w&pc;6T zqRSV-DHXWJ@bnyl^LSNRB{vqC##>7yYuNMs;wWV8K$td#t4xkXex*jo-SJqQ@?KdCv?6YJ&@OmP+bl5`e7^-Ya_w3O$tl9c=!uzjS;pW{CIl-Go9Lqf|27G zj}=Dgm2!D|)Uc95iHh5U=Q7s7e@k4{i+D3s6uiCjLC$WoeLp4#^#@^U*WcF5=ij%H zog&rRgP@DKu!1sezEPvKrEhKM>_+r0aB5Z6ntKawg%_0GYyton6t#$<_+kGBk`lma7Pi6m+pJhHq>ENVWK9n7@&lw{)+923@C!8?MXjSQ+ zY?#aOeCA>z6Nid)Y?sD%FB|OqE33XE+U5tp5kWC`0-D8^ewC-c;mIaC1r@?vE!%{6 z&CQN!E!(-??wNco8?^RCj)HZP!P*m-b^%OzXP_-Hs(wNMC5l;z?HaK2frq0JPVOl95NB#U zat8fZ$dhAnjMR}qHDMr(5Vaw{bM$pwL(R0hJbjXLsXT+~DF4(qVD*vUM0~f`Gv-bwvDX``)XKbseBdJzm=;S~sg0%yaF$cd!c@>6GJ zeQI*4vh>wYHOD$OXbs)mWzF@xi_y{k{3FX>Plo>>_-k20X<7Xm<;ghxK@z`qQj9p! zS#$o;zX&o-FE#$Vf=0`r#xpHT);Vha?@F6_{gRY38Y`HdPYMU-sk%(yWz$NjDxcmepP!D9v~5Qyp> zwbgQalJqw0|Bmi`@co6l<$bW=iIAWxizSQ_ttPSehG-WIC$E69klj?gG zBzxFc>%o{b4>(`wcVX0V2eE;jGN%t24MWqWWkO))bOu9i+lIb?yp6>ZZ~}lGvS>iM z4`G*tGDM|JEio!2P8h?N^@bVG%S9aeW{#M~ciUU-_PJ^=t7i7Ii#3FpwGo;*2$%(2-)ERz#eJ z9okdiT7lMjh`Mci3H{fc3q=kFGW1PE!U&g|*l6$Y3lpGqlXyeX_{~1_Aq=Um_WvY- ze)u`f0iO$#mXG%JY#%;Era6GKOV7_9#m7n2(q>_jckQO1lwb5;?CBdio!1zD|L3bf zT+TS7HlP%c8(!X;?{16S+EwbSN7SSAM#=Taf`~Hor=v5n|K!IHSHmI<453M8L9n4Q zzOdPixs!?4Bw5eA6$m3_INo?yKYeYNEhMN>nzi4OOG#x4J^3cE6`WYuj00~fy$7g6 zyhQ7hv4$#7@m4uo!5D#-0r}O$z%D3QB7tknon|75_TM4 z-!Ay7_qUOjc=-eA0~Q2wup1Xe-K3L+^py>}?~_LcUsK44HVU_H66bHO6*X^EuSDs{ zH!m$+nBI_>TBDQ(PspHuH(B51Xv#Hxemk6aPJe0m?*3~ zr+3SwgFg6~%HH3ee8(`eeLZJb{VAD=oj#w($eUURwxzQQYzT zA8S{S_)A~(zLXy@hYMC60Q}DUhKRxMN083;<>xk>I-q_7>phWnOdri)5@<=EVaPA0 zo)|?sS0RMR5)@ynn~&-%e6|sN{H(HFHY)n~x85ECXn_nZ#Tp#bLor3JuD`MoF;+GB z1yg~m4hSH0eA1>_;-tCT<}RlmbCi)5`5u zJ7?s(Ap2}7qrFaT^sxW=#!DdRixQ0lwGds4pJ+@{JfOGNppiL|{$N=CFaC&Q`feEz z2H{+G+$(VF?CmrAsVAdWiekq#KRWj}OWxU~ zWJU6rQcJKXXVPX$3)%_&0V2k~6xkS=oF*l;gc(Sp@^C&A)H zP!I+ERg(`LZ>2a z(7MySASB9v-rK%ybHcHk?UThbL6i_=f0Sse8~GCrHz9hzIsznEC;a}zorKdM2cH9y zFf52``t+D~`V7nela;`Mo37WXoS1zI;1OS!=Es3ql2jG(Q<(aJ}+!m<5@1(HY0KSQB%(-bwg5{q!Q)%U`oWgBD1< zD#mqVX=cfU0QSfZskt58??O6m9dy^!Kh%5#gQ5^N_vBb)NrM=7KdxB?)Qdb$9k zkh-W!AMC<$p^$hm&B~zH#_hU@15m`>ewV^8W)m2V*$T^C0yPR``@#ZC(ldeM4cKrl zpV&s0U5vi#%odz+PLOW9*=+5Jt53&~y^@E>t?+LWsk2pn+VuRpP^z>*MBd)zQR=9Y z9ztd%?%4DI`}JN6XYL_s=gh7Muf5w&ABS?qz^uTRFBc$fbyfeRpL#YP6W{xhn$m5T zXF=da-9Y6K3v=qcR)Cha`c|{-H(}%at&YH{Sy1rDaN<`|{Y9~kJX0T_n8AXS z7z}Yt7;0`RZM-GiGwIyVP|bV$I<_-+xH-aTN!lP$G`Fq^!1wdstJLqxp@0{xVn_CJ zjSta=t&z>s7)8@U{T84J*@b6P-M>r@&;(UY&ros-i@qfE$Q`o*O(l|MX2f6` zhCBdO!*X3L@BYfa19nD*z_8TGgW={SJZyCm!cooT$?zBOBx-SZ0yVDF#Ti)pzu%Eb zwPN26`!u6NWv8+;URpsqh|7gmAQ88!oo>p*hT z@~@Z{c(mDH==2+(vZyK!&T|ypUeQR-?qwNv5+cF?fu8Zm<9T6gp_ij2_urk$mGa*zS}GS9$>+Fop8nKNin1_dvFn1FMjNY_6CD! z1qX*~OuZBi2N#DL&5Kb6wbumIU9lGE-}j46c|=l3q$zoT+O>h_73C+eo~r%#Os2DM zwlb7C=*i(eUc2wHE-zH}R{LD})f0bLil>$Hn$~T9gjC8B+}2;TU{4J)1lP(E<8-9GXu;nateerol*JifqkG;AP$zWwU))T@-*v3&(nAY6GkO!2+~ za}~@r!JyJaTp)-W;4IBmZ2+8}Y?e9#+A8_-fP0A|nC;d^NlN`jdJ+%OYu$`XWoZR^ zSN1VI6JuYC$E=LHada74Y2QFYj_^aNYBs?|T4B>9SpSpvz>Do7tY3(+L`DUv7wa=^ zY@x18E|TUuw>7=R4*<$4P>F}YvZ|=GTS{#-N+o0Uwe_^Se>!vDNi^nwOs)4*F04ehUi${4q+O}5DrPl2h!BOv;t3GN#- z!RV6)cXf#H(@UDgOr{zR=x(~IUOa~Ayte%^Eq$638%b%IJK8yX)S3G+5~k1$>Of~% zY%3k}?5t@5+!E$(zzj{+o)>BCw!ap}=c}N;1=1vphybVnse`Zw!>IowFEpyE1uF&= z>eY!4KpDm3MC1bVIo%Ipb(x>bBzl@YSqc zf^cqH?VkZ&K3G4;ol|y;tYU(tx#OwdZ+HLZI@!hI z&q#$QMT`gEWQlJwP$5rb$ifL=+wTb zkqe-HI}ns?FOsYOio)j(x5;5z%NilJ5V_CxVjTxSsM;yNKrOgc>@`wU>Wpc3ewr6- z_q?_78(3p@VcoN*sC3aYSE#ywD331i{erC-Iga;UWJ?v4`u6p?91k6h2FILx2k&`; zp91e-^;vnIb=A@Mf=GAgAD)4J{YNHUG>LZ1 z=0*R2RV))iQuV~6$-!a)1~i7YgyYKeO1J8ySazMS9XGztNiEsO&3~;kOzk&3R>A&P zT?3X)9r%a!X@^R9#Im6Wlb)hsJD`5ez;Vq0MTzO!2^+LW50@e?B~M^j^}Zx$_P+G< z`>5~K`kQ-WtF77D$S03_`9~%ZN@FA6n@iGkd2uRuz=D3^RHL(9g#B0-_T5Ho{7?AB zH&4#Sv7yb4wWD)Y+RyRq{z0iHNk+W4)!xdPG$t$mrDY^6K}2}jo6s5Jf?b$y)AG3X zuy8-XXD*HPd9x{nY_2nYoTdnOm}lz(zB+(-}H%SlaXK_jy674t$n?|&9;nwY5*?x z4CgzgbnSe02>kHKueoIggytTHZ{ztle-Qn0Nzw2PNm?#hDRUtqMJP^6UlF`iL*!3b zj}4YXdw6}&2c`TIao4j=g6;5vCYGe}HF@nXg~5OGHh-j`}m6wN=fBBpVt-J0oq4 zIa1;mu>Slsetbqzp^~cJahhz{@YE7hQF5PT{I>$U1w64^2@d_stmhma^_?MMHDr6+ zt`|>ma4S9Om&cUE!g>il{n;hbwy2 zi+v&2%rheV3-8k$qO)!-*6S64*V=(|#9j{e2zU_YFqWqL_L8CCbIR|4YT|w&)9)gr zF+ULp#k6+^Q7j4z1mq6ey>@r%oE$}PEKO3Y(w@I1zFR|7_-q=3TdC`M-UoVixbgnPUZ64(M8c@hcSOVd5GI0} zdKA+fUh~)9Uwo5&gkJS@ir8v9dA0AA_lj>cHbN)+dQL2Dma~ zU(U{-Cs1=Sp;@@jb$l+>w7u@`jL4M|g>6P5T5RY1iwBC=Uw(167QW_SuDg`hS^#2KNM- zi=y?7qxnEGsOyvoKQHWXx?WjTYRm+5Pv;E?RIjm$S^p4nT4TNL9`%ggSV_)ZZj_@} zkDvdz*)vWgi#y2zC7QqCee5)o%Of=Z*(qDw_WCjU{BQGtNF7nIjolNVObpZXgQ%tS zx*Hwpm!Cyh3%ZhcNTeEboNvh>mXQx-H47kojN_tbL&6ob%IKZ3^$Yh|60KmK-TD0z55Oh3lHALRuDnGgApNT_yK#h zemkyzbByqn*hVokOu7X20mAkq=c|_!d9ts+@P=j-8g>~Nk#0B?b-~cpF@(M zH${2&2OK7yccO`(bxrs4YVzV~nFK;w4DoNWc?q%sY0_LU`GZ?#cv4onqLg6Gcn|U2 z=BZD9B#!TtX$wwbL6N(&E3f2nxW%O>+6XQl$4Z2R$G&3``sd&WT`GKrPaKZu54j*E z#Lj$Vyg!3j#LsO`vu)HR^?#TngsCOrs_W`82?41cv`m*_83T7?RG3|F3_(K~lF-wY zjl`3ft9PK&jU7OK-IGW!fVI87XTDvFsX9hte*fPJv1E- z%O-=7MoHvGodA>qHG*cXYmgjQl(!!v0truqwcZP*Rk;4|_Q^LCQg9uZ%G`(qFP@|* zu)B@CYyYV8K&vA@^hunT6jEFP;)(b0J#)~wh7lHyP>j%Jgn2XBNJ>9WQf13bQO^DA zT?Gd%81R%#BBVN1Kotv&aO6MTf`UL`HIIbD7H7O+UH^3TEnZ+%t0y*_uz>S|Sp41% zD%?ze$&kh$0w*AN#Uym?(bYHa#$MG5ewVAS^s`XBAQ!zy6$y;l2`C_{cgW9o+ZI1n zZH`QZgB%&OGnoRUbvV)LSf}I^0G?vdGBzgYCh52~jB5WX-A>TF~2<>9yNjbiE5NZT{QiJpV z0WK94j73wIVvq?SQ10@lQhS$x>)b1IT3gf}9Z) zk4Qk%5HKA~dfv|~j@6iqS`RHZ0jU*7zrcMj5N1W}0C*Z+E2%^eZd!B4_kQTpA0Yay zN;GO}J9tNdGQQX;CYm}1^-LRtFA~njnRaakNMC%Z9`ktJDrLFS6pNJA$JDtQ{3zrla$VXER7`tJmR z8aFd@=NW`~MZw1oIirlRKh_JO6zw3t01)C93M1LDHXpQ{KE3ZhVY{Qo;HT&tiE$x5 zzp;{~P2nsbz%B@tcpwiv0I&cI;e7P~h2{S+mLBxg?#6KIlHm$^aQaVN;|qiL;%PoU z2N5$!AHXXO!T?@)7|VQe^a2=^J;t%gM#Xp?zFm6*6oSB&V#-~Au0M*RlzQ+17}X7* z@#~qzl>=2Rzjd9k?vzqNLZp2^+O!{$gO^7*1{TwPK00*6_Ls$79WiLGk-isaB+EW# z?K!Q>$bvMtT++T(hsnJYF`i*$_IJovJ}D_POEZ&R1js`D_aLV3%@=#uu~;8{A*6)x zQu2P`=YdyMI6Zl$xA&Z+hDBjI_iYOgB|8jB*|0&NuKLGdQ%g2{QJE%)TE0+jZj%Mb5u6}@_;oG&PeLH^4Fw_1?mVc>JiDiCa2L`cYE0V}x{jl(EsWXN28HpN~9vN=$&LGYw zAbfDAS9#n}?6%z9VnYm~y+7-WNMv842R-&aF-e_&T|H1rzeEe0P)SRX(WE3_GpXhU5_ jX8#XwO9_&jyCN7y?@{nqzWxAS_yRqZRh20MQ1^cUfUZ0V literal 0 HcmV?d00001 diff --git a/Char/Player/Shadow/Art/squat.png.import b/Char/Player/Shadow/Art/squat.png.import new file mode 100644 index 0000000..093ed69 --- /dev/null +++ b/Char/Player/Shadow/Art/squat.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cd0vubrirnt5c" +path="res://.godot/imported/squat.png-062561509465a6fd9474f6a4ede57b9a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Shadow/Art/squat.png" +dest_files=["res://.godot/imported/squat.png-062561509465a6fd9474f6a4ede57b9a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Shadow/Art/wall_jump.png b/Char/Player/Shadow/Art/wall_jump.png new file mode 100644 index 0000000000000000000000000000000000000000..4a1f6a9716ef3d4ae6755d00346adc964491120f GIT binary patch literal 24107 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 literal 0 HcmV?d00001 diff --git a/Char/Player/Shadow/Art/wall_jump.png.import b/Char/Player/Shadow/Art/wall_jump.png.import new file mode 100644 index 0000000..28167e1 --- /dev/null +++ b/Char/Player/Shadow/Art/wall_jump.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdm13dsiyl6v2" +path="res://.godot/imported/wall_jump.png-098df550fc76b4929e3c62ab089f0606.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Char/Player/Shadow/Art/wall_jump.png" +dest_files=["res://.godot/imported/wall_jump.png-098df550fc76b4929e3c62ab089f0606.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Char/Player/Shadow/Art/wall_slide.png b/Char/Player/Shadow/Art/wall_slide.png new file mode 100644 index 0000000000000000000000000000000000000000..2b6e1638d6cdb9662017580ff73c2a3115f32e64 GIT binary patch literal 7920 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 void: + floor_raycast.enabled = enabled + floor_l_raycast.enabled = enabled + floor_r_raycast.enabled = enabled + slope_l_raycast.enabled = enabled + slope_r_raycast.enabled = enabled + +func set_can_gameplay_input(value: bool) -> void: + if can_gameplay_input != value: + can_gameplay_input = value + +func set_one_way_mask_value(mask_name: String, value: bool)-> void: + if mask_name == 'on_way_floor': + self.set_collision_mask_value(21,value) + elif mask_name == 'rope': + self.set_collision_mask_value(26,value) + elif mask_name == 'all': + self.set_collision_mask_value(26,value) + self.set_collision_mask_value(21,value) + +func is_on_slope() -> String: + if floor_raycast.is_colliding() and floor_l_raycast.is_colliding() and floor_r_raycast.is_colliding(): + return "" + if slope_l_raycast.is_colliding(): + return "L" + if slope_r_raycast.is_colliding(): + return "R" + return "" + +func is_on_ground(): + #if self.is_on_floor() and floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding(): + if self.is_on_floor() and (floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding() or floor_l_raycast.is_colliding() or floor_r_raycast.is_colliding() or is_on_rope()): + return true + else: + return false + +func is_on_one_way_ground(): + return one_way_floor_raycast.is_colliding() + +func face_wall(): + return wall_raycast.is_colliding() + +func is_on_rope(): + return rope_raycast.is_colliding() or rope_raycast_l.is_colliding() or rope_raycast_r.is_colliding() + +func rope_check() -> void: + # 创建射线数组以便统一处理 + var raycasts = [rope_raycast, rope_raycast_l, rope_raycast_r] + var has_rope_contact = false + var current_rope = null + var current_collider = null + + # 遍历所有射线 + for raycast in raycasts: + if raycast.is_colliding(): + var collider = raycast.get_collider() + + # 如果碰撞到的是绳索部件 + if collider: + has_rope_contact = true + current_collider = collider + current_rope = collider.get_parent().get_parent() + break # 找到第一个有效的绳索碰撞就退出循环 + + # 处理绳索接触逻辑 + if has_rope_contact: + if !_last_rope_contact: # 首次接触绳索 + _last_rope_contact = true + rope = current_rope + # 每帧都更新绳索接触点 + if rope.has_method("handle_player_rope_contact"): + rope.handle_player_rope_contact(current_collider) + elif _last_rope_contact: # 失去接触 + _last_rope_contact = false + if rope.has_method("handle_player_rope_exit"): + rope.handle_player_rope_exit() + rope = null diff --git a/Char/Player/Shadow/Player_Base.gd.uid b/Char/Player/Shadow/Player_Base.gd.uid new file mode 100644 index 0000000..6f78e25 --- /dev/null +++ b/Char/Player/Shadow/Player_Base.gd.uid @@ -0,0 +1 @@ +uid://hc5g8caqvo8c diff --git a/Char/Player/Shadow/Shadow.tscn b/Char/Player/Shadow/Shadow.tscn new file mode 100644 index 0000000..a100742 --- /dev/null +++ b/Char/Player/Shadow/Shadow.tscn @@ -0,0 +1,1036 @@ +[gd_scene load_steps=47 format=3 uid="uid://clbhclvndl73s"] + +[ext_resource type="Script" uid="uid://cy77v0f8ysxdn" path="res://Char/Player/States/Player_State_Machine.gd" id="1_8b1ok"] +[ext_resource type="PackedScene" uid="uid://dd7k3qbsw1bhq" path="res://Char/Char_Components/After_Image/after_image_component.tscn" id="2_decx5"] +[ext_resource type="Script" uid="uid://c3evnbnu55wyg" path="res://Char/Player/States/Player_Idle_Battle.gd" id="3_pu8qh"] +[ext_resource type="PackedScene" uid="uid://dkgg53dn8lr3k" path="res://Char/Char_Components/Petals_Leaves/Sakura_Component.tscn" id="3_q3boy"] +[ext_resource type="Script" uid="uid://ivsb676j6ymo" path="res://Char/Player/States/Player_Run.gd" id="4_8gmn7"] +[ext_resource type="Script" uid="uid://usn2b841v0e" path="res://Char/Player/States/Player_Run_To_Idle.gd" id="5_o8lre"] +[ext_resource type="Script" uid="uid://b3qdqr4f88tel" path="res://Char/Player/States/Player_Jump.gd" id="6_pj6pc"] +[ext_resource type="Script" uid="uid://lip17xk6ycgj" path="res://Char/Player/States/Player_Squat.gd" id="6_rk7vx"] +[ext_resource type="Script" uid="uid://blmxhheiqno3m" path="res://Char/Player/States/Player_Roll.gd" id="7_f3k8f"] +[ext_resource type="Script" uid="uid://dx7idxrq88pha" path="res://Char/Player/States/Player_Fall.gd" id="7_l6ktk"] +[ext_resource type="Script" uid="uid://b3ovdc2fiasfo" path="res://Char/Player/States/Player_Wall_Slide.gd" id="8_0jioi"] +[ext_resource type="Script" uid="uid://b71px30wip3gu" path="res://Char/Player/States/Player_Wall_Jump.gd" id="9_omn5s"] +[ext_resource type="Script" uid="uid://be7lbkwkjnli7" path="res://Char/Player/States/Player_Attack.gd" id="12_qfaga"] +[ext_resource type="Texture2D" uid="uid://lrtnjluxb6yv" path="res://Char/Player/Shadow/Art/attack.png" id="15_ej1a7"] +[ext_resource type="Texture2D" uid="uid://e4kcxlgaihk3" path="res://Char/Player/Shadow/Art/jump.png" id="18_uw7wr"] +[ext_resource type="Texture2D" uid="uid://csiepgsoqspfg" path="res://Char/Player/Shadow/Art/roll.png" id="19_wrj2y"] +[ext_resource type="Texture2D" uid="uid://cdm13dsiyl6v2" path="res://Char/Player/Shadow/Art/wall_jump.png" id="23_d7rnr"] +[ext_resource type="Texture2D" uid="uid://demy7blir6oe3" path="res://Char/Player/Shadow/Art/idle_battle.png" id="23_ghobu"] +[ext_resource type="Texture2D" uid="uid://cd0vubrirnt5c" path="res://Char/Player/Shadow/Art/squat.png" id="28_0cch5"] +[ext_resource type="Texture2D" uid="uid://b1072sap5bgkb" path="res://Char/Player/Shadow/Art/wall_slide.png" id="33_gn6av"] +[ext_resource type="Texture2D" uid="uid://c2ug3srik26lk" path="res://Char/Player/Shadow/Art/run_to_idle.png" id="35_hn0oh"] +[ext_resource type="Texture2D" uid="uid://bcd7fyuacobpj" path="res://Char/Player/Shadow/Art/run.png" id="35_neogm"] +[ext_resource type="Texture2D" uid="uid://co7hggu2mljlb" path="res://Char/Player/Dragon/Art/spr_dragon_attack_0.png" id="67_r4cet"] +[ext_resource type="Texture2D" uid="uid://bged4gw2kxak4" path="res://Char/Player/Dragon/Art/spr_dragon_attack_1.png" id="68_yibrd"] +[ext_resource type="PackedScene" uid="uid://c4ighm8k5x65y" path="res://Char/Player/Player_Components/player_attack_component.tscn" id="72_m8ad3"] +[ext_resource type="PackedScene" uid="uid://dnlln6iv8ksy2" path="res://Char/Player/Player_Components/hit_stop_component.tscn" id="74_nx5vo"] +[ext_resource type="Script" uid="uid://btvbc6o6gwpms" path="res://Char/Char_Components/fx_component.gd" id="74_x0fc2"] +[ext_resource type="PackedScene" uid="uid://mhcxla3f3vac" path="res://Char/Player/Player_Components/hit_queue_processor.tscn" id="75_cx437"] +[ext_resource type="PackedScene" uid="uid://b6sngy5ab6s24" path="res://Char/Player/Player_Components/player_dash_component.tscn" id="75_r8ire"] + +[sub_resource type="GDScript" id="GDScript_8meo2"] +script/source = "extends CharacterBody2D + +var gravity = ProjectSettings.get_setting(\"physics/2d/default_gravity\") +@onready var floor_raycast = self.get_node(\"Detector/Floor\") +@onready var floor_l_raycast = self.get_node(\"Detector/Floor_L\") +@onready var floor_r_raycast = self.get_node(\"Detector/Floor_R\") +@onready var slope_l_raycast = self.get_node(\"Detector/Slope_L\") +@onready var slope_r_raycast = self.get_node(\"Detector/Slope_R\") +@onready var one_way_floor_raycast = self.get_node(\"Detector/One_Way_Floor\") +@onready var rope_raycast = self.get_node(\"Detector/Rope\") +@onready var rope_raycast_l = self.get_node(\"Detector/Rope_L\") +@onready var rope_raycast_r = self.get_node(\"Detector/Rope_R\") +@onready var wall_raycast = self.get_node(\"Detector/Wall/Wall\") + +var can_attack = true +var can_dash = true +var add_attack_up_velocity = true +var can_gameplay_input = true + +# 绳索 +var _last_rope_contact := false +var rope : Node2D = null + +func _physics_process(_delta): + rope_check() + +func set_floor_raycasts_enabled(enabled: bool) -> void: + floor_raycast.enabled = enabled + floor_l_raycast.enabled = enabled + floor_r_raycast.enabled = enabled + slope_l_raycast.enabled = enabled + slope_r_raycast.enabled = enabled + +func set_can_gameplay_input(value: bool) -> void: + if can_gameplay_input != value: + can_gameplay_input = value + +func set_one_way_mask_value(mask_name: String, value: bool)-> void: + if mask_name == 'on_way_floor': + self.set_collision_mask_value(21,value) + elif mask_name == 'rope': + self.set_collision_mask_value(26,value) + elif mask_name == 'all': + self.set_collision_mask_value(26,value) + self.set_collision_mask_value(21,value) + +func is_on_slope() -> String: + if floor_raycast.is_colliding() and floor_l_raycast.is_colliding() and floor_r_raycast.is_colliding(): + return \"\" + if slope_l_raycast.is_colliding(): + return \"L\" + if slope_r_raycast.is_colliding(): + return \"R\" + return \"\" + +func is_on_ground(): + #if self.is_on_floor() and floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding(): + if self.is_on_floor() and (floor_raycast.is_colliding() or slope_l_raycast.is_colliding() or slope_r_raycast.is_colliding() or floor_l_raycast.is_colliding() or floor_r_raycast.is_colliding() or is_on_rope()): + return true + else: + return false + +func is_on_one_way_ground(): + return one_way_floor_raycast.is_colliding() + +func face_wall(): + return wall_raycast.is_colliding() + +func is_on_rope(): + return rope_raycast.is_colliding() or rope_raycast_l.is_colliding() or rope_raycast_r.is_colliding() + +func rope_check() -> void: + # 创建射线数组以便统一处理 + var raycasts = [rope_raycast, rope_raycast_l, rope_raycast_r] + var has_rope_contact = false + var current_rope = null + var current_collider = null + + # 遍历所有射线 + for raycast in raycasts: + if raycast.is_colliding(): + var collider = raycast.get_collider() + + # 如果碰撞到的是绳索部件 + if collider: + has_rope_contact = true + current_collider = collider + current_rope = collider.get_parent().get_parent() + break # 找到第一个有效的绳索碰撞就退出循环 + + # 处理绳索接触逻辑 + if has_rope_contact: + if !_last_rope_contact: # 首次接触绳索 + _last_rope_contact = true + rope = current_rope + # 每帧都更新绳索接触点 + if rope.has_method(\"handle_player_rope_contact\"): + rope.handle_player_rope_contact(current_collider) + elif _last_rope_contact: # 失去接触 + _last_rope_contact = false + if rope.has_method(\"handle_player_rope_exit\"): + rope.handle_player_rope_exit() + rope = null +" + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g868p"] +radius = 22.0 +height = 60.0 + +[sub_resource type="Animation" id="Animation_otybg"] +resource_name = "Attack" +length = 0.3 +step = 0.01 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("15_ej1a7")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.02, 0.22, 0.23, 0.24, 0.25, 0.26), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Vector2(-13, -29), Vector2(-20, -27), Vector2(-18, -32), Vector2(-14, -32), Vector2(7, -34), Vector2(8, -33), Vector2(0, -34)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:region_rect") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.02, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(488, 26, 61, 57), Rect2(12, 130, 77, 54), Rect2(328, 121, 79, 63), Rect2(15, 217, 71, 70), Rect2(199, 217, 65, 67), Rect2(360, 219, 62, 65), Rect2(518, 216, 45, 68), Rect2(38, 316, 44, 68)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.02), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [0.305433, 0.0] +} + +[sub_resource type="Animation" id="Animation_sem5a"] +resource_name = "Dash_1" +length = 0.1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("68_yibrd")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1.78814e-06, -30)] +} + +[sub_resource type="Animation" id="Animation_mcrul"] +resource_name = "Dash_2" +length = 0.1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("67_r4cet")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(13, -30)] +} + +[sub_resource type="Animation" id="Animation_caa4o"] +resource_name = "Fall" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("18_uw7wr")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [Vector2(4, -31), Vector2(1, -39), Vector2(4, -42)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [Rect2(35, 231, 59, 61), Rect2(150, 215, 64, 77), Rect2(273, 209, 62, 83)] +} + +[sub_resource type="Animation" id="Animation_wspq3"] +resource_name = "Idle_Battle" +length = 0.8 +loop_mode = 1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 0.3, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Vector2(4, -34), Vector2(4, -33), Vector2(4, -34), Vector2(3, -34), Vector2(2, -33), Vector2(3, -34)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("AnimationPlayer:speed_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:texture") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("23_ghobu")] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(25, 17, 51, 67), Rect2(125, 17, 51, 67), Rect2(225, 18, 50, 66), Rect2(325, 17, 51, 67), Rect2(25, 117, 51, 67), Rect2(125, 117, 49, 67), Rect2(225, 118, 46, 66), Rect2(325, 117, 48, 67)] +} + +[sub_resource type="Animation" id="Animation_rtm6k"] +resource_name = "Jump" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("18_uw7wr")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(2, -35.2), Vector2(2, -39), Vector2(5, -37), Vector2(7, -35)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Rect2(41, 121, 38, 71), Rect2(159, 115, 46, 77), Rect2(279, 118, 51, 74), Rect2(399, 123, 54, 69)] +} + +[sub_resource type="Animation" id="Animation_sy4nv"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("23_ghobu")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(4, -34)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("../Hurt/CollisionShape2D:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:region_rect") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Rect2(25, 17, 51, 67)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Sprite2D:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="Animation" id="Animation_hwf1e"] +resource_name = "Roll" +length = 0.28 +step = 0.02 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("19_wrj2y")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.1, 0.16, 0.24), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [Vector2(2, -41), Vector2(2, -37), Vector2(2, -25), Vector2(2, -29)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.28), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.5, 1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("../Hurt/CollisionShape2D:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:region_rect") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 0.22, 0.24, 0.26), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(0, 0, 96, 88), Rect2(104, 0, 96, 88), Rect2(200, 0, 96, 88), Rect2(304, 0, 96, 88), Rect2(0, 104, 96, 88), Rect2(96, 104, 96, 88), Rect2(200, 104, 96, 88), Rect2(304, 104, 96, 88), Rect2(0, 216, 96, 88), Rect2(104, 216, 96, 88), Rect2(208, 216, 88, 88), Rect2(304, 216, 88, 88), Rect2(8, 320, 88, 72), Rect2(104, 320, 88, 72)] +} + +[sub_resource type="Animation" id="Animation_arpr5"] +resource_name = "Run" +loop_mode = 1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("35_neogm")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.1, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Vector2(-1, -33), Vector2(-2, -31), Vector2(-2, -30), Vector2(-2, -31.5), Vector2(-2, -32.5), Vector2(-2, -31.5), Vector2(-2, -31), Vector2(-2, -30), Vector2(-2, -31.5)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.3] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(29, 17, 61, 66), Rect2(147, 21, 61, 62), Rect2(266, 21, 61, 62), Rect2(386, 20, 63, 60), Rect2(27, 119, 65, 62), Rect2(148, 117, 63, 66), Rect2(268, 120, 60, 63), Rect2(388, 121, 61, 62), Rect2(30, 220, 61, 60), Rect2(149, 220, 63, 61)] +} + +[sub_resource type="Animation" id="Animation_jv5y0"] +resource_name = "Run_To_Idle" +length = 0.35 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("35_hn0oh")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Vector2(-12, -31), Vector2(-6, -31), Vector2(-4, -32), Vector2(-2, -32.5), Vector2(0, -33), Vector2(1, -33), Vector2(4, -34)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("../Player_State_Machine/Run_To_Idle") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.05), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"_floor_dust" +}] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:region_rect") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(0, 22, 67, 62), Rect2(116, 22, 58, 62), Rect2(228, 21, 49, 63), Rect2(329, 21, 49, 63), Rect2(35, 119, 43, 65), Rect2(140, 119, 39, 65), Rect2(239, 117, 51, 67)] +} + +[sub_resource type="Animation" id="Animation_fdmlk"] +resource_name = "Squat" +length = 0.16 +step = 0.02 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("28_0cch5")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [Vector2(-3, -34)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.16), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [0.5, 1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(0, 0, 80, 80), Rect2(80, 0, 80, 80), Rect2(160, 0, 80, 80), Rect2(240, 0, 80, 80), Rect2(0, 80, 80, 80), Rect2(80, 80, 80, 80), Rect2(160, 80, 80, 80), Rect2(240, 80, 80, 80)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite2D:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="Animation" id="Animation_sybvl"] +resource_name = "Wall_Jump" +length = 0.65 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("23_d7rnr")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [Vector2(2, -27)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AnimationPlayer:speed_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [2.5] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:region_rect") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(88, 8, 64, 88), Rect2(168, 8, 64, 88), Rect2(248, 8, 72, 88), Rect2(328, 8, 72, 88), Rect2(408, 8, 72, 88), Rect2(8, 104, 72, 96), Rect2(88, 104, 72, 96), Rect2(168, 104, 72, 96), Rect2(248, 104, 72, 96)] +} + +[sub_resource type="Animation" id="Animation_fiuvk"] +resource_name = "Wall_Slide" +length = 0.6 +loop_mode = 1 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [ExtResource("33_gn6av")] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite2D:region_rect") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [Rect2(16, 104, 48, 96), Rect2(96, 104, 48, 96), Rect2(176, 104, 48, 96), Rect2(256, 104, 48, 96), Rect2(16, 104, 48, 96), Rect2(96, 104, 48, 96), Rect2(176, 104, 48, 96), Rect2(256, 104, 48, 96), Rect2(16, 104, 48, 96), Rect2(96, 104, 48, 96), Rect2(176, 104, 48, 96), Rect2(256, 104, 48, 96)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite2D:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite2D:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -30)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("AnimationPlayer:speed_scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.5] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_irhps"] +_data = { +&"Attack": SubResource("Animation_otybg"), +&"Dash_1": SubResource("Animation_sem5a"), +&"Dash_2": SubResource("Animation_mcrul"), +&"Fall": SubResource("Animation_caa4o"), +&"Idle_Battle": SubResource("Animation_wspq3"), +&"Jump": SubResource("Animation_rtm6k"), +&"RESET": SubResource("Animation_sy4nv"), +&"Roll": SubResource("Animation_hwf1e"), +&"Run": SubResource("Animation_arpr5"), +&"Run_To_Idle": SubResource("Animation_jv5y0"), +&"Squat": SubResource("Animation_fdmlk"), +&"Wall_Jump": SubResource("Animation_sybvl"), +&"Wall_Slide": SubResource("Animation_fiuvk") +} + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_dcd6n"] +radius = 13.0 +height = 60.0 + +[node name="Player" type="CharacterBody2D" groups=["Player"]] +z_index = 6 +collision_mask = 66584576 +floor_constant_speed = true +floor_max_angle = 1.0472 +floor_snap_length = 10.0 +platform_on_leave = 2 +platform_floor_layers = 18350080 +platform_wall_layers = 2097152 +script = SubResource("GDScript_8meo2") + +[node name="After_Image_Component" parent="." instance=ExtResource("2_decx5")] + +[node name="Sakura_Component" parent="." instance=ExtResource("3_q3boy")] + +[node name="Player_State_Machine" type="Node" parent="."] +script = ExtResource("1_8b1ok") + +[node name="Idle_Battle" type="Node" parent="Player_State_Machine"] +script = ExtResource("3_pu8qh") + +[node name="Run" type="Node" parent="Player_State_Machine"] +script = ExtResource("4_8gmn7") + +[node name="Run_To_Idle" type="Node" parent="Player_State_Machine"] +script = ExtResource("5_o8lre") + +[node name="Squat" type="Node" parent="Player_State_Machine"] +script = ExtResource("6_rk7vx") + +[node name="Roll" type="Node" parent="Player_State_Machine"] +script = ExtResource("7_f3k8f") + +[node name="Jump" type="Node" parent="Player_State_Machine"] +script = ExtResource("6_pj6pc") + +[node name="Fall" type="Node" parent="Player_State_Machine"] +script = ExtResource("7_l6ktk") + +[node name="Wall_Slide" type="Node" parent="Player_State_Machine"] +script = ExtResource("8_0jioi") + +[node name="Wall_Jump" type="Node" parent="Player_State_Machine"] +script = ExtResource("9_omn5s") + +[node name="Attack" type="Node" parent="Player_State_Machine"] +script = ExtResource("12_qfaga") + +[node name="Body_Physics" type="CollisionShape2D" parent="."] +visible = false +position = Vector2(0, -30) +shape = SubResource("CapsuleShape2D_g868p") + +[node name="Body_Animation" type="Node2D" parent="."] +metadata/_edit_lock_ = true + +[node name="Sprite2D" type="Sprite2D" parent="Body_Animation"] +position = Vector2(4, -34) +texture = ExtResource("23_ghobu") +region_enabled = true +region_rect = Rect2(25, 17, 51, 67) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Body_Animation"] +libraries = { +&"": SubResource("AnimationLibrary_irhps") +} + +[node name="Detector" type="Node2D" parent="."] + +[node name="Wall" type="Node2D" parent="Detector"] + +[node name="Wall" type="RayCast2D" parent="Detector/Wall"] +position = Vector2(0, -34) +target_position = Vector2(26, 0) +collision_mask = 2097152 + +[node name="Floor" type="RayCast2D" parent="Detector"] +target_position = Vector2(0, 8) +collision_mask = 35127296 + +[node name="Floor_L" type="RayCast2D" parent="Detector"] +target_position = Vector2(-8, 8) +collision_mask = 18350080 + +[node name="Floor_R" type="RayCast2D" parent="Detector"] +target_position = Vector2(8, 8) +collision_mask = 18350080 + +[node name="Rope" type="RayCast2D" parent="Detector"] +target_position = Vector2(0, 15) +collision_mask = 33554432 + +[node name="Rope_L" type="RayCast2D" parent="Detector"] +target_position = Vector2(-9, 15) +collision_mask = 33554432 + +[node name="Rope_R" type="RayCast2D" parent="Detector"] +target_position = Vector2(10, 15) +collision_mask = 33554432 + +[node name="Slope_L" type="RayCast2D" parent="Detector"] +position = Vector2(0, -3) +target_position = Vector2(-15, 0) +collision_mask = 16777216 +hit_from_inside = true + +[node name="Slope_R" type="RayCast2D" parent="Detector"] +position = Vector2(0, -3) +target_position = Vector2(15, 0) +collision_mask = 16777216 +hit_from_inside = true + +[node name="One_Way_Floor" type="RayCast2D" parent="Detector"] +visible = false +target_position = Vector2(0, 10) +collision_mask = 1048576 + +[node name="Hit" type="Node2D" parent="."] + +[node name="Player_Attack_Component" parent="Hit" instance=ExtResource("72_m8ad3")] +position = Vector2(0, -25) + +[node name="Player_Dash_Component" parent="Hit" instance=ExtResource("75_r8ire")] +position = Vector2(0, -28) + +[node name="Hit_Queue_Processor" parent="Hit" instance=ExtResource("75_cx437")] + +[node name="Hit_Stop_Component" parent="Hit" instance=ExtResource("74_nx5vo")] + +[node name="Hurt" type="Area2D" parent="."] +visible = false +metadata/_edit_lock_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurt"] +position = Vector2(0, -30) +shape = SubResource("CapsuleShape2D_dcd6n") +debug_color = Color(0.913161, 0.221281, 0.489025, 0.42) + +[node name="Cameras" type="Node2D" parent="."] +visible = false + +[node name="Camera" type="Camera2D" parent="Cameras"] +zoom = Vector2(1.3, 1.3) +limit_left = -16 +limit_top = 0 +limit_right = 1726 +limit_bottom = 435 +position_smoothing_enabled = true + +[node name="Camera_Shake" type="Camera2D" parent="Cameras"] +enabled = false +zoom = Vector2(1.3, 1.3) + +[node name="FX_Component" type="Node2D" parent="."] +script = ExtResource("74_x0fc2") + +[node name="pos_wall_jump_dust" type="Marker2D" parent="FX_Component"] +position = Vector2(0, -23) diff --git a/Char/Player/Shadow/Tres/fall_0.tres b/Char/Player/Shadow/Tres/fall_0.tres new file mode 100644 index 0000000..2f711ad --- /dev/null +++ b/Char/Player/Shadow/Tres/fall_0.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://cvvonlws7ekre"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_tacr7"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_xned4"] + +[resource] +diffuse_texture = ExtResource("1_tacr7") +normal_texture = ExtResource("2_xned4") diff --git a/Char/Player/Shadow/Tres/fall_1.tres b/Char/Player/Shadow/Tres/fall_1.tres new file mode 100644 index 0000000..a9c5278 --- /dev/null +++ b/Char/Player/Shadow/Tres/fall_1.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bxmiek382rxlh"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_mrvit"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_me50u"] + +[resource] +diffuse_texture = ExtResource("1_mrvit") +normal_texture = ExtResource("2_me50u") diff --git a/Char/Player/Shadow/Tres/fall_2.tres b/Char/Player/Shadow/Tres/fall_2.tres new file mode 100644 index 0000000..e25dcaa --- /dev/null +++ b/Char/Player/Shadow/Tres/fall_2.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://c10gmbpp4vs6b"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_eekxp"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_71ito"] + +[resource] +diffuse_texture = ExtResource("1_eekxp") +normal_texture = ExtResource("2_71ito") diff --git a/Char/Player/Shadow/Tres/fall_3.tres b/Char/Player/Shadow/Tres/fall_3.tres new file mode 100644 index 0000000..10cf43b --- /dev/null +++ b/Char/Player/Shadow/Tres/fall_3.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://byvo5gusdpsc2"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_xm7ol"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_fff7r"] + +[resource] +diffuse_texture = ExtResource("1_xm7ol") +normal_texture = ExtResource("2_fff7r") diff --git a/Char/Player/Shadow/Tres/idle_0.tres b/Char/Player/Shadow/Tres/idle_0.tres new file mode 100644 index 0000000..3255952 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_0.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://dixrqik2osxgv"] + +[ext_resource type="Texture2D" uid="uid://dlxfait3256b8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.png" id="1_e2hk0"] +[ext_resource type="Texture2D" uid="uid://ds0hcvo0ctxie" path="res://Char/Player/Dragon/Art/spr_dragon_idle_0.normal.png" id="2_r0w35"] + +[resource] +diffuse_texture = ExtResource("1_e2hk0") +normal_texture = ExtResource("2_r0w35") diff --git a/Char/Player/Shadow/Tres/idle_1.tres b/Char/Player/Shadow/Tres/idle_1.tres new file mode 100644 index 0000000..c67904c --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_1.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bsdmqi5o51kne"] + +[ext_resource type="Texture2D" uid="uid://cyrddnhdejex2" path="res://Char/Player/Dragon/Art/spr_dragon_idle_1.png" id="1_8jg5v"] +[ext_resource type="Texture2D" uid="uid://bmkjjq2g8yb7a" path="res://Char/Player/Dragon/Art/spr_dragon_idle_1.normal.png" id="2_j8jjv"] + +[resource] +diffuse_texture = ExtResource("1_8jg5v") +normal_texture = ExtResource("2_j8jjv") diff --git a/Char/Player/Shadow/Tres/idle_10.tres b/Char/Player/Shadow/Tres/idle_10.tres new file mode 100644 index 0000000..8039eb5 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_10.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://dl12ugckudcf8"] + +[ext_resource type="Texture2D" uid="uid://docua10e7sugj" path="res://Char/Player/Dragon/Art/spr_dragon_idle_10.png" id="1_7006c"] +[ext_resource type="Texture2D" uid="uid://b12asxwmq6k0g" path="res://Char/Player/Dragon/Art/spr_dragon_idle_10.normal.png" id="2_rtlmv"] + +[resource] +diffuse_texture = ExtResource("1_7006c") +normal_texture = ExtResource("2_rtlmv") diff --git a/Char/Player/Shadow/Tres/idle_11.tres b/Char/Player/Shadow/Tres/idle_11.tres new file mode 100644 index 0000000..c62b74c --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_11.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://daiyb2afxug4x"] + +[ext_resource type="Texture2D" uid="uid://d2ibsjy2r2d1r" path="res://Char/Player/Dragon/Art/spr_dragon_idle_11.png" id="1_w53xr"] +[ext_resource type="Texture2D" uid="uid://js8qlguk4jow" path="res://Char/Player/Dragon/Art/spr_dragon_idle_11.normal.png" id="2_xoet7"] + +[resource] +diffuse_texture = ExtResource("1_w53xr") +normal_texture = ExtResource("2_xoet7") diff --git a/Char/Player/Shadow/Tres/idle_2.tres b/Char/Player/Shadow/Tres/idle_2.tres new file mode 100644 index 0000000..21fbd22 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_2.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://drbbua8t6sdeb"] + +[ext_resource type="Texture2D" uid="uid://dpjxum07dbwf7" path="res://Char/Player/Dragon/Art/spr_dragon_idle_2.png" id="1_scvon"] +[ext_resource type="Texture2D" uid="uid://sts53xjilk7f" path="res://Char/Player/Dragon/Art/spr_dragon_idle_2.normal.png" id="2_q5a7j"] + +[resource] +diffuse_texture = ExtResource("1_scvon") +normal_texture = ExtResource("2_q5a7j") diff --git a/Char/Player/Shadow/Tres/idle_3.tres b/Char/Player/Shadow/Tres/idle_3.tres new file mode 100644 index 0000000..5e00fc4 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_3.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://lw2xfg6cvgox"] + +[ext_resource type="Texture2D" uid="uid://brgwp0glr18xq" path="res://Char/Player/Dragon/Art/spr_dragon_idle_3.png" id="1_kbu0h"] +[ext_resource type="Texture2D" uid="uid://bh778kjsncdv8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_3.normal.png" id="2_2x3cc"] + +[resource] +diffuse_texture = ExtResource("1_kbu0h") +normal_texture = ExtResource("2_2x3cc") diff --git a/Char/Player/Shadow/Tres/idle_4.tres b/Char/Player/Shadow/Tres/idle_4.tres new file mode 100644 index 0000000..934a0fd --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_4.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bmer14ei54g3"] + +[ext_resource type="Texture2D" uid="uid://c2gg2hm7rdt0t" path="res://Char/Player/Dragon/Art/spr_dragon_idle_4.png" id="1_lidrm"] +[ext_resource type="Texture2D" uid="uid://b0al80h3n7bxt" path="res://Char/Player/Dragon/Art/spr_dragon_idle_4.normal.png" id="2_anmpp"] + +[resource] +diffuse_texture = ExtResource("1_lidrm") +normal_texture = ExtResource("2_anmpp") diff --git a/Char/Player/Shadow/Tres/idle_5.tres b/Char/Player/Shadow/Tres/idle_5.tres new file mode 100644 index 0000000..ff4ad01 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_5.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bbvoouy3cf1jt"] + +[ext_resource type="Texture2D" uid="uid://qlvxsg5iax8c" path="res://Char/Player/Dragon/Art/spr_dragon_idle_5.png" id="1_rj25j"] +[ext_resource type="Texture2D" uid="uid://dgobekecpv8kv" path="res://Char/Player/Dragon/Art/spr_dragon_idle_5.normal.png" id="2_l0ift"] + +[resource] +diffuse_texture = ExtResource("1_rj25j") +normal_texture = ExtResource("2_l0ift") diff --git a/Char/Player/Shadow/Tres/idle_6.tres b/Char/Player/Shadow/Tres/idle_6.tres new file mode 100644 index 0000000..45d81ea --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_6.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://dxcmvc8y5m3bt"] + +[ext_resource type="Texture2D" uid="uid://cnxu51medgdpe" path="res://Char/Player/Dragon/Art/spr_dragon_idle_6.png" id="1_8d17g"] +[ext_resource type="Texture2D" uid="uid://do7wf0i2upqjp" path="res://Char/Player/Dragon/Art/spr_dragon_idle_6.normal.png" id="2_mk7iu"] + +[resource] +diffuse_texture = ExtResource("1_8d17g") +normal_texture = ExtResource("2_mk7iu") diff --git a/Char/Player/Shadow/Tres/idle_7.tres b/Char/Player/Shadow/Tres/idle_7.tres new file mode 100644 index 0000000..43d3ee7 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_7.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://b7nw17p8kkg6b"] + +[ext_resource type="Texture2D" uid="uid://bt77wxum4koix" path="res://Char/Player/Dragon/Art/spr_dragon_idle_7.png" id="1_degof"] +[ext_resource type="Texture2D" uid="uid://btiheicliiqf8" path="res://Char/Player/Dragon/Art/spr_dragon_idle_7.normal.png" id="2_ckvrn"] + +[resource] +diffuse_texture = ExtResource("1_degof") +normal_texture = ExtResource("2_ckvrn") diff --git a/Char/Player/Shadow/Tres/idle_8.tres b/Char/Player/Shadow/Tres/idle_8.tres new file mode 100644 index 0000000..3f8cb36 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_8.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bayb1agp3jcis"] + +[ext_resource type="Texture2D" uid="uid://b8cs32aff7vah" path="res://Char/Player/Dragon/Art/spr_dragon_idle_8.png" id="1_pxjlp"] +[ext_resource type="Texture2D" uid="uid://lu15sul1g373" path="res://Char/Player/Dragon/Art/spr_dragon_idle_8.normal.png" id="2_2y8pf"] + +[resource] +diffuse_texture = ExtResource("1_pxjlp") +normal_texture = ExtResource("2_2y8pf") diff --git a/Char/Player/Shadow/Tres/idle_9.tres b/Char/Player/Shadow/Tres/idle_9.tres new file mode 100644 index 0000000..50a82f7 --- /dev/null +++ b/Char/Player/Shadow/Tres/idle_9.tres @@ -0,0 +1,8 @@ +[gd_resource type="CanvasTexture" load_steps=3 format=3 uid="uid://bm2fh2ats20mm"] + +[ext_resource type="Texture2D" uid="uid://bd537mp4lvwib" path="res://Char/Player/Dragon/Art/spr_dragon_idle_9.png" id="1_u523k"] +[ext_resource type="Texture2D" uid="uid://bnn8arkjtbwqm" path="res://Char/Player/Dragon/Art/spr_dragon_idle_9.normal.png" id="2_v3lwd"] + +[resource] +diffuse_texture = ExtResource("1_u523k") +normal_texture = ExtResource("2_v3lwd") diff --git a/Char/Player/States/Player_Attack.gd b/Char/Player/States/Player_Attack.gd new file mode 100644 index 0000000..bd4f4e3 --- /dev/null +++ b/Char/Player/States/Player_Attack.gd @@ -0,0 +1,58 @@ +# Player_Attack.gd +extends State + +func enter() -> void: + # 更新朝向 + update_facing_by_velocity() + animation_player.play("Attack") + + after_image_component.start() + +func physics_update(delta: float) -> void: + # 应用重力 + player.velocity.y += player.gravity * delta + + # 移动角色 + player.move_and_slide() + + # 只有在攻击动画播放完毕且不在冻结状态时才允许状态转换 + if not animation_player.is_playing(): + # 检查各种输入并转换状态 + var direction = check_gameplay_input_axis("ui_left", "ui_right") + + if check_gameplay_input_just_pressed("ui_down") and direction != 0: + state_machine.change_state("roll") + return + + if check_gameplay_input_pressed("ui_down"): + state_machine.change_state("squat") + return + + if not player.is_on_ground(): + state_machine.change_state("fall") + return + + if check_gameplay_input_just_pressed("ui_up"): + player.floor_raycast.enabled = false + player.slope_l_raycast.enabled = false + player.slope_r_raycast.enabled = false + state_machine.change_state("jump") + return + + # 有方向输入时转换到run状态 + if direction != 0: + state_machine.change_state("run") + return + + # 如果有速度但没有方向输入,转换到run_to_idle状态 + if abs(player.velocity.x) > VELOCITY_THRESHOLD: + state_machine.change_state("run_to_idle") + return + + # 如果没有其他条件满足,返回到战斗待机状态 + state_machine.change_state("idle_battle") + +func exit() -> void: + fade_out_shader_effect() + after_image_component.stop() + pass diff --git a/Char/Player/States/Player_Attack.gd.uid b/Char/Player/States/Player_Attack.gd.uid new file mode 100644 index 0000000..99a546b --- /dev/null +++ b/Char/Player/States/Player_Attack.gd.uid @@ -0,0 +1 @@ +uid://be7lbkwkjnli7 diff --git a/Char/Player/States/Player_Fall.gd b/Char/Player/States/Player_Fall.gd new file mode 100644 index 0000000..9f4c3d8 --- /dev/null +++ b/Char/Player/States/Player_Fall.gd @@ -0,0 +1,64 @@ +# Fall.gd +extends State + +func enter() -> void: + #如果向下有速度,斜坡往下滑 + player.set_floor_stop_on_slope_enabled(false) + animation_player.play("Fall") + +func physics_update(delta: float) -> void: + var direction = check_gameplay_input_axis("ui_left", "ui_right") + #var wall_raycast = player.get_node("Detector/Wall/Wall") + + # 检查滑墙条件 + if player.face_wall(): + var wall_normal = player.wall_raycast.get_collision_normal().x + var facing_direction = player.get_node("Body_Animation").scale.x + if facing_direction == -sign(wall_normal): + state_machine.change_state("wall_slide") + return + + # 处理水平移动 + if direction: + var current_direction = sign(player.velocity.x) + if current_direction != 0 and current_direction != direction: + # 反向加速,使用基类常量 + var target_velocity = direction * AIR_SPEED + player.velocity.x = move_toward( + player.velocity.x, + target_velocity, + AIR_REVERSE_ACCELERATION * delta + ) + else: + # 正常加速 + player.velocity.x = move_toward( + player.velocity.x, + direction * AIR_SPEED, + AIR_REVERSE_ACCELERATION * delta + ) + # 更新朝向 + update_facing_direction(direction) + else: + # 没有按方向键时,应用空中阻力 + apply_deceleration(delta, false) + + if check_gameplay_input_pressed("ui_down"): + player.velocity.y = 800 + else: + # 应用重力 + player.velocity.y += player.gravity * delta + player.move_and_slide() + + # 状态转换检查 + if player.is_on_ground(): + if player.velocity.x == 0: + state_machine.change_state("idle_battle") + else: + state_machine.change_state("run_to_idle") + return + + if player.is_on_floor() and player.velocity.y >= 0 and player.velocity.y < 0.1 and not player.is_on_rope(): + player.set_one_way_mask_value("rope",false) + +func exit() -> void: + player.set_floor_stop_on_slope_enabled(true) diff --git a/Char/Player/States/Player_Fall.gd.uid b/Char/Player/States/Player_Fall.gd.uid new file mode 100644 index 0000000..32ebeb5 --- /dev/null +++ b/Char/Player/States/Player_Fall.gd.uid @@ -0,0 +1 @@ +uid://dx7idxrq88pha diff --git a/Char/Player/States/Player_Idle_Battle.gd b/Char/Player/States/Player_Idle_Battle.gd new file mode 100644 index 0000000..e3ecd8d --- /dev/null +++ b/Char/Player/States/Player_Idle_Battle.gd @@ -0,0 +1,47 @@ +# Idle_Battle.gd +extends State + +func enter() -> void: + player.set_one_way_mask_value("all",true) + player.add_attack_up_velocity = true + play_animation("Idle_Battle") + after_image_component.stop() + +func physics_update(delta: float) -> void: + # 获取水平输入方向 + var direction = check_gameplay_input_axis("ui_left", "ui_right") + + # 应用重力 + player.velocity.y += player.gravity * delta + + # Idle状态下逐渐停止水平移动 + player.velocity.x = move_toward(player.velocity.x, 0, 100.0) + + player.move_and_slide() + + # 移动后再检查地面状态 + if not player.is_on_ground(): + state_machine.change_state("fall") + return + + # 按下方向键 + if check_gameplay_input_just_pressed("ui_down"): + if player.is_on_rope() and not player.face_wall(): + player.set_one_way_mask_value("rope",false) + state_machine.change_state("fall") + return + if direction != 0: + state_machine.change_state("roll") + return + state_machine.change_state("squat") + return + + # 检查跳跃输入 + if check_gameplay_input_just_pressed("ui_up"): + state_machine.change_state("jump") + return + + # 检查移动输入 + if direction != 0: + state_machine.change_state("run") + return diff --git a/Char/Player/States/Player_Idle_Battle.gd.uid b/Char/Player/States/Player_Idle_Battle.gd.uid new file mode 100644 index 0000000..b4b12e0 --- /dev/null +++ b/Char/Player/States/Player_Idle_Battle.gd.uid @@ -0,0 +1 @@ +uid://c3evnbnu55wyg diff --git a/Char/Player/States/Player_Jump.gd b/Char/Player/States/Player_Jump.gd new file mode 100644 index 0000000..ae331e1 --- /dev/null +++ b/Char/Player/States/Player_Jump.gd @@ -0,0 +1,87 @@ +# Jump.gd +extends State + +var JUMP_VELOCITY = -500.0 +var INITIAL_X_VELOCITY = AIR_SPEED # 使用基类定义的速度 +#跳跃缓冲,主要为了解决斜坡向上跳的问题 +var jump_buffer_time := 0.1 +var current_jump_buffer := 0.0 + +func enter() -> void: + current_jump_buffer = jump_buffer_time + animation_player.play("Jump") + + if player.is_on_slope() != "": + JUMP_VELOCITY = -600.0 + INITIAL_X_VELOCITY = AIR_SPEED * 0.7 + else: + JUMP_VELOCITY = -500.0 + INITIAL_X_VELOCITY = AIR_SPEED + + # 进入跳跃状态时暂时禁用射线 + player.set_floor_raycasts_enabled(false) + + # 设置方向速度 + var direction = check_gameplay_input_axis("ui_left", "ui_right") + player.velocity.y = JUMP_VELOCITY + player.velocity.x = direction * INITIAL_X_VELOCITY + update_facing_direction(direction) + +func physics_update(delta: float) -> void: + # 更新跳跃缓冲时间 + if current_jump_buffer > 0: + current_jump_buffer -= delta + else: + player.set_floor_raycasts_enabled(true) + + var direction = check_gameplay_input_axis("ui_left", "ui_right") + # 检查滑墙条件 + if player.face_wall(): + var wall_normal = player.wall_raycast.get_collision_normal().x + var facing_direction = player.get_node("Body_Animation").scale.x + if facing_direction == -sign(wall_normal): + state_machine.change_state("wall_slide") + return + + # 处理水平移动 + if direction: + var current_direction = sign(player.velocity.x) + if current_direction != 0 and current_direction != direction: + # 反向加速,使用基类常量 + var target_velocity = direction * AIR_SPEED + player.velocity.x = move_toward( + player.velocity.x, + target_velocity, + AIR_REVERSE_ACCELERATION * delta + ) + elif current_direction == 0: + # 从静止开始移动 + player.velocity.x = direction * AIR_SPEED * delta + + # 更新朝向 + update_facing_direction(direction) + else: + # 没有按方向键时,应用空中阻力 + apply_deceleration(delta, false) + + if check_gameplay_input_pressed("ui_down"): + player.velocity.y = 800 + else: + # 应用重力 + player.velocity.y += player.gravity * delta + player.move_and_slide() + + # 状态转换检查 + if player.velocity.y > 0: + state_machine.change_state("fall") + return + + if player.is_on_ground(): + if abs(player.velocity.x) > 0: + state_machine.change_state("run_to_idle") + else: + state_machine.change_state("idle_battle") + return + +func exit() -> void: + player.set_floor_raycasts_enabled(true) diff --git a/Char/Player/States/Player_Jump.gd.uid b/Char/Player/States/Player_Jump.gd.uid new file mode 100644 index 0000000..4a8a378 --- /dev/null +++ b/Char/Player/States/Player_Jump.gd.uid @@ -0,0 +1 @@ +uid://b3qdqr4f88tel diff --git a/Char/Player/States/Player_Roll.gd b/Char/Player/States/Player_Roll.gd new file mode 100644 index 0000000..95b6bab --- /dev/null +++ b/Char/Player/States/Player_Roll.gd @@ -0,0 +1,85 @@ +# Roll.gd +extends State + +const ROLL_SPEED := 600.0 # 翻滚的固定速度 + +var roll_direction := 1.0 # 翻滚方向 + +func enter() -> void: + player.set_one_way_mask_value("all",true) + player.add_attack_up_velocity = true + # 获取输入方向并设置为翻滚方向 + roll_direction = check_gameplay_input_axis("ui_left", "ui_right") + + # 设置动画朝向 + update_facing_direction(roll_direction) + + play_animation("Roll") + + after_image_component.start() + + # 设置翻滚速度 + set_rool_velocity(1) + +func physics_update(delta: float) -> void: + # 应用重力 + if not player.is_on_ground(): + player.velocity.y += player.gravity * delta + else: + player.velocity.y = 0 + + # 设置翻滚速度 + set_rool_velocity(1) + + player.move_and_slide() + + # 检查动画是否播放完成 + if not animation_player.is_playing(): + if abs(player.velocity.x) > 5.0: + state_machine.change_state("run_to_idle") + set_rool_velocity(0.5) #避免不合理的过长滑步 + else: + state_machine.change_state("idle_battle") + return + + # 如果离开地面,切换到fall状态 + if not player.is_on_ground() and player.is_on_slope() == "": + state_machine.change_state("fall") + return + +func exit() -> void: + #set_rool_velocity(0.5) + hurt_box.disabled = false + +func set_rool_velocity(adjust): + # 设置固定的翻滚速度 + if player.is_on_slope() == "L": + if roll_direction < 0: #左坡上 + var adjust_roll_direction = Vector2(-1,-1).normalized() + player.velocity.x = ROLL_SPEED * adjust_roll_direction.x * adjust + player.velocity.y = ROLL_SPEED * adjust_roll_direction.y * adjust + return + + if player.is_on_slope() == "L": + if roll_direction > 0: #左坡下 + var adjust_roll_direction = Vector2(1,1).normalized() + player.velocity.x = ROLL_SPEED * adjust_roll_direction.x * adjust + player.velocity.y = ROLL_SPEED * adjust_roll_direction.y * adjust + return + + if player.is_on_slope() == "R": + if roll_direction < 0: #右坡下 + var adjust_roll_direction = Vector2(-1,1).normalized() + player.velocity.x = ROLL_SPEED * adjust_roll_direction.x * adjust + player.velocity.y = ROLL_SPEED * adjust_roll_direction.y * adjust + return + + if player.is_on_slope() == "R": + if roll_direction > 0: #右坡上 + var adjust_roll_direction = Vector2(1,-1).normalized() + player.velocity.x = ROLL_SPEED * adjust_roll_direction.x * adjust + player.velocity.y = ROLL_SPEED * adjust_roll_direction.y * adjust + return + + #平地 + player.velocity.x = ROLL_SPEED * roll_direction * adjust diff --git a/Char/Player/States/Player_Roll.gd.uid b/Char/Player/States/Player_Roll.gd.uid new file mode 100644 index 0000000..75ec607 --- /dev/null +++ b/Char/Player/States/Player_Roll.gd.uid @@ -0,0 +1 @@ +uid://blmxhheiqno3m diff --git a/Char/Player/States/Player_Run.gd b/Char/Player/States/Player_Run.gd new file mode 100644 index 0000000..2e42893 --- /dev/null +++ b/Char/Player/States/Player_Run.gd @@ -0,0 +1,51 @@ +# Run.gd +extends State + +const SPEED = 500.0 +const ACCELERATION = 3000.0 + +func enter() -> void: + player.set_one_way_mask_value("all",true) + player.add_attack_up_velocity = true + play_animation("Run") + +func physics_update(delta: float) -> void: + var direction = check_gameplay_input_axis("ui_left", "ui_right") + + # 按下方向键 + if check_gameplay_input_just_pressed("ui_down"): + if player.is_on_rope() and not player.face_wall(): + player.set_one_way_mask_value("rope",false) + state_machine.change_state("fall") + return + if direction != 0: + state_machine.change_state("roll") + return + state_machine.change_state("squat") + return + + if direction: + player.velocity.x = move_toward( + player.velocity.x, + direction * SPEED, + ACCELERATION * delta + ) + update_facing_direction(direction) + + else: + state_machine.change_state("run_to_idle") + return + + player.velocity.y += player.gravity * delta + player.move_and_slide() + + if not player.is_on_ground(): + state_machine.change_state("fall") + return + + if check_gameplay_input_just_pressed("ui_up"): + state_machine.change_state("jump") + return + +func exit() -> void: + pass diff --git a/Char/Player/States/Player_Run.gd.uid b/Char/Player/States/Player_Run.gd.uid new file mode 100644 index 0000000..db688bc --- /dev/null +++ b/Char/Player/States/Player_Run.gd.uid @@ -0,0 +1 @@ +uid://ivsb676j6ymo diff --git a/Char/Player/States/Player_Run_To_Idle.gd b/Char/Player/States/Player_Run_To_Idle.gd new file mode 100644 index 0000000..bae15e6 --- /dev/null +++ b/Char/Player/States/Player_Run_To_Idle.gd @@ -0,0 +1,63 @@ +# Run_to_idle.gd +extends State + +func enter() -> void: + player.set_one_way_mask_value("all",true) + player.add_attack_up_velocity = true + play_animation("Run_To_Idle") + +func physics_update(delta: float) -> void: + # 获取水平输入方向 + var direction = check_gameplay_input_axis("ui_left", "ui_right") + + # 按下方向键 + if check_gameplay_input_just_pressed("ui_down"): + if player.is_on_rope(): + player.set_one_way_mask_value("rope",false) + state_machine.change_state("fall") + return + if direction != 0: + state_machine.change_state("roll") + return + state_machine.change_state("squat") + return + + # 检查移动输入 + if direction: + state_machine.change_state("run") + return + + # 应用重力 + if not player.is_on_ground(): + player.velocity.y += player.gravity * delta + else: + player.velocity.y = 0 + + # 应用减速 + apply_deceleration(delta, true) + + player.move_and_slide() + + # 检查是否在地面上 + if not player.is_on_ground(): + state_machine.change_state("fall") + return + + # 检查跳跃输入 + if check_gameplay_input_just_pressed("ui_up"): + state_machine.change_state("jump") + return + + # 当速度接近0时,切换到idle状态 + if abs(player.velocity.x) < VELOCITY_THRESHOLD: + state_machine.change_state("idle_battle") + return + +func _floor_dust() -> void: + # 生成地面扬尘 + var direction = 1 if player.velocity.x < 0 else -1 + fx_component.create_floor_dust(direction) + +func exit() -> void: + after_image_component.stop() + pass diff --git a/Char/Player/States/Player_Run_To_Idle.gd.uid b/Char/Player/States/Player_Run_To_Idle.gd.uid new file mode 100644 index 0000000..6686425 --- /dev/null +++ b/Char/Player/States/Player_Run_To_Idle.gd.uid @@ -0,0 +1 @@ +uid://usn2b841v0e diff --git a/Char/Player/States/Player_Squat.gd b/Char/Player/States/Player_Squat.gd new file mode 100644 index 0000000..9abf728 --- /dev/null +++ b/Char/Player/States/Player_Squat.gd @@ -0,0 +1,42 @@ +# Squat.gd +extends State + +func enter() -> void: + player.add_attack_up_velocity = true + play_animation("Squat") + # 确保进入下蹲状态时不会有向下的速度 + if player.is_on_ground(): + player.velocity.y = 0 + +func physics_update(delta: float) -> void: + # 在地面上时,不应用额外的重力 + if not player.is_on_ground(): + player.velocity.y += player.gravity * delta + else: + # 确保在地面上时垂直速度为0 + player.velocity.y = 0 + + # 滑行减速,使用父类中定义的 GROUND_DECELERATION + player.velocity.x = move_toward(player.velocity.x, 0, GROUND_DECELERATION * delta) + + player.move_and_slide() + + # 检查是否刚刚按下方向键 + if check_gameplay_input_just_pressed("ui_left") or check_gameplay_input_just_pressed("ui_right"): + state_machine.change_state("roll") + return + + # 检查是否在地面上 + if not player.is_on_ground(): + state_machine.change_state("fall") + return + + # 如果松开下蹲键,返回到idle状态 + if not check_gameplay_input_pressed("ui_down"): + state_machine.change_state("idle_battle") + return + + # 检查跳跃输入 + if check_gameplay_input_just_pressed("ui_up"): + state_machine.change_state("jump") + return diff --git a/Char/Player/States/Player_Squat.gd.uid b/Char/Player/States/Player_Squat.gd.uid new file mode 100644 index 0000000..25d61e6 --- /dev/null +++ b/Char/Player/States/Player_Squat.gd.uid @@ -0,0 +1 @@ +uid://lip17xk6ycgj diff --git a/Char/Player/States/Player_State.gd b/Char/Player/States/Player_State.gd new file mode 100644 index 0000000..a703b1f --- /dev/null +++ b/Char/Player/States/Player_State.gd @@ -0,0 +1,131 @@ +# State.gd +class_name State +extends Node + +# 阻力和加速度相关常量 +const GROUND_DECELERATION := 2500.0 +const AIR_DECELERATION := 100.0 +const AIR_REVERSE_ACCELERATION := 1200.0 # 空中反向加速度 +const AIR_SPEED := 400.0 # 空中移动速度 +const VELOCITY_THRESHOLD := 5.0 # 速度阈值常量, 主要是用于run_to_idle + +var player: CharacterBody2D +var animation_player: AnimationPlayer +var state_machine: Node +var after_image_component: Node +var attack_component: Node2D +var fx_component: Node +var hit_stop_component:Node +var wall_raycast: RayCast2D +var hurt_box: CollisionShape2D + +func _ready() -> void: + player = owner as CharacterBody2D + if player: + animation_player = player.get_node("Body_Animation/AnimationPlayer") + after_image_component = player.get_node("After_Image_Component") + attack_component = player.get_node("Hit/Player_Attack_Component") + hit_stop_component = player.get_node("Hit/Hit_Stop_Component") + fx_component = player.get_node("FX_Component") + hurt_box = player.get_node("Hurt/CollisionShape2D") + state_machine = get_parent() + if not animation_player: + push_error("Animation Player not found for state: " + name) + else: + push_error("Player node not found for state: " + name) + +func enter() -> void: + pass + +func exit() -> void: + pass + +func physics_update(_delta: float) -> void: + pass + +# 应用阻力 +func apply_deceleration(delta: float, is_on_ground: bool) -> void: + var deceleration = GROUND_DECELERATION if is_on_ground else AIR_DECELERATION + player.velocity.x = move_toward(player.velocity.x, 0, deceleration * delta) + +func play_animation(anim_name: String) -> void: + if animation_player and animation_player.has_animation(anim_name): + animation_player.play(anim_name) + else: + push_warning("Animation " + anim_name + " not found for state: " + name) + +func check_gameplay_input_axis(negative_action: String, positive_action: String) -> float: + if player.can_gameplay_input: + return Input.get_axis(negative_action, positive_action) + else: + return 0 + +func check_gameplay_input_just_pressed(action: String) -> bool: + if player.can_gameplay_input: + return Input.is_action_just_pressed(action) + else: + return false + +func check_gameplay_input_pressed(action: String) -> bool: + if player.can_gameplay_input: + return Input.is_action_pressed(action) + else: + return false + +func update_facing_direction(direction: float) -> void: + if direction == 0: + return + player.get_node("Body_Animation").scale.x = -1 if direction < 0 else 1 + player.get_node("Detector/Wall").scale.x = -1 if direction < 0 else 1 + +# 用于根据速度更新朝向的函数 +func update_facing_by_velocity() -> void: + if player.velocity.x != 0: + update_facing_direction(player.velocity.x) + +#获取指定动画的第一帧texture +func get_first_frame_texture(animation_name): + var animation = animation_player.get_animation(animation_name) + + # 找到控制texture的轨道 + for track_idx in animation.get_track_count(): + if animation.track_get_type(track_idx) == Animation.TYPE_VALUE: + var path = animation.track_get_path(track_idx) + if "texture" in str(path): + var first_key_value = animation.track_get_key_value(track_idx, 0) + return first_key_value + + return null + +#获取指定动画的第一帧region_rect +func get_first_frame_region_rect(animation_name): + var animation = animation_player.get_animation(animation_name) + + # 找到控制region_rect的轨道 + for track_idx in animation.get_track_count(): + if animation.track_get_type(track_idx) == Animation.TYPE_VALUE: + var path = animation.track_get_path(track_idx) + if "region_rect" in str(path): + var first_key_value = animation.track_get_key_value(track_idx, 0) + return first_key_value + + return null + +func fade_out_shader_effect(): + var sprite = player.get_node("Body_Animation/Sprite2D") + if not sprite or not sprite.material: + return + + # 确保之前的tween被清理 + var tween = create_tween().set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_OUT) + if not tween: + return + + # 检查material是否存在且是ShaderMaterial + if sprite.material is ShaderMaterial: + tween.tween_property(sprite.material, "shader_parameter/effect_mixture", 0.0, 0.3) + # 动画完成后的回调 + tween.finished.connect(func(): + sprite.material = null + tween.kill() # 确保tween被正确清理 + ) diff --git a/Char/Player/States/Player_State.gd.uid b/Char/Player/States/Player_State.gd.uid new file mode 100644 index 0000000..1e4e7b4 --- /dev/null +++ b/Char/Player/States/Player_State.gd.uid @@ -0,0 +1 @@ +uid://bt1la3i7kgrmt diff --git a/Char/Player/States/Player_State_Machine.gd b/Char/Player/States/Player_State_Machine.gd new file mode 100644 index 0000000..dee74ea --- /dev/null +++ b/Char/Player/States/Player_State_Machine.gd @@ -0,0 +1,40 @@ +# Player_State_Machine.gd +extends Node + +var states = {} +var current_state: State = null +@onready var player = get_parent() + +func _ready(): + await get_tree().process_frame + + for child in get_children(): + if child is State: + var state_name = child.name.to_lower() + states[state_name] = child + + if states.has("idle_battle"): + change_state("idle_battle") + else: + push_error("Could not find idle_battle state!") + +func _physics_process(delta): + if current_state: + # 不再尝试获取返回值 + current_state.physics_update(delta) + +func change_state(new_state_name: String) -> void: + if new_state_name.is_empty(): + return + + var lower_state_name = new_state_name.to_lower() + + if not states.has(lower_state_name): + push_error("State not found: " + lower_state_name) + return + + if current_state: + current_state.exit() + + current_state = states[lower_state_name] + current_state.enter() diff --git a/Char/Player/States/Player_State_Machine.gd.uid b/Char/Player/States/Player_State_Machine.gd.uid new file mode 100644 index 0000000..b0feed9 --- /dev/null +++ b/Char/Player/States/Player_State_Machine.gd.uid @@ -0,0 +1 @@ +uid://cy77v0f8ysxdn diff --git a/Char/Player/States/Player_Wall_Jump.gd b/Char/Player/States/Player_Wall_Jump.gd new file mode 100644 index 0000000..bde9ae6 --- /dev/null +++ b/Char/Player/States/Player_Wall_Jump.gd @@ -0,0 +1,90 @@ +# Wall_Jump.gd +class_name WallJump +extends State + +const WALL_JUMP_HORIZONTAL_FORCE = 500 +const WALL_JUMP_VERTICAL_FORCE = -400.0 + +var animation_locked := true + +func enter() -> void: + animation_locked = true + animation_player.play("Wall_Jump") + # 连接动画结束信号 + if not animation_player.animation_finished.is_connected(_on_animation_finished): + animation_player.animation_finished.connect(_on_animation_finished) + + #var wall_raycast = player.get_node("Detector/Wall/Wall") + var wall_normal = player.wall_raycast.get_collision_normal() + + # 设置初始速度 + player.velocity.x = wall_normal.x * WALL_JUMP_HORIZONTAL_FORCE + player.velocity.y = WALL_JUMP_VERTICAL_FORCE + + # 更新朝向与速度方向一致 + player.get_node("Body_Animation").scale.x = sign(player.velocity.x) + player.get_node("Detector/Wall").scale.x = sign(player.velocity.x) + + var direction = 1 if player.velocity.x < 0 else -1 + fx_component.create_wall_jump_dust(direction) + + after_image_component.start() + +func exit() -> void: + after_image_component.stop() + # 断开动画结束信号 + if animation_player.animation_finished.is_connected(_on_animation_finished): + animation_player.animation_finished.disconnect(_on_animation_finished) + animation_locked = true + +func _on_animation_finished(anim_name: String) -> void: + if anim_name == "Wall_Jump": + animation_locked = false + +func physics_update(delta: float) -> void: + #var wall_raycast = player.get_node("Detector/Wall/Wall") + + # 检查滑墙条件 + if player.face_wall(): + var wall_normal = player.wall_raycast.get_collision_normal().x + var facing_direction = player.get_node("Body_Animation").scale.x + if facing_direction == -sign(wall_normal): + state_machine.change_state("wall_slide") + return + + # 只在动画结束后处理输入 + if not animation_locked: + var direction = check_gameplay_input_axis("ui_left", "ui_right") + + if direction: + var current_direction = sign(player.velocity.x) + if current_direction != 0 and current_direction != direction: + # 反向加速 + var target_velocity = direction * AIR_SPEED + player.velocity.x = move_toward( + player.velocity.x, + target_velocity, + AIR_REVERSE_ACCELERATION * delta + ) + # 更新朝向 + update_facing_direction(direction) + else: + # 没有按方向键时,应用空中阻力 + apply_deceleration(delta, false) + + # 应用重力 + player.velocity.y += player.gravity * delta + player.move_and_slide() + + # 当垂直速度变为正值时(开始下落),切换到fall状态 + if player.velocity.y > 0: + state_machine.change_state("fall") + return + + # 着地检测 + if player.is_on_ground(): + if abs(player.velocity.x) > 0: + state_machine.change_state("run") + else: + state_machine.change_state("idle_battle") + return diff --git a/Char/Player/States/Player_Wall_Jump.gd.uid b/Char/Player/States/Player_Wall_Jump.gd.uid new file mode 100644 index 0000000..25c0c89 --- /dev/null +++ b/Char/Player/States/Player_Wall_Jump.gd.uid @@ -0,0 +1 @@ +uid://b71px30wip3gu diff --git a/Char/Player/States/Player_Wall_Slide.gd b/Char/Player/States/Player_Wall_Slide.gd new file mode 100644 index 0000000..07dab0a --- /dev/null +++ b/Char/Player/States/Player_Wall_Slide.gd @@ -0,0 +1,79 @@ +# Wall_Slide.gd +extends State + +const WALL_SLIDE_SPEED = 100.0 # 滑墙下落速度限制 +const WALL_UP_RESISTANCE = 1800.0 # 向上滑动时的阻力(大于重力) +const WALL_DOWN_RESISTANCE = 200.0 # 向下滑动时的阻力 + +var can_check_direction := false # 新增变量,用于控制是否检测方向键 + +func enter() -> void: + player.add_attack_up_velocity = true + can_check_direction = false # 重置标志 + animation_player.play("Wall_Slide") + # 监听动画播放完成信号 + if not animation_player.animation_finished.is_connected(_on_animation_finished): + animation_player.animation_finished.connect(_on_animation_finished) + # 确保玩家面向正确的方向 + var wall_direction = player.get_node("Detector/Wall/Wall").get_collision_normal().x + if wall_direction != 0: + player.get_node("Body_Animation").scale.x = sign(wall_direction) + player.get_node("Detector/Wall").scale.x = -sign(wall_direction) + +func exit() -> void: + # 断开信号连接 + if animation_player.animation_finished.is_connected(_on_animation_finished): + animation_player.animation_finished.disconnect(_on_animation_finished) + can_check_direction = false + +func _on_animation_finished(anim_name: String) -> void: + if anim_name == "Wall_Slide": + can_check_direction = true + +func physics_update(delta: float) -> void: + #var wall_raycast = player.get_node("Detector/Wall/Wall") + var direction = check_gameplay_input_axis("ui_left", "ui_right") + var wall_normal = player.wall_raycast.get_collision_normal() + + if !player.face_wall(): + state_machine.change_state("fall") + return + + # 只有在动画播放完成后才检查方向键 + if can_check_direction: + # 检查是否离开墙面或按了反方向键 + if sign(direction) == sign(wall_normal.x): + # 在切换到fall状态前更新朝向 + if direction != 0: + player.get_node("Body_Animation").scale.x = -1 if direction < 0 else 1 + player.get_node("Detector/Wall").scale.x = -1 if direction < 0 else 1 + state_machine.change_state("fall") + return + + # 应用墙面阻力 + if player.velocity.y < 0: # 向上移动 + # 应用较大的向下阻力 + player.velocity.y += WALL_UP_RESISTANCE * delta + else: # 向下移动 + # 应用向上的阻力来减缓下落 + player.velocity.y -= WALL_DOWN_RESISTANCE * delta + # 同时仍然受到减小的重力影响 + player.velocity.y += player.gravity * delta * 0.3 + + # 限制最大下落速度 + player.velocity.y = min(player.velocity.y, WALL_SLIDE_SPEED) + + # 蹬墙跳 + if check_gameplay_input_just_pressed("ui_up"): + state_machine.change_state("wall_jump") + return + + # 着地检测 + if player.is_on_ground(): + if abs(player.velocity.x) > 0: + state_machine.change_state("run") + else: + state_machine.change_state("idle_battle") + return + + player.move_and_slide() diff --git a/Char/Player/States/Player_Wall_Slide.gd.uid b/Char/Player/States/Player_Wall_Slide.gd.uid new file mode 100644 index 0000000..98059f2 --- /dev/null +++ b/Char/Player/States/Player_Wall_Slide.gd.uid @@ -0,0 +1 @@ +uid://b3ovdc2fiasfo diff --git a/Level/Rope/Rope.gd b/Level/Rope/Rope.gd new file mode 100644 index 0000000..6597e62 --- /dev/null +++ b/Level/Rope/Rope.gd @@ -0,0 +1,307 @@ +extends Node2D + +var debug_mode: bool = false +# 添加debug绘制相关变量 +var debug_lines: Array[Line2D] = [] +var debug_font: Font + +# 导出变量便于在编辑器中配置 +@export var start_point: Vector2 +@export var end_point: Vector2 +@export var part_distance: float = 12.0 +@export var rope_part_scene: PackedScene +@export var max_deform: float = 30.0 # 最大形变距离 +@export var deform_spread: float = 3.0 # 形变扩散范围 +@export var initial_sag: float = 8.0 # 初始下垂量 + +# Line2D相关导出变量 +@export var rope_texture: Texture2D # 绳索纹理 +@export var rope_width: float = 8 # 绳索宽度 +@export var rope_color: Color = Color.WHITE # 绳索颜色 +@export var rope_texture_tile_factor: float = 1.0 # 纹理平铺系数 + +var rope_parts: Array[RigidBody2D] = [] +var rest_positions: Array[Vector2] = [] # 存储原始位置 +var active_deforms: Dictionary = {} # 存储当前变形 {rope_part: deform_amount} +var _exit_tween: Tween +var _is_exiting := false + +@onready var rope_line: Line2D = $rope_line + +func _ready() -> void: + if rope_part_scene == null: + push_error("Rope part scene is not set!") + return + + # 初始化Line2D + setup_rope_line() + + $rope_start.position = start_point + $rope_end.position = end_point + + # 初始化debug字体 + if debug_mode: + debug_font = ThemeDB.fallback_font + print("[Rope] Initialized with start_point: ", start_point, " end_point: ", end_point) + + generate_rope_parts() + + # 保存生成后的位置作为静止位置 + rest_positions.clear() + for part in rope_parts: + rest_positions.append(part.position) + +func setup_rope_line() -> void: + rope_line.width = rope_width + rope_line.default_color = rope_color + + if rope_texture: + rope_line.texture = rope_texture + rope_line.texture_mode = Line2D.LINE_TEXTURE_TILE + rope_line.texture_repeat = CanvasItem.TEXTURE_REPEAT_ENABLED + + rope_line.joint_mode = Line2D.LINE_JOINT_ROUND + rope_line.begin_cap_mode = Line2D.LINE_CAP_ROUND + rope_line.end_cap_mode = Line2D.LINE_CAP_ROUND + rope_line.antialiased = true + +func _process(_delta: float) -> void: + update_rope_line() + +func update_rope_line() -> void: + rope_line.clear_points() + for part in rope_parts: + rope_line.add_point(part.position) + +func generate_rope_parts() -> void: + # 清理debug线 + if debug_mode: + for line in debug_lines: + line.queue_free() + debug_lines.clear() + print("[Rope] Generating rope parts...") + + # 清理可能存在的旧rope parts + for child in $rope_parts.get_children(): + child.queue_free() + rope_parts.clear() + rest_positions.clear() + + # 计算绳索总长度和需要的部件数量 + var total_distance: float = start_point.distance_to(end_point) + var parts_count: int = int(total_distance / part_distance) + + # 确保至少有一个部件 + if parts_count < 1: + parts_count = 1 + + if debug_mode: + print("[Rope] Total distance: ", total_distance) + print("[Rope] Parts count: ", parts_count) + + # 计算实际的部件间距,确保均匀分布 + var _actual_distance: float = total_distance / parts_count + + # 首先创建所有部件并存储到临时数组 + var temp_parts: Array[Dictionary] = [] + + # 生成每个rope_part + for i in range(parts_count + 1): + var t = float(i) / float(parts_count) # 插值因子 + var part_position = start_point.lerp(end_point, t) + + # 计算下垂量:使用抛物线函数 y = 4h(x-x²) + var sag = initial_sag * 4.0 * t * (1.0 - t) + part_position.y += sag + + var part = rope_part_scene.instantiate() as RigidBody2D + $rope_parts.add_child(part) + part.position = part_position + + # 配置第一个和最后一个点 + if i == 0 or i == parts_count: + part.freeze = true # 固定两端点 + + # 将部件及其位置信息存储到临时数组 + temp_parts.append({ + "part": part, + "position": part_position + }) + + if debug_mode: + print("[Rope] Created part at position: ", part_position) + + # 仅按x坐标排序 + temp_parts.sort_custom(func(a, b): return a["position"].x < b["position"].x) + + # 清空并重新填充rope_parts和original_positions数组,确保顺序正确 + rope_parts.clear() + rest_positions.clear() + + # 创建物理关节连接相邻的部件 + for i in range(temp_parts.size()): + var part = temp_parts[i]["part"] + var pos = temp_parts[i]["position"] + + rope_parts.append(part) + rest_positions.append(pos) + + # 创建与前一个部件的关节连接(除了第一个部件) + if i > 0: + var pin_joint = PinJoint2D.new() + pin_joint.set_node_a(rope_parts[i-1].get_path()) + pin_joint.set_node_b(part.get_path()) + pin_joint.softness = 1.0 # 可以调整这个值来改变绳索的柔软度 + $rope_parts.add_child(pin_joint) + + # 设置关节的位置(在两个部件之间) + var joint_pos = (rope_parts[i-1].position + part.position) / 2 + pin_joint.position = joint_pos + + if debug_mode: + print("[Rope] Parts sorted and connected. Total parts: ", rope_parts.size()) + for i in range(rope_parts.size()): + print("[Rope] Part ", i, ": ", rope_parts[i]) + print("[Rope] Part ", i, " position: ", rope_parts[i].position) + + # 初始更新Line2D + update_rope_line() + +func handle_player_rope_contact(collider: RigidBody2D) -> void: + var contact_index = -1 + for i in range(rope_parts.size()): + if rope_parts[i] == collider: + contact_index = i + break + + if contact_index == -1: + return + + # 如果碰到第一个或最后一个部件,直接返回 + if contact_index == 0 or contact_index == rope_parts.size() - 1: + return + + var max_offset = 10.0 # 最大下移距离 + var tween = create_tween() + + # 同时应用所有部件的移动 + for i in range(rope_parts.size()): + # 跳过第一个和最后一个部件 + if i == 0 or i == rope_parts.size() - 1: + continue + + var part = rope_parts[i] + var target_pos = rest_positions[i] + + # 如果接触点是第二个或倒数第二个部件,最大偏移量减半 + var current_max_offset = max_offset + if contact_index == 1 or contact_index == rope_parts.size() - 2: + current_max_offset = max_offset * 0.5 + + # 计算移动距离 + var move_amount: float + if i <= contact_index: + # 左侧部分,从接触点到起点,线性减少 + move_amount = float(i) / float(contact_index) if contact_index > 0 else 0.0 + else: + # 右侧部分,从接触点到终点,线性减少 + var remaining_parts = rope_parts.size() - 1 - contact_index + move_amount = float(remaining_parts - (i - contact_index)) / float(remaining_parts) if remaining_parts > 0 else 0.0 + + # 计算目标位置 + var target_offset = Vector2(0, current_max_offset * move_amount) + + # 将所有移动添加到同一个tween中,parallel=true使它们同时开始 + tween.parallel().tween_property(part, "position", + target_pos + target_offset, 0.3 + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + +func handle_player_rope_exit() -> void: + # 如果正在执行退出动画,直接返回 + if _is_exiting: + return + + _is_exiting = true + + # 如果已经有正在进行的退出动画,先停止它 + if _exit_tween and _exit_tween.is_valid(): + _exit_tween.kill() + + const DOWN_OFFSET_FACTOR := 1.3 + const UP_OFFSET_FACTOR := 0.5 + + const DOWN_TIME := 0.15 + const UP_TIME := 0.2 + const RECOVER_TIME := 0.1 + + # 找到最大偏移点 + var max_offset_index := 0 + var max_offset := 0.0 + + for i in range(rope_parts.size()): + var current_offset = abs(rope_parts[i].position.y - rest_positions[i].y) + if current_offset > max_offset: + max_offset = current_offset + max_offset_index = i + + _exit_tween = create_tween() + var tween = _exit_tween + + # 第一阶段:下沉 + for i in range(rope_parts.size()): + if i == 0 or i == rope_parts.size() - 1: + continue + + var part = rope_parts[i] + var rest_pos = rest_positions[i] + + var move_amount: float + if i <= max_offset_index: + move_amount = float(i) / float(max_offset_index) if max_offset_index > 0 else 0.0 + else: + var remaining_parts = rope_parts.size() - 1 - max_offset_index + move_amount = float(remaining_parts - (i - max_offset_index)) / float(remaining_parts) if remaining_parts > 0 else 0.0 + + var down_offset = Vector2(0, max_offset * DOWN_OFFSET_FACTOR * move_amount) + + tween.parallel().tween_property(part, "position", + rest_pos + down_offset, DOWN_TIME + ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_IN) + + # 第二阶段:反弹 + tween.chain().tween_callback(func(): pass) + for i in range(rope_parts.size()): + if i == 0 or i == rope_parts.size() - 1: + continue + + var part = rope_parts[i] + var rest_pos = rest_positions[i] + + var move_amount: float + if i <= max_offset_index: + move_amount = float(i) / float(max_offset_index) if max_offset_index > 0 else 0.0 + else: + var remaining_parts = rope_parts.size() - 1 - max_offset_index + move_amount = float(remaining_parts - (i - max_offset_index)) / float(remaining_parts) if remaining_parts > 0 else 0.0 + + var up_offset = Vector2(0, -max_offset * UP_OFFSET_FACTOR * move_amount) + + tween.parallel().tween_property(part, "position", + rest_pos + up_offset, UP_TIME + ).set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_OUT) + + # 第三阶段:恢复到静止位置 + tween.chain().tween_callback(func(): pass) + for i in range(rope_parts.size()): + if i == 0 or i == rope_parts.size() - 1: + continue + + var part = rope_parts[i] + tween.parallel().tween_property(part, "position", + rest_positions[i], RECOVER_TIME + ).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN_OUT) + + # 添加完成回调,重置标志位 + tween.chain().tween_callback(func(): + _is_exiting = false # 动画完成后重置标志位 + ) diff --git a/Level/Rope/Rope.gd.uid b/Level/Rope/Rope.gd.uid new file mode 100644 index 0000000..0cb686d --- /dev/null +++ b/Level/Rope/Rope.gd.uid @@ -0,0 +1 @@ +uid://b880ha4crg02a diff --git a/Level/Rope/Rope.png b/Level/Rope/Rope.png new file mode 100644 index 0000000000000000000000000000000000000000..30ea360c322e380267a0a77e4957cf32beb604aa GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&M!3HGHb)LHgq|7{B9780gCW{C>_ void: + # 设置碰撞检测 + contact_monitor = true + max_contacts_reported = 4 + + # 连接信号 + body_entered.connect(_on_body_entered) + body_exited.connect(_on_body_exited) + + if get_parent().get_parent().debug_mode: + print("[RopePart] Name: ", name) + print("[RopePart] Collision layer: ", collision_layer) + print("[RopePart] Collision mask: ", collision_mask) + print("[RopePart] Contact monitor: ", contact_monitor) + print("[RopePart] Max contacts: ", max_contacts_reported) + +func _on_body_entered(body: Node2D) -> void: + if get_parent().get_parent().debug_mode: + print("[RopePart] Body entered: ", body.name) + print("[RopePart] Body in player group: ", body.is_in_group("player")) + + if body.is_in_group("player"): + player_entered.emit(self) + +func _on_body_exited(body: Node2D) -> void: + if get_parent().get_parent().debug_mode: + print("[RopePart] Body exited: ", body.name) + + if body.is_in_group("player"): + player_exited.emit(self) diff --git a/Level/Rope/Rope_Part.gd.uid b/Level/Rope/Rope_Part.gd.uid new file mode 100644 index 0000000..3596770 --- /dev/null +++ b/Level/Rope/Rope_Part.gd.uid @@ -0,0 +1 @@ +uid://dijifcwtljije diff --git a/Level/Rope/Rope_Part.tscn b/Level/Rope/Rope_Part.tscn new file mode 100644 index 0000000..7fe6acd --- /dev/null +++ b/Level/Rope/Rope_Part.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=3 uid="uid://bmiyxjrdbuykk"] + +[ext_resource type="Script" uid="uid://dijifcwtljije" path="res://Level/Rope/Rope_Part.gd" id="1_eqwyf"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_6qj67"] +radius = 2.0 + +[node name="Rope_Part" type="RigidBody2D"] +z_index = 3 +collision_layer = 33554432 +collision_mask = 0 +gravity_scale = 0.0 +lock_rotation = true +freeze = true +script = ExtResource("1_eqwyf") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_6qj67") +one_way_collision = true diff --git a/Level/Test_Level_01.tscn b/Level/Test_Level_01.tscn new file mode 100644 index 0000000..e224224 --- /dev/null +++ b/Level/Test_Level_01.tscn @@ -0,0 +1,206 @@ +[gd_scene load_steps=18 format=4 uid="uid://24145e54ypmx"] + +[ext_resource type="Script" uid="uid://pbvjs78t7p4p" path="res://Level/test_level_01.gd" id="1_a01ci"] +[ext_resource type="Texture2D" uid="uid://cmukg5vvbfde4" path="res://Level/Tiles/Physic_Group.png" id="2_yqabr"] +[ext_resource type="PackedScene" uid="uid://clbhclvndl73s" path="res://Char/Player/Shadow/Shadow.tscn" id="3_mxkfc"] +[ext_resource type="PackedScene" uid="uid://dom46ngh3my6b" path="res://Char/Enemy/Enemy_01.tscn" id="4_ucsmj"] +[ext_resource type="Texture2D" uid="uid://bj6j7q5bldm1c" path="res://Level/Tiles/Art_Group.png" id="4_vq84u"] +[ext_resource type="PackedScene" uid="uid://bxhllsclvr2a7" path="res://Level/Rope/Rope.tscn" id="5_ljfjt"] +[ext_resource type="Texture2D" uid="uid://tox8emeo0w3b" path="res://Char/Enemy/Art/1.png" id="7_qgw53"] +[ext_resource type="Texture2D" uid="uid://6g33ompg5t8a" path="res://Char/Enemy/Art/2.png" id="8_6fvd4"] + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_8k7te"] +polygon = PackedVector2Array(8, -8, 8, 8, -8, 8) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_abfeb"] +texture = ExtResource("4_vq84u") +use_texture_padding = false +0:0/0 = 0 +0:0/0/custom_data_0 = 1 +1:0/0 = 0 +1:0/0/custom_data_0 = 1 +2:0/0 = 0 +2:0/0/custom_data_0 = 1 +3:0/0 = 0 +3:0/0/custom_data_0 = 1 +0:1/0 = 0 +0:1/0/custom_data_0 = 1 +1:1/0 = 0 +1:1/0/custom_data_0 = 1 +2:1/0 = 0 +2:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_8k7te") +2:1/0/custom_data_0 = 1 +3:1/0 = 0 +3:1/0/custom_data_0 = 1 +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +3:2/0 = 0 +0:3/0 = 0 +1:3/0 = 0 +1:4/0 = 0 +0:4/0 = 0 +2:3/0 = 0 +3:3/0 = 0 +3:4/0 = 0 +2:4/0 = 0 + +[sub_resource type="TileSet" id="TileSet_c4cnm"] +occlusion_layer_0/light_mask = 1 +custom_data_layer_0/name = "mask_area" +custom_data_layer_0/type = 2 +sources/0 = SubResource("TileSetAtlasSource_abfeb") + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_bqxr8"] +texture = ExtResource("2_yqabr") +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:0/0 = 0 +1:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:0/0 = 0 +2:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:0/0 = 0 +1:1/0 = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, 8, -8, 8) +0:1/0 = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8) +2:1/0 = 0 +2:1/0/physics_layer_3/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8) +3:1/0 = 0 +3:1/0/physics_layer_3/polygon_0/points = PackedVector2Array(-8, -8, 8, 8, -8, 8) +2:2/0 = 0 +2:2/0/physics_layer_3/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) + +[sub_resource type="TileSet" id="TileSet_w160a"] +physics_layer_0/collision_layer = 524288 +physics_layer_0/collision_mask = 33 +physics_layer_1/collision_layer = 2097152 +physics_layer_1/collision_mask = 33 +physics_layer_2/collision_layer = 8388608 +physics_layer_2/collision_mask = 33 +physics_layer_3/collision_layer = 16777216 +physics_layer_3/collision_mask = 33 +custom_data_layer_0/name = "mask_area" +custom_data_layer_0/type = 2 +sources/0 = SubResource("TileSetAtlasSource_bqxr8") + +[sub_resource type="Gradient" id="Gradient_6i250"] +offsets = PackedFloat32Array(0, 0.00258398, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_l412j"] +gradient = SubResource("Gradient_6i250") +fill = 1 +fill_from = Vector2(0.535613, 0.507123) +fill_to = Vector2(0.874644, 0.11396) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_x3rhj"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_6fvd4"] + +[node name="Test_Level_01" type="Node2D" groups=["Level"]] +script = ExtResource("1_a01ci") + +[node name="Rope" parent="." instance=ExtResource("5_ljfjt")] +start_point = Vector2(0, 211) +end_point = Vector2(264, 211) + +[node name="Tile_Group" type="CanvasGroup" parent="." groups=["Tile_Group"]] + +[node name="View_Layer_1" type="TileMapLayer" parent="Tile_Group"] +z_index = 1 +position = Vector2(0, 1) +tile_map_data = PackedByteArray("AAD/////AAADAAAAAAD//wAAAAADAAAAAAD//wEAAAADAAAAAAD//wIAAAADAAAAAAD//wMAAAADAAAAAAD//wQAAAADAAAAAAD//wUAAAADAAAAAAD//wYAAAADAAAAAAD//wcAAAADAAAAAAD//wgAAAADAAAAAAD//wkAAAADAAAAAAD//woAAAADAAAAAAD//wsAAAADAAAAAAD//wwAAAADAAAAAAD//w0AAAADAAAAAAD//w4AAAADAAAAAAD//w8AAAADAAAAAAD//xAAAAADAAAAAAD//xEAAAADAAAAAAD//xIAAAADAAAAAAD//xMAAAADAAAAAAD//xQAAAADAAAAAAD//xUAAAADAAAAAAD//xYAAAADAAAAAAD//xcAAAADAAAAAAD//xgAAAADAAAAAAD//xkAAAADAAAAAAD//xoAAAADAAAAAAD//xsAAAADAAAAAAD//xwAAAACAAIAAAD//x0AAAACAAIAAAAAAP//AAADAAAAAAAAAAAAAAADAAQAAAAAAAEAAAADAAMAAAAAAAIAAAADAAQAAAAAAAMAAAACAAQAAAAAAAQAAAACAAMAAAAAAAUAAAADAAMAAAAAAAYAAAACAAQAAAAAAAcAAAACAAQAAAAAAAgAAAADAAQAAAAAAAkAAAACAAMAAAAAAAoAAAACAAMAAAAAAAsAAAACAAQAAAAAAAwAAAADAAMAAAAAAA0AAAACAAMAAAAAAA4AAAADAAQAAAAAAA8AAAACAAQAAAAAABAAAAACAAQAAAAAABEAAAADAAQAAAAAABIAAAADAAMAAAAAABMAAAADAAMAAAAAABQAAAADAAQAAAAAABUAAAADAAMAAAAAABYAAAACAAQAAAAAABcAAAACAAMAAAAAABgAAAACAAQAAAAAABkAAAACAAQAAAAAABoAAAADAAQAAAAAABsAAAADAAQAAAAAABwAAAACAAIAAAAAAB0AAAACAAIAAAABAP//AAADAAAAAAABAAAAAAACAAQAAAABAAEAAAACAAQAAAABAAIAAAADAAQAAAABAAMAAAADAAMAAAABAAQAAAADAAQAAAABAAUAAAADAAQAAAABAAYAAAACAAMAAAABAAcAAAADAAQAAAABAAgAAAACAAQAAAABAAkAAAACAAQAAAABAAoAAAADAAQAAAABAAsAAAACAAMAAAABAAwAAAADAAMAAAABAA0AAAACAAQAAAABAA4AAAACAAQAAAABAA8AAAADAAMAAAABABAAAAADAAMAAAABABEAAAADAAMAAAABABIAAAACAAMAAAABABMAAAADAAQAAAABABQAAAADAAMAAAABABUAAAACAAMAAAABABYAAAADAAQAAAABABcAAAADAAQAAAABABgAAAADAAMAAAABABkAAAACAAQAAAABABoAAAACAAMAAAABABsAAAADAAMAAAABABwAAAACAAIAAAABAB0AAAACAAIAAAACAP//AAADAAAAAAACAAAAAAADAAQAAAACAAEAAAADAAMAAAACAAIAAAACAAQAAAACAAMAAAACAAQAAAACAAQAAAADAAMAAAACAAUAAAADAAQAAAACAAYAAAADAAMAAAACAAcAAAACAAMAAAACAAgAAAADAAQAAAACAAkAAAACAAQAAAACAAoAAAACAAMAAAACAAsAAAADAAMAAAACAAwAAAACAAQAAAACAA0AAAADAAMAAAACAA4AAAADAAQAAAACAA8AAAACAAMAAAACABAAAAACAAQAAAACABEAAAACAAMAAAACABIAAAADAAQAAAACABMAAAADAAMAAAACABQAAAADAAMAAAACABUAAAADAAQAAAACABYAAAACAAQAAAACABcAAAADAAQAAAACABgAAAACAAMAAAACABkAAAADAAMAAAACABoAAAADAAMAAAACABsAAAACAAMAAAACABwAAAACAAIAAAACAB0AAAACAAIAAAADAP//AAADAAAAAAADAAAAAAADAAQAAAADAAEAAAACAAMAAAADAAIAAAADAAQAAAADAAMAAAADAAMAAAADAAQAAAADAAMAAAADAAUAAAADAAQAAAADAAYAAAACAAQAAAADAAcAAAACAAQAAAADAAgAAAACAAQAAAADAAkAAAACAAMAAAADAAoAAAADAAQAAAADAAsAAAACAAQAAAADAAwAAAADAAMAAAADAA0AAAADAAQAAAADAA4AAAACAAMAAAADAA8AAAACAAMAAAADABAAAAADAAMAAAADABEAAAACAAQAAAADABIAAAADAAQAAAADABMAAAADAAQAAAADABQAAAADAAMAAAADABUAAAACAAMAAAADABYAAAACAAQAAAADABcAAAACAAQAAAADABgAAAACAAMAAAADABkAAAADAAMAAAADABoAAAADAAMAAAADABsAAAADAAMAAAADABwAAAACAAIAAAADAB0AAAACAAIAAAAEAP//AAADAAAAAAAEAAAAAAADAAQAAAAEAAEAAAADAAQAAAAEAAIAAAACAAMAAAAEAAMAAAACAAMAAAAEAAQAAAADAAQAAAAEAAUAAAACAAQAAAAEAAYAAAADAAMAAAAEAAcAAAACAAQAAAAEAAgAAAADAAMAAAAEAAkAAAADAAQAAAAEAAoAAAADAAQAAAAEAAsAAAACAAQAAAAEAAwAAAACAAMAAAAEAA0AAAACAAMAAAAEAA4AAAADAAMAAAAEAA8AAAADAAQAAAAEABAAAAACAAQAAAAEABEAAAACAAMAAAAEABIAAAADAAMAAAAEABMAAAADAAMAAAAEABQAAAADAAQAAAAEABUAAAACAAQAAAAEABYAAAADAAQAAAAEABcAAAACAAMAAAAEABgAAAADAAMAAAAEABkAAAADAAMAAAAEABoAAAACAAQAAAAEABsAAAADAAQAAAAEABwAAAACAAIAAAAEAB0AAAACAAIAAAAFAP//AAADAAAAAAAFAAAAAAACAAQAAAAFAAEAAAACAAMAAAAFAAIAAAACAAMAAAAFAAMAAAACAAQAAAAFAAQAAAADAAMAAAAFAAUAAAADAAQAAAAFAAYAAAADAAQAAAAFAAcAAAACAAMAAAAFAAgAAAADAAMAAAAFAAkAAAACAAQAAAAFAAoAAAADAAMAAAAFAAsAAAADAAQAAAAFAAwAAAACAAMAAAAFAA0AAAACAAMAAAAFAA4AAAADAAMAAAAFAA8AAAACAAQAAAAFABAAAAACAAQAAAAFABEAAAACAAQAAAAFABIAAAACAAMAAAAFABMAAAADAAQAAAAFABQAAAADAAQAAAAFABUAAAADAAQAAAAFABYAAAADAAMAAAAFABcAAAADAAQAAAAFABgAAAACAAQAAAAFABkAAAACAAMAAAAFABoAAAACAAQAAAAFABsAAAACAAMAAAAFABwAAAACAAIAAAAFAB0AAAACAAIAAAAGAP//AAADAAAAAAAGAAAAAAACAAQAAAAGAAEAAAADAAQAAAAGAAIAAAADAAMAAAAGAAMAAAADAAMAAAAGAAQAAAACAAQAAAAGAAUAAAACAAMAAAAGAAYAAAADAAMAAAAGAAcAAAADAAQAAAAGAAgAAAACAAQAAAAGAAkAAAADAAQAAAAGAAoAAAACAAQAAAAGAAsAAAACAAQAAAAGAAwAAAACAAQAAAAGAA0AAAACAAQAAAAGAA4AAAADAAQAAAAGAA8AAAADAAQAAAAGABAAAAADAAMAAAAGABEAAAADAAMAAAAGABIAAAACAAQAAAAGABMAAAACAAQAAAAGABQAAAACAAMAAAAGABUAAAACAAQAAAAGABYAAAACAAQAAAAGABcAAAADAAQAAAAGABgAAAADAAMAAAAGABkAAAACAAMAAAAGABoAAAACAAQAAAAGABsAAAACAAQAAAAGABwAAAACAAIAAAAGAB0AAAACAAIAAAAHAP//AAADAAAAAAAHAAAAAAACAAQAAAAHAAEAAAADAAMAAAAHAAIAAAACAAQAAAAHAAMAAAACAAQAAAAHAAQAAAACAAMAAAAHAAUAAAACAAQAAAAHAAYAAAADAAMAAAAHAAcAAAADAAQAAAAHAAgAAAACAAQAAAAHAAkAAAADAAMAAAAHAAoAAAADAAQAAAAHAAsAAAADAAMAAAAHAAwAAAADAAMAAAAHAA0AAAADAAMAAAAHAA4AAAADAAMAAAAHAA8AAAADAAQAAAAHABAAAAADAAMAAAAHABEAAAADAAMAAAAHABIAAAADAAMAAAAHABMAAAADAAQAAAAHABQAAAACAAMAAAAHABUAAAADAAMAAAAHABYAAAADAAMAAAAHABcAAAADAAMAAAAHABgAAAACAAQAAAAHABkAAAACAAMAAAAHABoAAAACAAQAAAAHABsAAAADAAMAAAAHABwAAAACAAIAAAAHAB0AAAACAAIAAAAIAP//AAADAAAAAAAIAAAAAAACAAQAAAAIAAEAAAACAAQAAAAIAAIAAAADAAQAAAAIAAMAAAADAAMAAAAIAAQAAAADAAQAAAAIAAUAAAADAAMAAAAIAAYAAAADAAMAAAAIAAcAAAADAAQAAAAIAAgAAAADAAQAAAAIAAkAAAADAAMAAAAIAAoAAAADAAMAAAAIAAsAAAADAAMAAAAIAAwAAAADAAQAAAAIAA0AAAADAAQAAAAIAA4AAAADAAMAAAAIAA8AAAADAAMAAAAIABAAAAACAAQAAAAIABEAAAADAAMAAAAIABIAAAACAAQAAAAIABMAAAADAAQAAAAIABQAAAACAAQAAAAIABUAAAACAAQAAAAIABYAAAADAAQAAAAIABcAAAACAAMAAAAIABgAAAACAAMAAAAIABkAAAADAAMAAAAIABoAAAADAAQAAAAIABsAAAACAAQAAAAIABwAAAACAAIAAAAIAB0AAAACAAIAAAAJAP//AAADAAAAAAAJAAAAAAACAAMAAAAJAAEAAAADAAQAAAAJAAIAAAADAAMAAAAJAAMAAAADAAQAAAAJAAQAAAACAAQAAAAJAAUAAAADAAQAAAAJAAYAAAACAAQAAAAJAAcAAAACAAQAAAAJAAgAAAADAAQAAAAJAAkAAAACAAMAAAAJAAoAAAADAAMAAAAJAAsAAAADAAQAAAAJAAwAAAADAAMAAAAJAA0AAAADAAMAAAAJAA4AAAACAAMAAAAJAA8AAAADAAMAAAAJABAAAAADAAMAAAAJABEAAAADAAMAAAAJABIAAAADAAQAAAAJABMAAAADAAMAAAAJABQAAAADAAMAAAAJABUAAAACAAMAAAAJABYAAAACAAQAAAAJABcAAAADAAMAAAAJABgAAAADAAQAAAAJABkAAAADAAMAAAAJABoAAAACAAQAAAAJABsAAAACAAQAAAAJABwAAAACAAIAAAAJAB0AAAACAAIAAAAKAP//AAADAAAAAAAKAAAAAAADAAMAAAAKAAEAAAACAAQAAAAKAAIAAAACAAMAAAAKAAMAAAADAAMAAAAKAAQAAAADAAMAAAAKAAUAAAACAAMAAAAKAAYAAAADAAMAAAAKAAcAAAADAAMAAAAKAAgAAAADAAQAAAAKAAkAAAACAAMAAAAKAAoAAAACAAMAAAAKAAsAAAADAAMAAAAKAAwAAAADAAQAAAAKAA0AAAACAAQAAAAKAA4AAAADAAQAAAAKAA8AAAADAAQAAAAKABAAAAADAAMAAAAKABEAAAACAAQAAAAKABIAAAADAAQAAAAKABMAAAACAAMAAAAKABQAAAADAAQAAAAKABUAAAACAAQAAAAKABYAAAACAAMAAAAKABcAAAADAAQAAAAKABgAAAADAAMAAAAKABkAAAADAAQAAAAKABoAAAACAAMAAAAKABsAAAADAAQAAAAKABwAAAACAAIAAAAKAB0AAAACAAIAAAALAP//AAADAAAAAAALAAAAAAACAAMAAAALAAEAAAADAAQAAAALAAIAAAADAAMAAAALAAMAAAADAAMAAAALAAQAAAADAAQAAAALAAUAAAADAAMAAAALAAYAAAACAAQAAAALAAcAAAADAAQAAAALAAgAAAACAAMAAAALAAkAAAADAAQAAAALAAoAAAACAAMAAAALAAsAAAACAAMAAAALAAwAAAADAAQAAAALAA0AAAACAAQAAAALAA4AAAACAAQAAAALAA8AAAADAAQAAAALABAAAAACAAQAAAALABEAAAADAAMAAAALABIAAAACAAMAAAALABMAAAACAAQAAAALABQAAAACAAMAAAALABUAAAADAAMAAAALABYAAAACAAQAAAALABcAAAADAAQAAAALABgAAAACAAQAAAALABkAAAADAAMAAAALABoAAAACAAMAAAALABsAAAADAAMAAAALABwAAAACAAIAAAALAB0AAAACAAIAAAAMAP//AAADAAAAAAAMAAAAAAACAAQAAAAMAAEAAAACAAMAAAAMAAIAAAACAAQAAAAMAAMAAAADAAQAAAAMAAQAAAACAAMAAAAMAAUAAAACAAMAAAAMAAYAAAADAAMAAAAMAAcAAAADAAQAAAAMAAgAAAADAAQAAAAMAAkAAAACAAMAAAAMAAoAAAADAAMAAAAMAAsAAAADAAQAAAAMAAwAAAADAAMAAAAMAA0AAAADAAQAAAAMAA4AAAACAAQAAAAMAA8AAAACAAQAAAAMABAAAAACAAMAAAAMABEAAAADAAQAAAAMABIAAAACAAMAAAAMABMAAAACAAMAAAAMABQAAAADAAMAAAAMABUAAAACAAMAAAAMABYAAAACAAMAAAAMABcAAAACAAMAAAAMABgAAAADAAMAAAAMABkAAAADAAQAAAAMABoAAAADAAQAAAAMABsAAAADAAMAAAAMABwAAAACAAIAAAAMAB0AAAACAAIAAAANAP//AAADAAAAAAANAAAAAAADAAQAAAANAAEAAAACAAMAAAANAAIAAAACAAMAAAANAAMAAAACAAQAAAANAAQAAAADAAMAAAANAAUAAAACAAQAAAANAAYAAAACAAQAAAANAAcAAAADAAMAAAANAAgAAAACAAQAAAANAAkAAAACAAQAAAANAAoAAAACAAQAAAANAAsAAAADAAQAAAANAAwAAAADAAQAAAANAA0AAAADAAMAAAANAA4AAAACAAMAAAANAA8AAAADAAQAAAANABAAAAADAAQAAAANABEAAAADAAQAAAANABIAAAADAAMAAAANABMAAAADAAMAAAANABQAAAADAAQAAAANABUAAAACAAQAAAANABYAAAADAAQAAAANABcAAAADAAMAAAANABgAAAACAAMAAAANABkAAAACAAMAAAANABoAAAADAAMAAAANABsAAAADAAMAAAANABwAAAACAAIAAAANAB0AAAACAAIAAAAOAP//AAADAAAAAAAOAAAAAAADAAMAAAAOAAEAAAACAAMAAAAOAAIAAAADAAQAAAAOAAMAAAADAAQAAAAOAAQAAAADAAMAAAAOAAUAAAACAAMAAAAOAAYAAAADAAMAAAAOAAcAAAADAAQAAAAOAAgAAAADAAQAAAAOAAkAAAADAAQAAAAOAAoAAAACAAQAAAAOAAsAAAACAAMAAAAOAAwAAAADAAQAAAAOAA0AAAACAAQAAAAOAA4AAAACAAMAAAAOAA8AAAACAAMAAAAOABAAAAADAAQAAAAOABEAAAADAAMAAAAOABIAAAACAAMAAAAOABMAAAADAAQAAAAOABQAAAACAAMAAAAOABUAAAACAAQAAAAOABYAAAACAAQAAAAOABcAAAADAAQAAAAOABgAAAADAAQAAAAOABkAAAADAAQAAAAOABoAAAACAAMAAAAOABsAAAACAAQAAAAOABwAAAACAAIAAAAOAB0AAAACAAIAAAAPAP//AAADAAAAAAAPAAAAAAADAAQAAAAPAAEAAAADAAMAAAAPAAIAAAACAAQAAAAPAAMAAAADAAQAAAAPAAQAAAACAAQAAAAPAAUAAAADAAQAAAAPAAYAAAADAAQAAAAPAAcAAAACAAQAAAAPAAgAAAADAAMAAAAPAAkAAAADAAQAAAAPAAoAAAACAAQAAAAPAAsAAAACAAMAAAAPAAwAAAACAAQAAAAPAA0AAAADAAQAAAAPAA4AAAACAAMAAAAPAA8AAAACAAQAAAAPABAAAAACAAQAAAAPABEAAAADAAQAAAAPABIAAAACAAMAAAAPABMAAAADAAQAAAAPABQAAAACAAQAAAAPABUAAAACAAQAAAAPABYAAAACAAMAAAAPABcAAAACAAMAAAAPABgAAAADAAQAAAAPABkAAAACAAQAAAAPABoAAAACAAQAAAAPABsAAAADAAMAAAAPABwAAAACAAIAAAAPAB0AAAACAAIAAAAQAP//AAADAAAAAAAQAAAAAAADAAMAAAAQAAEAAAADAAQAAAAQAAIAAAACAAQAAAAQAAMAAAACAAMAAAAQAAQAAAADAAQAAAAQAAUAAAADAAQAAAAQAAYAAAACAAMAAAAQAAcAAAACAAMAAAAQAAgAAAADAAMAAAAQAAkAAAADAAQAAAAQAAoAAAACAAQAAAAQAAsAAAADAAQAAAAQAAwAAAADAAQAAAAQAA0AAAADAAMAAAAQAA4AAAACAAMAAAAQAA8AAAADAAQAAAAQABAAAAADAAQAAAAQABEAAAACAAQAAAAQABIAAAADAAQAAAAQABMAAAACAAQAAAAQABQAAAACAAMAAAAQABUAAAACAAMAAAAQABYAAAADAAMAAAAQABcAAAADAAMAAAAQABgAAAACAAMAAAAQABkAAAADAAMAAAAQABoAAAACAAQAAAAQABsAAAACAAQAAAAQABwAAAACAAIAAAAQAB0AAAACAAIAAAARAP//AAADAAAAAAARAAAAAAACAAQAAAARAAEAAAACAAMAAAARAAIAAAADAAQAAAARAAMAAAADAAMAAAARAAQAAAADAAMAAAARAAUAAAADAAMAAAARAAYAAAACAAQAAAARAAcAAAACAAQAAAARAAgAAAACAAMAAAARAAkAAAADAAMAAAARAAoAAAACAAMAAAARAAsAAAACAAMAAAARAAwAAAACAAQAAAARAA0AAAACAAMAAAARAA4AAAADAAQAAAARAA8AAAACAAQAAAARABAAAAACAAMAAAARABEAAAADAAQAAAARABIAAAADAAQAAAARABMAAAADAAMAAAARABQAAAADAAMAAAARABUAAAADAAQAAAARABYAAAACAAQAAAARABcAAAADAAQAAAARABgAAAACAAMAAAARABkAAAACAAMAAAARABoAAAADAAQAAAARABsAAAADAAQAAAARABwAAAACAAIAAAARAB0AAAACAAIAAAASAP//AAADAAAAAAASAAAAAAACAAQAAAASAAEAAAADAAMAAAASAAIAAAACAAMAAAASAAMAAAACAAMAAAASAAQAAAADAAQAAAASAAUAAAACAAMAAAASAAYAAAADAAQAAAASAAcAAAADAAQAAAASAAgAAAADAAQAAAASAAkAAAACAAMAAAASAAoAAAADAAQAAAASAAsAAAACAAQAAAASAAwAAAADAAQAAAASAA0AAAADAAMAAAASAA4AAAACAAQAAAASAA8AAAADAAMAAAASABAAAAADAAQAAAASABEAAAADAAQAAAASABIAAAADAAMAAAASABMAAAADAAQAAAASABQAAAADAAMAAAASABUAAAACAAMAAAASABYAAAACAAMAAAASABcAAAADAAQAAAASABgAAAACAAQAAAASABkAAAACAAQAAAASABoAAAACAAQAAAASABsAAAACAAQAAAASABwAAAACAAIAAAASAB0AAAACAAIAAAATAP//AAADAAAAAAATAAAAAAACAAQAAAATAAEAAAADAAQAAAATAAIAAAADAAQAAAATAAMAAAADAAQAAAATAAQAAAACAAMAAAATAAUAAAADAAQAAAATAAYAAAACAAMAAAATAAcAAAADAAQAAAATAAgAAAADAAQAAAATAAkAAAACAAMAAAATAAoAAAADAAMAAAATAAsAAAACAAMAAAATAAwAAAADAAMAAAATAA0AAAADAAMAAAATAA4AAAACAAQAAAATAA8AAAACAAQAAAATABAAAAACAAMAAAATABEAAAACAAQAAAATABIAAAACAAMAAAATABMAAAADAAQAAAATABQAAAADAAQAAAATABUAAAACAAQAAAATABYAAAACAAMAAAATABcAAAACAAMAAAATABgAAAACAAMAAAATABkAAAADAAMAAAATABoAAAACAAMAAAATABsAAAACAAMAAAATABwAAAACAAIAAAATAB0AAAACAAIAAAAUAP//AAADAAAAAAAUAAAAAAACAAMAAAAUAAEAAAACAAQAAAAUAAIAAAADAAQAAAAUAAMAAAACAAMAAAAUAAQAAAACAAQAAAAUAAUAAAACAAMAAAAUAAYAAAACAAMAAAAUAAcAAAADAAQAAAAUAAgAAAADAAMAAAAUAAkAAAACAAQAAAAUAAoAAAACAAMAAAAUAAsAAAADAAQAAAAUAAwAAAADAAMAAAAUAA0AAAADAAQAAAAUAA4AAAACAAQAAAAUAA8AAAACAAQAAAAUABAAAAADAAMAAAAUABEAAAADAAQAAAAUABIAAAACAAMAAAAUABMAAAADAAQAAAAUABQAAAACAAMAAAAUABUAAAADAAMAAAAUABYAAAADAAQAAAAUABcAAAADAAMAAAAUABgAAAACAAMAAAAUABkAAAADAAQAAAAUABoAAAACAAMAAAAUABsAAAACAAMAAAAUABwAAAACAAIAAAAUAB0AAAACAAIAAAAVAP//AAADAAAAAAAVAAAAAAADAAQAAAAVAAEAAAACAAQAAAAVAAIAAAACAAQAAAAVAAMAAAADAAQAAAAVAAQAAAACAAQAAAAVAAUAAAADAAQAAAAVAAYAAAACAAMAAAAVAAcAAAADAAMAAAAVAAgAAAADAAQAAAAVAAkAAAADAAMAAAAVAAoAAAADAAQAAAAVAAsAAAADAAMAAAAVAAwAAAADAAQAAAAVAA0AAAACAAQAAAAVAA4AAAADAAMAAAAVAA8AAAACAAMAAAAVABAAAAADAAMAAAAVABEAAAACAAQAAAAVABIAAAADAAMAAAAVABMAAAACAAQAAAAVABQAAAADAAMAAAAVABUAAAADAAQAAAAVABYAAAACAAQAAAAVABcAAAADAAMAAAAVABgAAAACAAQAAAAVABkAAAADAAQAAAAVABoAAAACAAQAAAAVABsAAAACAAQAAAAVABwAAAACAAIAAAAVAB0AAAACAAIAAAAWAP//AAADAAAAAAAWAAAAAAACAAMAAAAWAAEAAAACAAQAAAAWAAIAAAACAAQAAAAWAAMAAAACAAQAAAAWAAQAAAADAAMAAAAWAAUAAAACAAMAAAAWAAYAAAACAAQAAAAWAAcAAAADAAQAAAAWAAgAAAADAAMAAAAWAAkAAAADAAMAAAAWAAoAAAACAAMAAAAWAAsAAAADAAQAAAAWAAwAAAADAAQAAAAWAA0AAAACAAQAAAAWAA4AAAADAAQAAAAWAA8AAAACAAQAAAAWABAAAAADAAMAAAAWABEAAAACAAMAAAAWABIAAAADAAMAAAAWABMAAAADAAQAAAAWABQAAAACAAQAAAAWABUAAAACAAQAAAAWABYAAAADAAQAAAAWABcAAAADAAMAAAAWABgAAAACAAMAAAAWABkAAAACAAMAAAAWABoAAAACAAMAAAAWABsAAAADAAMAAAAWABwAAAACAAIAAAAWAB0AAAACAAIAAAAXAP//AAADAAAAAAAXAAAAAAADAAQAAAAXAAEAAAACAAMAAAAXAAIAAAACAAQAAAAXAAMAAAACAAMAAAAXAAQAAAADAAMAAAAXAAUAAAADAAQAAAAXAAYAAAADAAQAAAAXAAcAAAACAAMAAAAXAAgAAAACAAMAAAAXAAkAAAADAAMAAAAXAAoAAAACAAMAAAAXAAsAAAACAAQAAAAXAAwAAAADAAQAAAAXAA0AAAADAAQAAAAXAA4AAAACAAQAAAAXAA8AAAACAAQAAAAXABAAAAACAAMAAAAXABEAAAACAAMAAAAXABIAAAADAAMAAAAXABMAAAACAAMAAAAXABQAAAACAAMAAAAXABUAAAACAAQAAAAXABYAAAACAAQAAAAXABcAAAACAAQAAAAXABgAAAACAAMAAAAXABkAAAACAAMAAAAXABoAAAADAAQAAAAXABsAAAADAAMAAAAXABwAAAACAAIAAAAXAB0AAAACAAIAAAAYAP//AAADAAAAAAAYAAAAAAACAAMAAAAYAAEAAAACAAMAAAAYAAIAAAACAAQAAAAYAAMAAAADAAMAAAAYAAQAAAADAAMAAAAYAAUAAAACAAMAAAAYAAYAAAADAAMAAAAYAAcAAAADAAQAAAAYAAgAAAACAAQAAAAYAAkAAAADAAQAAAAYAAoAAAADAAQAAAAYAAsAAAACAAMAAAAYAAwAAAADAAQAAAAYAA0AAAACAAQAAAAYAA4AAAACAAMAAAAYAA8AAAADAAQAAAAYABAAAAADAAMAAAAYABEAAAACAAMAAAAYABIAAAACAAQAAAAYABMAAAADAAQAAAAYABQAAAACAAMAAAAYABUAAAACAAMAAAAYABYAAAADAAMAAAAYABcAAAACAAMAAAAYABgAAAACAAQAAAAYABkAAAACAAQAAAAYABoAAAACAAQAAAAYABsAAAADAAMAAAAYABwAAAACAAIAAAAYAB0AAAACAAIAAAAZAP//AAADAAAAAAAZAAAAAAACAAMAAAAZAAEAAAADAAMAAAAZAAIAAAACAAQAAAAZAAMAAAADAAMAAAAZAAQAAAACAAMAAAAZAAUAAAADAAMAAAAZAAYAAAADAAQAAAAZAAcAAAADAAMAAAAZAAgAAAACAAMAAAAZAAkAAAACAAQAAAAZAAoAAAADAAMAAAAZAAsAAAACAAQAAAAZAAwAAAADAAMAAAAZAA0AAAADAAMAAAAZAA4AAAACAAMAAAAZAA8AAAACAAQAAAAZABAAAAACAAQAAAAZABEAAAADAAQAAAAZABIAAAACAAQAAAAZABMAAAADAAMAAAAZABQAAAACAAMAAAAZABUAAAADAAQAAAAZABYAAAACAAMAAAAZABcAAAACAAQAAAAZABgAAAACAAQAAAAZABkAAAACAAMAAAAZABoAAAACAAQAAAAZABsAAAADAAMAAAAZABwAAAACAAIAAAAZAB0AAAACAAIAAAAaAP//AAADAAAAAAAaAAAAAAADAAMAAAAaAAEAAAADAAQAAAAaAAIAAAADAAMAAAAaAAMAAAADAAMAAAAaAAQAAAACAAMAAAAaAAUAAAADAAMAAAAaAAYAAAADAAQAAAAaAAcAAAACAAMAAAAaAAgAAAACAAQAAAAaAAkAAAACAAQAAAAaAAoAAAADAAMAAAAaAAsAAAACAAQAAAAaAAwAAAACAAMAAAAaAA0AAAADAAMAAAAaAA4AAAACAAMAAAAaAA8AAAACAAMAAAAaABAAAAADAAQAAAAaABEAAAACAAQAAAAaABIAAAADAAQAAAAaABMAAAADAAMAAAAaABQAAAADAAMAAAAaABUAAAADAAMAAAAaABYAAAADAAMAAAAaABcAAAADAAQAAAAaABgAAAADAAMAAAAaABkAAAADAAQAAAAaABoAAAACAAQAAAAaABsAAAADAAMAAAAaABwAAAACAAIAAAAaAB0AAAACAAIAAAAbAP//AAADAAAAAAAbAAAAAAACAAMAAAAbAAEAAAACAAQAAAAbAAIAAAADAAQAAAAbAAMAAAADAAMAAAAbAAQAAAADAAMAAAAbAAUAAAACAAQAAAAbAAYAAAACAAMAAAAbAAcAAAACAAQAAAAbAAgAAAACAAQAAAAbAAkAAAADAAQAAAAbAAoAAAACAAQAAAAbAAsAAAACAAQAAAAbAAwAAAADAAMAAAAbAA0AAAACAAQAAAAbAA4AAAACAAMAAAAbAA8AAAACAAMAAAAbABAAAAACAAMAAAAbABEAAAACAAMAAAAbABIAAAACAAMAAAAbABMAAAACAAQAAAAbABQAAAACAAMAAAAbABUAAAACAAQAAAAbABYAAAACAAQAAAAbABcAAAADAAMAAAAbABgAAAACAAMAAAAbABkAAAADAAMAAAAbABoAAAADAAQAAAAbABsAAAADAAMAAAAbABwAAAACAAIAAAAbAB0AAAACAAIAAAAcAP//AAADAAAAAAAcAAAAAAADAAQAAAAcAAEAAAADAAQAAAAcAAIAAAADAAMAAAAcAAMAAAADAAMAAAAcAAQAAAADAAQAAAAcAAUAAAADAAQAAAAcAAYAAAADAAMAAAAcAAcAAAACAAMAAAAcAAgAAAADAAQAAAAcAAkAAAADAAQAAAAcAAoAAAACAAMAAAAcAAsAAAADAAQAAAAcAAwAAAACAAMAAAAcAA0AAAADAAQAAAAcAA4AAAADAAQAAAAcAA8AAAACAAMAAAAcABAAAAADAAQAAAAcABEAAAACAAQAAAAcABIAAAADAAMAAAAcABMAAAADAAQAAAAcABQAAAADAAMAAAAcABUAAAACAAMAAAAcABYAAAACAAQAAAAcABcAAAACAAQAAAAcABgAAAACAAMAAAAcABkAAAACAAMAAAAcABoAAAACAAMAAAAcABsAAAADAAQAAAAcABwAAAACAAIAAAAcAB0AAAACAAIAAAAdAP//AAADAAAAAAAdAAAAAAADAAQAAAAdAAEAAAADAAMAAAAdAAIAAAACAAQAAAAdAAMAAAACAAQAAAAdAAQAAAADAAQAAAAdAAUAAAADAAQAAAAdAAYAAAADAAMAAAAdAAcAAAACAAMAAAAdAAgAAAADAAMAAAAdAAkAAAACAAMAAAAdAAoAAAADAAMAAAAdAAsAAAADAAQAAAAdAAwAAAADAAQAAAAdAA0AAAACAAQAAAAdAA4AAAADAAMAAAAdAA8AAAACAAQAAAAdABAAAAACAAQAAAAdABEAAAACAAQAAAAdABIAAAADAAQAAAAdABMAAAADAAMAAAAdABQAAAACAAQAAAAdABUAAAADAAMAAAAdABYAAAADAAQAAAAdABcAAAADAAQAAAAdABgAAAADAAQAAAAdABkAAAADAAMAAAAdABoAAAADAAMAAAAdABsAAAADAAQAAAAdABwAAAACAAIAAAAdAB0AAAACAAIAAAAeAP//AAADAAAAAAAeAAAAAAACAAMAAAAeAAEAAAADAAQAAAAeAAIAAAACAAQAAAAeAAMAAAADAAQAAAAeAAQAAAACAAMAAAAeAAUAAAADAAQAAAAeAAYAAAACAAQAAAAeAAcAAAADAAQAAAAeAAgAAAADAAQAAAAeAAkAAAACAAMAAAAeAAoAAAACAAQAAAAeAAsAAAACAAQAAAAeAAwAAAACAAMAAAAeAA0AAAADAAQAAAAeAA4AAAADAAQAAAAeAA8AAAACAAQAAAAeABAAAAACAAQAAAAeABEAAAADAAMAAAAeABIAAAADAAMAAAAeABMAAAADAAQAAAAeABQAAAACAAMAAAAeABUAAAADAAQAAAAeABYAAAADAAQAAAAeABcAAAADAAQAAAAeABgAAAACAAQAAAAeABkAAAADAAQAAAAeABoAAAACAAQAAAAeABsAAAADAAQAAAAeABwAAAACAAIAAAAeAB0AAAACAAIAAAAfAP//AAADAAAAAAAfAAAAAAACAAQAAAAfAAEAAAADAAQAAAAfAAIAAAADAAQAAAAfAAMAAAACAAMAAAAfAAQAAAACAAMAAAAfAAUAAAADAAQAAAAfAAYAAAADAAMAAAAfAAcAAAADAAQAAAAfAAgAAAACAAQAAAAfAAkAAAADAAQAAAAfAAoAAAACAAQAAAAfAAsAAAACAAQAAAAfAAwAAAADAAQAAAAfAA0AAAACAAMAAAAfAA4AAAACAAMAAAAfAA8AAAADAAQAAAAfABAAAAADAAMAAAAfABEAAAACAAQAAAAfABIAAAACAAMAAAAfABMAAAACAAQAAAAfABQAAAACAAMAAAAfABUAAAADAAMAAAAfABYAAAADAAQAAAAfABcAAAADAAMAAAAfABgAAAACAAMAAAAfABkAAAACAAMAAAAfABoAAAACAAMAAAAfABsAAAACAAQAAAAfABwAAAACAAIAAAAfAB0AAAACAAIAAAAgAP//AAADAAAAAAAgAAAAAAACAAQAAAAgAAEAAAACAAQAAAAgAAIAAAACAAMAAAAgAAMAAAADAAQAAAAgAAQAAAACAAQAAAAgAAUAAAACAAQAAAAgAAYAAAACAAMAAAAgAAcAAAADAAQAAAAgAAgAAAACAAMAAAAgAAkAAAADAAMAAAAgAAoAAAADAAMAAAAgAAsAAAACAAQAAAAgAAwAAAACAAQAAAAgAA0AAAADAAMAAAAgAA4AAAADAAMAAAAgAA8AAAACAAQAAAAgABAAAAADAAQAAAAgABEAAAADAAMAAAAgABIAAAACAAMAAAAgABMAAAADAAQAAAAgABQAAAADAAQAAAAgABUAAAACAAMAAAAgABYAAAADAAQAAAAgABcAAAACAAMAAAAgABgAAAADAAQAAAAgABkAAAADAAMAAAAgABoAAAACAAMAAAAgABsAAAADAAMAAAAgABwAAAACAAIAAAAgAB0AAAACAAIAAAAhAP//AAADAAAAAAAhAAAAAAADAAQAAAAhAAEAAAACAAMAAAAhAAIAAAACAAQAAAAhAAMAAAADAAQAAAAhAAQAAAADAAMAAAAhAAUAAAADAAMAAAAhAAYAAAADAAMAAAAhAAcAAAADAAQAAAAhAAgAAAACAAQAAAAhAAkAAAADAAMAAAAhAAoAAAACAAMAAAAhAAsAAAADAAQAAAAhAAwAAAACAAMAAAAhAA0AAAADAAMAAAAhAA4AAAACAAQAAAAhAA8AAAADAAQAAAAhABAAAAACAAQAAAAhABEAAAADAAQAAAAhABIAAAACAAMAAAAhABMAAAADAAQAAAAhABQAAAADAAMAAAAhABUAAAADAAQAAAAhABYAAAACAAMAAAAhABcAAAADAAMAAAAhABgAAAADAAQAAAAhABkAAAACAAMAAAAhABoAAAADAAMAAAAhABsAAAADAAQAAAAhABwAAAACAAIAAAAhAB0AAAACAAIAAAAiAP//AAADAAAAAAAiAAAAAAACAAQAAAAiAAEAAAACAAQAAAAiAAIAAAADAAQAAAAiAAMAAAADAAQAAAAiAAQAAAACAAMAAAAiAAUAAAADAAMAAAAiAAYAAAACAAMAAAAiAAcAAAADAAQAAAAiAAgAAAACAAQAAAAiAAkAAAADAAMAAAAiAAoAAAADAAMAAAAiAAsAAAACAAMAAAAiAAwAAAACAAQAAAAiAA0AAAADAAQAAAAiAA4AAAADAAMAAAAiAA8AAAADAAQAAAAiABAAAAACAAQAAAAiABEAAAACAAQAAAAiABIAAAADAAMAAAAiABMAAAACAAQAAAAiABQAAAADAAMAAAAiABUAAAACAAMAAAAiABYAAAACAAMAAAAiABcAAAADAAMAAAAiABgAAAADAAQAAAAiABkAAAACAAMAAAAiABoAAAADAAQAAAAiABsAAAACAAMAAAAiABwAAAACAAIAAAAiAB0AAAACAAIAAAAjAP//AAADAAAAAAAjAAAAAAADAAQAAAAjAAEAAAADAAMAAAAjAAIAAAACAAQAAAAjAAMAAAACAAQAAAAjAAQAAAACAAQAAAAjAAUAAAACAAQAAAAjAAYAAAACAAQAAAAjAAcAAAACAAMAAAAjAAgAAAADAAMAAAAjAAkAAAACAAMAAAAjAAoAAAADAAMAAAAjAAsAAAACAAMAAAAjAAwAAAADAAMAAAAjAA0AAAACAAQAAAAjAA4AAAADAAQAAAAjAA8AAAACAAQAAAAjABAAAAACAAMAAAAjABEAAAADAAMAAAAjABIAAAADAAQAAAAjABMAAAACAAQAAAAjABQAAAADAAMAAAAjABUAAAADAAMAAAAjABYAAAADAAQAAAAjABcAAAADAAMAAAAjABgAAAACAAMAAAAjABkAAAADAAMAAAAjABoAAAACAAMAAAAjABsAAAADAAMAAAAjABwAAAACAAIAAAAjAB0AAAACAAIAAAAkAP//AAADAAAAAAAkAAAAAAADAAQAAAAkAAEAAAACAAMAAAAkAAIAAAACAAMAAAAkAAMAAAACAAQAAAAkAAQAAAADAAMAAAAkAAUAAAADAAQAAAAkAAYAAAADAAQAAAAkAAcAAAACAAQAAAAkAAgAAAADAAQAAAAkAAkAAAACAAQAAAAkAAoAAAADAAMAAAAkAAsAAAACAAQAAAAkAAwAAAADAAQAAAAkAA0AAAACAAMAAAAkAA4AAAADAAQAAAAkAA8AAAACAAQAAAAkABAAAAACAAQAAAAkABEAAAADAAQAAAAkABIAAAACAAMAAAAkABMAAAADAAMAAAAkABQAAAACAAMAAAAkABUAAAACAAMAAAAkABYAAAADAAQAAAAkABcAAAADAAQAAAAkABgAAAADAAMAAAAkABkAAAACAAMAAAAkABoAAAADAAMAAAAkABsAAAACAAMAAAAkABwAAAACAAIAAAAkAB0AAAACAAIAAAAlAP//AAADAAAAAAAlAAAAAAADAAMAAAAlAAEAAAADAAMAAAAlAAIAAAACAAMAAAAlAAMAAAADAAMAAAAlAAQAAAACAAQAAAAlAAUAAAACAAMAAAAlAAYAAAACAAQAAAAlAAcAAAADAAMAAAAlAAgAAAACAAQAAAAlAAkAAAADAAQAAAAlAAoAAAADAAQAAAAlAAsAAAADAAQAAAAlAAwAAAACAAMAAAAlAA0AAAACAAMAAAAlAA4AAAADAAQAAAAlAA8AAAADAAMAAAAlABAAAAADAAQAAAAlABEAAAACAAMAAAAlABIAAAACAAQAAAAlABMAAAACAAMAAAAlABQAAAACAAMAAAAlABUAAAACAAMAAAAlABYAAAADAAMAAAAlABcAAAADAAMAAAAlABgAAAADAAMAAAAlABkAAAACAAQAAAAlABoAAAADAAMAAAAlABsAAAADAAMAAAAlABwAAAACAAIAAAAlAB0AAAACAAIAAAAmAP//AAADAAAAAAAmAAAAAAACAAQAAAAmAAEAAAACAAMAAAAmAAIAAAADAAMAAAAmAAMAAAADAAMAAAAmAAQAAAADAAMAAAAmAAUAAAACAAQAAAAmAAYAAAADAAMAAAAmAAcAAAACAAQAAAAmAAgAAAADAAQAAAAmAAkAAAACAAQAAAAmAAoAAAACAAMAAAAmAAsAAAADAAMAAAAmAAwAAAACAAMAAAAmAA0AAAACAAQAAAAmAA4AAAADAAQAAAAmAA8AAAADAAMAAAAmABAAAAACAAMAAAAmABEAAAACAAQAAAAmABIAAAADAAQAAAAmABMAAAADAAMAAAAmABQAAAADAAQAAAAmABUAAAADAAMAAAAmABYAAAACAAMAAAAmABcAAAACAAMAAAAmABgAAAADAAMAAAAmABkAAAACAAMAAAAmABoAAAACAAMAAAAmABsAAAADAAMAAAAmABwAAAACAAIAAAAmAB0AAAACAAIAAAAnAP//AAADAAAAAAAnAAAAAAACAAQAAAAnAAEAAAADAAQAAAAnAAIAAAACAAMAAAAnAAMAAAADAAQAAAAnAAQAAAACAAMAAAAnAAUAAAADAAMAAAAnAAYAAAACAAMAAAAnAAcAAAADAAMAAAAnAAgAAAADAAQAAAAnAAkAAAADAAQAAAAnAAoAAAACAAQAAAAnAAsAAAACAAQAAAAnAAwAAAACAAQAAAAnAA0AAAADAAQAAAAnAA4AAAADAAQAAAAnAA8AAAACAAMAAAAnABAAAAADAAQAAAAnABEAAAADAAQAAAAnABIAAAACAAQAAAAnABMAAAADAAMAAAAnABQAAAACAAQAAAAnABUAAAADAAQAAAAnABYAAAACAAQAAAAnABcAAAACAAMAAAAnABgAAAACAAMAAAAnABkAAAACAAMAAAAnABoAAAACAAMAAAAnABsAAAADAAQAAAAnABwAAAACAAIAAAAnAB0AAAACAAIAAAAoAP//AAADAAAAAAAoAAAAAAADAAQAAAAoAAEAAAACAAMAAAAoAAIAAAACAAMAAAAoAAMAAAADAAQAAAAoAAQAAAADAAMAAAAoAAUAAAACAAMAAAAoAAYAAAADAAMAAAAoAAcAAAADAAMAAAAoAAgAAAACAAQAAAAoAAkAAAADAAQAAAAoAAoAAAACAAMAAAAoAAsAAAACAAQAAAAoAAwAAAADAAQAAAAoAA0AAAADAAQAAAAoAA4AAAADAAMAAAAoAA8AAAACAAMAAAAoABAAAAACAAMAAAAoABEAAAADAAMAAAAoABIAAAACAAMAAAAoABMAAAACAAMAAAAoABQAAAADAAMAAAAoABUAAAACAAQAAAAoABYAAAADAAMAAAAoABcAAAACAAQAAAAoABgAAAADAAMAAAAoABkAAAACAAMAAAAoABoAAAADAAMAAAAoABsAAAADAAQAAAAoABwAAAACAAIAAAAoAB0AAAACAAIAAAApAP//AAADAAAAAAApAAAAAAACAAMAAAApAAEAAAACAAMAAAApAAIAAAACAAMAAAApAAMAAAACAAQAAAApAAQAAAADAAMAAAApAAUAAAADAAQAAAApAAYAAAACAAQAAAApAAcAAAADAAQAAAApAAgAAAACAAQAAAApAAkAAAACAAQAAAApAAoAAAADAAQAAAApAAsAAAADAAMAAAApAAwAAAACAAQAAAApAA0AAAADAAMAAAApAA4AAAADAAQAAAApAA8AAAADAAQAAAApABAAAAADAAMAAAApABEAAAACAAMAAAApABIAAAACAAMAAAApABMAAAADAAMAAAApABQAAAACAAQAAAApABUAAAACAAQAAAApABYAAAACAAQAAAApABcAAAACAAQAAAApABgAAAADAAQAAAApABkAAAADAAQAAAApABoAAAADAAQAAAApABsAAAACAAMAAAApABwAAAACAAIAAAApAB0AAAACAAIAAAAqAP//AAADAAAAAAAqAAAAAAADAAMAAAAqAAEAAAACAAQAAAAqAAIAAAACAAMAAAAqAAMAAAADAAQAAAAqAAQAAAACAAMAAAAqAAUAAAADAAQAAAAqAAYAAAACAAQAAAAqAAcAAAACAAQAAAAqAAgAAAADAAQAAAAqAAkAAAADAAQAAAAqAAoAAAADAAMAAAAqAAsAAAACAAQAAAAqAAwAAAACAAMAAAAqAA0AAAACAAQAAAAqAA4AAAADAAMAAAAqAA8AAAACAAQAAAAqABAAAAACAAQAAAAqABEAAAADAAMAAAAqABIAAAACAAMAAAAqABMAAAACAAMAAAAqABQAAAADAAMAAAAqABUAAAADAAMAAAAqABYAAAACAAMAAAAqABcAAAACAAQAAAAqABgAAAADAAQAAAAqABkAAAACAAMAAAAqABoAAAADAAQAAAAqABsAAAADAAQAAAAqABwAAAACAAIAAAAqAB0AAAACAAIAAAArAP//AAADAAAAAAArAAAAAAADAAQAAAArAAEAAAADAAQAAAArAAIAAAADAAQAAAArAAMAAAADAAQAAAArAAQAAAACAAMAAAArAAUAAAACAAMAAAArAAYAAAADAAQAAAArAAcAAAACAAMAAAArAAgAAAADAAQAAAArAAkAAAADAAQAAAArAAoAAAADAAQAAAArAAsAAAADAAQAAAArAAwAAAADAAQAAAArAA0AAAADAAQAAAArAA4AAAADAAQAAAArAA8AAAADAAQAAAArABAAAAACAAQAAAArABEAAAACAAMAAAArABIAAAADAAMAAAArABMAAAADAAQAAAArABQAAAACAAQAAAArABUAAAACAAMAAAArABYAAAACAAQAAAArABcAAAACAAQAAAArABgAAAADAAQAAAArABkAAAADAAQAAAArABoAAAACAAQAAAArABsAAAADAAMAAAArABwAAAACAAIAAAArAB0AAAACAAIAAAAsAP//AAADAAAAAAAsAAAAAAACAAQAAAAsAAEAAAACAAMAAAAsAAIAAAACAAMAAAAsAAMAAAADAAMAAAAsAAQAAAACAAQAAAAsAAUAAAACAAQAAAAsAAYAAAADAAMAAAAsAAcAAAACAAQAAAAsAAgAAAACAAMAAAAsAAkAAAACAAQAAAAsAAoAAAADAAMAAAAsAAsAAAACAAMAAAAsAAwAAAACAAQAAAAsAA0AAAADAAMAAAAsAA4AAAADAAQAAAAsAA8AAAADAAQAAAAsABAAAAADAAQAAAAsABEAAAACAAMAAAAsABIAAAACAAQAAAAsABMAAAADAAMAAAAsABQAAAACAAQAAAAsABUAAAACAAQAAAAsABYAAAACAAMAAAAsABcAAAACAAQAAAAsABgAAAACAAMAAAAsABkAAAADAAQAAAAsABoAAAADAAQAAAAsABsAAAACAAQAAAAsABwAAAACAAIAAAAsAB0AAAACAAIAAAAtAP//AAADAAAAAAAtAAAAAAACAAMAAAAtAAEAAAACAAQAAAAtAAIAAAADAAMAAAAtAAMAAAACAAMAAAAtAAQAAAADAAMAAAAtAAUAAAACAAQAAAAtAAYAAAADAAMAAAAtAAcAAAACAAQAAAAtAAgAAAADAAMAAAAtAAkAAAACAAMAAAAtAAoAAAACAAMAAAAtAAsAAAADAAQAAAAtAAwAAAADAAQAAAAtAA0AAAACAAQAAAAtAA4AAAADAAMAAAAtAA8AAAACAAMAAAAtABAAAAACAAQAAAAtABEAAAADAAQAAAAtABIAAAACAAQAAAAtABMAAAACAAMAAAAtABQAAAADAAQAAAAtABUAAAADAAQAAAAtABYAAAADAAQAAAAtABcAAAADAAMAAAAtABgAAAADAAQAAAAtABkAAAADAAMAAAAtABoAAAACAAQAAAAtABsAAAACAAQAAAAtABwAAAACAAIAAAAtAB0AAAACAAIAAAAuAP//AAADAAAAAAAuAAAAAAACAAMAAAAuAAEAAAACAAMAAAAuAAIAAAACAAMAAAAuAAMAAAACAAMAAAAuAAQAAAACAAQAAAAuAAUAAAADAAMAAAAuAAYAAAACAAMAAAAuAAcAAAADAAMAAAAuAAgAAAACAAQAAAAuAAkAAAACAAQAAAAuAAoAAAADAAQAAAAuAAsAAAACAAMAAAAuAAwAAAADAAMAAAAuAA0AAAACAAQAAAAuAA4AAAADAAMAAAAuAA8AAAACAAQAAAAuABAAAAADAAMAAAAuABEAAAADAAMAAAAuABIAAAACAAQAAAAuABMAAAACAAQAAAAuABQAAAACAAQAAAAuABUAAAADAAQAAAAuABYAAAACAAMAAAAuABcAAAACAAMAAAAuABgAAAACAAMAAAAuABkAAAADAAMAAAAuABoAAAACAAQAAAAuABsAAAACAAMAAAAuABwAAAACAAIAAAAuAB0AAAACAAIAAAAvAP//AAADAAAAAAAvAAAAAAACAAMAAAAvAAEAAAADAAMAAAAvAAIAAAADAAMAAAAvAAMAAAACAAMAAAAvAAQAAAADAAQAAAAvAAUAAAACAAQAAAAvAAYAAAADAAQAAAAvAAcAAAACAAQAAAAvAAgAAAADAAMAAAAvAAkAAAACAAMAAAAvAAoAAAACAAMAAAAvAAsAAAACAAMAAAAvAAwAAAADAAMAAAAvAA0AAAACAAQAAAAvAA4AAAADAAMAAAAvAA8AAAADAAQAAAAvABAAAAACAAQAAAAvABEAAAADAAQAAAAvABIAAAADAAQAAAAvABMAAAACAAQAAAAvABQAAAACAAQAAAAvABUAAAACAAMAAAAvABYAAAACAAQAAAAvABcAAAADAAMAAAAvABgAAAACAAQAAAAvABkAAAACAAMAAAAvABoAAAACAAMAAAAvABsAAAACAAQAAAAvABwAAAACAAIAAAAvAB0AAAACAAIAAAAwAP//AAADAAAAAAAwAAAAAAACAAQAAAAwAAEAAAADAAMAAAAwAAIAAAACAAQAAAAwAAMAAAADAAQAAAAwAAQAAAACAAMAAAAwAAUAAAACAAMAAAAwAAYAAAACAAMAAAAwAAcAAAACAAQAAAAwAAgAAAADAAQAAAAwAAkAAAADAAQAAAAwAAoAAAACAAQAAAAwAAsAAAADAAMAAAAwAAwAAAACAAMAAAAwAA0AAAADAAQAAAAwAA4AAAACAAQAAAAwAA8AAAADAAMAAAAwABAAAAACAAMAAAAwABEAAAADAAMAAAAwABIAAAADAAQAAAAwABMAAAADAAQAAAAwABQAAAADAAQAAAAwABUAAAADAAMAAAAwABYAAAADAAMAAAAwABcAAAACAAMAAAAwABgAAAACAAMAAAAwABkAAAADAAQAAAAwABoAAAACAAMAAAAwABsAAAACAAQAAAAwABwAAAACAAIAAAAwAB0AAAACAAIAAAAxAP//AAADAAAAAAAxAAAAAAADAAMAAAAxAAEAAAADAAQAAAAxAAIAAAACAAQAAAAxAAMAAAACAAMAAAAxAAQAAAACAAQAAAAxAAUAAAADAAMAAAAxAAYAAAACAAMAAAAxAAcAAAACAAQAAAAxAAgAAAACAAQAAAAxAAkAAAACAAMAAAAxAAoAAAADAAMAAAAxAAsAAAACAAMAAAAxAAwAAAADAAMAAAAxAA0AAAADAAMAAAAxAA4AAAADAAQAAAAxAA8AAAADAAMAAAAxABAAAAACAAMAAAAxABEAAAADAAMAAAAxABIAAAACAAMAAAAxABMAAAACAAQAAAAxABQAAAADAAQAAAAxABUAAAADAAMAAAAxABYAAAADAAMAAAAxABcAAAADAAMAAAAxABgAAAACAAQAAAAxABkAAAADAAMAAAAxABoAAAACAAMAAAAxABsAAAACAAQAAAAxABwAAAACAAIAAAAxAB0AAAACAAIAAAAyAP//AAADAAAAAAAyAAAAAAACAAMAAAAyAAEAAAADAAQAAAAyAAIAAAADAAQAAAAyAAMAAAADAAQAAAAyAAQAAAACAAMAAAAyAAUAAAACAAMAAAAyAAYAAAACAAMAAAAyAAcAAAADAAMAAAAyAAgAAAACAAMAAAAyAAkAAAADAAQAAAAyAAoAAAADAAMAAAAyAAsAAAACAAMAAAAyAAwAAAACAAQAAAAyAA0AAAACAAMAAAAyAA4AAAADAAMAAAAyAA8AAAADAAMAAAAyABAAAAADAAMAAAAyABEAAAACAAMAAAAyABIAAAACAAMAAAAyABMAAAACAAQAAAAyABQAAAADAAQAAAAyABUAAAADAAQAAAAyABYAAAADAAQAAAAyABcAAAACAAMAAAAyABgAAAACAAMAAAAyABkAAAADAAMAAAAyABoAAAADAAQAAAAyABsAAAADAAQAAAAyABwAAAACAAIAAAAyAB0AAAACAAIAAAAzAP//AAADAAAAAAAzAAAAAAACAAMAAAAzAAEAAAACAAQAAAAzAAIAAAADAAQAAAAzAAMAAAACAAMAAAAzAAQAAAADAAMAAAAzAAUAAAADAAMAAAAzAAYAAAADAAQAAAAzAAcAAAACAAMAAAAzAAgAAAACAAMAAAAzAAkAAAACAAQAAAAzAAoAAAACAAQAAAAzAAsAAAACAAMAAAAzAAwAAAADAAQAAAAzAA0AAAADAAMAAAAzAA4AAAADAAMAAAAzAA8AAAADAAQAAAAzABAAAAADAAQAAAAzABEAAAADAAMAAAAzABIAAAACAAMAAAAzABMAAAACAAMAAAAzABQAAAADAAQAAAAzABUAAAADAAQAAAAzABYAAAACAAMAAAAzABcAAAADAAMAAAAzABgAAAACAAQAAAAzABkAAAACAAMAAAAzABoAAAACAAQAAAAzABsAAAACAAMAAAAzABwAAAACAAIAAAAzAB0AAAACAAIAAAA0AP//AAADAAAAAAA0AAAAAAADAAQAAAA0AAEAAAACAAQAAAA0AAIAAAACAAQAAAA0AAMAAAADAAQAAAA0AAQAAAACAAQAAAA0AAUAAAADAAQAAAA0AAYAAAACAAQAAAA0AAcAAAACAAMAAAA0AAgAAAADAAMAAAA0AAkAAAADAAQAAAA0AAoAAAACAAQAAAA0AAsAAAACAAMAAAA0AAwAAAACAAQAAAA0AA0AAAADAAMAAAA0AA4AAAADAAMAAAA0AA8AAAADAAQAAAA0ABAAAAACAAMAAAA0ABEAAAADAAMAAAA0ABIAAAACAAMAAAA0ABMAAAADAAQAAAA0ABQAAAADAAQAAAA0ABUAAAADAAQAAAA0ABYAAAACAAQAAAA0ABcAAAADAAMAAAA0ABgAAAACAAMAAAA0ABkAAAACAAMAAAA0ABoAAAACAAQAAAA0ABsAAAACAAMAAAA0ABwAAAACAAIAAAA0AB0AAAACAAIAAAA1AP//AAADAAAAAAA1AAAAAAADAAMAAAA1AAEAAAADAAMAAAA1AAIAAAADAAQAAAA1AAMAAAADAAQAAAA1AAQAAAADAAMAAAA1AAUAAAADAAMAAAA1AAYAAAADAAMAAAA1AAcAAAACAAQAAAA1AAgAAAADAAQAAAA1AAkAAAACAAMAAAA1AAoAAAADAAQAAAA1AAsAAAACAAMAAAA1AAwAAAADAAMAAAA1AA0AAAACAAQAAAA1AA4AAAADAAQAAAA1AA8AAAADAAQAAAA1ABAAAAACAAQAAAA1ABEAAAACAAMAAAA1ABIAAAACAAQAAAA1ABMAAAADAAQAAAA1ABQAAAADAAQAAAA1ABUAAAACAAMAAAA1ABYAAAADAAMAAAA1ABcAAAACAAMAAAA1ABgAAAACAAQAAAA1ABkAAAACAAMAAAA1ABoAAAACAAQAAAA1ABsAAAACAAMAAAA1ABwAAAACAAIAAAA1AB0AAAACAAIAAAA2AP//AAADAAAAAAA2AAAAAAACAAQAAAA2AAEAAAACAAQAAAA2AAIAAAADAAQAAAA2AAMAAAADAAQAAAA2AAQAAAADAAQAAAA2AAUAAAACAAQAAAA2AAYAAAADAAMAAAA2AAcAAAACAAQAAAA2AAgAAAADAAQAAAA2AAkAAAACAAQAAAA2AAoAAAADAAQAAAA2AAsAAAACAAMAAAA2AAwAAAADAAMAAAA2AA0AAAACAAMAAAA2AA4AAAACAAQAAAA2AA8AAAADAAQAAAA2ABAAAAADAAMAAAA2ABEAAAADAAQAAAA2ABIAAAACAAMAAAA2ABMAAAADAAQAAAA2ABQAAAACAAQAAAA2ABUAAAACAAQAAAA2ABYAAAADAAMAAAA2ABcAAAACAAQAAAA2ABgAAAADAAQAAAA2ABkAAAACAAMAAAA2ABoAAAADAAMAAAA2ABsAAAACAAMAAAA2ABwAAAACAAIAAAA2AB0AAAACAAIAAAA3AP//AAADAAAAAAA3AAAAAAACAAMAAAA3AAEAAAADAAMAAAA3AAIAAAACAAMAAAA3AAMAAAACAAQAAAA3AAQAAAADAAMAAAA3AAUAAAADAAQAAAA3AAYAAAACAAQAAAA3AAcAAAACAAMAAAA3AAgAAAADAAMAAAA3AAkAAAACAAQAAAA3AAoAAAADAAQAAAA3AAsAAAADAAQAAAA3AAwAAAADAAMAAAA3AA0AAAADAAQAAAA3AA4AAAADAAQAAAA3AA8AAAACAAQAAAA3ABAAAAACAAQAAAA3ABEAAAACAAQAAAA3ABIAAAADAAQAAAA3ABMAAAACAAMAAAA3ABQAAAACAAQAAAA3ABUAAAADAAMAAAA3ABYAAAACAAMAAAA3ABcAAAADAAMAAAA3ABgAAAADAAQAAAA3ABkAAAACAAMAAAA3ABoAAAACAAQAAAA3ABwAAAACAAIAAAA3AB0AAAACAAIAAAA4AP//AAADAAAAAAA4AAAAAAABAAMAAAA4AAEAAAABAAQAAAA4AAIAAAAAAAQAAAA4AAMAAAABAAQAAAA4AAQAAAAAAAQAAAA4AAUAAAABAAQAAAA4AAYAAAABAAMAAAA4AAcAAAAAAAMAAAA4AAgAAAAAAAMAAAA4AAkAAAAAAAMAAAA4AAoAAAAAAAQAAAA4AAsAAAAAAAMAAAA4AAwAAAAAAAQAAAA4AA0AAAAAAAMAAAA4AA4AAAAAAAMAAAA4AA8AAAAAAAMAAAA4ABAAAAABAAMAAAA4ABEAAAAAAAMAAAA4ABIAAAAAAAMAAAA4ABMAAAAAAAMAAAA4ABQAAAABAAMAAAA4ABUAAAABAAMAAAA4ABYAAAABAAMAAAA4ABcAAAABAAQAAAA4ABgAAAAAAAMAAAA4ABkAAAABAAMAAAA4ABsAAAABAAMAAAA4ABwAAAACAAIAAAA4AB0AAAACAAIAAAA5AP//AAADAAAAAAA5AAAAAAAAAAQAAAA5AAEAAAAAAAMAAAA5AAIAAAABAAQAAAA5AAMAAAABAAMAAAA5AAQAAAABAAQAAAA5AAUAAAABAAMAAAA5AAYAAAAAAAQAAAA5AAcAAAAAAAMAAAA5AAgAAAABAAMAAAA5AAkAAAAAAAMAAAA5AAoAAAAAAAQAAAA5AAsAAAABAAQAAAA5AAwAAAAAAAQAAAA5AA0AAAABAAQAAAA5AA4AAAABAAMAAAA5AA8AAAABAAQAAAA5ABAAAAAAAAMAAAA5ABEAAAAAAAMAAAA5ABIAAAAAAAQAAAA5ABMAAAAAAAMAAAA5ABQAAAAAAAMAAAA5ABUAAAAAAAQAAAA5ABYAAAABAAMAAAA5ABcAAAABAAMAAAA5ABgAAAAAAAQAAAA5ABoAAAABAAMAAAA5ABsAAAABAAMAAAA5ABwAAAACAAIAAAA5AB0AAAACAAIAAAA6AP//AAADAAAAAAA6AAAAAAABAAQAAAA6AAEAAAABAAQAAAA6AAIAAAABAAQAAAA6AAMAAAABAAQAAAA6AAQAAAABAAQAAAA6AAUAAAABAAMAAAA6AAYAAAAAAAMAAAA6AAcAAAABAAQAAAA6AAgAAAAAAAQAAAA6AAkAAAAAAAQAAAA6AAoAAAABAAQAAAA6AAsAAAAAAAMAAAA6AAwAAAABAAQAAAA6AA0AAAAAAAQAAAA6AA4AAAAAAAMAAAA6AA8AAAABAAMAAAA6ABAAAAAAAAQAAAA6ABEAAAABAAQAAAA6ABIAAAABAAMAAAA6ABMAAAABAAMAAAA6ABQAAAAAAAQAAAA6ABUAAAAAAAQAAAA6ABYAAAAAAAQAAAA6ABcAAAAAAAMAAAA6ABkAAAABAAQAAAA6ABoAAAABAAQAAAA6ABsAAAABAAMAAAA6ABwAAAAAAAIAAAA6AB0AAAAAAAIAAAA7AP//AAADAAAAAAA7AAAAAAAAAAQAAAA7AAEAAAAAAAMAAAA7AAIAAAAAAAQAAAA7AAMAAAABAAQAAAA7AAQAAAABAAMAAAA7AAUAAAABAAQAAAA7AAYAAAAAAAQAAAA7AAcAAAAAAAQAAAA7AAgAAAAAAAQAAAA7AAkAAAAAAAQAAAA7AAoAAAAAAAMAAAA7AAsAAAABAAQAAAA7AAwAAAAAAAMAAAA7AA0AAAABAAQAAAA7AA4AAAABAAMAAAA7AA8AAAAAAAMAAAA7ABAAAAABAAMAAAA7ABEAAAABAAMAAAA7ABIAAAAAAAQAAAA7ABMAAAABAAMAAAA7ABQAAAABAAQAAAA7ABUAAAABAAMAAAA7ABYAAAABAAMAAAA7ABgAAAABAAQAAAA7ABkAAAABAAMAAAA7ABoAAAAAAAMAAAA7ABsAAAABAAQAAAA7ABwAAAAAAAIAAAA7AB0AAAAAAAIAAAA8AP//AAADAAAAAAA8AAAAAAAAAAMAAAA8AAEAAAAAAAMAAAA8AAIAAAABAAMAAAA8AAMAAAABAAQAAAA8AAQAAAAAAAQAAAA8AAUAAAABAAQAAAA8AAYAAAAAAAQAAAA8AAcAAAAAAAMAAAA8AAgAAAAAAAMAAAA8AAkAAAABAAQAAAA8AAoAAAAAAAMAAAA8AAsAAAAAAAMAAAA8AAwAAAABAAMAAAA8AA0AAAABAAMAAAA8AA4AAAABAAMAAAA8AA8AAAAAAAQAAAA8ABAAAAAAAAQAAAA8ABEAAAAAAAQAAAA8ABIAAAAAAAQAAAA8ABMAAAABAAMAAAA8ABQAAAAAAAQAAAA8ABUAAAAAAAMAAAA8ABcAAAABAAMAAAA8ABgAAAABAAQAAAA8ABkAAAABAAQAAAA8ABoAAAABAAQAAAA8ABsAAAABAAQAAAA8ABwAAAAAAAIAAAA8AB0AAAAAAAIAAAA9AP//AAADAAAAAAA9AAAAAAAAAAQAAAA9AAEAAAAAAAMAAAA9AAIAAAABAAMAAAA9AAMAAAAAAAQAAAA9AAQAAAABAAQAAAA9AAUAAAABAAQAAAA9AAYAAAABAAQAAAA9AAcAAAAAAAMAAAA9AAgAAAAAAAQAAAA9AAkAAAABAAQAAAA9AAoAAAAAAAMAAAA9AAsAAAABAAMAAAA9AAwAAAAAAAQAAAA9AA0AAAAAAAQAAAA9AA4AAAABAAMAAAA9AA8AAAAAAAQAAAA9ABAAAAABAAMAAAA9ABEAAAAAAAMAAAA9ABIAAAABAAMAAAA9ABMAAAAAAAQAAAA9ABQAAAABAAQAAAA9ABYAAAAAAAQAAAA9ABcAAAAAAAMAAAA9ABgAAAAAAAMAAAA9ABkAAAABAAMAAAA9ABoAAAAAAAQAAAA9ABsAAAAAAAMAAAA9ABwAAAAAAAIAAAA9AB0AAAAAAAIAAAA+AP//AAADAAAAAAA+AAAAAAAAAAMAAAA+AAEAAAABAAMAAAA+AAIAAAAAAAQAAAA+AAMAAAABAAMAAAA+AAQAAAAAAAMAAAA+AAUAAAAAAAMAAAA+AAYAAAABAAMAAAA+AAcAAAABAAMAAAA+AAgAAAAAAAMAAAA+AAkAAAAAAAMAAAA+AAoAAAABAAMAAAA+AAsAAAABAAMAAAA+AAwAAAABAAQAAAA+AA0AAAABAAMAAAA+AA4AAAAAAAQAAAA+AA8AAAABAAMAAAA+ABAAAAABAAQAAAA+ABEAAAABAAMAAAA+ABIAAAABAAQAAAA+ABMAAAAAAAQAAAA+ABUAAAABAAQAAAA+ABYAAAABAAMAAAA+ABcAAAABAAMAAAA+ABgAAAAAAAMAAAA+ABkAAAABAAMAAAA+ABoAAAABAAQAAAA+ABsAAAAAAAMAAAA+ABwAAAAAAAIAAAA+AB0AAAAAAAIAAAA/AP//AAADAAAAAAA/AAAAAAAAAAMAAAA/AAEAAAABAAQAAAA/AAIAAAAAAAMAAAA/AAMAAAABAAQAAAA/AAQAAAABAAMAAAA/AAUAAAABAAQAAAA/AAYAAAABAAQAAAA/AAcAAAAAAAMAAAA/AAgAAAAAAAMAAAA/AAkAAAABAAMAAAA/AAoAAAAAAAMAAAA/AAsAAAABAAQAAAA/AAwAAAAAAAMAAAA/AA0AAAAAAAMAAAA/AA4AAAAAAAMAAAA/AA8AAAAAAAQAAAA/ABAAAAABAAMAAAA/ABEAAAABAAQAAAA/ABIAAAABAAQAAAA/ABQAAAABAAQAAAA/ABUAAAABAAMAAAA/ABYAAAABAAMAAAA/ABcAAAABAAQAAAA/ABgAAAABAAQAAAA/ABkAAAAAAAMAAAA/ABoAAAAAAAMAAAA/ABsAAAABAAMAAAA/ABwAAAAAAAIAAAA/AB0AAAAAAAIAAABAAP//AAADAAAAAABAAAAAAAABAAMAAABAAAEAAAAAAAQAAABAAAIAAAABAAQAAABAAAMAAAAAAAQAAABAAAQAAAAAAAQAAABAAAUAAAAAAAMAAABAAAYAAAAAAAQAAABAAAcAAAAAAAQAAABAAAgAAAAAAAQAAABAAAkAAAAAAAMAAABAAAoAAAABAAQAAABAAAsAAAAAAAQAAABAAAwAAAABAAQAAABAAA0AAAABAAMAAABAAA4AAAAAAAQAAABAAA8AAAABAAMAAABAABAAAAAAAAMAAABAABEAAAAAAAQAAABAABMAAAAAAAMAAABAABQAAAAAAAQAAABAABUAAAAAAAMAAABAABYAAAAAAAMAAABAABcAAAAAAAMAAABAABgAAAABAAMAAABAABkAAAAAAAMAAABAABoAAAAAAAMAAABAABsAAAABAAQAAABAABwAAAAAAAIAAABAAB0AAAAAAAIAAABBAP//AAADAAAAAABBAAAAAAABAAQAAABBAAEAAAABAAQAAABBAAIAAAAAAAMAAABBAAMAAAAAAAQAAABBAAQAAAAAAAQAAABBAAUAAAAAAAMAAABBAAYAAAABAAQAAABBAAcAAAAAAAQAAABBAAgAAAABAAQAAABBAAkAAAAAAAQAAABBAAoAAAAAAAQAAABBAAsAAAAAAAQAAABBAAwAAAABAAQAAABBAA0AAAABAAMAAABBAA4AAAABAAMAAABBAA8AAAABAAMAAABBABAAAAAAAAQAAABBABIAAAAAAAQAAABBABMAAAAAAAQAAABBABQAAAABAAMAAABBABUAAAAAAAQAAABBABYAAAAAAAQAAABBABcAAAABAAMAAABBABgAAAABAAQAAABBABkAAAABAAMAAABBABoAAAAAAAMAAABBABsAAAAAAAQAAABBABwAAAAAAAIAAABBAB0AAAAAAAIAAABCAP//AAADAAAAAABCAAAAAAABAAQAAABCAAEAAAAAAAQAAABCAAIAAAAAAAQAAABCAAMAAAABAAQAAABCAAQAAAAAAAQAAABCAAUAAAAAAAMAAABCAAYAAAAAAAQAAABCAAcAAAABAAMAAABCAAgAAAABAAMAAABCAAkAAAABAAMAAABCAAoAAAABAAQAAABCAAsAAAAAAAQAAABCAAwAAAAAAAQAAABCAA0AAAABAAMAAABCAA4AAAAAAAQAAABCAA8AAAAAAAQAAABCABEAAAABAAQAAABCABIAAAABAAMAAABCABMAAAABAAMAAABCABQAAAAAAAMAAABCABUAAAAAAAMAAABCABYAAAABAAMAAABCABcAAAABAAQAAABCABgAAAAAAAQAAABCABkAAAABAAQAAABCABoAAAAAAAMAAABCABsAAAABAAMAAABCABwAAAAAAAIAAABCAB0AAAAAAAIAAABDAP//AAADAAAAAABDAAAAAAABAAMAAABDAAEAAAAAAAQAAABDAAIAAAABAAMAAABDAAMAAAAAAAMAAABDAAQAAAABAAMAAABDAAUAAAABAAMAAABDAAYAAAAAAAQAAABDAAcAAAAAAAMAAABDAAgAAAAAAAQAAABDAAkAAAABAAMAAABDAAoAAAABAAMAAABDAAsAAAABAAQAAABDAAwAAAABAAMAAABDAA0AAAABAAMAAABDAA4AAAAAAAMAAABDABAAAAABAAQAAABDABEAAAABAAMAAABDABIAAAAAAAMAAABDABMAAAAAAAQAAABDABQAAAABAAMAAABDABUAAAABAAQAAABDABYAAAABAAQAAABDABcAAAABAAMAAABDABgAAAAAAAQAAABDABkAAAABAAMAAABDABoAAAAAAAMAAABDABsAAAABAAQAAABDABwAAAAAAAIAAABDAB0AAAAAAAIAAABEAP//AAADAAAAAABEAAAAAAAAAAQAAABEAAEAAAAAAAMAAABEAAIAAAAAAAMAAABEAAMAAAABAAQAAABEAAQAAAAAAAMAAABEAAUAAAAAAAMAAABEAAYAAAABAAQAAABEAAcAAAABAAMAAABEAAgAAAABAAMAAABEAAkAAAAAAAMAAABEAAoAAAAAAAQAAABEAAsAAAABAAQAAABEAAwAAAAAAAQAAABEAA0AAAAAAAQAAABEAA8AAAABAAMAAABEABAAAAAAAAQAAABEABEAAAABAAMAAABEABIAAAAAAAQAAABEABMAAAABAAQAAABEABQAAAAAAAQAAABEABUAAAABAAMAAABEABYAAAABAAMAAABEABcAAAAAAAMAAABEABgAAAABAAQAAABEABkAAAABAAQAAABEABoAAAABAAQAAABEABsAAAABAAQAAABEABwAAAAAAAIAAABEAB0AAAAAAAIAAABFAP//AAADAAAAAABFAAAAAAABAAMAAABFAAEAAAAAAAQAAABFAAIAAAABAAMAAABFAAMAAAABAAQAAABFAAQAAAAAAAQAAABFAAUAAAABAAQAAABFAAYAAAABAAMAAABFAAcAAAABAAQAAABFAAgAAAAAAAQAAABFAAkAAAAAAAQAAABFAAoAAAABAAQAAABFAAsAAAAAAAMAAABFAAwAAAABAAMAAABFAA4AAAAAAAQAAABFAA8AAAABAAQAAABFABAAAAAAAAQAAABFABEAAAABAAQAAABFABIAAAAAAAQAAABFABMAAAAAAAMAAABFABQAAAABAAMAAABFABUAAAAAAAQAAABFABYAAAABAAMAAABFABcAAAABAAMAAABFABgAAAABAAMAAABFABkAAAABAAMAAABFABoAAAABAAQAAABFABsAAAAAAAQAAABFABwAAAAAAAIAAABFAB0AAAAAAAIAAABGAP//AAADAAAAAABGAAAAAAAAAAMAAABGAAEAAAABAAQAAABGAAIAAAABAAMAAABGAAMAAAAAAAMAAABGAAQAAAABAAQAAABGAAUAAAAAAAMAAABGAAYAAAAAAAQAAABGAAcAAAAAAAMAAABGAAgAAAABAAQAAABGAAkAAAAAAAMAAABGAAoAAAAAAAQAAABGAAsAAAAAAAQAAABGAA0AAAABAAMAAABGAA4AAAAAAAMAAABGAA8AAAAAAAQAAABGABAAAAABAAMAAABGABEAAAAAAAMAAABGABIAAAAAAAMAAABGABMAAAABAAMAAABGABQAAAABAAMAAABGABUAAAABAAMAAABGABYAAAABAAQAAABGABcAAAAAAAQAAABGABgAAAABAAMAAABGABkAAAABAAQAAABGABoAAAAAAAQAAABGABsAAAAAAAQAAABGABwAAAAAAAIAAABGAB0AAAAAAAIAAABHAP//AAADAAAAAABHAAAAAAAAAAQAAABHAAEAAAAAAAMAAABHAAIAAAAAAAQAAABHAAMAAAABAAQAAABHAAQAAAAAAAQAAABHAAUAAAABAAMAAABHAAYAAAAAAAQAAABHAAcAAAABAAQAAABHAAgAAAABAAMAAABHAAkAAAAAAAQAAABHAAoAAAABAAMAAABHAAsAAAABAAQAAABHAAwAAAAAAAMAAABHAA0AAAABAAMAAABHAA4AAAAAAAMAAABHAA8AAAABAAQAAABHABAAAAAAAAQAAABHABEAAAAAAAMAAABHABIAAAABAAMAAABHABMAAAAAAAMAAABHABQAAAABAAQAAABHABUAAAABAAMAAABHABYAAAAAAAMAAABHABcAAAAAAAMAAABHABgAAAABAAQAAABHABkAAAABAAQAAABHABoAAAAAAAQAAABHABsAAAABAAQAAABHABwAAAAAAAIAAABHAB0AAAAAAAIAAABIAP//AAADAAAAAABIAAAAAAABAAMAAABIAAEAAAAAAAMAAABIAAIAAAABAAQAAABIAAMAAAAAAAMAAABIAAQAAAAAAAMAAABIAAUAAAAAAAMAAABIAAYAAAAAAAQAAABIAAcAAAABAAQAAABIAAgAAAAAAAMAAABIAAkAAAAAAAQAAABIAAoAAAAAAAQAAABIAAsAAAABAAMAAABIAAwAAAABAAQAAABIAA0AAAAAAAQAAABIAA4AAAAAAAQAAABIAA8AAAAAAAMAAABIABAAAAABAAMAAABIABEAAAABAAQAAABIABIAAAAAAAQAAABIABMAAAABAAMAAABIABQAAAAAAAQAAABIABUAAAABAAMAAABIABYAAAABAAMAAABIABcAAAABAAQAAABIABgAAAAAAAQAAABIABkAAAABAAMAAABIABoAAAAAAAQAAABIABsAAAAAAAQAAABIABwAAAAAAAIAAABIAB0AAAAAAAIAAABJAP//AAADAAAAAABJAAAAAAAAAAQAAABJAAEAAAAAAAQAAABJAAIAAAAAAAMAAABJAAMAAAAAAAMAAABJAAQAAAAAAAQAAABJAAUAAAABAAMAAABJAAYAAAABAAMAAABJAAcAAAAAAAQAAABJAAgAAAAAAAMAAABJAAkAAAAAAAQAAABJAAoAAAABAAMAAABJAAsAAAABAAMAAABJAAwAAAAAAAQAAABJAA0AAAAAAAMAAABJAA4AAAAAAAMAAABJAA8AAAAAAAMAAABJABAAAAABAAMAAABJABEAAAABAAQAAABJABIAAAABAAMAAABJABMAAAAAAAQAAABJABQAAAAAAAQAAABJABUAAAAAAAMAAABJABYAAAABAAQAAABJABcAAAAAAAQAAABJABgAAAAAAAMAAABJABkAAAAAAAQAAABJABoAAAAAAAQAAABJABsAAAABAAMAAABJABwAAAAAAAIAAABJAB0AAAAAAAIAAABKAP//AAADAAAAAABKAAAAAAABAAMAAABKAAEAAAABAAMAAABKAAIAAAAAAAQAAABKAAMAAAABAAMAAABKAAQAAAABAAMAAABKAAUAAAABAAMAAABKAAYAAAABAAMAAABKAAcAAAAAAAQAAABKAAgAAAAAAAQAAABKAAkAAAAAAAMAAABKAAoAAAAAAAMAAABKAAsAAAAAAAQAAABKAAwAAAAAAAQAAABKAA0AAAABAAMAAABKAA4AAAAAAAQAAABKAA8AAAAAAAQAAABKABAAAAABAAQAAABKABEAAAAAAAMAAABKABIAAAAAAAMAAABKABMAAAAAAAQAAABKABQAAAABAAQAAABKABUAAAAAAAMAAABKABYAAAAAAAQAAABKABcAAAAAAAQAAABKABgAAAAAAAMAAABKABkAAAAAAAMAAABKABoAAAABAAQAAABKABsAAAAAAAMAAABKABwAAAAAAAIAAABKAB0AAAAAAAIAAABLAP//AAADAAAAAABLAAAAAAAAAAQAAABLAAEAAAAAAAQAAABLAAIAAAAAAAMAAABLAAMAAAABAAQAAABLAAQAAAAAAAMAAABLAAUAAAABAAQAAABLAAYAAAAAAAQAAABLAAcAAAABAAMAAABLAAgAAAAAAAQAAABLAAkAAAABAAMAAABLAAoAAAABAAMAAABLAAsAAAAAAAMAAABLAAwAAAABAAQAAABLAA0AAAAAAAMAAABLAA4AAAABAAMAAABLAA8AAAAAAAMAAABLABAAAAABAAMAAABLABEAAAABAAMAAABLABIAAAABAAQAAABLABMAAAAAAAMAAABLABQAAAAAAAMAAABLABUAAAABAAQAAABLABYAAAABAAQAAABLABcAAAAAAAQAAABLABgAAAABAAMAAABLABkAAAAAAAQAAABLABoAAAABAAQAAABLABsAAAABAAMAAABLABwAAAAAAAIAAABLAB0AAAAAAAIAAABMAP//AAADAAAAAABMAAAAAAABAAMAAABMAAEAAAABAAQAAABMAAIAAAABAAQAAABMAAMAAAAAAAQAAABMAAQAAAABAAMAAABMAAUAAAABAAMAAABMAAYAAAABAAMAAABMAAcAAAABAAQAAABMAAgAAAAAAAQAAABMAAkAAAAAAAQAAABMAAoAAAABAAQAAABMAAsAAAAAAAQAAABMAAwAAAAAAAMAAABMAA0AAAAAAAMAAABMAA4AAAAAAAQAAABMAA8AAAAAAAQAAABMABAAAAABAAMAAABMABEAAAABAAQAAABMABIAAAAAAAMAAABMABMAAAABAAQAAABMABQAAAAAAAQAAABMABUAAAABAAQAAABMABYAAAABAAQAAABMABcAAAABAAQAAABMABgAAAABAAQAAABMABkAAAAAAAQAAABMABoAAAABAAMAAABMABsAAAAAAAQAAABMABwAAAAAAAIAAABMAB0AAAAAAAIAAABNAP//AAADAAAAAABNAAAAAAABAAQAAABNAAEAAAABAAMAAABNAAIAAAAAAAMAAABNAAMAAAAAAAQAAABNAAQAAAABAAMAAABNAAUAAAAAAAQAAABNAAYAAAABAAMAAABNAAcAAAAAAAMAAABNAAgAAAAAAAMAAABNAAkAAAABAAMAAABNAAoAAAAAAAMAAABNAAsAAAABAAQAAABNAAwAAAAAAAQAAABNAA0AAAAAAAMAAABNAA4AAAAAAAMAAABNAA8AAAAAAAQAAABNABAAAAAAAAMAAABNABEAAAAAAAMAAABNABIAAAABAAQAAABNABMAAAABAAMAAABNABQAAAABAAMAAABNABUAAAAAAAMAAABNABYAAAAAAAQAAABNABcAAAABAAQAAABNABgAAAABAAQAAABNABkAAAAAAAQAAABNABoAAAAAAAMAAABNABsAAAABAAMAAABNABwAAAAAAAIAAABNAB0AAAAAAAIAAABOAP//AAADAAAAAABOAAAAAAAAAAQAAABOAAEAAAABAAQAAABOAAIAAAABAAMAAABOAAMAAAAAAAMAAABOAAQAAAABAAQAAABOAAUAAAABAAMAAABOAAYAAAABAAMAAABOAAcAAAABAAMAAABOAAgAAAABAAMAAABOAAkAAAAAAAQAAABOAAoAAAAAAAMAAABOAAsAAAABAAMAAABOAAwAAAAAAAQAAABOAA0AAAABAAQAAABOAA4AAAAAAAQAAABOAA8AAAABAAQAAABOABAAAAAAAAQAAABOABEAAAABAAMAAABOABIAAAABAAMAAABOABMAAAABAAQAAABOABQAAAAAAAQAAABOABUAAAAAAAMAAABOABYAAAABAAMAAABOABcAAAABAAQAAABOABgAAAAAAAMAAABOABkAAAAAAAQAAABOABoAAAAAAAMAAABOABsAAAABAAMAAABOABwAAAAAAAIAAABOAB0AAAAAAAIAAABPAP//AAADAAAAAABPAAAAAAAAAAMAAABPAAEAAAABAAMAAABPAAIAAAABAAMAAABPAAMAAAAAAAMAAABPAAQAAAAAAAMAAABPAAUAAAAAAAMAAABPAAYAAAABAAQAAABPAAcAAAAAAAQAAABPAAgAAAABAAQAAABPAAkAAAABAAMAAABPAAoAAAABAAQAAABPAAsAAAABAAMAAABPAAwAAAAAAAQAAABPAA0AAAABAAQAAABPAA4AAAABAAMAAABPAA8AAAABAAMAAABPABAAAAAAAAMAAABPABEAAAAAAAQAAABPABIAAAABAAQAAABPABMAAAAAAAQAAABPABQAAAABAAQAAABPABUAAAABAAMAAABPABYAAAABAAMAAABPABcAAAAAAAQAAABPABgAAAABAAMAAABPABkAAAAAAAMAAABPABoAAAABAAMAAABPABsAAAAAAAMAAABPABwAAAAAAAIAAABPAB0AAAAAAAIAAABQAP//AAADAAAAAABQAAAAAAABAAQAAABQAAEAAAABAAMAAABQAAIAAAABAAMAAABQAAMAAAAAAAQAAABQAAQAAAABAAMAAABQAAUAAAAAAAQAAABQAAYAAAABAAMAAABQAAcAAAABAAQAAABQAAgAAAABAAMAAABQAAkAAAAAAAMAAABQAAoAAAABAAMAAABQAAsAAAAAAAMAAABQAAwAAAAAAAQAAABQAA0AAAABAAMAAABQAA4AAAABAAMAAABQAA8AAAAAAAQAAABQABAAAAABAAQAAABQABEAAAAAAAQAAABQABIAAAAAAAQAAABQABMAAAAAAAQAAABQABQAAAAAAAQAAABQABUAAAABAAQAAABQABYAAAABAAQAAABQABcAAAAAAAMAAABQABgAAAAAAAQAAABQABkAAAAAAAQAAABQABoAAAAAAAMAAABQABsAAAABAAQAAABQABwAAAAAAAIAAABQAB0AAAAAAAIAAABRAP//AAADAAAAAABRAAAAAAABAAQAAABRAAEAAAAAAAQAAABRAAIAAAABAAQAAABRAAMAAAABAAMAAABRAAQAAAAAAAMAAABRAAUAAAAAAAMAAABRAAYAAAABAAQAAABRAAcAAAAAAAMAAABRAAgAAAABAAMAAABRAAkAAAABAAQAAABRAAoAAAABAAMAAABRAAsAAAABAAQAAABRAAwAAAABAAQAAABRAA0AAAAAAAMAAABRAA4AAAAAAAMAAABRAA8AAAABAAMAAABRABAAAAAAAAQAAABRABEAAAABAAMAAABRABIAAAABAAQAAABRABMAAAABAAMAAABRABQAAAABAAMAAABRABUAAAABAAMAAABRABYAAAABAAQAAABRABcAAAABAAQAAABRABgAAAABAAMAAABRABkAAAAAAAMAAABRABoAAAAAAAMAAABRABsAAAAAAAMAAABRABwAAAAAAAIAAABRAB0AAAAAAAIAAABSAP//AAADAAAAAABSAAAAAAAAAAQAAABSAAEAAAAAAAMAAABSAAIAAAAAAAMAAABSAAMAAAAAAAMAAABSAAQAAAABAAQAAABSAAUAAAAAAAQAAABSAAYAAAAAAAQAAABSAAcAAAABAAMAAABSAAgAAAABAAMAAABSAAkAAAABAAQAAABSAAoAAAAAAAQAAABSAAsAAAAAAAMAAABSAAwAAAABAAMAAABSAA0AAAAAAAQAAABSAA4AAAABAAQAAABSAA8AAAABAAMAAABSABAAAAAAAAQAAABSABEAAAABAAQAAABSABIAAAAAAAMAAABSABMAAAABAAMAAABSABQAAAABAAMAAABSABUAAAABAAMAAABSABYAAAABAAQAAABSABcAAAAAAAQAAABSABgAAAAAAAMAAABSABkAAAAAAAQAAABSABoAAAAAAAQAAABSABsAAAAAAAQAAABSABwAAAAAAAIAAABSAB0AAAAAAAIAAABTAP//AAADAAAAAABTAAAAAAAAAAQAAABTAAEAAAABAAQAAABTAAIAAAAAAAMAAABTAAMAAAAAAAMAAABTAAQAAAAAAAQAAABTAAUAAAABAAMAAABTAAYAAAABAAQAAABTAAcAAAAAAAQAAABTAAgAAAABAAQAAABTAAkAAAAAAAMAAABTAAoAAAABAAMAAABTAAsAAAAAAAQAAABTAAwAAAAAAAQAAABTAA0AAAAAAAQAAABTAA4AAAABAAMAAABTAA8AAAAAAAQAAABTABAAAAAAAAQAAABTABEAAAABAAQAAABTABIAAAABAAMAAABTABMAAAABAAMAAABTABQAAAAAAAQAAABTABUAAAABAAQAAABTABYAAAABAAQAAABTABcAAAABAAQAAABTABgAAAAAAAMAAABTABkAAAABAAMAAABTABoAAAAAAAQAAABTABsAAAAAAAMAAABTABwAAAAAAAIAAABTAB0AAAAAAAIAAABUAP//AAADAAAAAABUAAAAAAABAAMAAABUAAEAAAAAAAQAAABUAAIAAAAAAAMAAABUAAMAAAAAAAMAAABUAAQAAAAAAAMAAABUAAUAAAABAAQAAABUAAYAAAAAAAMAAABUAAcAAAAAAAQAAABUAAgAAAABAAMAAABUAAkAAAAAAAMAAABUAAoAAAABAAMAAABUAAsAAAAAAAMAAABUAAwAAAABAAQAAABUAA0AAAABAAMAAABUAA4AAAAAAAQAAABUAA8AAAABAAQAAABUABAAAAABAAQAAABUABEAAAAAAAMAAABUABIAAAABAAMAAABUABMAAAABAAMAAABUABQAAAABAAMAAABUABUAAAABAAQAAABUABYAAAAAAAMAAABUABcAAAABAAMAAABUABgAAAABAAQAAABUABkAAAAAAAMAAABUABoAAAAAAAMAAABUABsAAAAAAAMAAABUABwAAAAAAAIAAABUAB0AAAAAAAIAAABVAP//AAADAAAAAABVAAAAAAABAAMAAABVAAEAAAAAAAMAAABVAAIAAAABAAQAAABVAAMAAAAAAAMAAABVAAQAAAABAAMAAABVAAUAAAAAAAMAAABVAAYAAAABAAMAAABVAAcAAAABAAQAAABVAAgAAAABAAMAAABVAAkAAAABAAQAAABVAAoAAAAAAAMAAABVAAsAAAABAAQAAABVAAwAAAABAAMAAABVAA0AAAAAAAQAAABVAA4AAAABAAMAAABVAA8AAAAAAAMAAABVABAAAAABAAQAAABVABEAAAAAAAQAAABVABIAAAABAAMAAABVABMAAAABAAQAAABVABQAAAAAAAMAAABVABUAAAABAAQAAABVABYAAAAAAAQAAABVABcAAAAAAAQAAABVABgAAAAAAAQAAABVABkAAAABAAMAAABVABoAAAABAAQAAABVABsAAAABAAQAAABVABwAAAAAAAIAAABVAB0AAAAAAAIAAABWAP//AAADAAAAAABWAAAAAAAAAAQAAABWAAEAAAABAAQAAABWAAIAAAAAAAMAAABWAAMAAAAAAAQAAABWAAQAAAABAAMAAABWAAUAAAABAAQAAABWAAYAAAAAAAMAAABWAAcAAAAAAAQAAABWAAgAAAABAAQAAABWAAkAAAABAAMAAABWAAoAAAABAAQAAABWAAsAAAAAAAMAAABWAAwAAAABAAMAAABWAA0AAAABAAQAAABWAA4AAAAAAAQAAABWAA8AAAAAAAQAAABWABAAAAAAAAMAAABWABEAAAAAAAQAAABWABIAAAAAAAMAAABWABMAAAAAAAMAAABWABQAAAAAAAQAAABWABUAAAAAAAMAAABWABYAAAAAAAMAAABWABcAAAAAAAQAAABWABgAAAAAAAQAAABWABkAAAAAAAQAAABWABoAAAABAAQAAABWABsAAAABAAMAAABWABwAAAAAAAIAAABWAB0AAAAAAAIAAABXAP//AAADAAAAAABXAAAAAAABAAMAAABXAAEAAAAAAAMAAABXAAIAAAABAAMAAABXAAMAAAABAAQAAABXAAQAAAABAAMAAABXAAUAAAAAAAMAAABXAAYAAAABAAMAAABXAAcAAAAAAAMAAABXAAgAAAABAAMAAABXAAkAAAABAAMAAABXAAoAAAAAAAMAAABXAAsAAAABAAQAAABXAAwAAAABAAQAAABXAA0AAAAAAAMAAABXAA4AAAAAAAMAAABXAA8AAAAAAAMAAABXABAAAAABAAMAAABXABEAAAAAAAQAAABXABIAAAABAAQAAABXABMAAAABAAMAAABXABQAAAABAAMAAABXABUAAAABAAMAAABXABYAAAABAAQAAABXABcAAAAAAAMAAABXABgAAAABAAMAAABXABkAAAAAAAMAAABXABoAAAAAAAQAAABXABsAAAAAAAQAAABXABwAAAAAAAIAAABXAB0AAAAAAAIAAABYAP//AAADAAAAAABYAAAAAAAAAAQAAABYAAEAAAABAAQAAABYAAIAAAAAAAQAAABYAAMAAAAAAAQAAABYAAQAAAABAAQAAABYAAUAAAAAAAMAAABYAAYAAAAAAAMAAABYAAcAAAABAAMAAABYAAgAAAAAAAMAAABYAAkAAAAAAAQAAABYAAoAAAABAAQAAABYAAsAAAABAAQAAABYAAwAAAABAAMAAABYAA0AAAABAAQAAABYAA4AAAAAAAQAAABYAA8AAAAAAAMAAABYABAAAAABAAQAAABYABEAAAAAAAMAAABYABIAAAAAAAMAAABYABMAAAAAAAQAAABYABQAAAABAAMAAABYABUAAAAAAAQAAABYABYAAAABAAMAAABYABcAAAAAAAMAAABYABgAAAABAAMAAABYABkAAAABAAMAAABYABoAAAABAAQAAABYABsAAAABAAMAAABYABwAAAAAAAIAAABYAB0AAAAAAAIAAABZAP//AAADAAAAAABZAAAAAAAAAAQAAABZAAEAAAAAAAMAAABZAAIAAAABAAQAAABZAAMAAAAAAAMAAABZAAQAAAABAAQAAABZAAUAAAAAAAMAAABZAAYAAAAAAAQAAABZAAcAAAABAAQAAABZAAgAAAABAAQAAABZAAkAAAAAAAMAAABZAAoAAAAAAAQAAABZAAsAAAAAAAMAAABZAAwAAAABAAMAAABZAA0AAAABAAMAAABZAA4AAAAAAAQAAABZAA8AAAAAAAQAAABZABAAAAABAAMAAABZABEAAAAAAAMAAABZABIAAAAAAAMAAABZABMAAAABAAQAAABZABQAAAABAAQAAABZABUAAAAAAAMAAABZABYAAAABAAQAAABZABcAAAAAAAMAAABZABgAAAABAAMAAABZABkAAAAAAAMAAABZABoAAAAAAAMAAABZABsAAAAAAAQAAABZABwAAAAAAAIAAABZAB0AAAAAAAIAAABaAP//AAADAAAAAABaAAAAAAABAAMAAABaAAEAAAAAAAMAAABaAAIAAAAAAAMAAABaAAMAAAAAAAMAAABaAAQAAAABAAMAAABaAAUAAAABAAQAAABaAAYAAAAAAAMAAABaAAcAAAAAAAMAAABaAAgAAAABAAMAAABaAAkAAAABAAQAAABaAAoAAAAAAAMAAABaAAsAAAAAAAQAAABaAAwAAAABAAMAAABaAA0AAAABAAMAAABaAA4AAAABAAQAAABaAA8AAAAAAAMAAABaABAAAAAAAAQAAABaABEAAAAAAAMAAABaABIAAAABAAMAAABaABMAAAAAAAQAAABaABQAAAABAAMAAABaABUAAAABAAMAAABaABYAAAAAAAMAAABaABcAAAABAAQAAABaABgAAAAAAAQAAABaABkAAAAAAAQAAABaABoAAAABAAMAAABaABsAAAAAAAQAAABaABwAAAAAAAIAAABaAB0AAAAAAAIAAABbAP//AAADAAAAAABbAAAAAAABAAMAAABbAAEAAAABAAQAAABbAAIAAAAAAAQAAABbAAMAAAABAAQAAABbAAQAAAAAAAQAAABbAAUAAAAAAAQAAABbAAYAAAABAAQAAABbAAcAAAAAAAQAAABbAAgAAAABAAMAAABbAAkAAAABAAMAAABbAAoAAAABAAMAAABbAAsAAAABAAMAAABbAAwAAAAAAAMAAABbAA0AAAAAAAMAAABbAA4AAAABAAQAAABbAA8AAAABAAQAAABbABAAAAAAAAMAAABbABEAAAAAAAQAAABbABIAAAABAAQAAABbABMAAAABAAQAAABbABQAAAAAAAMAAABbABUAAAABAAQAAABbABYAAAAAAAMAAABbABcAAAABAAQAAABbABgAAAABAAMAAABbABkAAAABAAMAAABbABoAAAAAAAMAAABbABsAAAAAAAQAAABbABwAAAAAAAIAAABbAB0AAAAAAAIAAABcAP//AAADAAAAAABcAAAAAAAAAAMAAABcAAEAAAABAAQAAABcAAIAAAAAAAMAAABcAAMAAAABAAMAAABcAAQAAAABAAQAAABcAAUAAAAAAAMAAABcAAYAAAAAAAMAAABcAAcAAAAAAAMAAABcAAgAAAAAAAQAAABcAAkAAAABAAQAAABcAAoAAAAAAAMAAABcAAsAAAABAAMAAABcAAwAAAABAAMAAABcAA0AAAABAAMAAABcAA4AAAABAAMAAABcAA8AAAAAAAMAAABcABAAAAABAAMAAABcABEAAAABAAQAAABcABIAAAAAAAQAAABcABMAAAABAAMAAABcABQAAAAAAAQAAABcABUAAAABAAQAAABcABYAAAABAAMAAABcABcAAAABAAMAAABcABgAAAABAAQAAABcABkAAAAAAAQAAABcABoAAAABAAQAAABcABsAAAABAAQAAABcABwAAAAAAAIAAABcAB0AAAAAAAIAAABdAP//AAADAAAAAABdAAAAAAABAAQAAABdAAEAAAAAAAMAAABdAAIAAAAAAAMAAABdAAMAAAAAAAMAAABdAAQAAAABAAMAAABdAAUAAAABAAQAAABdAAYAAAAAAAQAAABdAAcAAAAAAAMAAABdAAgAAAAAAAMAAABdAAkAAAAAAAQAAABdAAoAAAAAAAQAAABdAAsAAAABAAMAAABdAAwAAAAAAAMAAABdAA0AAAAAAAMAAABdAA4AAAAAAAMAAABdAA8AAAAAAAMAAABdABAAAAAAAAMAAABdABEAAAAAAAQAAABdABIAAAAAAAMAAABdABMAAAAAAAQAAABdABQAAAAAAAQAAABdABUAAAABAAQAAABdABYAAAABAAMAAABdABcAAAABAAMAAABdABgAAAABAAQAAABdABkAAAABAAQAAABdABoAAAABAAMAAABdABsAAAAAAAMAAABdABwAAAAAAAIAAABdAB0AAAAAAAIAAABeAP//AAADAAAAAABeAAAAAAABAAMAAABeAAEAAAAAAAQAAABeAAIAAAAAAAQAAABeAAMAAAAAAAQAAABeAAQAAAAAAAMAAABeAAUAAAABAAMAAABeAAYAAAAAAAQAAABeAAcAAAAAAAQAAABeAAgAAAAAAAMAAABeAAkAAAAAAAQAAABeAAoAAAABAAMAAABeAAsAAAAAAAMAAABeAAwAAAABAAMAAABeAA0AAAABAAQAAABeAA4AAAABAAMAAABeAA8AAAAAAAQAAABeABAAAAAAAAMAAABeABEAAAABAAMAAABeABIAAAABAAMAAABeABMAAAAAAAQAAABeABQAAAABAAMAAABeABUAAAAAAAMAAABeABYAAAAAAAMAAABeABcAAAAAAAMAAABeABgAAAAAAAQAAABeABkAAAABAAQAAABeABoAAAABAAMAAABeABsAAAAAAAMAAABeABwAAAAAAAIAAABeAB0AAAAAAAIAAABfAP//AAADAAAAAABfAAAAAAAAAAMAAABfAAEAAAABAAMAAABfAAIAAAABAAMAAABfAAMAAAABAAMAAABfAAQAAAAAAAMAAABfAAUAAAABAAMAAABfAAYAAAABAAMAAABfAAcAAAAAAAQAAABfAAgAAAAAAAMAAABfAAkAAAAAAAMAAABfAAoAAAAAAAQAAABfAAsAAAAAAAQAAABfAAwAAAAAAAQAAABfAA0AAAAAAAMAAABfAA4AAAABAAQAAABfAA8AAAAAAAMAAABfABAAAAABAAQAAABfABEAAAAAAAQAAABfABIAAAABAAMAAABfABMAAAAAAAQAAABfABQAAAAAAAMAAABfABUAAAAAAAMAAABfABYAAAABAAQAAABfABcAAAAAAAQAAABfABgAAAAAAAMAAABfABkAAAABAAQAAABfABoAAAABAAQAAABfABsAAAAAAAQAAABfABwAAAAAAAIAAABfAB0AAAAAAAIAAABgAP//AAADAAAAAABgAAAAAAABAAMAAABgAAEAAAABAAMAAABgAAIAAAABAAQAAABgAAMAAAAAAAMAAABgAAQAAAAAAAMAAABgAAUAAAAAAAQAAABgAAYAAAAAAAMAAABgAAcAAAAAAAMAAABgAAgAAAAAAAQAAABgAAkAAAAAAAMAAABgAAoAAAAAAAQAAABgAAsAAAAAAAQAAABgAAwAAAAAAAMAAABgAA0AAAAAAAMAAABgAA4AAAAAAAQAAABgAA8AAAAAAAQAAABgABAAAAAAAAMAAABgABEAAAABAAMAAABgABIAAAABAAQAAABgABMAAAABAAQAAABgABQAAAABAAMAAABgABUAAAABAAQAAABgABYAAAABAAMAAABgABcAAAABAAMAAABgABgAAAABAAMAAABgABkAAAABAAMAAABgABoAAAAAAAMAAABgABsAAAABAAMAAABgABwAAAAAAAIAAABgAB0AAAAAAAIAAABhAP//AAADAAAAAABhAAAAAAABAAMAAABhAAEAAAAAAAMAAABhAAIAAAABAAQAAABhAAMAAAABAAMAAABhAAQAAAAAAAMAAABhAAUAAAABAAQAAABhAAYAAAABAAQAAABhAAcAAAAAAAMAAABhAAgAAAABAAQAAABhAAkAAAABAAQAAABhAAoAAAABAAMAAABhAAsAAAABAAQAAABhAAwAAAABAAMAAABhAA0AAAAAAAMAAABhAA4AAAABAAQAAABhAA8AAAAAAAQAAABhABAAAAAAAAQAAABhABEAAAABAAMAAABhABIAAAABAAMAAABhABMAAAABAAMAAABhABQAAAABAAMAAABhABUAAAABAAQAAABhABYAAAABAAMAAABhABcAAAABAAMAAABhABgAAAABAAQAAABhABkAAAABAAQAAABhABoAAAABAAMAAABhABsAAAABAAMAAABhABwAAAAAAAIAAABhAB0AAAAAAAIAAABiAP//AAADAAAAAABiAAAAAAABAAMAAABiAAEAAAAAAAQAAABiAAIAAAAAAAMAAABiAAMAAAABAAMAAABiAAQAAAABAAQAAABiAAUAAAABAAQAAABiAAYAAAAAAAMAAABiAAcAAAAAAAQAAABiAAgAAAAAAAMAAABiAAkAAAABAAQAAABiAAoAAAAAAAQAAABiAAsAAAABAAQAAABiAAwAAAAAAAQAAABiAA0AAAABAAQAAABiAA4AAAABAAMAAABiAA8AAAAAAAQAAABiABAAAAABAAQAAABiABEAAAAAAAMAAABiABIAAAAAAAMAAABiABMAAAABAAQAAABiABQAAAABAAQAAABiABUAAAABAAQAAABiABYAAAABAAMAAABiABcAAAAAAAMAAABiABgAAAAAAAMAAABiABkAAAABAAQAAABiABoAAAABAAMAAABiABsAAAAAAAQAAABiABwAAAAAAAIAAABiAB0AAAAAAAIAAABjAP//AAADAAAAAABjAAAAAAABAAQAAABjAAEAAAAAAAQAAABjAAIAAAABAAMAAABjAAMAAAABAAMAAABjAAQAAAABAAMAAABjAAUAAAAAAAMAAABjAAYAAAABAAQAAABjAAcAAAABAAQAAABjAAgAAAABAAMAAABjAAkAAAABAAQAAABjAAoAAAABAAMAAABjAAsAAAABAAQAAABjAAwAAAAAAAMAAABjAA0AAAAAAAMAAABjAA4AAAABAAQAAABjAA8AAAABAAMAAABjABAAAAABAAQAAABjABEAAAAAAAQAAABjABIAAAAAAAQAAABjABMAAAAAAAMAAABjABQAAAAAAAMAAABjABUAAAAAAAMAAABjABYAAAABAAQAAABjABcAAAABAAMAAABjABgAAAABAAQAAABjABkAAAAAAAQAAABjABoAAAAAAAMAAABjABsAAAABAAQAAABjABwAAAAAAAIAAABjAB0AAAAAAAIAAABkAP//AAADAAAAAABkAAAAAAAAAAQAAABkAAEAAAABAAQAAABkAAIAAAAAAAQAAABkAAMAAAAAAAQAAABkAAQAAAABAAMAAABkAAUAAAABAAMAAABkAAYAAAAAAAQAAABkAAcAAAABAAQAAABkAAgAAAABAAQAAABkAAkAAAABAAQAAABkAAoAAAABAAQAAABkAAsAAAABAAMAAABkAAwAAAABAAMAAABkAA0AAAAAAAQAAABkAA4AAAAAAAMAAABkAA8AAAAAAAMAAABkABAAAAABAAQAAABkABEAAAABAAQAAABkABIAAAAAAAQAAABkABMAAAAAAAMAAABkABQAAAAAAAMAAABkABUAAAABAAMAAABkABYAAAAAAAQAAABkABcAAAABAAQAAABkABgAAAAAAAQAAABkABkAAAABAAMAAABkABoAAAABAAMAAABkABsAAAAAAAMAAABkABwAAAAAAAIAAABkAB0AAAAAAAIAAABlAP//AAADAAIAAABlAAAAAAADAAIAAABlAAEAAAADAAIAAABlAAIAAAADAAIAAABlAAMAAAADAAIAAABlAAQAAAADAAIAAABlAAUAAAADAAIAAABlAAYAAAADAAIAAABlAAcAAAADAAIAAABlAAgAAAADAAIAAABlAAkAAAADAAIAAABlAAoAAAADAAIAAABlAAsAAAADAAIAAABlAAwAAAADAAIAAABlAA0AAAADAAIAAABlAA4AAAADAAIAAABlAA8AAAADAAIAAABlABAAAAADAAIAAABlABEAAAADAAIAAABlABIAAAADAAIAAABlABMAAAADAAIAAABlABQAAAADAAIAAABlABUAAAADAAIAAABlABYAAAADAAIAAABlABcAAAADAAIAAABlABgAAAADAAIAAABlABkAAAADAAIAAABlABoAAAADAAIAAABlABsAAAADAAIAAABlABwAAAADAAIAAABlAB0AAAADAAIAAABmAP//AAADAAIAAABmAAAAAAADAAIAAABmAAEAAAADAAIAAABmAAIAAAADAAIAAABmAAMAAAADAAIAAABmAAQAAAADAAIAAABmAAUAAAADAAIAAABmAAYAAAADAAIAAABmAAcAAAADAAIAAABmAAgAAAADAAIAAABmAAkAAAADAAIAAABmAAoAAAADAAIAAABmAAsAAAADAAIAAABmAAwAAAADAAIAAABmAA0AAAADAAIAAABmAA4AAAADAAIAAABmAA8AAAADAAIAAABmABAAAAADAAIAAABmABEAAAADAAIAAABmABIAAAADAAIAAABmABMAAAADAAIAAABmABQAAAADAAIAAABmABUAAAADAAIAAABmABYAAAADAAIAAABmABcAAAADAAIAAABmABgAAAADAAIAAABmABkAAAADAAIAAABmABoAAAADAAIAAABmABsAAAADAAIAAABmABwAAAADAAIAAABmAB0AAAADAAIAAABnAP//AAADAAIAAABnAAAAAAADAAIAAABnAAEAAAADAAIAAABnAAIAAAADAAIAAABnAAMAAAADAAIAAABnAAQAAAADAAIAAABnAAUAAAADAAIAAABnAAYAAAADAAIAAABnAAcAAAADAAIAAABnAAgAAAADAAIAAABnAAkAAAADAAIAAABnAAoAAAADAAIAAABnAAsAAAADAAIAAABnAAwAAAADAAIAAABnAA0AAAADAAIAAABnAA4AAAADAAIAAABnAA8AAAADAAIAAABnABAAAAADAAIAAABnABEAAAADAAIAAABnABIAAAADAAIAAABnABMAAAADAAIAAABnABQAAAADAAIAAABnABUAAAADAAIAAABnABYAAAADAAIAAABnABcAAAADAAIAAABnABgAAAADAAIAAABnABkAAAADAAIAAABnABoAAAADAAIAAABnABsAAAADAAIAAABnABwAAAADAAIAAABnAB0AAAADAAIAAABoAP//AAADAAIAAABoAAAAAAADAAIAAABoAAEAAAADAAIAAABoAAIAAAADAAIAAABoAAMAAAADAAIAAABoAAQAAAADAAIAAABoAAUAAAADAAIAAABoAAYAAAADAAIAAABoAAcAAAADAAIAAABoAAgAAAADAAIAAABoAAkAAAADAAIAAABoAAoAAAADAAIAAABoAAsAAAADAAIAAABoAAwAAAADAAIAAABoAA0AAAADAAIAAABoAA4AAAADAAIAAABoAA8AAAADAAIAAABoABAAAAADAAIAAABoABEAAAADAAIAAABoABIAAAADAAIAAABoABMAAAADAAIAAABoABQAAAADAAIAAABoABUAAAADAAIAAABoABYAAAADAAIAAABoABcAAAADAAIAAABoABgAAAADAAIAAABoABkAAAADAAIAAABoABoAAAADAAIAAABoABsAAAADAAIAAABoABwAAAADAAIAAABoAB0AAAADAAIAAABpAP//AAADAAIAAABpAAAAAAADAAIAAABpAAEAAAADAAIAAABpAAIAAAADAAIAAABpAAMAAAADAAIAAABpAAQAAAADAAIAAABpAAUAAAADAAIAAABpAAYAAAADAAIAAABpAAcAAAADAAIAAABpAAgAAAADAAIAAABpAAkAAAADAAIAAABpAAoAAAADAAIAAABpAAsAAAADAAIAAABpAAwAAAADAAIAAABpAA0AAAADAAIAAABpAA4AAAADAAIAAABpAA8AAAADAAIAAABpABAAAAADAAIAAABpABEAAAADAAIAAABpABIAAAADAAIAAABpABMAAAADAAIAAABpABQAAAADAAIAAABpABUAAAADAAIAAABpABYAAAADAAIAAABpABcAAAADAAIAAABpABgAAAADAAIAAABpABkAAAADAAIAAABpABoAAAADAAIAAABpABsAAAADAAIAAABpABwAAAADAAIAAABpAB0AAAADAAIAAABqAP//AAADAAIAAABqAAAAAAADAAIAAABqAAEAAAADAAIAAABqAAIAAAADAAIAAABqAAMAAAADAAIAAABqAAQAAAADAAIAAABqAAUAAAADAAIAAABqAAYAAAADAAIAAABqAAcAAAADAAIAAABqAAgAAAADAAIAAABqAAkAAAADAAIAAABqAAoAAAADAAIAAABqAAsAAAADAAIAAABqAAwAAAADAAIAAABqAA0AAAADAAIAAABqAA4AAAADAAIAAABqAA8AAAADAAIAAABqABAAAAADAAIAAABqABEAAAADAAIAAABqABIAAAADAAIAAABqABMAAAADAAIAAABqABQAAAADAAIAAABqABUAAAADAAIAAABqABYAAAADAAIAAABqABcAAAADAAIAAABqABgAAAADAAIAAABqABkAAAADAAIAAABqABoAAAADAAIAAABqABsAAAADAAIAAABqABwAAAADAAIAAABqAB0AAAADAAIAAABrAP//AAADAAIAAABrAAAAAAADAAIAAABrAAEAAAADAAIAAABrAAIAAAADAAIAAABrAAMAAAADAAIAAABrAAQAAAADAAIAAABrAAUAAAADAAIAAABrAAYAAAADAAIAAABrAAcAAAADAAIAAABrAAgAAAADAAIAAABrAAkAAAADAAIAAABrAAoAAAADAAIAAABrAAsAAAADAAIAAABrAAwAAAADAAIAAABrAA0AAAADAAIAAABrAA4AAAADAAIAAABrAA8AAAADAAIAAABrABAAAAADAAIAAABrABEAAAADAAIAAABrABIAAAADAAIAAABrABMAAAADAAIAAABrABQAAAADAAIAAABrABUAAAADAAIAAABrABYAAAADAAIAAABrABcAAAADAAIAAABrABgAAAADAAIAAABrABkAAAADAAIAAABrABoAAAADAAIAAABrABsAAAADAAIAAABrABwAAAADAAIAAABrAB0AAAADAAIAAAAAAB4AAAAAAAIAAAAAAB8AAAAAAAIAAAAAACAAAAAAAAIAAAAAACEAAAAAAAIAAAAAACIAAAAAAAIAAAAAACMAAAAAAAIAAAABAB4AAAAAAAIAAAABAB8AAAAAAAIAAAABACAAAAAAAAIAAAABACEAAAAAAAIAAAABACIAAAAAAAIAAAABACMAAAAAAAIAAAACAB4AAAAAAAIAAAACAB8AAAAAAAIAAAACACAAAAAAAAIAAAACACEAAAAAAAIAAAACACIAAAAAAAIAAAACACMAAAAAAAIAAAADAB4AAAAAAAIAAAADAB8AAAAAAAIAAAADACAAAAAAAAIAAAADACEAAAAAAAIAAAADACIAAAAAAAIAAAADACMAAAAAAAIAAAAEAB4AAAAAAAIAAAAEAB8AAAAAAAIAAAAEACAAAAAAAAIAAAAEACEAAAAAAAIAAAAEACIAAAAAAAIAAAAEACMAAAAAAAIAAAAFAB4AAAAAAAIAAAAFAB8AAAAAAAIAAAAFACAAAAAAAAIAAAAFACEAAAAAAAIAAAAFACIAAAAAAAIAAAAFACMAAAAAAAIAAAAGAB4AAAAAAAIAAAAGAB8AAAAAAAIAAAAGACAAAAAAAAIAAAAGACEAAAAAAAIAAAAGACIAAAAAAAIAAAAGACMAAAAAAAIAAAAHAB4AAAAAAAIAAAAHAB8AAAAAAAIAAAAHACAAAAAAAAIAAAAHACEAAAAAAAIAAAAHACIAAAAAAAIAAAAHACMAAAAAAAIAAAAIAB4AAAAAAAIAAAAIAB8AAAAAAAIAAAAIACAAAAAAAAIAAAAIACEAAAAAAAIAAAAIACIAAAAAAAIAAAAIACMAAAAAAAIAAAAJAB4AAAAAAAIAAAAJAB8AAAAAAAIAAAAJACAAAAAAAAIAAAAJACEAAAAAAAIAAAAJACIAAAAAAAIAAAAJACMAAAAAAAIAAAAKAB4AAAAAAAIAAAAKAB8AAAAAAAIAAAAKACAAAAAAAAIAAAAKACEAAAAAAAIAAAAKACIAAAAAAAIAAAAKACMAAAAAAAIAAAALAB4AAAAAAAIAAAALAB8AAAAAAAIAAAALACAAAAAAAAIAAAALACEAAAAAAAIAAAALACIAAAAAAAIAAAALACMAAAAAAAIAAAAMAB4AAAAAAAIAAAAMAB8AAAAAAAIAAAAMACAAAAAAAAIAAAAMACEAAAAAAAIAAAAMACIAAAAAAAIAAAAMACMAAAAAAAIAAAANAB4AAAAAAAIAAAANAB8AAAAAAAIAAAANACAAAAAAAAIAAAANACEAAAAAAAIAAAANACIAAAAAAAIAAAANACMAAAAAAAIAAAAOAB4AAAAAAAIAAAAOAB8AAAAAAAIAAAAOACAAAAAAAAIAAAAOACEAAAAAAAIAAAAOACIAAAAAAAIAAAAOACMAAAAAAAIAAAAPAB4AAAAAAAIAAAAPAB8AAAAAAAIAAAAPACAAAAAAAAIAAAAPACEAAAAAAAIAAAAPACIAAAAAAAIAAAAPACMAAAAAAAIAAAAQAB4AAAAAAAIAAAAQAB8AAAAAAAIAAAAQACAAAAAAAAIAAAAQACEAAAAAAAIAAAAQACIAAAAAAAIAAAAQACMAAAAAAAIAAAARAB4AAAAAAAIAAAARAB8AAAAAAAIAAAARACAAAAAAAAIAAAARACEAAAAAAAIAAAARACIAAAAAAAIAAAARACMAAAAAAAIAAAASAB4AAAAAAAIAAAASAB8AAAAAAAIAAAASACAAAAAAAAIAAAASACEAAAAAAAIAAAASACIAAAAAAAIAAAASACMAAAAAAAIAAAATAB4AAAAAAAIAAAATAB8AAAAAAAIAAAATACAAAAAAAAIAAAATACEAAAAAAAIAAAATACIAAAAAAAIAAAATACMAAAAAAAIAAAAUAB4AAAAAAAIAAAAUAB8AAAAAAAIAAAAUACAAAAAAAAIAAAAUACEAAAAAAAIAAAAUACIAAAAAAAIAAAAUACMAAAAAAAIAAAAVAB4AAAAAAAIAAAAVAB8AAAAAAAIAAAAVACAAAAAAAAIAAAAVACEAAAAAAAIAAAAVACIAAAAAAAIAAAAVACMAAAAAAAIAAAAWAB4AAAAAAAIAAAAWAB8AAAAAAAIAAAAWACAAAAAAAAIAAAAWACEAAAAAAAIAAAAWACIAAAAAAAIAAAAWACMAAAAAAAIAAAAXAB4AAAAAAAIAAAAXAB8AAAAAAAIAAAAXACAAAAAAAAIAAAAXACEAAAAAAAIAAAAXACIAAAAAAAIAAAAXACMAAAAAAAIAAAAYAB4AAAAAAAIAAAAYAB8AAAAAAAIAAAAYACAAAAAAAAIAAAAYACEAAAAAAAIAAAAYACIAAAAAAAIAAAAYACMAAAAAAAIAAAAZAB4AAAAAAAIAAAAZAB8AAAAAAAIAAAAZACAAAAAAAAIAAAAZACEAAAAAAAIAAAAZACIAAAAAAAIAAAAZACMAAAAAAAIAAAAaAB4AAAAAAAIAAAAaAB8AAAAAAAIAAAAaACAAAAAAAAIAAAAaACEAAAAAAAIAAAAaACIAAAAAAAIAAAAaACMAAAAAAAIAAAAbAB4AAAAAAAIAAAAbAB8AAAAAAAIAAAAbACAAAAAAAAIAAAAbACEAAAAAAAIAAAAbACIAAAAAAAIAAAAbACMAAAAAAAIAAAAcAB4AAAAAAAIAAAAcAB8AAAAAAAIAAAAcACAAAAAAAAIAAAAcACEAAAAAAAIAAAAcACIAAAAAAAIAAAAcACMAAAAAAAIAAAAdAB4AAAAAAAIAAAAdAB8AAAAAAAIAAAAdACAAAAAAAAIAAAAdACEAAAAAAAIAAAAdACIAAAAAAAIAAAAdACMAAAAAAAIAAAAeAB4AAAAAAAIAAAAeAB8AAAAAAAIAAAAeACAAAAAAAAIAAAAeACEAAAAAAAIAAAAeACIAAAAAAAIAAAAeACMAAAAAAAIAAAAfAB4AAAAAAAIAAAAfAB8AAAAAAAIAAAAfACAAAAAAAAIAAAAfACEAAAAAAAIAAAAfACIAAAAAAAIAAAAfACMAAAAAAAIAAAAgAB4AAAAAAAIAAAAgAB8AAAAAAAIAAAAgACAAAAAAAAIAAAAgACEAAAAAAAIAAAAgACIAAAAAAAIAAAAgACMAAAAAAAIAAAAhAB4AAAAAAAIAAAAhAB8AAAAAAAIAAAAhACAAAAAAAAIAAAAhACEAAAAAAAIAAAAhACIAAAAAAAIAAAAhACMAAAAAAAIAAAAiAB4AAAAAAAIAAAAiAB8AAAAAAAIAAAAiACAAAAAAAAIAAAAiACEAAAAAAAIAAAAiACIAAAAAAAIAAAAiACMAAAAAAAIAAAAjAB4AAAAAAAIAAAAjAB8AAAAAAAIAAAAjACAAAAAAAAIAAAAjACEAAAAAAAIAAAAjACIAAAAAAAIAAAAjACMAAAAAAAIAAAAkAB4AAAAAAAIAAAAkAB8AAAAAAAIAAAAkACAAAAAAAAIAAAAkACEAAAAAAAIAAAAkACIAAAAAAAIAAAAkACMAAAAAAAIAAAAlAB4AAAAAAAIAAAAlAB8AAAAAAAIAAAAlACAAAAAAAAIAAAAlACEAAAAAAAIAAAAlACIAAAAAAAIAAAAlACMAAAAAAAIAAAAmAB4AAAAAAAIAAAAmAB8AAAAAAAIAAAAmACAAAAAAAAIAAAAmACEAAAAAAAIAAAAmACIAAAAAAAIAAAAmACMAAAAAAAIAAAAnAB4AAAAAAAIAAAAnAB8AAAAAAAIAAAAnACAAAAAAAAIAAAAnACEAAAAAAAIAAAAnACIAAAAAAAIAAAAnACMAAAAAAAIAAAAoAB4AAAAAAAIAAAAoAB8AAAAAAAIAAAAoACAAAAAAAAIAAAAoACEAAAAAAAIAAAAoACIAAAAAAAIAAAAoACMAAAAAAAIAAAApAB4AAAAAAAIAAAApAB8AAAAAAAIAAAApACAAAAAAAAIAAAApACEAAAAAAAIAAAApACIAAAAAAAIAAAApACMAAAAAAAIAAAAqAB4AAAAAAAIAAAAqAB8AAAAAAAIAAAAqACAAAAAAAAIAAAAqACEAAAAAAAIAAAAqACIAAAAAAAIAAAAqACMAAAAAAAIAAAArAB4AAAAAAAIAAAArAB8AAAAAAAIAAAArACAAAAAAAAIAAAArACEAAAAAAAIAAAArACIAAAAAAAIAAAArACMAAAAAAAIAAAAsAB4AAAAAAAIAAAAsAB8AAAAAAAIAAAAsACAAAAAAAAIAAAAsACEAAAAAAAIAAAAsACIAAAAAAAIAAAAsACMAAAAAAAIAAAAtAB4AAAAAAAIAAAAtAB8AAAAAAAIAAAAtACAAAAAAAAIAAAAtACEAAAAAAAIAAAAtACIAAAAAAAIAAAAtACMAAAAAAAIAAAAuAB4AAAAAAAIAAAAuAB8AAAAAAAIAAAAuACAAAAAAAAIAAAAuACEAAAAAAAIAAAAuACIAAAAAAAIAAAAuACMAAAAAAAIAAAAvAB4AAAAAAAIAAAAvAB8AAAAAAAIAAAAvACAAAAAAAAIAAAAvACEAAAAAAAIAAAAvACIAAAAAAAIAAAAvACMAAAAAAAIAAAAwAB4AAAAAAAIAAAAwAB8AAAAAAAIAAAAwACAAAAAAAAIAAAAwACEAAAAAAAIAAAAwACIAAAAAAAIAAAAwACMAAAAAAAIAAAAxAB4AAAAAAAIAAAAxAB8AAAAAAAIAAAAxACAAAAAAAAIAAAAxACEAAAAAAAIAAAAxACIAAAAAAAIAAAAxACMAAAAAAAIAAAAyAB4AAAAAAAIAAAAyAB8AAAAAAAIAAAAyACAAAAAAAAIAAAAyACEAAAAAAAIAAAAyACIAAAAAAAIAAAAyACMAAAAAAAIAAAAzAB4AAAAAAAIAAAAzAB8AAAAAAAIAAAAzACAAAAAAAAIAAAAzACEAAAAAAAIAAAAzACIAAAAAAAIAAAAzACMAAAAAAAIAAAA0AB4AAAAAAAIAAAA0AB8AAAAAAAIAAAA0ACAAAAAAAAIAAAA0ACEAAAAAAAIAAAA0ACIAAAAAAAIAAAA0ACMAAAAAAAIAAAA1AB4AAAAAAAIAAAA1AB8AAAAAAAIAAAA1ACAAAAAAAAIAAAA1ACEAAAAAAAIAAAA1ACIAAAAAAAIAAAA1ACMAAAAAAAIAAAA2AB4AAAAAAAIAAAA2AB8AAAAAAAIAAAA2ACAAAAAAAAIAAAA2ACEAAAAAAAIAAAA2ACIAAAAAAAIAAAA2ACMAAAAAAAIAAAA3AB4AAAAAAAIAAAA3AB8AAAAAAAIAAAA3ACAAAAAAAAIAAAA3ACEAAAAAAAIAAAA3ACIAAAAAAAIAAAA3ACMAAAAAAAIAAAA4AB4AAAAAAAIAAAA4AB8AAAAAAAIAAAA4ACAAAAAAAAIAAAA4ACEAAAAAAAIAAAA4ACIAAAAAAAIAAAA4ACMAAAAAAAIAAAA5AB4AAAAAAAIAAAA5AB8AAAAAAAIAAAA5ACAAAAAAAAIAAAA5ACEAAAAAAAIAAAA5ACIAAAAAAAIAAAA5ACMAAAAAAAIAAAA6AB4AAAAAAAIAAAA6AB8AAAAAAAIAAAA6ACAAAAAAAAIAAAA6ACEAAAAAAAIAAAA6ACIAAAAAAAIAAAA6ACMAAAAAAAIAAAA7AB4AAAAAAAIAAAA7AB8AAAAAAAIAAAA7ACAAAAAAAAIAAAA7ACEAAAAAAAIAAAA7ACIAAAAAAAIAAAA7ACMAAAAAAAIAAAA8AB4AAAAAAAIAAAA8AB8AAAAAAAIAAAA8ACAAAAAAAAIAAAA8ACEAAAAAAAIAAAA8ACIAAAAAAAIAAAA8ACMAAAAAAAIAAAA9AB4AAAAAAAIAAAA9AB8AAAAAAAIAAAA9ACAAAAAAAAIAAAA9ACEAAAAAAAIAAAA9ACIAAAAAAAIAAAA9ACMAAAAAAAIAAAA+AB4AAAAAAAIAAAA+AB8AAAAAAAIAAAA+ACAAAAAAAAIAAAA+ACEAAAAAAAIAAAA+ACIAAAAAAAIAAAA+ACMAAAAAAAIAAAA/AB4AAAAAAAIAAAA/AB8AAAAAAAIAAAA/ACAAAAAAAAIAAAA/ACEAAAAAAAIAAAA/ACIAAAAAAAIAAAA/ACMAAAAAAAIAAABAAB4AAAAAAAIAAABAAB8AAAAAAAIAAABAACAAAAAAAAIAAABAACEAAAAAAAIAAABAACIAAAAAAAIAAABAACMAAAAAAAIAAABBAB4AAAAAAAIAAABBAB8AAAAAAAIAAABBACAAAAAAAAIAAABBACEAAAAAAAIAAABBACIAAAAAAAIAAABBACMAAAAAAAIAAABCAB4AAAAAAAIAAABCAB8AAAAAAAIAAABCACAAAAAAAAIAAABCACEAAAAAAAIAAABCACIAAAAAAAIAAABCACMAAAAAAAIAAABDAB4AAAAAAAIAAABDAB8AAAAAAAIAAABDACAAAAAAAAIAAABDACEAAAAAAAIAAABDACIAAAAAAAIAAABDACMAAAAAAAIAAABEAB4AAAAAAAIAAABEAB8AAAAAAAIAAABEACAAAAAAAAIAAABEACEAAAAAAAIAAABEACIAAAAAAAIAAABEACMAAAAAAAIAAABFAB4AAAAAAAIAAABFAB8AAAAAAAIAAABFACAAAAAAAAIAAABFACEAAAAAAAIAAABFACIAAAAAAAIAAABFACMAAAAAAAIAAABGAB4AAAAAAAIAAABGAB8AAAAAAAIAAABGACAAAAAAAAIAAABGACEAAAAAAAIAAABGACIAAAAAAAIAAABGACMAAAAAAAIAAABHAB4AAAAAAAIAAABHAB8AAAAAAAIAAABHACAAAAAAAAIAAABHACEAAAAAAAIAAABHACIAAAAAAAIAAABHACMAAAAAAAIAAABIAB4AAAAAAAIAAABIAB8AAAAAAAIAAABIACAAAAAAAAIAAABIACEAAAAAAAIAAABIACIAAAAAAAIAAABIACMAAAAAAAIAAABJAB4AAAAAAAIAAABJAB8AAAAAAAIAAABJACAAAAAAAAIAAABJACEAAAAAAAIAAABJACIAAAAAAAIAAABJACMAAAAAAAIAAABKAB4AAAAAAAIAAABKAB8AAAAAAAIAAABKACAAAAAAAAIAAABKACEAAAAAAAIAAABKACIAAAAAAAIAAABKACMAAAAAAAIAAABLAB4AAAAAAAIAAABLAB8AAAAAAAIAAABLACAAAAAAAAIAAABLACEAAAAAAAIAAABLACIAAAAAAAIAAABLACMAAAAAAAIAAABMAB4AAAAAAAIAAABMAB8AAAAAAAIAAABMACAAAAAAAAIAAABMACEAAAAAAAIAAABMACIAAAAAAAIAAABMACMAAAAAAAIAAABNAB4AAAAAAAIAAABNAB8AAAAAAAIAAABNACAAAAAAAAIAAABNACEAAAAAAAIAAABNACIAAAAAAAIAAABNACMAAAAAAAIAAABOAB4AAAAAAAIAAABOAB8AAAAAAAIAAABOACAAAAAAAAIAAABOACEAAAAAAAIAAABOACIAAAAAAAIAAABOACMAAAAAAAIAAABPAB4AAAAAAAIAAABPAB8AAAAAAAIAAABPACAAAAAAAAIAAABPACEAAAAAAAIAAABPACIAAAAAAAIAAABPACMAAAAAAAIAAABQAB4AAAAAAAIAAABQAB8AAAAAAAIAAABQACAAAAAAAAIAAABQACEAAAAAAAIAAABQACIAAAAAAAIAAABQACMAAAAAAAIAAABRAB4AAAAAAAIAAABRAB8AAAAAAAIAAABRACAAAAAAAAIAAABRACEAAAAAAAIAAABRACIAAAAAAAIAAABRACMAAAAAAAIAAABSAB4AAAAAAAIAAABSAB8AAAAAAAIAAABSACAAAAAAAAIAAABSACEAAAAAAAIAAABSACIAAAAAAAIAAABSACMAAAAAAAIAAABTAB4AAAAAAAIAAABTAB8AAAAAAAIAAABTACAAAAAAAAIAAABTACEAAAAAAAIAAABTACIAAAAAAAIAAABTACMAAAAAAAIAAABUAB4AAAAAAAIAAABUAB8AAAAAAAIAAABUACAAAAAAAAIAAABUACEAAAAAAAIAAABUACIAAAAAAAIAAABUACMAAAAAAAIAAABVAB4AAAAAAAIAAABVAB8AAAAAAAIAAABVACAAAAAAAAIAAABVACEAAAAAAAIAAABVACIAAAAAAAIAAABVACMAAAAAAAIAAABWAB4AAAAAAAIAAABWAB8AAAAAAAIAAABWACAAAAAAAAIAAABWACEAAAAAAAIAAABWACIAAAAAAAIAAABWACMAAAAAAAIAAABXAB4AAAAAAAIAAABXAB8AAAAAAAIAAABXACAAAAAAAAIAAABXACEAAAAAAAIAAABXACIAAAAAAAIAAABXACMAAAAAAAIAAABYAB4AAAAAAAIAAABYAB8AAAAAAAIAAABYACAAAAAAAAIAAABYACEAAAAAAAIAAABYACIAAAAAAAIAAABYACMAAAAAAAIAAABZAB4AAAAAAAIAAABZAB8AAAAAAAIAAABZACAAAAAAAAIAAABZACEAAAAAAAIAAABZACIAAAAAAAIAAABZACMAAAAAAAIAAABaAB4AAAAAAAIAAABaAB8AAAAAAAIAAABaACAAAAAAAAIAAABaACEAAAAAAAIAAABaACIAAAAAAAIAAABaACMAAAAAAAIAAABbAB4AAAAAAAIAAABbAB8AAAAAAAIAAABbACAAAAAAAAIAAABbACEAAAAAAAIAAABbACIAAAAAAAIAAABbACMAAAAAAAIAAABcAB4AAAAAAAIAAABcAB8AAAAAAAIAAABcACAAAAAAAAIAAABcACEAAAAAAAIAAABcACIAAAAAAAIAAABcACMAAAAAAAIAAABdAB4AAAAAAAIAAABdAB8AAAAAAAIAAABdACAAAAAAAAIAAABdACEAAAAAAAIAAABdACIAAAAAAAIAAABdACMAAAAAAAIAAABeAB4AAAAAAAIAAABeAB8AAAAAAAIAAABeACAAAAAAAAIAAABeACEAAAAAAAIAAABeACIAAAAAAAIAAABeACMAAAAAAAIAAABfAB4AAAAAAAIAAABfAB8AAAAAAAIAAABfACAAAAAAAAIAAABfACEAAAAAAAIAAABfACIAAAAAAAIAAABfACMAAAAAAAIAAABgAB4AAAAAAAIAAABgAB8AAAAAAAIAAABgACAAAAAAAAIAAABgACEAAAAAAAIAAABgACIAAAAAAAIAAABgACMAAAAAAAIAAABhAB4AAAAAAAIAAABhAB8AAAAAAAIAAABhACAAAAAAAAIAAABhACEAAAAAAAIAAABhACIAAAAAAAIAAABhACMAAAAAAAIAAABiAB4AAAAAAAIAAABiAB8AAAAAAAIAAABiACAAAAAAAAIAAABiACEAAAAAAAIAAABiACIAAAAAAAIAAABiACMAAAAAAAIAAABjAB4AAAAAAAIAAABjAB8AAAAAAAIAAABjACAAAAAAAAIAAABjACEAAAAAAAIAAABjACIAAAAAAAIAAABjACMAAAAAAAIAAABkAB4AAAAAAAIAAABkAB8AAAAAAAIAAABkACAAAAAAAAIAAABkACEAAAAAAAIAAABkACIAAAAAAAIAAABkACMAAAAAAAIAAABlAB4AAAADAAIAAABlAB8AAAAAAAIAAABlACAAAAAAAAIAAABlACEAAAAAAAIAAABlACIAAAAAAAIAAABlACMAAAAAAAIAAABmAB4AAAADAAIAAABmAB8AAAAAAAIAAABmACAAAAAAAAIAAABmACEAAAAAAAIAAABmACIAAAAAAAIAAABmACMAAAAAAAIAAABnAB4AAAADAAIAAABnAB8AAAAAAAIAAABnACAAAAAAAAIAAABnACEAAAAAAAIAAABnACIAAAAAAAIAAABnACMAAAAAAAIAAABoAB4AAAADAAIAAABoAB8AAAAAAAIAAABoACAAAAAAAAIAAABoACEAAAAAAAIAAABoACIAAAAAAAIAAABoACMAAAAAAAIAAABpAB4AAAADAAIAAABpAB8AAAAAAAIAAABpACAAAAAAAAIAAABpACEAAAAAAAIAAABpACIAAAAAAAIAAABpACMAAAAAAAIAAABqAB4AAAADAAIAAABqAB8AAAAAAAIAAABqACAAAAAAAAIAAABqACEAAAAAAAIAAABqACIAAAAAAAIAAABqACMAAAAAAAIAAAA3ABsAAAADAAMAAAA4ABoAAAAAAAQAAAA5ABkAAAABAAMAAAA6ABgAAAAAAAMAAAA7ABcAAAABAAQAAAA8ABYAAAABAAMAAAA9ABUAAAABAAQAAAA+ABQAAAAAAAMAAAA/ABMAAAABAAQAAABAABIAAAAAAAQAAABBABEAAAAAAAQAAABCABAAAAABAAMAAABDAA8AAAABAAMAAABEAA4AAAABAAMAAABFAA0AAAAAAAMAAABGAAwAAAABAAQAAABrAB4AAAADAAIAAAA=") +tile_set = SubResource("TileSet_c4cnm") +metadata/_edit_lock_ = true + +[node name="View_Layer_2" type="TileMapLayer" parent="Tile_Group"] +light_mask = 2 +z_index = 2 +tile_set = SubResource("TileSet_c4cnm") +metadata/_edit_lock_ = true + +[node name="View_Layer_3" type="TileMapLayer" parent="Tile_Group"] +z_index = 3 +tile_map_data = PackedByteArray("AABHAA4AAAADAAIAAABHAA8AAAADAAIAAABHABAAAAADAAIAAABHABEAAAADAAIAAABHABIAAAADAAIAAABHABMAAAADAAIAAABHABQAAAADAAIAAABHABUAAAADAAIAAABHABYAAAADAAIAAABHABcAAAADAAIAAABHABgAAAADAAIAAABHABkAAAADAAIAAABHABoAAAADAAIAAABHABsAAAADAAIAAABIAA4AAAADAAIAAABIAA8AAAADAAIAAABIABAAAAADAAIAAABIABEAAAADAAIAAABIABIAAAADAAIAAABIABMAAAADAAIAAABIABQAAAADAAIAAABIABUAAAADAAIAAABIABYAAAADAAIAAABIABcAAAADAAIAAABIABgAAAADAAIAAABIABkAAAADAAIAAABIABoAAAADAAIAAABIABsAAAADAAIAAABJAA4AAAADAAIAAABJAA8AAAADAAIAAABJABAAAAADAAIAAABJABEAAAADAAIAAABJABIAAAADAAIAAABJABMAAAADAAIAAABJABQAAAADAAIAAABJABUAAAADAAIAAABJABYAAAADAAIAAABJABcAAAADAAIAAABJABgAAAADAAIAAABJABkAAAADAAIAAABJABoAAAADAAIAAABJABsAAAADAAIAAABKAA4AAAADAAIAAABKAA8AAAADAAIAAABKABAAAAADAAIAAABKABEAAAADAAIAAABKABIAAAADAAIAAABKABMAAAADAAIAAABKABQAAAADAAIAAABKABUAAAADAAIAAABKABYAAAADAAIAAABKABcAAAADAAIAAABKABgAAAADAAIAAABKABkAAAADAAIAAABKABoAAAADAAIAAABKABsAAAADAAIAAABLAA4AAAADAAIAAABLAA8AAAADAAIAAABLABAAAAADAAIAAABLABEAAAADAAIAAABLABIAAAADAAIAAABLABMAAAADAAIAAABLABQAAAADAAIAAABLABUAAAADAAIAAABLABYAAAADAAIAAABLABcAAAADAAIAAABLABgAAAADAAIAAABLABkAAAADAAIAAABLABoAAAADAAIAAABLABsAAAADAAIAAABMAA4AAAADAAIAAABMAA8AAAADAAIAAABMABAAAAADAAIAAABMABEAAAADAAIAAABMABIAAAADAAIAAABMABMAAAADAAIAAABMABQAAAADAAIAAABMABUAAAADAAIAAABMABYAAAADAAIAAABMABcAAAADAAIAAABMABgAAAADAAIAAABMABkAAAADAAIAAABMABoAAAADAAIAAABMABsAAAADAAIAAABNAA4AAAADAAIAAABNAA8AAAADAAIAAABNABAAAAADAAIAAABNABEAAAADAAIAAABNABIAAAADAAIAAABNABMAAAADAAIAAABNABQAAAADAAIAAABNABUAAAADAAIAAABNABYAAAADAAIAAABNABcAAAADAAIAAABNABgAAAADAAIAAABNABkAAAADAAIAAABNABoAAAADAAIAAABNABsAAAADAAIAAABOAA4AAAADAAIAAABOAA8AAAADAAIAAABOABAAAAADAAIAAABOABEAAAADAAIAAABOABIAAAADAAIAAABOABMAAAADAAIAAABOABQAAAADAAIAAABOABUAAAADAAIAAABOABYAAAADAAIAAABOABcAAAADAAIAAABOABgAAAADAAIAAABOABkAAAADAAIAAABOABoAAAADAAIAAABOABsAAAADAAIAAABPAA4AAAADAAIAAABPAA8AAAADAAIAAABPABAAAAADAAIAAABPABEAAAADAAIAAABPABIAAAADAAIAAABPABMAAAADAAIAAABPABQAAAADAAIAAABPABUAAAADAAIAAABPABYAAAADAAIAAABPABcAAAADAAIAAABPABgAAAADAAIAAABPABkAAAADAAIAAABPABoAAAADAAIAAABPABsAAAADAAIAAABQAA4AAAADAAIAAABQAA8AAAADAAIAAABQABAAAAADAAIAAABQABEAAAADAAIAAABQABIAAAADAAIAAABQABMAAAADAAIAAABQABQAAAADAAIAAABQABUAAAADAAIAAABQABYAAAADAAIAAABQABcAAAADAAIAAABQABgAAAADAAIAAABQABkAAAADAAIAAABQABoAAAADAAIAAABQABsAAAADAAIAAABRAA4AAAADAAIAAABRAA8AAAADAAIAAABRABAAAAADAAIAAABRABEAAAADAAIAAABRABIAAAADAAIAAABRABMAAAADAAIAAABRABQAAAADAAIAAABRABUAAAADAAIAAABRABYAAAADAAIAAABRABcAAAADAAIAAABRABgAAAADAAIAAABRABkAAAADAAIAAABRABoAAAADAAIAAABRABsAAAADAAIAAABSAA4AAAADAAIAAABSAA8AAAADAAIAAABSABAAAAADAAIAAABSABEAAAADAAIAAABSABIAAAADAAIAAABSABMAAAADAAIAAABSABQAAAADAAIAAABSABUAAAADAAIAAABSABYAAAADAAIAAABSABcAAAADAAIAAABSABgAAAADAAIAAABSABkAAAADAAIAAABSABoAAAADAAIAAABSABsAAAADAAIAAABTAA4AAAADAAIAAABTAA8AAAADAAIAAABTABAAAAADAAIAAABTABEAAAADAAIAAABTABIAAAADAAIAAABTABMAAAADAAIAAABTABQAAAADAAIAAABTABUAAAADAAIAAABTABYAAAADAAIAAABTABcAAAADAAIAAABTABgAAAADAAIAAABTABkAAAADAAIAAABTABoAAAADAAIAAABTABsAAAADAAIAAABUAA4AAAADAAIAAABUAA8AAAADAAIAAABUABAAAAADAAIAAABUABEAAAADAAIAAABUABIAAAADAAIAAABUABMAAAADAAIAAABUABQAAAADAAIAAABUABUAAAADAAIAAABUABYAAAADAAIAAABUABcAAAADAAIAAABUABgAAAADAAIAAABUABkAAAADAAIAAABUABoAAAADAAIAAABUABsAAAADAAIAAABVAA4AAAADAAIAAABVAA8AAAADAAIAAABVABAAAAADAAIAAABVABEAAAADAAIAAABVABIAAAADAAIAAABVABMAAAADAAIAAABVABQAAAADAAIAAABVABUAAAADAAIAAABVABYAAAADAAIAAABVABcAAAADAAIAAABVABgAAAADAAIAAABVABkAAAADAAIAAABVABoAAAADAAIAAABVABsAAAADAAIAAABWAA4AAAADAAIAAABWAA8AAAADAAIAAABWABAAAAADAAIAAABWABEAAAADAAIAAABWABIAAAADAAIAAABWABMAAAADAAIAAABWABQAAAADAAIAAABWABUAAAADAAIAAABWABYAAAADAAIAAABWABcAAAADAAIAAABWABgAAAADAAIAAABWABkAAAADAAIAAABWABoAAAADAAIAAABWABsAAAADAAIAAABXAA4AAAADAAIAAABXAA8AAAADAAIAAABXABAAAAADAAIAAABXABEAAAADAAIAAABXABIAAAADAAIAAABXABMAAAADAAIAAABXABQAAAADAAIAAABXABUAAAADAAIAAABXABYAAAADAAIAAABXABcAAAADAAIAAABXABgAAAADAAIAAABXABkAAAADAAIAAABXABoAAAADAAIAAABXABsAAAADAAIAAABYAA4AAAADAAIAAABYAA8AAAADAAIAAABYABAAAAADAAIAAABYABEAAAADAAIAAABYABIAAAADAAIAAABYABMAAAADAAIAAABYABQAAAADAAIAAABYABUAAAADAAIAAABYABYAAAADAAIAAABYABcAAAADAAIAAABYABgAAAADAAIAAABYABkAAAADAAIAAABYABoAAAADAAIAAABYABsAAAADAAIAAABZAA4AAAADAAIAAABZAA8AAAADAAIAAABZABAAAAADAAIAAABZABEAAAADAAIAAABZABIAAAADAAIAAABZABMAAAADAAIAAABZABQAAAADAAIAAABZABUAAAADAAIAAABZABYAAAADAAIAAABZABcAAAADAAIAAABZABgAAAADAAIAAABZABkAAAADAAIAAABZABoAAAADAAIAAABZABsAAAADAAIAAABaAA4AAAADAAIAAABaAA8AAAADAAIAAABaABAAAAADAAIAAABaABEAAAADAAIAAABaABIAAAADAAIAAABaABMAAAADAAIAAABaABQAAAADAAIAAABaABUAAAADAAIAAABaABYAAAADAAIAAABaABcAAAADAAIAAABaABgAAAADAAIAAABaABkAAAADAAIAAABaABoAAAADAAIAAABaABsAAAADAAIAAABbAA4AAAADAAIAAABbAA8AAAADAAIAAABbABAAAAADAAIAAABbABEAAAADAAIAAABbABIAAAADAAIAAABbABMAAAADAAIAAABbABQAAAADAAIAAABbABUAAAADAAIAAABbABYAAAADAAIAAABbABcAAAADAAIAAABbABgAAAADAAIAAABbABkAAAADAAIAAABbABoAAAADAAIAAABbABsAAAADAAIAAABcAA4AAAADAAIAAABcAA8AAAADAAIAAABcABAAAAADAAIAAABcABEAAAADAAIAAABcABIAAAADAAIAAABcABMAAAADAAIAAABcABQAAAADAAIAAABcABUAAAADAAIAAABcABYAAAADAAIAAABcABcAAAADAAIAAABcABgAAAADAAIAAABcABkAAAADAAIAAABcABoAAAADAAIAAABcABsAAAADAAIAAABdAA4AAAADAAIAAABdAA8AAAADAAIAAABdABAAAAADAAIAAABdABEAAAADAAIAAABdABIAAAADAAIAAABdABMAAAADAAIAAABdABQAAAADAAIAAABdABUAAAADAAIAAABdABYAAAADAAIAAABdABcAAAADAAIAAABdABgAAAADAAIAAABdABkAAAADAAIAAABdABoAAAADAAIAAABdABsAAAADAAIAAABeAA4AAAADAAIAAABeAA8AAAADAAIAAABeABAAAAADAAIAAABeABEAAAADAAIAAABeABIAAAADAAIAAABeABMAAAADAAIAAABeABQAAAADAAIAAABeABUAAAADAAIAAABeABYAAAADAAIAAABeABcAAAADAAIAAABeABgAAAADAAIAAABeABkAAAADAAIAAABeABoAAAADAAIAAABeABsAAAADAAIAAABfAA4AAAADAAIAAABfAA8AAAADAAIAAABfABAAAAADAAIAAABfABEAAAADAAIAAABfABIAAAADAAIAAABfABMAAAADAAIAAABfABQAAAADAAIAAABfABUAAAADAAIAAABfABYAAAADAAIAAABfABcAAAADAAIAAABfABgAAAADAAIAAABfABkAAAADAAIAAABfABoAAAADAAIAAABfABsAAAADAAIAAABgAA4AAAADAAIAAABgAA8AAAADAAIAAABgABAAAAADAAIAAABgABEAAAADAAIAAABgABIAAAADAAIAAABgABMAAAADAAIAAABgABQAAAADAAIAAABgABUAAAADAAIAAABgABYAAAADAAIAAABgABcAAAADAAIAAABgABgAAAADAAIAAABgABkAAAADAAIAAABgABoAAAADAAIAAABgABsAAAADAAIAAABhAA4AAAADAAIAAABhAA8AAAADAAIAAABhABAAAAADAAIAAABhABEAAAADAAIAAABhABIAAAADAAIAAABhABMAAAADAAIAAABhABQAAAADAAIAAABhABUAAAADAAIAAABhABYAAAADAAIAAABhABcAAAADAAIAAABhABgAAAADAAIAAABhABkAAAADAAIAAABhABoAAAADAAIAAABhABsAAAADAAIAAABiAA4AAAADAAIAAABiAA8AAAADAAIAAABiABAAAAADAAIAAABiABEAAAADAAIAAABiABIAAAADAAIAAABiABMAAAADAAIAAABiABQAAAADAAIAAABiABUAAAADAAIAAABiABYAAAADAAIAAABiABcAAAADAAIAAABiABgAAAADAAIAAABiABkAAAADAAIAAABiABoAAAADAAIAAABiABsAAAADAAIAAABjAA4AAAADAAIAAABjAA8AAAADAAIAAABjABAAAAADAAIAAABjABEAAAADAAIAAABjABIAAAADAAIAAABjABMAAAADAAIAAABjABQAAAADAAIAAABjABUAAAADAAIAAABjABYAAAADAAIAAABjABcAAAADAAIAAABjABgAAAADAAIAAABjABkAAAADAAIAAABjABoAAAADAAIAAABjABsAAAADAAIAAABkAA4AAAADAAIAAABkAA8AAAADAAIAAABkABAAAAADAAIAAABkABEAAAADAAIAAABkABIAAAADAAIAAABkABMAAAADAAIAAABkABQAAAADAAIAAABkABUAAAADAAIAAABkABYAAAADAAIAAABkABcAAAADAAIAAABkABgAAAADAAIAAABkABkAAAADAAIAAABkABoAAAADAAIAAABkABsAAAADAAIAAABAABUAAAADAAIAAABAABYAAAADAAIAAABAABcAAAADAAIAAABAABgAAAADAAIAAABAABkAAAADAAIAAABAABoAAAADAAIAAABAABsAAAADAAIAAABBABUAAAADAAIAAABBABYAAAADAAIAAABBABcAAAADAAIAAABBABgAAAADAAIAAABBABkAAAADAAIAAABBABoAAAADAAIAAABBABsAAAADAAIAAABCABUAAAADAAIAAABCABYAAAADAAIAAABCABcAAAADAAIAAABCABgAAAADAAIAAABCABkAAAADAAIAAABCABoAAAADAAIAAABCABsAAAADAAIAAABDABUAAAADAAIAAABDABYAAAADAAIAAABDABcAAAADAAIAAABDABgAAAADAAIAAABDABkAAAADAAIAAABDABoAAAADAAIAAABDABsAAAADAAIAAABEABUAAAADAAIAAABEABYAAAADAAIAAABEABcAAAADAAIAAABEABgAAAADAAIAAABEABkAAAADAAIAAABEABoAAAADAAIAAABEABsAAAADAAIAAABFABUAAAADAAIAAABFABYAAAADAAIAAABFABcAAAADAAIAAABFABgAAAADAAIAAABFABkAAAADAAIAAABFABoAAAADAAIAAABFABsAAAADAAIAAABGABUAAAADAAIAAABGABYAAAADAAIAAABGABcAAAADAAIAAABGABgAAAADAAIAAABGABkAAAADAAIAAABGABoAAAADAAIAAABGABsAAAADAAIAAAA9ABgAAAADAAIAAAA9ABkAAAADAAIAAAA9ABoAAAADAAIAAAA9ABsAAAADAAIAAAA+ABgAAAADAAIAAAA+ABkAAAADAAIAAAA+ABoAAAADAAIAAAA+ABsAAAADAAIAAAA/ABgAAAADAAIAAAA/ABkAAAADAAIAAAA/ABoAAAADAAIAAAA/ABsAAAADAAIAAABEABIAAAADAAIAAABEABMAAAADAAIAAABEABQAAAADAAIAAABFABIAAAADAAIAAABFABMAAAADAAIAAABFABQAAAADAAIAAABGABIAAAADAAIAAABGABMAAAADAAIAAABGABQAAAADAAIAAAA6ABsAAAADAAIAAAA7ABsAAAADAAIAAAA8ABsAAAADAAIAAAA7ABoAAAADAAIAAAA8ABoAAAADAAIAAAA8ABkAAAADAAIAAAA+ABcAAAADAAIAAAA/ABYAAAADAAIAAABBABQAAAADAAIAAABCABMAAAADAAIAAABDABIAAAADAAIAAABEABEAAAADAAIAAABFABAAAAADAAIAAABGAA8AAAADAAIAAABGABAAAAADAAIAAABGABEAAAADAAIAAABFABEAAAADAAIAAABDABMAAAADAAIAAABDABQAAAADAAIAAABCABQAAAADAAIAAAA/ABcAAAADAAIAAAAAAB4AAAADAAIAAAAAAB8AAAADAAIAAAAAACAAAAADAAIAAAAAACEAAAADAAIAAAAAACIAAAADAAIAAAAAACMAAAADAAIAAAABAB4AAAADAAIAAAABAB8AAAADAAIAAAABACAAAAADAAIAAAABACEAAAADAAIAAAABACIAAAADAAIAAAABACMAAAADAAIAAAACAB4AAAADAAIAAAACAB8AAAADAAIAAAACACAAAAADAAIAAAACACEAAAADAAIAAAACACIAAAADAAIAAAACACMAAAADAAIAAAADAB4AAAADAAIAAAADAB8AAAADAAIAAAADACAAAAADAAIAAAADACEAAAADAAIAAAADACIAAAADAAIAAAADACMAAAADAAIAAAAEAB4AAAADAAIAAAAEAB8AAAADAAIAAAAEACAAAAADAAIAAAAEACEAAAADAAIAAAAEACIAAAADAAIAAAAEACMAAAADAAIAAAAFAB4AAAADAAIAAAAFAB8AAAADAAIAAAAFACAAAAADAAIAAAAFACEAAAADAAIAAAAFACIAAAADAAIAAAAFACMAAAADAAIAAAAGAB4AAAADAAIAAAAGAB8AAAADAAIAAAAGACAAAAADAAIAAAAGACEAAAADAAIAAAAGACIAAAADAAIAAAAGACMAAAADAAIAAAAHAB4AAAADAAIAAAAHAB8AAAADAAIAAAAHACAAAAADAAIAAAAHACEAAAADAAIAAAAHACIAAAADAAIAAAAHACMAAAADAAIAAAAIAB4AAAADAAIAAAAIAB8AAAADAAIAAAAIACAAAAADAAIAAAAIACEAAAADAAIAAAAIACIAAAADAAIAAAAIACMAAAADAAIAAAAJAB4AAAADAAIAAAAJAB8AAAADAAIAAAAJACAAAAADAAIAAAAJACEAAAADAAIAAAAJACIAAAADAAIAAAAJACMAAAADAAIAAAAKAB4AAAADAAIAAAAKAB8AAAADAAIAAAAKACAAAAADAAIAAAAKACEAAAADAAIAAAAKACIAAAADAAIAAAAKACMAAAADAAIAAAALAB4AAAADAAIAAAALAB8AAAADAAIAAAALACAAAAADAAIAAAALACEAAAADAAIAAAALACIAAAADAAIAAAALACMAAAADAAIAAAAMAB4AAAADAAIAAAAMAB8AAAADAAIAAAAMACAAAAADAAIAAAAMACEAAAADAAIAAAAMACIAAAADAAIAAAAMACMAAAADAAIAAAANAB4AAAADAAIAAAANAB8AAAADAAIAAAANACAAAAADAAIAAAANACEAAAADAAIAAAANACIAAAADAAIAAAANACMAAAADAAIAAAAOAB4AAAADAAIAAAAOAB8AAAADAAIAAAAOACAAAAADAAIAAAAOACEAAAADAAIAAAAOACIAAAADAAIAAAAOACMAAAADAAIAAAAPAB4AAAADAAIAAAAPAB8AAAADAAIAAAAPACAAAAADAAIAAAAPACEAAAADAAIAAAAPACIAAAADAAIAAAAPACMAAAADAAIAAAAQAB4AAAADAAIAAAAQAB8AAAADAAIAAAAQACAAAAADAAIAAAAQACEAAAADAAIAAAAQACIAAAADAAIAAAAQACMAAAADAAIAAAARAB4AAAADAAIAAAARAB8AAAADAAIAAAARACAAAAADAAIAAAARACEAAAADAAIAAAARACIAAAADAAIAAAARACMAAAADAAIAAAASAB4AAAADAAIAAAASAB8AAAADAAIAAAASACAAAAADAAIAAAASACEAAAADAAIAAAASACIAAAADAAIAAAASACMAAAADAAIAAAATAB4AAAADAAIAAAATAB8AAAADAAIAAAATACAAAAADAAIAAAATACEAAAADAAIAAAATACIAAAADAAIAAAATACMAAAADAAIAAAAUAB4AAAADAAIAAAAUAB8AAAADAAIAAAAUACAAAAADAAIAAAAUACEAAAADAAIAAAAUACIAAAADAAIAAAAUACMAAAADAAIAAAAVAB4AAAADAAIAAAAVAB8AAAADAAIAAAAVACAAAAADAAIAAAAVACEAAAADAAIAAAAVACIAAAADAAIAAAAVACMAAAADAAIAAAAWAB4AAAADAAIAAAAWAB8AAAADAAIAAAAWACAAAAADAAIAAAAWACEAAAADAAIAAAAWACIAAAADAAIAAAAWACMAAAADAAIAAAAXAB4AAAADAAIAAAAXAB8AAAADAAIAAAAXACAAAAADAAIAAAAXACEAAAADAAIAAAAXACIAAAADAAIAAAAXACMAAAADAAIAAAAYAB4AAAADAAIAAAAYAB8AAAADAAIAAAAYACAAAAADAAIAAAAYACEAAAADAAIAAAAYACIAAAADAAIAAAAYACMAAAADAAIAAAAZAB4AAAADAAIAAAAZAB8AAAADAAIAAAAZACAAAAADAAIAAAAZACEAAAADAAIAAAAZACIAAAADAAIAAAAZACMAAAADAAIAAAAaAB4AAAADAAIAAAAaAB8AAAADAAIAAAAaACAAAAADAAIAAAAaACEAAAADAAIAAAAaACIAAAADAAIAAAAaACMAAAADAAIAAAAbAB4AAAADAAIAAAAbAB8AAAADAAIAAAAbACAAAAADAAIAAAAbACEAAAADAAIAAAAbACIAAAADAAIAAAAbACMAAAADAAIAAAAcAB4AAAADAAIAAAAcAB8AAAADAAIAAAAcACAAAAADAAIAAAAcACEAAAADAAIAAAAcACIAAAADAAIAAAAcACMAAAADAAIAAAAdAB4AAAADAAIAAAAdAB8AAAADAAIAAAAdACAAAAADAAIAAAAdACEAAAADAAIAAAAdACIAAAADAAIAAAAdACMAAAADAAIAAAAeAB4AAAADAAIAAAAeAB8AAAADAAIAAAAeACAAAAADAAIAAAAeACEAAAADAAIAAAAeACIAAAADAAIAAAAeACMAAAADAAIAAAAfAB4AAAADAAIAAAAfAB8AAAADAAIAAAAfACAAAAADAAIAAAAfACEAAAADAAIAAAAfACIAAAADAAIAAAAfACMAAAADAAIAAAAgAB4AAAADAAIAAAAgAB8AAAADAAIAAAAgACAAAAADAAIAAAAgACEAAAADAAIAAAAgACIAAAADAAIAAAAgACMAAAADAAIAAAAhAB4AAAADAAIAAAAhAB8AAAADAAIAAAAhACAAAAADAAIAAAAhACEAAAADAAIAAAAhACIAAAADAAIAAAAhACMAAAADAAIAAAAiAB4AAAADAAIAAAAiAB8AAAADAAIAAAAiACAAAAADAAIAAAAiACEAAAADAAIAAAAiACIAAAADAAIAAAAiACMAAAADAAIAAAAjAB4AAAADAAIAAAAjAB8AAAADAAIAAAAjACAAAAADAAIAAAAjACEAAAADAAIAAAAjACIAAAADAAIAAAAjACMAAAADAAIAAAAkAB4AAAADAAIAAAAkAB8AAAADAAIAAAAkACAAAAADAAIAAAAkACEAAAADAAIAAAAkACIAAAADAAIAAAAkACMAAAADAAIAAAAlAB4AAAADAAIAAAAlAB8AAAADAAIAAAAlACAAAAADAAIAAAAlACEAAAADAAIAAAAlACIAAAADAAIAAAAlACMAAAADAAIAAAAmAB4AAAADAAIAAAAmAB8AAAADAAIAAAAmACAAAAADAAIAAAAmACEAAAADAAIAAAAmACIAAAADAAIAAAAmACMAAAADAAIAAAAnAB4AAAADAAIAAAAnAB8AAAADAAIAAAAnACAAAAADAAIAAAAnACEAAAADAAIAAAAnACIAAAADAAIAAAAnACMAAAADAAIAAAAoAB4AAAADAAIAAAAoAB8AAAADAAIAAAAoACAAAAADAAIAAAAoACEAAAADAAIAAAAoACIAAAADAAIAAAAoACMAAAADAAIAAAApAB4AAAADAAIAAAApAB8AAAADAAIAAAApACAAAAADAAIAAAApACEAAAADAAIAAAApACIAAAADAAIAAAApACMAAAADAAIAAAAqAB4AAAADAAIAAAAqAB8AAAADAAIAAAAqACAAAAADAAIAAAAqACEAAAADAAIAAAAqACIAAAADAAIAAAAqACMAAAADAAIAAAArAB4AAAADAAIAAAArAB8AAAADAAIAAAArACAAAAADAAIAAAArACEAAAADAAIAAAArACIAAAADAAIAAAArACMAAAADAAIAAAAsAB4AAAADAAIAAAAsAB8AAAADAAIAAAAsACAAAAADAAIAAAAsACEAAAADAAIAAAAsACIAAAADAAIAAAAsACMAAAADAAIAAAAtAB4AAAADAAIAAAAtAB8AAAADAAIAAAAtACAAAAADAAIAAAAtACEAAAADAAIAAAAtACIAAAADAAIAAAAtACMAAAADAAIAAAAuAB4AAAADAAIAAAAuAB8AAAADAAIAAAAuACAAAAADAAIAAAAuACEAAAADAAIAAAAuACIAAAADAAIAAAAuACMAAAADAAIAAAAvAB4AAAADAAIAAAAvAB8AAAADAAIAAAAvACAAAAADAAIAAAAvACEAAAADAAIAAAAvACIAAAADAAIAAAAvACMAAAADAAIAAAAwAB4AAAADAAIAAAAwAB8AAAADAAIAAAAwACAAAAADAAIAAAAwACEAAAADAAIAAAAwACIAAAADAAIAAAAwACMAAAADAAIAAAAxAB4AAAADAAIAAAAxAB8AAAADAAIAAAAxACAAAAADAAIAAAAxACEAAAADAAIAAAAxACIAAAADAAIAAAAxACMAAAADAAIAAAAyAB4AAAADAAIAAAAyAB8AAAADAAIAAAAyACAAAAADAAIAAAAyACEAAAADAAIAAAAyACIAAAADAAIAAAAyACMAAAADAAIAAAAzAB4AAAADAAIAAAAzAB8AAAADAAIAAAAzACAAAAADAAIAAAAzACEAAAADAAIAAAAzACIAAAADAAIAAAAzACMAAAADAAIAAAA0AB4AAAADAAIAAAA0AB8AAAADAAIAAAA0ACAAAAADAAIAAAA0ACEAAAADAAIAAAA0ACIAAAADAAIAAAA0ACMAAAADAAIAAAA1AB4AAAADAAIAAAA1AB8AAAADAAIAAAA1ACAAAAADAAIAAAA1ACEAAAADAAIAAAA1ACIAAAADAAIAAAA1ACMAAAADAAIAAAA2AB4AAAADAAIAAAA2AB8AAAADAAIAAAA2ACAAAAADAAIAAAA2ACEAAAADAAIAAAA2ACIAAAADAAIAAAA2ACMAAAADAAIAAAA3AB4AAAADAAIAAAA3AB8AAAADAAIAAAA3ACAAAAADAAIAAAA3ACEAAAADAAIAAAA3ACIAAAADAAIAAAA3ACMAAAADAAIAAAA4AB4AAAADAAIAAAA4AB8AAAADAAIAAAA4ACAAAAADAAIAAAA4ACEAAAADAAIAAAA4ACIAAAADAAIAAAA4ACMAAAADAAIAAAA5AB4AAAADAAIAAAA5AB8AAAADAAIAAAA5ACAAAAADAAIAAAA5ACEAAAADAAIAAAA5ACIAAAADAAIAAAA5ACMAAAADAAIAAAA6AB4AAAADAAIAAAA6AB8AAAADAAIAAAA6ACAAAAADAAIAAAA6ACEAAAADAAIAAAA6ACIAAAADAAIAAAA6ACMAAAADAAIAAAA7AB4AAAADAAIAAAA7AB8AAAADAAIAAAA7ACAAAAADAAIAAAA7ACEAAAADAAIAAAA7ACIAAAADAAIAAAA7ACMAAAADAAIAAAA8AB4AAAADAAIAAAA8AB8AAAADAAIAAAA8ACAAAAADAAIAAAA8ACEAAAADAAIAAAA8ACIAAAADAAIAAAA8ACMAAAADAAIAAAA9AB4AAAADAAIAAAA9AB8AAAADAAIAAAA9ACAAAAADAAIAAAA9ACEAAAADAAIAAAA9ACIAAAADAAIAAAA9ACMAAAADAAIAAAA+AB4AAAADAAIAAAA+AB8AAAADAAIAAAA+ACAAAAADAAIAAAA+ACEAAAADAAIAAAA+ACIAAAADAAIAAAA+ACMAAAADAAIAAAA/AB4AAAADAAIAAAA/AB8AAAADAAIAAAA/ACAAAAADAAIAAAA/ACEAAAADAAIAAAA/ACIAAAADAAIAAAA/ACMAAAADAAIAAABAAB4AAAADAAIAAABAAB8AAAADAAIAAABAACAAAAADAAIAAABAACEAAAADAAIAAABAACIAAAADAAIAAABAACMAAAADAAIAAABBAB4AAAADAAIAAABBAB8AAAADAAIAAABBACAAAAADAAIAAABBACEAAAADAAIAAABBACIAAAADAAIAAABBACMAAAADAAIAAABCAB4AAAADAAIAAABCAB8AAAADAAIAAABCACAAAAADAAIAAABCACEAAAADAAIAAABCACIAAAADAAIAAABCACMAAAADAAIAAABDAB4AAAADAAIAAABDAB8AAAADAAIAAABDACAAAAADAAIAAABDACEAAAADAAIAAABDACIAAAADAAIAAABDACMAAAADAAIAAABEAB4AAAADAAIAAABEAB8AAAADAAIAAABEACAAAAADAAIAAABEACEAAAADAAIAAABEACIAAAADAAIAAABEACMAAAADAAIAAABFAB4AAAADAAIAAABFAB8AAAADAAIAAABFACAAAAADAAIAAABFACEAAAADAAIAAABFACIAAAADAAIAAABFACMAAAADAAIAAABGAB4AAAADAAIAAABGAB8AAAADAAIAAABGACAAAAADAAIAAABGACEAAAADAAIAAABGACIAAAADAAIAAABGACMAAAADAAIAAABHAB4AAAADAAIAAABHAB8AAAADAAIAAABHACAAAAADAAIAAABHACEAAAADAAIAAABHACIAAAADAAIAAABHACMAAAADAAIAAABIAB4AAAADAAIAAABIAB8AAAADAAIAAABIACAAAAADAAIAAABIACEAAAADAAIAAABIACIAAAADAAIAAABIACMAAAADAAIAAABJAB4AAAADAAIAAABJAB8AAAADAAIAAABJACAAAAADAAIAAABJACEAAAADAAIAAABJACIAAAADAAIAAABJACMAAAADAAIAAABKAB4AAAADAAIAAABKAB8AAAADAAIAAABKACAAAAADAAIAAABKACEAAAADAAIAAABKACIAAAADAAIAAABKACMAAAADAAIAAABLAB4AAAADAAIAAABLAB8AAAADAAIAAABLACAAAAADAAIAAABLACEAAAADAAIAAABLACIAAAADAAIAAABLACMAAAADAAIAAABMAB4AAAADAAIAAABMAB8AAAADAAIAAABMACAAAAADAAIAAABMACEAAAADAAIAAABMACIAAAADAAIAAABMACMAAAADAAIAAABNAB4AAAADAAIAAABNAB8AAAADAAIAAABNACAAAAADAAIAAABNACEAAAADAAIAAABNACIAAAADAAIAAABNACMAAAADAAIAAABOAB4AAAADAAIAAABOAB8AAAADAAIAAABOACAAAAADAAIAAABOACEAAAADAAIAAABOACIAAAADAAIAAABOACMAAAADAAIAAABPAB4AAAADAAIAAABPAB8AAAADAAIAAABPACAAAAADAAIAAABPACEAAAADAAIAAABPACIAAAADAAIAAABPACMAAAADAAIAAABQAB4AAAADAAIAAABQAB8AAAADAAIAAABQACAAAAADAAIAAABQACEAAAADAAIAAABQACIAAAADAAIAAABQACMAAAADAAIAAABRAB4AAAADAAIAAABRAB8AAAADAAIAAABRACAAAAADAAIAAABRACEAAAADAAIAAABRACIAAAADAAIAAABRACMAAAADAAIAAABSAB4AAAADAAIAAABSAB8AAAADAAIAAABSACAAAAADAAIAAABSACEAAAADAAIAAABSACIAAAADAAIAAABSACMAAAADAAIAAABTAB4AAAADAAIAAABTAB8AAAADAAIAAABTACAAAAADAAIAAABTACEAAAADAAIAAABTACIAAAADAAIAAABTACMAAAADAAIAAABUAB4AAAADAAIAAABUAB8AAAADAAIAAABUACAAAAADAAIAAABUACEAAAADAAIAAABUACIAAAADAAIAAABUACMAAAADAAIAAABVAB4AAAADAAIAAABVAB8AAAADAAIAAABVACAAAAADAAIAAABVACEAAAADAAIAAABVACIAAAADAAIAAABVACMAAAADAAIAAABWAB4AAAADAAIAAABWAB8AAAADAAIAAABWACAAAAADAAIAAABWACEAAAADAAIAAABWACIAAAADAAIAAABWACMAAAADAAIAAABXAB4AAAADAAIAAABXAB8AAAADAAIAAABXACAAAAADAAIAAABXACEAAAADAAIAAABXACIAAAADAAIAAABXACMAAAADAAIAAABYAB4AAAADAAIAAABYAB8AAAADAAIAAABYACAAAAADAAIAAABYACEAAAADAAIAAABYACIAAAADAAIAAABYACMAAAADAAIAAABZAB4AAAADAAIAAABZAB8AAAADAAIAAABZACAAAAADAAIAAABZACEAAAADAAIAAABZACIAAAADAAIAAABZACMAAAADAAIAAABaAB4AAAADAAIAAABaAB8AAAADAAIAAABaACAAAAADAAIAAABaACEAAAADAAIAAABaACIAAAADAAIAAABaACMAAAADAAIAAABbAB4AAAADAAIAAABbAB8AAAADAAIAAABbACAAAAADAAIAAABbACEAAAADAAIAAABbACIAAAADAAIAAABbACMAAAADAAIAAABcAB4AAAADAAIAAABcAB8AAAADAAIAAABcACAAAAADAAIAAABcACEAAAADAAIAAABcACIAAAADAAIAAABcACMAAAADAAIAAABdAB4AAAADAAIAAABdAB8AAAADAAIAAABdACAAAAADAAIAAABdACEAAAADAAIAAABdACIAAAADAAIAAABdACMAAAADAAIAAABeAB4AAAADAAIAAABeAB8AAAADAAIAAABeACAAAAADAAIAAABeACEAAAADAAIAAABeACIAAAADAAIAAABeACMAAAADAAIAAABfAB4AAAADAAIAAABfAB8AAAADAAIAAABfACAAAAADAAIAAABfACEAAAADAAIAAABfACIAAAADAAIAAABfACMAAAADAAIAAABgAB4AAAADAAIAAABgAB8AAAADAAIAAABgACAAAAADAAIAAABgACEAAAADAAIAAABgACIAAAADAAIAAABgACMAAAADAAIAAABhAB4AAAADAAIAAABhAB8AAAADAAIAAABhACAAAAADAAIAAABhACEAAAADAAIAAABhACIAAAADAAIAAABhACMAAAADAAIAAABiAB4AAAADAAIAAABiAB8AAAADAAIAAABiACAAAAADAAIAAABiACEAAAADAAIAAABiACIAAAADAAIAAABiACMAAAADAAIAAABjAB4AAAADAAIAAABjAB8AAAADAAIAAABjACAAAAADAAIAAABjACEAAAADAAIAAABjACIAAAADAAIAAABjACMAAAADAAIAAABkAB4AAAADAAIAAABkAB8AAAADAAIAAABkACAAAAADAAIAAABkACEAAAADAAIAAABkACIAAAADAAIAAABkACMAAAADAAIAAABlAB4AAAADAAIAAABlAB8AAAADAAIAAABlACAAAAADAAIAAABlACEAAAADAAIAAABlACIAAAADAAIAAABlACMAAAADAAIAAABmAB4AAAADAAIAAABmAB8AAAADAAIAAABmACAAAAADAAIAAABmACEAAAADAAIAAABmACIAAAADAAIAAABmACMAAAADAAIAAABnAB4AAAADAAIAAABnAB8AAAADAAIAAABnACAAAAADAAIAAABnACEAAAADAAIAAABnACIAAAADAAIAAABnACMAAAADAAIAAABoAB4AAAADAAIAAABoAB8AAAADAAIAAABoACAAAAADAAIAAABoACEAAAADAAIAAABoACIAAAADAAIAAABoACMAAAADAAIAAABpAB4AAAADAAIAAABpAB8AAAADAAIAAABpACAAAAADAAIAAABpACEAAAADAAIAAABpACIAAAADAAIAAABpACMAAAADAAIAAABqAB4AAAADAAIAAABqAB8AAAADAAIAAABqACAAAAADAAIAAABqACEAAAADAAIAAABqACIAAAADAAIAAABqACMAAAADAAIAAAD//x4AAAADAAIAAAD//x8AAAADAAIAAAD//yAAAAADAAIAAAD//yEAAAADAAIAAAD//yIAAAADAAIAAAD//yMAAAADAAIAAAA6ABwAAAADAAIAAAA6AB0AAAADAAIAAAA7ABwAAAADAAIAAAA7AB0AAAADAAIAAAA8ABwAAAADAAIAAAA8AB0AAAADAAIAAAA9ABwAAAADAAIAAAA9AB0AAAADAAIAAAA+ABwAAAADAAIAAAA+AB0AAAADAAIAAAA/ABwAAAADAAIAAAA/AB0AAAADAAIAAABAABwAAAADAAIAAABAAB0AAAADAAIAAABBABwAAAADAAIAAABBAB0AAAADAAIAAABCABwAAAADAAIAAABCAB0AAAADAAIAAABDABwAAAADAAIAAABDAB0AAAADAAIAAABEABwAAAADAAIAAABEAB0AAAADAAIAAABFABwAAAADAAIAAABFAB0AAAADAAIAAABGABwAAAADAAIAAABGAB0AAAADAAIAAABHABwAAAADAAIAAABHAB0AAAADAAIAAABIABwAAAADAAIAAABIAB0AAAADAAIAAABJABwAAAADAAIAAABJAB0AAAADAAIAAABKABwAAAADAAIAAABKAB0AAAADAAIAAABLABwAAAADAAIAAABLAB0AAAADAAIAAABMABwAAAADAAIAAABMAB0AAAADAAIAAABNABwAAAADAAIAAABNAB0AAAADAAIAAABOABwAAAADAAIAAABOAB0AAAADAAIAAABPABwAAAADAAIAAABPAB0AAAADAAIAAABQABwAAAADAAIAAABQAB0AAAADAAIAAABRABwAAAADAAIAAABRAB0AAAADAAIAAABSABwAAAADAAIAAABSAB0AAAADAAIAAABTABwAAAADAAIAAABTAB0AAAADAAIAAABUABwAAAADAAIAAABUAB0AAAADAAIAAABVABwAAAADAAIAAABVAB0AAAADAAIAAABWABwAAAADAAIAAABWAB0AAAADAAIAAABXABwAAAADAAIAAABXAB0AAAADAAIAAABYABwAAAADAAIAAABYAB0AAAADAAIAAABZABwAAAADAAIAAABZAB0AAAADAAIAAABaABwAAAADAAIAAABaAB0AAAADAAIAAABbABwAAAADAAIAAABbAB0AAAADAAIAAABcABwAAAADAAIAAABcAB0AAAADAAIAAABdABwAAAADAAIAAABdAB0AAAADAAIAAABeABwAAAADAAIAAABeAB0AAAADAAIAAABfABwAAAADAAIAAABfAB0AAAADAAIAAABgABwAAAADAAIAAABgAB0AAAADAAIAAABhABwAAAADAAIAAABhAB0AAAADAAIAAABiABwAAAADAAIAAABiAB0AAAADAAIAAABjABwAAAADAAIAAABjAB0AAAADAAIAAABkABwAAAADAAIAAABkAB0AAAADAAIAAABlABwAAAADAAIAAABlAB0AAAADAAIAAABmABwAAAADAAIAAABmAB0AAAADAAIAAABnABwAAAADAAIAAABnAB0AAAADAAIAAABoABwAAAADAAIAAABoAB0AAAADAAIAAABpABwAAAADAAIAAABpAB0AAAADAAIAAABqABwAAAADAAIAAABqAB0AAAADAAIAAABrABwAAAADAAIAAABrAB0AAAADAAIAAABrAB4AAAADAAIAAABrAB8AAAADAAIAAABrACAAAAADAAIAAABrACEAAAADAAIAAABrACIAAAADAAIAAABrACMAAAADAAIAAAA5AB0AAAADAAIAAAA5ABwAAAADAAIAAAA4AB0AAAADAAIAAABlAP//AAADAAIAAABlAAAAAAADAAIAAABlAAEAAAADAAIAAABlAAIAAAADAAIAAABlAAMAAAADAAIAAABlAAQAAAADAAIAAABlAAUAAAADAAIAAABlAAYAAAADAAIAAABlAAcAAAADAAIAAABlAAgAAAADAAIAAABlAAkAAAADAAIAAABlAAoAAAADAAIAAABlAAsAAAADAAIAAABlAAwAAAADAAIAAABlAA0AAAADAAIAAABlAA4AAAADAAIAAABlAA8AAAADAAIAAABlABAAAAADAAIAAABlABEAAAADAAIAAABlABIAAAADAAIAAABlABMAAAADAAIAAABlABQAAAADAAIAAABlABUAAAADAAIAAABlABYAAAADAAIAAABlABcAAAADAAIAAABlABgAAAADAAIAAABlABkAAAADAAIAAABlABoAAAADAAIAAABlABsAAAADAAIAAABmAP//AAADAAIAAABmAAAAAAADAAIAAABmAAEAAAADAAIAAABmAAIAAAADAAIAAABmAAMAAAADAAIAAABmAAQAAAADAAIAAABmAAUAAAADAAIAAABmAAYAAAADAAIAAABmAAcAAAADAAIAAABmAAgAAAADAAIAAABmAAkAAAADAAIAAABmAAoAAAADAAIAAABmAAsAAAADAAIAAABmAAwAAAADAAIAAABmAA0AAAADAAIAAABmAA4AAAADAAIAAABmAA8AAAADAAIAAABmABAAAAADAAIAAABmABEAAAADAAIAAABmABIAAAADAAIAAABmABMAAAADAAIAAABmABQAAAADAAIAAABmABUAAAADAAIAAABmABYAAAADAAIAAABmABcAAAADAAIAAABmABgAAAADAAIAAABmABkAAAADAAIAAABmABoAAAADAAIAAABmABsAAAADAAIAAABnAP//AAADAAIAAABnAAAAAAADAAIAAABnAAEAAAADAAIAAABnAAIAAAADAAIAAABnAAMAAAADAAIAAABnAAQAAAADAAIAAABnAAUAAAADAAIAAABnAAYAAAADAAIAAABnAAcAAAADAAIAAABnAAgAAAADAAIAAABnAAkAAAADAAIAAABnAAoAAAADAAIAAABnAAsAAAADAAIAAABnAAwAAAADAAIAAABnAA0AAAADAAIAAABnAA4AAAADAAIAAABnAA8AAAADAAIAAABnABAAAAADAAIAAABnABEAAAADAAIAAABnABIAAAADAAIAAABnABMAAAADAAIAAABnABQAAAADAAIAAABnABUAAAADAAIAAABnABYAAAADAAIAAABnABcAAAADAAIAAABnABgAAAADAAIAAABnABkAAAADAAIAAABnABoAAAADAAIAAABnABsAAAADAAIAAABoAP//AAADAAIAAABoAAAAAAADAAIAAABoAAEAAAADAAIAAABoAAIAAAADAAIAAABoAAMAAAADAAIAAABoAAQAAAADAAIAAABoAAUAAAADAAIAAABoAAYAAAADAAIAAABoAAcAAAADAAIAAABoAAgAAAADAAIAAABoAAkAAAADAAIAAABoAAoAAAADAAIAAABoAAsAAAADAAIAAABoAAwAAAADAAIAAABoAA0AAAADAAIAAABoAA4AAAADAAIAAABoAA8AAAADAAIAAABoABAAAAADAAIAAABoABEAAAADAAIAAABoABIAAAADAAIAAABoABMAAAADAAIAAABoABQAAAADAAIAAABoABUAAAADAAIAAABoABYAAAADAAIAAABoABcAAAADAAIAAABoABgAAAADAAIAAABoABkAAAADAAIAAABoABoAAAADAAIAAABoABsAAAADAAIAAABpAP//AAADAAIAAABpAAAAAAADAAIAAABpAAEAAAADAAIAAABpAAIAAAADAAIAAABpAAMAAAADAAIAAABpAAQAAAADAAIAAABpAAUAAAADAAIAAABpAAYAAAADAAIAAABpAAcAAAADAAIAAABpAAgAAAADAAIAAABpAAkAAAADAAIAAABpAAoAAAADAAIAAABpAAsAAAADAAIAAABpAAwAAAADAAIAAABpAA0AAAADAAIAAABpAA4AAAADAAIAAABpAA8AAAADAAIAAABpABAAAAADAAIAAABpABEAAAADAAIAAABpABIAAAADAAIAAABpABMAAAADAAIAAABpABQAAAADAAIAAABpABUAAAADAAIAAABpABYAAAADAAIAAABpABcAAAADAAIAAABpABgAAAADAAIAAABpABkAAAADAAIAAABpABoAAAADAAIAAABpABsAAAADAAIAAABqAP//AAADAAIAAABqAAAAAAADAAIAAABqAAEAAAADAAIAAABqAAIAAAADAAIAAABqAAMAAAADAAIAAABqAAQAAAADAAIAAABqAAUAAAADAAIAAABqAAYAAAADAAIAAABqAAcAAAADAAIAAABqAAgAAAADAAIAAABqAAkAAAADAAIAAABqAAoAAAADAAIAAABqAAsAAAADAAIAAABqAAwAAAADAAIAAABqAA0AAAADAAIAAABqAA4AAAADAAIAAABqAA8AAAADAAIAAABqABAAAAADAAIAAABqABEAAAADAAIAAABqABIAAAADAAIAAABqABMAAAADAAIAAABqABQAAAADAAIAAABqABUAAAADAAIAAABqABYAAAADAAIAAABqABcAAAADAAIAAABqABgAAAADAAIAAABqABkAAAADAAIAAABqABoAAAADAAIAAABqABsAAAADAAIAAABrAP//AAADAAIAAABrAAAAAAADAAIAAABrAAEAAAADAAIAAABrAAIAAAADAAIAAABrAAMAAAADAAIAAABrAAQAAAADAAIAAABrAAUAAAADAAIAAABrAAYAAAADAAIAAABrAAcAAAADAAIAAABrAAgAAAADAAIAAABrAAkAAAADAAIAAABrAAoAAAADAAIAAABrAAsAAAADAAIAAABrAAwAAAADAAIAAABrAA0AAAADAAIAAABrAA4AAAADAAIAAABrAA8AAAADAAIAAABrABAAAAADAAIAAABrABEAAAADAAIAAABrABIAAAADAAIAAABrABMAAAADAAIAAABrABQAAAADAAIAAABrABUAAAADAAIAAABrABYAAAADAAIAAABrABcAAAADAAIAAABrABgAAAADAAIAAABrABkAAAADAAIAAABrABoAAAADAAIAAABrABsAAAADAAIAAAA=") +tile_set = SubResource("TileSet_c4cnm") +metadata/_edit_lock_ = true + +[node name="Physical_Layer" type="TileMapLayer" parent="Tile_Group"] +z_index = 2 +tile_map_data = PackedByteArray("AAD/////AAABAAAAAAD//wAAAAACAAAAAAD//wEAAAACAAAAAAD//wIAAAACAAAAAAD//wMAAAACAAAAAAD//wQAAAACAAAAAAD//wUAAAACAAAAAAD//wYAAAACAAAAAAD//wcAAAACAAAAAAD//wgAAAACAAAAAAD//wkAAAACAAAAAAD//xMAAAACAAAAAAD//xQAAAACAAAAAAD//xUAAAACAAAAAAD//xYAAAACAAAAAAD//xcAAAACAAAAAAD//xgAAAACAAAAAAA6ABgAAAACAAEAAAA7ABcAAAACAAEAAAA7ABgAAAACAAIAAAA8ABcAAAACAAIAAAA8ABgAAAAAAAAAAAA9ABcAAAAAAAAAAABkAP//AAABAAAAAAD//xkAAAACAAAAAAD//xoAAAACAAAAAAD//xsAAAACAAAAAAD//xwAAAAAAAAAAAD//x0AAAAAAAAAAAAAAP//AAABAAAAAAAAABwAAAAAAAAAAAAAAB0AAAAAAAAAAAABAP//AAABAAAAAAABABwAAAAAAAAAAAABAB0AAAAAAAAAAAACAP//AAABAAAAAAACABwAAAAAAAAAAAACAB0AAAAAAAAAAAADAP//AAABAAAAAAADABwAAAAAAAAAAAADAB0AAAAAAAAAAAAEAP//AAABAAAAAAAEABwAAAAAAAAAAAAEAB0AAAAAAAAAAAAFAP//AAABAAAAAAAFABwAAAAAAAAAAAAFAB0AAAAAAAAAAAAGAP//AAABAAAAAAAGABwAAAAAAAAAAAAGAB0AAAAAAAAAAAAHAP//AAABAAAAAAAHABwAAAAAAAAAAAAHAB0AAAAAAAAAAAAIAP//AAABAAAAAAAIABwAAAAAAAAAAAAIAB0AAAAAAAAAAAAJAP//AAABAAAAAAAJABwAAAAAAAAAAAAJAB0AAAAAAAAAAAAKAP//AAABAAAAAAAKABwAAAAAAAAAAAAKAB0AAAAAAAAAAAALAP//AAABAAAAAAALABwAAAAAAAAAAAALAB0AAAAAAAAAAAAMAP//AAABAAAAAAAMABwAAAAAAAAAAAAMAB0AAAAAAAAAAAANAP//AAABAAAAAAANABwAAAAAAAAAAAANAB0AAAAAAAAAAAAOAP//AAABAAAAAAAOABwAAAAAAAAAAAAOAB0AAAAAAAAAAAAPAP//AAABAAAAAAAPABwAAAAAAAAAAAAPAB0AAAAAAAAAAAAQAP//AAABAAAAAAAQAAwAAAACAAEAAAAQAA0AAAACAAIAAAAQABwAAAAAAAAAAAAQAB0AAAAAAAAAAAARAP//AAABAAAAAAARAAwAAAAAAAAAAAARAA0AAAABAAAAAAARABwAAAAAAAAAAAARAB0AAAAAAAAAAAASAP//AAABAAAAAAASAAwAAAAAAAAAAAASAA0AAAABAAAAAAASABwAAAAAAAAAAAASAB0AAAAAAAAAAAATAP//AAABAAAAAAATAAwAAAAAAAAAAAATAA0AAAABAAAAAAATABwAAAAAAAAAAAATAB0AAAAAAAAAAAAUAP//AAABAAAAAAAUAAwAAAAAAAAAAAAUAA0AAAABAAAAAAAUABwAAAAAAAAAAAAUAB0AAAAAAAAAAAAVAP//AAABAAAAAAAVAAwAAAAAAAAAAAAVAA0AAAABAAAAAAAVABwAAAAAAAAAAAAVAB0AAAAAAAAAAAAWAP//AAABAAAAAAAWAAwAAAAAAAAAAAAWAA0AAAABAAAAAAAWABwAAAAAAAAAAAAWAB0AAAAAAAAAAAAXAP//AAABAAAAAAAXAAwAAAAAAAAAAAAXAA0AAAABAAAAAAAXABwAAAAAAAAAAAAXAB0AAAAAAAAAAAAYAP//AAABAAAAAAAYAAwAAAAAAAAAAAAYAA0AAAABAAAAAAAYABwAAAAAAAAAAAAYAB0AAAAAAAAAAAAZAP//AAABAAAAAAAZAAwAAAAAAAAAAAAZAA0AAAABAAAAAAAZABwAAAAAAAAAAAAZAB0AAAAAAAAAAAAaAP//AAABAAAAAAAaAAwAAAAAAAAAAAAaAA0AAAABAAAAAAAaABwAAAAAAAAAAAAaAB0AAAAAAAAAAAAbAP//AAABAAAAAAAbAAwAAAAAAAAAAAAbAA0AAAABAAAAAAAbABwAAAAAAAAAAAAbAB0AAAAAAAAAAAAcAP//AAABAAAAAAAcAAwAAAAAAAAAAAAcAA0AAAABAAAAAAAcABwAAAAAAAAAAAAcAB0AAAAAAAAAAAAdAP//AAABAAAAAAAdAAwAAAAAAAAAAAAdAA0AAAABAAAAAAAdABwAAAAAAAAAAAAdAB0AAAAAAAAAAAAeAP//AAABAAAAAAAeAAwAAAAAAAAAAAAeAA0AAAABAAAAAAAeABwAAAAAAAAAAAAeAB0AAAAAAAAAAAAfAP//AAABAAAAAAAfAAwAAAAAAAAAAAAfAA0AAAABAAAAAAAfABwAAAAAAAAAAAAfAB0AAAAAAAAAAAAgAP//AAABAAAAAAAgAAwAAAAAAAAAAAAgAA0AAAABAAAAAAAgABwAAAAAAAAAAAAgAB0AAAAAAAAAAAAhAP//AAABAAAAAAAhAAwAAAAAAAAAAAAhAA0AAAABAAAAAAAhABwAAAAAAAAAAAAhAB0AAAAAAAAAAAAiAP//AAABAAAAAAAiAAwAAAAAAAAAAAAiAA0AAAABAAAAAAAiABwAAAAAAAAAAAAiAB0AAAAAAAAAAAAjAP//AAABAAAAAAAjAAwAAAAAAAAAAAAjAA0AAAABAAAAAAAjABwAAAAAAAAAAAAjAB0AAAAAAAAAAAAkAP//AAABAAAAAAAkAAwAAAADAAEAAAAkAA0AAAACAAIAAAAkABwAAAAAAAAAAAAkAB0AAAAAAAAAAAAlAP//AAABAAAAAAAlABwAAAAAAAAAAAAlAB0AAAAAAAAAAAAmAP//AAABAAAAAAAmABwAAAAAAAAAAAAmAB0AAAAAAAAAAAAnAP//AAABAAAAAAAnABwAAAAAAAAAAAAnAB0AAAAAAAAAAAAoAP//AAABAAAAAAAoABwAAAAAAAAAAAAoAB0AAAAAAAAAAAApAP//AAABAAAAAAApABwAAAAAAAAAAAApAB0AAAAAAAAAAAAqAP//AAABAAAAAAAqABwAAAAAAAAAAAAqAB0AAAAAAAAAAAArAP//AAABAAAAAAArABwAAAAAAAAAAAArAB0AAAAAAAAAAAAsAP//AAABAAAAAAAsABwAAAAAAAAAAAAsAB0AAAAAAAAAAAAtAP//AAABAAAAAAAtABwAAAAAAAAAAAAtAB0AAAAAAAAAAAAuAP//AAABAAAAAAAuABwAAAAAAAAAAAAuAB0AAAAAAAAAAAAvAP//AAABAAAAAAAvABwAAAAAAAAAAAAvAB0AAAAAAAAAAAAwAP//AAABAAAAAAAwABwAAAAAAAAAAAAwAB0AAAAAAAAAAAAxAP//AAABAAAAAAAxABwAAAAAAAAAAAAxAB0AAAAAAAAAAAAyAP//AAABAAAAAAAyABwAAAAAAAAAAAAyAB0AAAAAAAAAAAAzAP//AAABAAAAAAAzABwAAAAAAAAAAAAzAB0AAAAAAAAAAAA0AP//AAABAAAAAAA0ABwAAAAAAAAAAAA0AB0AAAAAAAAAAAA1AP//AAABAAAAAAA1ABwAAAAAAAAAAAA1AB0AAAAAAAAAAAA2AP//AAABAAAAAAA2ABwAAAAAAAAAAAA2AB0AAAAAAAAAAAA3AP//AAABAAAAAAA3ABsAAAACAAEAAAA3ABwAAAAAAAAAAAA3AB0AAAAAAAAAAAA4AP//AAABAAAAAAA4ABoAAAACAAEAAAA4ABsAAAACAAIAAAA4ABwAAAAAAAAAAAA5AP//AAABAAAAAAA5ABkAAAACAAEAAAA5ABoAAAACAAIAAAA5ABsAAAAAAAAAAAA6AP//AAABAAAAAAA6ABkAAAACAAIAAAA6ABoAAAAAAAAAAAA7AP//AAABAAAAAAA7ABkAAAAAAAAAAAA8AP//AAABAAAAAAA8ABYAAAACAAEAAAA9AP//AAABAAAAAAA9ABUAAAACAAEAAAA9ABYAAAACAAIAAAA+AP//AAABAAAAAAA+ABQAAAACAAEAAAA+ABUAAAACAAIAAAA+ABYAAAAAAAAAAAA/AP//AAABAAAAAAA/ABMAAAACAAEAAAA/ABQAAAACAAIAAAA/ABUAAAAAAAAAAABAAP//AAABAAAAAABAABIAAAACAAEAAABAABMAAAACAAIAAABAABQAAAAAAAAAAABBAP//AAABAAAAAABBABEAAAACAAEAAABBABIAAAACAAIAAABBABMAAAAAAAAAAABCAP//AAABAAAAAABCABAAAAACAAEAAABCABEAAAACAAIAAABCABIAAAAAAAAAAABDAP//AAABAAAAAABDAA8AAAACAAEAAABDABAAAAACAAIAAABDABEAAAAAAAAAAABEAP//AAABAAAAAABEAA4AAAACAAEAAABEAA8AAAACAAIAAABEABAAAAAAAAAAAABFAP//AAABAAAAAABFAA0AAAACAAEAAABFAA4AAAACAAIAAABFAA8AAAAAAAAAAABGAP//AAABAAAAAABGAAwAAAAAAAEAAABGAA0AAAACAAIAAABGAA4AAAAAAAAAAABHAP//AAABAAAAAABHAAwAAAAAAAAAAABHAA0AAAABAAAAAABIAP//AAABAAAAAABIAAwAAAAAAAAAAABIAA0AAAABAAAAAABJAP//AAABAAAAAABJAAwAAAAAAAAAAABJAA0AAAABAAAAAABKAP//AAABAAAAAABKAAwAAAAAAAAAAABKAA0AAAABAAAAAABLAP//AAABAAAAAABLAAwAAAAAAAAAAABLAA0AAAABAAAAAABMAP//AAABAAAAAABMAAwAAAAAAAAAAABMAA0AAAABAAAAAABNAP//AAABAAAAAABNAAwAAAAAAAAAAABNAA0AAAABAAAAAABOAP//AAABAAAAAABOAAwAAAAAAAAAAABOAA0AAAABAAAAAABPAP//AAABAAAAAABPAAwAAAAAAAAAAABPAA0AAAABAAAAAABQAP//AAABAAAAAABQAAwAAAAAAAAAAABQAA0AAAABAAAAAABRAP//AAABAAAAAABRAAwAAAAAAAAAAABRAA0AAAABAAAAAABSAP//AAABAAAAAABSAAwAAAAAAAAAAABSAA0AAAABAAAAAABTAP//AAABAAAAAABTAAwAAAAAAAAAAABTAA0AAAABAAAAAABUAP//AAABAAAAAABUAAwAAAAAAAAAAABUAA0AAAABAAAAAABVAP//AAABAAAAAABVAAwAAAAAAAAAAABVAA0AAAABAAAAAABWAP//AAABAAAAAABWAAwAAAAAAAAAAABWAA0AAAABAAAAAABXAP//AAABAAAAAABXAAwAAAAAAAAAAABXAA0AAAABAAAAAABYAP//AAABAAAAAABYAAwAAAAAAAAAAABYAA0AAAABAAAAAABZAP//AAABAAAAAABZAAwAAAAAAAAAAABZAA0AAAABAAAAAABaAP//AAABAAAAAABaAAwAAAAAAAAAAABaAA0AAAABAAAAAABbAP//AAABAAAAAABbAAwAAAAAAAAAAABbAA0AAAABAAAAAABcAP//AAABAAAAAABcAAwAAAAAAAAAAABcAA0AAAABAAAAAABdAP//AAABAAAAAABdAAwAAAAAAAAAAABdAA0AAAABAAAAAABeAP//AAABAAAAAABeAAwAAAAAAAAAAABeAA0AAAABAAAAAABfAP//AAABAAAAAABfAAwAAAAAAAAAAABfAA0AAAABAAAAAABgAP//AAABAAAAAABgAAwAAAAAAAAAAABgAA0AAAABAAAAAABhAP//AAABAAAAAABhAAwAAAAAAAAAAABhAA0AAAABAAAAAABiAP//AAABAAAAAABiAAwAAAAAAAAAAABiAA0AAAABAAAAAABjAP//AAABAAAAAABjAAwAAAAAAAAAAABjAA0AAAABAAAAAAD//woAAAACAAAAAAD//wsAAAACAAAAAAD//wwAAAACAAAAAAD//w0AAAACAAAAAAD//w4AAAACAAAAAAD//w8AAAACAAAAAAD//xAAAAACAAAAAAD//xEAAAACAAAAAAD//xIAAAACAAAAAABkAAwAAAAAAAAAAABkAA0AAAABAAAAAAA=") +tile_set = SubResource("TileSet_w160a") +metadata/_edit_lock_ = true + +[node name="Player" parent="." instance=ExtResource("3_mxkfc")] +position = Vector2(88, 339) + +[node name="Light" type="Node2D" parent="."] +visible = false + +[node name="PointLight2D_1" type="PointLight2D" parent="Light"] +visible = false +position = Vector2(77, 234) +color = Color(0.299384, 0.000221401, 0.977566, 1) +energy = 6.45 +texture = SubResource("GradientTexture2D_l412j") +texture_scale = 5.0 + +[node name="PointLight2D_2" type="PointLight2D" parent="Light"] +visible = false +position = Vector2(341, 234) +color = Color(0.299384, 0.000221401, 0.977566, 1) +energy = 6.45 +texture = SubResource("GradientTexture2D_l412j") +texture_scale = 5.0 + +[node name="PointLight2D_3" type="PointLight2D" parent="Light"] +visible = false +position = Vector2(600, 234) +color = Color(0.299384, 0.000221401, 0.977566, 1) +energy = 6.45 +texture = SubResource("GradientTexture2D_l412j") +texture_scale = 5.0 + +[node name="DirectionalLight2D" type="DirectionalLight2D" parent="Light"] +visible = false +energy = 7.4 +blend_mode = 1 + +[node name="Effect_Group" type="Node" parent="." groups=["Effect_Group"]] + +[node name="Enemy_Group" type="Node" parent="."] + +[node name="0" parent="Enemy_Group" instance=ExtResource("4_ucsmj")] +position = Vector2(322, 448) + +[node name="1" parent="Enemy_Group" instance=ExtResource("4_ucsmj")] +position = Vector2(607, 448) + +[node name="2" parent="Enemy_Group" instance=ExtResource("4_ucsmj")] +position = Vector2(663, 448) + +[node name="3" parent="Enemy_Group" instance=ExtResource("4_ucsmj")] +position = Vector2(362, 195) + +[node name="4" parent="Enemy_Group" instance=ExtResource("4_ucsmj")] +position = Vector2(1303, 195) + +[node name="5" parent="Enemy_Group" instance=ExtResource("4_ucsmj")] +position = Vector2(395, 448) + +[node name="1" type="Sprite2D" parent="."] +visible = false +z_index = 5 +material = SubResource("ShaderMaterial_x3rhj") +position = Vector2(267, 412) +scale = Vector2(1.5, 1.5) +texture = ExtResource("7_qgw53") + +[node name="2" type="Sprite2D" parent="."] +visible = false +z_index = 5 +material = SubResource("ShaderMaterial_6fvd4") +position = Vector2(204, 411) +scale = Vector2(1.53, 1.53) +texture = ExtResource("8_6fvd4") diff --git a/Level/Test_Level_02.tscn b/Level/Test_Level_02.tscn new file mode 100644 index 0000000..14c15b9 --- /dev/null +++ b/Level/Test_Level_02.tscn @@ -0,0 +1,63 @@ +[gd_scene load_steps=7 format=4 uid="uid://mey2r63jur8h"] + +[ext_resource type="Texture2D" uid="uid://bj6j7q5bldm1c" path="res://Level/Tiles/Art_Group.png" id="1_jqjyl"] +[ext_resource type="Script" uid="uid://b778cjtx0rerf" path="res://Level/Tiles/tile_group.gd" id="1_whuxa"] +[ext_resource type="PackedScene" uid="uid://cqvw1nk6yco4e" path="res://Char/Char_Components/Blood/blood_stain.tscn" id="2_36cey"] + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_8k7te"] +polygon = PackedVector2Array(8, -8, 8, 8, -8, 8) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_v5yy2"] +texture = ExtResource("1_jqjyl") +use_texture_padding = false +0:0/0 = 0 +0:0/0/custom_data_0 = 1 +1:0/0 = 0 +1:0/0/custom_data_0 = 1 +2:0/0 = 0 +2:0/0/custom_data_0 = 1 +3:0/0 = 0 +3:0/0/custom_data_0 = 1 +0:1/0 = 0 +0:1/0/custom_data_0 = 1 +1:1/0 = 0 +1:1/0/custom_data_0 = 1 +2:1/0 = 0 +2:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_8k7te") +2:1/0/custom_data_0 = 1 +3:1/0 = 0 +3:1/0/custom_data_0 = 1 +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +3:2/0 = 0 + +[sub_resource type="TileSet" id="TileSet_p7xpq"] +occlusion_layer_0/light_mask = 1 +custom_data_layer_0/name = "mask_area" +custom_data_layer_0/type = 2 +sources/0 = SubResource("TileSetAtlasSource_v5yy2") + +[node name="Test_Level_02" type="Node2D" groups=["Level"]] + +[node name="Tile_Group" type="CanvasGroup" parent="." groups=["Tile_Group"]] +script = ExtResource("1_whuxa") + +[node name="View_Layer_1" type="TileMapLayer" parent="Tile_Group"] +light_mask = 2 +visibility_layer = 2 +tile_map_data = PackedByteArray("AAAEAAUAAAADAAIAAAAEAAYAAAADAAIAAAAEAAcAAAADAAIAAAAEAAgAAAADAAIAAAAEAAkAAAADAAIAAAAEAAoAAAADAAIAAAAEAAsAAAADAAIAAAAEAAwAAAADAAIAAAAEAA0AAAADAAIAAAAFAAUAAAADAAIAAAAFAAYAAAADAAIAAAAFAAcAAAADAAIAAAAFAAgAAAADAAIAAAAFAAkAAAADAAIAAAAFAAoAAAADAAIAAAAFAAsAAAADAAIAAAAFAAwAAAADAAIAAAAFAA0AAAADAAIAAAAGAAUAAAADAAIAAAAGAAYAAAADAAIAAAAGAAcAAAADAAIAAAAGAAgAAAADAAIAAAAGAAkAAAADAAIAAAAGAAoAAAADAAIAAAAGAAsAAAADAAIAAAAGAAwAAAADAAIAAAAGAA0AAAADAAIAAAAHAAUAAAADAAIAAAAHAAYAAAADAAIAAAAHAAcAAAADAAIAAAAHAAgAAAADAAIAAAAHAAkAAAADAAIAAAAHAAoAAAADAAIAAAAHAAsAAAADAAIAAAAHAAwAAAADAAIAAAAHAA0AAAADAAIAAAAIAAUAAAADAAIAAAAIAAYAAAADAAIAAAAIAAcAAAADAAIAAAAIAAgAAAADAAIAAAAIAAkAAAADAAIAAAAIAAoAAAADAAIAAAAIAAsAAAADAAIAAAAIAAwAAAADAAIAAAAIAA0AAAADAAIAAAAJAAUAAAADAAIAAAAJAAYAAAADAAIAAAAJAAcAAAADAAIAAAAJAAgAAAADAAIAAAAJAAkAAAADAAIAAAAJAAoAAAADAAIAAAAJAAsAAAADAAIAAAAJAAwAAAADAAIAAAAJAA0AAAADAAIAAAAKAAUAAAADAAIAAAAKAAYAAAADAAIAAAAKAAcAAAADAAIAAAAKAAgAAAADAAIAAAAKAAkAAAADAAIAAAAKAAoAAAADAAIAAAAKAAsAAAADAAIAAAAKAAwAAAADAAIAAAAKAA0AAAADAAIAAAALAAUAAAADAAIAAAALAAYAAAADAAIAAAALAAcAAAADAAIAAAALAAgAAAADAAIAAAALAAkAAAADAAIAAAALAAoAAAADAAIAAAALAAsAAAADAAIAAAALAAwAAAADAAIAAAALAA0AAAADAAIAAAAMAAUAAAADAAIAAAAMAAYAAAADAAIAAAAMAAcAAAADAAIAAAAMAAgAAAADAAIAAAAMAAkAAAADAAIAAAAMAAoAAAADAAIAAAAMAAsAAAADAAIAAAAMAAwAAAADAAIAAAAMAA0AAAADAAIAAAANAAUAAAADAAIAAAANAAYAAAADAAIAAAANAAcAAAADAAIAAAANAAgAAAADAAIAAAANAAkAAAADAAIAAAANAAoAAAADAAIAAAANAAsAAAADAAIAAAANAAwAAAADAAIAAAANAA0AAAADAAIAAAAOAAUAAAADAAIAAAAOAAYAAAADAAIAAAAOAAcAAAADAAIAAAAOAAgAAAADAAIAAAAOAAkAAAADAAIAAAAOAAoAAAADAAIAAAAOAAsAAAADAAIAAAAOAAwAAAADAAIAAAAOAA0AAAADAAIAAAA=") +tile_set = SubResource("TileSet_p7xpq") + +[node name="View_Layer_2" type="TileMapLayer" parent="Tile_Group"] +light_mask = 2 +visibility_layer = 2 +tile_map_data = PackedByteArray("AAAGAAgAAAABAAAAAAAGAAkAAAABAAAAAAAGAAoAAAABAAAAAAAHAAgAAAABAAAAAAAHAAkAAAABAAAAAAAHAAoAAAABAAAAAAAIAAgAAAABAAAAAAAIAAkAAAABAAAAAAAIAAoAAAABAAAAAAAKAAgAAAACAAAAAAAKAAkAAAACAAEAAAAKAAoAAAACAAAAAAALAAgAAAACAAAAAAALAAkAAAACAAAAAAALAAoAAAACAAAAAAAMAAgAAAACAAAAAAAMAAkAAAACAAAAAAAMAAoAAAACAAAAAAA=") +tile_set = SubResource("TileSet_p7xpq") + +[node name="Effect_Group" type="Node" parent="."] + +[node name="Blood_Stain_Trail" parent="Effect_Group" instance=ExtResource("2_36cey")] +position = Vector2(145, 170) + +[node name="Camera2D" type="Camera2D" parent="."] diff --git a/Level/Test_Level_03.tscn b/Level/Test_Level_03.tscn new file mode 100644 index 0000000..8d54ca1 --- /dev/null +++ b/Level/Test_Level_03.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://cwhq012x0sjb3"] + +[ext_resource type="PackedScene" uid="uid://bxhllsclvr2a7" path="res://Level/Rope/Rope.tscn" id="1_m0x3m"] +[ext_resource type="PackedScene" uid="uid://clbhclvndl73s" path="res://Char/Player/Shadow/Shadow.tscn" id="3_5oxgn"] + +[node name="Test_Level_03" type="Node2D"] + +[node name="Rope" parent="." instance=ExtResource("1_m0x3m")] +start_point = Vector2(143, 237) +end_point = Vector2(390, 236) + +[node name="Player" parent="." instance=ExtResource("3_5oxgn")] +position = Vector2(185, 99) diff --git a/Level/Tiles/Art.png.import b/Level/Tiles/Art.png.import new file mode 100644 index 0000000..f299ef2 --- /dev/null +++ b/Level/Tiles/Art.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhkwb3m7vuhjr" +path="res://.godot/imported/Art.png-8f39b27c629c9662929543d503725949.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Level/Tiles/Art.png" +dest_files=["res://.godot/imported/Art.png-8f39b27c629c9662929543d503725949.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Level/Tiles/Art_Group.png b/Level/Tiles/Art_Group.png new file mode 100644 index 0000000000000000000000000000000000000000..9a97fdd67531bd4a429fa0e1e7cc627ce0017b60 GIT binary patch literal 5706 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 literal 0 HcmV?d00001 diff --git a/Level/Tiles/Art_Group.png.import b/Level/Tiles/Art_Group.png.import new file mode 100644 index 0000000..87b1a4d --- /dev/null +++ b/Level/Tiles/Art_Group.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bj6j7q5bldm1c" +path="res://.godot/imported/Art_Group.png-60c3f6a4dbf3924f3965b93257ac85c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Level/Tiles/Art_Group.png" +dest_files=["res://.godot/imported/Art_Group.png-60c3f6a4dbf3924f3965b93257ac85c4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Level/Tiles/Physic_Group.png b/Level/Tiles/Physic_Group.png new file mode 100644 index 0000000000000000000000000000000000000000..6949b02c4a661d4d3c9d06677dadd5b2a91dcf41 GIT binary patch literal 5051 zcmc(Dhc_GE`#+kJ8WpNWsZGVI*n96;YSdP0*B((Tq$m

=jk3MpTX3MU7T9l(rNV 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 void: + tilemaplayers.clear() + for child in self.get_children(): + if child is TileMapLayer: + tilemaplayers.append(child) + +func update_mask_tiles() -> void: + mask_tiles.clear() + mask_tile_info.clear() + + for layer in tilemaplayers: + if not is_instance_valid(layer): + continue + + var used_cells = layer.get_used_cells() + for coords in used_cells: + if not is_instance_valid(layer): + break + var tile_data = layer.get_cell_tile_data(coords) + if tile_data and tile_data.get_custom_data("mask_area") == 1: + if not coords in mask_tiles: + mask_tiles.append(coords) + + # 创建新的遮罩信息 + var info = TileMaskInfo.new() + info.position = coords + + # 获取瓦片形状 + # 尝试从物理层获取形状 + var has_shape = false + for physics_layer_id in layer.tile_set.get_physics_layers_count(): + if tile_data.get_collision_polygons_count(physics_layer_id) > 0: + has_shape = true + for i in tile_data.get_collision_polygons_count(physics_layer_id): + var polygon = tile_data.get_collision_polygon_points(physics_layer_id, i) + if polygon.size() > 0: + info.shapes.append({ + "type": "polygon", + "points": polygon + }) + + # 如果没有物理形状,尝试从遮挡层获取形状 + if not has_shape: + for occlusion_layer_id in layer.tile_set.get_occlusion_layers_count(): + var occluder = tile_data.get_occluder(occlusion_layer_id) + if occluder: + var polygon = occluder.polygon + if polygon.size() > 0: + info.shapes.append({ + "type": "polygon", + "points": polygon + }) + has_shape = true + break + + # 如果都没有形状,使用默认矩形 + if not has_shape: + var tile_size = layer.tile_set.tile_size + info.shapes.append({ + "type": "rect", + "size": Vector2(tile_size) + }) + + mask_tile_info.append(info) + +func _on_tilemap_changed(): + update_mask_tiles() + # 发送信号通知所有血迹更新 + mask_tiles_updated.emit() + +func cleanup(): + for layer in tilemaplayers: + if is_instance_valid(layer) and layer.changed.is_connected(_on_tilemap_changed): + layer.changed.disconnect(_on_tilemap_changed) + tilemaplayers.clear() + mask_tiles.clear() + +func _exit_tree(): + cleanup() +#endregion diff --git a/Level/Tiles/tile_group.gd.uid b/Level/Tiles/tile_group.gd.uid new file mode 100644 index 0000000..7a388fd --- /dev/null +++ b/Level/Tiles/tile_group.gd.uid @@ -0,0 +1 @@ +uid://b778cjtx0rerf diff --git a/Level/test_level_01.gd b/Level/test_level_01.gd new file mode 100644 index 0000000..ea909ab --- /dev/null +++ b/Level/test_level_01.gd @@ -0,0 +1,18 @@ +extends Node2D # 或者extends Node,取决于你的level场景的根节点类型 + +func _ready(): + # 初始化时的设置(如果需要的话) + pass + +func _process(_delta): + # 检测是否按下重置按键 + if Input.is_action_just_pressed("Level_Reset"): + reset_level() + +func reset_level(): + # 方法1:重新加载当前场景 + get_tree().reload_current_scene() + + # 或者方法2:如果你想要更精确的控制 + # var current_scene_path = scene_file_path # 获取当前场景路径 + # get_tree().change_scene_to_file(current_scene_path) diff --git a/Level/test_level_01.gd.uid b/Level/test_level_01.gd.uid new file mode 100644 index 0000000..b4f6cd6 --- /dev/null +++ b/Level/test_level_01.gd.uid @@ -0,0 +1 @@ +uid://pbvjs78t7p4p diff --git a/Level/test_level_02.gd b/Level/test_level_02.gd new file mode 100644 index 0000000..11aa6a5 --- /dev/null +++ b/Level/test_level_02.gd @@ -0,0 +1,64 @@ +# Level.gd +extends Node2D + +# 定义一个信号来通知血迹精灵更新 +signal mask_tiles_updated + +@onready var canvas_group = $Tile_Group + +var tilemaplayers: Array[TileMapLayer] = [] +var mask_tiles: Array[Vector2i] = [] + +func _ready(): + # 获取所有的 TileMapLayer + collect_tilemaplayers() + update_mask_tiles() + # 为每个 TileMapLayer 订阅变化信号 + for layer in tilemaplayers: + layer.changed.connect(_on_tilemap_changed) + + +#region 收集所有的 TileMapLayer +func collect_tilemaplayers() -> void: + tilemaplayers.clear() + for child in canvas_group.get_children(): + if child is TileMapLayer: + tilemaplayers.append(child) + +func update_mask_tiles() -> void: + mask_tiles.clear() + + # 添加安全检查 + if not is_instance_valid(canvas_group): + return + + # 遍历每个 TileMapLayer + for layer in tilemaplayers: + # 添加安全检查 + if not is_instance_valid(layer): + continue + + var used_cells = layer.get_used_cells() + for coords in used_cells: + if not is_instance_valid(layer): # 再次检查,以防在循环中被释放 + break + var tile_data = layer.get_cell_tile_data(coords) + if tile_data and tile_data.get_custom_data("mask_area") == 1: + if not coords in mask_tiles: + mask_tiles.append(coords) + +func _on_tilemap_changed(): + update_mask_tiles() + # 发送信号通知所有血迹更新 + mask_tiles_updated.emit() + +func cleanup(): + for layer in tilemaplayers: + if is_instance_valid(layer) and layer.changed.is_connected(_on_tilemap_changed): + layer.changed.disconnect(_on_tilemap_changed) + tilemaplayers.clear() + mask_tiles.clear() + +func _exit_tree(): + cleanup() +#endregion diff --git a/Level/test_level_02.gd.uid b/Level/test_level_02.gd.uid new file mode 100644 index 0000000..0356727 --- /dev/null +++ b/Level/test_level_02.gd.uid @@ -0,0 +1 @@ +uid://c5uq6s4870730 diff --git a/Level/test_level_03.gd b/Level/test_level_03.gd new file mode 100644 index 0000000..e69de29 diff --git a/Level/test_level_03.gd.uid b/Level/test_level_03.gd.uid new file mode 100644 index 0000000..a76de57 --- /dev/null +++ b/Level/test_level_03.gd.uid @@ -0,0 +1 @@ +uid://b507sqy7f6xf5 diff --git a/UI/Art/spr_cursor_0.png b/UI/Art/spr_cursor_0.png new file mode 100644 index 0000000000000000000000000000000000000000..576f39a9b2ef08d449dc5c66c19ea7376eb41027 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!DF5-jv*f2SNj9`4jJ$`SIgK<-0}ZrThJ#h z?Fp+AWrh5?WY@{&uRZkln}x*mZ^@^7|LZMe(9_(s^p|S1cS&W6_e{O(Mzv;dZYrBT zI<(@Web(tSO*5zc3|_Tx(tV$+Oc(A%iv{}5G0T%qnf1(K=0`TkyH6hcU6NX|{;xsD z9J77d6EbH#PPy}qNpSLM?~FXnXx&x6tTzWNOZ}%Qr6M!EaCwxZm_%XXp3f)BkF;`? y=h^m8%Z=v~IiRZAR@dqM`)4HQ<4a6yZ5bzNJUqh2cF7p%BL+`bKbLh*2~7arSa?7H literal 0 HcmV?d00001 diff --git a/UI/Art/spr_cursor_0.png.import b/UI/Art/spr_cursor_0.png.import new file mode 100644 index 0000000..c8e552b --- /dev/null +++ b/UI/Art/spr_cursor_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8v4thcgqj535" +path="res://.godot/imported/spr_cursor_0.png-de01425e97d4024bd4a11094242aac07.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://UI/Art/spr_cursor_0.png" +dest_files=["res://.godot/imported/spr_cursor_0.png-de01425e97d4024bd4a11094242aac07.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..1992237 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,64 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../..//D3_v5.exe" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=true +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=true +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..1eecf77 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://03xwnbggdli" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..05ff9c1 --- /dev/null +++ b/project.godot @@ -0,0 +1,117 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="D3_v5" +run/main_scene="res://Level/Test_Level_01.tscn" +run/print_header=false +config/features=PackedStringArray("4.4", "Forward Plus") +config/icon="res://icon.svg" + +[autoload] + +TimeScreenController="*res://Autoload/time_screen_controller.gd" + +[display] + +window/size/window_width_override=1600 +window/size/window_height_override=900 +window/stretch/mode="viewport" + +[global_group] + +Player="" +FX="" +Enemy="" +After_Image="" +Level="" +Tile_Group="" +Rope="" +Effect_Group="" + +[input] + +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +Attack={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(253, 28),"global_position":Vector2(267, 98),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +Dash={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(522, 22),"global_position":Vector2(536, 92),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} +Level_Reset={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":96,"key_label":0,"unicode":183,"location":0,"echo":false,"script":null) +] +} + +[layer_names] + +2d_render/layer_1="Sky" +2d_render/layer_2="Background wall" +2d_physics/layer_1="Player" +2d_physics/layer_2="Player_Hit" +2d_physics/layer_3="Player_Hurt" +2d_physics/layer_6="Enemy" +2d_physics/layer_7="Enemy_Hit" +2d_physics/layer_8="Enemy_Hurt" +2d_physics/layer_20="Floor" +2d_physics/layer_21="One_Way_Floor" +2d_physics/layer_22="Wall" +2d_physics/layer_23="Door" +2d_physics/layer_24="Ceil" +2d_physics/layer_25="Slope" +2d_physics/layer_26="Rope" + +[physics] + +2d/default_gravity=1500.0 + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +2d/snap/snap_2d_transforms_to_pixel=true +2d/snap/snap_2d_vertices_to_pixel=true diff --git a/翻译提示词参考.txt b/翻译提示词参考.txt deleted file mode 100644 index 8aabc86..0000000 --- a/翻译提示词参考.txt +++ /dev/null @@ -1,62 +0,0 @@ -现在你要帮忙解释一篇文章成简体中文。 - -规则: -- 翻译时要准确传达学术论文的事实和背景,同时风格上保持为通俗易懂并且严谨的科普文风格。 -- 保留特定的英文术语、数字或名字,并在其前后加上空格,例如:"中 UN 文","不超过 10 秒"。 -- 即使上意译也要保留术语,例如 FLAC,JPEG 等。保留公司缩写,例如 Microsoft, Amazon 等。 -- 保留引用的论文,例如 [20] 这样的引用;同时也要保留针对图例的引用,例如保留 Figure 1 并翻译为图 1。 -- 全角括号换成半角括号,并在左括号前面加半角空格,右括号后面加半角空格。 -- 输入格式为Markdown格式,输出格式也必须保留原始Markdown格式 - - -现在有三个角色: -- 英语老师,精通英文,能精确的理解英文并用中文表达 -- 中文老师,精通中文,擅长按照中文使用喜欢撰写通俗易懂的科普文 -- 校长,精通中文和英文,擅长校对审查 - - -和步骤来翻译这篇文章,每一步都必须遵守以上规则,打印每一步的输出结果: - -Step 1:现在你是英语老师,精通英文,对原文按照字面意思直译,务必遵守原意,翻译时保持原始英文的段落结构,不要合并分段 - -Step 2:扮演中文老师,精通中文,擅长写通俗易懂的科普文章,对英语老师翻译的内容重新意译,遵守原意的前提下让内容更通俗易懂,符合中文表达习惯,但不要增加和删减内容,保持原始分段 - -Step 3: 英文老师将中文老师的文稿反向翻译成英文(回译稿) - -Step 4:扮演校长,精通中文和英文,校对回译稿和原稿中的区别,重点检查两点:翻译稿和原文有出入的位置;不符合中文表达习惯的位置; - -Step 5:中文老师基于校长的修改意见,修改初稿 - -本条消息只需要回复OK,接下来的消息我将会给你发送完整内容,收到后请按照上面的规则和下面的格式打印翻译结果,返回格式如下,"{xxx}"表示占位符: - -### 英语老师直译结果 -{英语老师直译结果} - -### 中文老师意译初稿 -{中文老师意译初稿} - -### 英语老师回译 -{英语老师回译稿} - -### 校长校对意见 - -以下是在中文翻译中缺失的部分: - -{重复以下列表,直到列出所有缺失的内容} -- 对比原文缺失或表达歧义部分{1...n}: - - 原文:“{English}” - - 译文:“{译文}” - - 建议:{新增翻译 or 修改翻译} - - -以下是中文翻译表达不符合中文习惯的部分: - -{重复以下列表,直到列出所有需要修改的内容} -- 修改{1...n}: - - 原文:“{English}” - - 译文:“{译文}” - - 建议:{修改后内容} - - -### 中文老师翻译终稿 -{中文老师翻译终稿} \ No newline at end of file