瀏覽代碼

Remake art assets of the 2D Role Playing Game demo

valentinas 2 年之前
父節點
當前提交
ed3e2a1635
共有 100 個文件被更改,包括 2490 次插入258 次删除
  1. 0 85
      2d/role_playing_game/combat/Combat.tscn
  2. 二進制
      2d/role_playing_game/combat/background/arena.png
  3. 35 0
      2d/role_playing_game/combat/background/arena.png.import
  4. 二進制
      2d/role_playing_game/combat/background/combat_background.png
  5. 35 0
      2d/role_playing_game/combat/background/combat_background.png.import
  6. 二進制
      2d/role_playing_game/combat/background/combat_shadow.png
  7. 35 0
      2d/role_playing_game/combat/background/combat_shadow.png.import
  8. 0 0
      2d/role_playing_game/combat/combat.gd
  9. 957 0
      2d/role_playing_game/combat/combat.tscn
  10. 0 0
      2d/role_playing_game/combat/combatants/combatant.gd
  11. 3 3
      2d/role_playing_game/combat/combatants/combatant.tscn
  12. 0 0
      2d/role_playing_game/combat/combatants/health.gd
  13. 1 1
      2d/role_playing_game/combat/combatants/health/health.tscn
  14. 0 0
      2d/role_playing_game/combat/combatants/opponent.gd
  15. 3 3
      2d/role_playing_game/combat/combatants/opponent.tscn
  16. 1 1
      2d/role_playing_game/combat/combatants/player.tscn
  17. 0 38
      2d/role_playing_game/combat/combatants/sprites/Sprite.tscn
  18. 二進制
      2d/role_playing_game/combat/combatants/sprites/opponent_battle.png
  19. 35 0
      2d/role_playing_game/combat/combatants/sprites/opponent_battle.png.import
  20. 二進制
      2d/role_playing_game/combat/combatants/sprites/opponent_surprised.png
  21. 35 0
      2d/role_playing_game/combat/combatants/sprites/opponent_surprised.png.import
  22. 二進制
      2d/role_playing_game/combat/combatants/sprites/player_battle.png
  23. 35 0
      2d/role_playing_game/combat/combatants/sprites/player_battle.png.import
  24. 二進制
      2d/role_playing_game/combat/combatants/sprites/player_surprised.png
  25. 35 0
      2d/role_playing_game/combat/combatants/sprites/player_surprised.png.import
  26. 二進制
      2d/role_playing_game/combat/combatants/sprites/shadow.png
  27. 71 0
      2d/role_playing_game/combat/combatants/sprites/sprite.tscn
  28. 0 43
      2d/role_playing_game/combat/interface/Info.tscn
  29. 51 0
      2d/role_playing_game/combat/interface/info.tscn
  30. 0 0
      2d/role_playing_game/combat/interface/ui.gd
  31. 0 0
      2d/role_playing_game/combat/turn_queue.gd
  32. 二進制
      2d/role_playing_game/decoration/bush.png
  33. 3 3
      2d/role_playing_game/decoration/bush.png.import
  34. 二進制
      2d/role_playing_game/decoration/flower.png
  35. 35 0
      2d/role_playing_game/decoration/flower.png.import
  36. 二進制
      2d/role_playing_game/decoration/flower_upperlevel.png
  37. 35 0
      2d/role_playing_game/decoration/flower_upperlevel.png.import
  38. 二進制
      2d/role_playing_game/decoration/flower_variant.png
  39. 35 0
      2d/role_playing_game/decoration/flower_variant.png.import
  40. 二進制
      2d/role_playing_game/decoration/flower_variant_upperlevel.png
  41. 35 0
      2d/role_playing_game/decoration/flower_variant_upperlevel.png.import
  42. 二進制
      2d/role_playing_game/decoration/grass.png
  43. 35 0
      2d/role_playing_game/decoration/grass.png.import
  44. 二進制
      2d/role_playing_game/decoration/grass_upperlevel.png
  45. 35 0
      2d/role_playing_game/decoration/grass_upperlevel.png.import
  46. 二進制
      2d/role_playing_game/decoration/grass_variant.png
  47. 35 0
      2d/role_playing_game/decoration/grass_variant.png.import
  48. 二進制
      2d/role_playing_game/decoration/grass_variant_upperlevel.png
  49. 35 0
      2d/role_playing_game/decoration/grass_variant_upperlevel.png.import
  50. 二進制
      2d/role_playing_game/decoration/pebble.png
  51. 35 0
      2d/role_playing_game/decoration/pebble.png.import
  52. 二進制
      2d/role_playing_game/decoration/pebble_variant.png
  53. 35 0
      2d/role_playing_game/decoration/pebble_variant.png.import
  54. 58 0
      2d/role_playing_game/decoration/wind_sway.tres
  55. 3 3
      2d/role_playing_game/dialogue/dialogue_data/npc.json
  56. 1 1
      2d/role_playing_game/dialogue/dialogue_data/object.json
  57. 1 1
      2d/role_playing_game/dialogue/dialogue_data/player_lose.json
  58. 1 1
      2d/role_playing_game/dialogue/dialogue_data/player_won.json
  59. 0 0
      2d/role_playing_game/dialogue/dialogue_player/dialogue_player.gd
  60. 1 1
      2d/role_playing_game/dialogue/dialogue_player/dialogue_player.tscn
  61. 0 35
      2d/role_playing_game/dialogue/interface/Interface.tscn
  62. 2 2
      2d/role_playing_game/dialogue/interface/interface.gd
  63. 55 0
      2d/role_playing_game/dialogue/interface/interface.tscn
  64. 1 1
      2d/role_playing_game/game.gd
  65. 5 7
      2d/role_playing_game/game.tscn
  66. 0 21
      2d/role_playing_game/grid_movement/Exploration.tscn
  67. 35 0
      2d/role_playing_game/grid_movement/exploration.tscn
  68. 0 0
      2d/role_playing_game/grid_movement/grid/grid.gd
  69. 二進制
      2d/role_playing_game/grid_movement/grid/lines/grid_lines.png
  70. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/actor.png
  71. 139 8
      2d/role_playing_game/grid_movement/grid/tiles/grid_tileset.tres
  72. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/ground_grass.png
  73. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/ground_grass.png.import
  74. 19 0
      2d/role_playing_game/grid_movement/grid/tiles/ground_tileset.tres
  75. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/object.png
  76. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle.png
  77. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner.png
  78. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner.png.import
  79. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_inward.png
  80. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_inward.png.import
  81. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_outward.png
  82. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_outward.png.import
  83. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_edge.png
  84. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_edge.png.import
  85. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_grass.png
  86. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_grass.png.import
  87. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall.png
  88. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall.png.import
  89. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall_corner.png
  90. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall_corner.png.import
  91. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/path_center.png
  92. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/path_center.png.import
  93. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/path_corner_noise_1.png
  94. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/path_corner_noise_1.png.import
  95. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/path_edge.png
  96. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/path_edge.png.import
  97. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/path_edge_noise_1.png
  98. 35 0
      2d/role_playing_game/grid_movement/grid/tiles/path_edge_noise_1.png.import
  99. 64 0
      2d/role_playing_game/grid_movement/grid/tiles/pathways.tres
  100. 二進制
      2d/role_playing_game/grid_movement/grid/tiles/rock.png

+ 0 - 85
2d/role_playing_game/combat/Combat.tscn

