PiranhaPlant.tscn 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. [gd_scene load_steps=20 format=3 uid="uid://1rxw4k4wq3ni"]
  2. [ext_resource type="Texture2D" uid="uid://dbq6cn2hp6ijx" path="res://Assets/Sprites/Enemies/PiranhaPlant.png" id="1_2imih"]
  3. [ext_resource type="Script" uid="uid://d23hoj2qc2whq" path="res://Scripts/Classes/Entities/Enemies/PiranhaPlant.gd" id="1_jbk0f"]
  4. [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="3_471w1"]
  5. [ext_resource type="JSON" path="res://Assets/Sprites/Enemies/PiranhaPlant.json" id="4_xp8sq"]
  6. [ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="6_471w1"]
  7. [ext_resource type="Script" uid="uid://dri2d5jtu0fbq" path="res://Scripts/Classes/Components/FireballDetection.gd" id="7_471w1"]
  8. [ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="8_xp8sq"]
  9. [ext_resource type="Script" uid="uid://cpwloakvp672a" path="res://Scripts/Parts/EditorVisibleNode.gd" id="9_tmwyr"]
  10. [ext_resource type="Script" uid="uid://bbww34oiexbx2" path="res://Scripts/Classes/Components/ShellDetection.gd" id="10_uohcg"]
  11. [ext_resource type="Script" uid="uid://d0mqkvopasu8k" path="res://Scripts/Classes/Components/SecondQuestReplaceComponent.gd" id="10_xreuf"]
  12. [ext_resource type="Script" uid="uid://ba18grqjixded" path="res://Scripts/Classes/Components/ExplosionDetection.gd" id="11_8y1e5"]
  13. [sub_resource type="AtlasTexture" id="AtlasTexture_xp8sq"]
  14. atlas = ExtResource("1_2imih")
  15. region = Rect2(0, 24, 16, 24)
  16. [sub_resource type="AtlasTexture" id="AtlasTexture_uohcg"]
  17. atlas = ExtResource("1_2imih")
  18. region = Rect2(16, 24, 16, 24)
  19. [sub_resource type="SpriteFrames" id="SpriteFrames_q2sci"]
  20. animations = [{
  21. "frames": [{
  22. "duration": 1.0,
  23. "texture": SubResource("AtlasTexture_xp8sq")
  24. }, {
  25. "duration": 1.0,
  26. "texture": SubResource("AtlasTexture_uohcg")
  27. }],
  28. "loop": true,
  29. "name": &"default",
  30. "speed": 5.0
  31. }]
  32. [sub_resource type="RectangleShape2D" id="RectangleShape2D_k3xt6"]
  33. size = Vector2(6, 13)
  34. [sub_resource type="Animation" id="Animation_471w1"]
  35. resource_name = "Hide"
  36. tracks/0/type = "value"
  37. tracks/0/imported = false
  38. tracks/0/enabled = true
  39. tracks/0/path = NodePath("Sprite:position")
  40. tracks/0/interp = 1
  41. tracks/0/loop_wrap = true
  42. tracks/0/keys = {
  43. "times": PackedFloat32Array(0),
  44. "transitions": PackedFloat32Array(1),
  45. "update": 0,
  46. "values": [Vector2(0, 12)]
  47. }
  48. tracks/1/type = "value"
  49. tracks/1/imported = false
  50. tracks/1/enabled = true
  51. tracks/1/path = NodePath("Sprite:visible")
  52. tracks/1/interp = 1
  53. tracks/1/loop_wrap = true
  54. tracks/1/keys = {
  55. "times": PackedFloat32Array(0),
  56. "transitions": PackedFloat32Array(1),
  57. "update": 1,
  58. "values": [false]
  59. }
  60. tracks/2/type = "value"
  61. tracks/2/imported = false
  62. tracks/2/enabled = true
  63. tracks/2/path = NodePath("Sprite/Hitbox:monitoring")
  64. tracks/2/interp = 1
  65. tracks/2/loop_wrap = true
  66. tracks/2/keys = {
  67. "times": PackedFloat32Array(0),
  68. "transitions": PackedFloat32Array(1),
  69. "update": 1,
  70. "values": [false]
  71. }
  72. [sub_resource type="Animation" id="Animation_6l0c7"]
  73. length = 0.001
  74. tracks/0/type = "value"
  75. tracks/0/imported = false
  76. tracks/0/enabled = true
  77. tracks/0/path = NodePath("Sprite:position")
  78. tracks/0/interp = 1
  79. tracks/0/loop_wrap = true
  80. tracks/0/keys = {
  81. "times": PackedFloat32Array(0),
  82. "transitions": PackedFloat32Array(1),
  83. "update": 0,
  84. "values": [Vector2(0, -12)]
  85. }
  86. tracks/1/type = "value"
  87. tracks/1/imported = false
  88. tracks/1/enabled = true
  89. tracks/1/path = NodePath("Sprite:visible")
  90. tracks/1/interp = 1
  91. tracks/1/loop_wrap = true
  92. tracks/1/keys = {
  93. "times": PackedFloat32Array(0),
  94. "transitions": PackedFloat32Array(1),
  95. "update": 1,
  96. "values": [false]
  97. }
  98. tracks/2/type = "value"
  99. tracks/2/imported = false
  100. tracks/2/enabled = true
  101. tracks/2/path = NodePath("Sprite/Hitbox:monitoring")
  102. tracks/2/interp = 1
  103. tracks/2/loop_wrap = true
  104. tracks/2/keys = {
  105. "times": PackedFloat32Array(0),
  106. "transitions": PackedFloat32Array(1),
  107. "update": 1,
  108. "values": [false]
  109. }
  110. [sub_resource type="Animation" id="Animation_t8k64"]
  111. resource_name = "Rise"
  112. length = 4.5
  113. step = 0.1
  114. tracks/0/type = "value"
  115. tracks/0/imported = false
  116. tracks/0/enabled = true
  117. tracks/0/path = NodePath("Sprite:position")
  118. tracks/0/interp = 1
  119. tracks/0/loop_wrap = true
  120. tracks/0/keys = {
  121. "times": PackedFloat32Array(0, 0.5, 2, 2.5),
  122. "transitions": PackedFloat32Array(1, 1, 1, 1),
  123. "update": 0,
  124. "values": [Vector2(0, 12), Vector2(0, -12), Vector2(0, -12), Vector2(0, 12)]
  125. }
  126. tracks/1/type = "method"
  127. tracks/1/imported = false
  128. tracks/1/enabled = true
  129. tracks/1/path = NodePath("Timer")
  130. tracks/1/interp = 1
  131. tracks/1/loop_wrap = true
  132. tracks/1/keys = {
  133. "times": PackedFloat32Array(0, 4.5),
  134. "transitions": PackedFloat32Array(1, 1),
  135. "values": [{
  136. "args": [],
  137. "method": &"stop"
  138. }, {
  139. "args": [-1],
  140. "method": &"start"
  141. }]
  142. }
  143. tracks/2/type = "value"
  144. tracks/2/imported = false
  145. tracks/2/enabled = true
  146. tracks/2/path = NodePath("Sprite:visible")
  147. tracks/2/interp = 1
  148. tracks/2/loop_wrap = true
  149. tracks/2/keys = {
  150. "times": PackedFloat32Array(0, 4.5),
  151. "transitions": PackedFloat32Array(1, 1),
  152. "update": 1,
  153. "values": [true, false]
  154. }
  155. tracks/3/type = "value"
  156. tracks/3/imported = false
  157. tracks/3/enabled = true
  158. tracks/3/path = NodePath("Sprite/Hitbox:monitoring")
  159. tracks/3/interp = 1
  160. tracks/3/loop_wrap = true
  161. tracks/3/keys = {
  162. "times": PackedFloat32Array(0, 2.5),
  163. "transitions": PackedFloat32Array(1, 1),
  164. "update": 1,
  165. "values": [true, false]
  166. }
  167. [sub_resource type="AnimationLibrary" id="AnimationLibrary_471w1"]
  168. _data = {
  169. &"Hide": SubResource("Animation_471w1"),
  170. &"RESET": SubResource("Animation_6l0c7"),
  171. &"Rise": SubResource("Animation_t8k64")
  172. }
  173. [node name="PirannhaPlant" type="CharacterBody2D" node_paths=PackedStringArray("on_screen_enabler", "score_note_adder") groups=["Enemies"]]
  174. z_index = -5
  175. script = ExtResource("1_jbk0f")
  176. on_screen_enabler = NodePath("VisibleOnScreenEnabler2D")
  177. score_note_adder = NodePath("ScoreNoteSpawner")
  178. metadata/_custom_type_script = "uid://bpydbpyjk1mt4"
  179. [node name="Sprite" type="AnimatedSprite2D" parent="."]
  180. visible = false
  181. position = Vector2(0, -12)
  182. sprite_frames = SubResource("SpriteFrames_q2sci")
  183. autoplay = "default"
  184. frame_progress = 0.985799
  185. offset = Vector2(0, 1)
  186. [node name="Hitbox" type="Area2D" parent="Sprite"]
  187. position = Vector2(0, 12)
  188. monitoring = false
  189. [node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/Hitbox"]
  190. position = Vector2(0, -6)
  191. shape = SubResource("RectangleShape2D_k3xt6")
  192. [node name="UpsideDownExtension" type="CollisionShape2D" parent="Sprite/Hitbox"]
  193. position = Vector2(0, -14)
  194. shape = SubResource("RectangleShape2D_k3xt6")
  195. debug_color = Color(0, 0.6, 0, 0.419608)
  196. [node name="ResourceSetterNew" type="Node" parent="Sprite" node_paths=PackedStringArray("node_to_affect")]
  197. script = ExtResource("3_471w1")
  198. node_to_affect = NodePath("..")
  199. property_name = "sprite_frames"
  200. resource_json = ExtResource("4_xp8sq")
  201. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  202. [node name="Animation" type="AnimationPlayer" parent="."]
  203. libraries = {
  204. &"": SubResource("AnimationLibrary_471w1")
  205. }
  206. autoplay = "Hide"
  207. [node name="Timer" type="Timer" parent="."]
  208. wait_time = 0.5
  209. autostart = true
  210. [node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."]
  211. self_modulate = Color(1, 1, 1, 0)
  212. position = Vector2(0, -5)
  213. scale = Vector2(1, 2.9)
  214. [node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
  215. script = ExtResource("6_471w1")
  216. hitbox = NodePath("../Sprite/Hitbox")
  217. metadata/_custom_type_script = "uid://chj8hu207lrh"
  218. [node name="FireballDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
  219. script = ExtResource("7_471w1")
  220. hitbox = NodePath("../Sprite/Hitbox")
  221. metadata/_custom_type_script = "uid://dri2d5jtu0fbq"
  222. [node name="ScoreNoteSpawner" type="Node" parent="."]
  223. script = ExtResource("8_xp8sq")
  224. add_score = true
  225. play_sfx = true
  226. metadata/_custom_type_script = "uid://5octqlf4ohel"
  227. [node name="ShellDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
  228. script = ExtResource("10_uohcg")
  229. hitbox = NodePath("../Sprite/Hitbox")
  230. metadata/_custom_type_script = "uid://bbww34oiexbx2"
  231. [node name="LevelEditorVisibleNode" type="Node2D" parent="."]
  232. script = ExtResource("9_tmwyr")
  233. metadata/_custom_type_script = "uid://cpwloakvp672a"
  234. [node name="Sprite" type="AnimatedSprite2D" parent="LevelEditorVisibleNode"]
  235. position = Vector2(0, -12)
  236. sprite_frames = SubResource("SpriteFrames_q2sci")
  237. autoplay = "default"
  238. frame_progress = 0.985799
  239. offset = Vector2(0, 1)
  240. [node name="ResourceSetterNew" type="Node" parent="LevelEditorVisibleNode/Sprite" node_paths=PackedStringArray("node_to_affect")]
  241. script = ExtResource("3_471w1")
  242. node_to_affect = NodePath("..")
  243. property_name = "sprite_frames"
  244. resource_json = ExtResource("4_xp8sq")
  245. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  246. [node name="SecondQuestReplacer" type="Node" parent="."]
  247. script = ExtResource("10_xreuf")
  248. new_scene = "uid://kj5pw3xhq8f7"
  249. metadata/_custom_type_script = "uid://d0mqkvopasu8k"
  250. [node name="ExplosionDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
  251. script = ExtResource("11_8y1e5")
  252. hitbox = NodePath("../Sprite/Hitbox")
  253. metadata/_custom_type_script = "uid://ba18grqjixded"
  254. [connection signal="timeout" from="Timer" to="." method="on_timeout"]
  255. [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
  256. [connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
  257. [connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
  258. [connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]
  259. [connection signal="fireball_hit" from="FireballDetection" to="." method="die_from_object"]
  260. [connection signal="fireball_hit" from="FireballDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
  261. [connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"]
  262. [connection signal="moving_shell_entered" from="ShellDetection" to="ScoreNoteSpawner" method="play_death_sfx" unbinds=1]
  263. [connection signal="explosion_entered" from="ExplosionDetection" to="." method="die_from_object"]
  264. [connection signal="explosion_entered" from="ExplosionDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]