diff --git a/export_presets.cfg b/export_presets.cfg index 241e35f..a81a4b7 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -6,9 +6,9 @@ runnable=false dedicated_server=false custom_features="" export_filter="all_resources" -include_filter="" +include_filter="*" exclude_filter="" -export_path="../../Downloads/2026-03-04 115917 -The Third Place/index.html" +export_path="../../Downloads/2026-03-05 113654 The Third Place/index.html" patches=PackedStringArray() patch_delta_encoding=false patch_delta_compression_level_zstd=19 @@ -28,7 +28,7 @@ custom_template/debug="" custom_template/release="" variant/extensions_support=false variant/thread_support=false -vram_texture_compression/for_desktop=true +vram_texture_compression/for_desktop=false vram_texture_compression/for_mobile=false html/export_icon=true html/custom_html_shell="" @@ -37,7 +37,7 @@ html/canvas_resize_policy=2 html/focus_canvas_on_start=true html/experimental_virtual_keyboard=false progressive_web_app/enabled=false -progressive_web_app/ensure_cross_origin_isolation_headers=true +progressive_web_app/ensure_cross_origin_isolation_headers=false progressive_web_app/offline_page="" progressive_web_app/display=3 progressive_web_app/orientation=2 @@ -47,3 +47,335 @@ progressive_web_app/icon_512x512="" progressive_web_app/background_color=Color(0, 0, 0, 1) threads/emscripten_pool_size=8 threads/godot_pool_size=4 + +[preset.1] + +name="macOS" +platform="macOS" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../Downloads/The Third Place.dmg" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +export/distribution_type=0 +binary_format/architecture="universal" +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +application/liquid_glass_icon="" +application/icon="" +application/icon_interpolation=4 +application/bundle_identifier="com.the-third-place" +application/signature="" +application/app_category="Games" +application/short_version="" +application/version="" +application/copyright="" +application/copyright_localized={} +application/min_macos_version_x86_64="10.12" +application/min_macos_version_arm64="11.00" +application/export_angle=0 +display/high_res=true +shader_baker/enabled=false +application/additional_plist_content="" +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=1 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/entitlements/app_sandbox/helper_executables=[] +codesign/entitlements/additional="" +codesign/custom_options=PackedStringArray() +notarization/notarization=0 +privacy/microphone_usage_description="" +privacy/microphone_usage_description_localized={} +privacy/camera_usage_description="" +privacy/camera_usage_description_localized={} +privacy/location_usage_description="" +privacy/location_usage_description_localized={} +privacy/address_book_usage_description="" +privacy/address_book_usage_description_localized={} +privacy/calendar_usage_description="" +privacy/calendar_usage_description_localized={} +privacy/photos_library_usage_description="" +privacy/photos_library_usage_description_localized={} +privacy/desktop_folder_usage_description="" +privacy/desktop_folder_usage_description_localized={} +privacy/documents_folder_usage_description="" +privacy/documents_folder_usage_description_localized={} +privacy/downloads_folder_usage_description="" +privacy/downloads_folder_usage_description_localized={} +privacy/network_volumes_usage_description="" +privacy/network_volumes_usage_description_localized={} +privacy/removable_volumes_usage_description="" +privacy/removable_volumes_usage_description_localized={} +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_history/collected=false +privacy/collected_data/search_history/linked_to_user=false +privacy/collected_data/search_history/used_for_tracking=false +privacy/collected_data/search_history/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +pkill -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" + +[preset.2] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../../Downloads/The Third Place.exe" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/scenes/boss.gd b/scenes/boss.gd index b0e74ec..49115a9 100644 --- a/scenes/boss.gd +++ b/scenes/boss.gd @@ -6,24 +6,36 @@ var bullet_scene = preload("res://scenes/enemy_bullet.tscn") var start_pos = Vector2.ZERO var speed = 0 var tween_speed: float = 1.4 +var pause: bool = false -var horse_counter = 1 -var exploding = false +var horse_counter: int = 0 +var horse_phase: bool = true +var exploding:bool = false +var heart_taken: bool = false +var heart_broken: bool = false @onready var boss = $AnimationPlayer @onready var screensize = get_viewport_rect().size func _ready(): + EventBus.ending.connect(_on_ending) + boss_intro() + $Heart.monitoring = false + $Heart.monitorable = false + +func _process(delta: float) -> void: + if pause == true: return + + +func boss_intro(): + # Move boss into screen position = Vector2(screensize.x / 2, -screensize.y) var tween = create_tween().set_ease(Tween.EASE_OUT) tween.tween_property(self, "position:y", 100, 2) await tween.finished - boss_intro() - - -func boss_intro(): + # Introduce Lady of Whispers print("Boss intro!") await get_tree().create_timer(2).timeout boss.play("align") @@ -32,57 +44,119 @@ func boss_intro(): await get_tree().create_timer(4).timeout boss.play("whisper") await get_tree().create_timer(1).timeout - boss_horse() + + # Check to see if horse phase is available + horse_phase_check() + + +func horse_phase_check(): + if horse_phase == true: boss_horse() + if horse_phase == false: + print("No more horse!") + $Sprite2D.frame = 0 + if horse_phase == false and heart_broken == true: + $Sprite2D.frame = 4 func boss_horse(): - $Horse.horse_phase = true - print("Boss horse!") - await get_tree().create_timer(2).timeout - EventBus.flash_screen.emit(.25) - $Heart.hide() - $Horse.show() - $Sprite2D.frame = 7 - $Horse.start() - var horse_player = $Horse/AnimationPlayer - horse_player.play("run") - await get_tree().create_timer(10).timeout - EventBus.flash_screen.emit(.25) - $Horse.hide() - $Horse.end() - await get_tree().create_timer(5).timeout - horse_counter += 1 - lady_of_whispers() + + if heart_taken == false: + print("Boss horse!") + await get_tree().create_timer(2).timeout + EventBus.flash_screen.emit(.25) + $Heart.hide() + $Heart.monitoring = false + $Sprite2D.frame = 7 + $Horse.show() + $Horse.start() + var horse_player = $Horse/AnimationPlayer + horse_player.play("run") + await get_tree().create_timer(10).timeout + EventBus.flash_screen.emit(.25) + $Horse.hide() + $Horse.end() + await get_tree().create_timer(5).timeout + horse_counter += 1 + lady_of_whispers() + + if heart_taken == true or heart_broken == true: + horse_phase = false + horse_phase_check() func lady_of_whispers(): if horse_counter == 2: - - print("Lady of Whispers offers you a heart!") - boss.play("rise") - await get_tree().create_timer(4).timeout - # boss.play("whisper") offer_heart() + if horse_counter <= 1: print("Lady of Whispers!") boss.play("rise") await get_tree().create_timer(4).timeout boss.play("whisper") + await boss.animation_finished await get_tree().create_timer(1).timeout - boss_horse() + horse_phase_check() func hit_detection(): return func offer_heart(): - $Heart.show() + print("Lady of Whispers offers you a heart!") + boss.play("rise") await get_tree().create_timer(4).timeout - boss_horse() - horse_counter = 0 - print("Horse Counter:",horse_counter) - + $Heart.show() + $Heart.monitoring = true + $Heart.monitorable = true + heart_check() + +func heart_check(): + print("Heart check!") + if heart_taken == false: + await get_tree().create_timer(4).timeout + horse_counter = 0 + print("Horse Counter:",horse_counter) + + if heart_taken == true or heart_broken == true: + $Heart.monitoring = false + $Heart.monitorable = false + horse_phase = false + + horse_phase_check() + +func _on_ending(value: int): + if value == 1: + heart_taken = true + horse_phase = false + #horse_phase_check() + print("Fix your broken heart or die") + $Sprite2D.frame = 0 + var tween = create_tween() + tween.tween_property(self, "position:y", 180, 2).set_ease(Tween.EASE_OUT) + tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(Tween.EASE_IN) + await get_tree().create_timer(8).timeout + EventBus.goose_talk.emit(3) + self.monitoring = false + self.monitorable = false + + + if value == 2: + heart_broken = true + horse_phase = false + horse_phase_check() + print("Some hearts are too wild.") + $Heart.hide() + $Heart.monitoring = false + $Heart.monitorable = false + EventBus.flash_screen.emit(.25) + $Sprite2D.frame = 4 + await get_tree().create_timer(4).timeout + EventBus.goose_talk.emit(4) + self.monitoring = false + self.monitorable = false + EventBus.win_game.emit() + diff --git a/scenes/boss.tscn b/scenes/boss.tscn index 0a32d18..075fa0b 100644 --- a/scenes/boss.tscn +++ b/scenes/boss.tscn @@ -217,6 +217,7 @@ wait_time = 0.05 one_shot = true [node name="Heart" type="Area2D" parent="." unique_id=1098254590 groups=["heart"]] +visible = false position = Vector2(0, -71) [node name="Sprite2D" type="Sprite2D" parent="Heart" unique_id=520903474] diff --git a/scenes/boss_horse.gd b/scenes/boss_horse.gd index fa421fa..808dec6 100644 --- a/scenes/boss_horse.gd +++ b/scenes/boss_horse.gd @@ -60,7 +60,6 @@ func _process(delta): rotater.rotation_degrees -= 2.5 # Adjust rotation speed func spawn_bullet(): - print("I'm spawning bullets!") var bullet = bullet_scene.instantiate() get_tree().root.add_child(bullet) bullet.position = rotater.global_position @@ -73,7 +72,6 @@ func spawn_bullet(): func _on_shoot_timer_timeout() -> void: - print("Shoot timer timeout!") spawn_bullet() #for s in rotater.get_children(): #var b = bullet_scene.instantiate() diff --git a/scenes/bullet.gd b/scenes/bullet.gd index e040f21..08aba9f 100644 --- a/scenes/bullet.gd +++ b/scenes/bullet.gd @@ -81,9 +81,9 @@ func _on_area_entered(area: Area2D) -> void: if area.is_in_group("heart"): - print("I've shot the heart!") - area.hit_detection() - queue_free() + print("Heart hit!") + EventBus.ending.emit(2) + #area.hit_detection() #func bullet_fx(): diff --git a/scenes/enemy_crt.tscn b/scenes/enemy_crt.tscn index f5e6611..cf78541 100644 --- a/scenes/enemy_crt.tscn +++ b/scenes/enemy_crt.tscn @@ -254,6 +254,7 @@ libraries/ = SubResource("AnimationLibrary_7ellt") [node name="ImpactCRT" type="AudioStreamPlayer2D" parent="." unique_id=518408763] stream = ExtResource("6_gas3w") +volume_db = -16.028 [connection signal="timeout" from="MoveTimer" to="." method="_on_timer_timeout"] [connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"] diff --git a/scenes/event_bus.gd b/scenes/event_bus.gd index f98c6d4..f397bb8 100644 --- a/scenes/event_bus.gd +++ b/scenes/event_bus.gd @@ -15,4 +15,9 @@ signal goose_talk(frame_index: int) signal flash_screen(duration: float) signal cloud_speed() +# Ending +signal ending(value: int) +signal win_game() +signal secret_win_game() + @warning_ignore_restore("unused_signal") # put any future signals you add between the two ignore annotations diff --git a/scenes/goose.tscn b/scenes/goose.tscn index 17ef3f2..945d357 100644 --- a/scenes/goose.tscn +++ b/scenes/goose.tscn @@ -16,7 +16,7 @@ texture = ExtResource("1_wo8sg") [node name="Bubble" type="Sprite2D" parent="DapperGoose" unique_id=2012258473] position = Vector2(-108, -21) texture = ExtResource("3_g7ad0") -hframes = 4 +hframes = 8 [node name="Quacking" type="Timer" parent="DapperGoose" unique_id=1836315393] wait_time = 3.0 diff --git a/scenes/main.gd b/scenes/main.gd index bfd2916..d934e96 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -26,6 +26,8 @@ func _ready(): #EventBus.enemy_died.connect(_on_enemy_died) EventBus.enemy_hit.connect(_on_enemy_hit) EventBus.flash_screen.connect(_on_flash_screen) + EventBus.win_game.connect(_on_win_game) + EventBus.secret_win_game.connect(_on_secret_win_game) #func spawn_enemies(): @@ -78,7 +80,7 @@ func _on_player_died(): # get_tree().call_group("enemies", "queue_free") # $Player.set_process(false) # get_tree().call_group("enemies", "set_process", false) - EventBus.goose_talk.emit(3) + EventBus.goose_talk.emit(7) instance.queue_free() game_over.show() $LevelAudio.stop() @@ -91,6 +93,7 @@ func _on_player_died(): func new_game(): $CanvasLayer/Title.hide() # Ensure enemies are cleared. + get_tree().call_group("boss", "queue_free") get_tree().call_group("enemies", "queue_free") get_tree().call_group("shards", "queue_free") get_tree().call_group("enemy_bullets", "queue_free") @@ -115,7 +118,7 @@ func new_game(): # Do some DapperGoose talk await get_tree().create_timer(1.5).timeout - EventBus.goose_talk.emit(2) + EventBus.goose_talk.emit(6) # Tell the enemies to spawn! #await get_tree().create_timer(.5).timeout @@ -143,11 +146,21 @@ func _on_start_pressed(): $Welcome.play() new_game() -func win_game(): + +func _on_secret_win_game(): + playing = false + game_over.show() + #await get_tree().create_timer(8).timeout + game_over.hide() + $CanvasLayer/Title.show() + start_button.show() + + +func _on_win_game(): playing = false game_over.show() $Player._on_player_victory() - await get_tree().create_timer(2).timeout + await get_tree().create_timer(8).timeout game_over.hide() $CanvasLayer/Title.show() start_button.show() diff --git a/scenes/main.tscn b/scenes/main.tscn index 2b0547b..2761ac7 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -139,7 +139,8 @@ volume_db = -0.5 [node name="LevelAudio" type="AudioStreamPlayer2D" parent="." unique_id=2125260365] stream = ExtResource("12_trceg") -volume_db = -13.178 +volume_db = -20.0 +pitch_scale = 0.8 [node name="Wave" parent="." unique_id=2117861058 instance=ExtResource("11_ya4ey")] diff --git a/scenes/player.gd b/scenes/player.gd index 80bec54..7d846d6 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -12,7 +12,7 @@ signal damage_taken var shield: int = 0: set = _on_set_shield - +var pause: bool = false var can_shoot = false var shader_active: bool = false: set(value): @@ -32,6 +32,7 @@ func _ready(): set_process(false) print(shield) EventBus.set_shield.connect(_on_set_shield) + #EventBus.player_victory.connect(_on_player_victory) # start() func start(): @@ -55,6 +56,8 @@ func start(): # EventBus.shield_changed.emit(max_shield, old_value, shield) func _process(delta): + if pause == true: return + var input = Input.get_vector("left", "right", "up", "down") if input.x > 0: $Ship.frame = 2 @@ -129,9 +132,16 @@ func _on_area_entered(area): if area.is_in_group("boss"): print("Entered boss!") + shield -= int(max_shield / 2) + _on_damage_taken() if area.is_in_group("heart"): print("Got the heart!") + pause = true + reparent(area) + ship.frame = 0 + EventBus.ending.emit(1) + func _on_damage_taken(): @@ -150,8 +160,10 @@ func _on_player_victory() -> void: print("Victory!") # get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring! set_process(false) - $Ship.frame = 1 - await get_tree().create_timer(1).timeout + #$Ship.frame = 1 + self.monitorable = false + self.monitoring = false + await get_tree().create_timer(4).timeout # $Ship/Boosters/BoosterBurst.show() var tween = create_tween() tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN) diff --git a/scenes/player.tscn b/scenes/player.tscn index 7bae6c3..b15f89b 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -142,6 +142,7 @@ region_rect = Rect2(0, 0, 96, 16) [node name="HeadInflate" type="AudioStreamPlayer2D" parent="." unique_id=374500278] stream = ExtResource("10_y4r1p") +volume_db = -9.973 [connection signal="area_entered" from="." to="." method="_on_area_entered"] [connection signal="damage_taken" from="." to="." method="_on_damage_taken"] diff --git a/scenes/wave.gd b/scenes/wave.gd index f6ee453..3257a9b 100644 --- a/scenes/wave.gd +++ b/scenes/wave.gd @@ -25,7 +25,7 @@ func _ready(): func spawn_enemies(): - if wave_count == 1: #This is for CHICKENS + if wave_count == 3: #This is for CHICKENS print("Enemy Wave: ", wave_count) enemy = CHICKEN for x in range(COLS): @@ -38,7 +38,7 @@ func spawn_enemies(): await get_tree().process_frame print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size()) - if wave_count == 3: #This is for CRTs + if wave_count == 1: #This is for CRTs print("Enemy Wave: ", wave_count) enemy = CRT var cols_mod = COLS - 1 @@ -53,7 +53,7 @@ func spawn_enemies(): enemy_count = rows_mod * cols_mod await get_tree().process_frame - if wave_count == 0 : #This if for Mirror + if wave_count == 2 : #This if for Mirror print("Enemy Wave: ", wave_count) # Spawn Table @@ -89,7 +89,7 @@ func spawn_enemies(): s.start_all_animations() - if wave_count == 2 : #This is for Boss + if wave_count == 0 : #This is for Boss # Hide the player @@ -126,7 +126,7 @@ func wave_status(): wave_complete = false else: - EventBus.goose_talk.emit(1) + EventBus.goose_talk.emit(wave_count) wave_initialize() wave_complete = true diff --git a/sprites/bubble.png b/sprites/bubble.png index b406e33..db2809a 100644 Binary files a/sprites/bubble.png and b/sprites/bubble.png differ