diff --git a/Animations/Intro_sequence/intro_seq_0001.png b/Animations/Intro_sequence/intro_seq_0001.png deleted file mode 100644 index 7a58f10..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0001.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0001.png.import b/Animations/Intro_sequence/intro_seq_0001.png.import deleted file mode 100644 index 9103e35..0000000 --- a/Animations/Intro_sequence/intro_seq_0001.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bu3eevt6f31vy" -path="res://.godot/imported/intro_seq_0001.png-d13407f069897f5b8302350ea06caad2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0001.png" -dest_files=["res://.godot/imported/intro_seq_0001.png-d13407f069897f5b8302350ea06caad2.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 diff --git a/Animations/Intro_sequence/intro_seq_0002.png b/Animations/Intro_sequence/intro_seq_0002.png deleted file mode 100644 index ea0db24..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0002.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0002.png.import b/Animations/Intro_sequence/intro_seq_0002.png.import deleted file mode 100644 index 0c8372a..0000000 --- a/Animations/Intro_sequence/intro_seq_0002.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cv0386ujbone6" -path="res://.godot/imported/intro_seq_0002.png-7d720fee04fce498d05e156084b3ef90.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0002.png" -dest_files=["res://.godot/imported/intro_seq_0002.png-7d720fee04fce498d05e156084b3ef90.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 diff --git a/Animations/Intro_sequence/intro_seq_0003.png b/Animations/Intro_sequence/intro_seq_0003.png deleted file mode 100644 index 410bf6a..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0003.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0003.png.import b/Animations/Intro_sequence/intro_seq_0003.png.import deleted file mode 100644 index 24284c7..0000000 --- a/Animations/Intro_sequence/intro_seq_0003.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bpagtmd32idd0" -path="res://.godot/imported/intro_seq_0003.png-ae551e25a09b19cb262685550214d751.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0003.png" -dest_files=["res://.godot/imported/intro_seq_0003.png-ae551e25a09b19cb262685550214d751.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 diff --git a/Animations/Intro_sequence/intro_seq_0004.png b/Animations/Intro_sequence/intro_seq_0004.png deleted file mode 100644 index d644652..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0004.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0004.png.import b/Animations/Intro_sequence/intro_seq_0004.png.import deleted file mode 100644 index 7a8ddf4..0000000 --- a/Animations/Intro_sequence/intro_seq_0004.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b6rdw1pvnq4cj" -path="res://.godot/imported/intro_seq_0004.png-9977a1ecdd9ddac47ca83665f2c41e57.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0004.png" -dest_files=["res://.godot/imported/intro_seq_0004.png-9977a1ecdd9ddac47ca83665f2c41e57.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 diff --git a/Animations/Intro_sequence/intro_seq_0005.png b/Animations/Intro_sequence/intro_seq_0005.png deleted file mode 100644 index 3f48f1a..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0005.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0005.png.import b/Animations/Intro_sequence/intro_seq_0005.png.import deleted file mode 100644 index 54e11ff..0000000 --- a/Animations/Intro_sequence/intro_seq_0005.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bwhtngfrq8ao7" -path="res://.godot/imported/intro_seq_0005.png-492c659aed88c33763898b51cdecde09.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0005.png" -dest_files=["res://.godot/imported/intro_seq_0005.png-492c659aed88c33763898b51cdecde09.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 diff --git a/Animations/Intro_sequence/intro_seq_0006.png b/Animations/Intro_sequence/intro_seq_0006.png deleted file mode 100644 index 791057e..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0006.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0006.png.import b/Animations/Intro_sequence/intro_seq_0006.png.import deleted file mode 100644 index aac1895..0000000 --- a/Animations/Intro_sequence/intro_seq_0006.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d4c6etc2k8o5b" -path="res://.godot/imported/intro_seq_0006.png-754b5919bb8ea2d96bfce5d29bfa03af.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0006.png" -dest_files=["res://.godot/imported/intro_seq_0006.png-754b5919bb8ea2d96bfce5d29bfa03af.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 diff --git a/Animations/Intro_sequence/intro_seq_0007.png b/Animations/Intro_sequence/intro_seq_0007.png deleted file mode 100644 index d308a3e..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0007.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0007.png.import b/Animations/Intro_sequence/intro_seq_0007.png.import deleted file mode 100644 index 245c78f..0000000 --- a/Animations/Intro_sequence/intro_seq_0007.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://buw18qc3wanyf" -path="res://.godot/imported/intro_seq_0007.png-5924916944ea882df411d192e1106616.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0007.png" -dest_files=["res://.godot/imported/intro_seq_0007.png-5924916944ea882df411d192e1106616.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 diff --git a/Animations/Intro_sequence/intro_seq_0008.png b/Animations/Intro_sequence/intro_seq_0008.png deleted file mode 100644 index 10ed4f6..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0008.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0008.png.import b/Animations/Intro_sequence/intro_seq_0008.png.import deleted file mode 100644 index c6bee3c..0000000 --- a/Animations/Intro_sequence/intro_seq_0008.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://rqsffoxigmul" -path="res://.godot/imported/intro_seq_0008.png-cc0a32cbed495eedfc84f56240d77d70.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0008.png" -dest_files=["res://.godot/imported/intro_seq_0008.png-cc0a32cbed495eedfc84f56240d77d70.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 diff --git a/Animations/Intro_sequence/intro_seq_0009.png b/Animations/Intro_sequence/intro_seq_0009.png deleted file mode 100644 index bb51e76..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0009.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0009.png.import b/Animations/Intro_sequence/intro_seq_0009.png.import deleted file mode 100644 index c30437e..0000000 --- a/Animations/Intro_sequence/intro_seq_0009.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dgqqdvsv087dq" -path="res://.godot/imported/intro_seq_0009.png-9477102b81fd9f557f19c0091825e489.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0009.png" -dest_files=["res://.godot/imported/intro_seq_0009.png-9477102b81fd9f557f19c0091825e489.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 diff --git a/Animations/Intro_sequence/intro_seq_0010.png b/Animations/Intro_sequence/intro_seq_0010.png deleted file mode 100644 index 205d9d3..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0010.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0010.png.import b/Animations/Intro_sequence/intro_seq_0010.png.import deleted file mode 100644 index 97ce358..0000000 --- a/Animations/Intro_sequence/intro_seq_0010.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dx1eu7pdngt2b" -path="res://.godot/imported/intro_seq_0010.png-d159843ba1107baa767e0f568ebe5164.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0010.png" -dest_files=["res://.godot/imported/intro_seq_0010.png-d159843ba1107baa767e0f568ebe5164.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 diff --git a/Animations/Intro_sequence/intro_seq_0011.png b/Animations/Intro_sequence/intro_seq_0011.png deleted file mode 100644 index 972c573..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0011.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0011.png.import b/Animations/Intro_sequence/intro_seq_0011.png.import deleted file mode 100644 index 2d56ed0..0000000 --- a/Animations/Intro_sequence/intro_seq_0011.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://hrpawt4pm8vw" -path="res://.godot/imported/intro_seq_0011.png-da361e3c03d7c9e37aafa9a94fce40aa.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0011.png" -dest_files=["res://.godot/imported/intro_seq_0011.png-da361e3c03d7c9e37aafa9a94fce40aa.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 diff --git a/Animations/Intro_sequence/intro_seq_0012.png b/Animations/Intro_sequence/intro_seq_0012.png deleted file mode 100644 index 109eae7..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0012.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0012.png.import b/Animations/Intro_sequence/intro_seq_0012.png.import deleted file mode 100644 index 8f726c0..0000000 --- a/Animations/Intro_sequence/intro_seq_0012.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cwxwxuq1qvq1s" -path="res://.godot/imported/intro_seq_0012.png-994091f05e3fffd9558b9c023b1e8959.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0012.png" -dest_files=["res://.godot/imported/intro_seq_0012.png-994091f05e3fffd9558b9c023b1e8959.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 diff --git a/Animations/Intro_sequence/intro_seq_0013.png b/Animations/Intro_sequence/intro_seq_0013.png deleted file mode 100644 index a901e58..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0013.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0013.png.import b/Animations/Intro_sequence/intro_seq_0013.png.import deleted file mode 100644 index 4aeaf83..0000000 --- a/Animations/Intro_sequence/intro_seq_0013.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dcatel76pvhaf" -path="res://.godot/imported/intro_seq_0013.png-4f4f9ef778d5ed3a8f18e94c837f6258.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0013.png" -dest_files=["res://.godot/imported/intro_seq_0013.png-4f4f9ef778d5ed3a8f18e94c837f6258.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 diff --git a/Animations/Intro_sequence/intro_seq_0014.png b/Animations/Intro_sequence/intro_seq_0014.png deleted file mode 100644 index c9d8f57..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0014.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0015.png b/Animations/Intro_sequence/intro_seq_0015.png deleted file mode 100644 index 221f99f..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0015.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0016.png b/Animations/Intro_sequence/intro_seq_0016.png deleted file mode 100644 index 5034fdc..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0016.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0016.png.import b/Animations/Intro_sequence/intro_seq_0016.png.import deleted file mode 100644 index 0c713dc..0000000 --- a/Animations/Intro_sequence/intro_seq_0016.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c0pwx26aill3t" -path="res://.godot/imported/intro_seq_0016.png-ad89023f08798b251f84156b0d00d183.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0016.png" -dest_files=["res://.godot/imported/intro_seq_0016.png-ad89023f08798b251f84156b0d00d183.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 diff --git a/Animations/Intro_sequence/intro_seq_0017.png b/Animations/Intro_sequence/intro_seq_0017.png deleted file mode 100644 index 3ed50da..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0017.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0017.png.import b/Animations/Intro_sequence/intro_seq_0017.png.import deleted file mode 100644 index 93043eb..0000000 --- a/Animations/Intro_sequence/intro_seq_0017.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b8mbxrarmnu70" -path="res://.godot/imported/intro_seq_0017.png-5bba2681811780a47d9cb4b03c476a91.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0017.png" -dest_files=["res://.godot/imported/intro_seq_0017.png-5bba2681811780a47d9cb4b03c476a91.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 diff --git a/Animations/Intro_sequence/intro_seq_0018.png b/Animations/Intro_sequence/intro_seq_0018.png deleted file mode 100644 index 58d235b..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0018.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0018.png.import b/Animations/Intro_sequence/intro_seq_0018.png.import deleted file mode 100644 index 38a9f84..0000000 --- a/Animations/Intro_sequence/intro_seq_0018.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bmgpk0egfy66u" -path="res://.godot/imported/intro_seq_0018.png-b04a1bd60a6eb8446f8a91aca3abae15.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0018.png" -dest_files=["res://.godot/imported/intro_seq_0018.png-b04a1bd60a6eb8446f8a91aca3abae15.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 diff --git a/Animations/Intro_sequence/intro_seq_0019.png b/Animations/Intro_sequence/intro_seq_0019.png deleted file mode 100644 index ae47fe9..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0019.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0019.png.import b/Animations/Intro_sequence/intro_seq_0019.png.import deleted file mode 100644 index dbd197a..0000000 --- a/Animations/Intro_sequence/intro_seq_0019.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dt41tdv4ameam" -path="res://.godot/imported/intro_seq_0019.png-e64a687201179a236907ea9ab3080cbd.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0019.png" -dest_files=["res://.godot/imported/intro_seq_0019.png-e64a687201179a236907ea9ab3080cbd.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 diff --git a/Animations/Intro_sequence/intro_seq_0020.png b/Animations/Intro_sequence/intro_seq_0020.png deleted file mode 100644 index f47644d..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0020.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0020.png.import b/Animations/Intro_sequence/intro_seq_0020.png.import deleted file mode 100644 index b02c16a..0000000 --- a/Animations/Intro_sequence/intro_seq_0020.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dqdytcgsacjxc" -path="res://.godot/imported/intro_seq_0020.png-94a72e7452125cc098d4df663548b117.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0020.png" -dest_files=["res://.godot/imported/intro_seq_0020.png-94a72e7452125cc098d4df663548b117.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 diff --git a/Animations/Intro_sequence/intro_seq_0021.png b/Animations/Intro_sequence/intro_seq_0021.png deleted file mode 100644 index a958c9f..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0021.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0021.png.import b/Animations/Intro_sequence/intro_seq_0021.png.import deleted file mode 100644 index dacb0c6..0000000 --- a/Animations/Intro_sequence/intro_seq_0021.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d3u6yoiw4anm0" -path="res://.godot/imported/intro_seq_0021.png-e41ed967859539364420056b92742e4b.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0021.png" -dest_files=["res://.godot/imported/intro_seq_0021.png-e41ed967859539364420056b92742e4b.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 diff --git a/Animations/Intro_sequence/intro_seq_0022.png b/Animations/Intro_sequence/intro_seq_0022.png deleted file mode 100644 index 06ba58e..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0022.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0022.png.import b/Animations/Intro_sequence/intro_seq_0022.png.import deleted file mode 100644 index cce0bea..0000000 --- a/Animations/Intro_sequence/intro_seq_0022.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cl2ni7jmhpdj6" -path="res://.godot/imported/intro_seq_0022.png-147d9f81538df8bcb3842e1b12917298.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0022.png" -dest_files=["res://.godot/imported/intro_seq_0022.png-147d9f81538df8bcb3842e1b12917298.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 diff --git a/Animations/Intro_sequence/intro_seq_0023.png b/Animations/Intro_sequence/intro_seq_0023.png deleted file mode 100644 index e83ea5b..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0023.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0023.png.import b/Animations/Intro_sequence/intro_seq_0023.png.import deleted file mode 100644 index 0c466eb..0000000 --- a/Animations/Intro_sequence/intro_seq_0023.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bx77btneo2n5o" -path="res://.godot/imported/intro_seq_0023.png-d79bc8b0b5339953b97138b03091c590.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0023.png" -dest_files=["res://.godot/imported/intro_seq_0023.png-d79bc8b0b5339953b97138b03091c590.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 diff --git a/Animations/Intro_sequence/intro_seq_0024.png b/Animations/Intro_sequence/intro_seq_0024.png deleted file mode 100644 index a8643be..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0024.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0024.png.import b/Animations/Intro_sequence/intro_seq_0024.png.import deleted file mode 100644 index 87ca698..0000000 --- a/Animations/Intro_sequence/intro_seq_0024.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b5uwi1h64dqek" -path="res://.godot/imported/intro_seq_0024.png-4ae491dbd3e8b33a50bf2e9fc7c44e36.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0024.png" -dest_files=["res://.godot/imported/intro_seq_0024.png-4ae491dbd3e8b33a50bf2e9fc7c44e36.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 diff --git a/Animations/Intro_sequence/intro_seq_0025.png b/Animations/Intro_sequence/intro_seq_0025.png deleted file mode 100644 index 7362cf4..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0025.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0025.png.import b/Animations/Intro_sequence/intro_seq_0025.png.import deleted file mode 100644 index 00731f5..0000000 --- a/Animations/Intro_sequence/intro_seq_0025.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://uv6nf2cgqjyy" -path="res://.godot/imported/intro_seq_0025.png-99f570fe058fb7903ce72e35a3c938f8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0025.png" -dest_files=["res://.godot/imported/intro_seq_0025.png-99f570fe058fb7903ce72e35a3c938f8.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 diff --git a/Animations/Intro_sequence/intro_seq_0026.png b/Animations/Intro_sequence/intro_seq_0026.png deleted file mode 100644 index 66e67e8..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0026.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0026.png.import b/Animations/Intro_sequence/intro_seq_0026.png.import deleted file mode 100644 index 34fdc00..0000000 --- a/Animations/Intro_sequence/intro_seq_0026.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://fh7m5y5j336x" -path="res://.godot/imported/intro_seq_0026.png-5bb48d75704d345d874831e5f6a2b446.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0026.png" -dest_files=["res://.godot/imported/intro_seq_0026.png-5bb48d75704d345d874831e5f6a2b446.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 diff --git a/Animations/Intro_sequence/intro_seq_0027.png b/Animations/Intro_sequence/intro_seq_0027.png deleted file mode 100644 index d0e4fb5..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0027.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0027.png.import b/Animations/Intro_sequence/intro_seq_0027.png.import deleted file mode 100644 index 83d26f3..0000000 --- a/Animations/Intro_sequence/intro_seq_0027.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dfmr5syqlie06" -path="res://.godot/imported/intro_seq_0027.png-436ad22542c38673365c1700684b8278.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0027.png" -dest_files=["res://.godot/imported/intro_seq_0027.png-436ad22542c38673365c1700684b8278.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 diff --git a/Animations/Intro_sequence/intro_seq_0028.png b/Animations/Intro_sequence/intro_seq_0028.png deleted file mode 100644 index 27463c3..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0028.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0028.png.import b/Animations/Intro_sequence/intro_seq_0028.png.import deleted file mode 100644 index a157653..0000000 --- a/Animations/Intro_sequence/intro_seq_0028.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bx71y7cf6lsse" -path="res://.godot/imported/intro_seq_0028.png-250f5531a5db7406a3d95fa6f5a4b753.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0028.png" -dest_files=["res://.godot/imported/intro_seq_0028.png-250f5531a5db7406a3d95fa6f5a4b753.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 diff --git a/Animations/Intro_sequence/intro_seq_0029.png b/Animations/Intro_sequence/intro_seq_0029.png deleted file mode 100644 index fc58b8b..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0029.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0029.png.import b/Animations/Intro_sequence/intro_seq_0029.png.import deleted file mode 100644 index 7e062e9..0000000 --- a/Animations/Intro_sequence/intro_seq_0029.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://r8vet7ghanp1" -path="res://.godot/imported/intro_seq_0029.png-deaafc16edf139dfe84ed9c86c1fc7ef.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0029.png" -dest_files=["res://.godot/imported/intro_seq_0029.png-deaafc16edf139dfe84ed9c86c1fc7ef.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 diff --git a/Animations/Intro_sequence/intro_seq_0030.png b/Animations/Intro_sequence/intro_seq_0030.png deleted file mode 100644 index 5073260..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0030.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0030.png.import b/Animations/Intro_sequence/intro_seq_0030.png.import deleted file mode 100644 index 7c86ab3..0000000 --- a/Animations/Intro_sequence/intro_seq_0030.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://4b8irulowbbv" -path="res://.godot/imported/intro_seq_0030.png-5860e05ac89ecb6e2036d6a84ee44e4e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0030.png" -dest_files=["res://.godot/imported/intro_seq_0030.png-5860e05ac89ecb6e2036d6a84ee44e4e.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 diff --git a/Animations/Intro_sequence/intro_seq_0031.png b/Animations/Intro_sequence/intro_seq_0031.png deleted file mode 100644 index 0bcc04b..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0031.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0031.png.import b/Animations/Intro_sequence/intro_seq_0031.png.import deleted file mode 100644 index 0b8d573..0000000 --- a/Animations/Intro_sequence/intro_seq_0031.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cvf5isldc65n4" -path="res://.godot/imported/intro_seq_0031.png-927f6fff06201f79eaf5ced54934d825.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0031.png" -dest_files=["res://.godot/imported/intro_seq_0031.png-927f6fff06201f79eaf5ced54934d825.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 diff --git a/Animations/Intro_sequence/intro_seq_0032.png b/Animations/Intro_sequence/intro_seq_0032.png deleted file mode 100644 index 8a9e977..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0032.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0032.png.import b/Animations/Intro_sequence/intro_seq_0032.png.import deleted file mode 100644 index 26263c9..0000000 --- a/Animations/Intro_sequence/intro_seq_0032.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d4j88tyqprs2d" -path="res://.godot/imported/intro_seq_0032.png-fb16b2b570af97548a9a76fe074d0679.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0032.png" -dest_files=["res://.godot/imported/intro_seq_0032.png-fb16b2b570af97548a9a76fe074d0679.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 diff --git a/Animations/Intro_sequence/intro_seq_0033.png b/Animations/Intro_sequence/intro_seq_0033.png deleted file mode 100644 index 1788a10..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0033.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0033.png.import b/Animations/Intro_sequence/intro_seq_0033.png.import deleted file mode 100644 index afc3abb..0000000 --- a/Animations/Intro_sequence/intro_seq_0033.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b1k4bojvgeksu" -path="res://.godot/imported/intro_seq_0033.png-46cbba009bcd114946dc61b4952e390f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0033.png" -dest_files=["res://.godot/imported/intro_seq_0033.png-46cbba009bcd114946dc61b4952e390f.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 diff --git a/Animations/Intro_sequence/intro_seq_0034.png b/Animations/Intro_sequence/intro_seq_0034.png deleted file mode 100644 index eb40d40..0000000 Binary files a/Animations/Intro_sequence/intro_seq_0034.png and /dev/null differ diff --git a/Animations/Intro_sequence/intro_seq_0034.png.import b/Animations/Intro_sequence/intro_seq_0034.png.import deleted file mode 100644 index 22cf72d..0000000 --- a/Animations/Intro_sequence/intro_seq_0034.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://7cyyof1476yl" -path="res://.godot/imported/intro_seq_0034.png-e9bc2dbf0d75b6ff302c4cc0bfef8e97.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Animations/Intro_sequence/intro_seq_0034.png" -dest_files=["res://.godot/imported/intro_seq_0034.png-e9bc2dbf0d75b6ff302c4cc0bfef8e97.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 diff --git a/Assets/intro_bg.ogv b/Assets/intro_bg.ogv index 1ece759..1f3c768 100644 Binary files a/Assets/intro_bg.ogv and b/Assets/intro_bg.ogv differ diff --git a/HUD/DASH.png b/HUD/DASH.png new file mode 100644 index 0000000..f27f346 Binary files /dev/null and b/HUD/DASH.png differ diff --git a/HUD/HUD_0000_ability_JALG.png.import b/HUD/DASH.png.import similarity index 72% rename from HUD/HUD_0000_ability_JALG.png.import rename to HUD/DASH.png.import index d7c0477..733e322 100644 --- a/HUD/HUD_0000_ability_JALG.png.import +++ b/HUD/DASH.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://ypxkr3vla3fr" -path="res://.godot/imported/HUD_0000_ability_JALG.png-c430df7817ae1f22045a2a27b06f60a8.ctex" +uid="uid://cyscxku0nw055" +path="res://.godot/imported/DASH.png-02cbc39ec03a0c79526d7dc333659c48.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://HUD/HUD_0000_ability_JALG.png" -dest_files=["res://.godot/imported/HUD_0000_ability_JALG.png-c430df7817ae1f22045a2a27b06f60a8.ctex"] +source_file="res://HUD/DASH.png" +dest_files=["res://.godot/imported/DASH.png-02cbc39ec03a0c79526d7dc333659c48.ctex"] [params] diff --git a/HUD/HUD_0000_ability_JALG.png b/HUD/HUD_0000_ability_JALG.png deleted file mode 100644 index 078998f..0000000 Binary files a/HUD/HUD_0000_ability_JALG.png and /dev/null differ diff --git a/HUD/HUD_0001_ability_SLAM.png b/HUD/HUD_0001_ability_SLAM.png deleted file mode 100644 index a02c646..0000000 Binary files a/HUD/HUD_0001_ability_SLAM.png and /dev/null differ diff --git a/HUD/HUD_0002_ability_DASH.png b/HUD/HUD_0002_ability_DASH.png deleted file mode 100644 index 80aa4ab..0000000 Binary files a/HUD/HUD_0002_ability_DASH.png and /dev/null differ diff --git a/HUD/HUD_0002_ability_DASH.png.import b/HUD/HUD_0002_ability_DASH.png.import deleted file mode 100644 index ab50a73..0000000 --- a/HUD/HUD_0002_ability_DASH.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dnv8w5h32ck7m" -path="res://.godot/imported/HUD_0002_ability_DASH.png-011f272dda65c06c407720ec201ad92e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://HUD/HUD_0002_ability_DASH.png" -dest_files=["res://.godot/imported/HUD_0002_ability_DASH.png-011f272dda65c06c407720ec201ad92e.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 diff --git a/HUD/KICK.png b/HUD/KICK.png new file mode 100644 index 0000000..9d12d74 Binary files /dev/null and b/HUD/KICK.png differ diff --git a/HUD/HUD_0001_ability_SLAM.png.import b/HUD/KICK.png.import similarity index 72% rename from HUD/HUD_0001_ability_SLAM.png.import rename to HUD/KICK.png.import index 9e642c2..59f190e 100644 --- a/HUD/HUD_0001_ability_SLAM.png.import +++ b/HUD/KICK.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://w4yovxyg0104" -path="res://.godot/imported/HUD_0001_ability_SLAM.png-7c5f88306e1af474db2c2073888feab7.ctex" +uid="uid://bdnc3jw1ykydi" +path="res://.godot/imported/KICK.png-5482be80e8176ed7a0ae69a48ca1f5ed.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://HUD/HUD_0001_ability_SLAM.png" -dest_files=["res://.godot/imported/HUD_0001_ability_SLAM.png-7c5f88306e1af474db2c2073888feab7.ctex"] +source_file="res://HUD/KICK.png" +dest_files=["res://.godot/imported/KICK.png-5482be80e8176ed7a0ae69a48ca1f5ed.ctex"] [params] diff --git a/HUD/ROLL.png b/HUD/ROLL.png new file mode 100644 index 0000000..b4a1840 Binary files /dev/null and b/HUD/ROLL.png differ diff --git a/Animations/Intro_sequence/intro_seq_0014.png.import b/HUD/ROLL.png.import similarity index 72% rename from Animations/Intro_sequence/intro_seq_0014.png.import rename to HUD/ROLL.png.import index 21f79d3..3e7e003 100644 --- a/Animations/Intro_sequence/intro_seq_0014.png.import +++ b/HUD/ROLL.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://x8eewdg65qgr" -path="res://.godot/imported/intro_seq_0014.png-f8346c8267324ffe151c42113f79700d.ctex" +uid="uid://d25i88cixy4pn" +path="res://.godot/imported/ROLL.png-306dafcb4b6c13eded9a925aa6d2f62a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Animations/Intro_sequence/intro_seq_0014.png" -dest_files=["res://.godot/imported/intro_seq_0014.png-f8346c8267324ffe151c42113f79700d.ctex"] +source_file="res://HUD/ROLL.png" +dest_files=["res://.godot/imported/ROLL.png-306dafcb4b6c13eded9a925aa6d2f62a.ctex"] [params] diff --git a/HUD/SLAM.png b/HUD/SLAM.png new file mode 100644 index 0000000..227afcc Binary files /dev/null and b/HUD/SLAM.png differ diff --git a/Animations/Intro_sequence/intro_seq_0015.png.import b/HUD/SLAM.png.import similarity index 72% rename from Animations/Intro_sequence/intro_seq_0015.png.import rename to HUD/SLAM.png.import index 1735149..be5fcf1 100644 --- a/Animations/Intro_sequence/intro_seq_0015.png.import +++ b/HUD/SLAM.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://nw2pvct1kqcd" -path="res://.godot/imported/intro_seq_0015.png-1a3c8239c9c1c61cd711f23fcc29af50.ctex" +uid="uid://bxplqrp4mc5yh" +path="res://.godot/imported/SLAM.png-b5036a739251be1240a24080e28d7a8e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Animations/Intro_sequence/intro_seq_0015.png" -dest_files=["res://.godot/imported/intro_seq_0015.png-1a3c8239c9c1c61cd711f23fcc29af50.ctex"] +source_file="res://HUD/SLAM.png" +dest_files=["res://.godot/imported/SLAM.png-b5036a739251be1240a24080e28d7a8e.ctex"] [params] diff --git a/bull_legs.gd b/bull_legs.gd index 72f7717..db78ef3 100644 --- a/bull_legs.gd +++ b/bull_legs.gd @@ -15,6 +15,10 @@ var _aerial_pitch: float = 0.0 var charge_pitch_target: float = 0.0 var _charge_pitch_curr: float = 0.0 +# When true, another system (the roll's ball-tumble) owns the bull's full +# orientation — skip writing body wobble so we don't fight it. +var external_rotation: bool = false + # Tail — Verlet chain simulation const TAIL_BONES: Array = [ &"tail_1", &"tail_2", &"tail_3", &"tail_4", @@ -128,6 +132,8 @@ func _wobble_body(delta: float) -> void: _aerial_pitch = lerpf(_aerial_pitch, target_pitch, delta * DP.f("aerial_pitch_speed")) _charge_pitch_curr = lerpf(_charge_pitch_curr, charge_pitch_target, delta * DP.f("charge_head_speed")) + if external_rotation: + return _bull.rotation.x = _tilt_x + _aerial_pitch + _charge_pitch_curr _bull.rotation.z = _tilt_z diff --git a/debug_draw.gd b/debug_draw.gd index 7c1ac6a..70c2b98 100644 --- a/debug_draw.gd +++ b/debug_draw.gd @@ -387,12 +387,15 @@ func _reconcile(delta: float) -> void: if scene != null: _collect(scene, col, hit, bone, anim, wanted) - # Drop overlays whose shape is gone or no longer wanted. + # Drop overlays whose shape is gone or no longer wanted. The overlay is a child of + # the collision shape, so it's freed with it — hold it as Variant, since assigning a + # freed instance to any *typed* var (even Object) throws before is_instance_valid() + # can filter it out. for id: int in _overlays.keys(): - var mi: MeshInstance3D = _overlays[id] + var mi: Variant = _overlays[id] if not wanted.has(id) or not is_instance_valid(mi): if is_instance_valid(mi): - mi.queue_free() + (mi as Node).queue_free() _overlays.erase(id) # Add overlays for newly seen shapes. for id: int in wanted: @@ -442,9 +445,9 @@ func _attach(cs: CollisionShape3D, is_area: bool) -> MeshInstance3D: func _clear_overlays() -> void: for id: int in _overlays: - var mi: MeshInstance3D = _overlays[id] + var mi: Variant = _overlays[id] if is_instance_valid(mi): - mi.queue_free() + (mi as Node).queue_free() _overlays.clear() diff --git a/debug_params.gd b/debug_params.gd index f3a9b21..907a700 100644 --- a/debug_params.gd +++ b/debug_params.gd @@ -22,25 +22,17 @@ func _ready() -> void: func _register_all() -> void: # ── Movement ────────────────────────────────────────────────────────────── - _reg_f("Movement", "thrust_impulse", 18.0, 1.0, 200.0) - _reg_f("Movement", "thrust_vertical", 2.0, 0.0, 20.0) - _reg_f("Movement", "thrust_min_angle", 15.0, 0.0, 90.0, 1.0) - _reg_f("Movement", "thrust_max_angle", 90.0, 0.0, 180.0, 1.0) - _reg_f("Movement", "thrust_charge_time", 0.5, 0.05, 2.0, 0.05) + # WASD/arrows drive the bull: move_accel ramps flat velocity toward max_speed in + # the input direction; move_friction bleeds it off when no direction is held. _reg_f("Movement", "max_speed", 50.0, 2.0, 1000.0) - _reg_f("Movement", "roll_damping", 0.15, 0.01, 0.99, 0.01) + _reg_f("Movement", "move_accel", 120.0, 5.0, 600.0) + _reg_f("Movement", "move_friction", 90.0, 5.0, 600.0) _reg_f("Movement", "jump_velocity", 4.5, 1.0, 200.0) _reg_f("Movement", "visual_turn_speed", 12.0, 1.0, 200.0) _reg_f("Movement", "bounce_restitution", 0.55, 0.0, 2.0, 0.05) _reg_f("Movement", "bounce_min_impact", 1.0, 0.0, 20.0) _reg_f("Movement", "wall_bounce_restitution", 0.6, 0.0, 1.5, 0.05) _reg_f("Movement", "wall_min_bounce_speed", 6.0, 0.0, 30.0) - _reg_f("Movement", "kick_impulse", 8.0, 1.0, 50.0) - _reg_f("Movement", "kick_interval", 0.25, 0.05, 1.0, 0.01) - _reg_f("Movement", "kick_vertical", 0.0, 0.0, 15.0) - _reg_f("Movement", "kick_force_var", 0.2, 0.0, 1.0, 0.01) - _reg_f("Movement", "kick_spread", 10.0, 0.0, 45.0, 1.0) - _reg_f("Movement", "charge_kick_mult", 2.0, 1.0, 5.0) # ── Dust speed thresholds ───────────────────────────────────────────────── _reg_f("Dust", "dust_walk_spd", 1.5, 0.1, 10.0) _reg_f("Dust", "dust_charge_spd", 7.0, 1.0, 20.0) @@ -63,10 +55,7 @@ func _register_all() -> void: _reg_f("Tail", "tail_body_radius", 0.35, 0.05, 2.0, 0.05) _reg_f("Tail", "tail_wag_freq", 4.0, 0.5, 15.0) _reg_f("Tail", "tail_wag_idle", 0.3, 0.0, 2.0, 0.05) - # ── Charge (both mouse buttons) ────────────────────────────────────────── - _reg_f("Charge", "bull_charge_accel", 80.0, 1.0, 400.0) - _reg_f("Charge", "bull_charge_max_speed", 76.0, 5.0, 200.0) - _reg_f("Charge", "charge_ramp_time", 0.75, 0.1, 5.0, 0.05) + # ── Charge pose (horns-down lean during dash / roll) ───────────────────── _reg_f("Charge", "charge_head_pitch", 0.3, 0.0, 1.2, 0.01) _reg_f("Charge", "charge_head_speed", 5.0, 0.5, 20.0) # ── Body ────────────────────────────────────────────────────────────────── @@ -108,6 +97,9 @@ func _register_all() -> void: _reg_f("Matador", "mat_spawn_count", 1.0, 1.0, 30.0, 1.0) _reg_f("Matador", "mat_walk_speed", 5.5, 0.5, 10.0) _reg_f("Matador", "mat_wander_radius", 22.0, 5.0, 50.0) + # Radius of the inner fighting floor: bull + matadors spawn on this ring (so + # they stay off the benches). Tune in the console to hug the bench edge. + _reg_f("Matador", "arena_spawn_radius", 10.0, 2.0, 22.0, 0.5) _reg_f("Matador", "mat_idle_min", 0.5, 0.0, 5.0, 0.1) _reg_f("Matador", "mat_idle_max", 2.5, 0.5, 10.0, 0.1) _reg_f("Matador", "mat_hit_threshold", 4.0, 1.0, 30.0) @@ -229,7 +221,8 @@ func _register_all() -> void: _reg_f("Roll", "roll_base_speed", 28.0, 5.0, 120.0) # speed at the start of the roll _reg_f("Roll", "roll_max_speed", 95.0, 10.0, 200.0) # top speed once fully ramped _reg_f("Roll", "roll_rampup_time", 2.0, 0.2, 6.0, 0.1) # time to reach top speed - _reg_f("Roll", "roll_turn", 3.5, 0.2, 20.0) # steer rate (low = wide momentum turns) + _reg_f("Roll", "roll_turn", 7.0, 0.2, 20.0) # steer rate (WASD/arrows; higher = tighter) + _reg_f("Roll", "roll_spin_radius", 1.4, 0.3, 4.0, 0.1) # ball radius for tumble spin (smaller = faster) _reg_f("Roll", "roll_hit_radius", 2.4, 0.5, 6.0, 0.1) # contact radius that pops the ball _reg_f("Roll", "roll_hit_strength", 22.0, 1.0, 40.0) # horizontal launch on the pop _reg_f("Roll", "roll_knockup", 11.0, 0.0, 25.0) # vertical knock-up on the pop diff --git a/hud.gd b/hud.gd index 988c3fc..603efae 100644 --- a/hud.gd +++ b/hud.gd @@ -1,22 +1,28 @@ extends CanvasLayer -const _GOLD := Color(1.00, 0.78, 0.22) -const _CREAM := Color(0.88, 0.83, 0.72) -const _MUTED := Color(0.65, 0.60, 0.48) -const _BG := Color(0.06, 0.04, 0.02, 0.78) -const _BADGE := Color(0.16, 0.10, 0.03, 0.90) -const _BORDER := Color(0.65, 0.48, 0.15, 0.55) +const _GOLD := Color(1.00, 0.78, 0.22) +const _CREAM := Color(0.93, 0.88, 0.72) +const _MUTED := Color(0.66, 0.60, 0.46) + +# Per-ability trim colour, tying each tile (and its key cap) to that ability's FX. +# Order matches _ABILITY_ICONS: kick, slam, dash, roll. +const _ABILITY_ACCENT: Array[Color] = [ + Color(1.00, 0.62, 0.16), # Kick — ember orange + Color(0.98, 0.34, 0.20), # Slam — crimson + Color(0.45, 0.75, 1.00), # Dash — sky blue + Color(1.00, 0.82, 0.32), # Roll — gold +] const _ABILITY_ICONS: Array[String] = [ - "res://HUD/HUD_0000_ability_JALG.png", - "res://HUD/HUD_0001_ability_SLAM.png", - "res://HUD/HUD_0002_ability_DASH.png", - "res://HUD/HUD_0003_ability_ROLL.png", + "res://HUD/KICK.png", + "res://HUD/SLAM.png", + "res://HUD/DASH.png", + "res://HUD/ROLL.png", ] const _ABILITY_ACTIONS: Array[StringName] = [ &"ability_kick", &"ability_slam", &"ability_dash", &"ability_roll", ] -# Fallback label shown in a slot whose icon file doesn't exist yet (e.g. ROLL). +# Fallback label shown in a slot whose icon file fails to load. const _ABILITY_NAMES: Array[String] = ["Kick", "Slam", "Dash", "Roll"] var _controls_visible: bool = false @@ -28,6 +34,8 @@ var _player: Node = null var _died_connected: bool = false var _cd_overlays: Array[ColorRect] = [] var _cd_labels: Array[Label] = [] +var _ability_bar: HBoxContainer +var _ability_panels: Array[PanelContainer] = [] # Win/lose screen. _game_over latches so the result is shown once; _result_win # records which way it went (read by the gameplay test). @@ -201,37 +209,36 @@ func _build_game_over() -> void: row.add_child(menu) -# A bordered, rounded, gold-trimmed panel background — the HUD's one repeated look. -# Margins are symmetric (L=R, T=B); pass a transparent border to draw none. -func _panel_style(bg: Color, corner: int, h_margin: float, v_margin: float, - border: Color = _BORDER) -> StyleBoxFlat: - var s := StyleBoxFlat.new() - s.bg_color = bg - s.set_corner_radius_all(corner) - if border.a > 0.0: - s.set_border_width_all(1) - s.border_color = border - s.content_margin_left = h_margin - s.content_margin_right = h_margin - s.content_margin_top = v_margin - s.content_margin_bottom = v_margin - return s +const _SLOT_SEPARATION: int = 10 func _build_ability_bar() -> void: - var bar := HBoxContainer.new() - bar.add_theme_constant_override("separation", 10) - bar.anchor_left = 0.5 - bar.anchor_right = 0.5 - bar.anchor_top = 1.0 - bar.anchor_bottom = 1.0 - bar.grow_horizontal = Control.GROW_DIRECTION_BOTH - bar.grow_vertical = Control.GROW_DIRECTION_BEGIN - bar.offset_left = -160.0 - bar.offset_bottom = -20.0 - add_child(bar) + _ability_bar = HBoxContainer.new() + _ability_bar.add_theme_constant_override("separation", _SLOT_SEPARATION) + _ability_bar.anchor_left = 0.5 + _ability_bar.anchor_right = 0.5 + _ability_bar.anchor_top = 1.0 + _ability_bar.anchor_bottom = 1.0 + _ability_bar.grow_horizontal = Control.GROW_DIRECTION_BOTH + _ability_bar.grow_vertical = Control.GROW_DIRECTION_BEGIN + _ability_bar.offset_bottom = -20.0 + add_child(_ability_bar) for i: int in 4: - bar.add_child(_build_ability_slot(i)) + _ability_bar.add_child(_build_ability_slot(i)) + _layout_ability_bar() + get_viewport().size_changed.connect(_layout_ability_bar) + + +# Size the ability slots as a fraction of the viewport (clamped) so the bar scales +# with the window, and keep it horizontally centred by matching the HBox offsets. +func _layout_ability_bar() -> void: + var vp := get_viewport().get_visible_rect().size + var slot := clampf(minf(vp.x * 0.055, vp.y * 0.11), 56.0, 104.0) + for panel: PanelContainer in _ability_panels: + panel.custom_minimum_size = Vector2(slot, slot) + var total := slot * 4.0 + float(_SLOT_SEPARATION) * 3.0 + _ability_bar.offset_left = -total * 0.5 + _ability_bar.offset_right = total * 0.5 func _build_ability_slot(idx: int) -> Control: @@ -240,8 +247,10 @@ func _build_ability_slot(idx: int) -> Control: var panel := PanelContainer.new() panel.custom_minimum_size = Vector2(72.0, 72.0) - panel.add_theme_stylebox_override("panel", _panel_style(_BG, 6, 4.0, 4.0)) + panel.add_theme_stylebox_override( + "panel", UiTheme.plaque(UiTheme.LEATHER, _ABILITY_ACCENT[idx], 4, 5.0, 5.0)) vbox.add_child(panel) + _ability_panels.append(panel) var stack := Control.new() stack.set_anchors_preset(Control.PRESET_FULL_RECT) @@ -250,8 +259,12 @@ func _build_ability_slot(idx: int) -> Control: if ResourceLoader.exists(_ABILITY_ICONS[idx]): var icon := TextureRect.new() icon.texture = load(_ABILITY_ICONS[idx]) + # Ignore the texture's native size so a large source PNG doesn't blow the + # slot's minimum size out; scale-to-fit the box while keeping aspect. + icon.expand_mode = TextureRect.EXPAND_IGNORE_SIZE icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED icon.set_anchors_preset(Control.PRESET_FULL_RECT) + icon.mouse_filter = Control.MOUSE_FILTER_IGNORE stack.add_child(icon) else: var name_lbl := Label.new() @@ -288,8 +301,11 @@ func _build_ability_slot(idx: int) -> Control: var key_lbl := Label.new() key_lbl.text = Controls.get_key_label(_ABILITY_ACTIONS[idx]) key_lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER - key_lbl.add_theme_color_override("font_color", _GOLD) - key_lbl.add_theme_font_size_override("font_size", 12) + key_lbl.add_theme_font_override("font", UiFonts.body()) + key_lbl.add_theme_color_override("font_color", _ABILITY_ACCENT[idx].lerp(_CREAM, 0.35)) + key_lbl.add_theme_color_override("font_outline_color", Color(0, 0, 0, 0.85)) + key_lbl.add_theme_constant_override("outline_size", 3) + key_lbl.add_theme_font_size_override("font_size", 13) vbox.add_child(key_lbl) return vbox @@ -312,7 +328,8 @@ func _build_tab_hint() -> void: func _build_controls_panel() -> void: _controls_panel = PanelContainer.new() - _controls_panel.add_theme_stylebox_override("panel", _panel_style(_BG, 7, 14.0, 10.0)) + _controls_panel.add_theme_stylebox_override( + "panel", UiTheme.plaque(UiTheme.LEATHER, UiTheme.BORDER, 4, 16.0, 12.0)) _controls_panel.anchor_left = 0.0 _controls_panel.anchor_top = 1.0 @@ -334,9 +351,7 @@ func _build_controls_panel() -> void: Controls.get_key_label(&"move_back"), Controls.get_key_label(&"move_right"), ] - _row(vbox, move_keys, "Move (not intended)", _MUTED) - _row(vbox, "LMB (hold)", "Right horn", _CREAM) - _row(vbox, "RMB (hold)", "Left horn", _CREAM) + _row(vbox, move_keys, "Move", _CREAM) _row(vbox, Controls.get_key_label(&"ability_kick"), "Kick", _CREAM) _row(vbox, Controls.get_key_label(&"ability_slam"), "Slam", _CREAM) _row(vbox, Controls.get_key_label(&"ability_dash"), "Dash", _CREAM) @@ -346,11 +361,7 @@ func _build_controls_panel() -> void: _row(vbox, "Esc", "Back to menu", _MUTED) var sep := HSeparator.new() - var sep_style := StyleBoxFlat.new() - sep_style.bg_color = Color(0.65, 0.48, 0.15, 0.30) - sep_style.content_margin_top = 4.0 - sep_style.content_margin_bottom = 4.0 - sep.add_theme_stylebox_override("separator", sep_style) + sep.add_theme_stylebox_override("separator", UiTheme.rule()) vbox.add_child(sep) _toggle_btn = _make_button("Show controls") @@ -363,8 +374,8 @@ func _make_button(label_text: String) -> Button: btn.text = label_text btn.process_mode = Node.PROCESS_MODE_ALWAYS - var normal := _panel_style(Color(0.18, 0.12, 0.04, 0.90), 5, 16.0, 8.0) - var hover := _panel_style(Color(0.30, 0.20, 0.06, 0.95), 5, 16.0, 8.0, _GOLD) + var normal := UiTheme.plaque(Color(0.10, 0.07, 0.03, 0.90), _GOLD, 3, 18.0, 9.0) + var hover := UiTheme.plaque(Color(0.16, 0.10, 0.04, 0.96), _CREAM, 3, 18.0, 9.0) btn.add_theme_stylebox_override("normal", normal) btn.add_theme_stylebox_override("hover", hover) @@ -384,7 +395,7 @@ func _row(parent: VBoxContainer, key: String, desc: String, desc_color: Color) - parent.add_child(row) var badge := PanelContainer.new() - badge.add_theme_stylebox_override("panel", _panel_style(_BADGE, 3, 6.0, 2.0, Color(0, 0, 0, 0))) + badge.add_theme_stylebox_override("panel", UiTheme.badge()) badge.custom_minimum_size = Vector2(100.0, 0.0) row.add_child(badge) diff --git a/main_menu.gd b/main_menu.gd index 8a6825a..136cfe5 100644 --- a/main_menu.gd +++ b/main_menu.gd @@ -152,19 +152,9 @@ func _style_button(btn: Button, big: bool) -> void: func _plaque(hot: bool) -> StyleBoxFlat: - var s := StyleBoxFlat.new() - s.bg_color = Color(0.14, 0.09, 0.04, 0.94) if hot else Color(0.07, 0.05, 0.03, 0.82) - s.set_border_width_all(2) - s.border_width_bottom = 5 - s.border_color = MENU_CREAM if hot else MENU_GOLD - s.set_corner_radius_all(2) - s.content_margin_left = 24.0 - s.content_margin_right = 24.0 - s.content_margin_top = 8.0 - s.content_margin_bottom = 10.0 - s.shadow_color = Color(0.0, 0.0, 0.0, 0.5) - s.shadow_size = 6 - return s + var bg := Color(0.14, 0.09, 0.04, 0.94) if hot else Color(0.07, 0.05, 0.03, 0.82) + var trim := MENU_CREAM if hot else MENU_GOLD + return UiTheme.plaque(bg, trim, 2, 24.0, 9.0) func _process(_delta: float) -> void: diff --git a/matador_spawn.gd b/matador_spawn.gd index c55615b..0c02ce3 100644 --- a/matador_spawn.gd +++ b/matador_spawn.gd @@ -18,18 +18,36 @@ func _ready() -> void: func _spawn() -> void: - for pos: Vector3 in _spread_positions(_spawn_count): + # Bull and matadors start at opposite ends of a random diameter, so they always + # begin as far apart as the arena allows (edge-to-edge across the centre). + var arena_r := DP.f("arena_spawn_radius") + var bull_angle := randf() * TAU + _place_bull(bull_angle, arena_r) + for pos: Vector3 in _spread_positions(_spawn_count, bull_angle + PI, arena_r): _spawn_at(pos) -func _spread_positions(count: int) -> Array[Vector3]: +func _place_bull(angle: float, arena_r: float) -> void: + var bull := get_tree().get_first_node_in_group(&"player") as Node3D + if not bull: + return + bull.global_position = Vector3( + cos(angle) * arena_r, bull.global_position.y, sin(angle) * arena_r + ) + + +# Positions for the matadors, clustered on the far side (centred on `center_angle`) +# so every matador stays near the point diametrically opposite the bull. +func _spread_positions(count: int, center_angle: float, arena_r: float) -> Array[Vector3]: var positions: Array[Vector3] = [] - var arena_r := DP.f("mat_wander_radius") * 0.72 - var min_r := 5.0 + if count <= 1: + positions.append(Vector3(cos(center_angle) * arena_r, 1.0, sin(center_angle) * arena_r)) + return positions + var arc := TAU * 0.33 for i: int in count: - var sector := TAU / count - var angle := sector * i + randf_range(-sector * 0.35, sector * 0.35) - var radius := randf_range(min_r, arena_r) + var t := float(i) / float(count - 1) - 0.5 # -0.5 .. 0.5 across the arc + var angle := center_angle + t * arc + var radius := randf_range(arena_r * 0.7, arena_r) positions.append(Vector3(cos(angle) * radius, 1.0, sin(angle) * radius)) return positions diff --git a/player.gd b/player.gd index 1a543a0..15efa2a 100644 --- a/player.gd +++ b/player.gd @@ -22,12 +22,8 @@ const _ANIM_ROLL: StringName = &"Armature|ROLL" var _hoof_emitters: Array[CPUParticles3D] = [] var _legs: Node -var _kick_timer: float = 0.0 var _was_on_floor: bool = false var _pre_slide_vel_y: float = 0.0 -var _thrust_left_charge: float = 0.0 -var _thrust_right_charge: float = 0.0 -var _charge_was_full: bool = false var _slam_ring_mesh: ArrayMesh = null @@ -39,21 +35,13 @@ var _active_ability: int = -1 var _dash_dir: Vector3 = Vector3.ZERO var _roll_dir: Vector3 = Vector3.ZERO var _roll_ramp: float = 0.0 +var _roll_spin: float = 0.0 var _bull_anim: AnimationPlayer = null -var _charge_ready_emitter: CPUParticles3D = null var _slam_pending: bool = false var _charge_trail_emitter: CPUParticles3D = null - -# Floating 3D charge bar (mouse-button thrust charge indicator) -const _CHARGE_BAR_WIDTH: float = 1.1 -const _CHARGE_BAR_HEIGHT: float = 1.45 -var _charge_bar: Node3D = null -var _charge_bar_fill: MeshInstance3D = null -var _charge_bar_fill_mat: StandardMaterial3D = null -var _charge_bar_ramp: Gradient = null -var _charge_bar_time: float = 0.0 -var _charge_bar_shown: float = 0.0 +var _roll_spark_emitter: CPUParticles3D = null +var _cube_scale: Vector3 = Vector3.ONE # One clean hit ends the run — see take_sword_hit(). The HUD listens for `died` # to raise the lose screen (the `cause` tags how it happened, for the death notice); @@ -64,7 +52,6 @@ var _dead: bool = false var _huff_player: AudioStreamPlayer = null var _crowd_player: AudioStreamPlayer = null var _huff_timer: float = 0.0 -var _roll_damping: float = 0.15 enum DustState { NONE, WALK, CHARGE } var _dust_state: DustState = DustState.NONE @@ -74,15 +61,15 @@ var _charge_dust_ramp: Gradient = null func _ready() -> void: add_to_group(&"player") + _cube_scale = cube_guy.scale _setup_hoof_dust() _setup_legs() - _setup_charge_indicators() - _setup_charge_bar() + _setup_charge_trail() + _setup_roll_sparks() _setup_audio() _bull_anim = _find_anim_player(cube_guy) _setup_bull_idle() DP.any_changed.connect(_on_dp_changed) - _roll_damping = DP.f("roll_damping") func _setup_legs() -> void: @@ -132,39 +119,8 @@ func _setup_hoof_dust() -> void: _hoof_emitters.append(p) -func _setup_charge_indicators() -> void: - var sphere := _particle_sphere(0.07, 4, 2, _unshaded_material()) - - # Orange spark burst when single-button charge hits max - var burst_ramp := Gradient.new() - burst_ramp.set_color(0, Color(1.0, 0.55, 0.0, 1.0)) - burst_ramp.set_color(1, Color(1.0, 0.15, 0.0, 0.0)) - - var burst_scale := Curve.new() - burst_scale.add_point(Vector2(0.0, 1.0)) - burst_scale.add_point(Vector2(1.0, 0.0)) - - _charge_ready_emitter = CPUParticles3D.new() - _charge_ready_emitter.position = Vector3(0.0, 0.3, 0.0) - _charge_ready_emitter.emitting = false - _charge_ready_emitter.one_shot = true - _charge_ready_emitter.amount = 16 - _charge_ready_emitter.lifetime = 0.5 - _charge_ready_emitter.explosiveness = 1.0 - _charge_ready_emitter.randomness = 0.4 - _charge_ready_emitter.local_coords = false - _charge_ready_emitter.direction = Vector3.UP - _charge_ready_emitter.spread = 120.0 - _charge_ready_emitter.initial_velocity_min = 2.5 - _charge_ready_emitter.initial_velocity_max = 5.0 - _charge_ready_emitter.scale_amount_min = 0.2 - _charge_ready_emitter.scale_amount_max = 0.5 - _charge_ready_emitter.mesh = sphere - _charge_ready_emitter.color_ramp = burst_ramp - _charge_ready_emitter.scale_amount_curve = burst_scale - cube_guy.add_child(_charge_ready_emitter) - - # Blue energy trail — streams backward during charge +func _setup_charge_trail() -> void: + # Blue energy trail — streams backward during a fast run / roll var trail_sphere := _particle_sphere(0.065, 4, 2, _unshaded_material()) var trail_ramp := Gradient.new() @@ -197,93 +153,39 @@ func _setup_charge_indicators() -> void: cube_guy.add_child(_charge_trail_emitter) -func _setup_charge_bar() -> void: - _charge_bar = Node3D.new() - _charge_bar.visible = false - add_child(_charge_bar) +func _setup_roll_sparks() -> void: + # Rammus Powerball ground spray — dirt/sparks flung outward from the spinning + # ball. World-space (local_coords off) so they peel off into a trail behind it. + var spark := _particle_sphere(0.05, 4, 2, _unshaded_material()) - var w := _CHARGE_BAR_WIDTH - var thickness := 0.16 + var ramp := Gradient.new() + ramp.set_color(0, Color(1.00, 0.78, 0.32, 1.0)) + ramp.set_color(1, Color(0.70, 0.42, 0.14, 0.0)) - # Dark translucent track behind the fill, slightly larger for a border look. - var track_mat := StandardMaterial3D.new() - track_mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED - track_mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA - track_mat.albedo_color = Color(0.02, 0.02, 0.04, 0.55) - var track_box := BoxMesh.new() - track_box.size = Vector3(w + 0.07, thickness + 0.07, thickness + 0.07) - track_box.material = track_mat - var track := MeshInstance3D.new() - track.mesh = track_box - track.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF - _charge_bar.add_child(track) + var sc := Curve.new() + sc.add_point(Vector2(0.0, 0.30)) + sc.add_point(Vector2(0.3, 1.00)) + sc.add_point(Vector2(1.0, 0.00)) - # Glowing fill bar; scaled along X each frame to show progress. - _charge_bar_fill_mat = StandardMaterial3D.new() - _charge_bar_fill_mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED - _charge_bar_fill_mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA - _charge_bar_fill_mat.emission_enabled = true - var fill_box := BoxMesh.new() - fill_box.size = Vector3(w, thickness, thickness) - fill_box.material = _charge_bar_fill_mat - _charge_bar_fill = MeshInstance3D.new() - _charge_bar_fill.mesh = fill_box - _charge_bar_fill.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF - _charge_bar.add_child(_charge_bar_fill) - - # Cool → hot colour ramp as the charge fills (matches the spark FX palette). - _charge_bar_ramp = Gradient.new() - _charge_bar_ramp.offsets = PackedFloat32Array([0.0, 0.6, 1.0]) - _charge_bar_ramp.colors = PackedColorArray([ - Color(0.25, 0.65, 1.0), - Color(1.0, 0.85, 0.2), - Color(1.0, 0.28, 0.05), - ]) - - -func _process(delta: float) -> void: - _update_charge_bar(delta) - - -func _update_charge_bar(delta: float) -> void: - if _charge_bar == null: - return - _charge_bar_time += delta - - var max_charge := DP.f("thrust_charge_time") - var charge := maxf(_thrust_left_charge, _thrust_right_charge) - var frac := clampf(charge / max_charge, 0.0, 1.0) if max_charge > 0.0 else 0.0 - - # Ease the whole bar in/out so it pops up when charging and fades when done. - var target := 1.0 if frac > 0.001 else 0.0 - _charge_bar_shown = move_toward(_charge_bar_shown, target, delta * 6.0) - if _charge_bar_shown <= 0.001: - _charge_bar.visible = false - return - _charge_bar.visible = true - - # Billboard toward the camera on the Y axis, staying upright. - var to_cam := camera_pivot.global_position - _charge_bar.global_position - _charge_bar.rotation.y = atan2(to_cam.x, to_cam.z) - - # Grow the fill from the left edge. - var w := _CHARGE_BAR_WIDTH - _charge_bar_fill.scale.x = maxf(frac, 0.0001) - _charge_bar_fill.position.x = -0.5 * w + 0.5 * w * frac - - # Colour + glow, with a fast pulse once fully charged. - var col := _charge_bar_ramp.sample(frac) - var pulse := 1.0 + (0.4 * sin(_charge_bar_time * 16.0) if frac >= 1.0 else 0.0) - _charge_bar_fill_mat.albedo_color = Color(col.r, col.g, col.b, 0.95) - _charge_bar_fill_mat.emission = col - _charge_bar_fill_mat.emission_energy_multiplier = 1.7 * pulse - - # Float above the bull with a gentle bob; a small bounce + rise on the pop-in. - var bob := 0.03 * sin(_charge_bar_time * 4.0) - _charge_bar.position.y = _CHARGE_BAR_HEIGHT + bob - (1.0 - _charge_bar_shown) * 0.3 - var appear := _charge_bar_shown * (1.06 - 0.06 * cos(_charge_bar_shown * PI)) - var full_pop := 1.0 + (0.08 * sin(_charge_bar_time * 16.0) if frac >= 1.0 else 0.0) - _charge_bar.scale = Vector3.ONE * appear * full_pop + _roll_spark_emitter = CPUParticles3D.new() + _roll_spark_emitter.position = Vector3(0.0, 0.10, 0.0) + _roll_spark_emitter.emitting = false + _roll_spark_emitter.one_shot = false + _roll_spark_emitter.amount = 46 + _roll_spark_emitter.lifetime = 0.45 + _roll_spark_emitter.randomness = 0.7 + _roll_spark_emitter.local_coords = false + _roll_spark_emitter.direction = Vector3(0.0, 1.0, 0.0) + _roll_spark_emitter.spread = 180.0 + _roll_spark_emitter.gravity = Vector3(0.0, -6.0, 0.0) + _roll_spark_emitter.initial_velocity_min = 3.0 + _roll_spark_emitter.initial_velocity_max = 8.0 + _roll_spark_emitter.scale_amount_min = 0.5 + _roll_spark_emitter.scale_amount_max = 1.3 + _roll_spark_emitter.mesh = spark + _roll_spark_emitter.color_ramp = ramp + _roll_spark_emitter.scale_amount_curve = sc + cube_guy.add_child(_roll_spark_emitter) func _setup_audio() -> void: @@ -334,7 +236,6 @@ func _set_dust_state(new_state: DustState) -> void: func _on_dp_changed(_key: String, _val: Variant) -> void: - _roll_damping = DP.f("roll_damping") if _hoof_emitters.is_empty() or _dust_state == DustState.NONE: return var prev := _dust_state @@ -464,6 +365,7 @@ func _activate_roll() -> void: _active_ability = 3 _ability_timer = DP.f("roll_duration") _roll_ramp = 0.0 + _roll_spin = 0.0 # Curl into the ball along the current heading (or facing when standing still) # and launch at the base speed — it ramps up from here the longer you roll. var flat := Vector3(velocity.x, 0.0, velocity.z) @@ -480,6 +382,9 @@ func _activate_roll() -> void: _bull_anim.play(_ANIM_ROLL) _legs.set(&"tail_ragdoll", true) # tail streams out behind _legs.set(&"charge_pitch_target", DP.f("charge_head_pitch")) # horns down, plowing + _legs.set(&"external_rotation", true) # roll owns the model's full orientation (tumble) + if _roll_spark_emitter: + _roll_spark_emitter.emitting = true _spawn_dash_burst() camera_pivot.call(&"trigger_hit", 0.35) if _huff_player: @@ -505,7 +410,14 @@ func _tick_roll(delta: float, steer: Vector3) -> void: velocity.x = _roll_dir.x * speed velocity.z = _roll_dir.z * speed - cube_guy.rotation.y = lerp_angle(cube_guy.rotation.y, atan2(_roll_dir.x, _roll_dir.z), delta * 12.0) + # Tumble the whole model like a Powerball: face the travel direction (yaw) then + # spin forward about the horizontal axis perpendicular to it, angular speed = v/r + # so it "rolls" without slipping. Legs yield rotation control while active. + var radius := maxf(DP.f("roll_spin_radius"), 0.1) + _roll_spin = wrapf(_roll_spin + (speed / radius) * delta, 0.0, TAU) + var facing := Basis(Vector3.UP, atan2(_roll_dir.x, _roll_dir.z)) + var tumble_axis := Vector3.UP.cross(_roll_dir).normalized() + cube_guy.basis = (Basis(tumble_axis, _roll_spin) * facing).scaled(_cube_scale) if _bull_anim and _bull_anim.has_animation(_ANIM_ROLL): _bull_anim.speed_scale = clampf(speed / maxf(top, 1.0), 0.6, 2.4) @@ -547,6 +459,9 @@ func _end_roll() -> void: _roll_ramp = 0.0 _legs.set(&"charge_pitch_target", 0.0) _legs.set(&"tail_ragdoll", false) + _legs.set(&"external_rotation", false) + if _roll_spark_emitter: + _roll_spark_emitter.emitting = false velocity.x *= 0.15 velocity.z *= 0.15 _play_idle() @@ -889,36 +804,6 @@ func _make_slam_ring_mesh() -> ArrayMesh: return mesh -func _apply_thrust(dir: Vector3) -> void: - var impulse := DP.f("thrust_impulse") - velocity.x += dir.x * impulse - velocity.z += dir.z * impulse - if is_on_floor(): - velocity.y += DP.f("thrust_vertical") - var flat := Vector2(velocity.x, velocity.z) - var spd := flat.length() - if spd > DP.f("max_speed"): - var s := DP.f("max_speed") / spd - velocity.x *= s - velocity.z *= s - - -func _apply_kick(direction: Vector3) -> void: - var force := DP.f("kick_impulse") * randf_range(1.0 - DP.f("kick_force_var"), 1.0 + DP.f("kick_force_var")) - var spread := deg_to_rad(randf_range(-DP.f("kick_spread"), DP.f("kick_spread"))) - var kick_dir := direction.rotated(Vector3.UP, spread) - velocity.x += kick_dir.x * force - velocity.z += kick_dir.z * force - if is_on_floor(): - velocity.y += DP.f("kick_vertical") * randf_range(0.75, 1.25) - var flat := Vector2(velocity.x, velocity.z) - var spd := flat.length() - if spd > DP.f("max_speed"): - var s := DP.f("max_speed") / spd - velocity.x *= s - velocity.z *= s - - func _physics_process(delta: float) -> void: # ── Gravity ─────────────────────────────────────────────────────────────── if not is_on_floor(): @@ -944,12 +829,15 @@ func _physics_process(delta: float) -> void: if _ability_active: _ability_timer -= delta if _ability_timer <= 0.0: - _ability_active = false - _active_ability = -1 - _legs.set(&"charge_pitch_target", 0.0) - _legs.set(&"tail_ragdoll", false) - _slam_pending = false - _play_idle() + if _active_ability == 3: + _end_roll() # tears down roll-specific state (sparks, tumble control) + else: + _ability_active = false + _active_ability = -1 + _legs.set(&"charge_pitch_target", 0.0) + _legs.set(&"tail_ragdoll", false) + _slam_pending = false + _play_idle() # ── Boulder roll ────────────────────────────────────────────────────────── # While rolling, the ability owns movement entirely (its own accel, low friction @@ -958,56 +846,23 @@ func _physics_process(delta: float) -> void: _tick_roll(delta, direction) return - # ── Mouse button single-thrust actions ─────────────────────────────────────── - # Left only → thrust NE (forward-right diagonal) - # Right only → thrust NW (forward-left diagonal) - var left_held := Input.is_action_pressed(&"thrust_left") - var right_held := Input.is_action_pressed(&"thrust_right") - - if left_held and right_held: - _thrust_left_charge = 0.0 - _thrust_right_charge = 0.0 - else: - if left_held: - _thrust_left_charge = minf(_thrust_left_charge + delta, DP.f("thrust_charge_time")) - elif Input.is_action_just_released(&"thrust_left") and _thrust_left_charge > 0.0: - var t := _thrust_left_charge / DP.f("thrust_charge_time") - var angle := lerpf(deg_to_rad(DP.f("thrust_min_angle")), deg_to_rad(DP.f("thrust_max_angle")), t) - var raw := cube_guy.global_transform.basis.z - _apply_thrust(Vector3(raw.x, 0.0, raw.z).normalized().rotated(Vector3.UP, -angle)) - _thrust_left_charge = 0.0 - - if right_held: - _thrust_right_charge = minf(_thrust_right_charge + delta, DP.f("thrust_charge_time")) - elif Input.is_action_just_released(&"thrust_right") and _thrust_right_charge > 0.0: - var t := _thrust_right_charge / DP.f("thrust_charge_time") - var angle := lerpf(deg_to_rad(DP.f("thrust_min_angle")), deg_to_rad(DP.f("thrust_max_angle")), t) - var raw := cube_guy.global_transform.basis.z - _apply_thrust(Vector3(raw.x, 0.0, raw.z).normalized().rotated(Vector3.UP, angle)) - _thrust_right_charge = 0.0 - - # Fire spark burst the frame either single-button charge first hits max - var max_charge := DP.f("thrust_charge_time") - var either_full := _thrust_left_charge >= max_charge or _thrust_right_charge >= max_charge - if either_full and not _charge_was_full: - _charge_ready_emitter.restart() - _charge_was_full = either_full - - # Reset kick timer on landing so the first kick after a bounce is immediate - if on_floor and not _was_on_floor and direction: - _kick_timer = 0.0 _was_on_floor = on_floor - # ── Periodic kick ───────────────────────────────────────────────────────── - _kick_timer = maxf(0.0, _kick_timer - delta) - if direction and _kick_timer <= 0.0: - _apply_kick(direction) - _kick_timer = DP.f("kick_interval") - - # ── Rolling friction (exponential, frame-rate independent) ──────────────── - var retain := pow(_roll_damping, delta) - velocity.x *= retain - velocity.z *= retain + # ── Ground locomotion — smooth accelerate / friction ────────────────────── + # WASD/arrows drive the bull directly: hold a direction to ramp up to max_speed + # and steer, release to coast to a stop. Ability bursts (dash) and wall bounces + # can exceed max_speed — while a direction is held we steer that momentum without + # braking it (cap tracks the current speed); friction only bleeds the excess once + # input is released. + var flat_vel := Vector3(velocity.x, 0.0, velocity.z) + var max_speed := DP.f("max_speed") + if direction.length_squared() > 0.01: + var cap := maxf(max_speed, flat_vel.length()) + flat_vel = flat_vel.move_toward(direction * cap, DP.f("move_accel") * delta) + else: + flat_vel = flat_vel.move_toward(Vector3.ZERO, DP.f("move_friction") * delta) + velocity.x = flat_vel.x + velocity.z = flat_vel.z # ── Visual rotation follows velocity direction ───────────────────────────── var flat_speed := Vector2(velocity.x, velocity.z).length() diff --git a/project.godot b/project.godot index 860001e..8f82754 100644 --- a/project.godot +++ b/project.godot @@ -77,18 +77,6 @@ toggle_mouse_capture={ "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(461, 22),"global_position":Vector2(470, 70),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null) ] } -thrust_left={ -"deadzone": 0.2, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null) -] -} -thrust_right={ -"deadzone": 0.2, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null) -] -} ability_kick={ "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":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)