@@ -1,85 +0,0 @@
-[gd_scene load_steps=7 format=2]
-
-[ext_resource path="res://combat/Combat.gd" type="Script" id=1]
-[ext_resource path="res://combat/TurnQueue.gd" type="Script" id=2]
-[ext_resource path="res://theme/theme.tres" type="Theme" id=3]
-[ext_resource path="res://combat/interface/UI.gd" type="Script" id=4]
-[ext_resource path="res://combat/interface/Info.tscn" type="PackedScene" id=5]
-
-[sub_resource type="GDScript" id=1]
-script/source = "extends Node2D
-
-func add_combatant(new_combatant):
-	new_combatant.position.x += 200 * get_child_count()
-	add_child(new_combatant)
-"
-
-[node name="Combat" type="Node2D"]
-script = ExtResource( 1 )
-
-[node name="Combatants" type="Node2D" parent="."]
-position = Vector2( 539, 275 )
-script = SubResource( 1 )
-
-[node name="TurnQueue" type="Node" parent="."]
-script = ExtResource( 2 )
-combatants_list = NodePath("../Combatants")
-
-[node name="UI" type="Control" parent="."]
-margin_right = 1280.0
-margin_bottom = 720.0
-theme = ExtResource( 3 )
-script = ExtResource( 4 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
-combatants_node = NodePath("../Combatants")
-info_scene = ExtResource( 5 )
-
-[node name="Combatants" type="HBoxContainer" parent="UI"]
-margin_top = 77.0
-margin_right = 1280.0
-margin_bottom = 328.0
-custom_constants/separation = 360
-
-[node name="Buttons" type="PanelContainer" parent="UI"]
-margin_left = 80.0
-margin_top = 376.0
-margin_right = 1200.0
-margin_bottom = 698.0
-
-[node name="GridContainer" type="GridContainer" parent="UI/Buttons"]
-margin_left = 90.0
-margin_top = 35.0
-margin_right = 1030.0
-margin_bottom = 277.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-columns = 2
-
-[node name="Attack" type="Button" parent="UI/Buttons/GridContainer"]
-margin_right = 468.0
-margin_bottom = 119.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Attack"
-
-[node name="Defend" type="Button" parent="UI/Buttons/GridContainer"]
-margin_left = 472.0
-margin_right = 940.0
-margin_bottom = 119.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Defend"
-
-[node name="Flee" type="Button" parent="UI/Buttons/GridContainer"]
-margin_top = 123.0
-margin_right = 468.0
-margin_bottom = 242.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-text = "Flee"
-
-[connection signal="button_up" from="UI/Buttons/GridContainer/Attack" to="UI" method="_on_Attack_button_up"]
-[connection signal="button_up" from="UI/Buttons/GridContainer/Defend" to="UI" method="_on_Defend_button_up"]
-[connection signal="button_up" from="UI/Buttons/GridContainer/Flee" to="UI" method="_on_Flee_button_up"]

二進制
2d/role_playing_game/combat/background/arena.png


+ 35 - 0
2d/role_playing_game/combat/background/arena.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/arena.png-919b04dd641af4afcb81840e499b4e2a.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/background/arena.png"
+dest_files=[ "res://.import/arena.png-919b04dd641af4afcb81840e499b4e2a.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/combat/background/combat_background.png


+ 35 - 0
2d/role_playing_game/combat/background/combat_background.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/combat_background.png-e1d213c52d63ad1c23880b9332a95446.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/background/combat_background.png"
+dest_files=[ "res://.import/combat_background.png-e1d213c52d63ad1c23880b9332a95446.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/combat/background/combat_shadow.png


+ 35 - 0
2d/role_playing_game/combat/background/combat_shadow.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/combat_shadow.png-a562530b1ba28787a39b8932fc820732.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/background/combat_shadow.png"
+dest_files=[ "res://.import/combat_shadow.png-a562530b1ba28787a39b8932fc820732.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 0 - 0
2d/role_playing_game/combat/Combat.gd → 2d/role_playing_game/combat/combat.gd


+ 957 - 0
2d/role_playing_game/combat/combat.tscn

@@ -0,0 +1,957 @@
+[gd_scene load_steps=17 format=2]
+
+[ext_resource path="res://combat/combat.gd" type="Script" id=1]
+[ext_resource path="res://combat/turn_queue.gd" type="Script" id=2]
+[ext_resource path="res://theme/theme.tres" type="Theme" id=3]
+[ext_resource path="res://combat/interface/ui.gd" type="Script" id=4]
+[ext_resource path="res://combat/interface/info.tscn" type="PackedScene" id=5]
+[ext_resource path="res://combat/background/combat_background.png" type="Texture" id=6]
+[ext_resource path="res://decoration/grass.png" type="Texture" id=7]
+[ext_resource path="res://decoration/wind_sway.tres" type="Material" id=8]
+[ext_resource path="res://decoration/pebble.png" type="Texture" id=9]
+[ext_resource path="res://decoration/grass_variant.png" type="Texture" id=10]
+[ext_resource path="res://decoration/pebble_variant.png" type="Texture" id=11]
+[ext_resource path="res://combat/background/arena.png" type="Texture" id=12]
+[ext_resource path="res://combat/background/combat_shadow.png" type="Texture" id=13]
+[ext_resource path="res://decoration/flower.png" type="Texture" id=14]
+[ext_resource path="res://decoration/flower_variant.png" type="Texture" id=15]
+
+[sub_resource type="GDScript" id=1]
+script/source = "extends Node2D
+
+func add_combatant(new_combatant):
+	new_combatant.position.x += 200 * get_child_count()
+	add_child(new_combatant)
+"
+
+[node name="Combat" type="Node2D"]
+script = ExtResource( 1 )
+
+[node name="TextureRect" type="TextureRect" parent="."]
+texture = ExtResource( 6 )
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="Decoration" type="Node2D" parent="TextureRect"]
+
+[node name="Grass" type="Node2D" parent="TextureRect/Decoration"]
+position = Vector2( 0, 31 )
+
+[node name="grass1" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 154.2, 84.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass64" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 195, 84 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass2" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 28.2, 82.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass3" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 229.2, 85.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass68" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 331, 84 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass4" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 841.2, 82.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass5" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 67.2, 83.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass30" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 801.2, 84.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass31" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 309, 89 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass65" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 121, 83 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass66" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 81, 92 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass67" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 273, 86 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass6" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 476.2, 83.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass7" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1079.2, 84.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass8" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1138.2, 83.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass9" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 432.2, 83.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass10" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 563.2, 84.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass11" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1013.2, 84.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass12" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 677.2, 82.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass63" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 764, 85 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass13" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1201.2, 81.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass14" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 370.2, 88.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass32" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 903.2, 88.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass15" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 740.2, 87.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="flower4" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 710, 84 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 14 )
+
+[node name="grass60" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 635, 86 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass61" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 507, 84 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass16" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1256.2, 91.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass19" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 144, 101 )
+texture = ExtResource( 10 )
+
+[node name="grass17" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 962.2, 92.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass56" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1228, 87 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass57" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 925, 90 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass58" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1050, 88 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass59" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1167, 89 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 7 )
+
+[node name="grass20" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 519, 92 )
+texture = ExtResource( 7 )
+
+[node name="grass18" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 269, 103 )
+texture = ExtResource( 7 )
+
+[node name="grass21" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 869, 98 )
+texture = ExtResource( 10 )
+
+[node name="grass22" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 44, 105 )
+texture = ExtResource( 7 )
+
+[node name="grass69" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 201, 103 )
+texture = ExtResource( 7 )
+
+[node name="grass42" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 807, 105 )
+texture = ExtResource( 7 )
+
+[node name="grass43" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1110, 102 )
+texture = ExtResource( 10 )
+
+[node name="grass44" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 195, 117 )
+texture = ExtResource( 10 )
+
+[node name="grass45" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 999, 106 )
+texture = ExtResource( 7 )
+
+[node name="grass46" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1196, 104 )
+texture = ExtResource( 7 )
+
+[node name="grass47" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 398, 104 )
+texture = ExtResource( 10 )
+
+[node name="grass48" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1252, 123 )
+texture = ExtResource( 7 )
+
+[node name="grass49" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 332, 113 )
+texture = ExtResource( 7 )
+
+[node name="grass50" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 68, 142 )
+texture = ExtResource( 10 )
+
+[node name="grass51" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 922, 112 )
+texture = ExtResource( 10 )
+
+[node name="grass52" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 463, 110 )
+texture = ExtResource( 7 )
+
+[node name="flower2" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 755, 107 )
+texture = ExtResource( 15 )
+
+[node name="grass54" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 607.2, 90.2 )
+scale = Vector2( 0.6, 0.6 )
+texture = ExtResource( 10 )
+
+[node name="grass70" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 599, 100 )
+texture = ExtResource( 10 )
+
+[node name="grass55" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 560, 114 )
+texture = ExtResource( 7 )
+
+[node name="grass23" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1056, 112 )
+texture = ExtResource( 7 )
+
+[node name="grass24" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1042, 135 )
+texture = ExtResource( 10 )
+
+[node name="grass25" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1090, 154 )
+texture = ExtResource( 10 )
+
+[node name="grass27" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1134, 128 )
+texture = ExtResource( 7 )
+
+[node name="grass71" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 851, 128 )
+texture = ExtResource( 10 )
+
+[node name="grass72" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1193, 200 )
+texture = ExtResource( 10 )
+
+[node name="grass86" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1133, 229 )
+texture = ExtResource( 10 )
+
+[node name="grass29" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1128, 169 )
+texture = ExtResource( 7 )
+
+[node name="grass77" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 49, 173 )
+texture = ExtResource( 7 )
+
+[node name="grass33" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 693, 104 )
+texture = ExtResource( 7 )
+
+[node name="grass34" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 647, 105 )
+texture = ExtResource( 10 )
+
+[node name="grass35" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 677, 125 )
+texture = ExtResource( 10 )
+
+[node name="grass41" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 314, 132 )
+texture = ExtResource( 10 )
+
+[node name="grass36" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 391, 133 )
+texture = ExtResource( 7 )
+
+[node name="grass75" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 163, 135 )
+texture = ExtResource( 7 )
+
+[node name="flower3" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 525, 129 )
+texture = ExtResource( 14 )
+
+[node name="grass40" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 782, 126 )
+texture = ExtResource( 7 )
+
+[node name="grass38" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 612, 130 )
+texture = ExtResource( 10 )
+
+[node name="grass81" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 148, 311 )
+texture = ExtResource( 10 )
+
+[node name="grass82" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 53, 274 )
+texture = ExtResource( 10 )
+
+[node name="grass83" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 226, 274 )
+texture = ExtResource( 10 )
+
+[node name="grass85" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1271, 220 )
+texture = ExtResource( 10 )
+
+[node name="grass73" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 458, 133 )
+texture = ExtResource( 10 )
+
+[node name="grass74" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 237, 134 )
+texture = ExtResource( 10 )
+
+[node name="flower1" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 997, 143 )
+texture = ExtResource( 14 )
+
+[node name="grass76" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 109, 152 )
+texture = ExtResource( 7 )
+
+[node name="grass39" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1190, 143 )
+texture = ExtResource( 7 )
+
+[node name="grass78" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1254, 159 )
+texture = ExtResource( 7 )
+
+[node name="grass28" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 915, 146 )
+texture = ExtResource( 10 )
+
+[node name="grass80" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 311, 288 )
+texture = ExtResource( 10 )
+
+[node name="grass84" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1075, 187 )
+texture = ExtResource( 10 )
+
+[node name="grass88" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 36, 349 )
+texture = ExtResource( 10 )
+
+[node name="grass87" type="Sprite" parent="TextureRect/Decoration/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 89, 421 )
+texture = ExtResource( 10 )
+
+[node name="Pebble" type="Node2D" parent="TextureRect/Decoration"]
+
+[node name="pebble1" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 312, 481 )
+texture = ExtResource( 9 )
+
+[node name="pebble2" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 613.239, 552 )
+rotation = 1.96699
+texture = ExtResource( 9 )
+
+[node name="pebble5" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 338, 434 )
+rotation = 1.96699
+texture = ExtResource( 9 )
+
+[node name="pebble8" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 1051, 445 )
+rotation = 1.96699
+texture = ExtResource( 11 )
+
+[node name="pebble11" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 1118, 479 )
+rotation = 1.96699
+scale = Vector2( 0.630977, 0.630977 )
+texture = ExtResource( 11 )
+
+[node name="pebble14" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 804, 717 )
+rotation = 1.96699
+scale = Vector2( 0.630977, 0.630977 )
+texture = ExtResource( 11 )
+
+[node name="pebble10" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 1144, 529 )
+rotation = 3.0703
+texture = ExtResource( 11 )
+
+[node name="pebble9" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 1159, 415 )
+rotation = 1.96699
+texture = ExtResource( 11 )
+
+[node name="pebble3" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 869, 405 )
+rotation = 1.96699
+texture = ExtResource( 9 )
+
+[node name="pebble4" type="Sprite" parent="TextureRect/Decoration/Pebble"]
+position = Vector2( 596, 520 )
+rotation = -0.764454
+texture = ExtResource( 9 )
+
+[node name="arena" type="Sprite" parent="TextureRect"]
+position = Vector2( 636, 285 )
+texture = ExtResource( 12 )
+
+[node name="Decoration2" type="Node2D" parent="TextureRect"]
+
+[node name="Grass" type="Node2D" parent="TextureRect/Decoration2"]
+
+[node name="Grass1" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 39, 327 )
+texture = ExtResource( 7 )
+
+[node name="Grass34" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 182, 361 )
+texture = ExtResource( 7 )
+
+[node name="flower1" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 283, 348 )
+texture = ExtResource( 14 )
+
+[node name="flower6" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 407, 372 )
+texture = ExtResource( 15 )
+
+[node name="Grass33" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 91, 359 )
+texture = ExtResource( 7 )
+
+[node name="Grass5" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 372, 365 )
+texture = ExtResource( 7 )
+
+[node name="Grass3" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 866, 298 )
+texture = ExtResource( 7 )
+
+[node name="Grass41" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1188, 300 )
+texture = ExtResource( 7 )
+
+[node name="Grass42" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1222, 327 )
+texture = ExtResource( 7 )
+
+[node name="Grass45" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1281, 282 )
+texture = ExtResource( 7 )
+
+[node name="Grass39" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 928, 340 )
+texture = ExtResource( 7 )
+
+[node name="Grass46" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1262, 333 )
+texture = ExtResource( 7 )
+
+[node name="flower3" type="Sprite" parent="TextureRect/Decoration2/Grass/Grass46"]
+material = ExtResource( 8 )
+position = Vector2( -34, 51 )
+texture = ExtResource( 14 )
+
+[node name="Grass31" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 981, 325 )
+texture = ExtResource( 7 )
+
+[node name="Grass44" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1136, 315 )
+texture = ExtResource( 7 )
+
+[node name="Grass36" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1106, 350 )
+texture = ExtResource( 7 )
+
+[node name="Grass43" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1181, 333 )
+texture = ExtResource( 7 )
+
+[node name="Grass2" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 636, 335 )
+texture = ExtResource( 10 )
+
+[node name="Grass4" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 795, 357 )
+texture = ExtResource( 10 )
+
+[node name="flower2" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 698, 368 )
+texture = ExtResource( 14 )
+
+[node name="Grass40" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 883, 380 )
+texture = ExtResource( 10 )
+
+[node name="Grass38" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 983, 350 )
+texture = ExtResource( 10 )
+
+[node name="Grass18" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 946, 372 )
+texture = ExtResource( 10 )
+
+[node name="Grass37" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1069, 368 )
+texture = ExtResource( 10 )
+
+[node name="Grass6" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 568, 352 )
+texture = ExtResource( 7 )
+
+[node name="Grass32" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 443, 370 )
+texture = ExtResource( 7 )
+
+[node name="Grass7" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 882, 645 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass8" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 792, 690 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass26" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1115, 723 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass9" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1286, 623 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass21" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1182, 557 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass27" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1182, 557 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass48" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1184, 497 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass13" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 303, 701 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass14" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 10, 712 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass24" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 67, 731 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass16" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 59, 538 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 7 )
+
+[node name="Grass29" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 23, 552 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 7 )
+
+[node name="Grass30" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 88, 572 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 7 )
+
+[node name="Grass10" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1056, 660 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass11" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1215, 682 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass17" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1288, 449 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 10 )
+
+[node name="Grass47" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1185, 430 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 10 )
+
+[node name="Grass28" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 1267, 516 )
+scale = Vector2( 1.2, 1.2 )
+texture = ExtResource( 10 )
+
+[node name="Grass51" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 2, 595 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass15" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 383, 736 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass22" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 162, 666 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass23" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 199, 714 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass19" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 546, 701 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass25" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 616, 744 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass20" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 668, 659 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 10 )
+
+[node name="Grass12" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 988, 677 )
+scale = Vector2( 1.5, 1.5 )
+texture = ExtResource( 7 )
+
+[node name="Grass49" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 139, 379 )
+texture = ExtResource( 7 )
+
+[node name="Grass50" type="Sprite" parent="TextureRect/Decoration2/Grass"]
+material = ExtResource( 8 )
+position = Vector2( 34, 497 )
+texture = ExtResource( 7 )
+
+[node name="TextureRect" type="TextureRect" parent="TextureRect"]
+modulate = Color( 0.509804, 0.27451, 0.701961, 1 )
+margin_right = 40.0
+margin_bottom = 40.0
+texture = ExtResource( 13 )
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="Combatants" type="Node2D" parent="."]
+position = Vector2( 539, 275 )
+script = SubResource( 1 )
+
+[node name="TurnQueue" type="Node" parent="."]
+script = ExtResource( 2 )
+combatants_list = NodePath("../Combatants")
+
+[node name="UI" type="Control" parent="."]
+margin_right = 1280.0
+margin_bottom = 720.0
+theme = ExtResource( 3 )
+script = ExtResource( 4 )
+combatants_node = NodePath("../Combatants")
+info_scene = ExtResource( 5 )
+
+[node name="Combatants" type="HBoxContainer" parent="UI"]
+margin_left = 20.0
+margin_top = 77.0
+margin_right = 1260.0
+margin_bottom = 328.0
+custom_constants/separation = 360
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="Buttons" type="PanelContainer" parent="UI"]
+margin_left = 80.0
+margin_top = 376.0
+margin_right = 1200.0
+margin_bottom = 698.0
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="GridContainer" type="GridContainer" parent="UI/Buttons"]
+margin_left = 90.0
+margin_top = 25.0
+margin_right = 1030.0
+margin_bottom = 273.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+columns = 2
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="Attack" type="Button" parent="UI/Buttons/GridContainer"]
+margin_right = 468.0
+margin_bottom = 122.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+text = "Attack"
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="Defend" type="Button" parent="UI/Buttons/GridContainer"]
+margin_left = 472.0
+margin_right = 940.0
+margin_bottom = 122.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+text = "Defend"
+__meta__ = {
+"_edit_lock_": true
+}
+
+[node name="Flee" type="Button" parent="UI/Buttons/GridContainer"]
+margin_top = 126.0
+margin_right = 468.0
+margin_bottom = 248.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+text = "Flee"
+__meta__ = {
+"_edit_lock_": true
+}
+
+[connection signal="button_up" from="UI/Buttons/GridContainer/Attack" to="UI" method="_on_Attack_button_up"]
+[connection signal="button_up" from="UI/Buttons/GridContainer/Defend" to="UI" method="_on_Defend_button_up"]
+[connection signal="button_up" from="UI/Buttons/GridContainer/Flee" to="UI" method="_on_Flee_button_up"]

+ 0 - 0
2d/role_playing_game/combat/combatants/Combatant.gd → 2d/role_playing_game/combat/combatants/combatant.gd


+ 3 - 3
2d/role_playing_game/combat/combatants/Combatant.tscn → 2d/role_playing_game/combat/combatants/combatant.tscn

@@ -1,8 +1,8 @@
 [gd_scene load_steps=4 format=2]
 
-[ext_resource path="res://combat/combatants/Combatant.gd" type="Script" id=1]
-[ext_resource path="res://combat/combatants/Health.gd" type="Script" id=2]
-[ext_resource path="res://combat/combatants/sprites/Sprite.tscn" type="PackedScene" id=3]
+[ext_resource path="res://combat/combatants/combatant.gd" type="Script" id=1]
+[ext_resource path="res://combat/combatants/health.gd" type="Script" id=2]
+[ext_resource path="res://combat/combatants/sprites/sprite.tscn" type="PackedScene" id=3]
 
 [node name="Combatant" type="Node2D"]
 script = ExtResource( 1 )

+ 0 - 0
2d/role_playing_game/combat/combatants/Health.gd → 2d/role_playing_game/combat/combatants/health.gd


+ 1 - 1
2d/role_playing_game/combat/combatants/health/Health.tscn → 2d/role_playing_game/combat/combatants/health/health.tscn

@@ -1,6 +1,6 @@
 [gd_scene load_steps=2 format=2]
 
-[ext_resource path="res://combat/combatants/Health.gd" type="Script" id=1]
+[ext_resource path="res://combat/combatants/health.gd" type="Script" id=1]
 
 [node name="Health" type="Node"]
 script = ExtResource( 1 )

+ 0 - 0
2d/role_playing_game/combat/combatants/Opponent.gd → 2d/role_playing_game/combat/combatants/opponent.gd


+ 3 - 3
2d/role_playing_game/combat/combatants/Opponent.tscn → 2d/role_playing_game/combat/combatants/opponent.tscn

@@ -1,8 +1,8 @@
 [gd_scene load_steps=4 format=2]
 
-[ext_resource path="res://combat/combatants/Combatant.tscn" type="PackedScene" id=1]
-[ext_resource path="res://combat/combatants/Opponent.gd" type="Script" id=2]
-[ext_resource path="res://combat/combatants/sprites/green.png" type="Texture" id=3]
+[ext_resource path="res://combat/combatants/combatant.tscn" type="PackedScene" id=1]
+[ext_resource path="res://combat/combatants/opponent.gd" type="Script" id=2]
+[ext_resource path="res://combat/combatants/sprites/opponent_battle.png" type="Texture" id=3]
 
 [node name="Opponent" instance=ExtResource( 1 )]
 script = ExtResource( 2 )

+ 1 - 1
2d/role_playing_game/combat/combatants/Player.tscn → 2d/role_playing_game/combat/combatants/player.tscn

@@ -1,6 +1,6 @@
 [gd_scene load_steps=2 format=2]
 
-[ext_resource path="res://combat/combatants/Combatant.tscn" type="PackedScene" id=1]
+[ext_resource path="res://combat/combatants/combatant.tscn" type="PackedScene" id=1]
 
 [node name="Player" instance=ExtResource( 1 )]
 

+ 0 - 38
2d/role_playing_game/combat/combatants/sprites/Sprite.tscn

@@ -1,38 +0,0 @@
-[gd_scene load_steps=4 format=2]
-
-[ext_resource path="res://combat/combatants/sprites/shadow.png" type="Texture" id=1]
-[ext_resource path="res://combat/combatants/sprites/blue.png" type="Texture" id=2]
-
-[sub_resource type="Animation" id=1]
-resource_name = "take_damage"
-length = 0.2
-step = 0.05
-tracks/0/type = "value"
-tracks/0/path = NodePath("Pivot/Body:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/keys = {
-"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ),
-"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
-"update": 0,
-"values": [ Color( 1, 1, 1, 1 ), Color( 3, 0.253906, 0.253906, 1 ), Color( 1, 1, 1, 1 ), Color( 3, 0.253906, 0.253906, 1 ), Color( 1, 1, 1, 1 ) ]
-}
-
-[node name="Sprite" type="Node2D"]
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-anims/take_damage = SubResource( 1 )
-
-[node name="Tween" type="Tween" parent="."]
-
-[node name="Pivot" type="Position2D" parent="."]
-
-[node name="Shadow" type="Sprite" parent="Pivot"]
-position = Vector2( 0, -15 )
-texture = ExtResource( 1 )
-
-[node name="Body" type="Sprite" parent="Pivot"]
-position = Vector2( 0, -76 )
-texture = ExtResource( 2 )

二進制
2d/role_playing_game/combat/combatants/sprites/opponent_battle.png


+ 35 - 0
2d/role_playing_game/combat/combatants/sprites/opponent_battle.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/opponent_battle.png-46c0c9f46843b2e9dd16b0468ec92bc6.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/combatants/sprites/opponent_battle.png"
+dest_files=[ "res://.import/opponent_battle.png-46c0c9f46843b2e9dd16b0468ec92bc6.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/combat/combatants/sprites/opponent_surprised.png


+ 35 - 0
2d/role_playing_game/combat/combatants/sprites/opponent_surprised.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/opponent_surprised.png-2bb1b64fa7f7d9a7f2f9c2656f7ccdde.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/combatants/sprites/opponent_surprised.png"
+dest_files=[ "res://.import/opponent_surprised.png-2bb1b64fa7f7d9a7f2f9c2656f7ccdde.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/combat/combatants/sprites/player_battle.png


+ 35 - 0
2d/role_playing_game/combat/combatants/sprites/player_battle.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/player_battle.png-33da1a9c6caffd7c98bcb28c30f78624.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/combatants/sprites/player_battle.png"
+dest_files=[ "res://.import/player_battle.png-33da1a9c6caffd7c98bcb28c30f78624.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/combat/combatants/sprites/player_surprised.png


+ 35 - 0
2d/role_playing_game/combat/combatants/sprites/player_surprised.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/player_surprised.png-53024e2b01c77578b1edd8c186bb91cb.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://combat/combatants/sprites/player_surprised.png"
+dest_files=[ "res://.import/player_surprised.png-53024e2b01c77578b1edd8c186bb91cb.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/combat/combatants/sprites/shadow.png


+ 71 - 0
2d/role_playing_game/combat/combatants/sprites/sprite.tscn

@@ -0,0 +1,71 @@
+[gd_scene load_steps=5 format=2]
+
+[ext_resource path="res://combat/combatants/sprites/shadow.png" type="Texture" id=1]
+[ext_resource path="res://combat/combatants/sprites/player_battle.png" type="Texture" id=2]
+
+[sub_resource type="Animation" id=2]
+resource_name = "idle"
+length = 1.5
+loop = true
+tracks/0/type = "value"
+tracks/0/path = NodePath("Pivot/Body:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 0.2, 0.8, 1.5 ),
+"transitions": PoolRealArray( 1, 0.5, 2, 1 ),
+"update": 0,
+"values": [ Vector2( 0, -41 ), Vector2( 0, -35 ), Vector2( 0, -51 ), Vector2( 0, -41 ) ]
+}
+tracks/1/type = "value"
+tracks/1/path = NodePath("Pivot/Body:scale")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/keys = {
+"times": PoolRealArray( 0, 0.2, 0.8, 1.5 ),
+"transitions": PoolRealArray( 1, 0.5, 2, 1 ),
+"update": 0,
+"values": [ Vector2( 1, 1 ), Vector2( 1.078, 0.906 ), Vector2( 0.938, 1.156 ), Vector2( 1, 1 ) ]
+}
+
+[sub_resource type="Animation" id=1]
+resource_name = "take_damage"
+length = 0.2
+step = 0.01
+tracks/0/type = "value"
+tracks/0/path = NodePath("Pivot/Body:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ),
+"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
+"update": 0,
+"values": [ Color( 1, 1, 1, 1 ), Color( 3, 0.253906, 0.253906, 1 ), Color( 1, 1, 1, 1 ), Color( 3, 0.253906, 0.253906, 1 ), Color( 1, 1, 1, 1 ) ]
+}
+
+[node name="Sprite" type="Node2D"]
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+autoplay = "idle"
+anims/idle = SubResource( 2 )
+anims/take_damage = SubResource( 1 )
+next/take_damage = "idle"
+
+[node name="Tween" type="Tween" parent="."]
+
+[node name="Pivot" type="Position2D" parent="."]
+
+[node name="Shadow" type="Sprite" parent="Pivot"]
+modulate = Color( 0.196078, 0.0235294, 0.329412, 0.301961 )
+position = Vector2( 0, -4.44299 )
+texture = ExtResource( 1 )
+
+[node name="Body" type="Sprite" parent="Pivot"]
+position = Vector2( 0, -41 )
+texture = ExtResource( 2 )

+ 0 - 43
2d/role_playing_game/combat/interface/Info.tscn

@@ -1,43 +0,0 @@
-[gd_scene load_steps=2 format=2]
-
-[ext_resource path="res://theme/fonts/montserrat_extra_bold_48.tres" type="DynamicFont" id=1]
-
-[node name="Info" type="PanelContainer"]
-margin_right = 409.0
-margin_bottom = 239.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-margin_left = 7.0
-margin_top = 7.0
-margin_right = 402.0
-margin_bottom = 232.0
-
-[node name="Name" type="Label" parent="VBoxContainer"]
-margin_right = 395.0
-margin_bottom = 110.0
-size_flags_horizontal = 3
-size_flags_vertical = 7
-custom_colors/font_color = Color( 1, 1, 1, 1 )
-custom_colors/font_color_shadow = Color( 1, 0.596078, 0, 1 )
-custom_constants/shadow_offset_y = 5
-custom_fonts/font = ExtResource( 1 )
-text = "{name}"
-align = 1
-autowrap = true
-clip_text = true
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="Health" type="ProgressBar" parent="VBoxContainer"]
-margin_top = 168.0
-margin_right = 395.0
-margin_bottom = 170.0
-size_flags_vertical = 6
-max_value = 10.0
-step = 1.0
-value = 5.0
-rounded = true
-percent_visible = false

+ 51 - 0
2d/role_playing_game/combat/interface/info.tscn

@@ -0,0 +1,51 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://theme/fonts/montserrat_extra_bold.otf" type="DynamicFontData" id=1]
+
+[sub_resource type="DynamicFont" id=1]
+size = 42
+font_data = ExtResource( 1 )
+
+[node name="Info" type="PanelContainer"]
+margin_right = 400.0
+margin_bottom = 239.0
+rect_scale = Vector2( 0.907481, 1 )
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+margin_left = 7.0
+margin_top = 7.0
+margin_right = 393.0
+margin_bottom = 232.0
+rect_min_size = Vector2( 0, 150 )
+
+[node name="Name" type="Label" parent="VBoxContainer"]
+margin_right = 386.0
+margin_bottom = 110.0
+grow_horizontal = 2
+grow_vertical = 2
+size_flags_horizontal = 3
+size_flags_vertical = 7
+custom_colors/font_color = Color( 0.0745098, 0.27451, 0.368627, 1 )
+custom_colors/font_color_shadow = Color( 0.184314, 0.419608, 0.533333, 0.356863 )
+custom_constants/shadow_offset_x = 1
+custom_constants/shadow_offset_y = 2
+custom_fonts/font = SubResource( 1 )
+text = "{NAME}"
+align = 1
+valign = 2
+autowrap = true
+uppercase = true
+percent_visible = -0.166667
+
+[node name="Health" type="ProgressBar" parent="VBoxContainer"]
+margin_top = 168.0
+margin_right = 386.0
+margin_bottom = 170.0
+size_flags_vertical = 6
+max_value = 10.0
+step = 1.0
+value = 5.0
+rounded = true
+percent_visible = false

+ 0 - 0
2d/role_playing_game/combat/interface/UI.gd → 2d/role_playing_game/combat/interface/ui.gd


+ 0 - 0
2d/role_playing_game/combat/TurnQueue.gd → 2d/role_playing_game/combat/turn_queue.gd


二進制
2d/role_playing_game/decoration/bush.png


+ 3 - 3
2d/role_playing_game/icon.png.import → 2d/role_playing_game/decoration/bush.png.import

@@ -2,15 +2,15 @@
 
 importer="texture"
 type="StreamTexture"
-path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+path="res://.import/bush.png-badaceab15106b3b8b1876b38e37a5f0.stex"
 metadata={
 "vram_texture": false
 }
 
 [deps]
 
-source_file="res://icon.png"
-dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
+source_file="res://decoration/bush.png"
+dest_files=[ "res://.import/bush.png-badaceab15106b3b8b1876b38e37a5f0.stex" ]
 
 [params]
 

二進制
2d/role_playing_game/decoration/flower.png


+ 35 - 0
2d/role_playing_game/decoration/flower.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/flower.png-b0faa4189beb0bd78efb36b9413cfd94.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/flower.png"
+dest_files=[ "res://.import/flower.png-b0faa4189beb0bd78efb36b9413cfd94.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/flower_upperlevel.png


+ 35 - 0
2d/role_playing_game/decoration/flower_upperlevel.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/flower_upperlevel.png-9a655e8bb85233cb0e4bbf072f80b666.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/flower_upperlevel.png"
+dest_files=[ "res://.import/flower_upperlevel.png-9a655e8bb85233cb0e4bbf072f80b666.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/flower_variant.png


+ 35 - 0
2d/role_playing_game/decoration/flower_variant.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/flower_variant.png-1612f3a3bd47865cf1a3a9a2aa3cebfb.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/flower_variant.png"
+dest_files=[ "res://.import/flower_variant.png-1612f3a3bd47865cf1a3a9a2aa3cebfb.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/flower_variant_upperlevel.png


+ 35 - 0
2d/role_playing_game/decoration/flower_variant_upperlevel.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/flower_variant_upperlevel.png-6ddca563e50aa51b586a8df19c57e243.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/flower_variant_upperlevel.png"
+dest_files=[ "res://.import/flower_variant_upperlevel.png-6ddca563e50aa51b586a8df19c57e243.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/grass.png


+ 35 - 0
2d/role_playing_game/decoration/grass.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/grass.png-b79cd2011b6b34bdecc5bc7dabe727e6.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/grass.png"
+dest_files=[ "res://.import/grass.png-b79cd2011b6b34bdecc5bc7dabe727e6.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/grass_upperlevel.png


+ 35 - 0
2d/role_playing_game/decoration/grass_upperlevel.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/grass_upperlevel.png-017b0fb67df1b27635d729592ae470c8.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/grass_upperlevel.png"
+dest_files=[ "res://.import/grass_upperlevel.png-017b0fb67df1b27635d729592ae470c8.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/grass_variant.png


+ 35 - 0
2d/role_playing_game/decoration/grass_variant.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/grass_variant.png-44570ce28e7b18bc4385046552e082a1.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/grass_variant.png"
+dest_files=[ "res://.import/grass_variant.png-44570ce28e7b18bc4385046552e082a1.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/grass_variant_upperlevel.png


+ 35 - 0
2d/role_playing_game/decoration/grass_variant_upperlevel.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/grass_variant_upperlevel.png-adbfec75f772e6483eecdb21a92b60fd.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/grass_variant_upperlevel.png"
+dest_files=[ "res://.import/grass_variant_upperlevel.png-adbfec75f772e6483eecdb21a92b60fd.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/pebble.png


+ 35 - 0
2d/role_playing_game/decoration/pebble.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/pebble.png-0c8fe7fa180026a7ab3a73a4cfb1dec3.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/pebble.png"
+dest_files=[ "res://.import/pebble.png-0c8fe7fa180026a7ab3a73a4cfb1dec3.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/decoration/pebble_variant.png


+ 35 - 0
2d/role_playing_game/decoration/pebble_variant.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/pebble_variant.png-44d8978bd775c2b893f5ee8b27e87054.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://decoration/pebble_variant.png"
+dest_files=[ "res://.import/pebble_variant.png-44d8978bd775c2b893f5ee8b27e87054.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 58 - 0
2d/role_playing_game/decoration/wind_sway.tres

@@ -0,0 +1,58 @@
+[gd_resource type="ShaderMaterial" load_steps=2 format=2]
+
+[sub_resource type="Shader" id=1]
+code = "// original wind shader from https://github.com/Maujoe/godot-simple-wind-shader-2d/tree/master/assets/maujoe.simple_wind_shader_2d
+// original script modified by HungryProton so that the assets are moving differently : https://pastebin.com/VL3AfV8D
+//
+// speed - The speed of the wind movement.
+// minStrength - The minimal strength of the wind movement.
+// maxStrength - The maximal strength of the wind movement.
+// strengthScale - Scalefactor for the wind strength.
+// interval - The time between minimal and maximal strength changes.
+// detail - The detail (number of waves) of the wind movement.
+// distortion - The strength of geometry distortion.
+// heightOffset - The height where the wind begins to move. By default 0.0.
+
+shader_type canvas_item;
+render_mode blend_mix;
+
+// Wind settings.
+uniform float speed = 1.0;
+uniform float minStrength : hint_range(0.0, 1.0) = 0.05;
+uniform float maxStrength : hint_range(0.0, 1.0) = 0.01;
+uniform float strengthScale = 100.0;
+uniform float interval = 3.5;
+uniform float detail = 1.0;
+uniform float distortion : hint_range(0.0, 1.0);
+uniform float heightOffset : hint_range(0.0, 1.0);
+
+// With the offset value, you can if you want different moves for each asset. Just put a random value (1, 2, 3) in the editor. Don't forget to mark the material as unique if you use this
+uniform float offset = 0;
+
+
+float getWind(vec2 vertex, vec2 uv, float time){
+    float diff = pow(maxStrength - minStrength, 2.0);
+    float strength = clamp(minStrength + diff + sin(time / interval) * diff, minStrength, maxStrength) * strengthScale;
+    float wind = (sin(time) + cos(time * detail)) * strength * max(0.0, (1.0-uv.y) - heightOffset);
+
+    return wind;
+}
+
+void vertex() {
+    vec4 pos = WORLD_MATRIX * vec4(0.0, 0.0, 0.0, 1.0);
+    float time = TIME * speed + offset;
+    //float time = TIME * speed + pos.x * pos.y  ; not working when moving...
+    VERTEX.x += getWind(VERTEX.xy, UV, time);
+}"
+
+[resource]
+shader = SubResource( 1 )
+shader_param/speed = 1.0
+shader_param/minStrength = 0.05
+shader_param/maxStrength = 0.01
+shader_param/strengthScale = 100.0
+shader_param/interval = 3.5
+shader_param/detail = 1.0
+shader_param/distortion = null
+shader_param/heightOffset = null
+shader_param/offset = 0.0

+ 3 - 3
2d/role_playing_game/dialogue/dialogue_data/npc.json

@@ -1,5 +1,5 @@
 {
-  "dialog_1" : {"name": "Unknown", "text": "Hey, it's a good time to have a JRPG fight, right?"},
-  "dialog_2" : {"name": "Unknown", "text": "Let me introduce myself, I'm the OPPONENT"},
-  "dialog_3" : {"name": "Opponent", "text": "Enough talking. Let's fight!"},
+  "dialog_1" : {"name": "UNKNOWN", "text": "Hey, it's a good time to have a JRPG fight, right?"},
+  "dialog_2" : {"name": "UNKNOWN", "text": "Let me introduce myself, I'm your OPPONENT"},
+  "dialog_3" : {"name": "OPPONENT", "text": "Enough talking. Let's fight!"},
 }

+ 1 - 1
2d/role_playing_game/dialogue/dialogue_data/object.json

@@ -1,3 +1,3 @@
 {
-  "dialog_1" : {"name":"Player", "text":"Just some object..." }
+  "dialog_1" : {"name":"PLAYER", "text":"Just a key..." }
 }

+ 1 - 1
2d/role_playing_game/dialogue/dialogue_data/player_lose.json

@@ -1,3 +1,3 @@
 {
-  "dialog_1" : {"name": "Opponent", "text": "Aha! I won, maybe you can try again next time"}
+  "dialog_1" : {"name": "OPPONENT", "text": "Aha! I won, maybe you can try again next time"}
 }

+ 1 - 1
2d/role_playing_game/dialogue/dialogue_data/player_won.json

@@ -1,3 +1,3 @@
 {
-  "dialog_1" : {"name": "Opponent", "text": "Congratulations, you won!"}
+  "dialog_1" : {"name": "OPPONENT", "text": "Congratulations, you won!"}
 }

+ 0 - 0
2d/role_playing_game/dialogue/dialogue_player/DialoguePlayer.gd → 2d/role_playing_game/dialogue/dialogue_player/dialogue_player.gd


+ 1 - 1
2d/role_playing_game/dialogue/dialogue_player/DialoguePlayer.tscn → 2d/role_playing_game/dialogue/dialogue_player/dialogue_player.tscn

@@ -1,6 +1,6 @@
 [gd_scene load_steps=2 format=2]
 
-[ext_resource path="res://dialogue/dialogue_player/DialoguePlayer.gd" type="Script" id=1]
+[ext_resource path="res://dialogue/dialogue_player/dialogue_player.gd" type="Script" id=1]
 
 [node name="DialoguePlayer" type="Node"]
 script = ExtResource( 1 )

+ 0 - 35
2d/role_playing_game/dialogue/interface/Interface.tscn

@@ -1,35 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://theme/theme.tres" type="Theme" id=1]
-[ext_resource path="res://dialogue/interface/Interface.gd" type="Script" id=2]
-
-[node name="Dialogue" type="Panel"]
-margin_top = 544.0
-margin_right = 1280.0
-margin_bottom = 720.0
-theme = ExtResource( 1 )
-script = ExtResource( 2 )
-
-[node name="Name" type="RichTextLabel" parent="."]
-margin_left = 40.0
-margin_top = 16.0
-margin_right = 1072.0
-margin_bottom = 56.0
-text = "Name"
-scroll_active = false
-
-[node name="Text" type="RichTextLabel" parent="."]
-margin_left = 40.0
-margin_top = 64.0
-margin_right = 1064.0
-margin_bottom = 152.0
-text = "Dialogue Text"
-
-[node name="Button" type="Button" parent="."]
-margin_left = 1104.0
-margin_top = 32.0
-margin_right = 1264.0
-margin_bottom = 151.0
-text = "Next"
-
-[connection signal="button_up" from="Button" to="." method="_on_Button_button_up"]

+ 2 - 2
2d/role_playing_game/dialogue/interface/Interface.gd → 2d/role_playing_game/dialogue/interface/interface.gd

@@ -22,13 +22,13 @@ func show_dialogue(player, dialogue):
 	dialogue_node.connect("dialogue_finished", self, "hide")
 	dialogue_node.connect("dialogue_finished", self, "_on_dialogue_finished", [player])
 	dialogue_node.start_dialogue()
-	$Name.text = dialogue_node.dialogue_name
+	$Name.bbcode_text = "[center]" + dialogue_node.dialogue_name + "[/center]"
 	$Text.text = dialogue_node.dialogue_text
 
 
 func _on_Button_button_up():
 	dialogue_node.next_dialogue()
-	$Name.text = dialogue_node.dialogue_name
+	$Name.bbcode_text = "[center]" + dialogue_node.dialogue_name + "[/center]"
 	$Text.text = dialogue_node.dialogue_text
 
 

+ 55 - 0
2d/role_playing_game/dialogue/interface/interface.tscn

@@ -0,0 +1,55 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://theme/theme.tres" type="Theme" id=1]
+[ext_resource path="res://dialogue/interface/interface.gd" type="Script" id=2]
+
+[node name="Dialogue" type="Panel"]
+margin_top = 544.0
+margin_right = 1280.0
+margin_bottom = 544.0
+theme = ExtResource( 1 )
+script = ExtResource( 2 )
+
+[node name="Panel" type="Panel" parent="."]
+margin_left = 20.0
+margin_top = -60.0
+margin_right = 312.698
+margin_bottom = 82.95
+theme = ExtResource( 1 )
+theme_type_variation = "title_panel"
+
+[node name="Panel2" type="Panel" parent="."]
+margin_left = 20.0
+margin_right = 1260.0
+margin_bottom = 176.0
+
+[node name="Name" type="RichTextLabel" parent="."]
+margin_left = 51.0
+margin_top = -47.0
+margin_right = 275.0
+margin_bottom = -7.0
+custom_colors/default_color = Color( 0.0745098, 0.27451, 0.368627, 1 )
+custom_colors/font_color_shadow = Color( 0.184314, 0.419608, 0.533333, 0.356863 )
+custom_constants/shadow_offset_x = 1
+custom_constants/shadow_offset_y = 2
+bbcode_enabled = true
+bbcode_text = "[center]NAME[/center]"
+text = "NAME"
+scroll_active = false
+
+[node name="Text" type="RichTextLabel" parent="."]
+margin_left = 57.0
+margin_top = 63.0
+margin_right = 1361.0
+margin_bottom = 120.0
+rect_scale = Vector2( 0.75, 0.75 )
+text = "Dialogue Text"
+
+[node name="Button" type="Button" parent="."]
+margin_left = 1080.0
+margin_top = 17.0
+margin_right = 1240.0
+margin_bottom = 139.0
+text = "Next"
+
+[connection signal="button_up" from="Button" to="." method="_on_Button_button_up"]

+ 1 - 1
2d/role_playing_game/Game.gd → 2d/role_playing_game/game.gd

@@ -44,7 +44,7 @@ func _on_combat_finished(winner, _loser):
 	remove_child(combat_screen)
 	$AnimationPlayer.play_backwards("fade")
 	add_child(exploration_screen)
-	var dialogue = load("res://dialogue/dialogue_player/DialoguePlayer.tscn").instance()
+	var dialogue = load("res://dialogue/dialogue_player/dialogue_player.tscn").instance()
 	if winner.name == "Player":
 		dialogue.dialogue_file = PLAYER_WIN
 	else:

+ 5 - 7
2d/role_playing_game/Game.tscn → 2d/role_playing_game/game.tscn

@@ -1,8 +1,8 @@
 [gd_scene load_steps=5 format=2]
 
-[ext_resource path="res://Game.gd" type="Script" id=1]
-[ext_resource path="res://combat/Combat.tscn" type="PackedScene" id=2]
-[ext_resource path="res://grid_movement/Exploration.tscn" type="PackedScene" id=3]
+[ext_resource path="res://game.gd" type="Script" id=1]
+[ext_resource path="res://combat/combat.tscn" type="PackedScene" id=2]
+[ext_resource path="res://grid_movement/exploration.tscn" type="PackedScene" id=3]
 
 [sub_resource type="Animation" id=1]
 length = 0.5
@@ -30,13 +30,11 @@ anims/fade = SubResource( 1 )
 [node name="Transition" type="CanvasLayer" parent="."]
 
 [node name="ColorRect" type="ColorRect" parent="Transition"]
+visible = false
 anchor_right = 1.0
 anchor_bottom = 1.0
 mouse_filter = 1
-color = Color( 0.0703125, 0.0703125, 0.0703125, 0 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
+color = Color( 0.0703125, 0.0703125, 0.0703125, 1 )
 
 [node name="Combat" parent="." instance=ExtResource( 2 )]
 visible = false

文件差異過大導致無法顯示
+ 0 - 21
2d/role_playing_game/grid_movement/Exploration.tscn


文件差異過大導致無法顯示
+ 35 - 0
2d/role_playing_game/grid_movement/exploration.tscn


+ 0 - 0
2d/role_playing_game/grid_movement/grid/Grid.gd → 2d/role_playing_game/grid_movement/grid/grid.gd


二進制
2d/role_playing_game/grid_movement/grid/lines/grid_lines.png


二進制
2d/role_playing_game/grid_movement/grid/tiles/actor.png


+ 139 - 8
2d/role_playing_game/grid_movement/grid/tiles/grid_tileset.tres

@@ -1,38 +1,169 @@
-[gd_resource type="TileSet" load_steps=4 format=2]
+[gd_resource type="TileSet" load_steps=12 format=2]
 
 [ext_resource path="res://grid_movement/grid/tiles/actor.png" type="Texture" id=1]
 [ext_resource path="res://grid_movement/grid/tiles/obstacle.png" type="Texture" id=2]
 [ext_resource path="res://grid_movement/grid/tiles/object.png" type="Texture" id=3]
-
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_grass.png" type="Texture" id=4]
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_corner.png" type="Texture" id=5]
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_corner_inward.png" type="Texture" id=6]
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_edge.png" type="Texture" id=7]
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_wall.png" type="Texture" id=8]
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_wall_corner.png" type="Texture" id=9]
+[ext_resource path="res://grid_movement/grid/tiles/obstacle_corner_outward.png" type="Texture" id=10]
+[ext_resource path="res://grid_movement/grid/tiles/rock.png" type="Texture" id=11]
 
 [resource]
-
 0/name = "Actor"
 0/texture = ExtResource( 1 )
 0/tex_offset = Vector2( 0, 0 )
 0/modulate = Color( 1, 1, 1, 1 )
 0/region = Rect2( 0, 0, 64, 64 )
-0/is_autotile = false
+0/tile_mode = 0
 0/occluder_offset = Vector2( 32, 32 )
 0/navigation_offset = Vector2( 32, 32 )
+0/shape_offset = Vector2( 0, 0 )
+0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+0/shape_one_way = false
+0/shape_one_way_margin = 0.0
 0/shapes = [  ]
+0/z_index = 0
 1/name = "Obstacle"
 1/texture = ExtResource( 2 )
 1/tex_offset = Vector2( 0, 0 )
 1/modulate = Color( 1, 1, 1, 1 )
 1/region = Rect2( 0, 0, 64, 64 )
-1/is_autotile = false
+1/tile_mode = 0
 1/occluder_offset = Vector2( 32, 32 )
 1/navigation_offset = Vector2( 32, 32 )
+1/shape_offset = Vector2( 0, 0 )
+1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+1/shape_one_way = false
+1/shape_one_way_margin = 0.0
 1/shapes = [  ]
+1/z_index = 0
 2/name = "Object"
 2/texture = ExtResource( 3 )
 2/tex_offset = Vector2( 0, 0 )
 2/modulate = Color( 1, 1, 1, 1 )
 2/region = Rect2( 0, 0, 64, 64 )
-2/is_autotile = false
+2/tile_mode = 0
 2/occluder_offset = Vector2( 32, 32 )
 2/navigation_offset = Vector2( 32, 32 )
+2/shape_offset = Vector2( 0, 0 )
+2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+2/shape_one_way = false
+2/shape_one_way_margin = 0.0
 2/shapes = [  ]
-_sections_unfolded = [ "0", "1" ]
-
+2/z_index = 0
+3/name = "obstacle_grass.png 3"
+3/texture = ExtResource( 4 )
+3/tex_offset = Vector2( 0, 0 )
+3/modulate = Color( 1, 1, 1, 1 )
+3/region = Rect2( 0, 0, 64, 64 )
+3/tile_mode = 0
+3/occluder_offset = Vector2( 32, 32 )
+3/navigation_offset = Vector2( 32, 32 )
+3/shape_offset = Vector2( 0, 0 )
+3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+3/shape_one_way = false
+3/shape_one_way_margin = 0.0
+3/shapes = [  ]
+3/z_index = 0
+4/name = "obstacle_corner.png 4"
+4/texture = ExtResource( 5 )
+4/tex_offset = Vector2( 0, 0 )
+4/modulate = Color( 1, 1, 1, 1 )
+4/region = Rect2( 0, 0, 64, 64 )
+4/tile_mode = 0
+4/occluder_offset = Vector2( 0, 0 )
+4/navigation_offset = Vector2( 0, 0 )
+4/shape_offset = Vector2( 0, 0 )
+4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+4/shape_one_way = false
+4/shape_one_way_margin = 0.0
+4/shapes = [  ]
+4/z_index = 0
+5/name = "obstacle_edge.png 5"
+5/texture = ExtResource( 7 )
+5/tex_offset = Vector2( 0, 0 )
+5/modulate = Color( 1, 1, 1, 1 )
+5/region = Rect2( 0, 0, 64, 64 )
+5/tile_mode = 0
+5/occluder_offset = Vector2( 0, 0 )
+5/navigation_offset = Vector2( 0, 0 )
+5/shape_offset = Vector2( 0, 0 )
+5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+5/shape_one_way = false
+5/shape_one_way_margin = 0.0
+5/shapes = [  ]
+5/z_index = 0
+6/name = "obstacle_corner_inward.png 6"
+6/texture = ExtResource( 6 )
+6/tex_offset = Vector2( 0, 0 )
+6/modulate = Color( 1, 1, 1, 1 )
+6/region = Rect2( 0, 0, 64, 64 )
+6/tile_mode = 0
+6/occluder_offset = Vector2( 0, 0 )
+6/navigation_offset = Vector2( 0, 0 )
+6/shape_offset = Vector2( 0, 0 )
+6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+6/shape_one_way = false
+6/shape_one_way_margin = 0.0
+6/shapes = [  ]
+6/z_index = 0
+7/name = "obstacle_wall.png 7"
+7/texture = ExtResource( 8 )
+7/tex_offset = Vector2( 0, 0 )
+7/modulate = Color( 1, 1, 1, 1 )
+7/region = Rect2( 0, 0, 64, 64 )
+7/tile_mode = 0
+7/occluder_offset = Vector2( 0, 0 )
+7/navigation_offset = Vector2( 0, 0 )
+7/shape_offset = Vector2( 0, 0 )
+7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+7/shape_one_way = false
+7/shape_one_way_margin = 0.0
+7/shapes = [  ]
+7/z_index = 0
+8/name = "obstacle_wall_corner.png 8"
+8/texture = ExtResource( 9 )
+8/tex_offset = Vector2( 0, 0 )
+8/modulate = Color( 1, 1, 1, 1 )
+8/region = Rect2( 0, 0, 64, 64 )
+8/tile_mode = 0
+8/occluder_offset = Vector2( 0, 0 )
+8/navigation_offset = Vector2( 0, 0 )
+8/shape_offset = Vector2( 0, 0 )
+8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+8/shape_one_way = false
+8/shape_one_way_margin = 0.0
+8/shapes = [  ]
+8/z_index = 0
+9/name = "obstacle_corner_outward.png 9"
+9/texture = ExtResource( 10 )
+9/tex_offset = Vector2( 0, 0 )
+9/modulate = Color( 1, 1, 1, 1 )
+9/region = Rect2( 0, 0, 64, 64 )
+9/tile_mode = 0
+9/occluder_offset = Vector2( 0, 0 )
+9/navigation_offset = Vector2( 0, 0 )
+9/shape_offset = Vector2( 0, 0 )
+9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+9/shape_one_way = false
+9/shape_one_way_margin = 0.0
+9/shapes = [  ]
+9/z_index = 0
+10/name = "rock.png 10"
+10/texture = ExtResource( 11 )
+10/tex_offset = Vector2( 0, 0 )
+10/modulate = Color( 1, 1, 1, 1 )
+10/region = Rect2( 0, 0, 64, 64 )
+10/tile_mode = 0
+10/occluder_offset = Vector2( 0, 0 )
+10/navigation_offset = Vector2( 0, 0 )
+10/shape_offset = Vector2( 0, 0 )
+10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+10/shape_one_way = false
+10/shape_one_way_margin = 0.0
+10/shapes = [  ]
+10/z_index = 0

二進制
2d/role_playing_game/grid_movement/grid/tiles/ground_grass.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/ground_grass.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/ground_grass.png-2525df9b7f0819336cc85d6f50c79131.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/ground_grass.png"
+dest_files=[ "res://.import/ground_grass.png-2525df9b7f0819336cc85d6f50c79131.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 19 - 0
2d/role_playing_game/grid_movement/grid/tiles/ground_tileset.tres

@@ -0,0 +1,19 @@
+[gd_resource type="TileSet" load_steps=2 format=2]
+
+[ext_resource path="res://grid_movement/grid/tiles/ground_grass.png" type="Texture" id=1]
+
+[resource]
+0/name = "ground_grass.png 0"
+0/texture = ExtResource( 1 )
+0/tex_offset = Vector2( 0, 0 )
+0/modulate = Color( 1, 1, 1, 1 )
+0/region = Rect2( 0, 0, 64, 64 )
+0/tile_mode = 0
+0/occluder_offset = Vector2( 0, 0 )
+0/navigation_offset = Vector2( 0, 0 )
+0/shape_offset = Vector2( 0, 0 )
+0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+0/shape_one_way = false
+0/shape_one_way_margin = 0.0
+0/shapes = [  ]
+0/z_index = 0

二進制
2d/role_playing_game/grid_movement/grid/tiles/object.png


二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle.png


二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_corner.png-5a6a07b2e4e26b83f79bf11913c58b46.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_corner.png"
+dest_files=[ "res://.import/obstacle_corner.png-5a6a07b2e4e26b83f79bf11913c58b46.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_inward.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_inward.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_corner_inward.png-ae9dfb7329f400d4eab8ebdebf0c028e.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_corner_inward.png"
+dest_files=[ "res://.import/obstacle_corner_inward.png-ae9dfb7329f400d4eab8ebdebf0c028e.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_outward.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_corner_outward.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_corner_outward.png-26568c35dc0aaf8e2569a1c6d8f60788.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_corner_outward.png"
+dest_files=[ "res://.import/obstacle_corner_outward.png-26568c35dc0aaf8e2569a1c6d8f60788.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_edge.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_edge.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_edge.png-35c6b1f8a752a3d06a9a2ec43aa9c1b2.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_edge.png"
+dest_files=[ "res://.import/obstacle_edge.png-35c6b1f8a752a3d06a9a2ec43aa9c1b2.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_grass.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_grass.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_grass.png-7acf77894cd35d85e74c52dcce95e269.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_grass.png"
+dest_files=[ "res://.import/obstacle_grass.png-7acf77894cd35d85e74c52dcce95e269.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_wall.png-86ae11569f78483cbbea14ece802cf10.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_wall.png"
+dest_files=[ "res://.import/obstacle_wall.png-86ae11569f78483cbbea14ece802cf10.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall_corner.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/obstacle_wall_corner.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/obstacle_wall_corner.png-fc631054bed7d39ffd1ab18f9cb8b9b5.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/obstacle_wall_corner.png"
+dest_files=[ "res://.import/obstacle_wall_corner.png-fc631054bed7d39ffd1ab18f9cb8b9b5.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/path_center.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/path_center.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/path_center.png-a130748a4c40a635847b2f54a13139a6.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/path_center.png"
+dest_files=[ "res://.import/path_center.png-a130748a4c40a635847b2f54a13139a6.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/path_corner_noise_1.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/path_corner_noise_1.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/path_corner_noise_1.png-79839308b7ebf470d6d3620eaa17d7e2.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/path_corner_noise_1.png"
+dest_files=[ "res://.import/path_corner_noise_1.png-79839308b7ebf470d6d3620eaa17d7e2.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/path_edge.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/path_edge.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/path_edge.png-20e18c04ebe2b8036fc712942a42593b.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/path_edge.png"
+dest_files=[ "res://.import/path_edge.png-20e18c04ebe2b8036fc712942a42593b.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

二進制
2d/role_playing_game/grid_movement/grid/tiles/path_edge_noise_1.png


+ 35 - 0
2d/role_playing_game/grid_movement/grid/tiles/path_edge_noise_1.png.import

@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/path_edge_noise_1.png-ef23e2e4920302f4b1ac3ea6a3cbe0a8.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://grid_movement/grid/tiles/path_edge_noise_1.png"
+dest_files=[ "res://.import/path_edge_noise_1.png-ef23e2e4920302f4b1ac3ea6a3cbe0a8.stex" ]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_mode=0
+compress/bptc_ldr=0
+compress/normal_map=0
+flags/repeat=0
+flags/filter=true
+flags/mipmaps=false
+flags/anisotropic=false
+flags/srgb=2
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/HDR_as_SRGB=false
+process/invert_color=false
+process/normal_map_invert_y=false
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0

+ 64 - 0
2d/role_playing_game/grid_movement/grid/tiles/pathways.tres

@@ -0,0 +1,64 @@
+[gd_resource type="TileSet" load_steps=5 format=2]
+
+[ext_resource path="res://grid_movement/grid/tiles/path_edge.png" type="Texture" id=1]
+[ext_resource path="res://grid_movement/grid/tiles/path_center.png" type="Texture" id=2]
+[ext_resource path="res://grid_movement/grid/tiles/path_edge_noise_1.png" type="Texture" id=3]
+[ext_resource path="res://grid_movement/grid/tiles/path_corner_noise_1.png" type="Texture" id=4]
+
+[resource]
+0/name = "path_edge.png 0"
+0/texture = ExtResource( 1 )
+0/tex_offset = Vector2( 0, 0 )
+0/modulate = Color( 1, 1, 1, 1 )
+0/region = Rect2( 0, 0, 64, 64 )
+0/tile_mode = 0
+0/occluder_offset = Vector2( 0, 0 )
+0/navigation_offset = Vector2( 0, 0 )
+0/shape_offset = Vector2( 0, 0 )
+0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+0/shape_one_way = false
+0/shape_one_way_margin = 0.0
+0/shapes = [  ]
+0/z_index = 0
+1/name = "path_edge_noise_1.png 1"
+1/texture = ExtResource( 3 )
+1/tex_offset = Vector2( 0, 0 )
+1/modulate = Color( 1, 1, 1, 1 )
+1/region = Rect2( 0, 0, 64, 64 )
+1/tile_mode = 0
+1/occluder_offset = Vector2( 0, 0 )
+1/navigation_offset = Vector2( 0, 0 )
+1/shape_offset = Vector2( 0, 0 )
+1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+1/shape_one_way = false
+1/shape_one_way_margin = 0.0
+1/shapes = [  ]
+1/z_index = 0
+2/name = "path_center.png 2"
+2/texture = ExtResource( 2 )
+2/tex_offset = Vector2( 0, 0 )
+2/modulate = Color( 1, 1, 1, 1 )
+2/region = Rect2( 0, 0, 64, 64 )
+2/tile_mode = 0
+2/occluder_offset = Vector2( 0, 0 )
+2/navigation_offset = Vector2( 0, 0 )
+2/shape_offset = Vector2( 0, 0 )
+2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+2/shape_one_way = false
+2/shape_one_way_margin = 0.0
+2/shapes = [  ]
+2/z_index = 0
+3/name = "path_corner_noise_1.png 3"
+3/texture = ExtResource( 4 )
+3/tex_offset = Vector2( 0, 0 )
+3/modulate = Color( 1, 1, 1, 1 )
+3/region = Rect2( 0, 0, 64, 64 )
+3/tile_mode = 0
+3/occluder_offset = Vector2( 0, 0 )
+3/navigation_offset = Vector2( 0, 0 )
+3/shape_offset = Vector2( 0, 0 )
+3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
+3/shape_one_way = false
+3/shape_one_way_margin = 0.0
+3/shapes = [  ]
+3/z_index = 0

二進制
2d/role_playing_game/grid_movement/grid/tiles/rock.png


部分文件因文件數量過多而無法顯示