From 05bca140fd87af12a162a3ce5cf345bfb06f793b Mon Sep 17 00:00:00 2001 From: JHDev2006 Date: Thu, 2 Oct 2025 10:09:21 +0100 Subject: [PATCH 1/3] fixed up players getting stuck in blocks, after collecting a powerup mid air --- Scenes/Levels/SMB1/World2/2-2.tscn | 54 +++++++++++------------ Scenes/Prefabs/LevelBG.tscn | 9 +--- Scenes/Prefabs/LevelObjects/WindArea.tscn | 38 ++++++---------- Scripts/Classes/Entities/Player.gd | 3 +- Scripts/Parts/GravityInverter.gd | 4 ++ 5 files changed, 47 insertions(+), 61 deletions(-) diff --git a/Scenes/Levels/SMB1/World2/2-2.tscn b/Scenes/Levels/SMB1/World2/2-2.tscn index d96d2ba..8339dc6 100644 --- a/Scenes/Levels/SMB1/World2/2-2.tscn +++ b/Scenes/Levels/SMB1/World2/2-2.tscn @@ -217,30 +217,30 @@ position = Vector2(2520, -16) position = Vector2(2616, -16) [connection signal="collected" from="Tiles/Coin" to="Tiles/Coin/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177168" to="Tiles/@Node2D@177168/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177169" to="Tiles/@Node2D@177169/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177170" to="Tiles/@Node2D@177170/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177171" to="Tiles/@Node2D@177171/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177172" to="Tiles/@Node2D@177172/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177173" to="Tiles/@Node2D@177173/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177174" to="Tiles/@Node2D@177174/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177175" to="Tiles/@Node2D@177175/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177176" to="Tiles/@Node2D@177176/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177177" to="Tiles/@Node2D@177177/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177178" to="Tiles/@Node2D@177178/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177179" to="Tiles/@Node2D@177179/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177180" to="Tiles/@Node2D@177180/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177181" to="Tiles/@Node2D@177181/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177182" to="Tiles/@Node2D@177182/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177183" to="Tiles/@Node2D@177183/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177184" to="Tiles/@Node2D@177184/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177185" to="Tiles/@Node2D@177185/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177186" to="Tiles/@Node2D@177186/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177187" to="Tiles/@Node2D@177187/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177188" to="Tiles/@Node2D@177188/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177189" to="Tiles/@Node2D@177189/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177190" to="Tiles/@Node2D@177190/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177191" to="Tiles/@Node2D@177191/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177192" to="Tiles/@Node2D@177192/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177193" to="Tiles/@Node2D@177193/LevelPersistance" method="set_as_active"] -[connection signal="collected" from="Tiles/@Node2D@177194" to="Tiles/@Node2D@177194/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21479" to="Tiles/@Node2D@21479/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21480" to="Tiles/@Node2D@21480/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21481" to="Tiles/@Node2D@21481/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21482" to="Tiles/@Node2D@21482/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21483" to="Tiles/@Node2D@21483/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21484" to="Tiles/@Node2D@21484/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21485" to="Tiles/@Node2D@21485/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21486" to="Tiles/@Node2D@21486/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21487" to="Tiles/@Node2D@21487/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21488" to="Tiles/@Node2D@21488/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21489" to="Tiles/@Node2D@21489/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21490" to="Tiles/@Node2D@21490/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21491" to="Tiles/@Node2D@21491/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21492" to="Tiles/@Node2D@21492/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21493" to="Tiles/@Node2D@21493/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21494" to="Tiles/@Node2D@21494/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21495" to="Tiles/@Node2D@21495/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21496" to="Tiles/@Node2D@21496/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21497" to="Tiles/@Node2D@21497/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21498" to="Tiles/@Node2D@21498/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21499" to="Tiles/@Node2D@21499/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21500" to="Tiles/@Node2D@21500/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21501" to="Tiles/@Node2D@21501/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21502" to="Tiles/@Node2D@21502/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21503" to="Tiles/@Node2D@21503/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21504" to="Tiles/@Node2D@21504/LevelPersistance" method="set_as_active"] +[connection signal="collected" from="Tiles/@Node2D@21505" to="Tiles/@Node2D@21505/LevelPersistance" method="set_as_active"] diff --git a/Scenes/Prefabs/LevelBG.tscn b/Scenes/Prefabs/LevelBG.tscn index d561dd2..09d8a94 100644 --- a/Scenes/Prefabs/LevelBG.tscn +++ b/Scenes/Prefabs/LevelBG.tscn @@ -679,7 +679,6 @@ position = Vector2(256, 256) amount = 128 lifetime = 20.0 preprocess = 20.0 -fixed_fps = 30 local_coords = true draw_order = 1 emission_shape = 3 @@ -690,10 +689,9 @@ gravity = Vector2(0, 0) initial_velocity_min = 20.0 initial_velocity_max = 50.0 -[node name="ResourceSetter" type="Node" parent="OverlayLayer/Particles/Snow" node_paths=PackedStringArray("node_to_affect")] +[node name="ResourceSetter" type="Node" parent="OverlayLayer/Particles/Snow"] process_mode = 1 script = ExtResource("10_lvidp") -node_to_affect = NodePath("") property_name = "texture" mode = 1 resource_json = ExtResource("25_aw4cr") @@ -708,7 +706,6 @@ amount = 64 texture = ExtResource("25_q36g4") lifetime = 30.0 preprocess = 20.0 -fixed_fps = 30 local_coords = true draw_order = 1 emission_shape = 3 @@ -721,9 +718,8 @@ angular_velocity_min = -720.0 angular_velocity_max = 720.0 anim_offset_max = 1.0 -[node name="ResourceSetterNew" type="Node" parent="OverlayLayer/Particles/Leaves" node_paths=PackedStringArray("node_to_affect")] +[node name="ResourceSetterNew" type="Node" parent="OverlayLayer/Particles/Leaves"] script = ExtResource("10_lvidp") -node_to_affect = NodePath("") property_name = "texture" mode = 1 resource_json = ExtResource("28_ugdi7") @@ -740,7 +736,6 @@ amount = 64 texture = SubResource("GradientTexture1D_78nlv") lifetime = 5.0 preprocess = 10.0 -fixed_fps = 30 fract_delta = false local_coords = true draw_order = 1 diff --git a/Scenes/Prefabs/LevelObjects/WindArea.tscn b/Scenes/Prefabs/LevelObjects/WindArea.tscn index 7886702..1ad16ae 100644 --- a/Scenes/Prefabs/LevelObjects/WindArea.tscn +++ b/Scenes/Prefabs/LevelObjects/WindArea.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://ccxhom4wrgfv4"] +[gd_scene load_steps=11 format=3 uid="uid://ccxhom4wrgfv4"] [ext_resource type="Texture2D" uid="uid://dy3p03djelkb3" path="res://Assets/Sprites/Particles/Leaves.png" id="1_0tjo2"] [ext_resource type="Script" uid="uid://d3kftxro4bfnv" path="res://Scripts/Classes/Entities/Objects/WindArea.gd" id="1_68lil"] @@ -17,27 +17,6 @@ particles_anim_h_frames = 2 particles_anim_v_frames = 1 particles_anim_loop = false -[sub_resource type="Curve" id="Curve_0tjo2"] -_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.894444, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] -point_count = 3 - -[sub_resource type="CurveTexture" id="CurveTexture_8c2la"] -curve = SubResource("Curve_0tjo2") - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_wu018"] -particle_flag_disable_z = true -emission_shape_scale = Vector3(1, 15, 1) -emission_shape = 3 -emission_box_extents = Vector3(1, 8, 1) -spread = 0.0 -initial_velocity_min = 100.0 -initial_velocity_max = 500.0 -angular_velocity_min = -720.0 -angular_velocity_max = 720.0 -gravity = Vector3(0, 0, 0) -alpha_curve = SubResource("CurveTexture_8c2la") -anim_offset_max = 1.0 - [sub_resource type="Resource" id="Resource_sbjyn"] script = ExtResource("5_3arhp") Overworld = ExtResource("3_qar1j") @@ -61,7 +40,7 @@ anchor_bottom = 0.5 grow_vertical = 2 metadata/_edit_use_anchors_ = true -[node name="Particles" type="GPUParticles2D" parent="CanvasLayer/Control"] +[node name="Particles" type="CPUParticles2D" parent="CanvasLayer/Control"] unique_name_in_owner = true material = SubResource("CanvasItemMaterial_qar1j") position = Vector2(-64, 0) @@ -69,11 +48,20 @@ emitting = false amount = 64 texture = ExtResource("1_0tjo2") lifetime = 2.0 -process_material = SubResource("ParticleProcessMaterial_wu018") +draw_order = 1 +emission_shape = 3 +emission_rect_extents = Vector2(1, 8) +spread = 0.0 +gravity = Vector2(0, 0) +initial_velocity_min = 100.0 +initial_velocity_max = 500.0 +angular_velocity_min = -720.0 +angular_velocity_max = 720.0 +anim_offset_max = 1.0 [node name="ResourceSetterNew" type="Node" parent="CanvasLayer/Control/Particles" node_paths=PackedStringArray("node_to_affect")] script = ExtResource("3_sbjyn") -node_to_affect = NodePath("..") +node_to_affect = NodePath("") property_name = "texture" mode = 1 resource_json = ExtResource("4_qvx5e") diff --git a/Scripts/Classes/Entities/Player.gd b/Scripts/Classes/Entities/Player.gd index 6aad8a4..ef77837 100644 --- a/Scripts/Classes/Entities/Player.gd +++ b/Scripts/Classes/Entities/Player.gd @@ -669,8 +669,7 @@ func get_power_up(power_name := "") -> void: await power_up_animation(power_name) else: return - if new_power_state.hitbox_size == "Big" and power_state.hitbox_size == "Small": - check_for_block() + check_for_block() power_state = new_power_state Global.player_power_states[player_id] = str(power_state.get_index()) can_hurt = true diff --git a/Scripts/Parts/GravityInverter.gd b/Scripts/Parts/GravityInverter.gd index cf3b06b..6ab209e 100644 --- a/Scripts/Parts/GravityInverter.gd +++ b/Scripts/Parts/GravityInverter.gd @@ -17,6 +17,9 @@ func on_player_entered(player: Player) -> void: player.gravity_vector = new_vector player.global_position.y -= 16 player.global_rotation = -player.gravity_vector.angle() + deg_to_rad(90) + player.get_node("CameraHandler").global_rotation = 0 + player.get_node("CameraHandler").position.x = 0 + player.get_node("CameraHandler").can_diff = false player.reset_physics_interpolation() func on_player_exited(player: Player) -> void: @@ -26,4 +29,5 @@ func on_player_exited(player: Player) -> void: player.global_position.y += 16 player.velocity.y *= 1.1 player.global_rotation = -player.gravity_vector.angle() + deg_to_rad(90) + player.get_node("CameraHandler").position.x = 0 player.reset_physics_interpolation() From 8dc1583f66f410d07972fc4c2ba248137cfbde4f Mon Sep 17 00:00:00 2001 From: JHDev2006 Date: Thu, 2 Oct 2025 11:13:02 +0100 Subject: [PATCH 2/3] IGT is now visible in marathon mode --- Scenes/Prefabs/GameHud.tscn | 76 +++++++++++++------ .../Prefabs/LevelObjects/BooRaceHandler.tscn | 25 +++++- Scripts/Classes/UI/GameHUD.gd | 6 ++ 3 files changed, 81 insertions(+), 26 deletions(-) diff --git a/Scenes/Prefabs/GameHud.tscn b/Scenes/Prefabs/GameHud.tscn index 7492a57..677415d 100644 --- a/Scenes/Prefabs/GameHud.tscn +++ b/Scenes/Prefabs/GameHud.tscn @@ -530,6 +530,7 @@ uppercase = true [node name="Time" type="Label" parent="Main/TimeDisplay/TimeLabel"] unique_name_in_owner = true +visible = false layout_mode = 1 anchors_preset = -1 offset_left = -12.0 @@ -540,27 +541,41 @@ text = " 000" horizontal_alignment = 2 uppercase = true -[node name="Stopwatch" type="Label" parent="Main/TimeDisplay/TimeLabel"] -unique_name_in_owner = true -layout_mode = 1 -anchors_preset = -1 -offset_left = -16.0 +[node name="VBoxContainer" type="VBoxContainer" parent="Main/TimeDisplay/TimeLabel"] +layout_mode = 0 +offset_left = -24.0 offset_top = 8.0 -offset_right = 24.0 -offset_bottom = 16.0 +offset_right = 56.0 +offset_bottom = 40.0 +theme_override_constants/separation = -8 +alignment = 1 + +[node name="Stopwatch" type="Label" parent="Main/TimeDisplay/TimeLabel/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 0 text = "00:00:00" +horizontal_alignment = 2 uppercase = true -[node name="PB" type="Label" parent="Main/TimeDisplay/TimeLabel"] +[node name="PB" type="Label" parent="Main/TimeDisplay/TimeLabel/VBoxContainer"] unique_name_in_owner = true -visible = false -layout_mode = 1 -anchors_preset = -1 -offset_left = -24.0 -offset_top = 16.0 -offset_right = 16.0 -offset_bottom = 24.0 +layout_mode = 2 +size_flags_vertical = 0 text = "+00:00:00" +horizontal_alignment = 2 +uppercase = true + +[node name="Control" type="Control" parent="Main/TimeDisplay/TimeLabel/VBoxContainer"] +custom_minimum_size = Vector2(0, 12) +layout_mode = 2 + +[node name="IGT" type="Label" parent="Main/TimeDisplay/TimeLabel/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 2 +text = " ⏲000" +horizontal_alignment = 2 uppercase = true [node name="Buffer5" type="Control" parent="Main"] @@ -918,7 +933,7 @@ grow_horizontal = 0 grow_vertical = 2 size_flags_horizontal = 10 size_flags_vertical = 8 -text = "⏲000" +text = "⏲00:00:00" horizontal_alignment = 2 [node name="ModernScore" type="Label" parent="ModernHUD/Right/ModernTime"] @@ -932,16 +947,27 @@ size_flags_horizontal = 8 size_flags_vertical = 8 text = "000000000" -[node name="ModernPB" type="Label" parent="ModernHUD/Right/ModernTime"] +[node name="VBoxContainer" type="VBoxContainer" parent="ModernHUD/Right/ModernTime"] +layout_mode = 0 +offset_top = 9.0 +offset_right = 80.0 +offset_bottom = 41.0 +theme_override_constants/separation = -4 + +[node name="ModernPB" type="Label" parent="ModernHUD/Right/ModernTime/VBoxContainer"] unique_name_in_owner = true -layout_mode = 1 -anchors_preset = -1 -offset_top = 12.0 -offset_right = 40.0 -offset_bottom = 28.0 +layout_mode = 2 size_flags_horizontal = 10 size_flags_vertical = 8 -text = "⏲00" +text = "⏲00:00:00" +horizontal_alignment = 2 + +[node name="ModernIGT" type="Label" parent="ModernHUD/Right/ModernTime/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 10 +size_flags_vertical = 8 +text = "⏲000" horizontal_alignment = 2 [node name="Timer" type="Timer" parent="."] @@ -1036,7 +1062,7 @@ metadata/_custom_type_script = "uid://cbal8ms2oe1ik" [node name="TextShadowColourChanger" type="Node" parent="." node_paths=PackedStringArray("labels", "shadow_node")] script = ExtResource("18_jwl8o") -labels = [NodePath("../Main/ScoreName/CharacterName"), NodePath("../Main/ScoreName/Score"), NodePath("../Main/CoinCount/CoinLabel"), NodePath("../Main/LevelDisplay/WorldTitle"), NodePath("../Main/LevelDisplay/WorldTitle/LevelNum"), NodePath("../Main/TimeDisplay/TimeLabel"), NodePath("../Main/TimeDisplay/TimeLabel/Time"), NodePath("../Main/TimeDisplay/TimeLabel/Stopwatch"), NodePath("../Main/TimeDisplay/TimeLabel/PB"), NodePath("../ModernHUD/TopLeft/CoinCount/ModernCoinCount"), NodePath("../ModernHUD/Right/ModernTime"), NodePath("../ModernHUD/Right/ModernTime/ModernScore"), NodePath("../Main/CoinCount/KeyCount/KeyAmount"), NodePath("../ModernHUD/TopLeft/ModernKeyCount/ModernKeyAmount"), NodePath("../ModernHUD/TopLeft/LifeCount/ModernLifeCount"), NodePath("../Combo/ComboAmount"), null, null, NodePath("../ModernHUD/Right/ModernTime/ModernPB")] +labels = [NodePath("../Main/ScoreName/CharacterName"), NodePath("../Main/ScoreName/Score"), NodePath("../Main/CoinCount/CoinLabel"), NodePath("../Main/LevelDisplay/WorldTitle"), NodePath("../Main/LevelDisplay/WorldTitle/LevelNum"), NodePath("../Main/TimeDisplay/TimeLabel"), NodePath("../Main/TimeDisplay/TimeLabel/Time"), NodePath("../Main/TimeDisplay/TimeLabel/VBoxContainer/Stopwatch"), NodePath("../Main/TimeDisplay/TimeLabel/VBoxContainer/PB"), NodePath("../ModernHUD/TopLeft/CoinCount/ModernCoinCount"), NodePath("../ModernHUD/Right/ModernTime"), NodePath("../ModernHUD/Right/ModernTime/ModernScore"), NodePath("../Main/CoinCount/KeyCount/KeyAmount"), NodePath("../ModernHUD/TopLeft/ModernKeyCount/ModernKeyAmount"), NodePath("../ModernHUD/TopLeft/LifeCount/ModernLifeCount"), NodePath("../Combo/ComboAmount"), null, null, NodePath("../ModernHUD/Right/ModernTime/VBoxContainer/ModernPB"), NodePath("../Main/TimeDisplay/TimeLabel/VBoxContainer/IGT"), NodePath("../ModernHUD/Right/ModernTime/VBoxContainer/ModernIGT")] shadow_node = NodePath("../Main/RedCoins/BorderL/Shadow") [node name="HudTemplate" type="Sprite2D" parent="."] @@ -1048,7 +1074,7 @@ centered = false [node name="LabelFontChanger" type="Node" parent="." node_paths=PackedStringArray("labels")] script = ExtResource("15_jwl8o") -labels = [NodePath("../Main/ScoreName/CharacterName"), NodePath("../Main/ScoreName/Score"), NodePath("../Main/CoinCount/CoinLabel"), NodePath("../Main/LevelDisplay/WorldTitle"), NodePath("../Main/LevelDisplay/WorldTitle/LevelNum"), NodePath("../Main/TimeDisplay/TimeLabel"), NodePath("../Main/TimeDisplay/TimeLabel/Time"), NodePath("../ModernHUD/TopLeft/CoinCount/ModernCoinCount"), NodePath("../ModernHUD/Right/ModernTime"), NodePath("../ModernHUD/Right/ModernTime/ModernScore"), NodePath("../Main/CoinCount/KeyCount/KeyAmount"), NodePath("../Main/TimeDisplay/TimeLabel/Stopwatch"), NodePath("../Main/TimeDisplay/TimeLabel/PB"), NodePath("../ModernHUD/TopLeft/LifeCount/ModernLifeCount"), NodePath("../Main/CoinCount/KeyCount/KeyAmount"), NodePath("../Combo/ComboAmount"), NodePath("../ModernHUD/TopLeft/ModernKeyCount/ModernKeyAmount"), NodePath("../Main/LevelDisplay/WorldTitle/LevelNum/Crown"), NodePath("../ModernHUD/Right/ModernTime/ModernPB")] +labels = [NodePath("../Main/ScoreName/CharacterName"), NodePath("../Main/ScoreName/Score"), NodePath("../Main/CoinCount/CoinLabel"), NodePath("../Main/LevelDisplay/WorldTitle"), NodePath("../Main/LevelDisplay/WorldTitle/LevelNum"), NodePath("../Main/TimeDisplay/TimeLabel"), NodePath("../Main/TimeDisplay/TimeLabel/Time"), NodePath("../ModernHUD/TopLeft/CoinCount/ModernCoinCount"), NodePath("../ModernHUD/Right/ModernTime"), NodePath("../ModernHUD/Right/ModernTime/ModernScore"), NodePath("../Main/CoinCount/KeyCount/KeyAmount"), NodePath("../Main/TimeDisplay/TimeLabel/VBoxContainer/Stopwatch"), NodePath("../Main/TimeDisplay/TimeLabel/VBoxContainer/PB"), NodePath("../ModernHUD/TopLeft/LifeCount/ModernLifeCount"), NodePath("../Main/CoinCount/KeyCount/KeyAmount"), NodePath("../Combo/ComboAmount"), NodePath("../ModernHUD/TopLeft/ModernKeyCount/ModernKeyAmount"), NodePath("../Main/LevelDisplay/WorldTitle/LevelNum/Crown"), NodePath("../ModernHUD/Right/ModernTime/VBoxContainer/ModernPB"), NodePath("../Main/TimeDisplay/TimeLabel/VBoxContainer/IGT"), NodePath("../ModernHUD/Right/ModernTime/VBoxContainer/ModernIGT")] metadata/_custom_type_script = "uid://co6tjg3w6qpd8" [node name="TextureUpdater" type="Node" parent="." node_paths=PackedStringArray("sprites")] diff --git a/Scenes/Prefabs/LevelObjects/BooRaceHandler.tscn b/Scenes/Prefabs/LevelObjects/BooRaceHandler.tscn index 08a84fe..72a4d8d 100644 --- a/Scenes/Prefabs/LevelObjects/BooRaceHandler.tscn +++ b/Scenes/Prefabs/LevelObjects/BooRaceHandler.tscn @@ -89,6 +89,18 @@ tracks/2/keys = { "update": 1, "values": [true, false] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Countdown:playing") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} [sub_resource type="Animation" id="Animation_axajb"] length = 0.001 @@ -128,6 +140,18 @@ tracks/2/keys = { "update": 1, "values": [true] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Countdown:playing") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_qeaax"] _data = { @@ -167,7 +191,6 @@ metadata/_custom_type_script = "uid://cq6f682453q6o" [node name="Countdown" type="AudioStreamPlayer" parent="."] stream = ExtResource("6_qeaax") -autoplay = true bus = &"SFX" script = ExtResource("7_reyer") metadata/_custom_type_script = "uid://dmtw1jesw1vl7" diff --git a/Scripts/Classes/UI/GameHUD.gd b/Scripts/Classes/UI/GameHUD.gd index 9ef4c47..869c4f1 100644 --- a/Scripts/Classes/UI/GameHUD.gd +++ b/Scripts/Classes/UI/GameHUD.gd @@ -26,6 +26,7 @@ func handle_main_hud() -> void: $ModernHUD.visible = Settings.file.visuals.modern_hud $Main/RedCoins.hide() $Main/CoinCount.show() + %IGT.hide() %Combo.hide() $Timer.paused = Settings.file.difficulty.time_limit == 2 $%Time.show() @@ -147,6 +148,11 @@ func handle_yoshi_radar() -> void: func handle_speedrun_timer() -> void: %Time.hide() %Stopwatch.show() + %IGT.show() + %IGT.modulate.a = int([Global.GameMode.MARATHON, Global.GameMode.MARATHON_PRACTICE].has(Global.current_game_mode) and get_tree().get_first_node_in_group("Players") != null) + %IGT.text = "⏲" + (str(Global.time).pad_zeros(3)) + %ModernIGT.visible = %IGT.modulate.a == 1 + %ModernIGT.text = %IGT.text var late = SpeedrunHandler.timer > SpeedrunHandler.best_time var diff = SpeedrunHandler.best_time - SpeedrunHandler.timer %PB.visible = SpeedrunHandler.best_time > 0 and (SpeedrunHandler.timer > 0 or Global.current_level != null) From 9133629c111e654acd63303a83a4b39fbefcd2ba Mon Sep 17 00:00:00 2001 From: JHDev2006 Date: Thu, 2 Oct 2025 11:17:42 +0100 Subject: [PATCH 3/3] LIVES NOW GET SAVED --- Scripts/Classes/Singletons/SaveManager.gd | 1 + 1 file changed, 1 insertion(+) diff --git a/Scripts/Classes/Singletons/SaveManager.gd b/Scripts/Classes/Singletons/SaveManager.gd index 0de3abc..1c7362c 100644 --- a/Scripts/Classes/Singletons/SaveManager.gd +++ b/Scripts/Classes/Singletons/SaveManager.gd @@ -87,6 +87,7 @@ func write_save(campaign: String = Global.current_campaign, force := false) -> v Global.high_score = Global.score save_json["World"] = Global.world_num save_json["Level"] = Global.level_num + save_json["Lives"] = Global.lives save_json["Coins"] = Global.coins save_json["Score"] = Global.score save_json["GameWin"] = Global.game_beaten