Player.tscn 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069
  1. [gd_scene load_steps=79 format=3 uid="uid://cuh62hlq8errh"]
  2. [ext_resource type="Script" uid="uid://dt4rosa5o35xr" path="res://Scripts/Classes/Entities/Player.gd" id="1_f6bau"]
  3. [ext_resource type="Script" uid="uid://uribh0f1jttq" path="res://Scripts/Classes/States/StateMachine.gd" id="2_1y62l"]
  4. [ext_resource type="Texture2D" uid="uid://b0quveyqh25dn" path="res://Assets/Sprites/Players/InvinciblePalettes/InvinciblePalette.png" id="2_bl5al"]
  5. [ext_resource type="Texture2D" uid="uid://cqnw2x27uxb8i" path="res://Assets/Sprites/Players/InvinciblePalettes/Overworld.png" id="2_fqdtv"]
  6. [ext_resource type="Texture2D" uid="uid://bbdcmhyxmc3pu" path="res://Assets/Sprites/Items/SPItems.png" id="3_a1d2e"]
  7. [ext_resource type="Script" uid="uid://blxvov3jyx8gg" path="res://Scripts/Classes/States/Player/Normal.gd" id="3_f6bau"]
  8. [ext_resource type="Texture2D" uid="uid://bdurtsr7cld64" path="res://Assets/Sprites/Players/Mario/ColourPalette.png" id="3_x2idl"]
  9. [ext_resource type="SpriteFrames" uid="uid://df4enjjl84mji" path="res://Resources/SpriteFrames/Player/Mario/Small.tres" id="4_cekpg"]
  10. [ext_resource type="Script" uid="uid://dvbib1gtmmvui" path="res://Scripts/Classes/States/Player/Pipe.gd" id="5_hodem"]
  11. [ext_resource type="Script" uid="uid://c8xvkkv34fjr4" path="res://Scripts/Classes/PowerStates/PowerUpState.gd" id="5_rs3l8"]
  12. [ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="5_x2idl"]
  13. [ext_resource type="Script" uid="uid://d0hnf0d6tudgj" path="res://Scripts/Classes/PowerStates/Fire.gd" id="6_7nbqp"]
  14. [ext_resource type="Script" uid="uid://cnjpqn05bfm57" path="res://Scripts/Classes/States/Player/PlayerState.gd" id="6_8f1du"]
  15. [ext_resource type="JSON" path="res://Assets/Sprites/Items/HammerItem.json" id="7_2mfvl"]
  16. [ext_resource type="Script" uid="uid://ri1g4nllpkfj" path="res://Scripts/Classes/States/Player/FlagPole.gd" id="7_8f1du"]
  17. [ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="8_4ojwh"]
  18. [ext_resource type="Script" uid="uid://bx2kc62lpphxv" path="res://Scripts/Classes/States/Player/LevelExit.gd" id="8_mqpnb"]
  19. [ext_resource type="Texture2D" uid="uid://tidb7wgqraj2" path="res://Assets/Sprites/Items/Wings.png" id="8_t1xso"]
  20. [ext_resource type="Script" uid="uid://cvbj4qlyfat7e" path="res://Scripts/Classes/States/Player/Dead.gd" id="9_mqpnb"]
  21. [ext_resource type="JSON" path="res://Assets/Sprites/Items/Wings.json" id="9_o70e0"]
  22. [ext_resource type="Script" uid="uid://c7kmriol0gj16" path="res://Scripts/Classes/States/Player/Climb.gd" id="10_shhao"]
  23. [ext_resource type="JSON" path="res://Assets/Sprites/Players/Mario/ColourPalette.json" id="10_xy8gq"]
  24. [ext_resource type="Script" uid="uid://b10ui1x45l6ly" path="res://Scripts/Classes/States/Player/WallSlide.gd" id="11_057py"]
  25. [ext_resource type="Texture2D" uid="uid://dq58glgwf2l3" path="res://Assets/Sprites/UI/CheckpointIcon.png" id="13_uo1a1"]
  26. [ext_resource type="Script" uid="uid://ugfx3sb3h6rj" path="res://Scripts/Classes/States/Player/NoClip.gd" id="16_cekpg"]
  27. [ext_resource type="AudioStream" uid="uid://cbxnq518x3jqe" path="res://Assets/Audio/SFX/Skid.wav" id="18_hofol"]
  28. [ext_resource type="Texture2D" uid="uid://daaycq24wiiph" path="res://Assets/Sprites/UI/ControllerOverlay.png" id="19_bc3q3"]
  29. [ext_resource type="Texture2D" uid="uid://c6pd7cdhx78od" path="res://Assets/Sprites/UI/Tab.png" id="20_34tqy"]
  30. [ext_resource type="Script" uid="uid://dgmaoklmc0wfa" path="res://Scripts/Parts/CameraHandler.gd" id="20_d7xah"]
  31. [ext_resource type="Script" uid="uid://cp1bh6fi6tpa5" path="res://Scripts/Classes/Components/ScalableCollisionShape.gd" id="21_jl70t"]
  32. [ext_resource type="Script" uid="uid://cqif1li7otvpl" path="res://Scripts/Parts/SpriteFramesToJsonConverter.gd" id="22_445e4"]
  33. [ext_resource type="SpriteFrames" uid="uid://dw8r8t7iqvrmq" path="res://Resources/SpriteFrames/Player/Luigi/Fire.tres" id="23_445e4"]
  34. [ext_resource type="Script" uid="uid://cmvlgsjmsk0v5" path="res://Scripts/Classes/Resources/ThemedResource.gd" id="24_hu5lw"]
  35. [ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="25_cekpg"]
  36. [ext_resource type="JSON" path="res://Assets/Sprites/Players/Mario/Small.json" id="26_o4wvw"]
  37. [ext_resource type="Script" uid="uid://cq6f682453q6o" path="res://Scripts/Classes/Components/ResourceSetter.gd" id="27_6ws8x"]
  38. [ext_resource type="Script" uid="uid://ctfbuoxtnnl0q" path="res://Scripts/Classes/Components/EditorPropertyExposer.gd" id="28_hu5lw"]
  39. [ext_resource type="Texture2D" uid="uid://cpoksuhnwvh5l" path="res://Assets/Sprites/UI/TimerIcons.png" id="29_uwhl4"]
  40. [ext_resource type="JSON" path="res://Assets/Sprites/Players/InvinciblePalettes/InvinciblePalette.json" id="29_vphr8"]
  41. [ext_resource type="Script" uid="uid://dn5efttgugwvb" path="res://Scripts/Classes/Components/TimerSprite.gd" id="30_o70e0"]
  42. [ext_resource type="Script" uid="uid://cwti0ks5sfov3" path="res://Scripts/Classes/Components/ScalableCollisionPolygon.gd" id="35_nbkfn"]
  43. [ext_resource type="AudioStream" uid="uid://oghj2q665pfj" path="res://Assets/Audio/SFX/TimerRunningLow.wav" id="40_o70e0"]
  44. [sub_resource type="Shader" id="Shader_7nbqp"]
  45. code = "shader_type canvas_item;
  46. uniform int mode = 0;
  47. uniform float speed = 50;
  48. uniform bool enabled = false;
  49. uniform float palette_size = 3;
  50. uniform sampler2D player_palette: filter_nearest;
  51. uniform int palette_idx = 0;
  52. uniform sampler2D invincible_palette: filter_nearest;
  53. uniform float dist_1 = 0.0;
  54. vec4 mode_0(vec4 colour)
  55. {
  56. float amount = abs(sin(TIME * speed));
  57. vec4 inv = abs(colour - vec4(1.0, 1.0, 1.0, 0.0));
  58. vec4 rainbow = vec4(abs(sin(TIME * 5.0)), abs(cos(TIME * 3.0)), abs(sin((TIME))), colour.a);
  59. inv = vec4(mix(inv, rainbow, 0.5));
  60. colour = vec4(mix(colour, inv, amount));
  61. return colour;
  62. }
  63. vec4 mode_1(vec4 colour)
  64. {
  65. // Determine invincible palette row (1–3)
  66. int invincible_palette_idx = int(TIME * speed) % 3;
  67. vec4 closest = colour;
  68. float closest_distance = 99999.9;
  69. int palette_count = int(palette_size); // number of colors
  70. for (int i = 0; i < palette_count; i++)
  71. {
  72. float x_coord = (float(i) + 0.5) / palette_size;
  73. float y_coord = (float(palette_idx) + 0.5) / float(3);
  74. vec4 sampled = texture(player_palette, vec2(x_coord, y_coord));
  75. float d = distance(sampled, colour);
  76. if (d < 0.01 && d <= closest_distance)
  77. {
  78. float inv_x_coord = (float(i) + 0.5) / palette_size;
  79. float inv_y_coord = (float(invincible_palette_idx) + 0.5) / float(3);
  80. closest = texture(invincible_palette, vec2(inv_x_coord, inv_y_coord));
  81. closest_distance = d;
  82. }
  83. }
  84. return closest;
  85. }
  86. void fragment() {
  87. if (enabled)
  88. {
  89. if (mode == 0)
  90. {
  91. COLOR = mode_0(COLOR);
  92. } else if (mode == 1)
  93. {
  94. COLOR = mode_1(COLOR);
  95. }
  96. }
  97. }
  98. "
  99. [sub_resource type="ShaderMaterial" id="ShaderMaterial_4ojwh"]
  100. resource_local_to_scene = true
  101. shader = SubResource("Shader_7nbqp")
  102. shader_parameter/mode = 1
  103. shader_parameter/speed = 15.0
  104. shader_parameter/enabled = false
  105. shader_parameter/palette_size = 3.0
  106. shader_parameter/player_palette = ExtResource("3_x2idl")
  107. shader_parameter/palette_idx = 0
  108. shader_parameter/invincible_palette = ExtResource("2_fqdtv")
  109. shader_parameter/dist_1 = 0.0
  110. [sub_resource type="Animation" id="Animation_bc3q3"]
  111. length = 0.001
  112. tracks/0/type = "value"
  113. tracks/0/imported = false
  114. tracks/0/enabled = true
  115. tracks/0/path = NodePath(".:rotation")
  116. tracks/0/interp = 1
  117. tracks/0/loop_wrap = true
  118. tracks/0/keys = {
  119. "times": PackedFloat32Array(0),
  120. "transitions": PackedFloat32Array(1),
  121. "update": 0,
  122. "values": [0.0]
  123. }
  124. [sub_resource type="Animation" id="Animation_hofol"]
  125. resource_name = "Swing"
  126. length = 0.1
  127. loop_mode = 2
  128. tracks/0/type = "value"
  129. tracks/0/imported = false
  130. tracks/0/enabled = true
  131. tracks/0/path = NodePath(".:rotation")
  132. tracks/0/interp = 0
  133. tracks/0/loop_wrap = true
  134. tracks/0/keys = {
  135. "times": PackedFloat32Array(0, 0.05),
  136. "transitions": PackedFloat32Array(1, 1),
  137. "update": 0,
  138. "values": [0.0, 1.5708]
  139. }
  140. [sub_resource type="AnimationLibrary" id="AnimationLibrary_bl5al"]
  141. _data = {
  142. &"RESET": SubResource("Animation_bc3q3"),
  143. &"Swing": SubResource("Animation_hofol")
  144. }
  145. [sub_resource type="RectangleShape2D" id="RectangleShape2D_a1d2e"]
  146. size = Vector2(16, 16)
  147. [sub_resource type="AtlasTexture" id="AtlasTexture_jl70t"]
  148. atlas = ExtResource("8_t1xso")
  149. region = Rect2(16, 0, 16, 16)
  150. [sub_resource type="AtlasTexture" id="AtlasTexture_nbkfn"]
  151. atlas = ExtResource("8_t1xso")
  152. region = Rect2(0, 0, 16, 16)
  153. [sub_resource type="AtlasTexture" id="AtlasTexture_d20nf"]
  154. atlas = ExtResource("8_t1xso")
  155. region = Rect2(0, 0, 16, 16)
  156. [sub_resource type="SpriteFrames" id="SpriteFrames_uwhl4"]
  157. animations = [{
  158. "frames": [{
  159. "duration": 1.0,
  160. "texture": SubResource("AtlasTexture_jl70t")
  161. }, {
  162. "duration": 1.0,
  163. "texture": SubResource("AtlasTexture_nbkfn")
  164. }],
  165. "loop": true,
  166. "name": &"Flap",
  167. "speed": 15.0
  168. }, {
  169. "frames": [{
  170. "duration": 1.0,
  171. "texture": SubResource("AtlasTexture_d20nf")
  172. }],
  173. "loop": true,
  174. "name": &"Idle",
  175. "speed": 5.0
  176. }]
  177. [sub_resource type="Animation" id="Animation_t1xso"]
  178. resource_name = "Flash"
  179. length = 0.2
  180. loop_mode = 1
  181. tracks/0/type = "value"
  182. tracks/0/imported = false
  183. tracks/0/enabled = true
  184. tracks/0/path = NodePath(".:modulate")
  185. tracks/0/interp = 0
  186. tracks/0/loop_wrap = true
  187. tracks/0/keys = {
  188. "times": PackedFloat32Array(0, 0.1),
  189. "transitions": PackedFloat32Array(1, 1),
  190. "update": 0,
  191. "values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
  192. }
  193. [sub_resource type="Animation" id="Animation_jl70t"]
  194. length = 0.001
  195. tracks/0/type = "value"
  196. tracks/0/imported = false
  197. tracks/0/enabled = true
  198. tracks/0/path = NodePath(".:modulate")
  199. tracks/0/interp = 1
  200. tracks/0/loop_wrap = true
  201. tracks/0/keys = {
  202. "times": PackedFloat32Array(0),
  203. "transitions": PackedFloat32Array(1),
  204. "update": 0,
  205. "values": [Color(1, 1, 1, 1)]
  206. }
  207. [sub_resource type="AnimationLibrary" id="AnimationLibrary_nbkfn"]
  208. _data = {
  209. &"Flash": SubResource("Animation_t1xso"),
  210. &"RESET": SubResource("Animation_jl70t")
  211. }
  212. [sub_resource type="RectangleShape2D" id="RectangleShape2D_nbkfn"]
  213. resource_local_to_scene = true
  214. size = Vector2(9, 14)
  215. [sub_resource type="RectangleShape2D" id="RectangleShape2D_d20nf"]
  216. resource_local_to_scene = true
  217. size = Vector2(9, 29.5)
  218. [sub_resource type="RectangleShape2D" id="RectangleShape2D_f6bau"]
  219. resource_local_to_scene = true
  220. size = Vector2(6, 15.5)
  221. [sub_resource type="RectangleShape2D" id="RectangleShape2D_sda2e"]
  222. resource_local_to_scene = true
  223. size = Vector2(6, 29.5)
  224. [sub_resource type="RectangleShape2D" id="RectangleShape2D_uwhl4"]
  225. resource_local_to_scene = true
  226. size = Vector2(10, 16.5)
  227. [sub_resource type="RectangleShape2D" id="RectangleShape2D_o70e0"]
  228. resource_local_to_scene = true
  229. size = Vector2(10, 30.5)
  230. [sub_resource type="RectangleShape2D" id="RectangleShape2D_t1xso"]
  231. size = Vector2(9999999, 8)
  232. [sub_resource type="RectangleShape2D" id="RectangleShape2D_jl70t"]
  233. size = Vector2(9999999, 8)
  234. [sub_resource type="Animation" id="Animation_057py"]
  235. length = 0.001
  236. tracks/0/type = "value"
  237. tracks/0/imported = false
  238. tracks/0/enabled = true
  239. tracks/0/path = NodePath(".:visible")
  240. tracks/0/interp = 1
  241. tracks/0/loop_wrap = true
  242. tracks/0/keys = {
  243. "times": PackedFloat32Array(0),
  244. "transitions": PackedFloat32Array(1),
  245. "update": 1,
  246. "values": [true]
  247. }
  248. tracks/1/type = "value"
  249. tracks/1/imported = false
  250. tracks/1/enabled = true
  251. tracks/1/path = NodePath(".:offset")
  252. tracks/1/interp = 1
  253. tracks/1/loop_wrap = true
  254. tracks/1/keys = {
  255. "times": PackedFloat32Array(0),
  256. "transitions": PackedFloat32Array(1),
  257. "update": 0,
  258. "values": [Vector2(0, 0)]
  259. }
  260. tracks/2/type = "value"
  261. tracks/2/imported = false
  262. tracks/2/enabled = true
  263. tracks/2/path = NodePath(".:self_modulate")
  264. tracks/2/interp = 1
  265. tracks/2/loop_wrap = true
  266. tracks/2/keys = {
  267. "times": PackedFloat32Array(0),
  268. "transitions": PackedFloat32Array(1),
  269. "update": 0,
  270. "values": [Color(1, 1, 1, 0)]
  271. }
  272. [sub_resource type="Animation" id="Animation_shhao"]
  273. resource_name = "Show"
  274. length = 2.0
  275. tracks/0/type = "value"
  276. tracks/0/imported = false
  277. tracks/0/enabled = true
  278. tracks/0/path = NodePath(".:visible")
  279. tracks/0/interp = 1
  280. tracks/0/loop_wrap = true
  281. tracks/0/keys = {
  282. "times": PackedFloat32Array(0),
  283. "transitions": PackedFloat32Array(1),
  284. "update": 1,
  285. "values": [true]
  286. }
  287. tracks/1/type = "value"
  288. tracks/1/imported = false
  289. tracks/1/enabled = true
  290. tracks/1/path = NodePath(".:offset")
  291. tracks/1/interp = 2
  292. tracks/1/loop_wrap = true
  293. tracks/1/keys = {
  294. "times": PackedFloat32Array(0, 0.166667),
  295. "transitions": PackedFloat32Array(1, 1),
  296. "update": 0,
  297. "values": [Vector2(0, 8), Vector2(0, 0)]
  298. }
  299. tracks/2/type = "value"
  300. tracks/2/imported = false
  301. tracks/2/enabled = true
  302. tracks/2/path = NodePath(".:self_modulate")
  303. tracks/2/interp = 0
  304. tracks/2/loop_wrap = true
  305. tracks/2/keys = {
  306. "times": PackedFloat32Array(0, 1.7, 2),
  307. "transitions": PackedFloat32Array(1, 1, 1),
  308. "update": 0,
  309. "values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
  310. }
  311. [sub_resource type="AnimationLibrary" id="AnimationLibrary_f873f"]
  312. _data = {
  313. &"RESET": SubResource("Animation_057py"),
  314. &"Show": SubResource("Animation_shhao")
  315. }
  316. [sub_resource type="Resource" id="Resource_2mfvl"]
  317. script = ExtResource("24_hu5lw")
  318. Overworld = ExtResource("13_uo1a1")
  319. metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"
  320. [sub_resource type="Resource" id="Resource_cekpg"]
  321. script = ExtResource("24_hu5lw")
  322. Overworld = ExtResource("18_hofol")
  323. metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"
  324. [sub_resource type="AtlasTexture" id="AtlasTexture_bc3q3"]
  325. atlas = ExtResource("19_bc3q3")
  326. region = Rect2(0, 16, 2, 2)
  327. [sub_resource type="GDScript" id="GDScript_bl5al"]
  328. script/source = "extends Sprite2D
  329. @export var action_name := \"\"
  330. @export var idle_texture: Texture = null
  331. @export var pressed_texture: Texture = null
  332. func _process(_delta: float) -> void:
  333. texture = pressed_texture if Input.is_action_pressed(action_name + \"_0\") else idle_texture
  334. "
  335. [sub_resource type="AtlasTexture" id="AtlasTexture_bl5al"]
  336. [sub_resource type="AtlasTexture" id="AtlasTexture_x2idl"]
  337. atlas = ExtResource("19_bc3q3")
  338. region = Rect2(2, 16, 2, 2)
  339. [sub_resource type="Resource" id="Resource_vphr8"]
  340. script = ExtResource("24_hu5lw")
  341. Overworld = ExtResource("23_445e4")
  342. metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"
  343. [sub_resource type="SeparationRayShape2D" id="SeparationRayShape2D_6ws8x"]
  344. length = 4.0
  345. slide_on_slope = true
  346. [sub_resource type="GDScript" id="GDScript_hu5lw"]
  347. script/source = "extends Node
  348. var current_state := \"\"
  349. func _physics_process(_delta: float) -> void:
  350. if Global.current_game_mode == Global.GameMode.LEVEL_EDITOR and LevelEditor.playing_level == false:
  351. if Global.level_editor.current_state == LevelEditor.EditorState.IDLE == false:
  352. return
  353. var state = %PowerStates.get_child(owner.starting_power_state).name
  354. if current_state != state:
  355. current_state = state
  356. %ResourceSetterNew.resource_json = load(\"res://Assets/Sprites/Players/\" + owner.character + \"/\" + state + \".json\")
  357. if Input.is_action_just_pressed(\"editor_move_player\"):
  358. var new_position = Global.level_editor.cursor_tile_position * 16
  359. owner.global_position = new_position + Vector2i(8, 16)
  360. Global.level_editor.entity_tiles[0].erase(owner.get_meta(\"tile_position\"))
  361. var tile_position = Vector2i(new_position / 16)
  362. Global.level_editor.entity_tiles[0].set(tile_position, owner)
  363. owner.reset_physics_interpolation()
  364. owner.set_meta(\"tile_position\", tile_position)
  365. owner.recenter_camera()
  366. print(Global.level_editor.entity_tiles)
  367. "
  368. [sub_resource type="RectangleShape2D" id="RectangleShape2D_d7xah"]
  369. resource_local_to_scene = true
  370. size = Vector2(4, 6.75)
  371. [sub_resource type="RectangleShape2D" id="RectangleShape2D_34tqy"]
  372. resource_local_to_scene = true
  373. size = Vector2(4, 12)
  374. [sub_resource type="Resource" id="Resource_xy8gq"]
  375. script = ExtResource("24_hu5lw")
  376. Overworld = ExtResource("40_o70e0")
  377. metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"
  378. [node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("power_state") groups=["Players"]]
  379. process_priority = 1
  380. process_physics_priority = 1
  381. z_index = 1
  382. collision_layer = 0
  383. collision_mask = 3
  384. collision_priority = 10000000.0
  385. slide_on_ceiling = false
  386. floor_constant_speed = true
  387. floor_max_angle = 0.872665
  388. floor_snap_length = 4.0
  389. platform_on_leave = 2
  390. script = ExtResource("1_f6bau")
  391. power_state = NodePath("PowerStates/Small")
  392. [node name="Sprite" type="AnimatedSprite2D" parent="."]
  393. physics_interpolation_mode = 2
  394. material = SubResource("ShaderMaterial_4ojwh")
  395. position = Vector2(0, -16)
  396. sprite_frames = ExtResource("4_cekpg")
  397. animation = &"Idle"
  398. offset = Vector2(0, 1)
  399. script = ExtResource("5_x2idl")
  400. metadata/_custom_type_script = "uid://caq1qiwmy0mox"
  401. [node name="Hammer" type="Sprite2D" parent="Sprite"]
  402. visible = false
  403. position = Vector2(8, 8)
  404. texture = ExtResource("3_a1d2e")
  405. offset = Vector2(0, -8)
  406. region_enabled = true
  407. region_rect = Rect2(0, 0, 16, 16)
  408. [node name="Animation" type="AnimationPlayer" parent="Sprite/Hammer"]
  409. libraries = {
  410. &"": SubResource("AnimationLibrary_bl5al")
  411. }
  412. autoplay = "Swing"
  413. [node name="ResourceSetterNew" type="Node" parent="Sprite/Hammer" node_paths=PackedStringArray("node_to_affect")]
  414. script = ExtResource("25_cekpg")
  415. node_to_affect = NodePath("..")
  416. property_name = "texture"
  417. mode = 1
  418. resource_json = ExtResource("7_2mfvl")
  419. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  420. [node name="HammerHitbox" type="Area2D" parent="Sprite"]
  421. visible = false
  422. position = Vector2(16, 16)
  423. monitorable = false
  424. [node name="CollisionShape2D" type="CollisionShape2D" parent="Sprite/HammerHitbox"]
  425. position = Vector2(-3.49691e-07, -8)
  426. shape = SubResource("RectangleShape2D_a1d2e")
  427. [node name="Wings" type="Node2D" parent="Sprite"]
  428. visible = false
  429. [node name="BigWing" type="AnimatedSprite2D" parent="Sprite/Wings"]
  430. unique_name_in_owner = true
  431. position = Vector2(-10, -3)
  432. sprite_frames = SubResource("SpriteFrames_uwhl4")
  433. animation = &"Idle"
  434. frame_progress = 0.9603284
  435. flip_h = true
  436. [node name="ResourceSetterNew" type="Node" parent="Sprite/Wings/BigWing" node_paths=PackedStringArray("node_to_affect")]
  437. script = ExtResource("25_cekpg")
  438. node_to_affect = NodePath("..")
  439. property_name = "sprite_frames"
  440. resource_json = ExtResource("9_o70e0")
  441. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  442. [node name="SmallWing" type="AnimatedSprite2D" parent="Sprite/Wings"]
  443. unique_name_in_owner = true
  444. visible = false
  445. show_behind_parent = true
  446. position = Vector2(-10, 7)
  447. sprite_frames = SubResource("SpriteFrames_uwhl4")
  448. animation = &"Idle"
  449. flip_h = true
  450. [node name="ResourceSetterNew" type="Node" parent="Sprite/Wings/SmallWing" node_paths=PackedStringArray("node_to_affect")]
  451. script = ExtResource("25_cekpg")
  452. node_to_affect = NodePath("..")
  453. property_name = "sprite_frames"
  454. resource_json = ExtResource("9_o70e0")
  455. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  456. [node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite/Wings"]
  457. libraries = {
  458. &"": SubResource("AnimationLibrary_nbkfn")
  459. }
  460. [node name="States" type="Node" parent="." node_paths=PackedStringArray("state")]
  461. script = ExtResource("2_1y62l")
  462. state = NodePath("Normal")
  463. [node name="Normal" type="Node" parent="States"]
  464. script = ExtResource("3_f6bau")
  465. [node name="Pipe" type="Node" parent="States"]
  466. script = ExtResource("5_hodem")
  467. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  468. [node name="FlagPole" type="Node" parent="States"]
  469. script = ExtResource("7_8f1du")
  470. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  471. [node name="LevelExit" type="Node" parent="States"]
  472. script = ExtResource("8_mqpnb")
  473. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  474. [node name="Dead" type="Node" parent="States"]
  475. script = ExtResource("9_mqpnb")
  476. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  477. [node name="Freeze" type="Node" parent="States"]
  478. script = ExtResource("6_8f1du")
  479. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  480. [node name="Climb" type="Node" parent="States"]
  481. script = ExtResource("10_shhao")
  482. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  483. [node name="WallSlide" type="Node" parent="States"]
  484. script = ExtResource("11_057py")
  485. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  486. [node name="NoClip" type="Node" parent="States"]
  487. script = ExtResource("16_cekpg")
  488. metadata/_custom_type_script = "uid://cnjpqn05bfm57"
  489. [node name="PowerStates" type="Node" parent="."]
  490. unique_name_in_owner = true
  491. [node name="Small" type="Node" parent="PowerStates"]
  492. script = ExtResource("5_rs3l8")
  493. state_name = "Small"
  494. metadata/_custom_type_script = "uid://c8xvkkv34fjr4"
  495. [node name="Big" type="Node" parent="PowerStates" node_paths=PackedStringArray("damage_state")]
  496. script = ExtResource("5_rs3l8")
  497. state_name = "Big"
  498. power_tier = 1
  499. hitbox_size = "Big"
  500. damage_state = NodePath("../Small")
  501. metadata/_custom_type_script = "uid://c8xvkkv34fjr4"
  502. [node name="Fire" type="Node" parent="PowerStates" node_paths=PackedStringArray("damage_state")]
  503. script = ExtResource("6_7nbqp")
  504. state_name = "Fire"
  505. power_tier = 2
  506. hitbox_size = "Big"
  507. damage_state = NodePath("../Big")
  508. metadata/_custom_type_script = "uid://c8xvkkv34fjr4"
  509. [node name="Camera" type="Camera2D" parent="."]
  510. process_mode = 3
  511. top_level = true
  512. position = Vector2(0, -64)
  513. ignore_rotation = false
  514. limit_enabled = false
  515. editor_draw_limits = true
  516. editor_draw_drag_margin = true
  517. [node name="Hitbox" type="Area2D" parent="."]
  518. visible = false
  519. position = Vector2(0, -10)
  520. collision_mask = 5
  521. [node name="SmallShape" type="CollisionShape2D" parent="Hitbox" groups=["SmallCollisions"]]
  522. position = Vector2(0, 3)
  523. shape = SubResource("RectangleShape2D_nbkfn")
  524. debug_color = Color(1, 0, 0, 0.419608)
  525. script = ExtResource("21_jl70t")
  526. offset = Vector2(0, -10)
  527. [node name="BigShape" type="CollisionShape2D" parent="Hitbox" groups=["BigCollisions"]]
  528. position = Vector2(0, -4.75)
  529. shape = SubResource("RectangleShape2D_d20nf")
  530. disabled = true
  531. debug_color = Color(1, 0, 0, 0.419608)
  532. script = ExtResource("21_jl70t")
  533. offset = Vector2(0, -10)
  534. [node name="WaterDetect" type="Area2D" parent="."]
  535. visible = false
  536. position = Vector2(0, -13)
  537. collision_layer = 0
  538. collision_mask = 64
  539. [node name="SmallShape" type="CollisionShape2D" parent="WaterDetect" groups=["SmallCollisions"]]
  540. position = Vector2(0, 5.25)
  541. shape = SubResource("RectangleShape2D_f6bau")
  542. debug_color = Color(1, 0, 0, 0.419608)
  543. script = ExtResource("21_jl70t")
  544. offset = Vector2(0, -13)
  545. [node name="BigShape" type="CollisionShape2D" parent="WaterDetect" groups=["BigCollisions"]]
  546. position = Vector2(0, -1.75)
  547. shape = SubResource("RectangleShape2D_sda2e")
  548. disabled = true
  549. debug_color = Color(1, 0, 0, 0.419608)
  550. script = ExtResource("21_jl70t")
  551. offset = Vector2(0, -13)
  552. [node name="LavaPoisonDetect" type="Area2D" parent="."]
  553. visible = false
  554. position = Vector2(0, -13)
  555. collision_layer = 0
  556. collision_mask = 384
  557. [node name="SmallShape" type="CollisionShape2D" parent="LavaPoisonDetect"]
  558. position = Vector2(0, 5.75)
  559. shape = SubResource("RectangleShape2D_uwhl4")
  560. debug_color = Color(1, 0, 0, 0.419608)
  561. script = ExtResource("21_jl70t")
  562. offset = Vector2(0, -14)
  563. [node name="BigShape" type="CollisionShape2D" parent="LavaPoisonDetect" groups=["BigCollisions"]]
  564. position = Vector2(0, -1.25)
  565. shape = SubResource("RectangleShape2D_o70e0")
  566. disabled = true
  567. debug_color = Color(1, 0, 0, 0.419608)
  568. script = ExtResource("21_jl70t")
  569. offset = Vector2(0, -14)
  570. [node name="CameraCenterJoint" type="Node2D" parent="."]
  571. physics_interpolation_mode = 2
  572. top_level = true
  573. [node name="LeftWall" type="StaticBody2D" parent="CameraCenterJoint"]
  574. position = Vector2(128, 0)
  575. collision_layer = 0
  576. collision_mask = 0
  577. [node name="CollisionShape2D" type="CollisionShape2D" parent="CameraCenterJoint/LeftWall"]
  578. rotation = 1.5707964
  579. shape = SubResource("RectangleShape2D_t1xso")
  580. disabled = true
  581. one_way_collision = true
  582. [node name="RightWall" type="StaticBody2D" parent="CameraCenterJoint"]
  583. position = Vector2(-128, 0)
  584. collision_layer = 0
  585. collision_mask = 0
  586. [node name="CollisionShape2D" type="CollisionShape2D" parent="CameraCenterJoint/RightWall"]
  587. rotation = -1.5707964
  588. shape = SubResource("RectangleShape2D_jl70t")
  589. disabled = true
  590. one_way_collision = true
  591. [node name="Sprite2D" type="Sprite2D" parent="CameraCenterJoint"]
  592. visible = false
  593. texture = ExtResource("20_34tqy")
  594. [node name="ScoreNoteSpawner" type="Node" parent="."]
  595. script = ExtResource("8_4ojwh")
  596. metadata/_custom_type_script = "uid://5octqlf4ohel"
  597. [node name="StarTimer" type="Timer" parent="."]
  598. process_mode = 1
  599. wait_time = 10.0
  600. one_shot = true
  601. [node name="Checkpoint" type="Sprite2D" parent="."]
  602. process_mode = 3
  603. physics_interpolation_mode = 2
  604. self_modulate = Color(1, 1, 1, 0)
  605. z_index = 4096
  606. z_as_relative = false
  607. position = Vector2(0, -40)
  608. texture = ExtResource("13_uo1a1")
  609. [node name="Animation" type="AnimationPlayer" parent="Checkpoint"]
  610. libraries = {
  611. &"": SubResource("AnimationLibrary_f873f")
  612. }
  613. speed_scale = 2.0
  614. [node name="Label" type="Label" parent="Checkpoint"]
  615. visibility_layer = 2
  616. offset_left = -4.0
  617. offset_top = -4.0
  618. offset_right = 4.0
  619. offset_bottom = 4.0
  620. theme_override_colors/font_color = Color(1, 1, 1, 1)
  621. theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
  622. text = "1"
  623. horizontal_alignment = 1
  624. vertical_alignment = 1
  625. [node name="ResourceSetter" type="Node" parent="Checkpoint" node_paths=PackedStringArray("node_to_affect")]
  626. script = ExtResource("27_6ws8x")
  627. node_to_affect = NodePath("..")
  628. property_name = "texture"
  629. themed_resource = SubResource("Resource_2mfvl")
  630. metadata/_custom_type_script = "uid://cq6f682453q6o"
  631. [node name="HammerTimer" type="Timer" parent="."]
  632. process_mode = 1
  633. wait_time = 10.0
  634. one_shot = true
  635. [node name="SkidSFX" type="AudioStreamPlayer2D" parent="."]
  636. stream = ExtResource("18_hofol")
  637. bus = &"SFX"
  638. [node name="ResourceSetter" type="Node" parent="SkidSFX" node_paths=PackedStringArray("node_to_affect")]
  639. script = ExtResource("27_6ws8x")
  640. node_to_affect = NodePath("..")
  641. property_name = "stream"
  642. themed_resource = SubResource("Resource_cekpg")
  643. metadata/_custom_type_script = "uid://cq6f682453q6o"
  644. [node name="CanvasLayer" type="CanvasLayer" parent="."]
  645. process_mode = 3
  646. [node name="Control" type="Control" parent="CanvasLayer"]
  647. visible = false
  648. layout_mode = 3
  649. anchors_preset = 2
  650. anchor_top = 1.0
  651. anchor_bottom = 1.0
  652. grow_vertical = 0
  653. mouse_filter = 2
  654. [node name="ControllerOverlay" type="Sprite2D" parent="CanvasLayer/Control"]
  655. position = Vector2(4, -21)
  656. texture = ExtResource("19_bc3q3")
  657. centered = false
  658. region_enabled = true
  659. region_rect = Rect2(0, 0, 36, 16)
  660. [node name="Up" type="Sprite2D" parent="CanvasLayer/Control/ControllerOverlay"]
  661. position = Vector2(5, 6)
  662. texture = SubResource("AtlasTexture_bc3q3")
  663. centered = false
  664. script = SubResource("GDScript_bl5al")
  665. action_name = "move_up"
  666. idle_texture = SubResource("AtlasTexture_bl5al")
  667. pressed_texture = SubResource("AtlasTexture_bc3q3")
  668. [node name="Down" type="Sprite2D" parent="CanvasLayer/Control/ControllerOverlay"]
  669. position = Vector2(5, 10)
  670. texture = SubResource("AtlasTexture_bc3q3")
  671. centered = false
  672. script = SubResource("GDScript_bl5al")
  673. action_name = "move_down"
  674. idle_texture = SubResource("AtlasTexture_bl5al")
  675. pressed_texture = SubResource("AtlasTexture_bc3q3")
  676. [node name="Right" type="Sprite2D" parent="CanvasLayer/Control/ControllerOverlay"]
  677. position = Vector2(7, 8)
  678. texture = SubResource("AtlasTexture_bc3q3")
  679. centered = false
  680. script = SubResource("GDScript_bl5al")
  681. action_name = "move_right"
  682. idle_texture = SubResource("AtlasTexture_bl5al")
  683. pressed_texture = SubResource("AtlasTexture_bc3q3")
  684. [node name="Left" type="Sprite2D" parent="CanvasLayer/Control/ControllerOverlay"]
  685. position = Vector2(3, 8)
  686. texture = SubResource("AtlasTexture_bc3q3")
  687. centered = false
  688. script = SubResource("GDScript_bl5al")
  689. action_name = "move_left"
  690. idle_texture = SubResource("AtlasTexture_bl5al")
  691. pressed_texture = SubResource("AtlasTexture_bc3q3")
  692. [node name="Run" type="Sprite2D" parent="CanvasLayer/Control/ControllerOverlay"]
  693. position = Vector2(23, 8)
  694. scale = Vector2(1.5, 1.5)
  695. texture = SubResource("AtlasTexture_x2idl")
  696. centered = false
  697. script = SubResource("GDScript_bl5al")
  698. action_name = "run"
  699. idle_texture = SubResource("AtlasTexture_bl5al")
  700. pressed_texture = SubResource("AtlasTexture_x2idl")
  701. [node name="Jump" type="Sprite2D" parent="CanvasLayer/Control/ControllerOverlay"]
  702. position = Vector2(29, 8)
  703. scale = Vector2(1.5, 1.5)
  704. texture = SubResource("AtlasTexture_x2idl")
  705. centered = false
  706. script = SubResource("GDScript_bl5al")
  707. action_name = "jump"
  708. idle_texture = SubResource("AtlasTexture_bl5al")
  709. pressed_texture = SubResource("AtlasTexture_x2idl")
  710. [node name="Control2" type="Control" parent="CanvasLayer"]
  711. layout_mode = 3
  712. anchors_preset = 15
  713. anchor_right = 1.0
  714. anchor_bottom = 1.0
  715. grow_horizontal = 2
  716. grow_vertical = 2
  717. mouse_filter = 2
  718. [node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/Control2"]
  719. layout_mode = 1
  720. anchors_preset = -1
  721. anchor_left = 1.0
  722. anchor_top = 1.0
  723. anchor_right = 1.0
  724. anchor_bottom = 1.0
  725. offset_left = -40.0
  726. offset_top = -40.0
  727. grow_horizontal = 0
  728. grow_vertical = 0
  729. mouse_filter = 2
  730. theme_override_constants/margin_left = 0
  731. theme_override_constants/margin_right = 4
  732. theme_override_constants/margin_bottom = 4
  733. [node name="Timers" type="VBoxContainer" parent="CanvasLayer/Control2/MarginContainer"]
  734. layout_mode = 2
  735. mouse_filter = 2
  736. theme_override_constants/separation = 2
  737. alignment = 2
  738. [node name="PSwitchTimer" type="Control" parent="CanvasLayer/Control2/MarginContainer/Timers"]
  739. custom_minimum_size = Vector2(8, 8)
  740. layout_mode = 2
  741. size_flags_horizontal = 8
  742. mouse_filter = 2
  743. [node name="TimerSprite" type="Sprite2D" parent="CanvasLayer/Control2/MarginContainer/Timers/PSwitchTimer" node_paths=PackedStringArray("warn_sfx")]
  744. texture = ExtResource("29_uwhl4")
  745. centered = false
  746. hframes = 7
  747. region_enabled = true
  748. region_rect = Rect2(0, 0, 56, 8)
  749. script = ExtResource("30_o70e0")
  750. max_value = 10.0
  751. value_name = "p_switch_timer"
  752. warn_sfx = NodePath("../../../../../../TimerWarn")
  753. warn_threshold = 0.8500000000058208
  754. metadata/_custom_type_script = "uid://dn5efttgugwvb"
  755. [node name="StarTimer" type="Control" parent="CanvasLayer/Control2/MarginContainer/Timers"]
  756. custom_minimum_size = Vector2(8, 8)
  757. layout_mode = 2
  758. size_flags_horizontal = 8
  759. mouse_filter = 2
  760. [node name="TimerSprite" type="Sprite2D" parent="CanvasLayer/Control2/MarginContainer/Timers/StarTimer" node_paths=PackedStringArray("timer", "warn_sfx")]
  761. texture = ExtResource("29_uwhl4")
  762. centered = false
  763. hframes = 7
  764. frame = 6
  765. region_enabled = true
  766. region_rect = Rect2(0, 8, 56, 8)
  767. script = ExtResource("30_o70e0")
  768. max_value = 10.0
  769. value_name = "time_left"
  770. object = 2
  771. timer = NodePath("../../../../../../StarTimer")
  772. warn_sfx = NodePath("../../../../../../TimerWarn")
  773. warn_threshold = 0.8500000000058208
  774. metadata/_custom_type_script = "uid://dn5efttgugwvb"
  775. [node name="WingTimer" type="Control" parent="CanvasLayer/Control2/MarginContainer/Timers"]
  776. custom_minimum_size = Vector2(8, 8)
  777. layout_mode = 2
  778. size_flags_horizontal = 8
  779. mouse_filter = 2
  780. [node name="TimerSprite" type="Sprite2D" parent="CanvasLayer/Control2/MarginContainer/Timers/WingTimer" node_paths=PackedStringArray("warn_sfx")]
  781. texture = ExtResource("29_uwhl4")
  782. centered = false
  783. hframes = 7
  784. region_enabled = true
  785. region_rect = Rect2(0, 16, 56, 8)
  786. script = ExtResource("30_o70e0")
  787. max_value = 10.0
  788. value_name = "flight_meter"
  789. object = 1
  790. warn_sfx = NodePath("../../../../../../TimerWarn")
  791. warn_threshold = 0.8500000000058208
  792. metadata/_custom_type_script = "uid://dn5efttgugwvb"
  793. [node name="HammerTimer" type="Control" parent="CanvasLayer/Control2/MarginContainer/Timers"]
  794. custom_minimum_size = Vector2(8, 8)
  795. layout_mode = 2
  796. size_flags_horizontal = 8
  797. mouse_filter = 2
  798. [node name="TimerSprite" type="Sprite2D" parent="CanvasLayer/Control2/MarginContainer/Timers/HammerTimer" node_paths=PackedStringArray("timer", "warn_sfx")]
  799. texture = ExtResource("29_uwhl4")
  800. centered = false
  801. hframes = 7
  802. region_enabled = true
  803. region_rect = Rect2(0, 24, 56, 8)
  804. script = ExtResource("30_o70e0")
  805. max_value = 10.0
  806. value_name = "time_left"
  807. object = 2
  808. timer = NodePath("../../../../../../HammerTimer")
  809. warn_sfx = NodePath("../../../../../../TimerWarn")
  810. warn_threshold = 0.8500000000058208
  811. metadata/_custom_type_script = "uid://dn5efttgugwvb"
  812. [node name="ThemedToJSONConverter" type="Node" parent="."]
  813. script = ExtResource("22_445e4")
  814. resource = SubResource("Resource_vphr8")
  815. json_file_path = "res://Assets/Sprites/Players/Luigi/Fire.json"
  816. metadata/_custom_type_script = "uid://cqif1li7otvpl"
  817. [node name="ResourceSetterNew" type="Node" parent="." node_paths=PackedStringArray("node_to_affect", "property_node")]
  818. unique_name_in_owner = true
  819. script = ExtResource("25_cekpg")
  820. node_to_affect = NodePath("../Sprite")
  821. property_node = NodePath("..")
  822. property_name = "sprite_frames"
  823. resource_json = ExtResource("26_o4wvw")
  824. use_cache = false
  825. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  826. [node name="InvinciblePalette" type="Sprite2D" parent="."]
  827. visible = false
  828. texture = ExtResource("2_bl5al")
  829. [node name="ResourceSetter" type="Node" parent="InvinciblePalette" node_paths=PackedStringArray("node_to_affect")]
  830. script = ExtResource("25_cekpg")
  831. node_to_affect = NodePath("..")
  832. property_name = "texture"
  833. mode = 1
  834. resource_json = ExtResource("29_vphr8")
  835. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  836. [node name="PlayerPalette" type="Sprite2D" parent="."]
  837. visible = false
  838. position = Vector2(0, -8)
  839. scale = Vector2(8, 8)
  840. texture = ExtResource("3_x2idl")
  841. [node name="ResourceSetterNew" type="Node" parent="PlayerPalette" node_paths=PackedStringArray("node_to_affect")]
  842. script = ExtResource("25_cekpg")
  843. node_to_affect = NodePath("..")
  844. property_name = "texture"
  845. mode = 1
  846. resource_json = ExtResource("10_xy8gq")
  847. metadata/_custom_type_script = "uid://cbal8ms2oe1ik"
  848. [node name="SmallCollision" type="CollisionPolygon2D" parent="." groups=["SmallCollisions"]]
  849. polygon = PackedVector2Array(4, -2, 4, -8, 1, -14, -1, -14, -4, -8, -4, -2, -2, 0, 2, 0)
  850. one_way_collision = true
  851. script = ExtResource("35_nbkfn")
  852. [node name="BigCollision" type="CollisionPolygon2D" parent="." groups=["BigCollisions"]]
  853. visible = false
  854. polygon = PackedVector2Array(-4, -2, -2, 0, 2, 0, 4, -2, 4, -23, 1, -28, -1, -28, -4, -23)
  855. script = ExtResource("35_nbkfn")
  856. [node name="FootL" type="CollisionShape2D" parent="." groups=["StepCollision"]]
  857. position = Vector2(-6, -4)
  858. shape = SubResource("SeparationRayShape2D_6ws8x")
  859. [node name="FootR" type="CollisionShape2D" parent="." groups=["StepCollision"]]
  860. position = Vector2(6, -4)
  861. shape = SubResource("SeparationRayShape2D_6ws8x")
  862. [node name="EditorPropertyExposer" type="Node" parent="."]
  863. script = ExtResource("28_hu5lw")
  864. properties = Array[String](["starting_power_state"])
  865. [node name="Node" type="Node" parent="."]
  866. process_mode = 3
  867. script = SubResource("GDScript_hu5lw")
  868. [node name="CameraHandler" type="Node2D" parent="." node_paths=PackedStringArray("camera", "camera_center_joint")]
  869. unique_name_in_owner = true
  870. process_mode = 3
  871. script = ExtResource("20_d7xah")
  872. camera = NodePath("../Camera")
  873. camera_center_joint = NodePath("../CameraCenterJoint")
  874. [node name="StepWallChecks" type="Node2D" parent="."]
  875. [node name="LWall" type="RayCast2D" parent="StepWallChecks"]
  876. position = Vector2(-6, -4)
  877. target_position = Vector2(-1, 0)
  878. collision_mask = 3
  879. hit_from_inside = true
  880. [node name="RWall" type="RayCast2D" parent="StepWallChecks"]
  881. position = Vector2(6, -4)
  882. target_position = Vector2(1, 0)
  883. collision_mask = 3
  884. hit_from_inside = true
  885. [node name="BlockCollision" type="Area2D" parent="."]
  886. collision_layer = 0
  887. collision_mask = 4
  888. [node name="SmallShape" type="CollisionShape2D" parent="BlockCollision" node_paths=PackedStringArray("link") groups=["SmallCollisions"]]
  889. visible = false
  890. position = Vector2(0, -16.875)
  891. shape = SubResource("RectangleShape2D_d7xah")
  892. debug_color = Color(1, 0, 0, 0.419608)
  893. script = ExtResource("21_jl70t")
  894. offset = Vector2(0, 13.5)
  895. link = NodePath("../../SmallCollision")
  896. [node name="BigShape" type="CollisionShape2D" parent="BlockCollision" node_paths=PackedStringArray("link") groups=["BigCollisions"]]
  897. position = Vector2(0, -32)
  898. shape = SubResource("RectangleShape2D_34tqy")
  899. disabled = true
  900. debug_color = Color(1, 0, 0, 0.419608)
  901. script = ExtResource("21_jl70t")
  902. offset = Vector2(0, 26)
  903. link = NodePath("../../BigCollision")
  904. [node name="TimerWarn" type="AudioStreamPlayer" parent="."]
  905. process_mode = 3
  906. stream = ExtResource("40_o70e0")
  907. bus = &"SFX"
  908. [node name="ResourceSetter" type="Node" parent="TimerWarn" node_paths=PackedStringArray("node_to_affect")]
  909. script = ExtResource("27_6ws8x")
  910. node_to_affect = NodePath("..")
  911. property_name = "stream"
  912. themed_resource = SubResource("Resource_xy8gq")
  913. metadata/_custom_type_script = "uid://cq6f682453q6o"
  914. [connection signal="frame_changed" from="Sprite" to="Sprite" method="on_frame_changed"]
  915. [connection signal="sprite_frames_changed" from="Sprite" to="Sprite" method="on_frame_changed"]
  916. [connection signal="area_entered" from="Sprite/HammerHitbox" to="." method="on_hammer_area_entered"]
  917. [connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"]
  918. [connection signal="area_exited" from="Hitbox" to="." method="on_area_exited"]
  919. [connection signal="body_entered" from="LavaPoisonDetect" to="." method="die" unbinds=1]
  920. [connection signal="timeout" from="StarTimer" to="." method="on_timeout"]
  921. [connection signal="timeout" from="HammerTimer" to="." method="on_hammer_timeout"]