BooBuddies.tscn 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. [gd_scene load_steps=16 format=3 uid="uid://coasuq2vsmlce"]
  2. [ext_resource type="Texture2D" uid="uid://c3l6ynlufxcfp" path="res://Assets/Sprites/Enemies/Boo.png" id="1_bek6j"]
  3. [ext_resource type="Script" uid="uid://djdtghrjbpv2i" path="res://Scripts/Classes/Entities/Enemies/BooBuddies.gd" id="1_vavt3"]
  4. [ext_resource type="Texture2D" uid="uid://dsncqqhfsnq6s" path="res://Assets/Sprites/Editor/RotationIcon.png" id="2_1eh5v"]
  5. [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="2_vavt3"]
  6. [ext_resource type="Script" uid="uid://cpwloakvp672a" path="res://Scripts/Parts/EditorVisibleNode.gd" id="3_5b8ig"]
  7. [ext_resource type="Script" uid="uid://cq6f682453q6o" path="res://Scripts/Classes/Components/ResourceSetter.gd" id="4_4rg7w"]
  8. [ext_resource type="Resource" uid="uid://c8ojbqg4q4qh6" path="res://Resources/ThemedResources/EditorRotationIcon.tres" id="5_4rg7w"]
  9. [ext_resource type="Script" uid="uid://ctfbuoxtnnl0q" path="res://Scripts/Classes/Components/EditorPropertyExposer.gd" id="6_5b8ig"]
  10. [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="8_ifdhg"]
  11. [ext_resource type="JSON" path="res://Assets/Sprites/Enemies/BooBuddy.json" id="9_ifdhg"]
  12. [sub_resource type="AtlasTexture" id="AtlasTexture_7u2yg"]
  13. atlas = ExtResource("1_bek6j")
  14. region = Rect2(16, 0, 16, 16)
  15. [sub_resource type="AtlasTexture" id="AtlasTexture_wu7y3"]
  16. atlas = ExtResource("1_bek6j")
  17. region = Rect2(0, 0, 16, 16)
  18. [sub_resource type="SpriteFrames" id="SpriteFrames_8qb0a"]
  19. animations = [{
  20. "frames": [{
  21. "duration": 1.0,
  22. "texture": SubResource("AtlasTexture_7u2yg")
  23. }],
  24. "loop": true,
  25. "name": &"Hide",
  26. "speed": 5.0
  27. }, {
  28. "frames": [{
  29. "duration": 1.0,
  30. "texture": SubResource("AtlasTexture_wu7y3")
  31. }],
  32. "loop": true,
  33. "name": &"WhiteMove",
  34. "speed": 5.0
  35. }]
  36. [sub_resource type="RectangleShape2D" id="RectangleShape2D_1eh5v"]
  37. size = Vector2(12, 12)
  38. [sub_resource type="GDScript" id="GDScript_vavt3"]
  39. script/source = "extends Node
  40. var length := 80
  41. func _physics_process(delta: float) -> void:
  42. var idx := 0
  43. var spread = 30
  44. length = owner.length
  45. %RotationJoint.flip_h = owner.direction == 1
  46. if owner.spread_boos:
  47. spread = (360 / owner.boo_amount)
  48. for i in %Boos.get_children():
  49. i.show()
  50. if idx < owner.boo_amount:
  51. i.global_position = owner.global_position + Vector2.from_angle(deg_to_rad(%RotationJoint.global_rotation_degrees + (spread * idx))).normalized() * length
  52. else:
  53. i.global_position = Vector2(-999, 999)
  54. idx += 1
  55. "
  56. [node name="BooBuddies" type="Node2D" groups=["Enemies"]]
  57. script = ExtResource("1_vavt3")
  58. [node name="RotationJoint" type="Sprite2D" parent="."]
  59. unique_name_in_owner = true
  60. z_index = 50
  61. z_as_relative = false
  62. texture = ExtResource("2_1eh5v")
  63. script = ExtResource("3_5b8ig")
  64. [node name="ResourceSetter" type="Node" parent="RotationJoint" node_paths=PackedStringArray("node_to_affect")]
  65. script = ExtResource("4_4rg7w")
  66. node_to_affect = NodePath("..")
  67. property_name = "texture"
  68. themed_resource = ExtResource("5_4rg7w")
  69. metadata/_custom_type_script = "uid://cq6f682453q6o"
  70. [node name="Boos" type="Node2D" parent="."]
  71. unique_name_in_owner = true
  72. [node name="Boo1" type="Node2D" parent="Boos"]
  73. visible = false
  74. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo1"]
  75. sprite_frames = SubResource("SpriteFrames_8qb0a")
  76. animation = &"WhiteMove"
  77. autoplay = "WhiteMove"
  78. flip_h = true
  79. script = ExtResource("2_vavt3")
  80. do_offset = false
  81. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  82. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo1/Sprite" node_paths=PackedStringArray("node_to_affect")]
  83. script = ExtResource("8_ifdhg")
  84. node_to_affect = NodePath("..")
  85. property_name = "sprite_frames"
  86. resource_json = ExtResource("9_ifdhg")
  87. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  88. [node name="Hitbox" type="Area2D" parent="Boos/Boo1"]
  89. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo1/Hitbox"]
  90. shape = SubResource("RectangleShape2D_1eh5v")
  91. [node name="Boo2" type="Node2D" parent="Boos"]
  92. visible = false
  93. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo2"]
  94. sprite_frames = SubResource("SpriteFrames_8qb0a")
  95. animation = &"WhiteMove"
  96. autoplay = "WhiteMove"
  97. flip_h = true
  98. script = ExtResource("2_vavt3")
  99. do_offset = false
  100. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  101. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo2/Sprite" node_paths=PackedStringArray("node_to_affect")]
  102. script = ExtResource("8_ifdhg")
  103. node_to_affect = NodePath("..")
  104. property_name = "sprite_frames"
  105. resource_json = ExtResource("9_ifdhg")
  106. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  107. [node name="Hitbox" type="Area2D" parent="Boos/Boo2"]
  108. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo2/Hitbox"]
  109. shape = SubResource("RectangleShape2D_1eh5v")
  110. [node name="Boo3" type="Node2D" parent="Boos"]
  111. visible = false
  112. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo3"]
  113. sprite_frames = SubResource("SpriteFrames_8qb0a")
  114. animation = &"WhiteMove"
  115. autoplay = "WhiteMove"
  116. flip_h = true
  117. script = ExtResource("2_vavt3")
  118. do_offset = false
  119. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  120. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo3/Sprite" node_paths=PackedStringArray("node_to_affect")]
  121. script = ExtResource("8_ifdhg")
  122. node_to_affect = NodePath("..")
  123. property_name = "sprite_frames"
  124. resource_json = ExtResource("9_ifdhg")
  125. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  126. [node name="Hitbox" type="Area2D" parent="Boos/Boo3"]
  127. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo3/Hitbox"]
  128. shape = SubResource("RectangleShape2D_1eh5v")
  129. [node name="Boo4" type="Node2D" parent="Boos"]
  130. visible = false
  131. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo4"]
  132. sprite_frames = SubResource("SpriteFrames_8qb0a")
  133. animation = &"WhiteMove"
  134. autoplay = "WhiteMove"
  135. flip_h = true
  136. script = ExtResource("2_vavt3")
  137. do_offset = false
  138. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  139. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo4/Sprite" node_paths=PackedStringArray("node_to_affect")]
  140. script = ExtResource("8_ifdhg")
  141. node_to_affect = NodePath("..")
  142. property_name = "sprite_frames"
  143. resource_json = ExtResource("9_ifdhg")
  144. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  145. [node name="Hitbox" type="Area2D" parent="Boos/Boo4"]
  146. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo4/Hitbox"]
  147. shape = SubResource("RectangleShape2D_1eh5v")
  148. [node name="Boo5" type="Node2D" parent="Boos"]
  149. visible = false
  150. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo5"]
  151. sprite_frames = SubResource("SpriteFrames_8qb0a")
  152. animation = &"WhiteMove"
  153. autoplay = "WhiteMove"
  154. flip_h = true
  155. script = ExtResource("2_vavt3")
  156. do_offset = false
  157. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  158. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo5/Sprite" node_paths=PackedStringArray("node_to_affect")]
  159. script = ExtResource("8_ifdhg")
  160. node_to_affect = NodePath("..")
  161. property_name = "sprite_frames"
  162. resource_json = ExtResource("9_ifdhg")
  163. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  164. [node name="Hitbox" type="Area2D" parent="Boos/Boo5"]
  165. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo5/Hitbox"]
  166. shape = SubResource("RectangleShape2D_1eh5v")
  167. [node name="Boo6" type="Node2D" parent="Boos"]
  168. visible = false
  169. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo6"]
  170. sprite_frames = SubResource("SpriteFrames_8qb0a")
  171. animation = &"WhiteMove"
  172. autoplay = "WhiteMove"
  173. flip_h = true
  174. script = ExtResource("2_vavt3")
  175. do_offset = false
  176. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  177. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo6/Sprite" node_paths=PackedStringArray("node_to_affect")]
  178. script = ExtResource("8_ifdhg")
  179. node_to_affect = NodePath("..")
  180. property_name = "sprite_frames"
  181. resource_json = ExtResource("9_ifdhg")
  182. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  183. [node name="Hitbox" type="Area2D" parent="Boos/Boo6"]
  184. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo6/Hitbox"]
  185. shape = SubResource("RectangleShape2D_1eh5v")
  186. [node name="Boo7" type="Node2D" parent="Boos"]
  187. visible = false
  188. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo7"]
  189. sprite_frames = SubResource("SpriteFrames_8qb0a")
  190. animation = &"WhiteMove"
  191. autoplay = "WhiteMove"
  192. flip_h = true
  193. script = ExtResource("2_vavt3")
  194. do_offset = false
  195. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  196. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo7/Sprite" node_paths=PackedStringArray("node_to_affect")]
  197. script = ExtResource("8_ifdhg")
  198. node_to_affect = NodePath("..")
  199. property_name = "sprite_frames"
  200. resource_json = ExtResource("9_ifdhg")
  201. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  202. [node name="Hitbox" type="Area2D" parent="Boos/Boo7"]
  203. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo7/Hitbox"]
  204. shape = SubResource("RectangleShape2D_1eh5v")
  205. [node name="Boo8" type="Node2D" parent="Boos"]
  206. visible = false
  207. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo8"]
  208. sprite_frames = SubResource("SpriteFrames_8qb0a")
  209. animation = &"WhiteMove"
  210. autoplay = "WhiteMove"
  211. flip_h = true
  212. script = ExtResource("2_vavt3")
  213. do_offset = false
  214. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  215. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo8/Sprite" node_paths=PackedStringArray("node_to_affect")]
  216. script = ExtResource("8_ifdhg")
  217. node_to_affect = NodePath("..")
  218. property_name = "sprite_frames"
  219. resource_json = ExtResource("9_ifdhg")
  220. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  221. [node name="Hitbox" type="Area2D" parent="Boos/Boo8"]
  222. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo8/Hitbox"]
  223. shape = SubResource("RectangleShape2D_1eh5v")
  224. [node name="Boo9" type="Node2D" parent="Boos"]
  225. visible = false
  226. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo9"]
  227. sprite_frames = SubResource("SpriteFrames_8qb0a")
  228. animation = &"WhiteMove"
  229. autoplay = "WhiteMove"
  230. flip_h = true
  231. script = ExtResource("2_vavt3")
  232. do_offset = false
  233. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  234. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo9/Sprite" node_paths=PackedStringArray("node_to_affect")]
  235. script = ExtResource("8_ifdhg")
  236. node_to_affect = NodePath("..")
  237. property_name = "sprite_frames"
  238. resource_json = ExtResource("9_ifdhg")
  239. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  240. [node name="Hitbox" type="Area2D" parent="Boos/Boo9"]
  241. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo9/Hitbox"]
  242. shape = SubResource("RectangleShape2D_1eh5v")
  243. [node name="Boo10" type="Node2D" parent="Boos"]
  244. visible = false
  245. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo10"]
  246. sprite_frames = SubResource("SpriteFrames_8qb0a")
  247. animation = &"WhiteMove"
  248. autoplay = "WhiteMove"
  249. flip_h = true
  250. script = ExtResource("2_vavt3")
  251. do_offset = false
  252. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  253. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo10/Sprite" node_paths=PackedStringArray("node_to_affect")]
  254. script = ExtResource("8_ifdhg")
  255. node_to_affect = NodePath("..")
  256. property_name = "sprite_frames"
  257. resource_json = ExtResource("9_ifdhg")
  258. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  259. [node name="Hitbox" type="Area2D" parent="Boos/Boo10"]
  260. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo10/Hitbox"]
  261. shape = SubResource("RectangleShape2D_1eh5v")
  262. [node name="Boo11" type="Node2D" parent="Boos"]
  263. visible = false
  264. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo11"]
  265. sprite_frames = SubResource("SpriteFrames_8qb0a")
  266. animation = &"WhiteMove"
  267. autoplay = "WhiteMove"
  268. flip_h = true
  269. script = ExtResource("2_vavt3")
  270. do_offset = false
  271. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  272. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo11/Sprite" node_paths=PackedStringArray("node_to_affect")]
  273. script = ExtResource("8_ifdhg")
  274. node_to_affect = NodePath("..")
  275. property_name = "sprite_frames"
  276. resource_json = ExtResource("9_ifdhg")
  277. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  278. [node name="Hitbox" type="Area2D" parent="Boos/Boo11"]
  279. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo11/Hitbox"]
  280. shape = SubResource("RectangleShape2D_1eh5v")
  281. [node name="Boo12" type="Node2D" parent="Boos"]
  282. visible = false
  283. [node name="Sprite" type="AnimatedSprite2D" parent="Boos/Boo12"]
  284. sprite_frames = SubResource("SpriteFrames_8qb0a")
  285. animation = &"WhiteMove"
  286. autoplay = "WhiteMove"
  287. flip_h = true
  288. script = ExtResource("2_vavt3")
  289. do_offset = false
  290. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  291. [node name="ResourceSetterNew" type="Node" parent="Boos/Boo12/Sprite" node_paths=PackedStringArray("node_to_affect")]
  292. script = ExtResource("8_ifdhg")
  293. node_to_affect = NodePath("..")
  294. property_name = "sprite_frames"
  295. resource_json = ExtResource("9_ifdhg")
  296. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  297. [node name="Hitbox" type="Area2D" parent="Boos/Boo12"]
  298. [node name="Shape" type="CollisionShape2D" parent="Boos/Boo12/Hitbox"]
  299. shape = SubResource("RectangleShape2D_1eh5v")
  300. [node name="BooPositioner" type="Node" parent="."]
  301. process_mode = 3
  302. script = SubResource("GDScript_vavt3")
  303. [node name="EditorPropertyExposer" type="Node" parent="."]
  304. script = ExtResource("6_5b8ig")
  305. properties = Array[String](["length", "direction", "boo_amount", "spread_boos"])
  306. [connection signal="area_entered" from="Boos/Boo1/Hitbox" to="." method="on_area_entered"]
  307. [connection signal="area_entered" from="Boos/Boo2/Hitbox" to="." method="on_area_entered"]
  308. [connection signal="area_entered" from="Boos/Boo3/Hitbox" to="." method="on_area_entered"]
  309. [connection signal="area_entered" from="Boos/Boo4/Hitbox" to="." method="on_area_entered"]
  310. [connection signal="area_entered" from="Boos/Boo5/Hitbox" to="." method="on_area_entered"]
  311. [connection signal="area_entered" from="Boos/Boo6/Hitbox" to="." method="on_area_entered"]
  312. [connection signal="area_entered" from="Boos/Boo7/Hitbox" to="." method="on_area_entered"]
  313. [connection signal="area_entered" from="Boos/Boo8/Hitbox" to="." method="on_area_entered"]
  314. [connection signal="area_entered" from="Boos/Boo9/Hitbox" to="." method="on_area_entered"]
  315. [connection signal="area_entered" from="Boos/Boo10/Hitbox" to="." method="on_area_entered"]
  316. [connection signal="area_entered" from="Boos/Boo11/Hitbox" to="." method="on_area_entered"]
  317. [connection signal="area_entered" from="Boos/Boo12/Hitbox" to="." method="on_area_entered"]