Initial jam build, 2 endings— secret ending glitches and doesn't show
title upon completion.
This commit is contained in:
parent
ab0a4e24f7
commit
7b47e847ae
14 changed files with 496 additions and 58 deletions
|
|
@ -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}'"
|
||||
|
|
|
|||
144
scenes/boss.gd
144
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()
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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():
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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")]
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.6 KiB |
Loading…
Add table
Add a link
Reference in a new issue