[gd_scene load_steps=40 format=3 uid="uid://duptcik2j0b04"]

[ext_resource type="Texture2D" uid="uid://d3sxabber73q6" path="res://Assets/Sprites/Enemies/Bowser.png" id="1_8mi7o"]
[ext_resource type="Script" uid="uid://wtypg4d0l6j2" path="res://Scripts/Classes/Entities/Enemies/Bowser.gd" id="1_ma5fd"]
[ext_resource type="AudioStream" uid="uid://cssh58oe85in8" path="res://Assets/Audio/SFX/BowserFall.wav" id="3_mliv7"]
[ext_resource type="Script" uid="uid://caq1qiwmy0mox" path="res://Scripts/Parts/BetterAnimatedSprite.gd" id="4_2qn7a"]
[ext_resource type="Script" uid="uid://dri2d5jtu0fbq" path="res://Scripts/Classes/Components/FireballDetection.gd" id="4_kfwlq"]
[ext_resource type="Texture2D" uid="uid://3xmhfi556p3s" path="res://Assets/Sprites/Items/Hammer.png" id="4_vubm2"]
[ext_resource type="Script" uid="uid://cbal8ms2oe1ik" path="res://Scripts/Classes/Components/ResourceSetterNew.gd" id="5_17x2r"]
[ext_resource type="Script" uid="uid://cq6f682453q6o" path="res://Scripts/Classes/Components/ResourceSetter.gd" id="5_v5oyl"]
[ext_resource type="JSON" path="res://Assets/Sprites/Enemies/Bowser.json" id="6_nf6hu"]
[ext_resource type="Script" uid="uid://cmvlgsjmsk0v5" path="res://Scripts/Classes/Resources/ThemedResource.gd" id="6_pvhfi"]
[ext_resource type="Script" uid="uid://c3gg32ivrlq8n" path="res://Scripts/Classes/Components/GibSpawner.gd" id="6_va0n6"]
[ext_resource type="Script" uid="uid://5octqlf4ohel" path="res://Scripts/Classes/Components/ScoreNoteSpawner.gd" id="11_pvhfi"]
[ext_resource type="Script" uid="uid://cqif1li7otvpl" path="res://Scripts/Parts/SpriteFramesToJsonConverter.gd" id="14_nf6hu"]
[ext_resource type="Script" uid="uid://ctfbuoxtnnl0q" path="res://Scripts/Classes/Components/EditorPropertyExposer.gd" id="15_nf6hu"]
[ext_resource type="JSON" path="res://Assets/Sprites/Items/Hammer.json" id="15_yggkc"]
[ext_resource type="Script" uid="uid://d4a7yp6e55u8t" path="res://Scripts/Classes/Components/TrackJoint.gd" id="17_5b235"]
[ext_resource type="Script" uid="uid://bbww34oiexbx2" path="res://Scripts/Classes/Components/ShellDetection.gd" id="19_ymlbw"]
[ext_resource type="Script" uid="uid://chj8hu207lrh" path="res://Scripts/Classes/Components/EnemyPlayerDetection.gd" id="20_ckuah"]
[ext_resource type="Script" uid="uid://ba18grqjixded" path="res://Scripts/Classes/Components/ExplosionDetection.gd" id="21_mcog5"]

