diff --git a/assets/audio/sfx/se_Attack.wav b/assets/audio/sfx/se_Attack.wav new file mode 100644 index 0000000..841c979 Binary files /dev/null and b/assets/audio/sfx/se_Attack.wav differ diff --git a/assets/audio/sfx/se_Attack.wav.import b/assets/audio/sfx/se_Attack.wav.import new file mode 100644 index 0000000..b64d502 --- /dev/null +++ b/assets/audio/sfx/se_Attack.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://c7b60nylv85rw" +path="res://.godot/imported/se_Attack.wav-e31f042a30847251fde3ee8a3d40f914.sample" + +[deps] + +source_file="res://assets/audio/sfx/se_Attack.wav" +dest_files=["res://.godot/imported/se_Attack.wav-e31f042a30847251fde3ee8a3d40f914.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/audio/sfx/se_turn2.ogg b/assets/audio/sfx/se_turn2.ogg new file mode 100644 index 0000000..97b4b4a Binary files /dev/null and b/assets/audio/sfx/se_turn2.ogg differ diff --git a/assets/audio/sfx/se_turn2.ogg.import b/assets/audio/sfx/se_turn2.ogg.import new file mode 100644 index 0000000..de753e1 --- /dev/null +++ b/assets/audio/sfx/se_turn2.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bhr0uvens076m" +path="res://.godot/imported/se_turn2.ogg-c618521a75be55e5e6d2e2c6dda2432f.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/sfx/se_turn2.ogg" +dest_files=["res://.godot/imported/se_turn2.ogg-c618521a75be55e5e6d2e2c6dda2432f.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/vox/capri_whee.ogg b/assets/audio/vox/capri_whee.ogg new file mode 100644 index 0000000..487746e Binary files /dev/null and b/assets/audio/vox/capri_whee.ogg differ diff --git a/assets/audio/vox/capri_whee.ogg.import b/assets/audio/vox/capri_whee.ogg.import new file mode 100644 index 0000000..11c5b64 --- /dev/null +++ b/assets/audio/vox/capri_whee.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cquhska140wrt" +path="res://.godot/imported/capri_whee.ogg-177e99e3b3a8ad5a2d776cf66a13a3f7.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/vox/capri_whee.ogg" +dest_files=["res://.godot/imported/capri_whee.ogg-177e99e3b3a8ad5a2d776cf66a13a3f7.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/vox/capri_whee2.ogg b/assets/audio/vox/capri_whee2.ogg new file mode 100644 index 0000000..6ff0d88 Binary files /dev/null and b/assets/audio/vox/capri_whee2.ogg differ diff --git a/assets/audio/vox/capri_whee2.ogg.import b/assets/audio/vox/capri_whee2.ogg.import new file mode 100644 index 0000000..915734e --- /dev/null +++ b/assets/audio/vox/capri_whee2.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://e3ptgegyv17" +path="res://.godot/imported/capri_whee2.ogg-fe3f7cf3d1a8f02e34e728c2a3933520.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/vox/capri_whee2.ogg" +dest_files=["res://.godot/imported/capri_whee2.ogg-fe3f7cf3d1a8f02e34e728c2a3933520.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/vox/capri_whee3.ogg b/assets/audio/vox/capri_whee3.ogg new file mode 100644 index 0000000..f435ab4 Binary files /dev/null and b/assets/audio/vox/capri_whee3.ogg differ diff --git a/assets/audio/vox/capri_whee3.ogg.import b/assets/audio/vox/capri_whee3.ogg.import new file mode 100644 index 0000000..1345ce9 --- /dev/null +++ b/assets/audio/vox/capri_whee3.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bauqpxusk0p1i" +path="res://.godot/imported/capri_whee3.ogg-8d73a1d93bb396025b986657ecaaf3d7.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/vox/capri_whee3.ogg" +dest_files=["res://.godot/imported/capri_whee3.ogg-8d73a1d93bb396025b986657ecaaf3d7.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/cutscenes/world1_cut.tscn b/cutscenes/world1_cut.tscn index 2953c2b..a578283 100644 --- a/cutscenes/world1_cut.tscn +++ b/cutscenes/world1_cut.tscn @@ -141,9 +141,9 @@ position = Vector2(144, 108) texture = ExtResource("1_edpvw") [node name="Label" type="Label" parent="."] -offset_left = 7.0 +offset_left = -126.41 offset_top = 6.0 -offset_right = 119.0 +offset_right = -14.41 offset_bottom = 29.0 theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) theme_override_constants/shadow_outline_size = 8 @@ -152,9 +152,9 @@ theme_override_font_sizes/font_size = 16 text = "WORLD 1" [node name="Label2" type="Label" parent="."] -offset_left = 169.0 +offset_left = 295.0 offset_top = 186.0 -offset_right = 281.0 +offset_right = 407.0 offset_bottom = 209.0 theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) theme_override_constants/shadow_outline_size = 8 diff --git a/maps/its_spring.tscn b/maps/its_spring.tscn index 6bc989f..5bc42ce 100644 --- a/maps/its_spring.tscn +++ b/maps/its_spring.tscn @@ -6,7 +6,7 @@ [ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="4_onc0l"] [ext_resource type="FontFile" uid="uid://dets0g4ce7npf" path="res://assets/fonts/Super Mario Bros. NES.ttf" id="5_s8gph"] [ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="6_8fhro"] -[ext_resource type="PackedScene" uid="uid://bbnq7ptk8hhxa" path="res://maps/level1.tscn" id="7_bmr8a"] +[ext_resource type="PackedScene" uid="uid://dmg4t4vm6fd5s" path="res://maps/purple_portals.tscn" id="7_ri7pq"] [ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="8_cfxl1"] [ext_resource type="PackedScene" uid="uid://68lav5rke5ag" path="res://objects/spring/spring.tscn" id="9_dtd3x"] @@ -52,7 +52,7 @@ horizontal_alignment = 1 [node name="EndDoor" parent="." instance=ExtResource("6_8fhro")] position = Vector2(280, 24) -next_map = ExtResource("7_bmr8a") +next_map = ExtResource("7_ri7pq") [node name="Node2D" type="Node2D" parent="."] diff --git a/maps/purple_portals.tscn b/maps/purple_portals.tscn new file mode 100644 index 0000000..cf5e6f1 --- /dev/null +++ b/maps/purple_portals.tscn @@ -0,0 +1,85 @@ +[gd_scene load_steps=12 format=3 uid="uid://dmg4t4vm6fd5s"] + +[ext_resource type="Script" uid="uid://d3v13a4er2h1x" path="res://scripts/level/level.gd" id="1_srnft"] +[ext_resource type="Texture2D" uid="uid://d13tqqx8ygak4" path="res://assets/textures/backgrounds/hell.png" id="2_lx20c"] +[ext_resource type="Shader" uid="uid://cwktxks6mchp2" path="res://assets/shaders/noise.gdshader" id="3_bgmin"] +[ext_resource type="PackedScene" uid="uid://bwtpsjpe2lf7l" path="res://objects/player/player.tscn" id="4_v3h03"] +[ext_resource type="TileSet" uid="uid://xwfn24if3pxk" path="res://assets/tilesets/chocomint.tres" id="5_hgo3q"] +[ext_resource type="PackedScene" uid="uid://cypj35yv5auuc" path="res://objects/portal/portal.tscn" id="6_hgo3q"] +[ext_resource type="PackedScene" uid="uid://bhnse651bcybm" path="res://objects/end_door/end_door.tscn" id="7_ti0gq"] +[ext_resource type="PackedScene" uid="uid://bbnq7ptk8hhxa" path="res://maps/level1.tscn" id="8_o4epc"] +[ext_resource type="PackedScene" uid="uid://cnqmbq84hbnvj" path="res://objects/spikes/spikes.tscn" id="9_o4epc"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_v3h03"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_hgo3q"] +shader = ExtResource("3_bgmin") +shader_parameter/animate_noise = true +shader_parameter/noise_intensity = 1.0 +shader_parameter/fps = 15.0 + +[node name="PurplePortals" type="Node2D"] +script = ExtResource("1_srnft") +title = "Purple Portals" +id = "purple-portals" +order = 3 +metadata/_custom_type_script = "uid://d3v13a4er2h1x" + +[node name="Sprite2D" type="Sprite2D" parent="."] +material = SubResource("ShaderMaterial_v3h03") +position = Vector2(144, 108) +texture = ExtResource("2_lx20c") + +[node name="ColorRect" type="ColorRect" parent="Sprite2D"] +material = SubResource("ShaderMaterial_hgo3q") +offset_left = -144.0 +offset_top = -108.0 +offset_right = 144.0 +offset_bottom = 108.0 +color = Color(0.194349, 0.194349, 0.194349, 0.447059) + +[node name="Player" parent="." instance=ExtResource("4_v3h03")] +position = Vector2(24, 168) + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource("5_hgo3q") +format = 2 +layer_0/tile_data = PackedInt32Array(720896, 0, 0, 720897, 0, 0, 720898, 0, 0, 720899, 0, 0, 720900, 0, 0, 720901, 0, 0, 720902, 0, 0, 720903, 0, 0, 720904, 0, 0, 720905, 0, 0, 720906, 0, 0, 720907, 0, 0, 720908, 0, 0, 720909, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 15, 0, 0, 65551, 0, 0, 131087, 0, 0, 196623, 0, 0, 262159, 0, 0, 327695, 0, 0, 393231, 0, 0, 458767, 0, 0, 524303, 0, 0, 589839, 0, 0, 655375, 0, 0, 0, 0, 0, 65536, 0, 0, 131072, 0, 0, 196608, 0, 0, 6, 0, 0, 65542, 0, 0, 131078, 0, 0, 196614, 0, 0, 262150, 0, 0, 327686, 0, 0, 393222, 0, 0, 393216, 0, 0, 262144, 0, 0, 327680, 0, 0, 458758, 0, 0, 524294, 0, 0, 589830, 0, 0, 655366, 0, 0, 393227, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 458757, 0, 0, 458756, 0, 0, 458755, 0, 0, 458754, 0, 0, 458753, 0, 0, 458752, 0, 0) + +[node name="Portal" parent="." instance=ExtResource("6_hgo3q")] +position = Vector2(73, 144) +connected_portal = NodePath("../Portal2") + +[node name="Portal2" parent="." instance=ExtResource("6_hgo3q")] +position = Vector2(152, 120) +connected_portal = NodePath("../Portal") + +[node name="Portal3" parent="." instance=ExtResource("6_hgo3q")] +position = Vector2(233, 144) +connected_portal = NodePath("../Portal4") + +[node name="Portal4" parent="." instance=ExtResource("6_hgo3q")] +position = Vector2(40, 56) +connected_portal = NodePath("../Portal3") + +[node name="EndDoor" parent="." instance=ExtResource("7_ti0gq")] +position = Vector2(24, 88) +next_map = ExtResource("8_o4epc") + +[node name="Spikes" parent="." instance=ExtResource("9_o4epc")] +position = Vector2(168, 168) + +[node name="Spikes2" parent="." instance=ExtResource("9_o4epc")] +position = Vector2(88, 104) + +[node name="Spikes3" parent="." instance=ExtResource("9_o4epc")] +position = Vector2(72, 104) + +[node name="Spikes4" parent="." instance=ExtResource("9_o4epc")] +position = Vector2(56, 104) + +[node name="Spikes5" parent="." instance=ExtResource("9_o4epc")] +position = Vector2(40, 104) + +[node name="Spikes6" parent="." instance=ExtResource("9_o4epc")] +position = Vector2(24, 104) diff --git a/objects/player/player.tscn b/objects/player/player.tscn index a6d88e7..a61f72a 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=3 uid="uid://bwtpsjpe2lf7l"] +[gd_scene load_steps=35 format=3 uid="uid://bwtpsjpe2lf7l"] [ext_resource type="Script" uid="uid://dhyi4yn0xleoy" path="res://objects/player/player.gd" id="1_xs4s5"] [ext_resource type="Texture2D" uid="uid://c71nqfyw4a3v4" path="res://assets/textures/player/capri.png" id="3_trcll"] @@ -14,6 +14,11 @@ [ext_resource type="AudioStream" uid="uid://7be7ts3rdegh" path="res://assets/audio/vox/capri_jump.ogg" id="9_8c74o"] [ext_resource type="AudioStream" uid="uid://c6gck1lyk6aer" path="res://assets/audio/vox/capri_die3.ogg" id="9_ylcck"] [ext_resource type="Script" uid="uid://cyvphy8py4ntr" path="res://addons/godot_state_charts/atomic_state.gd" id="10_mvu25"] +[ext_resource type="AudioStream" uid="uid://cquhska140wrt" path="res://assets/audio/vox/capri_whee.ogg" id="10_xlkbi"] +[ext_resource type="AudioStream" uid="uid://e3ptgegyv17" path="res://assets/audio/vox/capri_whee2.ogg" id="11_l55sg"] +[ext_resource type="AudioStream" uid="uid://bauqpxusk0p1i" path="res://assets/audio/vox/capri_whee3.ogg" id="12_28utn"] +[ext_resource type="AudioStream" uid="uid://bhr0uvens076m" path="res://assets/audio/sfx/se_turn2.ogg" id="13_yyeqs"] +[ext_resource type="AudioStream" uid="uid://c7b60nylv85rw" path="res://assets/audio/sfx/se_Attack.wav" id="14_l55sg"] [sub_resource type="CircleShape2D" id="CircleShape2D_tvyy1"] radius = 6.0 @@ -30,6 +35,22 @@ stream_0/stream = ExtResource("5_bi5m7") stream_1/stream = ExtResource("8_45rsp") stream_2/stream = ExtResource("9_ylcck") +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_u8bnf"] +streams_count = 3 +stream_0/stream = ExtResource("10_xlkbi") +stream_1/stream = ExtResource("11_l55sg") +stream_2/stream = ExtResource("12_28utn") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_lc6id"] +random_pitch = 1.1 +streams_count = 1 +stream_0/stream = ExtResource("13_yyeqs") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_28utn"] +random_pitch = 1.1 +streams_count = 1 +stream_0/stream = ExtResource("14_l55sg") + [sub_resource type="Resource" id="Resource_sfpnl"] resource_name = "Not On Floor" script = ExtResource("8_8i2im") @@ -167,6 +188,17 @@ bus = &"Capri" stream = SubResource("AudioStreamRandomizer_x5bgp") bus = &"Capri" +[node name="Whee" type="AudioStreamPlayer" parent="Sounds"] +stream = SubResource("AudioStreamRandomizer_u8bnf") + +[node name="Wallkick" type="AudioStreamPlayer" parent="Sounds"] +stream = SubResource("AudioStreamRandomizer_lc6id") +volume_db = -20.0 + +[node name="HitWall" type="AudioStreamPlayer" parent="Sounds"] +stream = SubResource("AudioStreamRandomizer_28utn") +volume_db = -10.0 + [node name="StateChart" type="Node" parent="."] script = ExtResource("5_bcjtl") initial_expression_properties = { @@ -365,9 +397,12 @@ delay_in_seconds = ".25" [connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Graphics/Sprite/Jump" method="play"] [connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Sounds/Jump" method="play"] [connection signal="state_entered" from="StateChart/Root/Airborne/Missile" to="Graphics/Sprite/Missile" method="play"] +[connection signal="state_entered" from="StateChart/Root/Airborne/Missile" to="Sounds/Whee" method="play"] +[connection signal="state_entered" from="StateChart/Root/Airborne/Missile" to="Sounds/Wallkick" method="play"] [connection signal="state_exited" from="StateChart/Root/Airborne/Missile" to="." method="_restore_graphics_rotation"] [connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_face_towards_velocity"] [connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_check_for_splat"] +[connection signal="taken" from="StateChart/Root/Airborne/Missile/on Splatted" to="Sounds/HitWall" method="play"] [connection signal="state_entered" from="StateChart/Root/Floating/Splat" to="Graphics/Sprite/Splat" method="play"] [connection signal="taken" from="StateChart/Root/Floating/Splat/on JumpPressed" to="." method="_do_splat_launch"] [connection signal="state_entered" from="StateChart/Root/Floating/UnSplat" to="Graphics/Sprite/UnSplat" method="play"] diff --git a/objects/portal/portal.gd b/objects/portal/portal.gd new file mode 100644 index 0000000..eb5f359 --- /dev/null +++ b/objects/portal/portal.gd @@ -0,0 +1,16 @@ +extends Node2D + +@export var connected_portal: NodePath +@onready var portal = get_node(connected_portal) +var check_for_bodies = true + +func _on_area_2d_body_entered(body: Node2D) -> void: + if body is Player && check_for_bodies: + body.global_position = portal.global_position + body.launch(body.velocity * 1.25) + portal.check_for_bodies = false + + +func _on_area_2d_body_exited(body: Node2D) -> void: + await get_tree().create_timer(0.1).timeout + check_for_bodies = true diff --git a/objects/portal/portal.gd.uid b/objects/portal/portal.gd.uid new file mode 100644 index 0000000..9fbb1be --- /dev/null +++ b/objects/portal/portal.gd.uid @@ -0,0 +1 @@ +uid://dbrblyk7xttpj diff --git a/objects/portal/portal.tscn b/objects/portal/portal.tscn new file mode 100644 index 0000000..a03aeba --- /dev/null +++ b/objects/portal/portal.tscn @@ -0,0 +1,67 @@ +[gd_scene load_steps=7 format=3 uid="uid://cypj35yv5auuc"] + +[ext_resource type="Script" uid="uid://dbrblyk7xttpj" path="res://objects/portal/portal.gd" id="1_v7atq"] +[ext_resource type="Texture2D" uid="uid://dtwp3ohanw2sn" path="res://assets/textures/portal/portal.png" id="2_ah4id"] + +[sub_resource type="Animation" id="Animation_xxtm7"] +resource_name = "spin" +length = 0.5 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 6.28319] +} + +[sub_resource type="Animation" id="Animation_0po8f"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite2D:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_6y8yo"] +_data = { +&"RESET": SubResource("Animation_0po8f"), +&"spin": SubResource("Animation_xxtm7") +} + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_v7atq"] +size = Vector2(16, 16) + +[node name="Portal" type="Node2D"] +script = ExtResource("1_v7atq") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_ah4id") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_6y8yo") +} +autoplay = "spin" + +[node name="Area2D" type="Area2D" parent="."] +collision_mask = 16 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("RectangleShape2D_v7atq") + +[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"] +[connection signal="body_exited" from="Area2D" to="." method="_on_area_2d_body_exited"]