This commit is contained in:
Tomasz Boruc 2026-10-19 22:33:24 +02:00
parent 882d300485
commit af91c9023d
220 changed files with 3741 additions and 356 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://yaanw684l0dn"
path="res://.godot/imported/alien_research.png-c2267e9526abcbb04057176fbe27db67.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/alien_research.png"
dest_files=["res://.godot/imported/alien_research.png-c2267e9526abcbb04057176fbe27db67.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mer8ums08nx6"
path="res://.godot/imported/alien_research_hover.png-4de51699f2d0fe2e1497f484fc622833.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/alien_research_hover.png"
dest_files=["res://.godot/imported/alien_research_hover.png-4de51699f2d0fe2e1497f484fc622833.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bemu3i86nj77c"
path="res://.godot/imported/captain_ring_hud.png-35fde23680f1e2d0ff8ec4cbe1858433.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/captain_ring_hud.png"
dest_files=["res://.godot/imported/captain_ring_hud.png-35fde23680f1e2d0ff8ec4cbe1858433.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://q1m5u45ej5t2"
path="res://.godot/imported/captain_ring_panel.png-6c4e3257af40d53e47acf7e173bddb3a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/captain_ring_panel.png"
dest_files=["res://.godot/imported/captain_ring_panel.png-6c4e3257af40d53e47acf7e173bddb3a.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://jwmwu6gevn8j"
path="res://.godot/imported/cockpit_console_1280x720.png-4159f616d7b3d83d1955aedf8eedd32a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/cockpit_console_1280x720.png"
dest_files=["res://.godot/imported/cockpit_console_1280x720.png-4159f616d7b3d83d1955aedf8eedd32a.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c38plrli4ya25"
path="res://.godot/imported/cockpit_console_800x600.png-33aefb0a6fac6f21b0d22c38af5a3e7d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/cockpit_console_800x600.png"
dest_files=["res://.godot/imported/cockpit_console_800x600.png-33aefb0a6fac6f21b0d22c38af5a3e7d.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0bfcmpc4srcs"
path="res://.godot/imported/cockpit_console_960x540.png-d012e49e82ff0ca3dc072545b6ac39be.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/cockpit_console_960x540.png"
dest_files=["res://.godot/imported/cockpit_console_960x540.png-d012e49e82ff0ca3dc072545b6ac39be.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgj1s0l4v8j8i"
path="res://.godot/imported/cockpit_console_review.png-46f00c5f242ff57946c4788f05de278c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/cockpit_console_review.png"
dest_files=["res://.godot/imported/cockpit_console_review.png-46f00c5f242ff57946c4788f05de278c.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bj748ga2lns7g"
path="res://.godot/imported/cockpit_frame_review.png-6fb52f5726eaf410eb48ac602d5fe727.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/cockpit_frame_review.png"
dest_files=["res://.godot/imported/cockpit_frame_review.png-6fb52f5726eaf410eb48ac602d5fe727.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://04ftf2um02y8"
path="res://.godot/imported/compact_interface_freighter.png-63e4282514047b8948ebb564b5646054.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/compact_interface_freighter.png"
dest_files=["res://.godot/imported/compact_interface_freighter.png-63e4282514047b8948ebb564b5646054.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bci3mu5kg4351"
path="res://.godot/imported/compact_interface_hud.png-ea1968de19ced1671f28f4a62a6a4760.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/compact_interface_hud.png"
dest_files=["res://.godot/imported/compact_interface_hud.png-ea1968de19ced1671f28f4a62a6a4760.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cemfvsvogbbaq"
path="res://.godot/imported/compact_interface_research.png-0ef8d849edcfaca3c9c65149cd695b1f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/compact_interface_research.png"
dest_files=["res://.godot/imported/compact_interface_research.png-0ef8d849edcfaca3c9c65149cd695b1f.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dmt818jkr2vvl"
path="res://.godot/imported/compact_interface_skills.png-1a40c0e58cdcf846826c1e074eae7d87.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/compact_interface_skills.png"
dest_files=["res://.godot/imported/compact_interface_skills.png-1a40c0e58cdcf846826c1e074eae7d87.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dijaq6dht4obx"
path="res://.godot/imported/construction_layout_fixed.png-d148f2716c8d2dbd431b6294b6c5e3d1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/construction_layout_fixed.png"
dest_files=["res://.godot/imported/construction_layout_fixed.png-d148f2716c8d2dbd431b6294b6c5e3d1.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 956 KiB

After

Width:  |  Height:  |  Size: 854 KiB

BIN
artifacts/ship_hud.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0ucpvf7esi88"
path="res://.godot/imported/ship_hud.png-f68d075fba20b3f70ef34f129a94d9e2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/ship_hud.png"
dest_files=["res://.godot/imported/ship_hud.png-f68d075fba20b3f70ef34f129a94d9e2.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhwqqvn3wjn0l"
path="res://.godot/imported/ship_ring_panel.png-434b4e9ab6edb953c2f703fa5c7c90d2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/ship_ring_panel.png"
dest_files=["res://.godot/imported/ship_ring_panel.png-434b4e9ab6edb953c2f703fa5c7c90d2.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8u0n52jkd8ft"
path="res://.godot/imported/ship_statistics_parameters.png-33c84b9c0fb769b343bfb66d8987e370.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/ship_statistics_parameters.png"
dest_files=["res://.godot/imported/ship_statistics_parameters.png-33c84b9c0fb769b343bfb66d8987e370.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://caq1xtutwj5sj"
path="res://.godot/imported/ship_statistics_systems.png-d708e0872dfc181522107a8c5a97a3a2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/ship_statistics_systems.png"
dest_files=["res://.godot/imported/ship_statistics_systems.png-d708e0872dfc181522107a8c5a97a3a2.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8glniut4pkvv"
path="res://.godot/imported/ship_statistics_weapons.png-1cadf69d9d627a4573b6e7c8826b0144.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/ship_statistics_weapons.png"
dest_files=["res://.godot/imported/ship_statistics_weapons.png-1cadf69d9d627a4573b6e7c8826b0144.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqnftyve0ob42"
path="res://.godot/imported/ship_status_frame_review.png-b310039c865b152de525bcf598d930e9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/ship_status_frame_review.png"
dest_files=["res://.godot/imported/ship_status_frame_review.png-b310039c865b152de525bcf598d930e9.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://nxg6odgt1nct"
path="res://.godot/imported/weather_condition_blizzard.png-5a2e079ff8ef2f240d3fd9f382e0bb3c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_blizzard.png"
dest_files=["res://.godot/imported/weather_condition_blizzard.png-5a2e079ff8ef2f240d3fd9f382e0bb3c.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://po6k1mi1l88v"
path="res://.godot/imported/weather_condition_clear.png-442ce1ce92b5588777307fba12c6f7a4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_clear.png"
dest_files=["res://.godot/imported/weather_condition_clear.png-442ce1ce92b5588777307fba12c6f7a4.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p6413fvq1165"
path="res://.godot/imported/weather_condition_cloudy.png-09ef77e56bff84e3873fefc1fcb536d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_cloudy.png"
dest_files=["res://.godot/imported/weather_condition_cloudy.png-09ef77e56bff84e3873fefc1fcb536d5.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://crtykmxtfw0ls"
path="res://.godot/imported/weather_condition_dust_storm.png-cd593b6234ba283f042805ff46e91dbb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_dust_storm.png"
dest_files=["res://.godot/imported/weather_condition_dust_storm.png-cd593b6234ba283f042805ff46e91dbb.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://iuxgw4bqk8kh"
path="res://.godot/imported/weather_condition_fog.png-0c94c5dc380f0056245c595c7217825c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_fog.png"
dest_files=["res://.godot/imported/weather_condition_fog.png-0c94c5dc380f0056245c595c7217825c.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://byljypcneg24r"
path="res://.godot/imported/weather_condition_overcast.png-a64472efc3e7dc5213e96d4f03f6b641.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_overcast.png"
dest_files=["res://.godot/imported/weather_condition_overcast.png-a64472efc3e7dc5213e96d4f03f6b641.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://brcug5gbejyy0"
path="res://.godot/imported/weather_condition_rain.png-0153c99b79715b7df54f07b0bc60996b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_rain.png"
dest_files=["res://.godot/imported/weather_condition_rain.png-0153c99b79715b7df54f07b0bc60996b.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dic4rrua8i7pm"
path="res://.godot/imported/weather_condition_snow.png-2e06d06d4528d22977c549398ed2c082.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_snow.png"
dest_files=["res://.godot/imported/weather_condition_snow.png-2e06d06d4528d22977c549398ed2c082.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bma7pwvovri0e"
path="res://.godot/imported/weather_condition_storm.png-d042e690c08fae4b3b638d7439ce1349.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_condition_storm.png"
dest_files=["res://.godot/imported/weather_condition_storm.png-d042e690c08fae4b3b638d7439ce1349.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqwwaitp40aoo"
path="res://.godot/imported/weather_conditions_review.png-da82db891609dafef041eb57dfebbbe0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://artifacts/weather_conditions_review.png"
dest_files=["res://.godot/imported/weather_conditions_review.png-da82db891609dafef041eb57dfebbbe0.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

View File

@ -0,0 +1,12 @@
Research icons
==============
Generated with the built-in image_gen tool; transparent PNG assets.
Shared prompt:
Use case: stylized-concept. Asset type: a single polished sci-fi research skill icon for a compact spaceship game UI. Subject: [subject]. Painterly realistic 3D game inventory illustration, crisp strong silhouette readable at 48 pixels. Centered object fills 75 percent of square canvas, isolated on a completely transparent background. Industrial worn metal, subtle edge highlights, elegant restrained glow. No text, no letters, no border, no card, no scenery.
Subjects:
- general.png: a luminous amber alien DNA helix suspended within a scientific scanning ring
- weapons.png: a compact alien plasma cannon, dark gunmetal with restrained copper orange energy core
- hull.png: three overlapping angular alien spacecraft armor plates, brushed dark titanium with sage green illuminated seams
- shields.png: an alien energy shield emitter, a small metallic core projecting a translucent icy cyan shield

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b1b35q555n78k"
path="res://.godot/imported/general.png-9899f4cbd8b1d7fd9d9e5c4dc5af5a1d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/freighter/research/general.png"
dest_files=["res://.godot/imported/general.png-9899f4cbd8b1d7fd9d9e5c4dc5af5a1d.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://duttf5uohucra"
path="res://.godot/imported/hull.png-be89bd87a1ff670817920fd7b1abca3e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/freighter/research/hull.png"
dest_files=["res://.godot/imported/hull.png-be89bd87a1ff670817920fd7b1abca3e.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0h62slv8erwu"
path="res://.godot/imported/shields.png-5eef00a7dbe9cbe3e3bf615da34e9c38.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/freighter/research/shields.png"
dest_files=["res://.godot/imported/shields.png-5eef00a7dbe9cbe3e3bf615da34e9c38.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://orumcop8k4v8"
path="res://.godot/imported/weapons.png-635208432e6f1db62ed8924b096f700f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/freighter/research/weapons.png"
dest_files=["res://.godot/imported/weapons.png-635208432e6f1db62ed8924b096f700f.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

View File

@ -0,0 +1,4 @@
Generated asset: ship_ornament.png
Tool: built-in image_gen, transparent background.
Prompt:
Use case: stylized-concept. Asset type: production game UI frame texture. A single elegant horizontal rectangular spacecraft HUD frame, aspect ratio about 3:1, front view perfectly flat and axis-aligned. Thin dark gunmetal and brushed titanium rim, precision machined beveled edges, restrained teal luminous seams, tiny warm brass corner clamps. Outer frame occupies nearly entire canvas, generous completely empty transparent rectangular opening covering 85 percent of the interior. Transparent outside too. Uniform narrow border, no central crossbars, no panels inside the opening, no contents. Sophisticated industrial spaceship cockpit aesthetic, clean and readable at small UI scale. No text, no letters, no numbers, no icons, no scenery, no perspective, no drop shadow outside frame. Real transparent alpha. It will be stretched with nine-patch corners to surround live text and progress bars.

View File

@ -0,0 +1 @@
Use case: stylized-concept. Reference image: existing spaceship HUD asset, match its circular bezel and metal style exactly. Generate a companion CAPTAIN HUD asset with NO TEXT. Transparent production PNG, flat orthographic game UI. One circular portrait bezel on the LEFT, same brushed silver gunmetal, cyan light strips and tiny brass fasteners as reference. From its RIGHT side extends ONE horizontal rectangular information frame with empty fully transparent interior, replacing the three separate bars of the reference. Overall aspect ratio 3.4:1. Left circle diameter about 90 percent of total image height, circular opening clear and empty. Circle center x15 percent y50 percent. Rectangular information frame extends from x26 percent to x97 percent, top at y13 percent bottom y87 percent; its thin metallic rim physically joined to circle, no vertical rail through circular opening. Empty rectangle interior to hold runtime level, credits and XP. Restrained elegant fine trim, rounded beveled corners, matching the reference circle faithfully. Fully transparent interior and exterior, small outer margins. No portrait, no text, no numbers, no labels, no icons, no bars, no solid panel fill, no background, no perspective. One single connected asset, usable at 244x72 pixels.

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cfgrqurr1lobg"
path="res://.godot/imported/captain_ring_frame.png-e4969ca664ff0ddff79942c085a55717.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ui/frames/captain_ring_frame.png"
dest_files=["res://.godot/imported/captain_ring_frame.png-e4969ca664ff0ddff79942c085a55717.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

View File

@ -0,0 +1 @@
Use case: stylized-concept. Production transparent PNG game HUD asset. A REAL SPACESHIP COCKPIT INSTRUMENT CONSOLE viewed straight on, orthographic front elevation, wide low dashboard silhouette aspect ratio 6:1, designed for an 850x144 pixel bottom HUD. This is NOT a decorative picture frame. Substantial functional matte charcoal titanium console body, beveled raised end pods, recessed instrument bays, screws, narrow vent grilles, small physical amber and cool white indicator lamps and tactile switches along the very bottom lip. Restrained worn industrial spacecraft realism, clean legible high quality hard-surface rendering, subtle cool blue edge lighting, no ornate brass or medieval trim. THREE clearly separated large EMPTY rectangular display openings across the dashboard: left bay from x4%-26%, center bay x29%-68%, right bay x72%-96%; all bays from y14%-83%. The screen openings must be fully transparent, as must the entire exterior around console silhouette. Keep structural separators narrow and usable openings broad. Thin top brow and bottom instrument lip with small buttons; do not obstruct openings with decorative objects. Center bay flat and wide, right and left console shoulders slightly raised. Full console visible and centered, tiny transparent margins; if canvas is taller leave transparent padding above and below the wide console. NO text, NO numbers, NO symbols, NO graphs, NO filled screens, NO holograms, NO spaceship scene, NO steering wheel, NO portrait circles, NO perspective. One polished functional cockpit dashboard sprite, all runtime information will be drawn later inside transparent display openings.

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ub0pj5k7o4c8"
path="res://.godot/imported/cockpit_console.png-dbfc4ecba01fbaf2005767e07de7627a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ui/frames/cockpit_console.png"
dest_files=["res://.godot/imported/cockpit_console.png-dbfc4ecba01fbaf2005767e07de7627a.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

View File

@ -0,0 +1 @@
Use case: stylized-concept. Reference image is the existing captain HUD frame: match its brushed gunmetal/silver material, tiny brass fasteners and thin cyan illuminated trim. Create a production transparent PNG asset for the BOTTOM spaceship cockpit HUD in the same space RPG. ONE very wide low horizontal metallic border frame, outline aspect ratio 7:1, intended to display at 850x120 pixels. It may occupy the middle band of a wider canvas with transparent padding above and below. Straight horizontal top and bottom rails, clipped beveled outer corners, small layered mechanical brackets near both ends, tiny restrained brass rivets, subtle cyan light strips. Border thickness only 4 percent of frame height on straight rails; slightly larger corners but mostly usable empty interior. Symmetrical, flat orthographic front view, crisp professional game UI sprite. ALL interior must be empty and fully transparent, ALL exterior fully transparent. No opaque panel fill, no screens, no text, no numbers, no buttons, no bars, no icons, no circles or portraits, no mockup scene, no shadows. One single continuous wide frame, not multiple frames. Elegant thin detailing that remains legible at small size.

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dyc8u3xrjsyq0"
path="res://.godot/imported/cockpit_frame.png-8481b8724221896ba87e5cab3660a708.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ui/frames/cockpit_frame.png"
dest_files=["res://.godot/imported/cockpit_frame.png-8481b8724221896ba87e5cab3660a708.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c48q3lbcqdj5w"
path="res://.godot/imported/ship_ornament.png-f5630c8e09c9fea8d8da68371c867e67.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ui/frames/ship_ornament.png"
dest_files=["res://.godot/imported/ship_ornament.png-f5630c8e09c9fea8d8da68371c867e67.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

View File

@ -0,0 +1 @@
Use case: stylized-concept. Production game HUD sprite, transparent PNG. One compact spaceship status instrument: a circular portrait bezel on the RIGHT, and THREE separate slender horizontal empty status-bar housings extending from the circle to the LEFT, physically joined to its left edge. No outer rectangular frame. Flat orthographic front view, no perspective. Overall silhouette 3.1:1 width to height. Circle outer diameter 90 percent of total height, centered at x84 percent y50 percent; its inner opening fully transparent. Three bars extend from x3 percent to x74 percent at y25,50,75 percent, each housing only 9 percent of total height; dark thin metal rail borders, empty transparent interiors, generous transparent gaps between bars for runtime captions. Elegant gunmetal, brushed silver, restrained cyan illuminated lines, tiny antique brass fasteners, detailed but legible at 221x72 pixels. Rounded bar left ends, articulated metal joins into ring. Circle must remain clearly circular. Whole image exterior and all openings fully transparent. No text, no letters, no numbers, no spaceship, no icons, no filled colored meters, no solid background, no rectangular panel. One single connected game interface component, centered with small transparent margin.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p5lst48is8ab"
path="res://.godot/imported/ship_ring_bars.png-6b2a16d61f0a9f468696422dd565135e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ui/frames/ship_ring_bars.png"
dest_files=["res://.godot/imported/ship_ring_bars.png-6b2a16d61f0a9f468696422dd565135e.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

View File

@ -0,0 +1 @@
Use case: stylized-concept. Asset type: production transparent PNG frame for a compact spaceship status HUD in a dark space RPG. Create ONE horizontal rectangular frame, aspect ratio 3:1, straight-on flat orthographic UI asset, centered filling canvas with only a tiny outer transparent margin. Extremely thin refined gunmetal and aged silver rim with restrained pale cyan illuminated seams and tiny brass corner fittings. Beveled angular corners, subtle mechanical detailing, polished professional space game UI, crisp readable silhouette at 221 by 72 pixels. All interior area must be fully transparent and empty, as must the exterior. Border thickness about 3 percent of image height, corner fittings no larger than 10 percent of image height. Simple uninterrupted straight top and bottom rails, no large central ornaments. No text, no letters, no numbers, no bars, no ship, no background, no opaque glass, no drop shadow, no extra icons. This is a usable frame asset, not a mockup.

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dk24h1mt14ljs"
path="res://.godot/imported/ship_status_frame.png-2014504a9e60843ef2215bafbeaa6fdb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ui/frames/ship_status_frame.png"
dest_files=["res://.godot/imported/ship_status_frame.png-2014504a9e60843ef2215bafbeaa6fdb.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

View File

@ -21,15 +21,15 @@ bg_color = Color(0.055, 0.11, 0.16, 1)
bg_color = Color(0.25, 0.68, 0.85, 1)
[node name="CaptainPanel" type="PanelContainer"]
custom_minimum_size = Vector2(260, 210)
custom_minimum_size = Vector2(317.2, 93.6)
theme_override_styles/panel = SubResource("PanelStyle")
script = ExtResource("1_panel")
[node name="Contents" type="VBoxContainer" parent="."]
[node name="Contents" type="Control" parent="."]
layout_mode = 2
theme_override_constants/separation = 4
[node name="Header" type="HBoxContainer" parent="Contents"]
[node name="Header" type="Control" parent="Contents"]
layout_mode = 2
[node name="Title" type="Label" parent="Contents/Header"]
@ -56,7 +56,7 @@ theme_override_styles/background = SubResource("XPBackground")
theme_override_styles/fill = SubResource("XPFill")
show_percentage = false
[node name="Wallet" type="HBoxContainer" parent="Contents"]
[node name="Wallet" type="Control" parent="Contents"]
layout_mode = 2
[node name="Credits" type="Label" parent="Contents/Wallet"]

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" path="res://scripts/ui/planet_services_menu.gd" id="1_services"]
[sub_resource type="StyleBoxFlat" id="PanelStyle"]
bg_color = Color(0.025, 0.045, 0.065, 0.94)
bg_color = Color(0.025, 0.045, 0.065, 0.48)
border_width_left = 1
border_width_top = 1
border_width_right = 1

View File

@ -4,7 +4,7 @@
[ext_resource type="PackedScene" path="res://scenes/ui/inventory_slot_view.tscn" id="2_slot"]
[sub_resource type="StyleBoxFlat" id="EquipmentPanelStyle"]
bg_color = Color(0.018, 0.028, 0.043, 0.96)
bg_color = Color(0.018, 0.028, 0.043, 0.48)
border_width_left = 1
border_width_top = 1
border_width_right = 1

View File

@ -3,7 +3,7 @@
[ext_resource type="Script" path="res://scripts/ui/ship_inventory_panel.gd" id="1_inventory"]
[sub_resource type="StyleBoxFlat" id="InventoryStyle"]
bg_color = Color(0.018, 0.045, 0.085, 0.98)
bg_color = Color(0.018, 0.045, 0.085, 0.48)
border_width_left = 1
border_width_top = 1
border_width_right = 1

View File

@ -10,7 +10,7 @@ const DATA := {
"lucky": {"name": "Farciarz", "active": false, "values": [0.05, 0.10, 0.25], "color": "e8c76f"},
"explorer": {"name": "Eksplorator", "active": false, "values": [1, 3, 6], "color": "76d9cc"},
"business_shark": {"name": "Rekin biznesu", "active": false, "values": [0.10, 0.30, 0.60], "color": "efb568"},
"reactor_overload": {"name": "Przeciążenie reaktora", "active": true, "values": [0.20, 0.50, 1.00], "color": "63d9f5"},
"reactor_overload": {"name": "Przeciążenie reaktora", "active": true, "values": [0.28, 0.70, 1.40], "color": "63d9f5"},
"tactical_maneuver": {"name": "Manewr taktyczny", "active": true, "values": [0.30, 0.60, 1.00], "color": "b9a0ef"},
"efficient_magazine": {"name": "Oszczędny magazynek", "active": false, "values": [0.10, 0.20, 0.50], "color": "a9d69a"},
"miner": {"name": "Górnik", "active": false, "values": [3, 6, 10], "color": "e5ac76"},

View File

@ -21,7 +21,7 @@ static func enemy_profile(level: int, seed_value: int) -> Dictionary:
var rng := RandomNumberGenerator.new()
rng.seed = seed_value
var weights := Vector3(rng.randf_range(0.1, 1.0), rng.randf_range(0.1, 1.0), rng.randf_range(0.1, 1.0))
var total := lerpf(2.0, 60.0, pow(float(clampi(level, 1, 1000) - 1) / 999.0, 1.25))
var total := preload("res://scripts/levels/level_balance.gd").enemy_absorption_total(level)
return {"kind": rng.randi_range(0, 4), "absorption": weights * total / (weights.x + weights.y + weights.z)}
static func describe(values: Vector3) -> String:

View File

@ -44,7 +44,7 @@ func get_health_ratio() -> float:
return clampf(enemy.hull / maxf(enemy.max_hull, 0.001), 0.0, 1.0)
func _draw() -> void:
if not is_instance_valid(enemy) or enemy.hull <= 0.0:
if not is_instance_valid(enemy) or enemy.hull <= 0.0 or not GameState.captain.expedition.alien_skills.get("general", false):
return
var width := 72.0 if enemy.loot_tier == 2 else (56.0 if enemy.loot_tier == 1 else 44.0)
var background := Rect2(-width * 0.5, -3.0, width, 6.0)

View File

@ -43,6 +43,7 @@ var _slow_remaining := 0.0
var _combat_target: Node2D
var virus_controlled := false
var _virus_infection_attempted := false
var _research_player_hit := false
var _reward_claimed := false
func roll_virus_infection() -> bool:
@ -101,7 +102,7 @@ func _ready() -> void:
func apply_level_settings(level: int, tier: int) -> void:
loot_tier = tier
$Sprite2D.modulate = get_tier_tint()
var power := LEVEL_BALANCE.power_scale(level)
var power := LEVEL_BALANCE.enemy_stat_scale(level)
var combat_multiplier := 2.0 if tier == 2 else 1.25
var boss_multiplier := 2.0 if tier == 2 else 1.0
var hull_multiplier := 4.0 if tier == 2 else (2.0 if tier == 1 else 1.0)
@ -114,12 +115,12 @@ func apply_level_settings(level: int, tier: int) -> void:
weapon_kind = int(profile["kind"])
absorption = profile["absorption"]
weapon_damage = 8.0 * power * damage_bonus * combat_multiplier
approach_speed = 62.0 * (1.0 + 0.0005 * (clampi(level, 1, 1000) - 1)) * boss_multiplier
approach_speed = 62.0 * (1.0 + 0.0005 * (clampi(level, 1, LEVEL_BALANCE.MAX_LEVEL) - 1)) * boss_multiplier
approach_acceleration = 85.0 * boss_multiplier
turn_speed = 1.8 * boss_multiplier
activation_range = 760.0 * boss_multiplier
weapon_range = 680.0 * boss_multiplier
weapon_cooldown = maxf(0.55, 1.5 / (1.0 + 0.001 * (clampi(level, 1, 1000) - 1))) / boss_multiplier
weapon_range = 680.0 * boss_multiplier * (0.5 if weapon_kind == ItemDefinition.WeaponKind.GAMMA else 1.0)
weapon_cooldown = maxf(0.55, 1.5 / (1.0 + 0.001 * (clampi(level, 1, LEVEL_BALANCE.MAX_LEVEL) - 1))) / boss_multiplier
if tier == 2:
# Ease the first encounter, returning smoothly to standard bosses at level 6.
var intro := clampf(float(level - 1) / 5.0, 0.0, 1.0)
@ -130,6 +131,16 @@ func apply_level_settings(level: int, tier: int) -> void:
weapon_damage *= lerpf(0.5, 1.0, intro)
weapon_cooldown *= lerpf(1.25, 1.0, intro)
approach_speed *= lerpf(0.8, 1.0, intro)
if tier == 2:
# Independent multipliers preserve the existing intro and shield/hull ratio changes.
max_hull *= LEVEL_BALANCE.BOSS_HULL_MULTIPLIER
hull = max_hull
max_shields *= LEVEL_BALANCE.BOSS_SHIELD_MULTIPLIER
shields = max_shields
weapon_damage *= LEVEL_BALANCE.BOSS_DAMAGE_MULTIPLIER
if level == 1:
weapon_damage *= LEVEL_BALANCE.FIRST_BOSS_DAMAGE_MULTIPLIER
weapon_cooldown *= LEVEL_BALANCE.FIRST_BOSS_FIRE_INTERVAL_MULTIPLIER
$CollisionShape2D.scale = Vector2.ONE * boss_multiplier
if is_instance_valid(_shield_visual):
_shield_visual.scale = Vector2.ONE * get_visual_size() / 64.0
@ -152,7 +163,7 @@ func get_visual_size() -> float:
return 112.0 if loot_tier == 2 else (68.0 if loot_tier == 1 else 56.0)
func regenerate_defenses(delta: float) -> void:
if hull <= 0.0 or is_queued_for_deletion():
if loot_tier == 2 or hull <= 0.0 or is_queued_for_deletion():
return
hull = minf(max_hull, hull + max_hull * 0.01 * delta)
shields = minf(max_shields, shields + max_shields * 0.01 * delta)
@ -312,7 +323,7 @@ func _fire_plasma(direction: Vector2) -> void:
projectile.collision_mask = shot_mask
projectile.missile_homing = false
var speed := 430.0 if weapon_kind == ItemDefinition.WeaponKind.GAMMA else (950.0 if weapon_kind == ItemDefinition.WeaponKind.MACHINE_GUN else 600.0)
projectile.configure(muzzle, direction, weapon_kind, speed, weapon_damage, weapon_range)
projectile.configure(muzzle, direction, weapon_kind, speed, get_shot_damage(), weapon_range)
get_parent().add_child(projectile)
WEAPON_AUDIO_SCRIPT.play(get_parent(), global_position, weapon_kind, -4.0)
@ -320,7 +331,9 @@ func take_weapon_hit(amount: float, critical: bool, damage_type: int = DamageTyp
if is_queued_for_deletion() or hull <= 0.0:
return
var before := hull + shields
_research_player_hit = true
take_damage(amount, critical, damage_type)
_research_player_hit = false
if is_instance_valid(_player):
_player.call("restore_shields_from_damage", maxf(0.0, before - hull - shields))
@ -328,9 +341,16 @@ func take_damage(amount: float, critical: bool = false, damage_type: int = Damag
if is_queued_for_deletion() or hull <= 0.0:
return
var actual := maxf(0.0, amount) * (1.0 if bypass_absorption else 1.0 - absorption[damage_type] / 100.0)
var shield_damage := minf(shields, actual)
var research := preload("res://scripts/planets/alien_research.gd")
var progress: Resource = GameState.captain.expedition
var shield_multiplier := 1.0 + (research.bonus(progress, "shields") if _research_player_hit else 0.0)
var hull_multiplier := 1.0 + (research.bonus(progress, "hull") if _research_player_hit else 0.0)
var shield_damage := minf(shields, actual * shield_multiplier)
var remaining := maxf(0.0, actual - shield_damage / shield_multiplier)
shields -= shield_damage
hull = maxf(0.0, hull - actual + shield_damage)
var hull_damage := minf(hull, remaining * hull_multiplier)
hull = maxf(0.0, hull - hull_damage)
actual = shield_damage + hull_damage
if is_instance_valid(_shield_visual):
_shield_visual.set_shield_values(shields, max_shields)
if shield_damage > 0.0:
@ -358,7 +378,7 @@ func _laser_aim_direction(direction: Vector2) -> Vector2:
return direction.rotated(randf_range(-0.02, 0.02))
func get_shot_damage() -> float:
return weapon_damage * (LASER_DAMAGE_MULTIPLIER if weapon_kind == ItemDefinition.WeaponKind.LASER else 1.0)
return weapon_damage * (LASER_DAMAGE_MULTIPLIER if weapon_kind == ItemDefinition.WeaponKind.LASER else 1.0) * (1.0 - preload("res://scripts/planets/alien_research.gd").bonus(GameState.captain.expedition, "weapons"))
func get_weapon_dps() -> float:
var interval := get_fire_interval()

View File

@ -33,6 +33,10 @@ var _debug_item_status: Label
var _captain_panel: PanelContainer
var _cockpit: Control
var _captain_skills_ui: CanvasLayer
var _system_badge: PanelContainer
var _system_title: Label
var _system_mode: Label
var _ship_statistics: PanelContainer
func _create_navigation() -> void:
var navigation := HBoxContainer.new()
@ -85,6 +89,7 @@ func _ready() -> void:
$HUDRoot.add_child(_window_manager)
_window_manager.connect("interaction_started", player.get_node("WeaponController").call.bind("block_ui_mouse_input"))
_create_sidebar()
_create_ship_statistics()
_inventory_clip = Control.new()
_inventory_clip.name = "InventoryDrawer"
_inventory_clip.clip_contents = false
@ -115,8 +120,9 @@ func _create_sidebar() -> void:
_captain_panel = $HUDRoot/CaptainPanel
_captain_panel.set_anchors_and_offsets_preset(Control.PRESET_TOP_LEFT)
_captain_panel.position = Vector2(12, 12)
_captain_panel.size = Vector2(244, _captain_panel.get_combined_minimum_size().y)
_captain_panel.size = _captain_panel.get_combined_minimum_size()
_captain_panel.resized.connect(_layout_debug)
_create_system_badge()
var captain_gear := PanelContainer.new()
captain_gear.name = "CaptainEquipment"
captain_gear.set_script(preload("res://scripts/ui/captain_equipment_panel.gd"))
@ -140,6 +146,14 @@ func _create_sidebar() -> void:
preload("res://scripts/ui/hud_button_style.gd").apply(_debug_item_button, Color("a9ef83"))
_debug_item_button.pressed.connect(_give_debug_item)
_debug_actions.add_child(_debug_item_button)
var resources_button := Button.new()
resources_button.name = "AddResources"
resources_button.text = "Dodaj surowce"
resources_button.tooltip_text = "+100 każdego surowca kosmicznego i planetarnego, +100 próbek i +100 części"
resources_button.custom_minimum_size.y = 36
preload("res://scripts/ui/hud_button_style.gd").apply(resources_button, Color("79cba8"))
resources_button.pressed.connect(_give_debug_resources)
_debug_actions.add_child(resources_button)
var ammunition_button := Button.new()
ammunition_button.name = "AddAmmunition"
ammunition_button.text = "Dodaj amunicję"
@ -166,7 +180,7 @@ func _create_sidebar() -> void:
_sidebar = PanelContainer.new()
_sidebar.name = "ShipDrawer"
var style := StyleBoxFlat.new()
style.bg_color = Color(0.025, 0.042, 0.064, 1.0)
style.bg_color = Color(0.025, 0.042, 0.064, 0.48)
style.border_color = Color("376779")
style.set_border_width_all(1)
style.set_corner_radius_all(8)
@ -197,10 +211,10 @@ func _create_sidebar() -> void:
preload("res://scripts/ui/hud_button_style.gd").apply(inventory_button, Color("b9a0ef"))
$HUDRoot.add_child(_sidebar_toggle)
_sidebar_toggle.set_anchors_and_offsets_preset(Control.PRESET_TOP_RIGHT)
_sidebar_toggle.offset_left = -352
_sidebar_toggle.offset_left = -233
_sidebar_toggle.offset_right = -12
_sidebar_toggle.offset_top = 12
_sidebar_toggle.offset_bottom = 122
_sidebar_toggle.offset_bottom = 83.5
_sidebar_toggle.pressed.connect(_toggle_sidebar)
_cockpit = Control.new()
_cockpit.name = "Cockpit"
@ -280,9 +294,10 @@ func _layout_sidebar() -> void:
var panel_scale := minf(EQUIPMENT_UI_SCALE, available_height / content_height)
_sidebar.scale = Vector2.ONE * panel_scale
_sidebar.size = Vector2(maxf(SIDEBAR_WIDTH, _sidebar.get_combined_minimum_size().x), content_height)
_cockpit.scale = Vector2.ONE * 0.85
_cockpit.size = Vector2(minf(850.0, ($HUDRoot.size.x - 24) / 0.85), 120)
_cockpit.position = Vector2(($HUDRoot.size.x - _cockpit.size.x * 0.85) * 0.5, $HUDRoot.size.y - _cockpit.size.y * 0.85 - 12)
var cockpit_scale := minf(0.85, ($HUDRoot.size.x - 24.0) / 850.0)
_cockpit.scale = Vector2.ONE * cockpit_scale
_cockpit.size = Vector2(850, 144)
_cockpit.position = Vector2(($HUDRoot.size.x - 850.0 * cockpit_scale) * 0.5, $HUDRoot.size.y - 144.0 * cockpit_scale - 12)
if _ability_bar != null:
var abilities := _ability_bar.get_parent() as Control
abilities.set_anchors_and_offsets_preset(Control.PRESET_TOP_LEFT)
@ -352,6 +367,7 @@ func _update_energy_bank_button() -> void:
func _process(_delta: float) -> void:
_update_energy_bank_button()
_update_system_badge()
_layout_inventory()
_update_ability_bar()
_layout_passive_panels()
@ -363,7 +379,7 @@ func _process(_delta: float) -> void:
_debug_item_button.disabled = inventory.get_cargo_used() >= inventory.get_cargo_capacity()
_debug_item_button.tooltip_text = "Magazyn jest pełny — zwolnij miejsce." if _debug_item_button.disabled else "Losuje przedmiot i addony dla poziomu aktualnego układu."
var game := get_parent()
debug_info.text = """POZIOM UKŁADU: %d
debug_info.text = """POZIOM UKŁADU: %d / 120 · %s
WROGOWIE: %d
PRĘDKOŚĆ: %.1f px/s
@ -373,6 +389,7 @@ Tarcze: %.1f pkt/s
%s""".replace("\r", "") % [
GameState.system_level,
"HARD" if preload("res://scripts/levels/level_balance.gd").is_hard(GameState.system_level) else "NORMALNY",
int(game.call("get_remaining_enemies")),
player.velocity.length(),
float(player.call("get_energy_regeneration")),
@ -389,6 +406,16 @@ func _toggle_debug() -> void:
_update_debug_toggle()
_layout_debug()
func _give_debug_resources() -> void:
var captain: Resource = GameState.captain
for material in preload("res://scripts/planets/planet_rewards.gd").MATERIAL_KEYS:
if material == "parts": continue
captain.minerals[material] = int(captain.minerals.get(material, 0)) + 100
captain.parts += 100
captain.expedition.analysis_samples += 100
captain.expedition.emit_changed()
captain.emit_changed()
func _give_debug_ammunition() -> void:
var inventory := player.get_node("ShipInventory") as ShipInventory
inventory.ammunition += 10
@ -574,3 +601,48 @@ func _refresh_passive_skills() -> void:
_passive_captain_panel.visible = _passive_skills.get_child_count() > 0
_layout_passive_panels.call_deferred()
_layout_debug.call_deferred()
func _create_system_badge() -> void:
var ui := preload("res://scripts/planets/freighter_menu.gd")
_system_badge = PanelContainer.new()
_system_badge.name = "SystemIndicator"
_system_badge.custom_minimum_size.x = 86
ui.style(_system_badge, 6, 0.30)
_system_badge.mouse_filter = Control.MOUSE_FILTER_IGNORE
$HUDRoot.add_child(_system_badge)
var stack := VBoxContainer.new()
stack.mouse_filter = Control.MOUSE_FILTER_IGNORE
stack.add_theme_constant_override("separation", 0)
_system_badge.add_child(stack)
_system_title = ui.label(stack, "", 13, ui.GOLD)
_system_mode = ui.label(stack, "", 11, ui.MUTED)
_system_title.autowrap_mode = TextServer.AUTOWRAP_OFF
_system_mode.autowrap_mode = TextServer.AUTOWRAP_OFF
_system_mode.add_theme_font_size_override("font_size", 8)
_system_title.mouse_filter = Control.MOUSE_FILTER_IGNORE
_system_mode.mouse_filter = Control.MOUSE_FILTER_IGNORE
_update_system_badge()
func _update_system_badge() -> void:
if not is_instance_valid(_system_badge): return
_system_badge.position = Vector2(_captain_panel.position.x + _captain_panel.size.x + 10, _captain_panel.position.y)
_system_title.text = "System %d" % GameState.system_level
_system_mode.text = "HARD" if GameState.system_level > 60 else "NORMALNY"
_system_mode.add_theme_color_override("font_color", Color("e88972") if GameState.system_level > 60 else Color("88a7ae"))
func _create_ship_statistics() -> void:
_ship_statistics = preload("res://scripts/ui/ship_statistics.gd").new()
_ship_statistics.player = player
_ship_statistics.inventory = player.get_node("ShipInventory")
$HUDRoot.add_child(_ship_statistics)
_window_manager.register_window(_ship_statistics, _ship_statistics, _ship_statistics._header)
var contents := _sidebar.get_node("Scroll/Contents/ShipEquipmentPanel/Contents")
var button := Button.new()
button.name = "StatisticsButton"
button.text = "Statystyki"
button.custom_minimum_size.y = 36
button.tooltip_text = "Parametry statku, uzbrojenie, pancerz i systemy"
preload("res://scripts/ui/hud_button_style.gd").apply(button, Color("83c7e6"))
contents.add_child(button)
contents.move_child(button, inventory_button.get_index() + 1)
button.pressed.connect(_ship_statistics.open)

View File

@ -7,15 +7,16 @@ signal ammunition_changed
const RECIPES := preload("res://scripts/items/crafting_recipes.gd")
const CARGO_SIZE := 20
const CARGO_ROW_SIZE := 5
const CARGO_ROW_COUNT := CARGO_SIZE / CARGO_ROW_SIZE
var unlocked_cargo_rows := 1
var unlocked_cargo_slots := CARGO_ROW_SIZE
const WEAPON_SLOT_COUNT := 3
const STARTING_MISSILE_AMMUNITION := 2
const MISSILE_BUY_BASE_COST := 30
const MISSILE_DEFINITIONS := [preload("res://resources/items/missile_launcher.tres"), preload("res://resources/items/unguided_missile.tres")]
const MODULE_SLOT_COUNT := 5
const EXTENSION_SLOT_COUNT := 5
const SLOT_UNLOCK_IRON_COST := 10
const CARGO_SLOT_COST := {"iron": 100, "aluminium": 50}
const WEAPON_UNLOCK_COSTS := [100, 500]
const EXTENSION_UNLOCK_BASE_COST := 40
var unlocked_weapon_slots := 1
var unlocked_extension_slots := 1
const MODULE_CATEGORIES := [ItemDefinition.Category.SHIELD, ItemDefinition.Category.ARMOR, ItemDefinition.Category.ENGINE, ItemDefinition.Category.REACTOR, ItemDefinition.Category.COMPUTER]
@ -49,7 +50,7 @@ func _ready() -> void:
if GameState.restart_inventory.is_empty():
_add_starter_items()
else:
unlocked_cargo_rows = clampi(int(GameState.restart_inventory.get("unlocked_cargo_rows",1)),1,CARGO_ROW_COUNT)
unlocked_cargo_slots = clampi(int(GameState.restart_inventory.get("unlocked_cargo_slots", int(GameState.restart_inventory.get("unlocked_cargo_rows", 1)) * CARGO_ROW_SIZE)), CARGO_ROW_SIZE, CARGO_SIZE)
unlocked_weapon_slots = clampi(int(GameState.restart_inventory.get("unlocked_weapon_slots",1)),1,WEAPON_SLOT_COUNT)
unlocked_extension_slots = clampi(int(GameState.restart_inventory.get("unlocked_extension_slots",1)),1,EXTENSION_SLOT_COUNT)
cargo.assign(GameState.restart_inventory["cargo"])
@ -76,7 +77,7 @@ func get_cargo_used() -> int:
func preserve_for_restart() -> void:
# Copy the slot arrays; resources retain levels and individual modifiers.
GameState.restart_inventory = {
"unlocked_cargo_rows": unlocked_cargo_rows,
"unlocked_cargo_slots": unlocked_cargo_slots,
"unlocked_weapon_slots": unlocked_weapon_slots,
"unlocked_extension_slots": unlocked_extension_slots,
"cargo": cargo.duplicate(),
@ -258,18 +259,7 @@ func is_slot_unlocked(kind: String, index: int) -> bool:
return true
func get_cargo_capacity() -> int:
return unlocked_cargo_rows * CARGO_ROW_SIZE
func can_unlock_cargo_row(captain: Resource) -> bool:
return bool(ship.get("is_docked")) and unlocked_cargo_rows < CARGO_ROW_COUNT and int(captain.minerals.get("iron",0)) >= SLOT_UNLOCK_IRON_COST
func unlock_cargo_row(captain: Resource) -> bool:
if not can_unlock_cargo_row(captain): return false
captain.minerals["iron"] = int(captain.minerals.get("iron",0)) - SLOT_UNLOCK_IRON_COST
unlocked_cargo_rows += 1
captain.emit_changed()
inventory_changed.emit()
return true
return unlocked_cargo_slots
func can_use_freighter_storage(captain: Resource) -> bool:
return bool(ship.get("is_docked")) and captain.expedition.freighter_rooms.get("expansion_3","") == "module_storage"
@ -300,18 +290,42 @@ func retrieve_from_freighter(index: int, expected: ItemInstance, captain: Resour
inventory_changed.emit()
return true
func get_slot_unlock_cost(kind: String) -> Dictionary:
match kind:
"cargo":
return CARGO_SLOT_COST.duplicate() if unlocked_cargo_slots < CARGO_SIZE else {}
"weapon":
return {"titanium": WEAPON_UNLOCK_COSTS[unlocked_weapon_slots - 1]} if unlocked_weapon_slots < WEAPON_SLOT_COUNT else {}
"extension":
if unlocked_extension_slots >= EXTENSION_SLOT_COUNT: return {}
var amount := EXTENSION_UNLOCK_BASE_COST * (1 << (unlocked_extension_slots - 1))
return {"iron": amount, "aluminium": amount, "titanium": amount}
return {}
func get_slot_unlock_cost_text(kind: String) -> String:
var descriptions := PackedStringArray()
var cost := get_slot_unlock_cost(kind)
for mineral in cost:
descriptions.append("%d %s" % [cost[mineral], RECIPES.NAMES[mineral]])
return " + ".join(descriptions)
func can_unlock_slot(kind: String, captain: Resource) -> bool:
if not bool(ship.get("is_docked")): return false
if kind not in ["weapon","extension"]: return false
var count := unlocked_weapon_slots if kind == "weapon" else unlocked_extension_slots
var limit := WEAPON_SLOT_COUNT if kind == "weapon" else EXTENSION_SLOT_COUNT
return count < limit and int(captain.minerals.get("iron",0)) >= SLOT_UNLOCK_IRON_COST
var cost := get_slot_unlock_cost(kind)
if cost.is_empty(): return false
for mineral in cost:
if int(captain.minerals.get(mineral, 0)) < int(cost[mineral]): return false
return true
func unlock_slot(kind: String, captain: Resource) -> bool:
if not can_unlock_slot(kind, captain): return false
captain.minerals["iron"] = int(captain.minerals.get("iron",0)) - SLOT_UNLOCK_IRON_COST
if kind == "weapon": unlocked_weapon_slots += 1
else: unlocked_extension_slots += 1
var cost := get_slot_unlock_cost(kind)
for mineral in cost:
captain.minerals[mineral] = int(captain.minerals.get(mineral, 0)) - int(cost[mineral])
match kind:
"cargo": unlocked_cargo_slots += 1
"weapon": unlocked_weapon_slots += 1
"extension": unlocked_extension_slots += 1
captain.emit_changed()
inventory_changed.emit()
return true
@ -521,12 +535,16 @@ func buy_irradiated_ammunition() -> bool:
ammunition_changed.emit()
return true
func get_total_dps() -> float:
var total := 0.0
var bonuses := _comparison_bonuses()
for item in weapon_slots.slice(0,unlocked_weapon_slots):
var value := _weapon_dps(item, bonuses)
func get_weapon_dps(slot_index: int) -> float:
if not is_slot_unlocked("weapon", slot_index): return 0.0
var item := get_item("weapon", slot_index)
var value := _weapon_dps(item, _comparison_bonuses())
if item != null and item.definition.weapon_kind == ItemDefinition.WeaponKind.GAMMA:
value *= 1.0 + 0.25 * minf(preload("res://scripts/game/radiation_status.gd").DURATION, item.definition.fire_interval)
total += value
return value
func get_total_dps() -> float:
var total := 0.0
for index in range(unlocked_weapon_slots):
total += get_weapon_dps(index)
return total

View File

@ -1,7 +1,14 @@
extends RefCounted
const MAX_LEVEL := 1000
const COUNT_POINTS := [Vector2(1, 11), Vector2(10, 11), Vector2(15, 11), Vector2(50, 18), Vector2(100, 23), Vector2(250, 29), Vector2(500, 34), Vector2(1000, 40)]
const NORMAL_MAX_LEVEL := 60
const MAX_LEVEL := 120
const HARD_STAT_MULTIPLIER := 2.0
const BOSS_HULL_MULTIPLIER := 5.0
const BOSS_SHIELD_MULTIPLIER := 3.0
const BOSS_DAMAGE_MULTIPLIER := 0.5
const FIRST_BOSS_DAMAGE_MULTIPLIER := 0.25
const FIRST_BOSS_FIRE_INTERVAL_MULTIPLIER := 2.0
const COUNT_POINTS := [Vector2(1, 11), Vector2(10, 11), Vector2(15, 11), Vector2(50, 18), Vector2(100, 23), Vector2(120, 24)]
const ELITES_PER_LEVEL := 2
static func enemy_count(level: int) -> int:
@ -11,7 +18,7 @@ static func enemy_count(level: int) -> int:
var after: Vector2 = COUNT_POINTS[index]
if clamped_level <= after.x:
return roundi(lerpf(before.y, after.y, inverse_lerp(before.x, after.x, clamped_level)))
return 40
return 24
static func enemy_tiers(level: int) -> Array[int]:
var count := enemy_count(level)
@ -27,3 +34,15 @@ static func enemy_tiers(level: int) -> Array[int]:
static func power_scale(level: int) -> float:
return 1.0 + 0.05 * (clampi(level, 1, MAX_LEVEL) - 1)
static func is_hard(level: int) -> bool:
return level > NORMAL_MAX_LEVEL
static func enemy_stat_scale(level: int) -> float:
return power_scale(level) * (HARD_STAT_MULTIPLIER if is_hard(level) else 1.0)
static func enemy_absorption_total(level: int) -> float:
var clamped_level := clampi(level, 1, MAX_LEVEL)
if clamped_level <= NORMAL_MAX_LEVEL:
return lerpf(2.0, 30.0, pow(float(clamped_level - 1) / float(NORMAL_MAX_LEVEL - 1), 1.25))
return lerpf(30.0, 60.0, float(clamped_level - NORMAL_MAX_LEVEL) / float(MAX_LEVEL - NORMAL_MAX_LEVEL))

View File

@ -0,0 +1,44 @@
extends RefCounted
const ACTIVE_IDS := ["general", "weapons", "hull", "shields"]
const BRANCHES := ["weapons", "hull", "shields"]
const TITLES := {"general":"Ogólna wiedza", "weapons":"Wiedza o broni", "hull":"Wiedza o kadłubie", "shields":"Wiedza o tarczach"}
static func parent(id: String) -> String:
if id == "general": return ""
return id.split("_")[0] if "_" in id else "general"
static func cost(id: String) -> int:
var depth := 2 if "_" in id else (0 if id == "general" else 1)
return 10 + depth * (depth + 3)
static func title(id: String) -> String:
return str(TITLES.get(id, "Pusty slot"))
static func description(id: String) -> String:
match id:
"general": return "Ujawnia paski HP i tarcz wrogów."
"weapons": return "Broń obcych zadaje o 10% mniej obrażeń."
"hull": return "Twoja broń zadaje o 10% więcej obrażeń kadłubom obcych."
"shields": return "Twoja broń zadaje o 10% więcej obrażeń tarczom obcych."
return "Miejsce na przyszłe badanie."
static func learned_count(progress: Resource) -> int:
var count := 0
for id in ACTIVE_IDS:
if progress.alien_skills.get(id, false): count += 1
return count
static func bonus(progress: Resource, branch: String) -> float:
var learned: Dictionary = progress.alien_skills
return 0.1 if branch in BRANCHES and learned.get(branch, false) else 0.0
static func purchase(progress: Resource, id: String) -> bool:
if id not in ACTIVE_IDS: return false
if progress.alien_skills.get(id, false): return false
var prerequisite := parent(id)
if prerequisite != "" and not progress.alien_skills.get(prerequisite, false): return false
if progress.analysis_samples < cost(id): return false
progress.analysis_samples -= cost(id)
progress.alien_skills[id] = true
progress.emit_changed()
return true

Some files were not shown because too many files have changed in this diff Show More