[sub_resource type="AtlasTexture" id="AtlasTexture_6fvct"]
atlas = ExtResource("1_8mi7o")
region = Rect2(0, 0, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_17x2r"]
atlas = ExtResource("1_8mi7o")
region = Rect2(0, 48, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_nf6hu"]
atlas = ExtResource("1_8mi7o")
region = Rect2(0, 0, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_exf4b"]
atlas = ExtResource("1_8mi7o")
region = Rect2(48, 0, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_5b235"]
atlas = ExtResource("1_8mi7o")
region = Rect2(0, 48, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_yggkc"]
atlas = ExtResource("1_8mi7o")
region = Rect2(48, 48, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_ymlbw"]
atlas = ExtResource("1_8mi7o")
region = Rect2(0, 0, 48, 48)

[sub_resource type="AtlasTexture" id="AtlasTexture_ckuah"]
atlas = ExtResource("1_8mi7o")
region = Rect2(48, 0, 48, 48)

[sub_resource type="SpriteFrames" id="SpriteFrames_mcog5"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_6fvct")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_17x2r")
}],
"loop": true,
"name": &"Fall",
"speed": 15.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_nf6hu")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_exf4b")
}],
"loop": true,
"name": &"FireBreathe",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5b235")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yggkc")
}],
"loop": true,
"name": &"FireCharge",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ymlbw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ckuah")
}],
"loop": true,
"name": &"Idle",
"speed": 15.0
}]

[sub_resource type="RectangleShape2D" id="RectangleShape2D_ma5fd"]
size = Vector2(20, 24)

[sub_resource type="Animation" id="Animation_pvhfi"]
resource_name = "Hurt"
length = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SpriteScaleJoint:scale")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(1.2, 1.2), Vector2(1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SpriteScaleJoint/Sprite/ColorRect:self_modulate")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}

[sub_resource type="Animation" id="Animation_2qn7a"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SpriteScaleJoint:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SpriteScaleJoint/Sprite/ColorRect:self_modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}

[sub_resource type="AnimationLibrary" id="AnimationLibrary_6fvct"]
_data = {
&"Hurt": SubResource("Animation_pvhfi"),
&"RESET": SubResource("Animation_2qn7a")
}

[sub_resource type="SpriteFrames" id="SpriteFrames_ckuah"]
animations = [{
"frames": [],
"loop": true,
"name": &"Idle",
"speed": 5.0
}]

[sub_resource type="RectangleShape2D" id="RectangleShape2D_va0n6"]
size = Vector2(16, 18)

[sub_resource type="Animation" id="Animation_vubm2"]
resource_name = "Move"
length = 1.5
loop_mode = 2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SpriteScaleJoint:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector2(-8, -13), Vector2(8, -13)]
}

[sub_resource type="Animation" id="Animation_vgx23"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SpriteScaleJoint:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(-8, -13)]
}

[sub_resource type="AnimationLibrary" id="AnimationLibrary_v5oyl"]
_data = {
&"Move": SubResource("Animation_vubm2"),
&"RESET": SubResource("Animation_vgx23")
}

[sub_resource type="Resource" id="Resource_5b235"]
script = ExtResource("6_pvhfi")
Overworld = ExtResource("3_mliv7")
metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"

[sub_resource type="Resource" id="Resource_exf4b"]
script = ExtResource("6_pvhfi")
Overworld = SubResource("SpriteFrames_mcog5")
metadata/_custom_type_script = "uid://cmvlgsjmsk0v5"

[node name="Bowser" type="CharacterBody2D" node_paths=PackedStringArray("on_screen_enabler", "score_note_adder") groups=["Bowser", "Enemies"]]
z_index = 1
collision_layer = 16
collision_mask = 2
script = ExtResource("1_ma5fd")
on_screen_enabler = NodePath("VisibleOnScreenEnabler2D")
score_note_adder = NodePath("ScoreNoteSpawner")
metadata/block_launch_velocity = -50.0

[node name="SpriteScaleJoint" type="Node2D" parent="."]
position = Vector2(-8, -13)

[node name="Sprite" type="AnimatedSprite2D" parent="SpriteScaleJoint"]
clip_children = 2
position = Vector2(0, -11)
scale = Vector2(-1, 1)
sprite_frames = SubResource("SpriteFrames_mcog5")
animation = &"Idle"
autoplay = "Idle"
frame_progress = 0.687669
offset = Vector2(0, 1)
flip_h = true
script = ExtResource("4_2qn7a")
do_offset = false
metadata/_custom_type_script = "uid://caq1qiwmy0mox"

