Compare commits

...

14 commits

Author SHA1 Message Date
jdaster64
5daa630a72
Alternate Challenge HUD Proposal: Previously obtained coins/eggs are transparent (#712)
* Challenge Hunt: Transparent HUD for previously obtained coins/eggs

* Add 'score potential' tracker, make egg not default to empty if egg isn't in the current room on a replay

* Make transparent HUD elements render on top, and become invisible if their fully-opaque equivalents should be enabled instead
2025-11-22 16:41:04 +00:00
John Cooper McDonald
5a0a72daeb
Fix Mario and Luigi walk frame being 1 pixel to far to the left (#647)
* Fix Mario and Luigi walk frame being 1 pixel to far to the left

* Update Global.gd
2025-11-22 16:39:42 +00:00
jdaster64
0e09331e1a
Make Yoshi Eggs award score / collection status immediately (#714)
* Make Yoshi Egg award collection status + points immediately, and have the score note be decorative

* Removed gave_points var
2025-11-22 16:39:08 +00:00
SkyanUltra
c41d6fda47
Some snapshot tools (#680)
variable for easily toggling on and off snapshot mode, and also some simple prints for things like unix time and what snapshot build the game would currently be on upon launch
2025-11-22 16:38:40 +00:00
CST1229
7ca6fe8611
Allow choices and random variation keys to use links (#681) 2025-11-22 16:38:01 +00:00
KirbyKidJ
7151068890
Tweaked Lost Levels A-1 and Special 6-3 (#726)
* Tweaked Lost Levels A-1 and Special 6-3

Self explanatory pull request. I just tweaked the design of those two levels.

* Added some corner pieces to 10-1

* Moved 10-1 changes to turn on based on setting
2025-11-22 16:36:59 +00:00
jdaster64
07c95b1b35
Changed target time comparisons to round down to nearest centisecond (#708)
* Changed target time comparisons in many places to round each side down to the nearest 0.01 seconds

* Add met_target_time to MarathonSelect script
2025-11-22 16:36:49 +00:00
jdaster64
135490826c
Buzzy Beetle shell fixes (#718) 2025-11-22 16:36:11 +00:00
jdaster64
6364496ee5
Challenge hunt hidden block changes (#707)
* Challenge Hunt hidden block locations tweaked slightly

* Changed 4-1
2025-11-22 16:35:43 +00:00
jdaster64
2998f3416a
new challenge hunt scores (#723) 2025-11-22 16:35:27 +00:00
SkyanUltra
3687b29f95
Issue page touch-up (#725)
* Refine bug report template for clarity and detail

Updated the bug report template to enhance clarity and detail in the descriptions and labels.

* Add question issue template for Super Mario Bros. Remastered

This new issue template allows users to ask questions regarding Super Mario Bros. Remastered, including checkboxes for issue types and a textarea for detailed descriptions.

* Add suggestion issue template for Super Mario Bros.

This template allows users to submit suggestions for Super Mario Bros. Remastered, including various types of suggestions and a description field.
2025-11-22 16:35:13 +00:00
KirbyKidJ
7457570014
Door Pose Fix for Custom Levels (#728)
Fixes an issue with the DoorPose animation and detection I added where if there was another End Castle behind you, you'd get sent back in the level. This is primarily an issue for Custom Levels, and is extremely noticeable when reloading resource packs. And in the video below, it also broke the Door Pose animation in the level.

This PR adds an extra check by using a collision shape to make sure the player is in the right area before applying the positional changes.
2025-11-22 16:34:57 +00:00
SkyanUltra
a681fed56d
Fix sideways pipe hitbox collision (#730)
* Fixed sideways pipe hitbox collision

This fixes a bug where players would clip the top edge of a sideways pipe's hitbox and get counted as being on the floor despite being above the pipe, thus allowing them to get warped into the pipe from there.

* Fix to prevent entering pipes from too low

this implements a simple distance check from the player to the hitbox to ensure the player can only ever enter the pipe when they're close enough in proximity to the pipe, preventing them from entering from a tile too low.

* co mnment

:earnest:
2025-11-22 16:32:59 +00:00
SkyanUltra
06dafbace2
Fixed odd looking mushrooms (#679)
Broken stems in SMB 4-3 and SMBLL 9-2 were fixed, and the mushroom at the beginning of SMBS 4-2 was extended because it triggered a primal rage within me that made my eyes go red with rage. (It was uneven LOL)
2025-11-22 16:32:24 +00:00
41 changed files with 1746 additions and 1360 deletions

View file

@ -1,6 +1,6 @@
name: Bug Report
description: Report a bug with Super Mario Bros. Remastered
labels: ["bug"]
description: Report a bug or general issue with Super Mario Bros. Remastered
labels: ["🪲 Bug"]
title: '[Bug Report]: '
body:
@ -8,21 +8,31 @@ body:
id: version
attributes:
label: "Version"
description: "Specify the version of the game you used when you encountered the bug. You can find the game version at the bottom-left of the title screen."
description: "Specify the exact version of the game you used when you encountered the bug/issue. (You can find the game version at the bottom-left of the title screen.)"
placeholder: "1.0.2"
validations:
required: true
- type: checkboxes
id: bug_type
id: type
attributes:
label: "Bug Type"
description: "Select all that apply (leave blank if unsure)."
label: "Type of Issue"
description: 'Select all applicable areas of the game that are affected by this bug/issue. (Select "Miscellaneous" if unsure.)'
options:
- label: campaign bug
- label: editor bug
- label: custom pack bug
- label: ui bug
- label: ROM Verification
- label: Campaign
- label: Custom Level
- label: Level Editor
- label: Default Resources
- label: Custom Resources
- label: GML Modding
- label: Inaccuracy
- label: Localization
- label: UI (User Interface)
- label: Miscellaneous
validations:
required: false
required: true
- type: textarea
id: description
attributes:
@ -33,7 +43,7 @@ body:
id: reproduction_steps
attributes:
label: "Reproduction Steps"
description: "Please list the steps taken to reproduce the bug, e.g. 1. Go to ... 2. Do ..."
description: "Please list the steps taken to reproduce the bug, if applicable. (e.g. 1. Go to ... 2. Do ...)"
- type: textarea
id: screenshots

31
.github/ISSUE_TEMPLATE/02-question.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: Question
description: Ask a question regarding Super Mario Bros. Remastered
labels: ["❔ Question"]
title: '[Question]: '
body:
- type: checkboxes
id: type
attributes:
label: "Type of Issue"
description: "Please select any applicable areas of the game that are affected by this question. (Leave blank if unsure.)"
options:
- label: ROM Verification
- label: Campaign
- label: Custom Level
- label: Level Editor
- label: Default Resources
- label: Custom Resources
- label: GML Modding
- label: Inaccuracy
- label: Localization
- label: UI (User Interface)
- label: Miscellaneous
validations:
required: false
- type: textarea
id: description
attributes:
label: "Description"
description: "Please write your question in a clear and concise manner."

View file

@ -0,0 +1,37 @@
name: Suggestion
description: Submit a suggestion for Super Mario Bros. Remastered.
labels: ["💡 Suggestion"]
title: '[Suggestion]: '
body:
- type: checkboxes
id: type
attributes:
label: "Type of Suggestion"
description: 'Select all applicable areas of the game that this suggestion touches on. (Select "Miscellaneous" if unsure.)'
options:
- label: ROM Verification
- label: Campaign
- label: Custom Level
- label: Level Editor
- label: Default Resources
- label: Custom Resources
- label: GML Modding
- label: Inaccuracy
- label: Localization
- label: UI (User Interface)
- label: Miscellaneous
validations:
required: true
- type: textarea
id: description
attributes:
label: "Description"
description: "Please write a clear and concise description of the suggestion you have. Nothing too ambitious, please!"
- type: textarea
id: screenshots
attributes:
label: "Screenshots"
description: "If applicable, add screenshots to help explain the suggestion."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -94,17 +94,17 @@ func get_progress() -> int:
for x in SpeedrunHandler.best_level_warpless_times:
var level := 0
for i in x:
if i <= SpeedrunHandler.LEVEL_GOLD_WARPLESS_TIMES[campaign][world][level] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index] and i > 0:
if SpeedrunHandler.met_target_time(i, SpeedrunHandler.LEVEL_GOLD_WARPLESS_TIMES[campaign][world][level] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index]):
medal_amount += 1
level += 1
world += 1
for x in SpeedrunHandler.best_level_any_times:
if SpeedrunHandler.best_level_any_times[x] <= SpeedrunHandler.LEVEL_GOLD_ANY_TIMES[campaign][x] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index] and SpeedrunHandler.best_level_any_times[x] > 0:
if SpeedrunHandler.met_target_time(SpeedrunHandler.best_level_any_times[x], SpeedrunHandler.LEVEL_GOLD_ANY_TIMES[campaign][x] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index]):
medal_amount += 1
var save = JSON.parse_string(FileAccess.open(Global.config_path.path_join(\"saves/\" + campaign + \".sav\"), FileAccess.READ).get_as_text())
if save.get(\"BestWarplessTime\", -1) <= SpeedrunHandler.GOLD_WARPLESS_TIMES[campaign] and save.get(\"BestWarplessTime\", -1) > 0:
if SpeedrunHandler.met_target_time(save.get(\"BestWarplessTime\", -1), SpeedrunHandler.GOLD_WARPLESS_TIMES[campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index]):
medal_amount += 1
if save.get(\"BestAnyTime\", -1) <= SpeedrunHandler.GOLD_ANY_TIMES[campaign] and save.get(\"BestAnyTime\", -1) > 0:
if SpeedrunHandler.met_target_time(save.get(\"BestAnyTime\", -1), SpeedrunHandler.GOLD_ANY_TIMES[campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[medal_index]):
medal_amount += 1
return medal_amount
"

View file

@ -103,7 +103,7 @@ position = Vector2(1896, -120)
id = 4
[node name="InvisibleQuestionBlock" parent="ChallengeNodes" instance=ExtResource("12_5sds7")]
position = Vector2(1400, -104)
position = Vector2(1400, -88)
[node name="InvisibleQuestionBlock2" parent="ChallengeNodes" instance=ExtResource("12_5sds7")]
position = Vector2(1400, -152)
@ -177,11 +177,11 @@ direction = 1
position = Vector2(1240, -136)
[connection signal="collected" from="Tiles/Coin" to="Tiles/Coin/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@28838" to="Tiles/@Node2D@28838/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@28839" to="Tiles/@Node2D@28839/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@28840" to="Tiles/@Node2D@28840/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@28841" to="Tiles/@Node2D@28841/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@28842" to="Tiles/@Node2D@28842/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@29584" to="Tiles/@Node2D@29584/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@29585" to="Tiles/@Node2D@29585/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@29586" to="Tiles/@Node2D@29586/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@29587" to="Tiles/@Node2D@29587/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@29588" to="Tiles/@Node2D@29588/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/BrickBlock" to="Tiles/BrickBlock/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/BrickBlock" to="Tiles/BrickBlock/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/BrickBlock" to="Tiles/BrickBlock" method="check_brick_empty"]
@ -189,80 +189,80 @@ position = Vector2(1240, -136)
[connection signal="player_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28843" to="Tiles/@AnimatableBody2D@28843/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28844" to="Tiles/@AnimatableBody2D@28844/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28845" to="Tiles/@AnimatableBody2D@28845/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28846" to="Tiles/@AnimatableBody2D@28846/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@28847" to="Tiles/@AnimatableBody2D@28847/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29589" to="Tiles/@AnimatableBody2D@29589/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29590" to="Tiles/@AnimatableBody2D@29590/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29591" to="Tiles/@AnimatableBody2D@29591/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29592" to="Tiles/@AnimatableBody2D@29592/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@29593" to="Tiles/@AnimatableBody2D@29593/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="area_entered" from="Tiles/DeathPit" to="Tiles/DeathPit" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28848" to="Tiles/@Area2D@28848" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28849" to="Tiles/@Area2D@28849" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28850" to="Tiles/@Area2D@28850" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28851" to="Tiles/@Area2D@28851" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28852" to="Tiles/@Area2D@28852" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28853" to="Tiles/@Area2D@28853" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28854" to="Tiles/@Area2D@28854" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28855" to="Tiles/@Area2D@28855" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28856" to="Tiles/@Area2D@28856" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28857" to="Tiles/@Area2D@28857" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28858" to="Tiles/@Area2D@28858" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28859" to="Tiles/@Area2D@28859" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28860" to="Tiles/@Area2D@28860" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28861" to="Tiles/@Area2D@28861" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28862" to="Tiles/@Area2D@28862" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28863" to="Tiles/@Area2D@28863" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28864" to="Tiles/@Area2D@28864" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28865" to="Tiles/@Area2D@28865" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28866" to="Tiles/@Area2D@28866" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28867" to="Tiles/@Area2D@28867" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28868" to="Tiles/@Area2D@28868" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28869" to="Tiles/@Area2D@28869" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28870" to="Tiles/@Area2D@28870" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28871" to="Tiles/@Area2D@28871" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28872" to="Tiles/@Area2D@28872" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28873" to="Tiles/@Area2D@28873" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28874" to="Tiles/@Area2D@28874" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28875" to="Tiles/@Area2D@28875" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28876" to="Tiles/@Area2D@28876" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28877" to="Tiles/@Area2D@28877" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28878" to="Tiles/@Area2D@28878" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28879" to="Tiles/@Area2D@28879" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28880" to="Tiles/@Area2D@28880" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28881" to="Tiles/@Area2D@28881" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28882" to="Tiles/@Area2D@28882" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28883" to="Tiles/@Area2D@28883" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28884" to="Tiles/@Area2D@28884" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@28885" to="Tiles/@Area2D@28885" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29594" to="Tiles/@Area2D@29594" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29595" to="Tiles/@Area2D@29595" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29596" to="Tiles/@Area2D@29596" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29597" to="Tiles/@Area2D@29597" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29598" to="Tiles/@Area2D@29598" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29599" to="Tiles/@Area2D@29599" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29600" to="Tiles/@Area2D@29600" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29601" to="Tiles/@Area2D@29601" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29602" to="Tiles/@Area2D@29602" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29603" to="Tiles/@Area2D@29603" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29604" to="Tiles/@Area2D@29604" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29605" to="Tiles/@Area2D@29605" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29606" to="Tiles/@Area2D@29606" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29607" to="Tiles/@Area2D@29607" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29608" to="Tiles/@Area2D@29608" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29609" to="Tiles/@Area2D@29609" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29610" to="Tiles/@Area2D@29610" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29611" to="Tiles/@Area2D@29611" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29612" to="Tiles/@Area2D@29612" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29613" to="Tiles/@Area2D@29613" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29614" to="Tiles/@Area2D@29614" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29615" to="Tiles/@Area2D@29615" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29616" to="Tiles/@Area2D@29616" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29617" to="Tiles/@Area2D@29617" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29618" to="Tiles/@Area2D@29618" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29619" to="Tiles/@Area2D@29619" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29620" to="Tiles/@Area2D@29620" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29621" to="Tiles/@Area2D@29621" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29622" to="Tiles/@Area2D@29622" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29623" to="Tiles/@Area2D@29623" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29624" to="Tiles/@Area2D@29624" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29625" to="Tiles/@Area2D@29625" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29626" to="Tiles/@Area2D@29626" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29627" to="Tiles/@Area2D@29627" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29628" to="Tiles/@Area2D@29628" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29629" to="Tiles/@Area2D@29629" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29630" to="Tiles/@Area2D@29630" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@29631" to="Tiles/@Area2D@29631" method="area_entered"]
[connection signal="axe_touched" from="CastleBridge" to="Bowser" method="bridge_fall"]
[connection signal="victory_begin" from="CastleBridge" to="ChallengeNodes/CastleChallengeEnd" method="begin"]
[connection signal="victory_begin" from="CastleBridge" to="CastleToad" method="begin"]

View file

@ -135,13 +135,13 @@ item = ExtResource("22_fv5m5")
metadata/r_coin_id = 3
[node name="DecoTiles" parent="ChallengeNodes" instance=ExtResource("20_tkwal")]
tile_map_data = PackedByteArray("AAC2AP//AAAAAAAAAAC3AP//AAACAAAAAAA=")
tile_map_data = PackedByteArray("AAC5AP//AAACAAAAAAC4AP//AAAAAAAAAAA=")
[node name="InvisibleQuestionBlock" parent="ChallengeNodes" instance=ExtResource("7_nc50y")]
position = Vector2(2928, -56)
position = Vector2(2968, -56)
[node name="InvisibleQuestionBlock2" parent="ChallengeNodes" instance=ExtResource("7_nc50y")]
position = Vector2(2928, -104)
position = Vector2(2968, -120)
item = ExtResource("24_s34l8")
[node name="BrickBlock" parent="ChallengeNodes" instance=ExtResource("25_hh48n")]
@ -167,16 +167,18 @@ exit_only = true
[connection signal="block_destroyed" from="Tiles/BrickBlock" to="Tiles/BrickBlock/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/BrickBlock" to="Tiles/BrickBlock/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/BrickBlock" to="Tiles/BrickBlock" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/BrickBlock" to="Tiles/BrickBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147714" to="Tiles/@AnimatableBody2D@147714/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147714" to="Tiles/@AnimatableBody2D@147714/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147714" to="Tiles/@AnimatableBody2D@147714" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147714" to="Tiles/@AnimatableBody2D@147714/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147714" to="Tiles/@AnimatableBody2D@147714" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147714" to="Tiles/@AnimatableBody2D@147714/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494/LevelPersistance" method="set_as_active"]
[connection signal="item_changed" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494" method="check_brick_empty"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494" method="on_block_hit"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494" method="on_shell_block_hit"]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30494" to="Tiles/@AnimatableBody2D@30494/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock" method="player_mushroom_check"]
@ -184,131 +186,131 @@ exit_only = true
[connection signal="player_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147715" to="Tiles/@AnimatableBody2D@147715/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147716" to="Tiles/@AnimatableBody2D@147716/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30495" to="Tiles/@AnimatableBody2D@30495/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30496" to="Tiles/@AnimatableBody2D@30496/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="collected" from="Tiles/Coin" to="Tiles/Coin/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147717" to="Tiles/@Node2D@147717/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147718" to="Tiles/@Node2D@147718/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147719" to="Tiles/@Node2D@147719/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147720" to="Tiles/@AnimatableBody2D@147720/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147721" to="Tiles/@AnimatableBody2D@147721/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147722" to="Tiles/@AnimatableBody2D@147722/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147723" to="Tiles/@AnimatableBody2D@147723/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="collected" from="Tiles/@Node2D@147724" to="Tiles/@Node2D@147724/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147725" to="Tiles/@Node2D@147725/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147726" to="Tiles/@Node2D@147726/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147727" to="Tiles/@Node2D@147727/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147728" to="Tiles/@Node2D@147728/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147729" to="Tiles/@Node2D@147729/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147730" to="Tiles/@Node2D@147730/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147731" to="Tiles/@Node2D@147731/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147732" to="Tiles/@Node2D@147732/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147733" to="Tiles/@Node2D@147733/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@147734" to="Tiles/@Node2D@147734/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147735" to="Tiles/@AnimatableBody2D@147735/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147736" to="Tiles/@AnimatableBody2D@147736/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147737" to="Tiles/@AnimatableBody2D@147737/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147738" to="Tiles/@AnimatableBody2D@147738/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147739" to="Tiles/@AnimatableBody2D@147739/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147740" to="Tiles/@AnimatableBody2D@147740/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147741" to="Tiles/@AnimatableBody2D@147741/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@147742" to="Tiles/@AnimatableBody2D@147742/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="collected" from="Tiles/@Node2D@30497" to="Tiles/@Node2D@30497/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30498" to="Tiles/@Node2D@30498/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30499" to="Tiles/@Node2D@30499/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30500" to="Tiles/@AnimatableBody2D@30500/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30501" to="Tiles/@AnimatableBody2D@30501/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30502" to="Tiles/@AnimatableBody2D@30502/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30503" to="Tiles/@AnimatableBody2D@30503/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="collected" from="Tiles/@Node2D@30504" to="Tiles/@Node2D@30504/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30505" to="Tiles/@Node2D@30505/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30506" to="Tiles/@Node2D@30506/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30507" to="Tiles/@Node2D@30507/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30508" to="Tiles/@Node2D@30508/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30509" to="Tiles/@Node2D@30509/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30510" to="Tiles/@Node2D@30510/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30511" to="Tiles/@Node2D@30511/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30512" to="Tiles/@Node2D@30512/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30513" to="Tiles/@Node2D@30513/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@30514" to="Tiles/@Node2D@30514/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30515" to="Tiles/@AnimatableBody2D@30515/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30516" to="Tiles/@AnimatableBody2D@30516/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30517" to="Tiles/@AnimatableBody2D@30517/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30518" to="Tiles/@AnimatableBody2D@30518/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30519" to="Tiles/@AnimatableBody2D@30519/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30520" to="Tiles/@AnimatableBody2D@30520/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30521" to="Tiles/@AnimatableBody2D@30521/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@30522" to="Tiles/@AnimatableBody2D@30522/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="area_entered" from="Tiles/DeathPit" to="Tiles/DeathPit" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147743" to="Tiles/@Area2D@147743" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147744" to="Tiles/@Area2D@147744" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147745" to="Tiles/@Area2D@147745" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147746" to="Tiles/@Area2D@147746" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147747" to="Tiles/@Area2D@147747" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147748" to="Tiles/@Area2D@147748" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147749" to="Tiles/@Area2D@147749" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147750" to="Tiles/@Area2D@147750" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147751" to="Tiles/@Area2D@147751" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147752" to="Tiles/@Area2D@147752" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147753" to="Tiles/@Area2D@147753" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147754" to="Tiles/@Area2D@147754" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147755" to="Tiles/@Area2D@147755" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@147756" to="Tiles/@Area2D@147756" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30523" to="Tiles/@Area2D@30523" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30524" to="Tiles/@Area2D@30524" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30525" to="Tiles/@Area2D@30525" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30526" to="Tiles/@Area2D@30526" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30527" to="Tiles/@Area2D@30527" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30528" to="Tiles/@Area2D@30528" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30529" to="Tiles/@Area2D@30529" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30530" to="Tiles/@Area2D@30530" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30531" to="Tiles/@Area2D@30531" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30532" to="Tiles/@Area2D@30532" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30533" to="Tiles/@Area2D@30533" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30534" to="Tiles/@Area2D@30534" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30535" to="Tiles/@Area2D@30535" method="area_entered"]
[connection signal="area_entered" from="Tiles/@Area2D@30536" to="Tiles/@Area2D@30536" method="area_entered"]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -136,7 +136,7 @@ position = Vector2(2280, -120)
id = 4
[node name="InvisibleQuestionBlock2" parent="ChallengeNodes" instance=ExtResource("11_ul44o")]
position = Vector2(1352, -104)
position = Vector2(1352, -72)
item = ExtResource("20_iag7c")
[node name="CastleChallengeEnd" parent="ChallengeNodes" instance=ExtResource("21_24f5i")]
@ -144,7 +144,7 @@ position = Vector2(2608, 0)
[node name="Blocks" type="Node" parent="."]
[node name="InvisibleQuestionBlock" parent="Blocks" instance=ExtResource("11_ul44o")]
[node name="InvisibleQuestionBlock2" parent="Blocks" instance=ExtResource("11_ul44o")]
position = Vector2(1352, -72)
[connection signal="block_destroyed" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/LevelPersistance" method="set_as_active_2"]
@ -161,62 +161,62 @@ position = Vector2(1352, -72)
[connection signal="player_block_hit" from="Tiles/InvisibleQuestionBlock" to="Tiles/InvisibleQuestionBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/InvisibleQuestionBlock" to="Tiles/InvisibleQuestionBlock" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/InvisibleQuestionBlock" to="Tiles/InvisibleQuestionBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104710" to="Tiles/@AnimatableBody2D@104710/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104711" to="Tiles/@AnimatableBody2D@104711/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104712" to="Tiles/@AnimatableBody2D@104712/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104713" to="Tiles/@AnimatableBody2D@104713/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104714" to="Tiles/@AnimatableBody2D@104714/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104715" to="Tiles/@AnimatableBody2D@104715/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104716" to="Tiles/@AnimatableBody2D@104716/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@104717" to="Tiles/@AnimatableBody2D@104717/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33141" to="Tiles/@AnimatableBody2D@33141/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33142" to="Tiles/@AnimatableBody2D@33142/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33143" to="Tiles/@AnimatableBody2D@33143/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33144" to="Tiles/@AnimatableBody2D@33144/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33145" to="Tiles/@AnimatableBody2D@33145/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33146" to="Tiles/@AnimatableBody2D@33146/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33147" to="Tiles/@AnimatableBody2D@33147/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@33148" to="Tiles/@AnimatableBody2D@33148/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="victory_begin" from="CastleBridge" to="ChallengeNodes/CastleChallengeEnd" method="begin"]
[editable path="Bowser"]

File diff suppressed because one or more lines are too long

View file

@ -117,7 +117,7 @@ position = Vector2(2264, -120)
id = 3
[node name="InvisibleQuestionBlock" parent="ChallengeNodes" instance=ExtResource("24_fmu34")]
position = Vector2(2464, -184)
position = Vector2(2456, -184)
item = ExtResource("47_kfjdr")
[node name="Node" type="Node" parent="."]
@ -134,32 +134,32 @@ exit_only = true
position = Vector2(2576, -16)
target_level = "uid://b12y6fykkegoe"
[connection signal="collected" from="Tiles/@Node2D@96784" to="Tiles/@Node2D@96784/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96785" to="Tiles/@Node2D@96785/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96786" to="Tiles/@Node2D@96786/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96787" to="Tiles/@Node2D@96787/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96788" to="Tiles/@Node2D@96788/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96789" to="Tiles/@Node2D@96789/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96790" to="Tiles/@Node2D@96790/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96791" to="Tiles/@Node2D@96791/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/@AnimatableBody2D@96792" to="Tiles/@AnimatableBody2D@96792/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="collected" from="Tiles/@Node2D@96793" to="Tiles/@Node2D@96793/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96794" to="Tiles/@Node2D@96794/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96795" to="Tiles/@Node2D@96795/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96796" to="Tiles/@Node2D@96796/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96797" to="Tiles/@Node2D@96797/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96798" to="Tiles/@Node2D@96798/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96799" to="Tiles/@Node2D@96799/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96800" to="Tiles/@Node2D@96800/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96801" to="Tiles/@Node2D@96801/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96802" to="Tiles/@Node2D@96802/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96803" to="Tiles/@Node2D@96803/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96804" to="Tiles/@Node2D@96804/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96805" to="Tiles/@Node2D@96805/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@96806" to="Tiles/@Node2D@96806/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/Coin" to="Tiles/Coin/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32733" to="Tiles/@Node2D@32733/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32734" to="Tiles/@Node2D@32734/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32735" to="Tiles/@Node2D@32735/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32736" to="Tiles/@Node2D@32736/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32737" to="Tiles/@Node2D@32737/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32738" to="Tiles/@Node2D@32738/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32739" to="Tiles/@Node2D@32739/LevelPersistance" method="set_as_active"]
[connection signal="block_destroyed" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/LevelPersistance" method="set_as_active_2"]
[connection signal="block_emptied" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/LevelPersistance" method="set_as_active"]
[connection signal="player_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock" method="player_mushroom_check"]
[connection signal="player_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock" method="dispense_item" unbinds=1]
[connection signal="player_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock" method="dispense_item" unbinds=1]
[connection signal="shell_block_hit" from="Tiles/QuestionBlock" to="Tiles/QuestionBlock/BlockAnimations" method="bounce_block" unbinds=1]
[connection signal="collected" from="Tiles/@Node2D@32740" to="Tiles/@Node2D@32740/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32741" to="Tiles/@Node2D@32741/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32742" to="Tiles/@Node2D@32742/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32743" to="Tiles/@Node2D@32743/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32744" to="Tiles/@Node2D@32744/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32745" to="Tiles/@Node2D@32745/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32746" to="Tiles/@Node2D@32746/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32747" to="Tiles/@Node2D@32747/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32748" to="Tiles/@Node2D@32748/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32749" to="Tiles/@Node2D@32749/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32750" to="Tiles/@Node2D@32750/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32751" to="Tiles/@Node2D@32751/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32752" to="Tiles/@Node2D@32752/LevelPersistance" method="set_as_active"]
[connection signal="collected" from="Tiles/@Node2D@32753" to="Tiles/@Node2D@32753/LevelPersistance" method="set_as_active"]

File diff suppressed because one or more lines are too long

View file

@ -917,12 +917,11 @@ color = Color(0, 0, 0, 1)
autostart = true
[node name="DevBuildWarning" type="Label" parent="CanvasLayer2/VersionLabel"]
visible = false
layout_mode = 1
offset_top = 16.0
offset_right = 56.0
offset_bottom = 32.0
text = "DEVELOPMENT BUILD! EXPECT BUGS!"
layout_mode = 0
offset_top = 14.0
offset_right = 128.0
offset_bottom = 30.0
text = "SNAPSHOT BUILD - EXPECT BUGS!"
uppercase = true
[node name="ColorRect" type="ColorRect" parent="CanvasLayer2/VersionLabel/DevBuildWarning"]
@ -934,7 +933,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 1)
color = Color(0, 0, 0, 0.49803922)
[node name="DropShadow" parent="." instance=ExtResource("5_8t4ah")]

View file

@ -375,7 +375,6 @@ autoplay = "new_animation"
[node name="ScoreNoteSpawner" type="Node" parent="."]
script = ExtResource("4_f5bm0")
add_score = true
metadata/_custom_type_script = "uid://5octqlf4ohel"
[node name="YoshiHatch" type="AudioStreamPlayer2D" parent="."]

View file

@ -92,12 +92,17 @@ one_way_collision = true
[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."]
position = Vector2(0, -8)
scale = Vector2(1, 0.987)
rect = Rect2(-128, -128, 256, 256)
[connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="area_entered" from="Hitbox" to="." method="on_area_entered"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="ScoreNoteSpawner" method="spawn_note" binds= [200]]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="on_player_hit"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="on_player_stomped_on"]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="die_from_object"]
[connection signal="block_bounced" from="BlockBouncingDetection" to="." method="block_bounced"]
[connection signal="screen_exited" from="VisibleOnScreenEnabler2D" to="." method="queue_free"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=40 format=3 uid="uid://bod0jkf7jc5pm"]
[gd_scene load_steps=41 format=3 uid="uid://bod0jkf7jc5pm"]
[ext_resource type="Script" uid="uid://bjbd3a6su47si" path="res://Scripts/Classes/UI/GameHUD.gd" id="1_f34v2"]
[ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="2_cbrve"]
@ -68,6 +68,21 @@ animations = [{
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cfljn"]
shader = ExtResource("9_oqalm")
[sub_resource type="Animation" id="Animation_40ba1"]
resource_name = "AlwaysOn"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_niy8w"]
resource_name = "Flash"
loop_mode = 1
@ -101,6 +116,7 @@ tracks/0/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cfljn"]
_data = {
&"AlwaysOn": SubResource("Animation_40ba1"),
&"Flash": SubResource("Animation_niy8w"),
&"RESET": SubResource("Animation_oqalm")
}
@ -371,6 +387,90 @@ centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin1Transparent" type="Sprite2D" parent="Main/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(-8, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="Main/RedCoins/Coin1Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin2Transparent" type="Sprite2D" parent="Main/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="Main/RedCoins/Coin2Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin3Transparent" type="Sprite2D" parent="Main/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(8, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="Main/RedCoins/Coin3Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin4Transparent" type="Sprite2D" parent="Main/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(16, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="Main/RedCoins/Coin4Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin5Transparent" type="Sprite2D" parent="Main/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(24, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="Main/RedCoins/Coin5Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="BorderR" type="Sprite2D" parent="Main/RedCoins"]
position = Vector2(32, 0)
texture = ExtResource("5_gmuut")
@ -450,6 +550,23 @@ centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="ScoreMedalTransparent" type="Sprite2D" parent="Main/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(43, -2)
texture = ExtResource("9_m8toq")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="Main/RedCoins/ScoreMedalTransparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("9_m8toq")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Buffer3" type="Control" parent="Main"]
custom_minimum_size = Vector2(24, 0)
layout_mode = 2
@ -742,6 +859,90 @@ centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin1Transparent" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(-8, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/Coin1Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin2Transparent" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/Coin2Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin3Transparent" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(8, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/Coin3Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin4Transparent" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(16, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/Coin4Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Coin5Transparent" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(24, 0)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/Coin5Transparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("6_2ww58")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="BorderR" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
position = Vector2(32, 0)
texture = ExtResource("5_gmuut")
@ -780,6 +981,7 @@ region_rect = Rect2(0, 0, 8, 8)
[node name="ModernRadar" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/YoshiEgg"]
unique_name_in_owner = true
visible = false
material = SubResource("ShaderMaterial_cfljn")
texture = ExtResource("7_r3m7e")
centered = false
hframes = 3
@ -820,6 +1022,23 @@ centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="ScoreMedalTransparent" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins"]
material = SubResource("ShaderMaterial_cfljn")
position = Vector2(43, -2)
texture = ExtResource("9_m8toq")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="Shadow" type="Sprite2D" parent="ModernHUD/TopLeft/RedCoins/ScoreMedalTransparent"]
show_behind_parent = true
material = SubResource("ShaderMaterial_eon7h")
position = Vector2(1, 1)
texture = ExtResource("9_m8toq")
centered = false
hframes = 2
region_rect = Rect2(0, 0, 8, 8)
[node name="LifeCount" type="HBoxContainer" parent="ModernHUD/TopLeft"]
layout_mode = 0
offset_left = 20.0
@ -1079,7 +1298,7 @@ metadata/_custom_type_script = "uid://co6tjg3w6qpd8"
[node name="TextureUpdater" type="Node" parent="." node_paths=PackedStringArray("sprites")]
script = SubResource("GDScript_jwl8o")
sprites = [NodePath("../Main/RedCoins/BorderL"), NodePath("../Main/RedCoins/BorderL/Shadow"), NodePath("../Main/RedCoins/Coin1"), NodePath("../Main/RedCoins/Coin1/Shadow"), NodePath("../Main/RedCoins/Coin2"), NodePath("../Main/RedCoins/Coin2/Shadow"), NodePath("../Main/RedCoins/Coin3"), NodePath("../Main/RedCoins/Coin3/Shadow"), NodePath("../Main/RedCoins/Coin4"), NodePath("../Main/RedCoins/Coin4/Shadow"), NodePath("../Main/RedCoins/Coin5"), NodePath("../Main/RedCoins/Coin5/Shadow"), NodePath("../Main/RedCoins/BorderR"), NodePath("../Main/RedCoins/BorderR/Shadow"), NodePath("../Main/RedCoins/YoshiEgg"), NodePath("../Main/RedCoins/YoshiEgg/Shadow"), NodePath("../Main/RedCoins/ScoreMedal"), NodePath("../Main/RedCoins/ScoreMedal/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderL"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderL/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin1"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin1/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin2"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin2/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin3"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin3/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin4"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin4/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin5"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin5/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderR"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderR/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/YoshiEgg"), NodePath("../ModernHUD/TopLeft/RedCoins/YoshiEgg/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/ScoreMedal"), NodePath("../ModernHUD/TopLeft/RedCoins/ScoreMedal/Shadow")]
sprites = [NodePath("../Main/RedCoins/BorderL"), NodePath("../Main/RedCoins/BorderL/Shadow"), NodePath("../Main/RedCoins/Coin1"), NodePath("../Main/RedCoins/Coin1/Shadow"), NodePath("../Main/RedCoins/Coin2"), NodePath("../Main/RedCoins/Coin2/Shadow"), NodePath("../Main/RedCoins/Coin3"), NodePath("../Main/RedCoins/Coin3/Shadow"), NodePath("../Main/RedCoins/Coin4"), NodePath("../Main/RedCoins/Coin4/Shadow"), NodePath("../Main/RedCoins/Coin5"), NodePath("../Main/RedCoins/Coin5/Shadow"), NodePath("../Main/RedCoins/Coin1Transparent"), NodePath("../Main/RedCoins/Coin1Transparent/Shadow"), NodePath("../Main/RedCoins/Coin2Transparent"), NodePath("../Main/RedCoins/Coin2Transparent/Shadow"), NodePath("../Main/RedCoins/Coin3Transparent"), NodePath("../Main/RedCoins/Coin3Transparent/Shadow"), NodePath("../Main/RedCoins/Coin4Transparent"), NodePath("../Main/RedCoins/Coin4Transparent/Shadow"), NodePath("../Main/RedCoins/Coin5Transparent"), NodePath("../Main/RedCoins/Coin5Transparent/Shadow"), NodePath("../Main/RedCoins/BorderR"), NodePath("../Main/RedCoins/BorderR/Shadow"), NodePath("../Main/RedCoins/YoshiEgg"), NodePath("../Main/RedCoins/YoshiEgg/Shadow"), NodePath("../Main/RedCoins/ScoreMedalTransparent"), NodePath("../Main/RedCoins/ScoreMedalTransparent/Shadow"), NodePath("../Main/RedCoins/ScoreMedal"), NodePath("../Main/RedCoins/ScoreMedal/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderL"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderL/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin1"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin1/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin2"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin2/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin3"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin3/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin4"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin4/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin5"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin5/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin1Transparent"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin1Transparent/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin2Transparent"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin2Transparent/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin3Transparent"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin3Transparent/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin4Transparent"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin4Transparent/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin5Transparent"), NodePath("../ModernHUD/TopLeft/RedCoins/Coin5Transparent/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderR"), NodePath("../ModernHUD/TopLeft/RedCoins/BorderR/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/YoshiEgg"), NodePath("../ModernHUD/TopLeft/RedCoins/YoshiEgg/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/ScoreMedalTransparent"), NodePath("../ModernHUD/TopLeft/RedCoins/ScoreMedalTransparent/Shadow"), NodePath("../ModernHUD/TopLeft/RedCoins/ScoreMedal"), NodePath("../ModernHUD/TopLeft/RedCoins/ScoreMedal/Shadow")]
[connection signal="timeout" from="Timer" to="." method="on_timeout"]
[connection signal="updated" from="ColourPaletteSampler" to="TextShadowColourChanger" method="handle_shadow_colours"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=20 format=4 uid="uid://bney0cc8cfm5s"]
[gd_scene load_steps=22 format=4 uid="uid://bney0cc8cfm5s"]
[ext_resource type="Script" uid="uid://qq26qw7ltflb" path="res://Scripts/Parts/EndCastle.gd" id="1_hwcne"]
[ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="2_1kswc"]
@ -7,6 +7,7 @@
[ext_resource type="JSON" path="res://Assets/Sprites/Tilesets/CastleFlag.json" id="4_wqi45"]
[ext_resource type="PackedScene" uid="uid://bikdod5ra10ra" path="res://Scenes/Parts/LargeCastleVisual.tscn" id="6_w7qld"]
[ext_resource type="Script" uid="uid://73oviwf6bbys" path="res://Scripts/Classes/Components/TilesetTextureSetter.gd" id="8_akqko"]
[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="8_rgjtr"]
[ext_resource type="PackedScene" uid="uid://bem5ht17ukgcs" path="res://Scenes/Parts/LargeSPCastleVisual.tscn" id="10_kd4m5"]
[ext_resource type="Texture2D" uid="uid://dt0qtxu2l646n" path="res://Assets/Sprites/Tilesets/Terrain/Overworld.png" id="10_wqi45"]
[ext_resource type="Texture2D" uid="uid://dkcs5i8l1y4y6" path="res://Assets/Sprites/Tilesets/EndingFinalCastleSprite.png" id="11_wqi45"]
@ -51,6 +52,10 @@ _data = {
&"Raise": SubResource("Animation_1x3lf")
}
[sub_resource type="SegmentShape2D" id="SegmentShape2D_657we"]
a = Vector2(0, -16)
b = Vector2(0, 16)
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_wqi45"]
texture = ExtResource("10_wqi45")
texture_region_size = Vector2i(8, 8)
@ -123,6 +128,14 @@ position = Vector2(0, -40)
visible = false
position = Vector2(32, -40)
[node name="PlayerDetection" type="Area2D" parent="."]
script = ExtResource("8_rgjtr")
metadata/_custom_type_script = "uid://cnheej0sxmoxg"
[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetection"]
position = Vector2(0, -16)
shape = SubResource("SegmentShape2D_657we")
[node name="OverlaySprite" type="Sprite2D" parent="."]
visible = false
z_index = 10

View file

@ -31,5 +31,5 @@ visible = false
[node name="SmallCastleVisual2" parent="." index="4"]
visible = true
[node name="Overlay" parent="." index="7"]
[node name="Overlay" parent="." index="8"]
visible = true

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=20 format=4 uid="uid://byqmn8yi7iuac"]
[gd_scene load_steps=22 format=4 uid="uid://byqmn8yi7iuac"]
[ext_resource type="Script" uid="uid://qq26qw7ltflb" path="res://Scripts/Parts/EndCastle.gd" id="1_4yifo"]
[ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="2_l3xjf"]
@ -6,6 +6,7 @@
[ext_resource type="Script" uid="uid://bdq0373j5n5o0" path="res://Scripts/Parts/CameraRightLimit.gd" id="4_1x3lf"]
[ext_resource type="JSON" path="res://Assets/Sprites/Tilesets/CastleFlag.json" id="4_7xlhl"]
[ext_resource type="PackedScene" uid="uid://qn4g0qkjcuiy" path="res://Scenes/Parts/SmallCastleVisual.tscn" id="5_an8pi"]
[ext_resource type="Script" uid="uid://cnheej0sxmoxg" path="res://Scripts/Parts/PlayerDetection.gd" id="7_oyrq2"]
[ext_resource type="Texture2D" uid="uid://dt0qtxu2l646n" path="res://Assets/Sprites/Tilesets/Terrain/Overworld.png" id="7_xg4af"]
[ext_resource type="Script" uid="uid://73oviwf6bbys" path="res://Scripts/Classes/Components/TilesetTextureSetter.gd" id="8_l3xjf"]
[ext_resource type="JSON" path="res://Assets/Sprites/Tilesets/Terrain/TerrainTiles.json" id="9_oyrq2"]
@ -53,6 +54,10 @@ _data = {
&"Raise": SubResource("Animation_7xlhl")
}
[sub_resource type="SegmentShape2D" id="SegmentShape2D_76jrx"]
a = Vector2(0, -16)
b = Vector2(0, 16)
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_2hcdu"]
texture = ExtResource("7_xg4af")
texture_region_size = Vector2i(8, 8)
@ -126,6 +131,14 @@ autostart = true
[node name="SmallCastleVisual" parent="." instance=ExtResource("5_an8pi")]
position = Vector2(0, -40)
[node name="PlayerDetection" type="Area2D" parent="."]
script = ExtResource("7_oyrq2")
metadata/_custom_type_script = "uid://cnheej0sxmoxg"
[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetection"]
position = Vector2(0, -16)
shape = SubResource("SegmentShape2D_76jrx")
[node name="Overlay" type="TileMapLayer" parent="."]
visible = false
z_index = 10

View file

@ -17,7 +17,7 @@ func restart_level() -> void:
DiscoLevel.reset_values()
if Global.current_game_mode == Global.GameMode.CHALLENGE:
Global.score = 0
ChallengeModeHandler.current_run_red_coins_collected = ChallengeModeHandler.red_coins_collected[Global.world_num - 1][Global.level_num - 1]
ChallengeModeHandler.current_run_red_coins_collected = 0
Global.current_level.reload_level()
await Global.current_level.tree_exited
$\"..\".close()

View file

@ -71,7 +71,7 @@ func player_win_race() -> void:
else:
var idx := 0
for boo_time in boo.time_needed:
if SpeedrunHandler.timer < boo_time and idx < 4:
if SpeedrunHandler.met_target_time(SpeedrunHandler.timer, boo_time) and idx < 4:
cleared_boo += 1
else:
break

View file

@ -204,7 +204,11 @@ func get_variation_json(json := {}) -> Dictionary:
if config_to_use != {}:
var option_name = i.get_slice(":", 1)
if config_to_use.options.has(option_name):
json = get_variation_json(json[i][config_to_use.options[option_name]])
var config_json = json[i][config_to_use.options[option_name]]
if config_json.has("link"):
json = get_variation_json(json[config_json.get("link")])
else:
json = get_variation_json(config_json)
break
if json.has(level_theme) == false:
@ -234,7 +238,11 @@ func get_variation_json(json := {}) -> Dictionary:
if json.has("choices"):
is_random = true
json = get_variation_json(json.choices.pick_random())
var random_json = json.choices.pick_random()
if random_json.has("link"):
json = get_variation_json(json[random_json.get("link")])
else:
json = get_variation_json(random_json)
var world = "World" + str(Global.world_num)
if force_properties.has("World"):

View file

@ -11,7 +11,7 @@ var can_spawn_particles := false
signal collected
func _ready() -> void:
if ChallengeModeHandler.is_coin_collected(id):
if ChallengeModeHandler.is_coin_collected(id) or ChallengeModeHandler.is_coin_permanently_collected(id):
already_collected = true
$Sprite.play("Collected")
set_visibility_layer_bit(0, false)

View file

@ -12,7 +12,7 @@ var can_spawn_particles := false
@onready var COIN_SPARKLE = load("res://Scenes/Prefabs/Particles/RedCoinSparkle.tscn")
func _ready() -> void:
already_collected = ChallengeModeHandler.is_coin_collected(id)
already_collected = ChallengeModeHandler.is_coin_collected(id) or ChallengeModeHandler.is_coin_permanently_collected(id)
if already_collected == false:
ChallengeModeHandler.red_coins += 1
AudioManager.play_sfx(collection_sounds[ChallengeModeHandler.red_coins - 1], global_position)

View file

@ -1,14 +1,13 @@
extends CharacterBody2D
var gave_points := false
func _ready() -> void:
AudioManager.play_sfx("item_appear", global_position)
Global.score += 5000
ChallengeModeHandler.set_value(ChallengeModeHandler.CoinValues.YOSHI_EGG, true)
velocity.y = -150
$Egg.play(["Green", "Yellow", "Red", "Blue"][Global.level_num - 1])
$Yoshi.play(["Green", "Yellow", "Red", "Blue"][Global.level_num - 1])
await get_tree().create_timer(1.5, false).timeout
ChallengeModeHandler.set_value(ChallengeModeHandler.CoinValues.YOSHI_EGG, true)
func _physics_process(delta: float) -> void:
velocity.y += (Global.entity_gravity / delta) * delta
@ -16,15 +15,9 @@ func _physics_process(delta: float) -> void:
move_and_slide()
func show_smoke() -> void:
gave_points = true
var smoke = preload("res://Scenes/Prefabs/Particles/SmokeParticle.tscn").instantiate()
smoke.scale = Vector2(2, 2)
smoke.global_position =global_position
add_sibling(smoke)
$ScoreNoteSpawner.spawn_note(5000)
queue_free()
func _exit_tree() -> void:
if gave_points == false:
ChallengeModeHandler.set_value(ChallengeModeHandler.CoinValues.YOSHI_EGG, true)
Global.score += 5000

View file

@ -43,10 +43,13 @@ func run_pipe_check() -> void:
exit_pipe()
func _physics_process(_delta: float) -> void:
# SkyanUltra: Adjusted logic to offset pipe hitbox rather than stretching it,
# as it allowed characters to clip the edge of the pipe and get counted as
# grounded, getting warped into pipes from above.
if enter_direction >= 2:
$Hitbox.scale.y = 8
$Hitbox.position.y = 14
else:
$Hitbox.scale.y = 1
$Hitbox.position.y = 0
if Engine.is_editor_hint() == false:
in_game()
@ -111,8 +114,9 @@ func in_game() -> void:
func run_player_check(player: Player) -> void:
# guzlad: Added support for characters with a hitbox height below 1.0 to enter pipes underwater
print(player.is_actually_on_floor())
if Global.player_action_pressed(get_input_direction(enter_direction), player.player_id) and (player.is_on_floor() or enter_direction == 1):
# SkyanUltra: Added distance check to prevent entering pipes from too low.
var distance = player.global_position.distance_to(hitbox.global_position)
if distance <= 6 and Global.player_action_pressed(get_input_direction(enter_direction), player.player_id) and (player.is_actually_on_floor() or enter_direction == 1):
can_enter = false
pipe_entered.emit()
DiscoLevel.can_meter_tick = false

View file

@ -29,37 +29,38 @@ const CHALLENGE_TARGETS := {
"SMBS": SMBS_CHALLENGE_SCORE_TARGETS,
"SMBANN": []
}
const SMB1_CHALLENGE_SCORE_TARGETS := [
[26000, 26000, 19000, 12000],
[40000, 25000, 23000, 14000],
[40000, 45000, 21000, 13000],
[32000, 33000, 24000, 17000],
[80000, 36000, 23000, 13000],
[32000, 30000, 21000, 12000],
[32000, 24000, 28000, 16000],
[40000, 28000, 28000, 18000],
[32000, 38000, 23000, 17000],
[40000, 24000, 23000, 17000],
[40000, 65000, 23000, 17000],
[32000, 35000, 23000, 19000],
[80000, 36000, 23000, 17000],
[30000, 30000, 21000, 17000],
[32000, 23000, 28000, 19000],
[60000, 32000, 28000, 20000],
]
const SMBLL_CHALLENGE_SCORE_TARGETS := [
[26000, 26000, 19000, 12000],
[30000, 60000, 23000, 14000],
[30000, 28000, 21000, 13000],
[25000, 33000, 24000, 17000],
[30000, 36000, 23000, 13000],
[32000, 30000, 21000, 12000],
[32000, 24000, 22000, 16000],
[30000, 28000, 28000, 18000],
[40000, 28000, 26000, 17000],
[32000, 45000, 30000, 20000],
[32000, 25000, 30000, 19000],
[29000, 35000, 24000, 18000],
[60000, 33000, 23000, 17000],
[40000, 24000, 29000, 18000],
[38000, 24000, 18000, 27000],
[40000, 34000, 26000, 17000],
]
const SMBS_CHALLENGE_SCORE_TARGETS := [
[26000, 26000, 19000, 12000],
[40000, 25000, 23000, 14000],
[30000, 35000, 21000, 13000],
[32000, 33000, 24000, 17000],
[55000, 36000, 23000, 13000],
[32000, 30000, 21000, 12000],
[32000, 24000, 28000, 16000],
[30000, 28000, 28000, 18000],
[32000, 35000, 30000, 25000],
[36000, 27000, 26000, 24000],
[26000, 30000, 32000, 21000],
[33000, 25000, 24000, 17000],
[40000, 32000, 25000, 21000],
[30000, 28000, 30000, 22000],
[36000, 23000, 32000, 19000],
[30000, 25000, 24000, 18000],
]
static var red_coins_collected := [
@ -82,6 +83,10 @@ static func set_value(coin_id := CoinValues.R_COIN_1, value := false) -> void:
static func is_coin_collected(coin_id: CoinValues = CoinValues.R_COIN_1, num := current_run_red_coins_collected) -> bool:
return num & (1 << coin_id) != 0
static func is_coin_permanently_collected(coin_id: CoinValues = CoinValues.R_COIN_1) -> bool:
var permanently_collected = int(red_coins_collected[Global.world_num - 1][Global.level_num - 1])
return permanently_collected & (1 << coin_id) != 0
func check_for_achievement() -> void:
for x in red_coins_collected:
for i in x:

View file

@ -34,11 +34,12 @@ var ROM_POINTER_PATH = config_path.path_join("rom_pointer.smb")
var ROM_PATH = config_path.path_join("baserom.nes")
var ROM_ASSETS_PATH = config_path.path_join("resource_packs/BaseAssets")
const ROM_PACK_NAME := "BaseAssets"
const ROM_ASSETS_VERSION := 1
const ROM_ASSETS_VERSION := 2
var server_version := -1
var current_version := -1
var version_number := ""
var is_snapshot := true
const LEVEL_THEMES := {
"SMB1": SMB1_LEVEL_THEMES,
@ -175,10 +176,10 @@ var p_switch_timer_paused := false
var debug_mode := false
func _ready() -> void:
if is_snapshot: get_build_time()
if OS.is_debug_build(): debug_mode = false
current_version = get_version_number()
get_server_version()
if OS.is_debug_build():
debug_mode = false
setup_config_dirs()
check_for_rom()
@ -279,7 +280,25 @@ func handle_p_switch(delta: float) -> void:
AudioManager.stop_music_override(AudioManager.MUSIC_OVERRIDES.PSWITCH)
func get_build_time() -> void:
print(int(Time.get_unix_time_from_system()))
# SkyanUltra: Slightly expanded function to make it easier to get snapshot build numbers.
var date = Time.get_date_dict_from_system()
var year_last_two = date.year % 100
var now = Time.get_unix_time_from_system()
print("[b][color=cyan]Current unix time:[/color][/b] ", int(now))
var start_of_year = Time.get_unix_time_from_datetime_dict({
"year": date.year,
"month": 1,
"day": 1,
"hour": 0,
"minute": 0,
"second": 0
})
var days_since_year_start = int((now - start_of_year) / 86400)
@warning_ignore("integer_division")
var week = int(days_since_year_start / 7) + 1
var build_date = "%02dw%02d" % [year_last_two, week]
print_rich("[b][color=cyan]Partial snapshot build ID:[/color][/b] ", build_date)
func get_version_number() -> int:
var number = (FileAccess.open("res://version.txt", FileAccess.READ).get_as_text())

View file

@ -190,10 +190,18 @@ func record_frame(player: Player) -> void:
current_recording += data + ","
func format_time(time_time := 0.0) -> Dictionary:
var mils = abs(fmod(time_time, 1) * 100)
var secs = abs(fmod(time_time, 60))
var mins = abs(time_time / 60)
var floor_time = floor(abs(time_time * 100))
var mils = int(floor_time) % 100
var secs = int(floor_time / 100) % 60
var mins = floor_time / 6000
return {"mils": int(mils), "secs": int(secs), "mins": int(mins)}
func met_target_time(record_time := -1.0, target_time := 0.0) -> bool:
if record_time < 0.0:
return false
# Ignore units of time smaller than a centisecond, as they're not displayed.
# Matching time exactly counts as beating it.
return int(record_time * 100) <= int(target_time * 100)
func gen_time_string(timer_dict := {}) -> String:
return str(int(timer_dict["mins"])).pad_zeros(2) + ":" + str(int(timer_dict["secs"])).pad_zeros(2) + ":" + str(int(timer_dict["mils"])).pad_zeros(2)
@ -339,11 +347,11 @@ func check_for_medal_achievement() -> void:
for i in LEVEL_GOLD_ANY_TIMES[Global.current_campaign]:
if best_level_any_times.has(i):
if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i]:
if not met_target_time(best_level_any_times[i], LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i]):
has_gold_levels_any = false
if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i] * MEDAL_CONVERSIONS[1]:
if not met_target_time(best_level_any_times[i], LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i] * MEDAL_CONVERSIONS[1]):
has_silver_levels_any = false
if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i] * MEDAL_CONVERSIONS[0]:
if not met_target_time(best_level_any_times[i], LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i] * MEDAL_CONVERSIONS[0]):
has_bronze_levels_any = false
else:
has_gold_levels_any = false
@ -354,26 +362,24 @@ func check_for_medal_achievement() -> void:
for i in best_level_warpless_times:
var level := 0
for x in i:
if x < 0:
if not met_target_time(x, LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level]):
has_gold_levels_warpless = false
if not met_target_time(x, LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level] * MEDAL_CONVERSIONS[1]):
has_silver_levels_warpless = false
has_bronze_levels_warpless = false
if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level]:
has_gold_levels_warpless = false
if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level] * MEDAL_CONVERSIONS[1]:
has_silver_levels_warpless = false
if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level] * MEDAL_CONVERSIONS[0]:
if not met_target_time(x, LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level] * MEDAL_CONVERSIONS[0]):
has_bronze_levels_warpless = false
level += 1
world += 1
if marathon_best_any_time >= 0 and marathon_best_warpless_time >= 0:
if marathon_best_any_time <= GOLD_ANY_TIMES[Global.current_campaign] and marathon_best_warpless_time <= GOLD_WARPLESS_TIMES[Global.current_campaign]:
has_gold_full = true
if marathon_best_any_time <= GOLD_ANY_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[1] and marathon_best_warpless_time <= GOLD_WARPLESS_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[1]:
has_silver_full = true
if marathon_best_any_time <= GOLD_ANY_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[0] and marathon_best_warpless_time <= GOLD_WARPLESS_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[0]:
has_bronze_full = true
if (met_target_time(marathon_best_any_time, GOLD_ANY_TIMES[Global.current_campaign]) and
met_target_time(marathon_best_warpless_time, GOLD_WARPLESS_TIMES[Global.current_campaign])):
has_gold_full = true
if (met_target_time(marathon_best_any_time, GOLD_ANY_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[1]) and
met_target_time(marathon_best_warpless_time, GOLD_WARPLESS_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[1])):
has_silver_full = true
if (met_target_time(marathon_best_any_time, GOLD_ANY_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[0]) and
met_target_time(marathon_best_warpless_time, GOLD_WARPLESS_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[0])):
has_bronze_full = true
if has_gold_levels_warpless and has_gold_levels_any and has_gold_full:
match Global.current_campaign:

View file

@ -100,54 +100,78 @@ func handle_challenge_mode_hud() -> void:
%ModernLifeCount.hide()
%CharacterIcon.hide()
var red_coins_collected = ChallengeModeHandler.current_run_red_coins_collected
var idx := 0
if Global.world_num > 8:
return
if Global.in_title_screen:
red_coins_collected = int(ChallengeModeHandler.red_coins_collected[Global.world_num - 1][Global.level_num - 1])
var idx := 0
for i in [$Main/RedCoins/Coin1, $Main/RedCoins/Coin2, $Main/RedCoins/Coin3, $Main/RedCoins/Coin4, $Main/RedCoins/Coin5]:
i.frame = int(ChallengeModeHandler.is_coin_collected(idx, red_coins_collected))
idx += 1
idx = 0
for i in [$Main/RedCoins/Coin1Transparent, $Main/RedCoins/Coin2Transparent, $Main/RedCoins/Coin3Transparent, $Main/RedCoins/Coin4Transparent, $Main/RedCoins/Coin5Transparent]:
i.visible = false
if ChallengeModeHandler.is_coin_permanently_collected(idx) and not ChallengeModeHandler.is_coin_collected(idx, red_coins_collected):
i.visible = true
i.frame = 1
idx += 1
$Main/RedCoins/ScoreMedal.frame = 0
$Main/RedCoins/ScoreMedalTransparent.visible = false
var score_target = ChallengeModeHandler.CHALLENGE_TARGETS[Global.current_campaign][Global.world_num - 1][Global.level_num - 1]
if Global.score >= score_target or ChallengeModeHandler.top_challenge_scores[Global.world_num - 1][Global.level_num - 1] >= score_target:
$Main/RedCoins/ScoreMedal.frame = 1
elif Global.score > 0 and (Global.score + (Global.time * 50)) >= score_target:
$Main/RedCoins/ScoreMedalTransparent.frame = 1
$Main/RedCoins/ScoreMedalTransparent.visible = true
if ChallengeModeHandler.is_coin_collected(ChallengeModeHandler.CoinValues.YOSHI_EGG, red_coins_collected):
$Main/RedCoins/YoshiEgg.frame = Global.level_num
else:
$Main/RedCoins/YoshiEgg.frame = 0
$Main/RedCoins/ScoreMedal.frame = (Global.score > ChallengeModeHandler.CHALLENGE_TARGETS[Global.current_campaign][Global.world_num - 1][Global.level_num - 1] or ChallengeModeHandler.top_challenge_scores[Global.world_num - 1][Global.level_num - 1] >= ChallengeModeHandler.CHALLENGE_TARGETS[Global.current_campaign][Global.world_num - 1][Global.level_num - 1])
if is_instance_valid(Global.current_level):
handle_yoshi_radar()
handle_yoshi_radar()
for i in $Main/RedCoins.get_children():
i.get_node("Shadow").frame = i.frame
i.get_node("Shadow").visible = i.visible
for i in $ModernHUD/TopLeft/RedCoins.get_child_count():
$ModernHUD/TopLeft/RedCoins.get_child(i).frame = $Main/RedCoins.get_child(i).frame
$ModernHUD/TopLeft/RedCoins.get_child(i).visible = $Main/RedCoins.get_child(i).visible
$ModernHUD/TopLeft/RedCoins.get_child(i).get_node("Shadow").frame = $Main/RedCoins.get_child(i).frame
$ModernHUD/TopLeft/RedCoins.get_child(i).get_node("Shadow").visible = $Main/RedCoins.get_child(i).visible
func handle_yoshi_radar() -> void:
if not is_instance_valid(Global.current_level) or ChallengeModeHandler.is_coin_collected(ChallengeModeHandler.CoinValues.YOSHI_EGG):
%Radar.get_node("AnimationPlayer").play("RESET")
%ModernRadar.get_node("AnimationPlayer").play("RESET")
return
var has_egg = false
var egg_position = Vector2.ZERO
var distance = 999
for i in get_tree().get_nodes_in_group("Blocks"):
if i.item != null:
if i.item.resource_path == "res://Scenes/Prefabs/Entities/Items/YoshiEgg.tscn":
has_egg = true
egg_position = i.global_position
break
if has_egg:
var player_position = get_tree().get_first_node_in_group("Players").global_position
distance = (egg_position - player_position).length()
%Radar.frame = Global.level_num
%ModernRadar.frame = Global.level_num
if has_egg == false or ChallengeModeHandler.is_coin_collected(ChallengeModeHandler.CoinValues.YOSHI_EGG):
%Radar.get_node("AnimationPlayer").play("RESET")
%ModernRadar.get_node("AnimationPlayer").play("RESET")
return
var player_position = get_tree().get_first_node_in_group("Players").global_position
var distance = (egg_position - player_position).length()
%Radar.get_node("AnimationPlayer").speed_scale = (250 / distance)
%ModernRadar.get_node("AnimationPlayer").speed_scale = $Main/RedCoins/YoshiEgg/Radar/AnimationPlayer.speed_scale
if distance < 512:
%Radar.get_node("AnimationPlayer").speed_scale = (250 / distance)
%ModernRadar.get_node("AnimationPlayer").speed_scale = $Main/RedCoins/YoshiEgg/Radar/AnimationPlayer.speed_scale
%Radar.get_node("AnimationPlayer").play("Flash")
%ModernRadar.get_node("AnimationPlayer").play("Flash")
elif ChallengeModeHandler.is_coin_permanently_collected(ChallengeModeHandler.CoinValues.YOSHI_EGG):
%Radar.get_node("AnimationPlayer").play("AlwaysOn")
%ModernRadar.get_node("AnimationPlayer").play("AlwaysOn")
else:
%Radar.get_node("AnimationPlayer").play("RESET")
%ModernRadar.get_node("AnimationPlayer").play("RESET")

View file

@ -41,7 +41,7 @@ func _process(_delta: float) -> void:
func _physics_process(_delta: float) -> void:
for i: Player in get_tree().get_nodes_in_group("Players"):
if i.can_pose and i.global_position >= global_position and i.sprite.sprite_frames.has_animation("PoseDoor"):
if i.state_machine.get_state() == "LevelExit" and i.can_pose and $PlayerDetection.is_player_in_area() and i.global_position >= global_position and i.sprite.sprite_frames.has_animation("PoseDoor"):
i.is_posing = true; i.can_pose = false
i.global_position = global_position
i.play_animation("PoseDoor")

View file

@ -50,7 +50,7 @@ func quit_to_menu() -> void:
func reset_values() -> void:
if Global.world_num <= 8:
ChallengeModeHandler.current_run_red_coins_collected = ChallengeModeHandler.red_coins_collected[Global.world_num - 1][Global.level_num - 1]
ChallengeModeHandler.current_run_red_coins_collected = 0
Global.lives = 3
Global.score = 0
Global.player_power_states = "0000"

View file

@ -27,6 +27,7 @@ func _enter_tree() -> void:
func _ready() -> void:
setup_stars()
$CanvasLayer2/VersionLabel/DevBuildWarning.visible = Global.is_snapshot
Global.level_theme_changed.connect(setup_stars)
DiscoLevel.in_disco_level = false
get_tree().paused = false
@ -194,7 +195,7 @@ func challenge_hunt_start() -> void:
LevelTransition.level_to_transition_to = Level.get_scene_string(Global.world_num, Global.level_num)
ChallengeModeHandler.current_run_red_coins_collected = ChallengeModeHandler.red_coins_collected[Global.world_num - 1][Global.level_num -1]
ChallengeModeHandler.current_run_red_coins_collected = 0
Global.transition_to_scene("res://Scenes/Levels/LevelTransition.tscn")
func world_9_selected() -> void:

View file

@ -46,7 +46,7 @@ func save_results() -> void:
func retry_level() -> void:
Global.player_power_states = "0000"
ChallengeModeHandler.current_run_red_coins_collected = ChallengeModeHandler.red_coins_collected[Global.world_num - 1][Global.level_num - 1]
ChallengeModeHandler.current_run_red_coins_collected = 0
Global.score = 0
LevelTransition.level_to_transition_to = Level.get_scene_string(Global.world_num, Global.level_num)
Global.transition_to_scene("res://Scenes/Levels/LevelTransition.tscn")
@ -90,7 +90,8 @@ func update_score() -> void:
func give_red_coin_medal() -> void:
const mask = (1 << ChallengeModeHandler.CoinValues.R_COIN_1) | (1 << ChallengeModeHandler.CoinValues.R_COIN_2) | (1 << ChallengeModeHandler.CoinValues.R_COIN_3) | (1 << ChallengeModeHandler.CoinValues.R_COIN_4) | (1 << ChallengeModeHandler.CoinValues.R_COIN_5)
var valid := (ChallengeModeHandler.current_run_red_coins_collected & mask) == mask
var all_collected = int(ChallengeModeHandler.red_coins_collected[Global.world_num - 1][Global.level_num - 1]) | ChallengeModeHandler.current_run_red_coins_collected
var valid := (int(all_collected) & mask) == mask
if valid and not coin_medal:
do_medal_give_animation($Sprite2D3/RedCoins)

View file

@ -151,11 +151,11 @@ func update_pb() -> void:
gold_any_time = SpeedrunHandler.LEVEL_GOLD_ANY_TIMES[Global.current_campaign][str(Global.world_num) + "-" + str(selected_level + 1)]
for i in %FullRunMedals.get_children():
var target_time = gold_warpless_time * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()]
i.get_node("Full").visible = best_warpless_time <= target_time and best_warpless_time > 0
i.get_node("Full").visible = SpeedrunHandler.met_target_time(best_warpless_time, target_time)
if gold_any_time != -1:
for i in %WarpRunMedals.get_children():
var target_time = gold_any_time * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()]
i.get_node("Full").visible = best_any_time <= target_time and best_any_time > 0
i.get_node("Full").visible = SpeedrunHandler.met_target_time(best_any_time, target_time)
else:
for i in %WarpRunMedals.get_children():
i.get_node("Full").hide()

View file

@ -25,11 +25,11 @@ func setup_visuals() -> void:
target_time = SpeedrunHandler.GOLD_WARPLESS_TIMES[Global.current_campaign]
%Target.text = SpeedrunHandler.gen_time_string(SpeedrunHandler.format_time(target_time))
var medal_index := -1
if SpeedrunHandler.timer <= target_time:
if SpeedrunHandler.met_target_time(SpeedrunHandler.timer, target_time):
medal_index = 2
elif SpeedrunHandler.timer <= target_time * SpeedrunHandler.MEDAL_CONVERSIONS[1]:
elif SpeedrunHandler.met_target_time(SpeedrunHandler.timer, target_time * SpeedrunHandler.MEDAL_CONVERSIONS[1]):
medal_index = 1
elif SpeedrunHandler.timer <= target_time * SpeedrunHandler.MEDAL_CONVERSIONS[0]:
elif SpeedrunHandler.met_target_time(SpeedrunHandler.timer, target_time * SpeedrunHandler.MEDAL_CONVERSIONS[0]):
medal_index = 0
%Medal.get_node("Full").visible = medal_index >= 0
%Medal.get_node("Full").region_rect.position = Vector2(8 * medal_index, 0)

View file

@ -49,6 +49,8 @@ func setup_visuals() -> void:
%WarpedRunPB.text = SpeedrunHandler.gen_time_string(SpeedrunHandler.format_time(SpeedrunHandler.marathon_best_any_time))
for i in %FullMedals.get_children():
i.get_node("Full").visible = SpeedrunHandler.marathon_best_warpless_time <= SpeedrunHandler.GOLD_WARPLESS_TIMES[Global.current_campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()] and SpeedrunHandler.marathon_best_warpless_time > 0
i.get_node("Full").visible = SpeedrunHandler.met_target_time(
SpeedrunHandler.marathon_best_warpless_time, SpeedrunHandler.GOLD_WARPLESS_TIMES[Global.current_campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()])
for i in %WarpedMedals.get_children():
i.get_node("Full").visible = SpeedrunHandler.marathon_best_any_time <= SpeedrunHandler.GOLD_ANY_TIMES[Global.current_campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()] and SpeedrunHandler.marathon_best_any_time > 0
i.get_node("Full").visible = SpeedrunHandler.met_target_time(
SpeedrunHandler.marathon_best_any_time, SpeedrunHandler.GOLD_ANY_TIMES[Global.current_campaign] * SpeedrunHandler.MEDAL_CONVERSIONS[i.get_index()])