Compare commits
10 commits
b13cf3d96b
...
04cfdd01dc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
04cfdd01dc | ||
|
|
051c46d40d | ||
|
|
71e42c0372 | ||
|
|
7e673de5ca | ||
|
|
979341cba2 | ||
|
|
209d2fdea8 | ||
|
|
1d0e362d54 | ||
|
|
e18abd8bef | ||
|
|
a24c06737b | ||
|
|
04d50df23e |
21
LICENSE
|
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2024 Bartosz Budnik (BudzioT)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
20
README.md
|
|
@ -1,8 +1,20 @@
|
||||||
# Super Space Game
|
# Super Space Game
|
||||||
|
|
||||||
A full remake of my previous Space Game with far more features, content and functionality. The only borrowed assets from the original game are specific sound effects.
|
18 September, 2140 [EARTH STANDARD TIME]. Ash Milian wakes up from a coma. Remembering nothing about the world or their life, you must fly around the C022 solar system as a mercenary to find answers to who you are, and why you're here.
|
||||||
|
|
||||||
## Credits
|
A full remake of my previous Space Game with far more features, content and functionality. The only borrowed assets from the original game are sound effects, and also the code for stars. Turns out that's hard to do right.
|
||||||
|
|
||||||
Space station music themes from Roblox 3008 OST by uglyburger0
|
I likely will finish this game after siege, although it will not be immediately.
|
||||||
Input icons by Kenney (they're really good, you can find them [here](https://kenney.nl/assets/input-prompts))
|
|
||||||
|
## Hints for testers
|
||||||
|
Above all else: THIS IS A PROTOTYPE. While I'm definitely making this into a proper game, it's still a prototype. It's not perfect. It's probably buggy. But I've put a lot of effort into it, so I get a gold star for effort (I will eats it :3)
|
||||||
|
|
||||||
|
- In your ship, you can press the SELECT/SHARE/BACK/- button on your controller (or CAPS LOCK on PC) to open the navpanel. You can fast travel and pick up contracts.
|
||||||
|
- The only real content is in the intro and first contract.
|
||||||
|
- In the intro, you probably shouldn't fight the enemies that chase you. They are very beefy.
|
||||||
|
- The first contract is not finished.
|
||||||
|
|
||||||
|
The following hints require the console, which can be opened with the TILDE key (the key with ~ on it, usually below [ESC].)
|
||||||
|
|
||||||
|
- You can use `summon_enemy` in the console while in space to summon an enemy ship behind you.
|
||||||
|
- Unable to unholster your gun? Use the console command `give_ground_gun pistol` and try again.
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,9 @@ static var button_dictionary = {
|
||||||
JOY_BUTTON_LEFT_SHOULDER: "left_shoulder",
|
JOY_BUTTON_LEFT_SHOULDER: "left_shoulder",
|
||||||
JOY_BUTTON_RIGHT_SHOULDER: "left_shoulder",
|
JOY_BUTTON_RIGHT_SHOULDER: "left_shoulder",
|
||||||
JOY_BUTTON_PADDLE1: "left_shoulder",
|
JOY_BUTTON_PADDLE1: "left_shoulder",
|
||||||
JOY_BUTTON_BACK: "back"
|
JOY_BUTTON_BACK: "back",
|
||||||
|
JOY_BUTTON_LEFT_STICK: "left_stick",
|
||||||
|
JOY_BUTTON_RIGHT_STICK: "right_stick",
|
||||||
}
|
}
|
||||||
|
|
||||||
static var mouse_button_dictionary = {
|
static var mouse_button_dictionary = {
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 508 B |
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://c6sh4c72e10ws"
|
uid="uid://c6sh4c72e10ws"
|
||||||
path="res://.godot/imported/xbox_stick_side_l.png-9b2e6474d68e522ac5c74d5b2ae135cd.ctex"
|
path="res://.godot/imported/left_stick.png-b6fd8c2882bba6bbb1bf517e0c2b20b2.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://addons/super_awesome_input_icons/textures/generic/xbox_stick_side_l.png"
|
source_file="res://addons/super_awesome_input_icons/textures/generic/left_stick.png"
|
||||||
dest_files=["res://.godot/imported/xbox_stick_side_l.png-9b2e6474d68e522ac5c74d5b2ae135cd.ctex"]
|
dest_files=["res://.godot/imported/left_stick.png-b6fd8c2882bba6bbb1bf517e0c2b20b2.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 585 B After Width: | Height: | Size: 585 B |
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://h435fkxc3v6g"
|
uid="uid://h435fkxc3v6g"
|
||||||
path="res://.godot/imported/xbox_stick_side_r.png-902b85f39a099dfd98c9b55995248612.ctex"
|
path="res://.godot/imported/right_stick.png-30fad7bf49d37f7e890b3dc790811c08.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://addons/super_awesome_input_icons/textures/generic/xbox_stick_side_r.png"
|
source_file="res://addons/super_awesome_input_icons/textures/generic/right_stick.png"
|
||||||
dest_files=["res://.godot/imported/xbox_stick_side_r.png-902b85f39a099dfd98c9b55995248612.ctex"]
|
dest_files=["res://.godot/imported/right_stick.png-30fad7bf49d37f7e890b3dc790811c08.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
[gd_resource type="AudioBusLayout" format=3 uid="uid://cbmx3klr6k4mt"]
|
[gd_resource type="AudioBusLayout" load_steps=2 format=3 uid="uid://cbmx3klr6k4mt"]
|
||||||
|
|
||||||
|
[sub_resource type="AudioEffectLowPassFilter" id="AudioEffectLowPassFilter_j3pel"]
|
||||||
|
resource_name = "LowPassFilter"
|
||||||
|
cutoff_hz = 10000.0
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
bus/0/effect/0/effect = SubResource("AudioEffectLowPassFilter_j3pel")
|
||||||
|
bus/0/effect/0/enabled = false
|
||||||
bus/1/name = &"Music"
|
bus/1/name = &"Music"
|
||||||
bus/1/solo = false
|
bus/1/solo = false
|
||||||
bus/1/mute = false
|
bus/1/mute = false
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,9 @@ advanced_options=false
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="all_resources"
|
||||||
include_filter=""
|
include_filter="sounds/*"
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="export/windows/super-space-game.exe"
|
export_path="export/windows/ssg-prototype.exe"
|
||||||
patches=PackedStringArray()
|
patches=PackedStringArray()
|
||||||
encryption_include_filters=""
|
encryption_include_filters=""
|
||||||
encryption_exclude_filters=""
|
encryption_exclude_filters=""
|
||||||
|
|
@ -65,3 +65,301 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
|
||||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -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
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||||
|
|
||||||
|
[preset.1]
|
||||||
|
|
||||||
|
name="macOS"
|
||||||
|
platform="macOS"
|
||||||
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter="sounds/*"
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="export/mac/ssg-prototype.app"
|
||||||
|
patches=PackedStringArray()
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
seed=0
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_export_mode=2
|
||||||
|
|
||||||
|
[preset.1.options]
|
||||||
|
|
||||||
|
export/distribution_type=1
|
||||||
|
binary_format/architecture="universal"
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_wrapper=1
|
||||||
|
application/icon=""
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/bundle_identifier="com.toasterpanic.super-space-game-prototype"
|
||||||
|
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_hhistory/collected=false
|
||||||
|
privacy/collected_data/search_hhistory/linked_to_user=false
|
||||||
|
privacy/collected_data/search_hhistory/used_for_tracking=false
|
||||||
|
privacy/collected_data/search_hhistory/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
|
||||||
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
|
|
||||||
|
[preset.2]
|
||||||
|
|
||||||
|
name="Linux"
|
||||||
|
platform="Linux"
|
||||||
|
runnable=true
|
||||||
|
advanced_options=false
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter="sounds/*"
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="export/linux/ssg-prototype.x86_64"
|
||||||
|
patches=PackedStringArray()
|
||||||
|
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=true
|
||||||
|
texture_format/s3tc_bptc=true
|
||||||
|
texture_format/etc2_astc=false
|
||||||
|
shader_baker/enabled=false
|
||||||
|
binary_format/architecture="x86_64"
|
||||||
|
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
|
||||||
|
export DISPLAY=:0
|
||||||
|
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
|
\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||||
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
extends Marker2D
|
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready() -> void:
|
|
||||||
pass # Replace with function body.
|
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(delta: float) -> void:
|
|
||||||
position = get_global_mouse_position()
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://c5cyiafgmvb8h
|
|
||||||
|
|
@ -225,6 +225,12 @@ aim_down={
|
||||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
toggle_holster={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194329,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":8,"pressure":0.0,"pressed":true,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
|
|
@ -236,5 +242,6 @@ aim_down={
|
||||||
|
|
||||||
textures/canvas_textures/default_texture_filter=0
|
textures/canvas_textures/default_texture_filter=0
|
||||||
renderer/rendering_method="mobile"
|
renderer/rendering_method="mobile"
|
||||||
|
textures/vram_compression/import_etc2_astc=true
|
||||||
environment/defaults/default_clear_color=Color(0, 0, 0, 1)
|
environment/defaults/default_clear_color=Color(0, 0, 0, 1)
|
||||||
2d/snap/snap_2d_transforms_to_pixel=true
|
2d/snap/snap_2d_transforms_to_pixel=true
|
||||||
|
|
|
||||||
9
scenes/alertness_marker.tscn
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://bav8ogrhgycaw"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cfuclgb21yw7n" path="res://textures/navigation_marker.png" id="1_i4ju7"]
|
||||||
|
[ext_resource type="Script" uid="uid://ddwxm6i060srm" path="res://scripts/navigation_marker.gd" id="2_yh82h"]
|
||||||
|
|
||||||
|
[node name="AlertnessMarker" type="Sprite2D"]
|
||||||
|
modulate = Color(1, 0, 0, 1)
|
||||||
|
texture = ExtResource("1_i4ju7")
|
||||||
|
script = ExtResource("2_yh82h")
|
||||||
20
scenes/contract_item.tscn
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://b28c58tdwi3k5"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://c3m22vi3fsimq" path="res://scripts/contract_item.gd" id="1_y4oga"]
|
||||||
|
|
||||||
|
[node name="ContractItem" type="VBoxContainer"]
|
||||||
|
script = ExtResource("1_y4oga")
|
||||||
|
|
||||||
|
[node name="Label" type="RichTextLabel" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[font size=24]space station 1[/font]
|
||||||
|
1000u away"
|
||||||
|
fit_content = true
|
||||||
|
scroll_active = false
|
||||||
|
|
||||||
|
[node name="Button" type="Button" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "select"
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
||||||
104
scenes/doors/door_medium_horizontial.tscn
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
[gd_scene load_steps=12 format=3 uid="uid://cs30mgkcn74is"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://b88ykyte6oi3i" path="res://scripts/door_medium_horizontial.gd" id="1_8opqd"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://djmlhid6f4xwi" path="res://textures/door_medium_horziontial.png" id="2_8opqd"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ydv31"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(384, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_tlrp8"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(320, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ruhr2"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(256, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_388o4"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(192, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_apq5w"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(128, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_kxlda"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(64, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_5gimo"]
|
||||||
|
atlas = ExtResource("2_8opqd")
|
||||||
|
region = Rect2(0, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_vvdds"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ydv31")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_tlrp8")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ruhr2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_388o4")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_apq5w")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_kxlda")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5gimo")
|
||||||
|
}],
|
||||||
|
"loop": false,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 12.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5gimo")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_kxlda")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_apq5w")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_388o4")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ruhr2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_tlrp8")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ydv31")
|
||||||
|
}],
|
||||||
|
"loop": false,
|
||||||
|
"name": &"open",
|
||||||
|
"speed": 12.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhfm6"]
|
||||||
|
size = Vector2(96, 32)
|
||||||
|
|
||||||
|
[node name="DoorMediumHorizontial" type="StaticBody2D"]
|
||||||
|
scale = Vector2(2, 2)
|
||||||
|
script = ExtResource("1_8opqd")
|
||||||
|
|
||||||
|
[node name="Sprite" type="AnimatedSprite2D" parent="."]
|
||||||
|
sprite_frames = SubResource("SpriteFrames_vvdds")
|
||||||
|
autoplay = "default"
|
||||||
|
frame = 6
|
||||||
|
frame_progress = 1.0
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2(0, 16)
|
||||||
|
shape = SubResource("RectangleShape2D_bhfm6")
|
||||||
|
|
@ -36,9 +36,11 @@ bus = &"Sound Effects"
|
||||||
|
|
||||||
[node name="Fire" type="AudioStreamPlayer" parent="."]
|
[node name="Fire" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource("5_ipns3")
|
stream = ExtResource("5_ipns3")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
[node name="Explode" type="AudioStreamPlayer" parent="."]
|
[node name="Explode" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource("5_ipns3")
|
stream = ExtResource("5_ipns3")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite2D" parent="."]
|
[node name="Sprite" type="Sprite2D" parent="."]
|
||||||
texture = ExtResource("6_w8i8w")
|
texture = ExtResource("6_w8i8w")
|
||||||
|
|
|
||||||
133
scenes/enemy_ground.tscn
Normal file
|
|
@ -0,0 +1,133 @@
|
||||||
|
[gd_scene load_steps=14 format=3 uid="uid://dh3psx6ilrtql"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bv7ymrwe6ciax" path="res://scripts/enemy_ground.gd" id="1_hqfmb"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://dpkn65kpftlmr" path="res://sounds/alerted.mp3" id="2_egpqw"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://boiv2kfau8gop" path="res://sounds/detecting.mp3" id="3_6bsrn"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c0cyhybh30ogt" path="res://textures/player-ground-sheet.png" id="4_tcxjb"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://csrlh1sbdroud" path="res://textures/pistol.png" id="5_k5k1o"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://5x8fl2mk082h" path="res://sounds/gunshot_1.mp3" id="6_sh8im"]
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jo68p"]
|
||||||
|
atlas = ExtResource("4_tcxjb")
|
||||||
|
region = Rect2(0, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_6gpfv"]
|
||||||
|
atlas = ExtResource("4_tcxjb")
|
||||||
|
region = Rect2(64, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_fd1o3"]
|
||||||
|
atlas = ExtResource("4_tcxjb")
|
||||||
|
region = Rect2(192, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_yqhs4"]
|
||||||
|
atlas = ExtResource("4_tcxjb")
|
||||||
|
region = Rect2(128, 0, 64, 64)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_vmpfq"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jo68p")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6gpfv")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_fd1o3")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_yqhs4")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 5.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jo68p")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"idle",
|
||||||
|
"speed": 5.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_6gpfv")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jo68p")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_fd1o3")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_yqhs4")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"walk",
|
||||||
|
"speed": 7.0
|
||||||
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_jxmby"]
|
||||||
|
radius = 21.0
|
||||||
|
height = 48.0
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_tvsp8"]
|
||||||
|
radius = 25.0
|
||||||
|
height = 148.0
|
||||||
|
|
||||||
|
[node name="Enemy" type="CharacterBody2D"]
|
||||||
|
script = ExtResource("1_hqfmb")
|
||||||
|
|
||||||
|
[node name="Alerted" type="AudioStreamPlayer2D" parent="."]
|
||||||
|
stream = ExtResource("2_egpqw")
|
||||||
|
volume_db = 8.0
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="Detecting" type="AudioStreamPlayer2D" parent="."]
|
||||||
|
stream = ExtResource("3_6bsrn")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
parameters/looping = true
|
||||||
|
|
||||||
|
[node name="Sprite" type="AnimatedSprite2D" parent="."]
|
||||||
|
scale = Vector2(2, 2)
|
||||||
|
sprite_frames = SubResource("SpriteFrames_vmpfq")
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2(0, 40)
|
||||||
|
shape = SubResource("CapsuleShape2D_jxmby")
|
||||||
|
|
||||||
|
[node name="LineOfSight" type="RayCast2D" parent="."]
|
||||||
|
target_position = Vector2(2048, 0)
|
||||||
|
collision_mask = 2
|
||||||
|
collide_with_areas = true
|
||||||
|
|
||||||
|
[node name="HeldItem" type="Node2D" parent="."]
|
||||||
|
|
||||||
|
[node name="Cast" type="RayCast2D" parent="HeldItem"]
|
||||||
|
position = Vector2(64, 0)
|
||||||
|
target_position = Vector2(204800, 0)
|
||||||
|
collision_mask = 2
|
||||||
|
collide_with_areas = true
|
||||||
|
|
||||||
|
[node name="Sprite" type="Sprite2D" parent="HeldItem"]
|
||||||
|
position = Vector2(56, 0)
|
||||||
|
texture = ExtResource("5_k5k1o")
|
||||||
|
|
||||||
|
[node name="Gunshot" type="AudioStreamPlayer2D" parent="HeldItem"]
|
||||||
|
stream = ExtResource("6_sh8im")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="Hitbox" type="Area2D" parent="."]
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 2
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape2D" parent="Hitbox"]
|
||||||
|
shape = SubResource("CapsuleShape2D_tvsp8")
|
||||||
|
debug_color = Color(1, 0, 0, 0.41960785)
|
||||||
|
|
||||||
|
[node name="Navagent" type="NavigationAgent2D" parent="."]
|
||||||
|
path_desired_distance = 34.0
|
||||||
|
target_desired_distance = 34.0
|
||||||
|
path_postprocessing = 1
|
||||||
|
avoidance_enabled = true
|
||||||
267
scenes/game.tscn
|
|
@ -1,7 +1,8 @@
|
||||||
[gd_scene load_steps=27 format=3 uid="uid://by43ihcec8e8q"]
|
[gd_scene load_steps=37 format=3 uid="uid://by43ihcec8e8q"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b2sw6ymaf4t0s" path="res://scripts/game_ground.gd" id="1_6ra5r"]
|
[ext_resource type="Script" uid="uid://b2sw6ymaf4t0s" path="res://scripts/game_ground.gd" id="1_6ra5r"]
|
||||||
[ext_resource type="Script" uid="uid://dowu512otgyyf" path="res://scripts/player_ground.gd" id="3_8gbjj"]
|
[ext_resource type="Script" uid="uid://dowu512otgyyf" path="res://scripts/player_ground.gd" id="3_8gbjj"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cwidt34ehvre4" path="res://sounds/ui_select.mp3" id="3_26mqe"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cdl70q0x28717" path="res://sounds/dialogue.mp3" id="3_rncil"]
|
[ext_resource type="AudioStream" uid="uid://cdl70q0x28717" path="res://sounds/dialogue.mp3" id="3_rncil"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c0cyhybh30ogt" path="res://textures/player-ground-sheet.png" id="4_2c1ag"]
|
[ext_resource type="Texture2D" uid="uid://c0cyhybh30ogt" path="res://textures/player-ground-sheet.png" id="4_2c1ag"]
|
||||||
[ext_resource type="Texture2D" uid="uid://csrlh1sbdroud" path="res://textures/pistol.png" id="5_8gbjj"]
|
[ext_resource type="Texture2D" uid="uid://csrlh1sbdroud" path="res://textures/pistol.png" id="5_8gbjj"]
|
||||||
|
|
@ -10,8 +11,13 @@
|
||||||
[ext_resource type="Shader" uid="uid://d3hoh7ec2w8q7" path="res://scripts/outline.gdshader" id="7_vuhkc"]
|
[ext_resource type="Shader" uid="uid://d3hoh7ec2w8q7" path="res://scripts/outline.gdshader" id="7_vuhkc"]
|
||||||
[ext_resource type="Shader" uid="uid://d2e0541hawkml" path="res://scripts/vignette.gdshader" id="9_5vwr8"]
|
[ext_resource type="Shader" uid="uid://d2e0541hawkml" path="res://scripts/vignette.gdshader" id="9_5vwr8"]
|
||||||
[ext_resource type="Shader" uid="uid://bk7q00br1ms30" path="res://scripts/retro.gdshader" id="9_257nh"]
|
[ext_resource type="Shader" uid="uid://bk7q00br1ms30" path="res://scripts/retro.gdshader" id="9_257nh"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bav8ogrhgycaw" path="res://scenes/alertness_marker.tscn" id="9_hby33"]
|
||||||
|
[ext_resource type="Script" uid="uid://s7dwusi00l3v" path="res://scripts/alertness_marker.gd" id="10_e3s4u"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cwa4uu7hrw2l0" path="res://textures/save_indicator.png" id="13_176r3"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b6bq2viqao61m" path="res://scenes/pause_menu.tscn" id="14_vuhkc"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dauoebs801ngm" path="res://addons/super_awesome_input_icons/textures/keyboard/question.png" id="16_e3s4u"]
|
[ext_resource type="Texture2D" uid="uid://dauoebs801ngm" path="res://addons/super_awesome_input_icons/textures/keyboard/question.png" id="16_e3s4u"]
|
||||||
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="16_hby33"]
|
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="16_hby33"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://behjlujs230r2" path="res://scenes/mission_objectives.tscn" id="18_e3s4u"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dhcfrsf726k68" path="res://scenes/dialogue_select_button.tscn" id="19_qqas2"]
|
[ext_resource type="PackedScene" uid="uid://dhcfrsf726k68" path="res://scenes/dialogue_select_button.tscn" id="19_qqas2"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jo68p"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jo68p"]
|
||||||
|
|
@ -108,6 +114,33 @@ font_size = 48
|
||||||
outline_size = 4
|
outline_size = 4
|
||||||
outline_color = Color(0, 0, 0, 1)
|
outline_color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_176r3"]
|
||||||
|
font_size = 32
|
||||||
|
outline_size = 4
|
||||||
|
outline_color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_vuhkc"]
|
||||||
|
atlas = ExtResource("13_176r3")
|
||||||
|
region = Rect2(0, 0, 16, 16)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_26mqe"]
|
||||||
|
atlas = ExtResource("13_176r3")
|
||||||
|
region = Rect2(16, 0, 16, 16)
|
||||||
|
|
||||||
|
[sub_resource type="SpriteFrames" id="SpriteFrames_257nh"]
|
||||||
|
animations = [{
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_vuhkc")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_26mqe")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"default",
|
||||||
|
"speed": 2.0
|
||||||
|
}]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ypt7u"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ypt7u"]
|
||||||
shader = ExtResource("9_257nh")
|
shader = ExtResource("9_257nh")
|
||||||
shader_parameter/shake = 0.002000000095
|
shader_parameter/shake = 0.002000000095
|
||||||
|
|
@ -129,7 +162,14 @@ y_sort_enabled = true
|
||||||
script = ExtResource("1_6ra5r")
|
script = ExtResource("1_6ra5r")
|
||||||
|
|
||||||
[node name="Dialogue" type="AudioStreamPlayer" parent="."]
|
[node name="Dialogue" type="AudioStreamPlayer" parent="."]
|
||||||
|
process_mode = 3
|
||||||
stream = ExtResource("3_rncil")
|
stream = ExtResource("3_rncil")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="UiSelect" type="AudioStreamPlayer" parent="."]
|
||||||
|
process_mode = 3
|
||||||
|
stream = ExtResource("3_26mqe")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
[node name="PlayerGround" type="CharacterBody2D" parent="."]
|
[node name="PlayerGround" type="CharacterBody2D" parent="."]
|
||||||
position = Vector2(349, -58)
|
position = Vector2(349, -58)
|
||||||
|
|
@ -177,6 +217,9 @@ collision_mask = 2
|
||||||
shape = SubResource("CapsuleShape2D_8gbjj")
|
shape = SubResource("CapsuleShape2D_8gbjj")
|
||||||
debug_color = Color(1, 0, 0, 0.41960785)
|
debug_color = Color(1, 0, 0, 0.41960785)
|
||||||
|
|
||||||
|
[node name="AlertnessMarker" parent="PlayerGround" instance=ExtResource("9_hby33")]
|
||||||
|
script = ExtResource("10_e3s4u")
|
||||||
|
|
||||||
[node name="UI" type="CanvasLayer" parent="."]
|
[node name="UI" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
[node name="Vignette" type="ColorRect" parent="UI"]
|
[node name="Vignette" type="ColorRect" parent="UI"]
|
||||||
|
|
@ -259,6 +302,155 @@ layout_mode = 2
|
||||||
text = "TO INTERACT"
|
text = "TO INTERACT"
|
||||||
label_settings = SubResource("LabelSettings_c2suo")
|
label_settings = SubResource("LabelSettings_c2suo")
|
||||||
|
|
||||||
|
[node name="MoveTutorial" type="HFlowContainer" parent="UI/Control"]
|
||||||
|
visible = false
|
||||||
|
modulate = Color(1, 1, 1, 0.53333336)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_bottom = -245.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="End2" type="Label" parent="UI/Control/MoveTutorial"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "MOVE"
|
||||||
|
label_settings = SubResource("LabelSettings_176r3")
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect" type="TextureRect" parent="UI/Control/MoveTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "ground_up"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect2" type="TextureRect" parent="UI/Control/MoveTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "ground_down"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect3" type="TextureRect" parent="UI/Control/MoveTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "ground_left"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect4" type="TextureRect" parent="UI/Control/MoveTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "ground_right"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="UnholsterTutorial" type="HFlowContainer" parent="UI/Control"]
|
||||||
|
visible = false
|
||||||
|
modulate = Color(1, 1, 1, 0.53333336)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_bottom = -245.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="End2" type="Label" parent="UI/Control/UnholsterTutorial"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "TOGGLE WEAPON"
|
||||||
|
label_settings = SubResource("LabelSettings_176r3")
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect" type="TextureRect" parent="UI/Control/UnholsterTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "toggle_holster"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="GunTutorial" type="HFlowContainer" parent="UI/Control"]
|
||||||
|
visible = false
|
||||||
|
modulate = Color(1, 1, 1, 0.53333336)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = -1
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_bottom = -245.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="End2" type="Label" parent="UI/Control/GunTutorial"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "FIRE"
|
||||||
|
label_settings = SubResource("LabelSettings_176r3")
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect" type="TextureRect" parent="UI/Control/GunTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "fire"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="End3" type="Label" parent="UI/Control/GunTutorial"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = " | AIM"
|
||||||
|
label_settings = SubResource("LabelSettings_176r3")
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect5" type="TextureRect" parent="UI/Control/GunTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "aim_up"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect6" type="TextureRect" parent="UI/Control/GunTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "aim_down"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect7" type="TextureRect" parent="UI/Control/GunTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "aim_left"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect8" type="TextureRect" parent="UI/Control/GunTutorial"]
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("16_e3s4u")
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("16_hby33")
|
||||||
|
action_name = "aim_right"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
[node name="DialogueOptions" type="VBoxContainer" parent="UI/Control"]
|
[node name="DialogueOptions" type="VBoxContainer" parent="UI/Control"]
|
||||||
visible = false
|
visible = false
|
||||||
custom_minimum_size = Vector2(128, 0)
|
custom_minimum_size = Vector2(128, 0)
|
||||||
|
|
@ -303,6 +495,35 @@ metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
[node name="Button" parent="UI/Control/DialogueOptions" instance=ExtResource("19_qqas2")]
|
[node name="Button" parent="UI/Control/DialogueOptions" instance=ExtResource("19_qqas2")]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="SaveIndicator" type="Control" parent="UI/Control"]
|
||||||
|
visible = false
|
||||||
|
custom_minimum_size = Vector2(64, 64)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 3
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -64.0
|
||||||
|
offset_top = -64.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 0
|
||||||
|
|
||||||
|
[node name="SaveIcon" type="AnimatedSprite2D" parent="UI/Control/SaveIndicator"]
|
||||||
|
position = Vector2(32, 32)
|
||||||
|
scale = Vector2(4, 4)
|
||||||
|
sprite_frames = SubResource("SpriteFrames_257nh")
|
||||||
|
autoplay = "default"
|
||||||
|
frame_progress = 0.6029871
|
||||||
|
|
||||||
|
[node name="PauseMenu" parent="UI/Control" instance=ExtResource("14_vuhkc")]
|
||||||
|
layout_mode = 1
|
||||||
|
|
||||||
|
[node name="MissionObjectives" parent="UI/Control" instance=ExtResource("18_e3s4u")]
|
||||||
|
layout_mode = 1
|
||||||
|
offset_left = -256.0
|
||||||
|
offset_bottom = 69.0
|
||||||
|
|
||||||
[node name="Shader" type="ColorRect" parent="UI"]
|
[node name="Shader" type="ColorRect" parent="UI"]
|
||||||
material = SubResource("ShaderMaterial_ypt7u")
|
material = SubResource("ShaderMaterial_ypt7u")
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
|
||||||
185
scenes/locations/space_station_2.tscn
Normal file
37
scenes/mission_objectives.tscn
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
[gd_scene load_steps=5 format=3 uid="uid://behjlujs230r2"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://ceua7bjh8xokf" path="res://scripts/mission_objectives.gd" id="1_pg0np"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://donsvh2l775rb" path="res://fonts/Doto.ttf" id="2_80tcl"]
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_2tk4m"]
|
||||||
|
font = ExtResource("2_80tcl")
|
||||||
|
font_size = 32
|
||||||
|
shadow_size = 4
|
||||||
|
shadow_color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_e3s4u"]
|
||||||
|
font_size = 18
|
||||||
|
shadow_size = 4
|
||||||
|
shadow_color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[node name="MissionObjectives" type="VBoxContainer"]
|
||||||
|
custom_minimum_size = Vector2(256, 0)
|
||||||
|
anchors_preset = 1
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
offset_left = -40.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
script = ExtResource("1_pg0np")
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "WAKING UP"
|
||||||
|
label_settings = SubResource("LabelSettings_2tk4m")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="Label2" type="Label" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "- RUN!"
|
||||||
|
label_settings = SubResource("LabelSettings_e3s4u")
|
||||||
|
autowrap_mode = 3
|
||||||
107
scenes/objective_list_item.tscn
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
[gd_scene load_steps=7 format=3 uid="uid://dx7buubd8c45c"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://wd3la6kvbm6e" path="res://scripts/objective_list_item.gd" id="1_7qfvb"]
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_a2dn8"]
|
||||||
|
font_size = 18
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_a2dn8"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:scale:y")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [1.0]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:modulate")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0, 0, 0, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_7qfvb"]
|
||||||
|
resource_name = "show"
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:modulate")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.75),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0, 1, 1, 1), Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:scale:y")
|
||||||
|
tracks/1/interp = 2
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.23333335),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.0, 1.0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_v5l3y"]
|
||||||
|
resource_name = "hide"
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:scale:y")
|
||||||
|
tracks/0/interp = 2
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0.8666667, 1),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [1.0, 0.0]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:modulate")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0, 1, 0, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_v5l3y"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_a2dn8"),
|
||||||
|
&"hide": SubResource("Animation_v5l3y"),
|
||||||
|
&"show": SubResource("Animation_7qfvb")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ObjectiveListItem" type="Label"]
|
||||||
|
modulate = Color(0, 0, 0, 1)
|
||||||
|
custom_minimum_size = Vector2(256, 0)
|
||||||
|
text = "WAKING UP"
|
||||||
|
label_settings = SubResource("LabelSettings_a2dn8")
|
||||||
|
autowrap_mode = 3
|
||||||
|
script = ExtResource("1_7qfvb")
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_v5l3y")
|
||||||
|
}
|
||||||
38
scenes/particles/blood.tscn
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
[gd_scene load_steps=6 format=3 uid="uid://c2s1tterykyu5"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://ck38qwl4qytnt" path="res://scripts/particle_group.gd" id="1_8186p"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ccfofitk3x5jj" path="res://textures/particles/laser.png" id="2_a658j"]
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_ipns3"]
|
||||||
|
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.49242425, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 3
|
||||||
|
|
||||||
|
[sub_resource type="CurveTexture" id="CurveTexture_416m4"]
|
||||||
|
curve = SubResource("Curve_ipns3")
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_8186p"]
|
||||||
|
particle_flag_disable_z = true
|
||||||
|
angle_min = -720.0
|
||||||
|
angle_max = 720.0
|
||||||
|
spread = 180.0
|
||||||
|
initial_velocity_min = 30.3
|
||||||
|
initial_velocity_max = 260.81
|
||||||
|
gravity = Vector3(0, 400, 0)
|
||||||
|
damping_min = 8.0
|
||||||
|
damping_max = 14.000001
|
||||||
|
scale_min = 0.29999998
|
||||||
|
scale_max = 0.5
|
||||||
|
alpha_curve = SubResource("CurveTexture_416m4")
|
||||||
|
collision_use_scale = true
|
||||||
|
|
||||||
|
[node name="Blood" type="Node2D"]
|
||||||
|
script = ExtResource("1_8186p")
|
||||||
|
|
||||||
|
[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
|
||||||
|
emitting = false
|
||||||
|
amount = 24
|
||||||
|
texture = ExtResource("2_a658j")
|
||||||
|
lifetime = 0.4
|
||||||
|
one_shot = true
|
||||||
|
explosiveness = 1.0
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_8186p")
|
||||||
127
scenes/pause_menu.tscn
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
[gd_scene load_steps=9 format=3 uid="uid://b6bq2viqao61m"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dqiaioigmj5wb" path="res://scripts/pause_menu.gd" id="1_5d2l8"]
|
||||||
|
[ext_resource type="Theme" uid="uid://dtc7h6gpwpend" path="res://scenes/ui.tres" id="2_7l7mv"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cwidt34ehvre4" path="res://sounds/ui_select.mp3" id="2_v4r4p"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bff3l15ivkcyi" path="res://sounds/ui_back.mp3" id="3_1s2dm"]
|
||||||
|
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="3_v4r4p"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cy4nbqbm222os" path="res://scenes/settings.tscn" id="4_1s2dm"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_264po"]
|
||||||
|
bg_color = Color(0, 0, 0, 1)
|
||||||
|
border_color = Color(0.53333336, 0.53333336, 0.53333336, 1)
|
||||||
|
corner_detail = 1
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_1kice"]
|
||||||
|
font_size = 48
|
||||||
|
outline_size = 2
|
||||||
|
|
||||||
|
[node name="PauseMenu" type="Panel"]
|
||||||
|
process_mode = 3
|
||||||
|
visible = false
|
||||||
|
self_modulate = Color(1, 1, 1, 0.53333336)
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_264po")
|
||||||
|
script = ExtResource("1_5d2l8")
|
||||||
|
|
||||||
|
[node name="UiSelect" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("2_v4r4p")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="UiBack" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("3_1s2dm")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="Panel" type="PanelContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -130.0
|
||||||
|
offset_top = -26.0
|
||||||
|
offset_right = 130.0
|
||||||
|
offset_bottom = 26.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme = ExtResource("2_7l7mv")
|
||||||
|
|
||||||
|
[node name="Flow" type="HFlowContainer" parent="Panel"]
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Panel/Flow"]
|
||||||
|
custom_minimum_size = Vector2(512, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
text = "PAUSED"
|
||||||
|
label_settings = SubResource("LabelSettings_1kice")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="HFlowContainer" type="HFlowContainer" parent="Panel/Flow"]
|
||||||
|
custom_minimum_size = Vector2(257, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect2" type="TextureRect" parent="Panel/Flow/HFlowContainer"]
|
||||||
|
custom_minimum_size = Vector2(48, 48)
|
||||||
|
layout_mode = 2
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("3_v4r4p")
|
||||||
|
action_name = "ui_up"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect3" type="TextureRect" parent="Panel/Flow/HFlowContainer"]
|
||||||
|
custom_minimum_size = Vector2(48, 48)
|
||||||
|
layout_mode = 2
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("3_v4r4p")
|
||||||
|
action_name = "ui_down"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="InputIconTextureRect" type="TextureRect" parent="Panel/Flow/HFlowContainer"]
|
||||||
|
custom_minimum_size = Vector2(48, 48)
|
||||||
|
layout_mode = 2
|
||||||
|
expand_mode = 1
|
||||||
|
script = ExtResource("3_v4r4p")
|
||||||
|
action_name = "dialogue_continue"
|
||||||
|
metadata/_custom_type_script = "uid://b2maxk5g6yb0i"
|
||||||
|
|
||||||
|
[node name="Resume" type="Button" parent="Panel/Flow"]
|
||||||
|
custom_minimum_size = Vector2(257, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
focus_neighbor_top = NodePath("../QuitToTitle")
|
||||||
|
text = "Resume"
|
||||||
|
|
||||||
|
[node name="Settings" type="Button" parent="Panel/Flow"]
|
||||||
|
custom_minimum_size = Vector2(257, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Settings"
|
||||||
|
|
||||||
|
[node name="QuitToTitle" type="Button" parent="Panel/Flow"]
|
||||||
|
custom_minimum_size = Vector2(257, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
focus_neighbor_bottom = NodePath("../Resume")
|
||||||
|
text = "Quit to Title"
|
||||||
|
|
||||||
|
[node name="Label2" type="Label" parent="Panel/Flow"]
|
||||||
|
custom_minimum_size = Vector2(512, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
text = "PAUSED"
|
||||||
|
label_settings = SubResource("LabelSettings_1kice")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Settings" parent="." instance=ExtResource("4_1s2dm")]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
offset_left = -322.0
|
||||||
|
offset_right = 322.0
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Panel/Flow/Resume" to="." method="_on_resume_pressed"]
|
||||||
|
[connection signal="pressed" from="Panel/Flow/Settings" to="." method="_on_settings_pressed"]
|
||||||
16
scenes/props/desk.tscn
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://udpwphfxtuf2"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bahp733iqv2us" path="res://textures/desk.png" id="1_551uk"]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_aadnw"]
|
||||||
|
size = Vector2(191, 32)
|
||||||
|
|
||||||
|
[node name="StaticBody2D" type="StaticBody2D"]
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
|
scale = Vector2(2, 2)
|
||||||
|
texture = ExtResource("1_551uk")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2(-32, 48)
|
||||||
|
shape = SubResource("RectangleShape2D_aadnw")
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
[gd_scene load_steps=8 format=3 uid="uid://cy4nbqbm222os"]
|
[gd_scene load_steps=10 format=3 uid="uid://cy4nbqbm222os"]
|
||||||
|
|
||||||
[ext_resource type="Theme" uid="uid://dtc7h6gpwpend" path="res://scenes/ui.tres" id="1_r6d6q"]
|
[ext_resource type="Theme" uid="uid://dtc7h6gpwpend" path="res://scenes/ui.tres" id="1_r6d6q"]
|
||||||
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="2_6wm04"]
|
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="2_6wm04"]
|
||||||
[ext_resource type="Script" uid="uid://jacd1qlw1q5p" path="res://scripts/settings.gd" id="2_f4mfi"]
|
[ext_resource type="Script" uid="uid://jacd1qlw1q5p" path="res://scripts/settings.gd" id="2_f4mfi"]
|
||||||
[ext_resource type="FontFile" uid="uid://donsvh2l775rb" path="res://fonts/Doto.ttf" id="3_f4mfi"]
|
[ext_resource type="FontFile" uid="uid://donsvh2l775rb" path="res://fonts/Doto.ttf" id="3_f4mfi"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cwidt34ehvre4" path="res://sounds/ui_select.mp3" id="3_gis3k"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bff3l15ivkcyi" path="res://sounds/ui_back.mp3" id="4_83j8s"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_1kice"]
|
[sub_resource type="LabelSettings" id="LabelSettings_1kice"]
|
||||||
font_size = 48
|
font_size = 48
|
||||||
|
|
@ -28,6 +30,14 @@ grow_vertical = 2
|
||||||
theme = ExtResource("1_r6d6q")
|
theme = ExtResource("1_r6d6q")
|
||||||
script = ExtResource("2_f4mfi")
|
script = ExtResource("2_f4mfi")
|
||||||
|
|
||||||
|
[node name="UiSelect" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("3_gis3k")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="UiBack" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("4_83j8s")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
[node name="Scroll" type="ScrollContainer" parent="."]
|
[node name="Scroll" type="ScrollContainer" parent="."]
|
||||||
custom_minimum_size = Vector2(640, 0)
|
custom_minimum_size = Vector2(640, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -211,7 +221,7 @@ text = "Southpaw"
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "NO"
|
text = "NO"
|
||||||
|
|
||||||
[connection signal="pressed" from="Scroll/Flow/Back" to="." method="_on_back_pressed"]
|
[connection signal="button_up" from="Scroll/Flow/Back" to="." method="_on_back_pressed"]
|
||||||
[connection signal="value_changed" from="Scroll/Flow/Flow2/MasterVolume" to="." method="_on_master_volume_value_changed"]
|
[connection signal="value_changed" from="Scroll/Flow/Flow2/MasterVolume" to="." method="_on_master_volume_value_changed"]
|
||||||
[connection signal="value_changed" from="Scroll/Flow/Flow3/MusicVolume" to="." method="_on_music_volume_value_changed"]
|
[connection signal="value_changed" from="Scroll/Flow/Flow3/MusicVolume" to="." method="_on_music_volume_value_changed"]
|
||||||
[connection signal="value_changed" from="Scroll/Flow/Flow4/SFXVolume" to="." method="_on_sfx_volume_value_changed"]
|
[connection signal="value_changed" from="Scroll/Flow/Flow4/SFXVolume" to="." method="_on_sfx_volume_value_changed"]
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=12 format=3 uid="uid://b1x7evhkxm385"]
|
[gd_scene load_steps=13 format=3 uid="uid://b1x7evhkxm385"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://md1biuc6ygmv" path="res://scripts/title.gd" id="1_pyl7j"]
|
[ext_resource type="Script" uid="uid://md1biuc6ygmv" path="res://scripts/title.gd" id="1_pyl7j"]
|
||||||
[ext_resource type="FontFile" uid="uid://n1nd5m2kwexu" path="res://fonts/Michroma.ttf" id="1_wosw1"]
|
[ext_resource type="FontFile" uid="uid://n1nd5m2kwexu" path="res://fonts/Michroma.ttf" id="1_wosw1"]
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
[ext_resource type="Shader" uid="uid://bk7q00br1ms30" path="res://scripts/retro.gdshader" id="2_p6dhs"]
|
[ext_resource type="Shader" uid="uid://bk7q00br1ms30" path="res://scripts/retro.gdshader" id="2_p6dhs"]
|
||||||
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="2_pyl7j"]
|
[ext_resource type="Script" uid="uid://b2maxk5g6yb0i" path="res://addons/super_awesome_input_icons/classes/input_icon_texture_rect.gd" id="2_pyl7j"]
|
||||||
[ext_resource type="FontFile" uid="uid://donsvh2l775rb" path="res://fonts/Doto.ttf" id="3_b3w7a"]
|
[ext_resource type="FontFile" uid="uid://donsvh2l775rb" path="res://fonts/Doto.ttf" id="3_b3w7a"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bff3l15ivkcyi" path="res://sounds/ui_back.mp3" id="3_w65of"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cy4nbqbm222os" path="res://scenes/settings.tscn" id="6_yql1r"]
|
[ext_resource type="PackedScene" uid="uid://cy4nbqbm222os" path="res://scenes/settings.tscn" id="6_yql1r"]
|
||||||
|
|
||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_yql1r"]
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_yql1r"]
|
||||||
|
|
@ -39,14 +40,20 @@ script = ExtResource("1_pyl7j")
|
||||||
|
|
||||||
[node name="UiSelect" type="AudioStreamPlayer" parent="."]
|
[node name="UiSelect" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource("2_hiwto")
|
stream = ExtResource("2_hiwto")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
|
[node name="UiBack" type="AudioStreamPlayer" parent="."]
|
||||||
|
stream = ExtResource("3_w65of")
|
||||||
|
bus = &"Sound Effects"
|
||||||
|
|
||||||
[node name="Title" type="AudioStreamPlayer" parent="."]
|
[node name="Title" type="AudioStreamPlayer" parent="."]
|
||||||
stream = ExtResource("2_ia1n6")
|
stream = ExtResource("2_ia1n6")
|
||||||
volume_db = -4.0
|
volume_db = -4.0
|
||||||
autoplay = true
|
autoplay = true
|
||||||
|
bus = &"Music"
|
||||||
parameters/looping = true
|
parameters/looping = true
|
||||||
|
|
||||||
[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
|
[node name="Stars" type="GPUParticles2D" parent="."]
|
||||||
position = Vector2(-1420, 0)
|
position = Vector2(-1420, 0)
|
||||||
amount = 512
|
amount = 512
|
||||||
texture = ExtResource("2_4rr2b")
|
texture = ExtResource("2_4rr2b")
|
||||||
|
|
@ -306,7 +313,61 @@ theme_override_font_sizes/bold_italics_font_size = 32
|
||||||
theme_override_font_sizes/italics_font_size = 32
|
theme_override_font_sizes/italics_font_size = 32
|
||||||
theme_override_font_sizes/mono_font_size = 32
|
theme_override_font_sizes/mono_font_size = 32
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[font size=20]soundtrack by delosound on pixabay[/font]"
|
text = "[font size=20]space ambient music: minecraft nether music (by C418)[/font]"
|
||||||
|
fit_content = true
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Label5" type="RichTextLabel" parent="UI/Control/Credits"]
|
||||||
|
custom_minimum_size = Vector2(640, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
theme_override_fonts/normal_font = ExtResource("1_wosw1")
|
||||||
|
theme_override_fonts/bold_font = ExtResource("3_b3w7a")
|
||||||
|
theme_override_font_sizes/normal_font_size = 32
|
||||||
|
theme_override_font_sizes/bold_font_size = 32
|
||||||
|
theme_override_font_sizes/bold_italics_font_size = 32
|
||||||
|
theme_override_font_sizes/italics_font_size = 32
|
||||||
|
theme_override_font_sizes/mono_font_size = 32
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[font size=20]space station music: SCP-3008 soundtrack by uglyburger0[/font]"
|
||||||
|
fit_content = true
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Label6" type="RichTextLabel" parent="UI/Control/Credits"]
|
||||||
|
custom_minimum_size = Vector2(640, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
theme_override_fonts/normal_font = ExtResource("1_wosw1")
|
||||||
|
theme_override_fonts/bold_font = ExtResource("3_b3w7a")
|
||||||
|
theme_override_font_sizes/normal_font_size = 32
|
||||||
|
theme_override_font_sizes/bold_font_size = 32
|
||||||
|
theme_override_font_sizes/bold_italics_font_size = 32
|
||||||
|
theme_override_font_sizes/italics_font_size = 32
|
||||||
|
theme_override_font_sizes/mono_font_size = 32
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[font size=20]title screen music: delosound on pixabay[/font]"
|
||||||
|
fit_content = true
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Label7" type="RichTextLabel" parent="UI/Control/Credits"]
|
||||||
|
custom_minimum_size = Vector2(640, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
theme_override_fonts/normal_font = ExtResource("1_wosw1")
|
||||||
|
theme_override_fonts/bold_font = ExtResource("3_b3w7a")
|
||||||
|
theme_override_font_sizes/normal_font_size = 32
|
||||||
|
theme_override_font_sizes/bold_font_size = 32
|
||||||
|
theme_override_font_sizes/bold_italics_font_size = 32
|
||||||
|
theme_override_font_sizes/italics_font_size = 32
|
||||||
|
theme_override_font_sizes/mono_font_size = 32
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[font size=20]special thanks to hack club for getting me to finish projects for once[/font]"
|
||||||
fit_content = true
|
fit_content = true
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
@ -446,7 +507,10 @@ color = Color(1, 1, 1, 0)
|
||||||
|
|
||||||
[connection signal="pressed" from="UI/Control/ControllerInfo/Box/Flow/Continue" to="." method="_on_continue_pressed"]
|
[connection signal="pressed" from="UI/Control/ControllerInfo/Box/Flow/Continue" to="." method="_on_continue_pressed"]
|
||||||
[connection signal="pressed" from="UI/Control/Title/Buttons/NewGame" to="." method="_on_new_game_pressed"]
|
[connection signal="pressed" from="UI/Control/Title/Buttons/NewGame" to="." method="_on_new_game_pressed"]
|
||||||
|
[connection signal="pressed" from="UI/Control/Title/Buttons/LoadGame" to="." method="_on_load_game_pressed"]
|
||||||
[connection signal="pressed" from="UI/Control/Title/Buttons/Settings" to="." method="_on_settings_pressed"]
|
[connection signal="pressed" from="UI/Control/Title/Buttons/Settings" to="." method="_on_settings_pressed"]
|
||||||
[connection signal="pressed" from="UI/Control/Title/Buttons/Credits" to="." method="_on_credits_pressed"]
|
[connection signal="pressed" from="UI/Control/Title/Buttons/Credits" to="." method="_on_credits_pressed"]
|
||||||
[connection signal="pressed" from="UI/Control/Title/Buttons/Quit" to="." method="_on_quit_pressed"]
|
[connection signal="pressed" from="UI/Control/Title/Buttons/Quit" to="." method="_on_quit_pressed"]
|
||||||
[connection signal="pressed" from="UI/Control/Credits/Buttons/ExitCredits" to="." method="_on_exit_credits_pressed"]
|
[connection signal="pressed" from="UI/Control/Credits/Buttons/ExitCredits" to="." method="_on_exit_credits_pressed"]
|
||||||
|
[connection signal="pressed" from="UI/Control/OverrideSave/Buttons/YesOverride" to="." method="_on_yes_override_pressed"]
|
||||||
|
[connection signal="pressed" from="UI/Control/OverrideSave/Buttons/NoOverride" to="." method="_on_no_override_pressed"]
|
||||||
|
|
|
||||||
15
scripts/alertness_marker.gd
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
extends Sprite2D
|
||||||
|
|
||||||
|
@export var enemy: Node2D = null
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
if !enemy:
|
||||||
|
queue_free()
|
||||||
|
return
|
||||||
|
|
||||||
|
while enemy.reaction_timer > 0:
|
||||||
|
look_at(enemy.global_position)
|
||||||
|
|
||||||
|
#if enemy.get_node("LineOfSight").get_collider().get_name() == "PlayerGround": #modulate =
|
||||||
|
|
||||||
|
queue_free()
|
||||||
1
scripts/alertness_marker.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://s7dwusi00l3v
|
||||||
|
|
@ -17,10 +17,31 @@ var sprinting = false
|
||||||
var equipped_ground_gun = "pistol"
|
var equipped_ground_gun = "pistol"
|
||||||
var ammo_in_mag = 12
|
var ammo_in_mag = 12
|
||||||
|
|
||||||
func set_ground_gun(value: String):
|
func set_ground_gun(value):
|
||||||
equipped_ground_gun = value
|
equipped_ground_gun = value
|
||||||
$HeldItem/Sprite.texture = load("res://textures/" + equipped_ground_gun + ".png")
|
|
||||||
ammo_in_mag = global.ground_guns
|
if value:
|
||||||
|
$HeldItem/Sprite.texture = load("res://textures/" + equipped_ground_gun + ".png")
|
||||||
|
ammo_in_mag = global.ground_guns
|
||||||
|
|
||||||
|
func navigate_to(goal: Vector2):
|
||||||
|
if has_node("Navagent"):
|
||||||
|
$Navagent.target_position = goal
|
||||||
|
|
||||||
|
while !$Navagent.is_navigation_finished():
|
||||||
|
var next_position = $Navagent.get_next_path_position()
|
||||||
|
next_position.y -= 32
|
||||||
|
|
||||||
|
var axes = global_position.direction_to(next_position)
|
||||||
|
|
||||||
|
horizontial_movement = axes.x
|
||||||
|
vertical_movement = axes.y
|
||||||
|
|
||||||
|
# This is a bad way to do this, to be honest. However, I am lazy
|
||||||
|
await get_tree().create_timer(0.05).timeout
|
||||||
|
|
||||||
|
horizontial_movement = 0
|
||||||
|
vertical_movement = 0
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
$Sprite.play()
|
$Sprite.play()
|
||||||
|
|
@ -36,7 +57,7 @@ func _process(delta: float) -> void:
|
||||||
$Sprite.position.y = 64
|
$Sprite.position.y = 64
|
||||||
$Sprite.animation = "idle"
|
$Sprite.animation = "idle"
|
||||||
|
|
||||||
$HeldItem.visible = false
|
if has_node("HeldItem"): $HeldItem.visible = false
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -74,34 +95,48 @@ func _process(delta: float) -> void:
|
||||||
$Sprite.animation = "idle"
|
$Sprite.animation = "idle"
|
||||||
|
|
||||||
fire_delay -= delta
|
fire_delay -= delta
|
||||||
if firing and (fire_delay < 0):
|
if has_node("HeldItem"):
|
||||||
if has_node("HeldItem") and (equipped_ground_gun != null):
|
if !equipped_ground_gun:
|
||||||
$HeldItem/Cast.force_raycast_update()
|
$HeldItem.visible = false
|
||||||
|
else:
|
||||||
|
$HeldItem.visible = true
|
||||||
|
|
||||||
var hit_target = $HeldItem/Cast.get_collider()
|
if firing and (fire_delay < 0):
|
||||||
|
|
||||||
if hit_target:
|
$HeldItem/Cast.force_raycast_update()
|
||||||
if "health" in hit_target.get_parent():
|
|
||||||
hit_target.get_parent().health -= 10
|
|
||||||
|
|
||||||
var bullet_impact = preload("res://scenes/particles/bullet_impact.tscn").instantiate()
|
var hit_target = $HeldItem/Cast.get_collider()
|
||||||
bullet_impact.global_position = $HeldItem/Cast.get_collision_point()
|
|
||||||
|
|
||||||
get_parent().add_child(bullet_impact)
|
if hit_target:
|
||||||
|
if "health" in hit_target.get_parent():
|
||||||
|
hit_target.get_parent().health -= global.ground_guns[equipped_ground_gun].damage
|
||||||
|
|
||||||
bullet_impact.play()
|
var blood = preload("res://scenes/particles/blood.tscn").instantiate()
|
||||||
|
blood.global_position = $HeldItem/Cast.get_collision_point()
|
||||||
|
|
||||||
var bullet_trail = preload("res://scenes/particles/bullet_trail.tscn").instantiate()
|
get_parent().add_child(blood)
|
||||||
bullet_trail.global_position = $HeldItem/Sprite.global_position
|
|
||||||
|
|
||||||
bullet_trail.points[1] = ($HeldItem/Cast.get_collision_point() - bullet_trail.global_position)
|
blood.play()
|
||||||
|
else:
|
||||||
|
var bullet_impact = preload("res://scenes/particles/bullet_impact.tscn").instantiate()
|
||||||
|
bullet_impact.global_position = $HeldItem/Cast.get_collision_point()
|
||||||
|
|
||||||
get_parent().add_child(bullet_trail)
|
get_parent().add_child(bullet_impact)
|
||||||
|
|
||||||
bullet_trail.play()
|
|
||||||
|
|
||||||
$HeldItem/Gunshot.play()
|
bullet_impact.play()
|
||||||
|
|
||||||
fire_delay = 0.5
|
var bullet_trail = preload("res://scenes/particles/bullet_trail.tscn").instantiate()
|
||||||
|
bullet_trail.global_position = $HeldItem/Sprite.global_position
|
||||||
|
|
||||||
|
bullet_trail.points[1] = ($HeldItem/Cast.get_collision_point() - bullet_trail.global_position)
|
||||||
|
|
||||||
|
get_parent().add_child(bullet_trail)
|
||||||
|
|
||||||
|
bullet_trail.play()
|
||||||
|
|
||||||
|
$HeldItem/Gunshot.play()
|
||||||
|
|
||||||
|
fire_delay = global.ground_guns[equipped_ground_gun].fire_rate
|
||||||
|
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
|
||||||
14
scripts/contract_item.gd
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
extends VBoxContainer
|
||||||
|
|
||||||
|
var contract = null
|
||||||
|
var game = null
|
||||||
|
|
||||||
|
func update() -> void:
|
||||||
|
$Label.text = """[font size=24]%s[/font]
|
||||||
|
%s""" % [global.missions[contract].name, global.missions[contract].desc]
|
||||||
|
|
||||||
|
func _on_button_pressed() -> void:
|
||||||
|
game._contracts_item_pressed(contract)
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
update()
|
||||||
1
scripts/contract_item.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://c3m22vi3fsimq
|
||||||
160
scripts/doctor.gd
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
extends "res://scripts/character_ground.gd"
|
||||||
|
|
||||||
|
@onready var game = get_parent()
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
super()
|
||||||
|
|
||||||
|
health = 50
|
||||||
|
|
||||||
|
func _interact(player: Node2D) -> void:
|
||||||
|
player.get_node("Camera").enabled = false
|
||||||
|
$Camera.enabled = true
|
||||||
|
$InteractArea.monitoring = false
|
||||||
|
|
||||||
|
player.busy = true
|
||||||
|
|
||||||
|
await game.dialogue("Ready to leave?", "doctor_1", false)
|
||||||
|
|
||||||
|
var option = await game.make_choice({
|
||||||
|
"yes": "Yes",
|
||||||
|
"no": "No"
|
||||||
|
})
|
||||||
|
|
||||||
|
if option == "yes":
|
||||||
|
await game.dialogue("Alrighty!", "doctor_1")
|
||||||
|
|
||||||
|
await game.dialogue("We have your stuff back here, let me go grab it real quick...", "doctor_1")
|
||||||
|
|
||||||
|
|
||||||
|
await game.dialogue("Here's your bag.", "doctor_1")
|
||||||
|
|
||||||
|
await game.dialogue("Should have everything - tablet, ship keys, a pistol...", "doctor_1")
|
||||||
|
|
||||||
|
game.get_node("DistantGunshots1").play()
|
||||||
|
|
||||||
|
await get_tree().create_timer(2).timeout
|
||||||
|
|
||||||
|
await game.dialogue("...the hell?", "doctor_1", false)
|
||||||
|
|
||||||
|
await get_tree().create_timer(1.5).timeout
|
||||||
|
|
||||||
|
game.get_node("IntrusionAlarm").play()
|
||||||
|
|
||||||
|
game.get_node("Map").modulate = Color(0.5, 0.35, 0.35)
|
||||||
|
|
||||||
|
await get_tree().create_timer(1).timeout
|
||||||
|
|
||||||
|
await game.dialogue("Oh, no.", "doctor_1", true)
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.5).timeout
|
||||||
|
|
||||||
|
await game.dialogue("We need to leave. Now.", "doctor_1", true)
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.5).timeout
|
||||||
|
|
||||||
|
$Camera.enabled = false
|
||||||
|
player.get_node("Camera").enabled = true
|
||||||
|
|
||||||
|
player.busy = false
|
||||||
|
|
||||||
|
await game.dialogue("Follow me.", "doctor_1", false)
|
||||||
|
|
||||||
|
global.stats.mission_progress = 1
|
||||||
|
|
||||||
|
await navigate_to(game.get_node("DoctorEscapeWaypoint1").position)
|
||||||
|
|
||||||
|
while !game.get_node("DoctorEscapeWaypoint1/Area").get_overlapping_bodies().has(player): await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
player.busy = true
|
||||||
|
|
||||||
|
await game.dialogue("You good with that gun?", "doctor_1", true)
|
||||||
|
|
||||||
|
var option_2 = await game.make_choice({
|
||||||
|
"yes": "Yes",
|
||||||
|
"no": "No"
|
||||||
|
})
|
||||||
|
|
||||||
|
if option_2 == "yes": await game.dialogue("Good to know.", "doctor_1", true)
|
||||||
|
else: await game.dialogue("Well, you're still probably better than I would be.", "doctor_1", true)
|
||||||
|
|
||||||
|
global.stats.story_progress = 2
|
||||||
|
|
||||||
|
game.save_game()
|
||||||
|
|
||||||
|
checkpoint_1()
|
||||||
|
|
||||||
|
elif option == "no":
|
||||||
|
await game.dialogue("Well, I'm here whenever you need me.", "doctor_1")
|
||||||
|
|
||||||
|
|
||||||
|
player.get_node("Camera").enabled = true
|
||||||
|
$Camera.enabled = false
|
||||||
|
$InteractArea.monitoring = true
|
||||||
|
|
||||||
|
player.busy = false
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
func checkpoint_1():
|
||||||
|
$InteractArea.monitoring = false
|
||||||
|
|
||||||
|
var player = game.get_node("PlayerGround")
|
||||||
|
|
||||||
|
await game.dialogue("You should probably get it out.", "doctor_1", false)
|
||||||
|
|
||||||
|
player.busy = false
|
||||||
|
|
||||||
|
global.stats.equipped_ground_gun = "pistol"
|
||||||
|
|
||||||
|
game.get_node("UI/Control/UnholsterTutorial").visible = true
|
||||||
|
|
||||||
|
while global.stats.gun_holstered: await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
game.get_node("UI/Control/UnholsterTutorial").visible = false
|
||||||
|
|
||||||
|
await game.dialogue("Let's go.", "doctor_1", false)
|
||||||
|
|
||||||
|
game.checkpoint()
|
||||||
|
|
||||||
|
await navigate_to(game.get_node("DoctorEscapeWaypoint2").position)
|
||||||
|
|
||||||
|
while !game.get_node("DoctorEscapeWaypoint2/Area").get_overlapping_bodies().has(player): await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
game.get_node("Dnbd").play()
|
||||||
|
game.get_node("IntrusionAlarm").stop()
|
||||||
|
|
||||||
|
await game.dialogue("OH GOD!", "doctor_1", false)
|
||||||
|
|
||||||
|
game.get_node("MedbayDoorLargeVertical").free()
|
||||||
|
|
||||||
|
vertical_movement = 0.1
|
||||||
|
|
||||||
|
game.get_node("Camper1/HeldItem").look_at(global_position)
|
||||||
|
game.get_node("Camper2/HeldItem").look_at(global_position)
|
||||||
|
|
||||||
|
game.get_node("Camper1").firing = true
|
||||||
|
await get_tree().create_timer(0.06).timeout
|
||||||
|
game.get_node("Camper2").firing = true
|
||||||
|
|
||||||
|
|
||||||
|
await game.dialogue("RUN!", "doctor_1", false)
|
||||||
|
|
||||||
|
global.stats.mission_progress = 2
|
||||||
|
|
||||||
|
while health > 0: await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
await game.end_dialogue()
|
||||||
|
|
||||||
|
game.get_node("Camper1").firing = false
|
||||||
|
await get_tree().create_timer(0.06).timeout
|
||||||
|
game.get_node("Camper2").firing = false
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.333).timeout
|
||||||
|
|
||||||
|
game.get_node("Camper1").concious = true
|
||||||
|
game.get_node("Camper2").concious = true
|
||||||
|
|
||||||
|
game.get_node("Camper3").global_position = game.get_node("CamperSpawn1").global_position
|
||||||
|
game.get_node("Camper4").global_position = game.get_node("CamperSpawn2").global_position
|
||||||
1
scripts/doctor.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://mmptv0l2ahhh
|
||||||
147
scripts/doctor_2.gd
Normal file
|
|
@ -0,0 +1,147 @@
|
||||||
|
extends "res://scripts/character_ground.gd"
|
||||||
|
|
||||||
|
@onready var game = get_parent()
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
equipped_ground_gun = "docgun"
|
||||||
|
|
||||||
|
super()
|
||||||
|
|
||||||
|
health = 999
|
||||||
|
|
||||||
|
func _on_state_1_body_entered(body: Node2D) -> void:
|
||||||
|
if body != game.get_node("PlayerGround"): return
|
||||||
|
|
||||||
|
global.stats.mission_progress = 3
|
||||||
|
|
||||||
|
game.get_node("HospitalEscapeD2State1").monitoring = false
|
||||||
|
|
||||||
|
print("test")
|
||||||
|
|
||||||
|
vertical_movement = -1
|
||||||
|
horizontial_movement = -1
|
||||||
|
|
||||||
|
while global_position.y > -1376.0: await get_tree().create_timer(0.1).timeout
|
||||||
|
|
||||||
|
vertical_movement = 0
|
||||||
|
horizontial_movement = 0
|
||||||
|
|
||||||
|
await game.dialogue("Get over here!", "doctor_2", false)
|
||||||
|
|
||||||
|
func _on_state_2_body_entered(body: Node2D) -> void:
|
||||||
|
if body != game.get_node("PlayerGround"): return
|
||||||
|
|
||||||
|
game.get_node("HospitalEscapeD2State2").monitoring = false
|
||||||
|
game.get_node("HospitalEscapeD2State2").queue_free()
|
||||||
|
|
||||||
|
firing = true
|
||||||
|
|
||||||
|
while game.get_node("Camper1").health > 0:
|
||||||
|
$HeldItem.look_at(game.get_node("Camper1").global_position)
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
while game.get_node("Camper2").health > 0:
|
||||||
|
$HeldItem.look_at(game.get_node("Camper2").global_position)
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
while game.get_node("Camper4").health > 0:
|
||||||
|
$HeldItem.look_at(game.get_node("Camper4").global_position)
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
firing = false
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.666).timeout
|
||||||
|
|
||||||
|
set_ground_gun(null)
|
||||||
|
|
||||||
|
game.get_node("Dnbd").playing = false
|
||||||
|
game.get_node("IntrusionAlarm").play()
|
||||||
|
|
||||||
|
await game.dialogue("You need to go, now.", "doctor_2", true)
|
||||||
|
|
||||||
|
await navigate_to(game.get_node("Doctor2DoorWaypoint").global_position)
|
||||||
|
|
||||||
|
var player = game.get_node("PlayerGround")
|
||||||
|
|
||||||
|
if (global_position - player.global_position).length() > 200:
|
||||||
|
await game.dialogue("Come.", "doctor_2", false)
|
||||||
|
|
||||||
|
while (global_position - player.global_position).length() > 200: await get_tree().create_timer(0.25).timeout
|
||||||
|
|
||||||
|
player.busy = true
|
||||||
|
|
||||||
|
await game.dialogue("Is the other doctor dead?", "doctor_2", false)
|
||||||
|
|
||||||
|
var option = await game.make_choice({
|
||||||
|
"yes": "Yes",
|
||||||
|
"no": "No"
|
||||||
|
})
|
||||||
|
|
||||||
|
if option == "yes":
|
||||||
|
await game.dialogue("Shit. I liked hating him.", "doctor_2", true)
|
||||||
|
else:
|
||||||
|
await game.dialogue("Damnit. Was hoping he was.", "doctor_2", true)
|
||||||
|
|
||||||
|
await game.dialogue("Anyways, there's probably some of those bastards in there, so be careful.", "doctor_2", true)
|
||||||
|
|
||||||
|
await game.dialogue("Your ship is on the first row, furthest to the left.", "doctor_2", false)
|
||||||
|
|
||||||
|
var option_2 = null
|
||||||
|
|
||||||
|
while option_2 != "got_it":
|
||||||
|
option_2 = await game.make_choice({
|
||||||
|
"whoarethey": "Who are they?",
|
||||||
|
"whataboutyou": "What about you?",
|
||||||
|
"got_it": "Got it",
|
||||||
|
})
|
||||||
|
|
||||||
|
if option_2 == "whoarethey":
|
||||||
|
await game.dialogue("Who are these people, anyways?", "player", true)
|
||||||
|
|
||||||
|
await game.dialogue("You don't know?... oh wait, that makes sense.", "doctor_2", true)
|
||||||
|
await game.dialogue("Those guys are from HADA, the Humble Anarchist's Defense Alliance.", "doctor_2", true)
|
||||||
|
await game.dialogue("Nasty people. They do a lot of things...", "doctor_2", true)
|
||||||
|
await game.dialogue("but they also iketo try and destroy anything they see as a threat to their ideals.", "doctor_2", true)
|
||||||
|
await game.dialogue("They almost never fully succeed, but that doesn't mean they don't leave a mark.", "doctor_2", true)
|
||||||
|
elif option_2 == "whataboutyou":
|
||||||
|
await game.dialogue("What are you going to do?", "player", true)
|
||||||
|
|
||||||
|
await game.dialogue("I will be camping it out.", "doctor_2", true)
|
||||||
|
await game.dialogue("I live here. If I left all my stuff behind like this, I would hate myself.", "doctor_2", true)
|
||||||
|
await game.dialogue("That's not something you should worry about excessively, though. You don't even know me.", "doctor_2", true)
|
||||||
|
|
||||||
|
global.stats.story_progress = 3
|
||||||
|
|
||||||
|
game.save_game()
|
||||||
|
|
||||||
|
checkpoint_2()
|
||||||
|
|
||||||
|
func checkpoint_2():
|
||||||
|
game.get_node("Dnbd").playing = false
|
||||||
|
game.get_node("IntrusionAlarm").play()
|
||||||
|
|
||||||
|
var player = game.get_node("PlayerGround")
|
||||||
|
|
||||||
|
player.busy = true
|
||||||
|
|
||||||
|
await game.dialogue("I wish you luck.", "doctor_2", true)
|
||||||
|
|
||||||
|
game.get_node("Dnbd").playing = true
|
||||||
|
|
||||||
|
player.health = 100
|
||||||
|
|
||||||
|
game.get_node("Camper5").global_position = game.get_node("CamperSpawn3").global_position
|
||||||
|
game.get_node("Camper6").global_position = game.get_node("CamperSpawn4").global_position
|
||||||
|
|
||||||
|
player.busy = false
|
||||||
|
|
||||||
|
game.get_node("Doctor2DoorToOpen").set_open(true)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _on_state_3_body_entered(body: Node2D) -> void:
|
||||||
|
game.get_node("Doctor2DoorToOpen").set_open(false)
|
||||||
|
|
||||||
1
scripts/doctor_2.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cytses4dvcif2
|
||||||
18
scripts/door_medium_horizontial.gd
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
extends StaticBody2D
|
||||||
|
|
||||||
|
@export var open: bool = false
|
||||||
|
|
||||||
|
func set_open(value: bool) -> void:
|
||||||
|
open = value
|
||||||
|
if open:
|
||||||
|
$CollisionShape.disabled = true
|
||||||
|
$Sprite.animation = "open"
|
||||||
|
|
||||||
|
else:
|
||||||
|
$CollisionShape.disabled = false
|
||||||
|
$Sprite.animation = "default"
|
||||||
|
|
||||||
|
$Sprite.play()
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
set_open(open)
|
||||||
1
scripts/door_medium_horizontial.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://b88ykyte6oi3i
|
||||||
|
|
@ -3,9 +3,6 @@ extends "res://scripts/character_ground.gd"
|
||||||
var last_aim_direction = Vector2(0, 0)
|
var last_aim_direction = Vector2(0, 0)
|
||||||
var alerted = false
|
var alerted = false
|
||||||
|
|
||||||
var inaccuracy = 15
|
|
||||||
|
|
||||||
var reaction_time = 0.35
|
|
||||||
var reaction_halve_distance = 720
|
var reaction_halve_distance = 720
|
||||||
var reaction_timer = 0
|
var reaction_timer = 0
|
||||||
|
|
||||||
|
|
@ -29,9 +26,26 @@ var last_seen_player_position = null
|
||||||
@onready var player = null
|
@onready var player = null
|
||||||
var game = null
|
var game = null
|
||||||
|
|
||||||
|
## The enemy's starting gun. Leave blank for no weapon
|
||||||
@export var starting_gun: String = &"pistol"
|
@export var starting_gun: String = &"pistol"
|
||||||
|
## The enemy's starting health.
|
||||||
@export var starting_health: int = 50
|
@export var starting_health: int = 50
|
||||||
|
## Is the enemy's AI enabled?
|
||||||
|
@export var concious: bool = true
|
||||||
|
## Will the enemy always chase the player?
|
||||||
|
@export var always_sees_player: bool = false
|
||||||
|
## The time it takes for an enemy to start shooting / notice the player.
|
||||||
|
@export var reaction_time: float = 0.35
|
||||||
|
## A path for the enemy to follow while idle.
|
||||||
|
@export var points: Array[Node2D] = []
|
||||||
|
## Time to wait between points while idle.
|
||||||
|
@export var wait_time_between_points: int = 5
|
||||||
|
|
||||||
|
var current_node = null
|
||||||
|
|
||||||
|
var current_point = 0
|
||||||
|
|
||||||
|
@export var inaccuracy: int = 15
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
super()
|
super()
|
||||||
|
|
@ -47,15 +61,23 @@ func _process(delta: float) -> void:
|
||||||
$Detecting.stop()
|
$Detecting.stop()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if !concious:
|
||||||
|
$Detecting.stop()
|
||||||
|
return
|
||||||
|
|
||||||
if !player:
|
if !player:
|
||||||
if game:
|
if game:
|
||||||
player = game.get_node("PlayerGround")
|
player = game.get_node("PlayerGround")
|
||||||
else: return
|
else: return
|
||||||
|
|
||||||
|
if always_sees_player:
|
||||||
|
ai_mode = AI_MODE_ATTACK
|
||||||
|
last_seen_player_position = player.global_position
|
||||||
|
|
||||||
if ai_mode == AI_MODE_IDLE:
|
if ai_mode == AI_MODE_IDLE:
|
||||||
$LineOfSight.look_at(player.global_position)
|
$LineOfSight.look_at(player.global_position)
|
||||||
|
|
||||||
if player.is_ancestor_of($LineOfSight.get_collider()):
|
if $LineOfSight.get_collider() && player.is_ancestor_of($LineOfSight.get_collider()):
|
||||||
var divider = clamp((player.global_position - global_position).length() / reaction_halve_distance, 1, 8) * 1.5
|
var divider = clamp((player.global_position - global_position).length() / reaction_halve_distance, 1, 8) * 1.5
|
||||||
reaction_timer += delta / divider
|
reaction_timer += delta / divider
|
||||||
|
|
||||||
|
|
@ -75,6 +97,24 @@ func _process(delta: float) -> void:
|
||||||
reaction_timer = 0
|
reaction_timer = 0
|
||||||
|
|
||||||
|
|
||||||
|
if points.size() > 0:
|
||||||
|
if !current_node: current_node = points[0]
|
||||||
|
|
||||||
|
if $Navagent.is_navigation_finished():
|
||||||
|
if points.find(current_node) + 1 > points.size() - 1:
|
||||||
|
current_node = points[0]
|
||||||
|
else:
|
||||||
|
current_node = points[points.find(current_node) + 1]
|
||||||
|
else:
|
||||||
|
var next_position = $Navagent.get_next_path_position()
|
||||||
|
next_position.y -= 32
|
||||||
|
var axes = global_position.direction_to(next_position)
|
||||||
|
|
||||||
|
horizontial_movement = axes.x
|
||||||
|
vertical_movement = axes.y
|
||||||
|
|
||||||
|
if !$Navagent.target_position or ($Navagent.target_position != current_node.position): $Navagent.target_position = current_node.position
|
||||||
|
|
||||||
elif ai_mode == AI_MODE_ATTACK:
|
elif ai_mode == AI_MODE_ATTACK:
|
||||||
$Detecting.playing = false
|
$Detecting.playing = false
|
||||||
|
|
||||||
|
|
@ -119,6 +159,8 @@ func _process(delta: float) -> void:
|
||||||
|
|
||||||
last_seen_player_position = player.global_position
|
last_seen_player_position = player.global_position
|
||||||
elif ai_state == AI_STATE_CHASE_LAST_SEEN:
|
elif ai_state == AI_STATE_CHASE_LAST_SEEN:
|
||||||
|
firing = false
|
||||||
|
|
||||||
if $Navagent.is_navigation_finished():
|
if $Navagent.is_navigation_finished():
|
||||||
last_seen_player_position = null
|
last_seen_player_position = null
|
||||||
ai_mode = AI_MODE_IDLE
|
ai_mode = AI_MODE_IDLE
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
extends Sprite2D
|
extends Sprite2D
|
||||||
|
|
||||||
@onready var game = get_owner()
|
@onready var game = get_owner()
|
||||||
|
@export var active_mission_requirement: String = ""
|
||||||
|
|
||||||
func _on_enter_hitbox_body_entered(body: Node2D) -> void:
|
func _on_enter_hitbox_body_entered(body: Node2D) -> void:
|
||||||
|
if active_mission_requirement != "":
|
||||||
|
if global.stats.active_mission != active_mission_requirement: return
|
||||||
|
|
||||||
if body.get_name() == "Player":
|
if body.get_name() == "Player":
|
||||||
game.enter_physical(get_name())
|
game.enter_physical(get_name())
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,8 @@ func _interact(player: Node2D) -> void:
|
||||||
else:
|
else:
|
||||||
await game.dialogue("Sorry, but you don't have enough marks for that.")
|
await game.dialogue("Sorry, but you don't have enough marks for that.")
|
||||||
|
|
||||||
|
game.save_game()
|
||||||
|
|
||||||
player.get_node("Camera").enabled = true
|
player.get_node("Camera").enabled = true
|
||||||
$Camera.enabled = false
|
$Camera.enabled = false
|
||||||
$InteractArea.monitoring = true
|
$InteractArea.monitoring = true
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,20 @@ var enemy_scene = preload("res://scenes/enemy.tscn")
|
||||||
var star_scene = preload("res://scenes/star.tscn")
|
var star_scene = preload("res://scenes/star.tscn")
|
||||||
|
|
||||||
@onready var spawn_points = {
|
@onready var spawn_points = {
|
||||||
"SpaceStation1": $Orbits/SpaceStation1/SpaceStation1/ExitPoint
|
"space_station_1": $Orbits/SpaceStation1/space_station_1/ExitPoint,
|
||||||
|
"space_station_2": $Orbits/SpaceStation2/space_station_2/ExitPoint
|
||||||
}
|
}
|
||||||
|
|
||||||
@onready var navigation_points = [
|
@onready var navigation_points = [
|
||||||
{
|
{
|
||||||
"name": "Space Station 1",
|
"name": "Space Station 01",
|
||||||
"id": "ss1",
|
"id": "ss1",
|
||||||
"point": $Orbits/SpaceStation1/SpaceStation1
|
"point": $Orbits/SpaceStation1/space_station_1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Space Station 02",
|
||||||
|
"id": "ss2",
|
||||||
|
"point": $Orbits/SpaceStation2/space_station_2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -41,6 +47,23 @@ func world_to_chunk(position: Vector2) -> Vector2:
|
||||||
func chunk_to_world(position: Vector2) -> Vector2:
|
func chunk_to_world(position: Vector2) -> Vector2:
|
||||||
return Vector2(floori(position.x * 1024), floori(position.y * 1024))
|
return Vector2(floori(position.x * 1024), floori(position.y * 1024))
|
||||||
|
|
||||||
|
## Saves the game.
|
||||||
|
func save_game() -> void:
|
||||||
|
$UI/Control/SaveIndicator.visible = true
|
||||||
|
|
||||||
|
global.stats.position = {
|
||||||
|
"x": $Player.global_position.x,
|
||||||
|
"y": $Player.global_position.y
|
||||||
|
}
|
||||||
|
|
||||||
|
global.stats.location = "space"
|
||||||
|
|
||||||
|
global.save_game()
|
||||||
|
|
||||||
|
await get_tree().create_timer(2).timeout
|
||||||
|
|
||||||
|
$UI/Control/SaveIndicator.visible = false
|
||||||
|
|
||||||
func enter_physical(map):
|
func enter_physical(map):
|
||||||
get_tree().paused = true
|
get_tree().paused = true
|
||||||
|
|
||||||
|
|
@ -60,6 +83,8 @@ func enter_physical(map):
|
||||||
|
|
||||||
global.stats.location = map
|
global.stats.location = map
|
||||||
|
|
||||||
|
global.stats.position = null
|
||||||
|
|
||||||
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -69,10 +94,6 @@ func _ready() -> void:
|
||||||
|
|
||||||
var events = InputMap.action_get_events("forward")
|
var events = InputMap.action_get_events("forward")
|
||||||
|
|
||||||
if (global.stats.location != "space") and (spawn_points.has(global.stats.location)):
|
|
||||||
$Player.global_position = spawn_points[global.stats.location].global_position
|
|
||||||
$Player.rotation = spawn_points[global.stats.location].rotation
|
|
||||||
|
|
||||||
for n in navigation_points:
|
for n in navigation_points:
|
||||||
var navigation_item = preload("res://scenes/navigation_item.tscn").instantiate()
|
var navigation_item = preload("res://scenes/navigation_item.tscn").instantiate()
|
||||||
|
|
||||||
|
|
@ -81,6 +102,14 @@ func _ready() -> void:
|
||||||
|
|
||||||
$UI/Control/Navpanel/NavigationRoutes/Scroll/Box.add_child(navigation_item)
|
$UI/Control/Navpanel/NavigationRoutes/Scroll/Box.add_child(navigation_item)
|
||||||
|
|
||||||
|
for n in global.contracts:
|
||||||
|
var contract_item = preload("res://scenes/contract_item.tscn").instantiate()
|
||||||
|
|
||||||
|
contract_item.contract = n
|
||||||
|
contract_item.game = self
|
||||||
|
|
||||||
|
$UI/Control/Navpanel/ContractsList/Scroll/Box.add_child(contract_item)
|
||||||
|
|
||||||
var i = 0
|
var i = 0
|
||||||
while i < 1024 / 3:
|
while i < 1024 / 3:
|
||||||
var star = star_scene.instantiate()
|
var star = star_scene.instantiate()
|
||||||
|
|
@ -110,13 +139,35 @@ func _ready() -> void:
|
||||||
|
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
|
if (global.stats.location != "space") and (spawn_points.has(global.stats.location)):
|
||||||
|
$Player.global_position = spawn_points[global.stats.location].global_position
|
||||||
|
$Player.rotation = spawn_points[global.stats.location].rotation
|
||||||
|
elif global.stats.position:
|
||||||
|
$Player.global_position.x = global.stats.position.x
|
||||||
|
$Player.global_position.y = global.stats.position.y
|
||||||
|
|
||||||
|
global.stats.position = null
|
||||||
|
|
||||||
|
global.stats.location = "space"
|
||||||
|
|
||||||
|
if global.stats.story_progress < 4: global.stats.story_progress = 4
|
||||||
|
|
||||||
|
if global.stats.loaded:
|
||||||
|
save_game()
|
||||||
|
else:
|
||||||
|
global.stats.loaded = true
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if get_tree().paused:
|
if get_tree().paused:
|
||||||
return
|
return
|
||||||
|
|
||||||
if global.stats.navigation_goal:
|
if global.stats.navigation_goal:
|
||||||
if not global.stats.navigation_goal.point:
|
if !global.stats.navigation_goal.point || (typeof(global.stats.navigation_goal.point) == TYPE_STRING):
|
||||||
global.stats.navigation_goal = null
|
if global.stats.navigation_goal.id:
|
||||||
|
for n in navigation_points:
|
||||||
|
if n.id == global.stats.navigation_goal.id:
|
||||||
|
global.stats.navigation_goal.point = n.point
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
if !$Navring.has_node("NavigationMarker"):
|
if !$Navring.has_node("NavigationMarker"):
|
||||||
var navigation_marker = preload("res://scenes/navigation_marker.tscn").instantiate()
|
var navigation_marker = preload("res://scenes/navigation_marker.tscn").instantiate()
|
||||||
|
|
@ -138,9 +189,10 @@ func _process(delta: float) -> void:
|
||||||
|
|
||||||
$UI/Control/Navpanel/Navigation/Hyperboost.visible = true
|
$UI/Control/Navpanel/Navigation/Hyperboost.visible = true
|
||||||
|
|
||||||
var goal_distance = (global.stats.navigation_goal.point.position - $Player.position).length()
|
if global.stats.navigation_goal.point and (typeof(global.stats.navigation_goal.point) != TYPE_STRING):
|
||||||
|
var goal_distance = (global.stats.navigation_goal.point.position - $Player.position).length()
|
||||||
|
|
||||||
$UI/Control/Navpanel/Navigation/Destination.text = global.stats.navigation_goal.name + " (" + str(floori(goal_distance)) + "u)"
|
$UI/Control/Navpanel/Navigation/Destination.text = global.stats.navigation_goal.name + " (" + str(floori(goal_distance)) + "u)"
|
||||||
else:
|
else:
|
||||||
if $Navring.has_node("NavigationMarker"):
|
if $Navring.has_node("NavigationMarker"):
|
||||||
$Navring.get_node("NavigationMarker").queue_free()
|
$Navring.get_node("NavigationMarker").queue_free()
|
||||||
|
|
@ -251,6 +303,8 @@ func _set_navpanel_menu(menu: String) -> void:
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if event.is_action_pressed("pause"):
|
if event.is_action_pressed("pause"):
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
$UI/Control/PauseMenu.visible = true
|
$UI/Control/PauseMenu.visible = true
|
||||||
|
|
||||||
$UI/Control/PauseMenu/Panel/Flow/Resume.grab_focus()
|
$UI/Control/PauseMenu/Panel/Flow/Resume.grab_focus()
|
||||||
|
|
@ -273,6 +327,8 @@ func _input(event: InputEvent) -> void:
|
||||||
|
|
||||||
if ($UI/Control/Navpanel/NavigationRoutes.visible) or ($UI/Control/Navpanel/NavigationHyperboost.visible):
|
if ($UI/Control/Navpanel/NavigationRoutes.visible) or ($UI/Control/Navpanel/NavigationHyperboost.visible):
|
||||||
_set_navpanel_menu("Navigation")
|
_set_navpanel_menu("Navigation")
|
||||||
|
elif $UI/Control/Navpanel/ContractsList.visible:
|
||||||
|
_set_navpanel_menu("Contracts")
|
||||||
elif $UI/Control/Navpanel/Start.visible:
|
elif $UI/Control/Navpanel/Start.visible:
|
||||||
$UI/Control/Navpanel.visible = false
|
$UI/Control/Navpanel.visible = false
|
||||||
else:
|
else:
|
||||||
|
|
@ -314,6 +370,15 @@ func _navigation_item_pressed(goal) -> void:
|
||||||
$UiSelect.play()
|
$UiSelect.play()
|
||||||
_set_navpanel_menu("Navigation")
|
_set_navpanel_menu("Navigation")
|
||||||
|
|
||||||
|
func _contracts_item_pressed(contract) -> void:
|
||||||
|
if global.stats.active_mission: return
|
||||||
|
|
||||||
|
global.stats.active_mission = contract
|
||||||
|
global.stats.mission_progress = 0
|
||||||
|
|
||||||
|
$UiSelect.play()
|
||||||
|
_set_navpanel_menu("Contracts")
|
||||||
|
|
||||||
|
|
||||||
func _on_navigation_back_pressed() -> void:
|
func _on_navigation_back_pressed() -> void:
|
||||||
$UiBack.play()
|
$UiBack.play()
|
||||||
|
|
@ -329,3 +394,15 @@ func _on_enable_hyperboost_pressed() -> void:
|
||||||
$UiSelect.play()
|
$UiSelect.play()
|
||||||
_set_navpanel_menu("Navigation")
|
_set_navpanel_menu("Navigation")
|
||||||
$Player.hyperboosting = true
|
$Player.hyperboosting = true
|
||||||
|
|
||||||
|
func _on_new_contract_pressed() -> void:
|
||||||
|
$UiSelect.play()
|
||||||
|
_set_navpanel_menu("ContractsList")
|
||||||
|
|
||||||
|
func _on_contracts_pressed() -> void:
|
||||||
|
$UiSelect.play()
|
||||||
|
_set_navpanel_menu("Contracts")
|
||||||
|
|
||||||
|
func _on_contracts_back_pressed() -> void:
|
||||||
|
$UiBack.play()
|
||||||
|
_set_navpanel_menu("Contracts")
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,37 @@ var dialogue_speed = {
|
||||||
"player_woozy": 0.2,
|
"player_woozy": 0.2,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func save_game() -> void:
|
||||||
|
$UI/Control/SaveIndicator.visible = true
|
||||||
|
|
||||||
|
global.stats.position = {
|
||||||
|
"x": $PlayerGround.global_position.x,
|
||||||
|
"y": $PlayerGround.global_position.y
|
||||||
|
}
|
||||||
|
|
||||||
|
global.save_game()
|
||||||
|
|
||||||
|
await get_tree().create_timer(2).timeout
|
||||||
|
|
||||||
|
$UI/Control/SaveIndicator.visible = false
|
||||||
|
|
||||||
|
func checkpoint() -> void:
|
||||||
|
var packed_scene = PackedScene.new()
|
||||||
|
packed_scene.pack(get_tree().get_current_scene())
|
||||||
|
|
||||||
|
global.checkpoint = packed_scene
|
||||||
|
|
||||||
|
func give_ground_gun(string: String) -> void:
|
||||||
|
global.stats.equipped_ground_gun = string
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
$UI/Control/Dialogue.visible = false
|
$UI/Control/Dialogue.visible = false
|
||||||
|
|
||||||
var location_scene = load("res://scenes/locations/space_station_1.tscn").instantiate()
|
LimboConsole.register_command(give_ground_gun, "give_ground_gun", "Gives a gun for ground mode")
|
||||||
|
|
||||||
|
print(global.stats.location)
|
||||||
|
|
||||||
|
var location_scene = load("res://scenes/locations/" + global.stats.location + ".tscn").instantiate()
|
||||||
|
|
||||||
for n in location_scene.get_children():
|
for n in location_scene.get_children():
|
||||||
location_scene.remove_child(n)
|
location_scene.remove_child(n)
|
||||||
|
|
@ -41,6 +68,20 @@ func _ready() -> void:
|
||||||
|
|
||||||
location_scene.free()
|
location_scene.free()
|
||||||
|
|
||||||
|
if global.stats.position:
|
||||||
|
print("AAA ", global.stats.position)
|
||||||
|
$PlayerGround.global_position.x = global.stats.position.x
|
||||||
|
$PlayerGround.global_position.y = global.stats.position.y
|
||||||
|
|
||||||
|
global.stats.position = null
|
||||||
|
else:
|
||||||
|
$PlayerGround.global_position = $PlayerSpawn.global_position
|
||||||
|
|
||||||
|
if global.stats.loaded:
|
||||||
|
save_game()
|
||||||
|
else:
|
||||||
|
global.stats.loaded = true
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if current_interaction_area:
|
if current_interaction_area:
|
||||||
$UI/Control/Interact.visible = true
|
$UI/Control/Interact.visible = true
|
||||||
|
|
@ -134,5 +175,15 @@ func set_vignette_parameter(name: String, value: float) -> void:
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if event.is_action_released("dialogue_continue"):
|
if event.is_action_released("dialogue_continue"):
|
||||||
|
|
||||||
dialogue_continue.emit()
|
dialogue_continue.emit()
|
||||||
|
if event.is_action_pressed("pause"):
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
|
$UI/Control/PauseMenu.visible = true
|
||||||
|
|
||||||
|
$UI/Control/PauseMenu/Panel/Flow/Resume.grab_focus()
|
||||||
|
|
||||||
|
get_tree().paused = true
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
LimboConsole.unregister_command(give_ground_gun)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ func _ready() -> void:
|
||||||
load_settings()
|
load_settings()
|
||||||
|
|
||||||
LimboConsole.register_command(set_story_progress, "set_story_progress", "Sets the current story_progress variable")
|
LimboConsole.register_command(set_story_progress, "set_story_progress", "Sets the current story_progress variable")
|
||||||
|
LimboConsole.register_command(set_active_mission, "set_active_mission", "Sets the current active_mission variable")
|
||||||
|
|
||||||
var ground_location = null
|
var ground_location = null
|
||||||
|
|
||||||
|
|
@ -28,16 +29,69 @@ var orbit_zones = [
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
var missions = {
|
||||||
|
"waking_up": {
|
||||||
|
"id": "waking_up",
|
||||||
|
"name": "Waking Up",
|
||||||
|
"desc": "Welcome back, spaceperson.",
|
||||||
|
"rewards": {
|
||||||
|
"marks": 500
|
||||||
|
},
|
||||||
|
"objectives": {
|
||||||
|
"desk": "Visit the doctor at their desk",
|
||||||
|
"follow": "Follow the doctor",
|
||||||
|
"run": "My suggestion: RUN!",
|
||||||
|
"escape": "Escape to your ship"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test_contract": {
|
||||||
|
"id": "test_contract",
|
||||||
|
"name": "HEMA Removal",
|
||||||
|
"desc": "Space station 02 is currently overrun with HEMA mercenaries. We know they have a bomb in the storage warehouse. We want someone to plant that bomb on the station.",
|
||||||
|
"rewards": {
|
||||||
|
"marks": 500
|
||||||
|
},
|
||||||
|
"objectives": {
|
||||||
|
"arrive": "Enter Space Station 02 (navigate to it via your navagent)",
|
||||||
|
"collect_bomb": "Collect the bomb in the back room",
|
||||||
|
"plant_bomb": "Plant the bomb in the main foyer",
|
||||||
|
"escape": "Escape"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
var contracts = [ "test_contract" ]
|
||||||
|
|
||||||
var ground_guns = {
|
var ground_guns = {
|
||||||
"pistol": {
|
"pistol": {
|
||||||
"name": "Oni",
|
"name": "Oni",
|
||||||
"type": "energy",
|
"type": "kinetic",
|
||||||
"damage": 10,
|
"damage": 10,
|
||||||
"magazine_size": 12,
|
"magazine_size": 12,
|
||||||
"fire_rate": 0.3
|
"fire_rate": 0.3
|
||||||
|
},
|
||||||
|
"docgun": {
|
||||||
|
"name": "Docgun",
|
||||||
|
"type": "kinetic",
|
||||||
|
"damage": 150,
|
||||||
|
"magazine_size": 12,
|
||||||
|
"fire_rate": 0.25
|
||||||
|
},
|
||||||
|
"smg": {
|
||||||
|
"name": "Ripper",
|
||||||
|
"type": "energy",
|
||||||
|
"damage": 8,
|
||||||
|
"magazine_size": 24,
|
||||||
|
"fire_rate": 1.0/6.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var checkpoint = null
|
||||||
|
|
||||||
|
func load_checkpoint():
|
||||||
|
if checkpoint:
|
||||||
|
get_tree().change_scene_to_packed(checkpoint)
|
||||||
|
|
||||||
func generate_save():
|
func generate_save():
|
||||||
var save_dict = {
|
var save_dict = {
|
||||||
"stats": stats
|
"stats": stats
|
||||||
|
|
@ -74,8 +128,7 @@ func load_game():
|
||||||
print("JSON Parse Error: ", json.get_error_message(), " in ", parse_result, " at line ", json.get_error_line())
|
print("JSON Parse Error: ", json.get_error_message(), " in ", parse_result, " at line ", json.get_error_line())
|
||||||
return
|
return
|
||||||
|
|
||||||
if json.data.settings: settings = json.data.settings
|
if json.data.stats: stats = json.data.stats
|
||||||
if json.data.stats: settings = json.data.stats
|
|
||||||
|
|
||||||
func load_settings():
|
func load_settings():
|
||||||
if not FileAccess.file_exists("user://settings.json"):
|
if not FileAccess.file_exists("user://settings.json"):
|
||||||
|
|
@ -99,19 +152,27 @@ func delete_game():
|
||||||
func set_story_progress(value: int) -> void:
|
func set_story_progress(value: int) -> void:
|
||||||
stats.story_progress = value
|
stats.story_progress = value
|
||||||
|
|
||||||
|
func set_active_mission(value = null) -> void:
|
||||||
|
stats.active_mission = value
|
||||||
|
|
||||||
var default_stats = {
|
var default_stats = {
|
||||||
"loaded": false,
|
"loaded": false,
|
||||||
"fuel": 12,
|
"fuel": 75,
|
||||||
"fuel_tank_size": 1,
|
"fuel_tank_size": 1,
|
||||||
"speed": 512,
|
"speed": 512,
|
||||||
"boost_tank_size": 1,
|
"boost_tank_size": 1,
|
||||||
"marks": 200,
|
"marks": 200,
|
||||||
"location": "space",
|
"location": "space_station_1",
|
||||||
"ship_position": Vector2(),
|
"position": Vector2(),
|
||||||
"ship_rotation": 0,
|
"rotation": 0,
|
||||||
"story_progress": 1,
|
"story_progress": 0,
|
||||||
"navigation_goal": null,
|
"navigation_goal": null,
|
||||||
"equipped_ground_gun": "pistol"
|
"equipped_ground_gun": null,
|
||||||
|
"gun_holstered": true,
|
||||||
|
|
||||||
|
"active_mission": null,
|
||||||
|
"mission_progress": 0,
|
||||||
|
"completed_missions": [],
|
||||||
}
|
}
|
||||||
|
|
||||||
var stats = default_stats.duplicate_deep()
|
var stats = default_stats.duplicate_deep()
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,13 @@ extends Area2D
|
||||||
var game = null
|
var game = null
|
||||||
|
|
||||||
func _on_body_entered(body: Node2D) -> void:
|
func _on_body_entered(body: Node2D) -> void:
|
||||||
if body.get_name() == "PlayerGround":
|
if !game: return
|
||||||
|
|
||||||
|
if (body.get_name() == "PlayerGround") or (game.get_node("PlayerGround").is_ancestor_of(body)):
|
||||||
game.current_interaction_area = self
|
game.current_interaction_area = self
|
||||||
|
|
||||||
func _on_body_exited(body: Node2D) -> void:
|
func _on_body_exited(body: Node2D) -> void:
|
||||||
if body.get_name() == "PlayerGround":
|
if !game: return
|
||||||
|
|
||||||
|
if (body.get_name() == "PlayerGround") or (game.get_node("PlayerGround").is_ancestor_of(body)):
|
||||||
if game.current_interaction_area == self: game.current_interaction_area = null
|
if game.current_interaction_area == self: game.current_interaction_area = null
|
||||||
|
|
|
||||||
25
scripts/mission_objectives.gd
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
extends VBoxContainer
|
||||||
|
|
||||||
|
var last_mission_progres = -1
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if global.stats.active_mission:
|
||||||
|
visible = true
|
||||||
|
|
||||||
|
var mission = global.missions[global.stats.active_mission]
|
||||||
|
|
||||||
|
if last_mission_progres != global.stats.mission_progress:
|
||||||
|
last_mission_progres = global.stats.mission_progress
|
||||||
|
|
||||||
|
|
||||||
|
if mission.objectives.values().size() - 1 < global.stats.mission_progress:
|
||||||
|
global.stats.completed_missions.push_front(global.stats.active_mission)
|
||||||
|
global.stats.mission_progress = 0
|
||||||
|
global.stats.active_mission = null
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
$Label.text = mission.name
|
||||||
|
$Label2.text = "- " + mission.objectives.values()[global.stats.mission_progress]
|
||||||
|
else:
|
||||||
|
visible = false
|
||||||
1
scripts/mission_objectives.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://ceua7bjh8xokf
|
||||||
|
|
@ -3,5 +3,7 @@ extends Sprite2D
|
||||||
@export var destination: Node2D = null
|
@export var destination: Node2D = null
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
|
if !destination: return
|
||||||
|
|
||||||
look_at(destination.global_position)
|
look_at(destination.global_position)
|
||||||
rotation += deg_to_rad(90)
|
rotation += deg_to_rad(90)
|
||||||
|
|
|
||||||
19
scripts/objective_list_item.gd
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
extends Label
|
||||||
|
|
||||||
|
var progress = 1
|
||||||
|
var hiding = false
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$AnimationPlayer.play("show")
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if hiding: return
|
||||||
|
|
||||||
|
if global.stats.mission_progress >= progress:
|
||||||
|
hiding = true
|
||||||
|
|
||||||
|
$AnimationPlayer.play("hide")
|
||||||
|
|
||||||
|
await $AnimationPlayer.animation_finished
|
||||||
|
|
||||||
|
queue_free()
|
||||||
1
scripts/objective_list_item.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://wd3la6kvbm6e
|
||||||
|
|
@ -3,6 +3,8 @@ extends Panel
|
||||||
@onready var game = get_parent().get_parent().get_parent()
|
@onready var game = get_parent().get_parent().get_parent()
|
||||||
|
|
||||||
func _resume() -> void:
|
func _resume() -> void:
|
||||||
|
$UiBack.play()
|
||||||
|
|
||||||
while Input.is_action_pressed("pause"):
|
while Input.is_action_pressed("pause"):
|
||||||
await get_tree().create_timer(0).timeout
|
await get_tree().create_timer(0).timeout
|
||||||
|
|
||||||
|
|
@ -14,5 +16,25 @@ func _on_resume_pressed() -> void:
|
||||||
_resume()
|
_resume()
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
|
if event.is_action_pressed("pause"):
|
||||||
|
if $Settings.visible:
|
||||||
|
# This is probably no good!
|
||||||
|
$Settings._on_back_pressed()
|
||||||
|
|
||||||
|
$Settings.visible = false
|
||||||
|
$Panel/Flow/Resume.grab_focus()
|
||||||
|
elif visible:
|
||||||
|
_resume()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_settings_pressed() -> void:
|
||||||
if visible:
|
if visible:
|
||||||
if event.is_action_pressed("pause"): _resume()
|
$UiSelect.play()
|
||||||
|
$Settings.visible = true
|
||||||
|
$Settings/Scroll/Flow/Back.grab_focus()
|
||||||
|
|
||||||
|
func _on_settings_back_pressed() -> void:
|
||||||
|
if visible:
|
||||||
|
$UiBack.play()
|
||||||
|
$Settings.visible = false
|
||||||
|
$Panel/Flow/Resume.grab_focus()
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,31 @@
|
||||||
extends "res://scripts/character_ground.gd"
|
extends "res://scripts/character_ground.gd"
|
||||||
|
|
||||||
var last_aim_direction = Vector2(0, 0)
|
var last_aim_direction = Vector2(0, 0)
|
||||||
|
var processing_death = false
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
super()
|
super()
|
||||||
|
|
||||||
set_ground_gun(global.stats.equipped_ground_gun)
|
if global.stats.gun_holstered:
|
||||||
|
set_ground_gun(null)
|
||||||
|
else:
|
||||||
|
set_ground_gun(global.stats.equipped_ground_gun)
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
super(delta)
|
super(delta)
|
||||||
|
|
||||||
|
if dead:
|
||||||
|
if processing_death: return
|
||||||
|
|
||||||
|
processing_death = true
|
||||||
|
|
||||||
|
await get_tree().create_timer(1).timeout
|
||||||
|
|
||||||
|
if global.checkpoint:
|
||||||
|
global.load_game()
|
||||||
|
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
||||||
|
return
|
||||||
|
|
||||||
if input_icon.using_gamepad:
|
if input_icon.using_gamepad:
|
||||||
if !((Input.get_axis("aim_left", "aim_right") == 0) and (Input.get_axis("aim_up", "aim_down") == 0)):
|
if !((Input.get_axis("aim_left", "aim_right") == 0) and (Input.get_axis("aim_up", "aim_down") == 0)):
|
||||||
$HeldItem.rotation = Vector2(
|
$HeldItem.rotation = Vector2(
|
||||||
|
|
@ -37,4 +53,18 @@ func _process(delta: float) -> void:
|
||||||
$HeldItem/Crosshair.visible = false
|
$HeldItem/Crosshair.visible = false
|
||||||
$HeldItem/Line.visible = false
|
$HeldItem/Line.visible = false
|
||||||
|
|
||||||
|
if Input.is_action_just_pressed("toggle_holster"):
|
||||||
|
if global.stats.equipped_ground_gun:
|
||||||
|
global.stats.gun_holstered = !global.stats.gun_holstered
|
||||||
|
|
||||||
|
if global.stats.gun_holstered:
|
||||||
|
set_ground_gun(null)
|
||||||
|
else:
|
||||||
|
set_ground_gun(global.stats.equipped_ground_gun)
|
||||||
|
else:
|
||||||
|
global.stats.gun_holstered = true
|
||||||
|
|
||||||
|
set_ground_gun(null)
|
||||||
|
|
||||||
|
|
||||||
firing = Input.is_action_pressed("fire")
|
firing = Input.is_action_pressed("fire")
|
||||||
|
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
extends CharacterBody2D
|
|
||||||
|
|
||||||
## Is the player busy in an interaction?
|
|
||||||
var busy = false
|
|
||||||
|
|
||||||
func _ready() -> void:
|
|
||||||
$Sprite.play()
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
|
||||||
if "_process_2" in self: _process_2(delta)
|
|
||||||
|
|
||||||
var horizontial_movement = Input.get_axis("ground_left", "ground_right")
|
|
||||||
var vertical_movement = Input.get_axis("ground_up", "ground_down")
|
|
||||||
|
|
||||||
if busy:
|
|
||||||
velocity = Vector2()
|
|
||||||
else:
|
|
||||||
velocity = Vector2(256 * horizontial_movement, 256 * vertical_movement)
|
|
||||||
|
|
||||||
if horizontial_movement > 0.1:
|
|
||||||
$Sprite.scale.x = -2
|
|
||||||
if horizontial_movement < -0.1:
|
|
||||||
$Sprite.scale.x = 2
|
|
||||||
|
|
||||||
if velocity.length() > 8:
|
|
||||||
$Sprite.animation = "walk"
|
|
||||||
if abs(horizontial_movement) > abs(vertical_movement): $Sprite.speed_scale = abs(horizontial_movement)
|
|
||||||
else: $Sprite.speed_scale = abs(vertical_movement)
|
|
||||||
else:
|
|
||||||
$Sprite.animation = "idle"
|
|
||||||
|
|
||||||
|
|
||||||
move_and_slide()
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://b6xubbxfsaqby
|
|
||||||
|
|
@ -9,19 +9,19 @@ func _on_master_volume_value_changed(value: float) -> void:
|
||||||
global.settings.master_volume = value
|
global.settings.master_volume = value
|
||||||
$Scroll/Flow/Flow2/MasterVolume/Label.text = str(floori(value * 100)) + "%"
|
$Scroll/Flow/Flow2/MasterVolume/Label.text = str(floori(value * 100)) + "%"
|
||||||
AudioServer.set_bus_volume_linear(0, value)
|
AudioServer.set_bus_volume_linear(0, value)
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
func _on_music_volume_value_changed(value: float) -> void:
|
func _on_music_volume_value_changed(value: float) -> void:
|
||||||
global.settings.music_volume = value
|
global.settings.music_volume = value
|
||||||
$Scroll/Flow/Flow3/MusicVolume/Label.text = str(floori(value * 100)) + "%"
|
$Scroll/Flow/Flow3/MusicVolume/Label.text = str(floori(value * 100)) + "%"
|
||||||
AudioServer.set_bus_volume_linear(1, value)
|
AudioServer.set_bus_volume_linear(1, value)
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
func _on_sfx_volume_value_changed(value: float) -> void:
|
func _on_sfx_volume_value_changed(value: float) -> void:
|
||||||
global.settings.sfx_volume = value
|
global.settings.sfx_volume = value
|
||||||
$Scroll/Flow/Flow4/SFXVolume/Label.text = str(floori(value * 100)) + "%"
|
$Scroll/Flow/Flow4/SFXVolume/Label.text = str(floori(value * 100)) + "%"
|
||||||
AudioServer.set_bus_volume_linear(2, value)
|
AudioServer.set_bus_volume_linear(2, value)
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
func _on_back_pressed() -> void:
|
func _on_back_pressed() -> void:
|
||||||
global.save_settings()
|
global.save_settings()
|
||||||
|
|
|
||||||
|
|
@ -188,13 +188,59 @@ func _ground_ready() -> void:
|
||||||
|
|
||||||
await game.dialogue("When you're feeling ready, I'll be at the end of the hall.", "doctor_1")
|
await game.dialogue("When you're feeling ready, I'll be at the end of the hall.", "doctor_1")
|
||||||
|
|
||||||
|
await game.get_node("Doctor").navigate_to(game.get_node("DoctorHallWaypoint").position)
|
||||||
|
|
||||||
|
game.get_node("Doctor").global_position = game.get_node("DoctorDeskWaypoint").position
|
||||||
|
|
||||||
global.stats.story_progress = 1
|
global.stats.story_progress = 1
|
||||||
|
|
||||||
player.busy = false
|
player.busy = false
|
||||||
|
|
||||||
|
global.stats.active_mission = "waking_up"
|
||||||
|
|
||||||
|
game.get_node("UI/Control/MoveTutorial").visible = true
|
||||||
|
|
||||||
while i < 100:
|
while i < 100:
|
||||||
await get_tree().create_timer(0.2).timeout
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
game.set_vignette_parameter("softness", i * 0.04)
|
game.set_vignette_parameter("softness", i * 0.04)
|
||||||
|
|
||||||
i += 2
|
i += 2
|
||||||
|
|
||||||
|
while player.velocity.length() == 0:
|
||||||
|
await get_tree().create_timer(0.1).timeout
|
||||||
|
|
||||||
|
game.get_node("UI/Control/MoveTutorial").visible = false
|
||||||
|
|
||||||
|
elif global.stats.story_progress == 1:
|
||||||
|
pass
|
||||||
|
elif global.stats.story_progress == 2:
|
||||||
|
print("PROGRESS 2")
|
||||||
|
game.get_node("Uglyburger").stop()
|
||||||
|
|
||||||
|
game.get_node("IntrusionAlarm").play()
|
||||||
|
|
||||||
|
game.get_node("Map").modulate = Color(0.5, 0.35, 0.35)
|
||||||
|
|
||||||
|
game.get_node("Doctor/InteractArea").monitoring = false
|
||||||
|
|
||||||
|
#player.global_position = game.get_node("Checkpoint1PlayerSpawn").global_position
|
||||||
|
game.get_node("Doctor").global_position = game.get_node("Checkpoint1DoctorSpawn").global_position
|
||||||
|
|
||||||
|
game.get_node("Doctor").checkpoint_1()
|
||||||
|
elif global.stats.story_progress == 3:
|
||||||
|
print("PROGRESS 3")
|
||||||
|
game.get_node("Uglyburger").stop()
|
||||||
|
|
||||||
|
game.get_node("HospitalEscapeD2State1").monitoring = false
|
||||||
|
game.get_node("HospitalEscapeD2State2").monitoring = false
|
||||||
|
|
||||||
|
game.get_node("Map").modulate = Color(0.5, 0.35, 0.35)
|
||||||
|
|
||||||
|
game.get_node("Doctor").queue_free()
|
||||||
|
|
||||||
|
game.get_node("Doctor2").global_position = game.get_node("Doctor2DoorWaypoint").global_position
|
||||||
|
|
||||||
|
game.get_node("Doctor2").firing = false
|
||||||
|
|
||||||
|
game.get_node("Doctor2").checkpoint_2()
|
||||||
|
|
|
||||||
127
scripts/title.gd
|
|
@ -103,7 +103,7 @@ func _on_credits_pressed() -> void:
|
||||||
func _on_exit_credits_pressed() -> void:
|
func _on_exit_credits_pressed() -> void:
|
||||||
if transitioning: return
|
if transitioning: return
|
||||||
|
|
||||||
$UiSelect.play()
|
$UiBack.play()
|
||||||
|
|
||||||
transitioning = true
|
transitioning = true
|
||||||
|
|
||||||
|
|
@ -174,7 +174,7 @@ func _on_settings_pressed() -> void:
|
||||||
func _on_settings_back_pressed() -> void:
|
func _on_settings_back_pressed() -> void:
|
||||||
if transitioning: return
|
if transitioning: return
|
||||||
|
|
||||||
$UiSelect.play()
|
$UiBack.play()
|
||||||
|
|
||||||
transitioning = true
|
transitioning = true
|
||||||
|
|
||||||
|
|
@ -216,18 +216,20 @@ func _on_new_game_pressed() -> void:
|
||||||
transitioning = true
|
transitioning = true
|
||||||
|
|
||||||
get_viewport().gui_release_focus()
|
get_viewport().gui_release_focus()
|
||||||
var i = 0
|
|
||||||
|
|
||||||
while i < 6:
|
|
||||||
$UI/Control/Title.modulate.a -= 0.2
|
|
||||||
|
|
||||||
await get_tree().create_timer(0.2).timeout
|
if FileAccess.file_exists("user://savegame.save"):
|
||||||
|
var i = 0
|
||||||
|
|
||||||
i += 1
|
while i < 6:
|
||||||
|
$UI/Control/Title.modulate.a -= 0.2
|
||||||
|
|
||||||
$UI/Control/Title.visible = false
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
$UI/Control/Title.visible = false
|
||||||
|
|
||||||
if global.stats.loaded:
|
|
||||||
$UI/Control/OverrideSave.visible = true
|
$UI/Control/OverrideSave.visible = true
|
||||||
|
|
||||||
$UI/Control/OverrideSave.modulate.a = 0
|
$UI/Control/OverrideSave.modulate.a = 0
|
||||||
|
|
@ -243,9 +245,116 @@ func _on_new_game_pressed() -> void:
|
||||||
|
|
||||||
$UI/Control/OverrideSave/Buttons/NoOverride.grab_focus()
|
$UI/Control/OverrideSave/Buttons/NoOverride.grab_focus()
|
||||||
|
|
||||||
|
transitioning = false
|
||||||
|
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
var i = 0
|
||||||
|
|
||||||
|
while i < 6:
|
||||||
|
$UI/Control/Title.modulate.a -= 0.2
|
||||||
|
$Stars.modulate.a -= 0.2
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
$UI/Control/Title.visible = false
|
||||||
|
|
||||||
|
if global.stats.location == "space":
|
||||||
|
get_tree().change_scene_to_file("res://scenes/game.tscn")
|
||||||
|
else:
|
||||||
|
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
||||||
|
|
||||||
|
func _on_load_game_pressed() -> void:
|
||||||
|
if transitioning: return
|
||||||
|
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
|
transitioning = true
|
||||||
|
|
||||||
|
get_viewport().gui_release_focus()
|
||||||
|
var i = 0
|
||||||
|
|
||||||
|
while i < 6:
|
||||||
|
$UI/Control/Title.modulate.a -= 0.2
|
||||||
|
$Stars.modulate.a -= 0.2
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
$UI/Control/Title.visible = false
|
||||||
|
|
||||||
|
await global.load_game()
|
||||||
|
|
||||||
|
global.stats.loaded = false
|
||||||
|
|
||||||
if global.stats.location == "space":
|
if global.stats.location == "space":
|
||||||
get_tree().change_scene_to_file("res://scenes/game.tscn")
|
get_tree().change_scene_to_file("res://scenes/game.tscn")
|
||||||
else:
|
else:
|
||||||
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_yes_override_pressed() -> void:
|
||||||
|
if transitioning: return
|
||||||
|
|
||||||
|
$UiSelect.play()
|
||||||
|
|
||||||
|
transitioning = true
|
||||||
|
|
||||||
|
get_viewport().gui_release_focus()
|
||||||
|
var i = 0
|
||||||
|
|
||||||
|
while i < 6:
|
||||||
|
$UI/Control/OverrideSave.modulate.a -= 0.2
|
||||||
|
$Stars.modulate.a -= 0.2
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
$UI/Control/OverrideSave.visible = false
|
||||||
|
|
||||||
|
global.stats = global.default_stats.duplicate_deep()
|
||||||
|
|
||||||
|
if global.stats.location == "space":
|
||||||
|
get_tree().change_scene_to_file("res://scenes/game.tscn")
|
||||||
|
else:
|
||||||
|
get_tree().change_scene_to_file("res://scenes/ground.tscn")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_no_override_pressed() -> void:
|
||||||
|
if transitioning: return
|
||||||
|
|
||||||
|
$UiBack.play()
|
||||||
|
|
||||||
|
transitioning = true
|
||||||
|
|
||||||
|
get_viewport().gui_release_focus()
|
||||||
|
var i = 0
|
||||||
|
|
||||||
|
while i < 6:
|
||||||
|
$UI/Control/OverrideSave.modulate.a -= 0.2
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
$UI/Control/OverrideSave.visible = false
|
||||||
|
$UI/Control/Title.visible = true
|
||||||
|
|
||||||
|
$UI/Control/Title.modulate.a = 0
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
while i < 6:
|
||||||
|
$UI/Control/Title.modulate.a += 0.2
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.2).timeout
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
$UI/Control/Title/Buttons/NewGame.grab_focus()
|
||||||
|
|
||||||
transitioning = false
|
transitioning = false
|
||||||
|
|
|
||||||
BIN
sounds/background_gunshots.mp3
Normal file
19
sounds/background_gunshots.mp3.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://f6l56kvndidj"
|
||||||
|
path="res://.godot/imported/background_gunshots.mp3-9d148338da2f4c84e6a101a6a8dec405.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://sounds/background_gunshots.mp3"
|
||||||
|
dest_files=["res://.godot/imported/background_gunshots.mp3-9d148338da2f4c84e6a101a6a8dec405.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
sounds/intrusion_alarm.mp3
Normal file
19
sounds/intrusion_alarm.mp3.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://c13fyse8fxmio"
|
||||||
|
path="res://.godot/imported/intrusion_alarm.mp3-9e530e5459da68390295ed718d582217.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://sounds/intrusion_alarm.mp3"
|
||||||
|
dest_files=["res://.godot/imported/intrusion_alarm.mp3-9e530e5459da68390295ed718d582217.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
sounds/music/dnbd.mp3
Normal file
19
sounds/music/dnbd.mp3.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://cqco8ncle0u0j"
|
||||||
|
path="res://.godot/imported/dnbd.mp3-c371aef019a254e92edc32d9620186a2.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://sounds/music/dnbd.mp3"
|
||||||
|
dest_files=["res://.godot/imported/dnbd.mp3-c371aef019a254e92edc32d9620186a2.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
sounds/music/dnbd_sudden.mp3
Normal file
19
sounds/music/dnbd_sudden.mp3.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://7cvp5b3mq1tn"
|
||||||
|
path="res://.godot/imported/dnbd_sudden.mp3-154358d4b626b7474adf08b4244e8089.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://sounds/music/dnbd_sudden.mp3"
|
||||||
|
dest_files=["res://.godot/imported/dnbd_sudden.mp3-154358d4b626b7474adf08b4244e8089.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
sounds/yay.mp3
Normal file
19
sounds/yay.mp3.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://b5tvttwjwgpb1"
|
||||||
|
path="res://.godot/imported/yay.mp3-25ed624d349ce4768f62d6fb0b734c96.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://sounds/yay.mp3"
|
||||||
|
dest_files=["res://.godot/imported/yay.mp3-25ed624d349ce4768f62d6fb0b734c96.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://cmp1bhx77d1j5"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d4kq5akkly15i" path="res://addons/godot-rapier2d/faucet_2d.gd" id="1_dv1o8"]
|
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lv57a"]
|
|
||||||
size = Vector2(404, 20)
|
|
||||||
|
|
||||||
[sub_resource type="FluidEffect2DSurfaceTensionAKINCI" id="FluidEffect2DSurfaceTensionAKINCI_dv1o8"]
|
|
||||||
fluid_tension_coefficient = 100.0
|
|
||||||
|
|
||||||
[node name="TestFluid" type="Node2D"]
|
|
||||||
|
|
||||||
[node name="StaticBody2D" type="StaticBody2D" parent="."]
|
|
||||||
position = Vector2(591, 545)
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
|
|
||||||
position = Vector2(29, 0)
|
|
||||||
shape = SubResource("RectangleShape2D_lv57a")
|
|
||||||
|
|
||||||
[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"]
|
|
||||||
position = Vector2(-191, -134)
|
|
||||||
rotation = 1.2401063
|
|
||||||
shape = SubResource("RectangleShape2D_lv57a")
|
|
||||||
|
|
||||||
[node name="CollisionShape2D3" type="CollisionShape2D" parent="StaticBody2D"]
|
|
||||||
position = Vector2(258, -172)
|
|
||||||
rotation = -1.3760309
|
|
||||||
shape = SubResource("RectangleShape2D_lv57a")
|
|
||||||
|
|
||||||
[node name="Fluid2D" type="Fluid2D" parent="."]
|
|
||||||
debug_draw = true
|
|
||||||
density = 1000.0
|
|
||||||
effects = Array[Resource]([SubResource("FluidEffect2DSurfaceTensionAKINCI_dv1o8")])
|
|
||||||
position = Vector2(653, -76)
|
|
||||||
script = ExtResource("1_dv1o8")
|
|
||||||
interval = 0.1
|
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="."]
|
|
||||||
position = Vector2(591, 323)
|
|
||||||
BIN
textures/Sprite-0001.aseprite
Normal file
BIN
textures/bag.png
Normal file
|
After Width: | Height: | Size: 266 B |
40
textures/bag.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://oh8y7lbiprs4"
|
||||||
|
path="res://.godot/imported/bag.png-1d3569746a0afa7a50020e78aeb3fcf6.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/bag.png"
|
||||||
|
dest_files=["res://.godot/imported/bag.png-1d3569746a0afa7a50020e78aeb3fcf6.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/desk.png
Normal file
|
After Width: | Height: | Size: 237 B |
40
textures/desk.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bahp733iqv2us"
|
||||||
|
path="res://.godot/imported/desk.png-569ac858ccfa866c549921982f2d651c.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/desk.png"
|
||||||
|
dest_files=["res://.godot/imported/desk.png-569ac858ccfa866c549921982f2d651c.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/docgun.png
Normal file
|
After Width: | Height: | Size: 451 B |
40
textures/docgun.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://kg37aadtiumw"
|
||||||
|
path="res://.godot/imported/docgun.png-7020161270f57741a5c61a0720a68af0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/docgun.png"
|
||||||
|
dest_files=["res://.godot/imported/docgun.png-7020161270f57741a5c61a0720a68af0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/door_large_horizontial.png
Normal file
|
After Width: | Height: | Size: 284 B |
40
textures/door_large_horizontial.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://iim42wat824h"
|
||||||
|
path="res://.godot/imported/door_large_horizontial.png-be3fcc0a643e3e0a242a5070b84d40a0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/door_large_horizontial.png"
|
||||||
|
dest_files=["res://.godot/imported/door_large_horizontial.png-be3fcc0a643e3e0a242a5070b84d40a0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/door_large_vertical.png
Normal file
|
After Width: | Height: | Size: 208 B |
40
textures/door_large_vertical.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b0c5hws6ki8p5"
|
||||||
|
path="res://.godot/imported/door_large_vertical.png-63c570800cfc026639fdfc69bb1882e3.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/door_large_vertical.png"
|
||||||
|
dest_files=["res://.godot/imported/door_large_vertical.png-63c570800cfc026639fdfc69bb1882e3.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/door_medium_horziontial.aseprite
Normal file
BIN
textures/door_medium_horziontial.png
Normal file
|
After Width: | Height: | Size: 779 B |
40
textures/door_medium_horziontial.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://djmlhid6f4xwi"
|
||||||
|
path="res://.godot/imported/door_medium_horziontial.png-60b5ecd0bd81d95adb1ce6c5aa367884.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/door_medium_horziontial.png"
|
||||||
|
dest_files=["res://.godot/imported/door_medium_horziontial.png-60b5ecd0bd81d95adb1ce6c5aa367884.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/locker.png
Normal file
|
After Width: | Height: | Size: 215 B |
40
textures/locker.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bgui3ranlk441"
|
||||||
|
path="res://.godot/imported/locker.png-291655332e65b890583d6d9343e4a2f5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/locker.png"
|
||||||
|
dest_files=["res://.godot/imported/locker.png-291655332e65b890583d6d9343e4a2f5.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/save_indicator.ase
Normal file
BIN
textures/save_indicator.png
Normal file
|
After Width: | Height: | Size: 224 B |
40
textures/save_indicator.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cwa4uu7hrw2l0"
|
||||||
|
path="res://.godot/imported/save_indicator.png-9ea36dce7f4f02849ef94f4ba75ec5ee.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/save_indicator.png"
|
||||||
|
dest_files=["res://.godot/imported/save_indicator.png-9ea36dce7f4f02849ef94f4ba75ec5ee.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
textures/smg.png
Normal file
|
After Width: | Height: | Size: 481 B |
40
textures/smg.png.import
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dk5ctkygv2n0i"
|
||||||
|
path="res://.godot/imported/smg.png-6e5b1b02de92e8359738de08c577925f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/smg.png"
|
||||||
|
dest_files=["res://.godot/imported/smg.png-6e5b1b02de92e8359738de08c577925f.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||