[node name="Hitbox" type="Area2D" parent="SpriteScaleJoint/Sprite"]
position = Vector2(0, 24)
rotation = 3.14159
scale = Vector2(1, -1)

[node name="CollisionShape2D" type="CollisionShape2D" parent="SpriteScaleJoint/Sprite/Hitbox"]
visible = false
position = Vector2(0, -12)
shape = SubResource("RectangleShape2D_ma5fd")

[node name="RemoteTransform2D" type="RemoteTransform2D" parent="SpriteScaleJoint/Sprite"]
position = Vector2(8, -8)
rotation = 3.14159
scale = Vector2(1, -1)
remote_path = NodePath("../../../Hammer")

[node name="ResourceSetterNew" type="Node" parent="SpriteScaleJoint/Sprite" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("5_17x2r")
node_to_affect = NodePath("..")
property_name = "sprite_frames"
resource_json = ExtResource("6_nf6hu")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik"

[node name="ColorRect" type="ColorRect" parent="SpriteScaleJoint/Sprite"]
modulate = Color(1, 1, 1, 0.552941)
self_modulate = Color(1, 1, 1, 0)
offset_left = -35.1663
offset_top = -22.0
offset_right = 28.8337
offset_bottom = 42.0
color = Color(1, 0, 0, 1)

[node name="HurtAnimation" type="AnimationPlayer" parent="SpriteScaleJoint"]
root_node = NodePath("../..")
libraries = {
&"": SubResource("AnimationLibrary_6fvct")
}

[node name="DeathSprite" type="AnimatedSprite2D" parent="SpriteScaleJoint"]
visible = false
position = Vector2(8, 5)
sprite_frames = SubResource("SpriteFrames_ckuah")
animation = &"Idle"
script = ExtResource("4_2qn7a")
do_offset = false
metadata/_custom_type_script = "uid://caq1qiwmy0mox"

[node name="ResourceSetterNew" type="Node" parent="SpriteScaleJoint/DeathSprite" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("5_17x2r")
node_to_affect = NodePath("..")
property_name = "sprite_frames"
resource_json = ExtResource("6_nf6hu")
use_cache = false
metadata/_custom_type_script = "uid://cbal8ms2oe1ik"

[node name="Collision" type="CollisionShape2D" parent="."]
visible = false
position = Vector2(0, -9)
shape = SubResource("RectangleShape2D_va0n6")

[node name="MoveAnimation" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_v5oyl")
}
autoplay = "Move"

[node name="JumpTimer" type="Timer" parent="."]
one_shot = true

[node name="HammerTime" type="Timer" parent="."]
one_shot = true

[node name="FlameTimer" type="Timer" parent="."]
wait_time = 0.5
one_shot = true

[node name="FallSFX" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("3_mliv7")
bus = &"SFX"

[node name="ResourceSetter" type="Node" parent="FallSFX" node_paths=PackedStringArray("node_to_affect")]
script = ExtResource("5_v5oyl")
node_to_affect = NodePath("..")
property_name = "stream"
themed_resource = SubResource("Resource_5b235")
metadata/_custom_type_script = "uid://cq6f682453q6o"

[node name="FireballDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("4_kfwlq")
hitbox = NodePath("../SpriteScaleJoint/Sprite/Hitbox")
metadata/_custom_type_script = "uid://dri2d5jtu0fbq"

[node name="GibSpawner" type="Node" parent="." node_paths=PackedStringArray("visuals")]
script = ExtResource("6_va0n6")
visuals = NodePath("../SpriteScaleJoint/DeathSprite")
gib_type = 1
metadata/_custom_type_script = "uid://c3gg32ivrlq8n"

[node name="ScoreNoteSpawner" type="Node" parent="."]
script = ExtResource("11_pvhfi")
add_score = true
metadata/_custom_type_script = "uid://5octqlf4ohel"

[node name="Hammer" type="Sprite2D" parent="."]
visible = false
show_behind_parent = true
position = Vector2(-16, -32)
texture = ExtResource("4_vubm2")
region_enabled = true
region_rect = Rect2(0, 0, 16, 16)

[node name="ResourceSetter" type="Node" parent="Hammer" node_paths=PackedStringArray("node_to_affect", "property_node")]
script = ExtResource("5_17x2r")
node_to_affect = NodePath("..")
property_node = NodePath("..")
property_name = "texture"
mode = 1
resource_json = ExtResource("15_yggkc")
metadata/_custom_type_script = "uid://cbal8ms2oe1ik"

[node name="VisibleOnScreenEnabler2D" type="VisibleOnScreenEnabler2D" parent="."]
self_modulate = Color(1, 1, 1, 0)
position = Vector2(-1.42109e-14, -16)
scale = Vector2(1.85, 2.1)

[node name="ThemedToJSONConverter" type="Node" parent="."]
script = ExtResource("14_nf6hu")
resource = SubResource("Resource_exf4b")
json_file_path = "res://Assets/Sprites/Enemies/Bowser.json"
metadata/_custom_type_script = "uid://cqif1li7otvpl"

[node name="EditorPropertyExposer" type="Node" parent="."]
script = ExtResource("15_nf6hu")
properties = Array[String](["can_hammer", "can_fire", "is_real"])

[node name="TrackJoint" type="Node" parent="."]
script = ExtResource("17_5b235")
metadata/_custom_type_script = "uid://d4a7yp6e55u8t"

[node name="ShellDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("19_ymlbw")
hitbox = NodePath("../SpriteScaleJoint/Sprite/Hitbox")
metadata/_custom_type_script = "uid://bbww34oiexbx2"

[node name="EnemyPlayerDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("20_ckuah")
hitbox = NodePath("../SpriteScaleJoint/Sprite/Hitbox")
metadata/_custom_type_script = "uid://chj8hu207lrh"

[node name="ExplosionDetection" type="Node" parent="." node_paths=PackedStringArray("hitbox")]
script = ExtResource("21_mcog5")
hitbox = NodePath("../SpriteScaleJoint/Sprite/Hitbox")
metadata/_custom_type_script = "uid://ba18grqjixded"

[connection signal="killed" from="." to="GibSpawner" method="summon_gib"]
[connection signal="killed" from="." to="ScoreNoteSpawner" method="spawn_note" binds= [5000]]
[connection signal="killed" from="." to="." method="show_smoke" unbinds=1]
[connection signal="area_entered" from="SpriteScaleJoint/Sprite/Hitbox" to="." method="on_area_entered"]
[connection signal="timeout" from="JumpTimer" to="." method="jump"]
[connection signal="timeout" from="HammerTime" to="." method="throw_hammers"]
[connection signal="timeout" from="FlameTimer" to="." method="breathe_fire"]
[connection signal="fireball_hit" from="FireballDetection" to="." method="fireball_hit" unbinds=1]
[connection signal="gib_about_to_spawn" from="GibSpawner" to="." method="on_gib_about_to_spawn"]
[connection signal="screen_entered" from="VisibleOnScreenEnabler2D" to="." method="play_music" flags=6]
[connection signal="attached" from="TrackJoint" to="MoveAnimation" method="play" binds= ["RESET"]]
[connection signal="moving_shell_entered" from="ShellDetection" to="ShellDetection" method="destroy_shell"]
[connection signal="moving_shell_entered" from="ShellDetection" to="." method="fireball_hit" unbinds=1]
[connection signal="hammer_player_hit" from="EnemyPlayerDetection" to="." method="die_from_hammer"]
[connection signal="invincible_player_hit" from="EnemyPlayerDetection" to="." method="die_from_object"]
[connection signal="player_hit" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="player_stomped_on" from="EnemyPlayerDetection" to="." method="damage_player"]
[connection signal="explosion_entered" from="ExplosionDetection" to="." method="fireball_hit" unbinds=1]
