Minor Update 1.2.3.0

Lots of stuff, most notably asynchronously loading images and downloading them on the website.
This commit is contained in:
Gabriel John Wallace Johnson
2026-07-27 21:11:04 -04:00
parent 5b8a793f42
commit c3a6ce2f51
2380 changed files with 24944 additions and 18896 deletions

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/Blue.webp-4427018a285a45558842afe021c647a7.ct
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/BlueArts.webp-e70f70c762faea4835fadeb56de6366
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/Colorless.webp-76684a52d0998616ed52b796ea9a55
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/ColorlessArts.webp-0057646c2c08555de72e2f6388
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/Green.webp-cd1820e4348131b7e8f5f763ddcde0a9.c
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/GreenArts.webp-ae13faae8c3ecc8eb2df6398b93406
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/Purple.webp-9be654c9bc04aef006bd136ba4277f3c.
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/PurpleArts.webp-12e149fad0c42931ae87add302b2a
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/Red.webp-1b6f7e323d4bb2efcdcac67905fb470b.cte
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/RedArts.webp-2500955345c8c22bb6584b4a5194523f
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/White.webp-38607b98d80e037473e7df274df3f665.c
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/WhiteArts.webp-70023115f6eb3f1a752a02fa0ae3b7
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/Yellow.webp-2512597f482ad07dde978282ecaad948.
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -15,16 +15,22 @@ dest_files=["res://.godot/imported/YellowArts.webp-38d2c74ac896ccfc6e1e9bf1d0c66
[params]
compress/mode=0
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,23 +3,23 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://brfosqsw30a1j"
path.s3tc="res://.godot/imported/61457.png-62eced1714df66e7db715f5c4fea081d.s3tc.ctex"
path.etc2="res://.godot/imported/61457.png-62eced1714df66e7db715f5c4fea081d.etc2.ctex"
path="res://.godot/imported/61457.png-62eced1714df66e7db715f5c4fea081d.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/DeckBuilder/61457.png"
dest_files=["res://.godot/imported/61457.png-62eced1714df66e7db715f5c4fea081d.s3tc.ctex", "res://.godot/imported/61457.png-62eced1714df66e7db715f5c4fea081d.etc2.ctex"]
dest_files=["res://.godot/imported/61457.png-62eced1714df66e7db715f5c4fea081d.ctex"]
[params]
compress/mode=2
compress/mode=4
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
@@ -27,6 +27,10 @@ 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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ngxbbonnmuab"
path.s3tc="res://.godot/imported/Deck_Builder_BG.png-7af13507ce3e552ba1711794462a696b.s3tc.ctex"
path.etc2="res://.godot/imported/Deck_Builder_BG.png-7af13507ce3e552ba1711794462a696b.etc2.ctex"
path="res://.godot/imported/Deck_Builder_BG.png-7af13507ce3e552ba1711794462a696b.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/DeckBuilder/Deck_Builder_BG.png"
dest_files=["res://.godot/imported/Deck_Builder_BG.png-7af13507ce3e552ba1711794462a696b.s3tc.ctex", "res://.godot/imported/Deck_Builder_BG.png-7af13507ce3e552ba1711794462a696b.etc2.ctex"]
dest_files=["res://.godot/imported/Deck_Builder_BG.png-7af13507ce3e552ba1711794462a696b.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dexhtkhame0ay"
path.s3tc="res://.godot/imported/Notification.png-aae1e2e8e0d93b404ff45a06765ca6b9.s3tc.ctex"
path.etc2="res://.godot/imported/Notification.png-aae1e2e8e0d93b404ff45a06765ca6b9.etc2.ctex"
path="res://.godot/imported/Notification.png-aae1e2e8e0d93b404ff45a06765ca6b9.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Game Side Menu/Notification.png"
dest_files=["res://.godot/imported/Notification.png-aae1e2e8e0d93b404ff45a06765ca6b9.s3tc.ctex", "res://.godot/imported/Notification.png-aae1e2e8e0d93b404ff45a06765ca6b9.etc2.ctex"]
dest_files=["res://.godot/imported/Notification.png-aae1e2e8e0d93b404ff45a06765ca6b9.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cx76tmf8royup"
path.s3tc="res://.godot/imported/Side Menu.png-fadf13262724f0349f3983bc5226b9e3.s3tc.ctex"
path.etc2="res://.godot/imported/Side Menu.png-fadf13262724f0349f3983bc5226b9e3.etc2.ctex"
path="res://.godot/imported/Side Menu.png-fadf13262724f0349f3983bc5226b9e3.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Game Side Menu/Side Menu.png"
dest_files=["res://.godot/imported/Side Menu.png-fadf13262724f0349f3983bc5226b9e3.s3tc.ctex", "res://.godot/imported/Side Menu.png-fadf13262724f0349f3983bc5226b9e3.etc2.ctex"]
dest_files=["res://.godot/imported/Side Menu.png-fadf13262724f0349f3983bc5226b9e3.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://syjyaota42p2"
path.s3tc="res://.godot/imported/scroll_icon_2.png-909c8abd03467212f551dc6926cdb2ec.s3tc.ctex"
path.etc2="res://.godot/imported/scroll_icon_2.png-909c8abd03467212f551dc6926cdb2ec.etc2.ctex"
path="res://.godot/imported/scroll_icon_2.png-909c8abd03467212f551dc6926cdb2ec.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Game Side Menu/scroll_icon_2.png"
dest_files=["res://.godot/imported/scroll_icon_2.png-909c8abd03467212f551dc6926cdb2ec.s3tc.ctex", "res://.godot/imported/scroll_icon_2.png-909c8abd03467212f551dc6926cdb2ec.etc2.ctex"]
dest_files=["res://.godot/imported/scroll_icon_2.png-909c8abd03467212f551dc6926cdb2ec.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c6bxi4ho8us5e"
path.s3tc="res://.godot/imported/Scroll_Icon.png-0201251c729dabb37946a06c02bd2335.s3tc.ctex"
path.etc2="res://.godot/imported/Scroll_Icon.png-0201251c729dabb37946a06c02bd2335.etc2.ctex"
path="res://.godot/imported/Scroll_Icon.png-0201251c729dabb37946a06c02bd2335.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Main Menu Assets/Scroll_Icon.png"
dest_files=["res://.godot/imported/Scroll_Icon.png-0201251c729dabb37946a06c02bd2335.s3tc.ctex", "res://.godot/imported/Scroll_Icon.png-0201251c729dabb37946a06c02bd2335.etc2.ctex"]
dest_files=["res://.godot/imported/Scroll_Icon.png-0201251c729dabb37946a06c02bd2335.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

File diff suppressed because it is too large Load Diff

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://btlmd875gxsio"
path.s3tc="res://.godot/imported/text box.png-58e4495ced88f02fc63f48a0ed9d5559.s3tc.ctex"
path.etc2="res://.godot/imported/text box.png-58e4495ced88f02fc63f48a0ed9d5559.etc2.ctex"
path="res://.godot/imported/text box.png-58e4495ced88f02fc63f48a0ed9d5559.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Main Menu Assets/text box.png"
dest_files=["res://.godot/imported/text box.png-58e4495ced88f02fc63f48a0ed9d5559.s3tc.ctex", "res://.godot/imported/text box.png-58e4495ced88f02fc63f48a0ed9d5559.etc2.ctex"]
dest_files=["res://.godot/imported/text box.png-58e4495ced88f02fc63f48a0ed9d5559.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://3fo5e4j2doqj"
path.s3tc="res://.godot/imported/text_box_disabled.png-8ec3e4c5b529960a8ae2f7a9e89aca1c.s3tc.ctex"
path.etc2="res://.godot/imported/text_box_disabled.png-8ec3e4c5b529960a8ae2f7a9e89aca1c.etc2.ctex"
path="res://.godot/imported/text_box_disabled.png-8ec3e4c5b529960a8ae2f7a9e89aca1c.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Main Menu Assets/text_box_disabled.png"
dest_files=["res://.godot/imported/text_box_disabled.png-8ec3e4c5b529960a8ae2f7a9e89aca1c.s3tc.ctex", "res://.godot/imported/text_box_disabled.png-8ec3e4c5b529960a8ae2f7a9e89aca1c.etc2.ctex"]
dest_files=["res://.godot/imported/text_box_disabled.png-8ec3e4c5b529960a8ae2f7a9e89aca1c.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,23 +3,23 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://vsu56xqqqf7r"
path.s3tc="res://.godot/imported/playmat.png-5a20d5c23299409d3648121c00da2509.s3tc.ctex"
path.etc2="res://.godot/imported/playmat.png-5a20d5c23299409d3648121c00da2509.etc2.ctex"
path="res://.godot/imported/playmat.png-5a20d5c23299409d3648121c00da2509.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://CyberAssets/Playmat/playmat.png"
dest_files=["res://.godot/imported/playmat.png-5a20d5c23299409d3648121c00da2509.s3tc.ctex", "res://.godot/imported/playmat.png-5a20d5c23299409d3648121c00da2509.etc2.ctex"]
dest_files=["res://.godot/imported/playmat.png-5a20d5c23299409d3648121c00da2509.ctex"]
[params]
compress/mode=2
compress/mode=4
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
@@ -27,6 +27,10 @@ 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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dhrtgt8n0e50o"
path.s3tc="res://.godot/imported/ENbloomEF.png-6f0bbddf2292f381cff69ca0a99a41c2.s3tc.ctex"
path.etc2="res://.godot/imported/ENbloomEF.png-6f0bbddf2292f381cff69ca0a99a41c2.etc2.ctex"
path="res://.godot/imported/ENbloomEF.png-6f0bbddf2292f381cff69ca0a99a41c2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/ENbloomEF.png"
dest_files=["res://.godot/imported/ENbloomEF.png-6f0bbddf2292f381cff69ca0a99a41c2.s3tc.ctex", "res://.godot/imported/ENbloomEF.png-6f0bbddf2292f381cff69ca0a99a41c2.etc2.ctex"]
dest_files=["res://.godot/imported/ENbloomEF.png-6f0bbddf2292f381cff69ca0a99a41c2.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dwdjqnur5fav0"
path.s3tc="res://.godot/imported/ENcollabEF.png-4b268aa48618d46ffbbf8e14d5968cf3.s3tc.ctex"
path.etc2="res://.godot/imported/ENcollabEF.png-4b268aa48618d46ffbbf8e14d5968cf3.etc2.ctex"
path="res://.godot/imported/ENcollabEF.png-4b268aa48618d46ffbbf8e14d5968cf3.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/ENcollabEF.png"
dest_files=["res://.godot/imported/ENcollabEF.png-4b268aa48618d46ffbbf8e14d5968cf3.s3tc.ctex", "res://.godot/imported/ENcollabEF.png-4b268aa48618d46ffbbf8e14d5968cf3.etc2.ctex"]
dest_files=["res://.godot/imported/ENcollabEF.png-4b268aa48618d46ffbbf8e14d5968cf3.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://642o1bwe7oxc"
path.s3tc="res://.godot/imported/ENgift.png-d7488bb72528e7d4ac44ce6c773167fa.s3tc.ctex"
path.etc2="res://.godot/imported/ENgift.png-d7488bb72528e7d4ac44ce6c773167fa.etc2.ctex"
path="res://.godot/imported/ENgift.png-d7488bb72528e7d4ac44ce6c773167fa.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/ENgift.png"
dest_files=["res://.godot/imported/ENgift.png-d7488bb72528e7d4ac44ce6c773167fa.s3tc.ctex", "res://.godot/imported/ENgift.png-d7488bb72528e7d4ac44ce6c773167fa.etc2.ctex"]
dest_files=["res://.godot/imported/ENgift.png-d7488bb72528e7d4ac44ce6c773167fa.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://nj7pj3bqpxew"
path.s3tc="res://.godot/imported/bloomEF.png-a57ef6c89f11775ddfb9322f35cbbb04.s3tc.ctex"
path.etc2="res://.godot/imported/bloomEF.png-a57ef6c89f11775ddfb9322f35cbbb04.etc2.ctex"
path="res://.godot/imported/bloomEF.png-a57ef6c89f11775ddfb9322f35cbbb04.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/bloomEF.png"
dest_files=["res://.godot/imported/bloomEF.png-a57ef6c89f11775ddfb9322f35cbbb04.s3tc.ctex", "res://.godot/imported/bloomEF.png-a57ef6c89f11775ddfb9322f35cbbb04.etc2.ctex"]
dest_files=["res://.godot/imported/bloomEF.png-a57ef6c89f11775ddfb9322f35cbbb04.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://6qawumi4sj35"
path.s3tc="res://.godot/imported/collabEF.png-3d5bcd893201111a9beb8ac7f67a0218.s3tc.ctex"
path.etc2="res://.godot/imported/collabEF.png-3d5bcd893201111a9beb8ac7f67a0218.etc2.ctex"
path="res://.godot/imported/collabEF.png-3d5bcd893201111a9beb8ac7f67a0218.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/collabEF.png"
dest_files=["res://.godot/imported/collabEF.png-3d5bcd893201111a9beb8ac7f67a0218.s3tc.ctex", "res://.godot/imported/collabEF.png-3d5bcd893201111a9beb8ac7f67a0218.etc2.ctex"]
dest_files=["res://.godot/imported/collabEF.png-3d5bcd893201111a9beb8ac7f67a0218.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dckvo2drp1rp3"
path.s3tc="res://.godot/imported/gift.png-db2891a04e3a67b72db7420c55abca26.s3tc.ctex"
path.etc2="res://.godot/imported/gift.png-db2891a04e3a67b72db7420c55abca26.etc2.ctex"
path="res://.godot/imported/gift.png-db2891a04e3a67b72db7420c55abca26.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/gift.png"
dest_files=["res://.godot/imported/gift.png-db2891a04e3a67b72db7420c55abca26.s3tc.ctex", "res://.godot/imported/gift.png-db2891a04e3a67b72db7420c55abca26.etc2.ctex"]
dest_files=["res://.godot/imported/gift.png-db2891a04e3a67b72db7420c55abca26.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dmot806y76won"
path.s3tc="res://.godot/imported/tokkou_50_blue.png-d22bcb24a0bd6da682fa48d89fe51fa0.s3tc.ctex"
path.etc2="res://.godot/imported/tokkou_50_blue.png-d22bcb24a0bd6da682fa48d89fe51fa0.etc2.ctex"
path="res://.godot/imported/tokkou_50_blue.png-d22bcb24a0bd6da682fa48d89fe51fa0.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/tokkou_50_blue.png"
dest_files=["res://.godot/imported/tokkou_50_blue.png-d22bcb24a0bd6da682fa48d89fe51fa0.s3tc.ctex", "res://.godot/imported/tokkou_50_blue.png-d22bcb24a0bd6da682fa48d89fe51fa0.etc2.ctex"]
dest_files=["res://.godot/imported/tokkou_50_blue.png-d22bcb24a0bd6da682fa48d89fe51fa0.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c8kqfiug18aoi"
path.s3tc="res://.godot/imported/tokkou_50_green.png-a034fc62fee92710b601223cc020a3d1.s3tc.ctex"
path.etc2="res://.godot/imported/tokkou_50_green.png-a034fc62fee92710b601223cc020a3d1.etc2.ctex"
path="res://.godot/imported/tokkou_50_green.png-a034fc62fee92710b601223cc020a3d1.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/tokkou_50_green.png"
dest_files=["res://.godot/imported/tokkou_50_green.png-a034fc62fee92710b601223cc020a3d1.s3tc.ctex", "res://.godot/imported/tokkou_50_green.png-a034fc62fee92710b601223cc020a3d1.etc2.ctex"]
dest_files=["res://.godot/imported/tokkou_50_green.png-a034fc62fee92710b601223cc020a3d1.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://jmo0dt4oav6s"
path.s3tc="res://.godot/imported/tokkou_50_purple.png-37bac2e2a0eb3fb4511489cd95e22fed.s3tc.ctex"
path.etc2="res://.godot/imported/tokkou_50_purple.png-37bac2e2a0eb3fb4511489cd95e22fed.etc2.ctex"
path="res://.godot/imported/tokkou_50_purple.png-37bac2e2a0eb3fb4511489cd95e22fed.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/tokkou_50_purple.png"
dest_files=["res://.godot/imported/tokkou_50_purple.png-37bac2e2a0eb3fb4511489cd95e22fed.s3tc.ctex", "res://.godot/imported/tokkou_50_purple.png-37bac2e2a0eb3fb4511489cd95e22fed.etc2.ctex"]
dest_files=["res://.godot/imported/tokkou_50_purple.png-37bac2e2a0eb3fb4511489cd95e22fed.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://enh4wvoo81sc"
path.s3tc="res://.godot/imported/tokkou_50_red.png-13cb55976081e0d685e96d0eca2c6a2a.s3tc.ctex"
path.etc2="res://.godot/imported/tokkou_50_red.png-13cb55976081e0d685e96d0eca2c6a2a.etc2.ctex"
path="res://.godot/imported/tokkou_50_red.png-13cb55976081e0d685e96d0eca2c6a2a.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/tokkou_50_red.png"
dest_files=["res://.godot/imported/tokkou_50_red.png-13cb55976081e0d685e96d0eca2c6a2a.s3tc.ctex", "res://.godot/imported/tokkou_50_red.png-13cb55976081e0d685e96d0eca2c6a2a.etc2.ctex"]
dest_files=["res://.godot/imported/tokkou_50_red.png-13cb55976081e0d685e96d0eca2c6a2a.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dieh44hp11ukf"
path.s3tc="res://.godot/imported/tokkou_50_white.png-820869330fb268f22b86fbaf34ab9587.s3tc.ctex"
path.etc2="res://.godot/imported/tokkou_50_white.png-820869330fb268f22b86fbaf34ab9587.etc2.ctex"
path="res://.godot/imported/tokkou_50_white.png-820869330fb268f22b86fbaf34ab9587.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/tokkou_50_white.png"
dest_files=["res://.godot/imported/tokkou_50_white.png-820869330fb268f22b86fbaf34ab9587.s3tc.ctex", "res://.godot/imported/tokkou_50_white.png-820869330fb268f22b86fbaf34ab9587.etc2.ctex"]
dest_files=["res://.godot/imported/tokkou_50_white.png-820869330fb268f22b86fbaf34ab9587.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d1tgp5jxi1pd6"
path.s3tc="res://.godot/imported/tokkou_50_yellow.png-3951be36e46e39ed6a19dad3b2470500.s3tc.ctex"
path.etc2="res://.godot/imported/tokkou_50_yellow.png-3951be36e46e39ed6a19dad3b2470500.etc2.ctex"
path="res://.godot/imported/tokkou_50_yellow.png-3951be36e46e39ed6a19dad3b2470500.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://Icons/tokkou_50_yellow.png"
dest_files=["res://.godot/imported/tokkou_50_yellow.png-3951be36e46e39ed6a19dad3b2470500.s3tc.ctex", "res://.godot/imported/tokkou_50_yellow.png-3951be36e46e39ed6a19dad3b2470500.etc2.ctex"]
dest_files=["res://.godot/imported/tokkou_50_yellow.png-3951be36e46e39ed6a19dad3b2470500.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

318
README.md
View File

@@ -1,27 +1,307 @@
# holoDelta
An unofficial Hololive TCG simulator, worked on in my spare time.
# holoDelta Quick Start Guide
## Quick start
You can download the application at https://github.com/GabeJWJ/holoDelta/releases/latest for Windows, Mac, and Linux. The application is standalone and needs nothing else to run.
Try the game now at https://holodelta.azurewebsites.net/game/index.html!
There is also a web version at holodelta.net or holodelta.azurewebsites.net (either should work but azure can be weird so try the other if one doesnt work). The web version is not ideal for several reasons, so I recommend you use the application if you intend to use delta a lot.
To setup and run the web server locally:
```bash
git clone https://github.com/GabeJWJ/holoDelta.git
cd holoDelta/ServerStuff
python -m pip install -r requirements.txt
uvicorn server:app --reload
```
If you use the Mac version, you will need to take some special steps
After extracting zip file somewhere, open a terminal at the folder containing the app and run the command xattr -dr com.apple.quarantine "holoDelta.app"
Notes for setting up:
- For running your own version of the server, all you need is in the "ServerStuff" folder, with the exception of a "holodelta_web" folder containing a web export of the project. DO NOT EXPORT WITH DEBUG.
- Change the "websocketURL" in server.gd to wherever you're running your local server.
- You may need to set "WebSocket" in "board" to not use WSS.
The discord is at https://discord.com/invite/dDCpFMMENM.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md). **I am committed to accepting and encouraging community contributions!** The code is a mess. I am sure it is needlessly confusing and wildly inconsistent in style and format.
# Setup
If you are interested in contributing but are confused by the code, please message me on Discord. I can be found on the [Hololive OCG Fan Server](https://discord.com/invite/dDCpFMMENM).
If things go smoothly, there should be no setup on your part. The application will automatically download the latest cardData.zip file to the correct location and connect to the server.
If you saw something here about a bounty, Saum over on Discord immediately got it.
If the application fails to download the cardData.zip file, it will throw up an error and try to send you to https://github.com/GabeJWJ/holoDelta/releases/tag/CardData to manually download the file. There are instructions there, but essentially you need to download cardData.zip (not cardData.db) and place it unextracted in your “user folder.”
If the application fails to connect to the server… sorry. Try again in a bit; the server may just be updating.
# User Folder
I will refer at several points to a “user folder.” In fact, I already did so earlier. This is where the persistent files that delta needs to work correctly are stored. Where this folder is depends on your OS.
Windows: C://Users/[name]/AppData/Roaming/Godot/app_userdata/HoloDelta (May change if you remapped %APPDATA%)
Linux: ~/.local/share/godot/app_userdata/HoloDelta
MacOS: ~/Library/Application Support/Godot/app_userdata/HoloDelta
Note that you may need to enable the ability to view hidden files/folders in your file browser.
On the main menu, if you click “Info” and then “Deck Location” it will open your decks folder, which is in your user folder.
The user folder contains cardData.zip, settings.json, your decks folder, and a logs folder. Also some other weird folders Godot uses, but those are the only ones you need to worry about.
The website technically also has a user folder somewhere in your cookies, but I dont know how to access it. There are workarounds for the things you would need.
# Updates
On the bottom right of the main menu, you can see your current Client Version and Card Version.
Client Version refers to the application itself and is notated with the 1.[Major].[Minor].[Patch] system. This will not show on the website.
Card Version refers to the database of cards that the simulator is using and is notated with the date of the last update.
When launching the application, if it detects a client update it will point you to the github page to download the latest version. I cant overwrite the executable youre currently running, so you have to download it yourself. If it detects a card update, it can download that itself. You may choose not to though, in case you need to quickly do something or you know youll have to manually download it anyway.
# Basic Settings
If you click the gear icon on the top right of the main menu, youll see the settings menu.
“Match Card Language” will attempt to change the card images to be in the language you have your client set to. If thats on, “Allow Proxies” will allow for proxies to be used when an official version in your language is unavailable. That currently does very little, so dont worry about it.
There are two separate volume sliders for the sound effects and background music.
There is a whole section to change keybindings.
# Language
The middle button in the group of three on the bottom left changes the language of the client. Note that not all languages have translated everything; it will fall back to English when it cant find a translation.
The languages that are in delta are precisely the ones that people donate their time to. If you would like to help translate delta into your language, please DM me. I can get that set up. I can also accept proxies in different languages. Just make sure you have permission from whoever made them.
# Only EN
The English and Japanese versions of the game are (for now at least) separate with distinct cardpools and restriction lists. As such, delta can go between the two using the “Only EN” button on the main menu.
With “Only EN” enabled, you will still be able to use all of the different alt arts of each card even if they are only in Japanese. You will just only be able to use cards that are legal in EN play. This is for logistical reasons (ask about Friendly PC).
This setting changes not only what cards appear in the deckbuilder, but also what shows up in your list of decks and what lobbies/games are visible to you. This is why its on the main menu and not in the deckbuilder.
If you have this setting off you can still see and join “Only EN” lobbies, but they will be marked as such.
# Decks
Decks are stored in json files in the decks subfolder of your “user folder.” On the application, you can go to the main menu and click “Info” then “Deck Location” to go to this folder to share the files.
On the website it is difficult to find the actual folder, so there is an “Import/Export (WIP)” tab in the deck builder with a button to download the JSON file. It will be disabled if the deck is not legal, so please check the tooltip on the save button for current issues.
When loading a deck, if you scroll to the bottom of the list youll see a “Load From File” button that can load a deck from a json file. This wont add the deck to your decks folder though; youll need to load the file in your deckbuilder and then save it there.
When loading a deck, each deck button has a red trash can icon in the top left. Clicking that will delete the deck.
# Deckbuilder
If you click the “Create/Edit Deck” button on the main menu, it will take you to the deck builder. Theres a lot here, so Ill try to focus on the non-obvious parts.
Left clicking a card (either in the deck or on the rightside panel) will add a copy of that card to your deck. Right clicking it will remove a copy. The exception is oshis which can only be added, overwriting whatever oshi is currently there.
On the cheer panel, there are buttons for multipliers. This will determine how many copies will be added (resp. removed) when left (resp. right) clicking a cheer card on the side panel. Left and right clicking on the cheer in the deck will always add or remove exactly one copy.
The arrows underneath cards on the right panel will change what alternate art youre using for the card. You can mix and match.
The searchbar will search the cards entire raw text, including the behind-the-scenes commands that cause images to appear in the info panel. As such, there may be some strange results when searching.
If the save button is greyed out, theres probably an issue with the legality of your deck. Hovering over the save button will display a popup with a list of reasons the deck is currently illegal.
The textbox below the deck is for the display name of the deck. This is what will appear in your list of decks when picking one to play.
When you go to save the deck, you will be given two options. You can overwrite an existing deck file by clicking on the corresponding button (you do not hit “Save”), or you can type a filename (not including the .json) in the textbox below and hit “Save.”
On the website there is an “Import/Export (WIP)” tab in the deck builder with a button to download the JSON file. It will be disabled if the deck is not legal, so please check the tooltip on the save button for current issues.
# Connection
Ill start off this section with a preemptive apology for how bad the server connection is. The internet is not my area of expertise.
Im hosting the server with Microsoft Azure, and it pisses me off. It has in the past just suddenly made the connection unusable for like a month with no discernible explanation.
If your connection flickers even briefly, you will be kicked from the game and be unable to rejoin. If you have an unstable internet connection, Im sorry but it will be difficult and frustrating to use delta.
For some reason Azure has multiple instances of the server (usually just two) you can connect to even though it really shouldnt. As such, you may not be able to see a lobby/game you know exists. In the top left of the main menu, there is a “Quick Refresh” button that will retry connecting the server, potentially connecting to the other instance. The randomly-generated instance ID is written beneath that button, so you can tell when it changes or coordinate with a friend to be sure youre on the same instance.
I recognize thats annoying, but I cant stress enough that I didnt choose this and have no control over it.
It is theoretically possible though vanishingly unlikely that both instances generate the same ID, at which point idk yell at me and Ill restart the server.
Also, the only thing you can do without being connected to the server is build a deck.
# Loading Card Images
The most storage/memory-intensive part of delta by far is storing/loading all of the images for the cards. I would imagine this is not unusual for simulators.
Delta uses a system that will asynchronously load the card images as needed. This shouldnt be very noticeable in-game (maybe youll be able to see some cards loading at the very start), but will be rather noticeable in the deckbuilder as it needs to load many cards at once. It should still be fully functional while cards are loading, but please have patience with it.
In fact the deckbuilder will only immediately load the first art of each card when opened, saving the alt arts to only be loaded when you click over to them.
The storage issue comes into play with the website. Packaging the card images into the actual webapp will result in a deliverable that is way too large to be feasible. As such, the website does not have the card images stored and will instead attempt to download each card image from github as needed. This will be much more noticeable than the loading on the app version, so please be patient.
The website will attempt to store these downloaded images in your cookies for quick use later on, but this repository will have to be deleted every time the card database updates. This is because images get updated rather regularly and there is no mechanism to sort out which ones were updated.
# How To Play The Hololive OCG
I mean, I should cover my bases.
You can find the official rule book at https://en.hololive-official-cardgame.com/wp-content/themes/tcg_en/assets/img/rule/official_rule_book_ver1_02.pdf (it is remarkably thorough I approve).
For a quick overview, you can look at the quick manual at https://en.hololive-official-cardgame.com/wp-content/themes/tcg_en/assets/img/rule/quick_manual_260507.pdf.
If you prefer to watch a video to see the game more in action, you can check out the official caravan learning video narrated by Kiara at https://www.youtube.com/watch?v=_-9QjVI7vcg.
That video is kind of slow-paced because of the context it was presented in though, so you may prefer Liam of Weiss And Chills video at https://www.youtube.com/watch?v=ebk0F7vsalU.
On the other end of the spectrum would be my own video that spends the first ~40 minutes on a very thorough overview of how to play the game (including a full sample game) addressing as many common confusions as I could at https://www.youtube.com/watch?v=3T2tVYqvGvo. Ill be the first to admit though that I may have overdone it and its kind of hard to follow without a baseline understanding.
Also, all three of the videos are outdated because there were some rule changes. Your oshi cards are revealed to your opponent from the very start of the preliminary phase, and the mulligan rules were changed (for the better). Refer to the official rule book for the new mulligan system.
# Online Play
The stack of buttons in the center of the main menu are related to actually playing a game.
The text field at the top sets your in-game name. There is no account syncing or username reservation.
“Create Lobby” takes you to a menu to select options for hosting a new lobby. The “Private” toggle will make it so that the lobby doesnt appear in the “Join Lobby” menu and must be joined directly. The “Allow Public Spectators” toggle will make it so that the game you eventually create will appear in the “Spectate Game” menu. The “Banlist” dropdown will select what banlist both you and your opponent will be beholden to.
“Join Lobby” takes you to a menu to join an existing lobby. You can click on any public lobby to join it, or you can enter the code of a private lobby in the text field at the bottom and click “Join Lobby” (or press Enter).
“Spectate Game” takes you to a menu to spectate an existing game. You can click on any publicly-viewable game to spectate it, or you can enter the code of a game in the text field at the bottom and click “Spectate Game” (or press Enter). You find the code of a game youre part of by going to the settings tab on the sidebar.
Delta currently does not offer matchmaking. Please play with friends or find someone to play with using the #lfg channel in the discord.
# Navigating A Lobby
The lobby menu is split into two parts. On the right, you have the lobby code to share for private lobbies and the list of potential opponents. The host can choose one to battle. On the left, you and your opponent can select decks and ready up. If your chosen deck isnt legal, you will get a message back from the server explaining what the problem is. The host can choose a new opponent even after their current one readies up.
Once both players have chosen their decks and readied up, the host can press “Start Game” on the bottom right to begin. Any unchosen players will be given a prompt to spectate the game if “Allow Public Spectators” was selected when creating the lobby.
# Banlists
The hololive OCG does not currently have a banlist so to speak, but it does have a restriction list of cards that are restricted to one copy. This can change over time and be different between versions (EN and JP).
There are also regularly cards in holoDelta that have not actually been released yet (as there is a lengthy spoiler season before a new set comes out).
The “Current” banlist enforces the restriction list and forbids using any unreleased cards. The “Current + Unreleased” banlist only enforce the restriction list but permits unreleased cards. The “Current (EN)” and “Current + Unreleased (EN)” banlists do the same but for the EN format. Although the latter has yet to be different from the former.
# Goldfishing
In the context of trading card games, the word “goldfish” as a verb means to play a game with just one deck (or with an impotent opponent). The purpose is usually to test that one deck, going through the motions to see what thresholds it is or isnt hitting and labbing out combos/interactions.
You can press the “Goldfish” button on the main menu to do this in delta. You select a deck and then play against an empty field. Every time you end your turn, your “opponent” immediately passes.
You can click on any of the opponents zones to add damage to them to simulate the outcomes of your attacks/effects. Hovering over a zone will show you a turn-by-turn breakdown of marginal/total damage to see what thresholds youre hitting.
You can also add notes to the opponents zones to denote things like critical hit damage or non-damage effects.
Im not really sure what goes into a good goldfish mode, so feel free to suggest improvements.
# Starting A Game
When you get into a game with an opponent, you will play rock-paper-scissors until a winner is determined. Then the winner will decide whether they would like to go first or second.
Then starting hands are dealt and the mulligan process begins. After all mulligans are done, your opponent will see all of the cards you were forced to mulligan. This is a notable departure from Real Play where you have to show your hand each time you do a forced mulligan.
You must place a debut holomem in the center position by clicking on one in your hand and selecting “Place facedown in center.” If you needed to do forced mulligans, you must click on cards in hand and select “Send to bottom of deck.” You may place up to 5 more debuts/spots to the back by clicking on them in your hand and selecting “Place facedown in back.”
After this, you may press the “Ready” button. After both players ready up, the game begins with the first players first turn.
# holoDelta Is (Mostly) Manual
Delta is not an automated simulator. There are many alternative simulators in #fan-projects on the discord if that is non-negotiable.
Delta is also not a fully manual simulator where “cards is cards” and you just have a few generic options with the game not knowing any rules for itself. To cut this off at the pass, it is very non-trivial to turn delta into such a simulator (even as just an option).
The guiding principle of holoDelta is that it will do as much as it can without taking into account any of the text on the card. This is more than you may think at first blush.
To get to the point, holoDelta is a manual simulator. If you play Harusaki Nodoka (hSD01-016), then holoDelta will not draw 3 cards and archive the Nodoka. You will need to click on your main deck, select “Draw X” from the popup, and type in 3 for X in the window that appears. Then you will have to click the Nodoka in the resolution zone and select “Archive” from the popup.
However, there are many aspects of the game that holoDelta will take care of by itself. If you click a back holomem and select “Collab” from the popup, then that holomem will go to the collab position and the top card of your main deck will be placed into holopower facedown automatically. If that holomem is rested, or youve already collabed once that turn, or your main deck is empty, then the option to “Collab” will not appear.
Similarly, the command to “Play” a limited support card will not appear if it is the first players first turn or youve already used a limited card that turn.
There are also commands that get around these limitations, like “Move to collab position” and “Play (anyway).”
The “Bloom” command will take all of the blooming restrictions (Name, level, HP, played this turn) into account when giving you your options. Unless, of course, you use one of the commands that bypasses some of these restrictions.
If one of the victory conditions is met, a window will ask the losing player if they truly did lose to that victory condition (since mistakes can happen). Selecting “Yes” will end the game.
# Info Panel
The Info Panel is on the left of the screen in-game and in the deckbuilder. Hovering over a card will show that cards information on the info panel. The majority of whats shown is self-explanatory.
If the card has attachments (or was bloomed on top of other cards), they will be presented in a stack that you can switch between using the mouse wheel. This is with the notable exception of any cheer attached, which are instead represented with a row of icons below the card image. Note that you can click on a holomem (even an opponents holomem) and select the “Look at attached” or “Look at past blooms” command to get a better look at these cards and potentially take actions with them.
You can lock the card shown on the info panel with a keybind (default CTRL) until you use the keybind again. The imagined use case for this is when a card has too much text to be displayed all at once, so you need to move your mouse over to the info panel and scroll. If another card is in the way, that could be annoying without a lock button. There is a lock icon on the info panel that will change opacity when frozen.
# Communication
Being a manual simulator, you will need to communicate with your opponent to properly play the game (although I have attempted to minimize the necessity). The best method to do this will always be to be in a separate voice chat with your opponent, but there are a few tools in-game to assist with this.
Most notably, there is a chat feature in the sidebar. You can switch between the chat panel and the info panel by pressing the buttons on the side or using a keybind (default TAB). This chat panel also contains a game log of all actions taken by both players. A red circle will appear on the chat panel button if your opponent sends you a message while youre on a different panel.
There is a phase tracker on the sidebar, and you can click between the different phases. These dont do anything mechanically, but they can help make what youre doing clearer to your opponent. There are keybinds (default [ and ]) to go between them. Keep in mind that going to the next phase while on the end phase will pass the turn.
Also, if you click on a card on the stage a brief animation will play of a flicker black border around that card. This is visible to your opponent, and can be used to single out a card without having to verbally describe it. I will admit the effect is a bit subtle though.
# Non-obvious Commands
The majority of commands in holoDelta are I believe rather self-explanatory. The “Draw” command draws a card from the main deck, the “Play” command plays a card from hand, the “Shuffle hand into deck” command puts all cards in your hand into the main deck and then shuffles it, et cetera. Some however are not so easily understood.
There are many cards that subvert the usual rules to blooming/playing holomem, and so new commands needed to be made for them. A level 1 or 2 holomem will have a “Play directly” command that places that holomem directly onto the stage without needing to bloom them on top of another holomem. The “Instant bloom” command will bloom the chosen holomem onto a holomem that was played/bloomed that very turn. The “Skip bloom” command will bloom the chosen level 2 holomem directly onto a debut instead of a level 2 holomem.
If you click a holomem bloomed on top of another, you can select the “Unbloom” command to pick that holomem up back into your hand and leave the previous holomem still on the field.
We had issues in the past with people accidentally clicking the “Shuffle hand into the deck” command, so the “Unshuffle hand into deck” command was created to be able to undo that action. Note that taking any action that messes with the contents of the main deck will remove your ability to use this command, making the “Shuffle hand into deck” command permanent.
Clicking the main deck and selecting the “Play RPS” command will challenge your opponent to a game of Rock-Paper-Scissors.
# Keybinds
There are a series of keybinds that can make certain game actions more convenient. The vast majority of these are rebindable in the options menu on the main menu.
The only non-rebindable shortcut is that right-clicking one of your holomem will rest/unrest it.
There is a keybind (default D) to draw a card from the main deck. Does not work if the main deck is empty.
There is a keybind (default C) to reveal the top card of your cheer deck and go straight into the menu to select a holomem to attach it to.
There is a keybind (default R) to do an entire standard reset phase. As in, it will unrest all of your holomem and then move your collab holomem to the back and rest it. This one is a serious timesaver.
There is a keybind (default TAB) to switch between the info panel and chat panel.
There is a keybind (default CTRL) to lock/unlock the info panel.
There is a keybind (default [) to return to the previous phase in the phase tracker. It will do nothing if used on the first phase of the turn.
There is a keybind (default ]) to go to the next phase in the phase tracker. It will pass the turn if used on the end phase.
# Future Features
I am busy, both with real work and just other personal projects Id like to do. As such, updates have been slow and infrequent lately (though I place a strong emphasis on keeping things up-to-date). I have a lengthy list of features Id like to implement without even getting into the massive undertakings like implementing custom cards or some form of automation.
If you have suggestions for how holoDelta could be improved to add to that list, please speak up in #delta-suggestion on the discord. If you encounter something you believe to be a bug, please speak up in #delta-bug-reports on the discord. If you do, please try to give as much relevant information as possible as to what was happening around the suspected glitch. Also, reports of things relating to the server connection will probably just be shrugged at, as that is known to be messed up and I am very uneducated about how to make the internet work well.
Also, holoDelta is open-source and I welcome contributions. The code probably needs to be cleaned up and commented for this to be very feasible, but if you reach out to me I will be happy to explain any mysterious portions. I should also implement some github issues for various features to make it easier for other to implement them, but again busy.
# Adding Cards To holoDelta
Lately, Ive been trying to not be the one updating the card database that delta uses. I am rather busy and would prefer to spend whatever time I can find for delta on updates instead.
I still will update it myself if no one takes it up (after the entire set including alt arts has been posted to the official website), but I would greatly appreciate someone else taking it up.
I have a janky program that I use to (relatively) quickly add cards to the database, and I made an unlisted video explaining how to use it at https://youtu.be/RsnDqGhRm1E. The relevant links are also in that videos description.
Keep in mind that its okay to make some mistakes, as fixing a scattering of errors is much easier and less time-consuming for me than adding every card myself. You do need to include the Japanese text though. That part is non-negotiable.
Yes, there should be a better method for this. Ive been meaning to work on one, but again busy.

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/SPmarker.webp-a3e7001ff7e61b45a570b56d60c29c4
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -1,18 +1,19 @@
[gd_scene load_steps=4 format=3 uid="uid://ytwles2vik3j"]
[gd_scene format=3 uid="uid://ytwles2vik3j"]
[ext_resource type="Texture2D" uid="uid://djuk0g87nhrhc" path="res://cardbutton.png" id="1_5o57l"]
[ext_resource type="Script" path="res://Scripts/better_texture_button.gd" id="1_pfkje"]
[ext_resource type="Script" uid="uid://dre8r4gtuwmmd" path="res://Scripts/better_texture_button.gd" id="1_pfkje"]
[ext_resource type="PackedScene" uid="uid://dfjyb5e027l76" path="res://Scenes/card_front.tscn" id="2_dd5cp"]
[ext_resource type="Texture2D" uid="uid://ckina22q7em5y" path="res://cardbuttonhover.png" id="2_wtcn7"]
[node name="betterTextureButton" type="Node2D"]
[node name="betterTextureButton" type="Node2D" unique_id=2078928601]
script = ExtResource("1_pfkje")
[node name="TextureRect" type="TextureRect" parent="."]
[node name="CardFront" parent="." unique_id=234445103 instance=ExtResource("2_dd5cp")]
offset_right = 309.0
offset_bottom = 429.0
scale = Vector2(0.75, 0.75)
[node name="TextureButton" type="TextureButton" parent="."]
[node name="TextureButton" type="TextureButton" parent="." unique_id=1672062423]
offset_right = 309.0
offset_bottom = 429.0
scale = Vector2(0.75, 0.75)

View File

@@ -968,6 +968,11 @@ layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "LOBBY_GAMECODE"
[node name="PasteGameCodeButton" type="Button" parent="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/LobbyCodeHBox" unique_id=1939481952]
unique_name_in_owner = true
layout_mode = 2
text = "LOBBY_SPECTATECODE_PASTE"
[node name="SpectateByCode" type="Button" parent="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/LobbyCodeHBox" unique_id=1601458461]
unique_name_in_owner = true
layout_mode = 2
@@ -1482,6 +1487,13 @@ context_menu_enabled = true
selection_enabled = true
deselect_on_focus_loss_enabled = false
[node name="CopyGameCodeButton" type="Button" parent="CanvasLayer/Sidebar/SidebarHBox/OptionMargins/OptionsVBox" unique_id=1092887559]
unique_name_in_owner = true
layout_mode = 2
theme = ExtResource("5_fdkx6")
theme_override_font_sizes/font_size = 15
text = "LOBBY_GAMECODE_COPY"
[node name="SFXLabel" type="Label" parent="CanvasLayer/Sidebar/SidebarHBox/OptionMargins/OptionsVBox" unique_id=885354296]
auto_translate_mode = 2
layout_mode = 2
@@ -2236,6 +2248,7 @@ bus = &"BGM"
unique_name_in_owner = true
script = ExtResource("20_v32ia")
route = "/ws"
use_WSS = false
autoconnect_mode = 2
[node name="Timer" type="Timer" parent="." unique_id=1611810139]
@@ -2281,6 +2294,7 @@ one_shot = true
[connection signal="pressed" from="CanvasLayer/GoldfishStartMenu/LobbyCreateMargins/LobbyCreateVBox/CreateBack" to="." method="_close_goldfish_menu"]
[connection signal="text_changed" from="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/LobbyCodeHBox/SpectateListCode" to="." method="update_spectate_from_code_button"]
[connection signal="text_submitted" from="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/LobbyCodeHBox/SpectateListCode" to="." method="spectate_game"]
[connection signal="pressed" from="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/LobbyCodeHBox/PasteGameCodeButton" to="." method="_on_paste_game_code_button_pressed"]
[connection signal="pressed" from="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/LobbyCodeHBox/SpectateByCode" to="." method="spectate_game_from_code"]
[connection signal="pressed" from="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/HBoxContainer/Refresh" to="." method="find_games"]
[connection signal="pressed" from="CanvasLayer/SpectatePanel/SpectateListMargins/SpectateVBox/HBoxContainer/SpectateBack" to="." method="close_game_list"]
@@ -2302,6 +2316,7 @@ one_shot = true
[connection signal="pressed" from="CanvasLayer/Sidebar/SidebarHBox/ButtonMargins/Buttons/OptionTabButton" to="." method="_on_sidebar_options_pressed"]
[connection signal="text_submitted" from="CanvasLayer/Sidebar/SidebarHBox/ChatVBoxMargins/ChatVBox/ChatHBox/ToSend" to="." method="send_message"]
[connection signal="pressed" from="CanvasLayer/Sidebar/SidebarHBox/ChatVBoxMargins/ChatVBox/ChatHBox/Send" to="." method="send_message_on_click"]
[connection signal="pressed" from="CanvasLayer/Sidebar/SidebarHBox/OptionMargins/OptionsVBox/CopyGameCodeButton" to="." method="_on_copy_game_code_button_pressed"]
[connection signal="drag_ended" from="CanvasLayer/Sidebar/SidebarHBox/OptionMargins/OptionsVBox/InGameSFXSlider" to="." method="_on_sfx_slider_drag_ended"]
[connection signal="drag_started" from="CanvasLayer/Sidebar/SidebarHBox/OptionMargins/OptionsVBox/InGameSFXSlider" to="." method="_on_sfx_slider_drag_ended"]
[connection signal="value_changed" from="CanvasLayer/Sidebar/SidebarHBox/OptionMargins/OptionsVBox/InGameSFXSlider" to="." method="_on_sfx_slider_value_changed"]

View File

@@ -1,9 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://dfjyb5e027l76"]
[gd_scene format=3 uid="uid://dfjyb5e027l76"]
[ext_resource type="Texture2D" uid="uid://gxcpgcuj06xt" path="res://Sou_Desu_Ne.png" id="1_801l5"]
[ext_resource type="Script" uid="uid://cbqwkwthyf3os" path="res://Scripts/card_front.gd" id="1_krnet"]
[ext_resource type="Texture2D" uid="uid://cthuygpaehwok" path="res://loadingImage.webp" id="2_cqdtj"]
[node name="CardFront" type="Control"]
[node name="CardFront" type="Control" unique_id=234445103]
layout_mode = 3
anchor_right = 0.241
anchor_bottom = 0.596
@@ -13,7 +13,7 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_krnet")
[node name="Front" type="TextureRect" parent="."]
[node name="Front" type="TextureRect" parent="." unique_id=1956821953]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = -1
@@ -21,4 +21,4 @@ anchor_right = 1.0
anchor_bottom = 1.0
offset_right = -517.32
offset_bottom = -657.56
texture = ExtResource("1_801l5")
texture = ExtResource("2_cqdtj")

39
Scenes/cheer_count.tscn Normal file
View File

@@ -0,0 +1,39 @@
[gd_scene format=3 uid="uid://bqdqrhqhb0a3g"]
[ext_resource type="Theme" uid="uid://c2xsywtxro80x" path="res://Themes/button.tres" id="1_0kqii"]
[ext_resource type="Script" uid="uid://1xx0yie53yhy" path="res://Scripts/cheer_count.gd" id="1_m0na4"]
[ext_resource type="Texture2D" uid="uid://c8om4l4iai0xd" path="res://CheerIcons/Colorless.webp" id="2_0kqii"]
[ext_resource type="FontFile" uid="uid://d1prs0o0rldol" path="res://CyberAssets/Main Menu Assets/TCG2SAB002.ttf" id="3_x0f58"]
[node name="CheerCount" type="Control" unique_id=952056579]
layout_mode = 3
anchors_preset = 0
offset_right = 44.0
offset_bottom = 44.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_0kqii")
script = ExtResource("1_m0na4")
[node name="CheerBase" type="TextureRect" parent="." unique_id=1457776428]
unique_name_in_owner = true
layout_mode = 1
offset_right = 44.0
offset_bottom = 44.0
texture = ExtResource("2_0kqii")
[node name="Count" type="Label" parent="CheerBase" unique_id=426707352]
unique_name_in_owner = true
auto_translate_mode = 2
layout_mode = 0
offset_left = 1.0
offset_top = -2.0
offset_right = 44.0
offset_bottom = 35.0
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 5
theme_override_fonts/font = ExtResource("3_x0f58")
theme_override_font_sizes/font_size = 25
text = "20"
horizontal_alignment = 2

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=15 format=3 uid="uid://w54g66g0fow1"]
[gd_scene format=3 uid="uid://w54g66g0fow1"]
[ext_resource type="Script" uid="uid://lmw0oejm2vaf" path="res://Scripts/deck_creation.gd" id="1_vhmc0"]
[ext_resource type="Texture2D" uid="uid://cx76tmf8royup" path="res://CyberAssets/Game Side Menu/Side Menu.png" id="2_dcm3l"]
@@ -15,39 +15,39 @@
[ext_resource type="AudioStream" uid="uid://dx0hyqv3whb28" path="res://ChikuTaku The Game VGM Menu Select Watson Amelia WUNDER RiKU ✨ チクタク オリジナル曲.mp3" id="10_ncvki"]
[ext_resource type="Script" uid="uid://dpmwhedq5ws5x" path="res://addons/HTTPManager/classes/HTTPManager.gd" id="11_h6gkd"]
[node name="DeckCreation" type="Node2D"]
[node name="DeckCreation" type="Node2D" unique_id=767185352]
script = ExtResource("1_vhmc0")
[node name="DeckBuilderBg" type="Sprite2D" parent="."]
[node name="DeckBuilderBg" type="Sprite2D" parent="." unique_id=40775526]
position = Vector2(587, 347)
scale = Vector2(0.75, 0.75)
texture = ExtResource("6_t38qv")
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1958007491]
[node name="SideMenu" type="Sprite2D" parent="CanvasLayer"]
[node name="SideMenu" type="Sprite2D" parent="CanvasLayer" unique_id=35074032]
position = Vector2(-84, 0)
scale = Vector2(1.01172, 0.997)
texture = ExtResource("2_dcm3l")
centered = false
[node name="InfoMargins" parent="CanvasLayer" instance=ExtResource("4_aw7bg")]
[node name="InfoMargins" parent="CanvasLayer" unique_id=1468629795 instance=ExtResource("4_aw7bg")]
unique_name_in_owner = true
offset_right = 295.0
offset_bottom = 685.0
[node name="PossibleCards" type="TabContainer" parent="CanvasLayer"]
[node name="PossibleCards" type="TabContainer" parent="CanvasLayer" unique_id=1723327127]
offset_left = 886.0
offset_right = 1280.0
offset_bottom = 720.0
theme = ExtResource("3_da1xd")
current_tab = 0
[node name="TAB_OSHI" type="Control" parent="CanvasLayer/PossibleCards"]
[node name="TAB_OSHI" type="Control" parent="CanvasLayer/PossibleCards" unique_id=21234292]
layout_mode = 2
metadata/_tab_index = 0
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI"]
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI" unique_id=459194484]
layout_mode = 0
offset_left = 2.0
offset_top = 2.0
@@ -55,16 +55,16 @@ offset_right = 393.0
offset_bottom = 691.0
theme_override_constants/separation = 10
[node name="Search" type="LineEdit" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer"]
[node name="Search" type="LineEdit" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer" unique_id=1505637064]
layout_mode = 2
placeholder_text = "SEARCH"
[node name="OshiFilters1" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer"]
[node name="OshiFilters1" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer" unique_id=795121140]
layout_mode = 2
theme_override_constants/separation = 15
alignment = 1
[node name="NameSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1"]
[node name="NameSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1" unique_id=39211944]
custom_minimum_size = Vector2(90, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -73,7 +73,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="ColorSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1"]
[node name="ColorSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1" unique_id=1104181589]
custom_minimum_size = Vector2(90, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -82,21 +82,21 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="5LifeSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1"]
[node name="5LifeSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1" unique_id=837947986]
layout_mode = 2
button_group = ExtResource("6_102vr")
text = "LIFE_5"
[node name="6LifeSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1"]
[node name="6LifeSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters1" unique_id=1186868400]
layout_mode = 2
button_group = ExtResource("6_102vr")
text = "LIFE_6"
[node name="OshiFilters2" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer"]
[node name="OshiFilters2" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer" unique_id=1700996787]
layout_mode = 2
theme_override_constants/separation = 15
[node name="SetcodeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters2"]
[node name="SetcodeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters2" unique_id=1105109969]
custom_minimum_size = Vector2(180, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -105,7 +105,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="ClearFilters" type="Button" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters2"]
[node name="ClearFilters" type="Button" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/OshiFilters2" unique_id=1461393882]
custom_minimum_size = Vector2(180, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -113,29 +113,29 @@ text = "FILTER_CLEAR"
text_overrun_behavior = 3
clip_text = true
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer" unique_id=982286382]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/ScrollContainer"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/ScrollContainer" unique_id=1830043963]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="OshiGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/ScrollContainer/MarginContainer"]
[node name="OshiGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/ScrollContainer/MarginContainer" unique_id=281180468]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 4
[node name="TAB_HOLOMEM" type="Control" parent="CanvasLayer/PossibleCards"]
[node name="TAB_HOLOMEM" type="Control" parent="CanvasLayer/PossibleCards" unique_id=574325776]
visible = false
layout_mode = 2
metadata/_tab_index = 1
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM"]
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM" unique_id=565095237]
layout_mode = 0
offset_left = 2.0
offset_top = 2.0
@@ -143,15 +143,15 @@ offset_right = 392.0
offset_bottom = 691.0
theme_override_constants/separation = 10
[node name="Search" type="LineEdit" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer"]
[node name="Search" type="LineEdit" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer" unique_id=14258857]
layout_mode = 2
placeholder_text = "SEARCH"
[node name="HolomemFilters1" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer"]
[node name="HolomemFilters1" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer" unique_id=986335058]
layout_mode = 2
theme_override_constants/separation = 15
[node name="NameSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters1"]
[node name="NameSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters1" unique_id=1930316794]
custom_minimum_size = Vector2(150, 0)
layout_mode = 2
size_flags_horizontal = 3
@@ -160,7 +160,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="ColorSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters1"]
[node name="ColorSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters1" unique_id=602379062]
custom_minimum_size = Vector2(100, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -169,7 +169,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="LevelSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters1"]
[node name="LevelSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters1" unique_id=1206392585]
custom_minimum_size = Vector2(100, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -189,11 +189,11 @@ popup/item_3/id = 3
popup/item_4/text = "LEVEL_SPOT"
popup/item_4/id = 4
[node name="HolomemFilters2" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer"]
[node name="HolomemFilters2" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer" unique_id=213843402]
layout_mode = 2
theme_override_constants/separation = 15
[node name="HPCompareSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2"]
[node name="HPCompareSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2" unique_id=1001641459]
auto_translate_mode = 2
custom_minimum_size = Vector2(10, 25)
layout_mode = 2
@@ -208,14 +208,14 @@ popup/item_1/id = 1
popup/item_2/text = "≤"
popup/item_2/id = 2
[node name="HPSelect" type="SpinBox" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2"]
[node name="HPSelect" type="SpinBox" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2" unique_id=1355308306]
custom_minimum_size = Vector2(90, 25)
layout_mode = 2
max_value = 990.0
step = 10.0
prefix = "HP"
[node name="AdvantageSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2"]
[node name="AdvantageSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2" unique_id=1729101285]
custom_minimum_size = Vector2(70, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -224,7 +224,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="EffectSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2"]
[node name="EffectSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2" unique_id=677294674]
custom_minimum_size = Vector2(70, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -236,7 +236,7 @@ item_count = 1
popup/item_0/text = "EFFECT_ANY"
popup/item_0/id = 0
[node name="TagSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2"]
[node name="TagSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters2" unique_id=799530806]
custom_minimum_size = Vector2(70, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -245,21 +245,21 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="HolomemFilters3" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer"]
[node name="HolomemFilters3" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer" unique_id=1090173784]
layout_mode = 2
theme_override_constants/separation = 15
[node name="BuzzSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3"]
[node name="BuzzSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3" unique_id=564903396]
layout_mode = 2
button_group = ExtResource("7_ynd4k")
text = "BUZZ"
[node name="NotBuzzSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3"]
[node name="NotBuzzSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3" unique_id=332968555]
layout_mode = 2
button_group = ExtResource("7_ynd4k")
text = "NOTBUZZ"
[node name="SetcodeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3"]
[node name="SetcodeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3" unique_id=825550879]
custom_minimum_size = Vector2(85, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -268,7 +268,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="ClearFilters" type="Button" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3"]
[node name="ClearFilters" type="Button" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/HolomemFilters3" unique_id=1028590717]
custom_minimum_size = Vector2(85, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -277,29 +277,29 @@ text = "FILTER_CLEAR"
text_overrun_behavior = 3
clip_text = true
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer" unique_id=1112044748]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/ScrollContainer"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/ScrollContainer" unique_id=708005816]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="HolomemGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/ScrollContainer/MarginContainer"]
[node name="HolomemGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_HOLOMEM/VBoxContainer/ScrollContainer/MarginContainer" unique_id=1182775242]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 4
[node name="TAB_SUPPORT" type="Control" parent="CanvasLayer/PossibleCards"]
[node name="TAB_SUPPORT" type="Control" parent="CanvasLayer/PossibleCards" unique_id=658265745]
visible = false
layout_mode = 2
metadata/_tab_index = 2
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT"]
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT" unique_id=1232250628]
layout_mode = 0
offset_left = 3.0
offset_top = 4.0
@@ -307,15 +307,15 @@ offset_right = 391.0
offset_bottom = 692.0
theme_override_constants/separation = 10
[node name="Search" type="LineEdit" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer"]
[node name="Search" type="LineEdit" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer" unique_id=793094603]
layout_mode = 2
placeholder_text = "SEARCH"
[node name="SupportFilters1" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer"]
[node name="SupportFilters1" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer" unique_id=155239718]
layout_mode = 2
theme_override_constants/separation = 15
[node name="TypeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters1"]
[node name="TypeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters1" unique_id=138235193]
custom_minimum_size = Vector2(110, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -324,7 +324,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="LimitedSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters1"]
[node name="LimitedSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters1" unique_id=570109376]
custom_minimum_size = Vector2(110, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -333,7 +333,7 @@ text = "SUPPORT_LIMITED"
text_overrun_behavior = 3
clip_text = true
[node name="UnlimitedSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters1"]
[node name="UnlimitedSelect" type="CheckBox" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters1" unique_id=1777603740]
custom_minimum_size = Vector2(115, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -342,11 +342,11 @@ text = "SUPPORT_UNLIMITED"
text_overrun_behavior = 3
clip_text = true
[node name="SupportFilters2" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer"]
[node name="SupportFilters2" type="HBoxContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer" unique_id=562030973]
layout_mode = 2
theme_override_constants/separation = 15
[node name="SetcodeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters2"]
[node name="SetcodeSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters2" unique_id=342492744]
custom_minimum_size = Vector2(110, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -355,7 +355,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="TagSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters2"]
[node name="TagSelect" type="MenuButton" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters2" unique_id=1866147723]
custom_minimum_size = Vector2(110, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -364,7 +364,7 @@ flat = false
text_overrun_behavior = 3
clip_text = true
[node name="ClearFilters" type="Button" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters2"]
[node name="ClearFilters" type="Button" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/SupportFilters2" unique_id=2097267729]
custom_minimum_size = Vector2(115, 25)
layout_mode = 2
size_flags_horizontal = 3
@@ -373,48 +373,48 @@ text = "FILTER_CLEAR"
text_overrun_behavior = 3
clip_text = true
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer" unique_id=2098664849]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/ScrollContainer"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/ScrollContainer" unique_id=1026159406]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="SupportGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/ScrollContainer/MarginContainer"]
[node name="SupportGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_SUPPORT/VBoxContainer/ScrollContainer/MarginContainer" unique_id=761761801]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 4
[node name="TAB_CHEER" type="Control" parent="CanvasLayer/PossibleCards"]
[node name="TAB_CHEER" type="Control" parent="CanvasLayer/PossibleCards" unique_id=1509924109]
visible = false
layout_mode = 2
metadata/_tab_index = 3
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_CHEER"]
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/PossibleCards/TAB_CHEER" unique_id=938460110]
layout_mode = 0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 47.0
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_CHEER/ScrollContainer"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/PossibleCards/TAB_CHEER/ScrollContainer" unique_id=1314683838]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="CheerGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_CHEER/ScrollContainer/MarginContainer"]
[node name="CheerGrid" type="GridContainer" parent="CanvasLayer/PossibleCards/TAB_CHEER/ScrollContainer/MarginContainer" unique_id=426569287]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
columns = 4
[node name="Multiple" type="Label" parent="CanvasLayer/PossibleCards/TAB_CHEER"]
[node name="Multiple" type="Label" parent="CanvasLayer/PossibleCards/TAB_CHEER" unique_id=1050457991]
auto_translate_mode = 2
layout_mode = 0
offset_left = 10.0
@@ -425,7 +425,7 @@ theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_font_sizes/font_size = 25
text = "1x"
[node name="OneMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER"]
[node name="OneMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER" unique_id=1359056328]
auto_translate_mode = 2
layout_mode = 0
offset_left = 98.0
@@ -434,7 +434,7 @@ offset_right = 138.0
offset_bottom = 27.0
text = "1"
[node name="FiveMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER"]
[node name="FiveMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER" unique_id=538052775]
auto_translate_mode = 2
layout_mode = 0
offset_left = 170.0
@@ -444,7 +444,7 @@ offset_bottom = 27.0
text = "5
"
[node name="TenMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER"]
[node name="TenMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER" unique_id=732061718]
auto_translate_mode = 2
layout_mode = 0
offset_left = 245.0
@@ -453,7 +453,7 @@ offset_right = 285.0
offset_bottom = 27.0
text = "10"
[node name="TwentyMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER"]
[node name="TwentyMultiple" type="Button" parent="CanvasLayer/PossibleCards/TAB_CHEER" unique_id=92962866]
auto_translate_mode = 2
layout_mode = 0
offset_left = 319.0
@@ -462,7 +462,7 @@ offset_right = 359.0
offset_bottom = 27.0
text = "20"
[node name="YourStuff" type="TabContainer" parent="CanvasLayer"]
[node name="YourStuff" type="TabContainer" parent="CanvasLayer" unique_id=1334643678]
offset_left = 303.0
offset_top = 2.0
offset_right = 884.0
@@ -470,20 +470,20 @@ offset_bottom = 626.0
theme = ExtResource("3_da1xd")
current_tab = 0
[node name="TAB_DECK" type="ColorRect" parent="CanvasLayer/YourStuff"]
[node name="TAB_DECK" type="ColorRect" parent="CanvasLayer/YourStuff" unique_id=601386527]
layout_mode = 2
theme = ExtResource("3_da1xd")
color = Color(0.113725, 0.164706, 0.223529, 0)
metadata/_tab_index = 0
[node name="OshiPlace" type="CenterContainer" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="OshiPlace" type="CenterContainer" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=740532230]
layout_mode = 0
offset_left = 7.0
offset_top = 422.0
offset_right = 123.0
offset_bottom = 585.0
[node name="ColorRect" type="ColorRect" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="ColorRect" type="ColorRect" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=24738255]
layout_mode = 0
offset_left = 7.0
offset_top = 6.0
@@ -493,7 +493,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
color = Color(0.180392, 0.32549, 0.45098, 1)
[node name="MainDeck" type="ScrollContainer" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="MainDeck" type="ScrollContainer" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=315262226]
layout_mode = 0
offset_left = 7.0
offset_top = 6.0
@@ -501,7 +501,7 @@ offset_right = 573.0
offset_bottom = 412.0
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/YourStuff/TAB_DECK/MainDeck"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/YourStuff/TAB_DECK/MainDeck" unique_id=1736032582]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@@ -510,13 +510,13 @@ theme_override_constants/margin_top = 15
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="GridContainer" type="GridContainer" parent="CanvasLayer/YourStuff/TAB_DECK/MainDeck/MarginContainer"]
[node name="GridContainer" type="GridContainer" parent="CanvasLayer/YourStuff/TAB_DECK/MainDeck/MarginContainer" unique_id=1645072446]
layout_mode = 2
theme_override_constants/h_separation = 11
theme_override_constants/v_separation = 12
columns = 6
[node name="ColorRect2" type="ColorRect" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="ColorRect2" type="ColorRect" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=1885129033]
layout_mode = 0
offset_left = 131.0
offset_top = 422.0
@@ -526,14 +526,14 @@ size_flags_horizontal = 3
size_flags_vertical = 3
color = Color(0.180392, 0.32549, 0.45098, 1)
[node name="CheerDeck" type="ScrollContainer" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="CheerDeck" type="ScrollContainer" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=1132906127]
layout_mode = 0
offset_left = 131.0
offset_top = 422.0
offset_right = 573.0
offset_bottom = 583.0
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/YourStuff/TAB_DECK/CheerDeck"]
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/YourStuff/TAB_DECK/CheerDeck" unique_id=1013401102]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@@ -542,11 +542,11 @@ theme_override_constants/margin_top = 15
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/YourStuff/TAB_DECK/CheerDeck/MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/YourStuff/TAB_DECK/CheerDeck/MarginContainer" unique_id=442596115]
layout_mode = 2
theme_override_constants/separation = 20
[node name="MainCount" type="Label" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="MainCount" type="Label" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=1864420932]
auto_translate_mode = 2
z_index = 1
layout_mode = 0
@@ -560,7 +560,7 @@ theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 15
text = "0/50"
[node name="CheerCount" type="Label" parent="CanvasLayer/YourStuff/TAB_DECK"]
[node name="CheerCount" type="Label" parent="CanvasLayer/YourStuff/TAB_DECK" unique_id=1706418699]
auto_translate_mode = 2
z_index = 1
layout_mode = 0
@@ -574,38 +574,37 @@ theme_override_constants/outline_size = 3
theme_override_font_sizes/font_size = 15
text = "0/20"
[node name="TAB_ANALYTICS" type="ColorRect" parent="CanvasLayer/YourStuff"]
[node name="TAB_IMPORT" type="Control" parent="CanvasLayer/YourStuff" unique_id=2027762892]
visible = false
layout_mode = 2
theme = ExtResource("3_da1xd")
color = Color(0, 0, 0, 0)
metadata/_tab_index = 1
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/YourStuff/TAB_ANALYTICS"]
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/YourStuff/TAB_IMPORT" unique_id=1116699733]
layout_mode = 0
offset_left = 5.0
offset_top = 5.0
offset_right = 575.0
offset_bottom = 582.0
offset_right = 581.0
offset_bottom = 593.0
[node name="Stats" type="Label" parent="CanvasLayer/YourStuff/TAB_ANALYTICS/ScrollContainer"]
auto_translate_mode = 2
[node name="Control" type="Control" parent="CanvasLayer/YourStuff/TAB_IMPORT/VBoxContainer" unique_id=1860617546]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="TAB_SLEEVES" type="Control" parent="CanvasLayer/YourStuff"]
[node name="DownloadJSON" type="Button" parent="CanvasLayer/YourStuff/TAB_IMPORT/VBoxContainer" unique_id=847824757]
visible = false
layout_mode = 2
size_flags_horizontal = 4
text = "DECK_DOWNLOAD"
[node name="TAB_SLEEVES" type="Control" parent="CanvasLayer/YourStuff" unique_id=1588702480]
visible = false
layout_mode = 2
theme = ExtResource("3_da1xd")
metadata/_tab_index = 2
[node name="Main" parent="CanvasLayer/YourStuff/TAB_SLEEVES" instance=ExtResource("5_0bh18")]
[node name="Main" parent="CanvasLayer/YourStuff/TAB_SLEEVES" unique_id=960555896 instance=ExtResource("5_0bh18")]
position = Vector2(50, 50)
scale = Vector2(0.5, 0.5)
default_sleeve = ExtResource("6_to43o")
[node name="Label" type="Label" parent="CanvasLayer/YourStuff/TAB_SLEEVES/Main"]
[node name="Label" type="Label" parent="CanvasLayer/YourStuff/TAB_SLEEVES/Main" unique_id=2086704077]
offset_top = -60.0
offset_right = 313.0
offset_bottom = 9.0
@@ -615,12 +614,12 @@ theme_override_font_sizes/font_size = 50
text = "MAIN_DECK"
horizontal_alignment = 1
[node name="Cheer" parent="CanvasLayer/YourStuff/TAB_SLEEVES" instance=ExtResource("5_0bh18")]
[node name="Cheer" parent="CanvasLayer/YourStuff/TAB_SLEEVES" unique_id=430897148 instance=ExtResource("5_0bh18")]
position = Vector2(300, 50)
scale = Vector2(0.5, 0.5)
default_sleeve = ExtResource("7_kh04n")
[node name="Label" type="Label" parent="CanvasLayer/YourStuff/TAB_SLEEVES/Cheer"]
[node name="Label" type="Label" parent="CanvasLayer/YourStuff/TAB_SLEEVES/Cheer" unique_id=85053053]
offset_top = -60.0
offset_right = 313.0
offset_bottom = 9.0
@@ -630,7 +629,27 @@ theme_override_font_sizes/font_size = 50
text = "CHEER"
horizontal_alignment = 1
[node name="LoadDeck" type="Button" parent="CanvasLayer"]
[node name="TAB_ANALYTICS" type="ColorRect" parent="CanvasLayer/YourStuff" unique_id=980762687]
visible = false
layout_mode = 2
theme = ExtResource("3_da1xd")
color = Color(0, 0, 0, 0)
metadata/_tab_index = 3
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/YourStuff/TAB_ANALYTICS" unique_id=84625569]
layout_mode = 0
offset_left = 5.0
offset_top = 5.0
offset_right = 575.0
offset_bottom = 582.0
[node name="Stats" type="Label" parent="CanvasLayer/YourStuff/TAB_ANALYTICS/ScrollContainer" unique_id=156298306]
auto_translate_mode = 2
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="LoadDeck" type="Button" parent="CanvasLayer" unique_id=1347654200]
offset_left = 313.0
offset_top = 639.0
offset_right = 469.0
@@ -641,7 +660,7 @@ text = "LOAD"
text_overrun_behavior = 3
clip_text = true
[node name="SaveDeck" type="Button" parent="CanvasLayer"]
[node name="SaveDeck" type="Button" parent="CanvasLayer" unique_id=57277451]
offset_left = 798.0
offset_top = 640.0
offset_right = 874.0
@@ -652,7 +671,7 @@ text = "DECK_SAVE"
text_overrun_behavior = 3
clip_text = true
[node name="DeckName" type="LineEdit" parent="CanvasLayer"]
[node name="DeckName" type="LineEdit" parent="CanvasLayer" unique_id=1638027780]
offset_left = 507.0
offset_top = 631.0
offset_right = 775.0
@@ -661,11 +680,11 @@ theme = ExtResource("3_da1xd")
theme_override_font_sizes/font_size = 15
placeholder_text = "DEFAULT_DECK_NAME"
[node name="DeckList" parent="CanvasLayer" instance=ExtResource("4_lmglq")]
[node name="DeckList" parent="CanvasLayer" unique_id=687946059 instance=ExtResource("4_lmglq")]
visible = false
z_index = 4
[node name="MainMenu" type="Button" parent="CanvasLayer"]
[node name="MainMenu" type="Button" parent="CanvasLayer" unique_id=403504818]
offset_left = 400.0
offset_top = 689.0
offset_right = 470.0
@@ -676,7 +695,7 @@ text = "MENU"
text_overrun_behavior = 3
clip_text = true
[node name="Clear" type="Button" parent="CanvasLayer"]
[node name="Clear" type="Button" parent="CanvasLayer" unique_id=2126328215]
offset_left = 313.0
offset_top = 689.0
offset_right = 387.0
@@ -687,7 +706,7 @@ text = "DECK_CLEAR"
text_overrun_behavior = 3
clip_text = true
[node name="BanlistChoice" type="OptionButton" parent="CanvasLayer"]
[node name="BanlistChoice" type="OptionButton" parent="CanvasLayer" unique_id=188161628]
offset_left = 518.0
offset_top = 684.0
offset_right = 764.0
@@ -706,7 +725,7 @@ popup/item_3/id = 3
popup/item_4/text = "LOBBY_BANLIST_UNRELEASED_EN"
popup/item_4/id = 4
[node name="SavePrompt" type="ColorRect" parent="CanvasLayer"]
[node name="SavePrompt" type="ColorRect" parent="CanvasLayer" unique_id=1177481543]
visible = false
z_index = 3
offset_left = 470.0
@@ -715,18 +734,18 @@ offset_right = 907.0
offset_bottom = 681.0
color = Color(0.113725, 0.164706, 0.223529, 0.905882)
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/SavePrompt"]
[node name="ScrollContainer" type="ScrollContainer" parent="CanvasLayer/SavePrompt" unique_id=746223416]
layout_mode = 0
offset_right = 437.0
offset_bottom = 520.0
theme = ExtResource("3_da1xd")
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/SavePrompt/ScrollContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/SavePrompt/ScrollContainer" unique_id=947075608]
layout_mode = 2
size_flags_horizontal = 6
size_flags_vertical = 6
[node name="FileName" type="LineEdit" parent="CanvasLayer/SavePrompt"]
[node name="FileName" type="LineEdit" parent="CanvasLayer/SavePrompt" unique_id=239547978]
layout_mode = 0
offset_left = 10.0
offset_top = 571.0
@@ -736,7 +755,7 @@ theme = ExtResource("3_da1xd")
theme_override_font_sizes/font_size = 20
placeholder_text = "DEFAULT_DECK_FILE"
[node name="Save" type="Button" parent="CanvasLayer/SavePrompt/FileName"]
[node name="Save" type="Button" parent="CanvasLayer/SavePrompt/FileName" unique_id=994597248]
layout_mode = 0
offset_left = 326.0
offset_top = 5.0
@@ -745,17 +764,7 @@ offset_bottom = 26.0
theme_override_font_sizes/font_size = 20
text = "DECK_SAVE"
[node name="Download" type="Button" parent="CanvasLayer/SavePrompt/FileName"]
visible = false
layout_mode = 0
offset_left = 326.0
offset_top = 50.0
offset_right = 472.0
offset_bottom = 71.0
theme_override_font_sizes/font_size = 20
text = "DECK_DOWNLOAD"
[node name="Cancel" type="Button" parent="CanvasLayer/SavePrompt"]
[node name="Cancel" type="Button" parent="CanvasLayer/SavePrompt" unique_id=1508121545]
layout_mode = 0
offset_left = 454.0
offset_top = 576.0
@@ -765,7 +774,7 @@ theme = ExtResource("3_da1xd")
theme_override_font_sizes/font_size = 20
text = "DECK_SAVE_CANCEL"
[node name="OverwriteConfirm" type="ColorRect" parent="CanvasLayer/SavePrompt"]
[node name="OverwriteConfirm" type="ColorRect" parent="CanvasLayer/SavePrompt" unique_id=1646270536]
visible = false
layout_mode = 0
offset_left = -361.0
@@ -775,7 +784,7 @@ offset_bottom = 514.0
theme = ExtResource("3_da1xd")
color = Color(0.113725, 0.164706, 0.223529, 1)
[node name="Label" type="Label" parent="CanvasLayer/SavePrompt/OverwriteConfirm"]
[node name="Label" type="Label" parent="CanvasLayer/SavePrompt/OverwriteConfirm" unique_id=1233670592]
auto_translate_mode = 2
layout_mode = 0
offset_left = 12.0
@@ -788,7 +797,7 @@ text = "Overwrite ?"
horizontal_alignment = 1
autowrap_mode = 1
[node name="Yes" type="Button" parent="CanvasLayer/SavePrompt/OverwriteConfirm"]
[node name="Yes" type="Button" parent="CanvasLayer/SavePrompt/OverwriteConfirm" unique_id=1205454495]
layout_mode = 0
offset_left = 228.0
offset_top = 353.0
@@ -797,7 +806,7 @@ offset_bottom = 394.0
theme_override_font_sizes/font_size = 40
text = "YES"
[node name="No" type="Button" parent="CanvasLayer/SavePrompt/OverwriteConfirm"]
[node name="No" type="Button" parent="CanvasLayer/SavePrompt/OverwriteConfirm" unique_id=365583957]
layout_mode = 0
offset_left = 667.0
offset_top = 355.0
@@ -806,7 +815,7 @@ offset_bottom = 396.0
theme_override_font_sizes/font_size = 40
text = "NO"
[node name="Loading" type="ColorRect" parent="CanvasLayer"]
[node name="Loading" type="ColorRect" parent="CanvasLayer" unique_id=1150633941]
unique_name_in_owner = true
visible = false
z_index = 3
@@ -814,7 +823,7 @@ offset_right = 1280.0
offset_bottom = 720.0
color = Color(0.180392, 0.32549, 0.45098, 0.623529)
[node name="Label" type="Label" parent="CanvasLayer/Loading"]
[node name="Label" type="Label" parent="CanvasLayer/Loading" unique_id=1373390368]
layout_mode = 0
offset_right = 1280.0
offset_bottom = 720.0
@@ -825,14 +834,16 @@ text = "LOADING"
horizontal_alignment = 1
vertical_alignment = 1
[node name="BGM" type="AudioStreamPlayer" parent="."]
[node name="BGM" type="AudioStreamPlayer" parent="." unique_id=620249497]
stream = ExtResource("10_ncvki")
volume_db = -18.0
autoplay = true
bus = &"BGM"
[node name="HTTPManager" type="Node" parent="."]
[node name="HTTPManager" type="Node" parent="." unique_id=1669366651]
unique_name_in_owner = true
script = ExtResource("11_h6gkd")
parallel_connections_count = 15
print_debug = true
[connection signal="text_changed" from="CanvasLayer/PossibleCards/TAB_OSHI/VBoxContainer/Search" to="." method="_on_oshi_search"]
@@ -852,6 +863,7 @@ print_debug = true
[connection signal="pressed" from="CanvasLayer/PossibleCards/TAB_CHEER/FiveMultiple" to="." method="_five_multiple"]
[connection signal="pressed" from="CanvasLayer/PossibleCards/TAB_CHEER/TenMultiple" to="." method="_ten_multiple"]
[connection signal="pressed" from="CanvasLayer/PossibleCards/TAB_CHEER/TwentyMultiple" to="." method="_twenty_multiple"]
[connection signal="pressed" from="CanvasLayer/YourStuff/TAB_IMPORT/VBoxContainer/DownloadJSON" to="." method="_on_download_pressed"]
[connection signal="pressed" from="CanvasLayer/LoadDeck" to="." method="_on_load_deck_pressed"]
[connection signal="pressed" from="CanvasLayer/SaveDeck" to="." method="_on_save_deck_pressed"]
[connection signal="cancel" from="CanvasLayer/DeckList" to="." method="_hide_deck_list"]
@@ -861,6 +873,5 @@ print_debug = true
[connection signal="item_selected" from="CanvasLayer/BanlistChoice" to="." method="_on_banlist_choice_item_selected"]
[connection signal="text_submitted" from="CanvasLayer/SavePrompt/FileName" to="." method="_on_save_pressed"]
[connection signal="pressed" from="CanvasLayer/SavePrompt/FileName/Save" to="." method="_on_save_pressed"]
[connection signal="pressed" from="CanvasLayer/SavePrompt/FileName/Download" to="." method="_on_download_pressed"]
[connection signal="pressed" from="CanvasLayer/SavePrompt/Cancel" to="." method="_hide_save_prompt"]
[connection signal="pressed" from="CanvasLayer/SavePrompt/OverwriteConfirm/No" to="." method="_hide_save_prompt"]

61
Scenes/look_at.tscn Normal file
View File

@@ -0,0 +1,61 @@
[gd_scene format=3 uid="uid://bdmwjxyb7a1pn"]
[ext_resource type="Theme" uid="uid://c2xsywtxro80x" path="res://Themes/button.tres" id="1_desdp"]
[ext_resource type="Script" uid="uid://55w7a0chbkwm" path="res://Scripts/look_at.gd" id="2_ktb40"]
[node name="LookAt" type="Control" unique_id=968619706]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 408.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_desdp")
script = ExtResource("2_ktb40")
[node name="FullBack" type="ColorRect" parent="." unique_id=1132069275]
layout_mode = 0
offset_right = 872.0
offset_bottom = 720.0
color = Color(0, 0, 0, 0.09411765)
[node name="LookBack" type="ColorRect" parent="." unique_id=725295370]
layout_mode = 0
offset_left = 25.0
offset_top = 314.0
offset_right = 858.0
offset_bottom = 596.0
color = Color(0.113725, 0.164706, 0.223529, 0.905882)
[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=1955241184]
layout_mode = 0
offset_left = 25.0
offset_top = 314.0
offset_right = 858.0
offset_bottom = 596.0
vertical_scroll_mode = 0
[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer" unique_id=1573145034]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="Cancel" type="Button" parent="." unique_id=1089762157]
layout_mode = 0
offset_left = 716.0
offset_top = 654.0
offset_right = 852.0
offset_bottom = 682.0
text = "PROMPT_CANCEL"
[node name="Tree" type="Tree" parent="." unique_id=1128160591]
unique_name_in_owner = true
layout_mode = 0
offset_left = 23.0
offset_top = 28.0
offset_right = 857.0
offset_bottom = 289.0
hide_root = true
scroll_horizontal_enabled = false

View File

@@ -552,10 +552,10 @@ layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -283.5
offset_top = 75.0
offset_right = 291.5
offset_bottom = 123.0
offset_left = -286.5
offset_top = 103.0
offset_right = 288.5
offset_bottom = 151.0
grow_horizontal = 2
theme = ExtResource("8_u8usn")
color = Color(0.180392, 0.32549, 0.45098, 1)
@@ -577,6 +577,38 @@ theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_font_sizes/font_size = 30
text = "MULLIGAN_TEXT"
[node name="ReadyGuide" type="ColorRect" parent="CanvasLayer/OpponentLabel" unique_id=333703001]
visible = false
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -423.5
offset_top = 52.0
offset_right = 423.5
offset_bottom = 100.0
grow_horizontal = 2
theme = ExtResource("8_u8usn")
color = Color(0.180392, 0.32549, 0.45098, 1)
[node name="Label" type="Label" parent="CanvasLayer/OpponentLabel/ReadyGuide" unique_id=976877218]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -73.5
offset_top = -21.0
offset_right = 73.5
offset_bottom = 21.0
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_font_sizes/font_size = 20
text = "READY_GUIDE_1"
vertical_alignment = 1
[node name="SPmarker" type="Sprite2D" parent="." unique_id=1790657238]
visible = false
z_index = 4

View File

@@ -86,6 +86,7 @@ func findByClass(node: Node, className : String, result : Array) -> void:
func _ready():
proper_hypertext = "https://" if %WebSocket.use_WSS else "http://"
%WebSocket.host = Server.websocketURL
Database.downloader = %HTTPManager
randomize()
@@ -94,7 +95,10 @@ func _ready():
#Intialize Decks folder and starter decks
if !DirAccess.dir_exists_absolute("user://Decks"):
DirAccess.make_dir_absolute("user://Decks")
#Little song-and-dance to load default decks that haven't been loaded before
#We wish for the user to be able to delete default decks without them coming right back the next time they go to the main menu
#So we need to store a list of decks that have previously been loaded
var dir = DirAccess.open("res://Decks")
var temp_loaded_decks = Settings.settings.LoadedDecks.duplicate()
for file_name in dir.get_files():
@@ -351,6 +355,12 @@ func _go_to_github():
func _start_data():
Settings.card_version = FileAccess.get_file_as_string("res://cardLocalization/card_version.txt")
if Database.needs_to_download_images and (!FileAccess.file_exists("user://tempCardFronts/card_version.txt") or \
Settings.card_version != FileAccess.get_file_as_string("user://tempCardFronts/card_version.txt")):
#Reset the temporary folder
Database.delete_folder_recursive("user://tempCardFronts")
DirAccess.make_dir_absolute("user://tempCardFronts")
DirAccess.copy_absolute("res://cardLocalization/card_version.txt", "user://tempCardFronts/card_version.txt")
%CardVersionText.text = "Card Version " + Settings.card_version
INTJSON.parse(FileAccess.get_file_as_string("res://cardData.json"))
Database.setup_data(INTJSON.data, Settings._connect_local.bind(%Timer2.start))
@@ -874,10 +884,12 @@ func _on_websocket_received(raw_data):
for number in data["current"]:
Database.current_banlist[number] = int(data["current"][number])
Database.unreleased[number] = int(data["current"][number])
Database.unreleased_server[number] = int(data["current"][number])
for number in data["en_current"]:
Database.en_current_banlist[number] = int(data["en_current"][number])
Database.en_unreleased[number] = int(data["en_current"][number])
for number in data["unreleased"]:
Database.unreleased_server[number] = int(data["unreleased"][number])
for found in _serf_placeholder_numbers(number):
Database.unreleased[found] = int(data["unreleased"][number])
for number in data["en_unreleased"]:
@@ -1003,13 +1015,13 @@ func create_lobby() -> void:
if Settings.settings.OnlyEN:
settings["onlyEN"] = true
if lobby_banlist.selected == 1:
settings["banlist"] = Database.current_banlist
settings["banlist"] = Database.unreleased_server
elif lobby_banlist.selected == 2:
settings["banlist"] = Database.en_current_banlist
elif lobby_banlist.selected == 3:
settings["banlist"] = Database.unreleased
elif lobby_banlist.selected == 4:
settings["banlist"] = Database.en_unreleased
elif lobby_banlist.selected == 3:
settings["banlist"] = Database.current_banlist
elif lobby_banlist.selected == 4:
settings["banlist"] = Database.en_current_banlist
else:
settings["banlist"] = {}
send_command("Server","Create Lobby",{"settings":settings})
@@ -1036,11 +1048,11 @@ func found_lobbies(found:Array) -> void:
0:
lobbyButton.text += tr("LOBBY_BANLIST_NONE")
1:
lobbyButton.text += tr("LOBBY_BANLIST_CURRENT")
lobbyButton.text += tr("LOBBY_BANLIST_UNRELEASED")
2:
lobbyButton.text += tr("LOBBY_BANLIST_CURRENT_EN")
3:
lobbyButton.text += tr("LOBBY_BANLIST_UNRELEASED")
lobbyButton.text += tr("LOBBY_BANLIST_CURRENT")
4:
lobbyButton.text += tr("LOBBY_BANLIST_UNRELEASED_EN")
_:
@@ -1112,6 +1124,14 @@ func spectate_game_from_code() -> void:
if game_list_code.text != "":
spectate_game(game_list_code.text)
func _on_paste_game_code_button_pressed() -> void:
var clipboard_contents: String = DisplayServer.clipboard_get()
var filtered_text: String = lobby_code_regex.sub(clipboard_contents, "", true)
# Game code is 10 characters long.
game_list_code.text = filtered_text.substr(0, 10)
update_spectate_from_code_button(game_list_code.text)
func update_spectate_from_code_button(current_string:String) -> void:
game_list_code_button.disabled = (current_string == "")
@@ -1171,6 +1191,9 @@ func update_lobby(lobby_id:String, waiting:Dictionary, chosen, you_are_chosen:bo
func _on_copy_lobby_code_button_pressed() -> void:
DisplayServer.clipboard_set(current_lobby)
func _on_copy_game_code_button_pressed() -> void:
DisplayServer.clipboard_set(yourSide.game_id)
func choose_opponent(player_id):
send_command("Lobby","Choose Opponent",{"chosen":player_id})

View File

@@ -22,5 +22,5 @@ func _on_texture_button_mouse_entered():
func _on_texture_button_mouse_exited():
emit_signal("mouse_exited")
func set_texture(text):
$TextureRect.texture = text
func set_art(cardNumber: String, artNum: int) -> void:
$CardFront._initialize(cardNumber, artNum)

View File

@@ -206,9 +206,11 @@ var attached = []
%CardInfo.extraNames = value
func setup_info(number,art_code,back=null):
%CardInfo.setup_info(number, art_code, back)
func setup_info(number,art_code,back=null,load_front=true):
%CardInfo.setup_info(number, art_code, back, load_front)
func start_loading_art() -> void:
%CardInfo.start_loading_art()
func set_ban(num: int):
%CardInfo.set_ban(num)

View File

@@ -1,9 +1,13 @@
extends Control
var cardFront
var cardFrontPath
var cardFrontLoading = false
var notFound = false
func _initialize(cardNumber:String, artNum:int) -> void:
var cardArtInfo
func _initialize(cardNumber:String, artNum:int, load_art:bool=true) -> void:
var card_data = Database.cardData[cardNumber]
if card_data.is_empty():
@@ -29,11 +33,44 @@ func _initialize(cardNumber:String, artNum:int) -> void:
lang_code = lang
if cardNumber in Database.cardArts and int(artNum) in Database.cardArts[cardNumber] and lang_code in Database.cardArts[cardNumber][int(artNum)]:
cardFront = load(Database.cardArts[cardNumber][int(artNum)][lang_code])
%Front.texture = cardFront
cardFrontPath = Database.cardArts[cardNumber][int(artNum)][lang_code]
cardArtInfo = [cardNumber, int(artNum), lang_code]
if Database.needs_to_download_images:
cardFrontPath = Database.pathFront + cardFrontPath
if load_art:
_start_loading_art()
else:
print(cardNumber, " ", artNum, " ", lang_code)
func _start_loading_art() -> void:
if cardFrontPath:
if Database.needs_to_download_images:
Database.get_card_front(cardArtInfo[0], cardArtInfo[1], cardArtInfo[2], _load_art_web)
else:
ResourceLoader.load_threaded_request(cardFrontPath)
cardFrontLoading = true
func _load_art_web(_response=null) -> void:
if Database.needs_to_download_images and cardFrontPath and FileAccess.file_exists(cardFrontPath):
var image = Image.load_from_file(cardFrontPath)
if image:
cardFront = ImageTexture.create_from_image(image)
%Front.texture = cardFront
else:
match Settings.settings.Language:
"ja":
cardFront = load("res://Sou_Desu_Ne_JP.png")
%Front.texture = cardFront
_:
cardFront = load("res://Sou_Desu_Ne.png")
%Front.texture = cardFront
func _process(_delta: float) -> void:
if cardFrontLoading and ResourceLoader.load_threaded_get_status(cardFrontPath) == 3:
cardFront = ResourceLoader.load_threaded_get(cardFrontPath)
%Front.texture = cardFront
cardFrontLoading = false
func _flip(back_image = null) -> void:
if back_image:

View File

@@ -13,7 +13,11 @@ signal card_right_clicked(card_id)
signal card_mouse_over(card_id)
signal card_mouse_left
var cardFront
var cardFront:
get:
return %Front.cardFront
set(value):
%CardInfo.cardFront = value
var cardBack
var fullText = ""
@export var artNum:int
@@ -60,7 +64,7 @@ var attached = []
# Android input handling
var android_click_handled := false
func setup_info(number,art_code,back=null):
func setup_info(number,art_code,back=null,load_art=true) -> void:
cardNumber = number
artNum = art_code
@@ -69,8 +73,7 @@ func setup_info(number,art_code,back=null):
var card_data = Database.cardData[cardNumber]
%Front._initialize(cardNumber, artNum)
cardFront = %Front.cardFront
%Front._initialize(cardNumber, artNum, load_art)
notFound = %Front.notFound
cardType = card_data.cardType
@@ -153,6 +156,10 @@ func setup_info(number,art_code,back=null):
fullText = full_desc()
func start_loading_art() -> void:
if cardFront == null and !%Front.cardFrontLoading:
%Front._start_loading_art()
func set_ban(num: int):
if num < 0:
%Ban.visible = false

11
Scripts/cheer_count.gd Normal file
View File

@@ -0,0 +1,11 @@
extends Control
var cheer_texture:
get:
return %CheerBase.texture
set(value):
%CheerBase.texture = value
var count = 20:
set(value):
%Count.text = str(value)

View File

@@ -0,0 +1 @@
uid://1xx0yie53yhy

View File

@@ -13,7 +13,7 @@ signal card_mouse_left
func addCard(number, artCode):
var newCard = card.instantiate()
newCard.inEditor = true
newCard.setup_info(number, artCode)
newCard.setup_info(number, artCode, null, cards.size() == 0)
if cards.size() > 0:
newCard.visible = false
$Cards.add_child(newCard)
@@ -37,6 +37,7 @@ func setAltArt(art_index):
$LastAltArt.visible = false
cards[current_card].visible = false
cards[art_index].visible = true
cards[art_index].start_loading_art()
current_card = art_index
if cards.size() - art_index > 1:
$NextAltArt.visible = true

View File

@@ -16,6 +16,13 @@ var en_current_banlist = {}
var unreleased = {}
var en_unreleased = {}
var unreleased_server = {}
var downloader
var needs_to_download_images = OS.has_feature("web")
var pathFront = "user://tempCardFronts/" if needs_to_download_images else "res://cardFronts/"
var webFront = "https://raw.githubusercontent.com/GabeJWJ/holoDelta/refs/heads/master/cardFronts/"
func setup_data(result, callback = null, progress = null):
cardData = result
totalCards = cardData.keys().size()
@@ -25,9 +32,11 @@ func setup_data(result, callback = null, progress = null):
var splitNumber = cardNumber.split("-",false,2)
for art_code in cardData[cardNumber]["cardArt"]:
for lang in cardData[cardNumber]["cardArt"][art_code]:
var path = "res://cardFronts/{setcode}/{lang}/{number}/{artCode}.webp".format(
{"setcode":splitNumber[0],"number":splitNumber[1],"lang":lang,"artCode":art_code})
if ResourceLoader.exists(path):
var path = "{setcode}/{lang}/{number}/{artCode}.webp".format(
{"setcode":splitNumber[0],"number":splitNumber[1],"lang":lang,"artCode":art_code})
if !needs_to_download_images:
path = pathFront + path
if needs_to_download_images or ResourceLoader.exists(path):
if cardNumber not in cardArts:
cardArts[cardNumber] = {}
if int(art_code) not in cardArts[cardNumber]:
@@ -36,10 +45,34 @@ func setup_data(result, callback = null, progress = null):
#Was loading the texture, grabbing the image, and creating an ImageTexture from it
#Not sure why; this has less juggling
cardArts[cardNumber][int(art_code)][lang] = path
else:
print(path)
else:
print(path)
current += 1
if progress:
progress.call(current, totalCards)
if callback:
callback.call()
func get_card_front(cardNumber:String, art_code:int, lang_code:String, callback:Callable) -> void:
if needs_to_download_images:
if cardNumber in cardArts and art_code in cardArts[cardNumber] and lang_code in cardArts[cardNumber][art_code]:
var path = cardArts[cardNumber][art_code][lang_code]
if FileAccess.file_exists(pathFront + path):
#We already have this art downloaded - don't do it again
callback.call()
else:
#We have to download it
downloader.job(webFront + path).download(pathFront + path, callback)
else:
print(cardNumber, " ", art_code, " ", lang_code)
else:
#We have the images just stored in the executable. This should be checked before calling this function, but just in case.
callback.call()
func delete_folder_recursive(path: String) -> void:
if DirAccess.dir_exists_absolute(path):
for dir in DirAccess.get_directories_at(path):
delete_folder_recursive(path.path_join(dir))
for file in DirAccess.get_files_at(path):
DirAccess.remove_absolute(path.path_join(file))
DirAccess.remove_absolute(path)

View File

@@ -57,10 +57,10 @@ var tag_order = ["JP", "ID", "EN", "DEV_IS",
"IDGen1", "IDGen2", "IDGen3",
"Myth", "Council", "Promise", "Advent", "Justice",
"ReGloss", "FLOWGLOW",
"AnimalEars", "Art", "Bird", "Cooking", "Food", "HalfElf", "HoloWitch", "Kaela'sArms",
"AnimalEars", "Art", "Bird", "Cooking", "Food", "HalfElf", "HoloWitch", "Kaela'sArms", "Lamy'sAlcohol",
"Languages", "Magic", "Sea", "ShirakamiCharacter", "Shooter", "Song", "Baby", "Alcohol", "Summer", "BuzzMerch"]
#Constants filled up at runtime. So the name select isn't giving you options that aren't in the game
#Constants filled up at runtime. So the name select isn't giving you options that aren't in the game for example
var oshi_colors = []
var oshi_names = []
var oshi_setcodes = []
@@ -126,7 +126,7 @@ var cheer_multiple = 1
@onready var mainSleeveSelect = $CanvasLayer/YourStuff/TAB_SLEEVES/Main
@onready var cheerSleeveSelect = $CanvasLayer/YourStuff/TAB_SLEEVES/Cheer
var banlist = Database.en_current_banlist if Settings.settings.OnlyEN else Database.current_banlist
var banlist = Database.en_unreleased if Settings.settings.OnlyEN else Database.unreleased
#endregion
@@ -152,6 +152,8 @@ func findByClass(node: Node, className : String, result : Array) -> void:
func _ready() -> void:
tr("LEVEL_ANY") #for POT generation - Godot's automatic system won't find it in a popupmenu list
Database.downloader = %HTTPManager
if Settings.settings.OnlyEN:
$CanvasLayer/BanlistChoice.selected = 2
@@ -162,11 +164,17 @@ func _ready() -> void:
for cardNumber in Database.cardData:
if cardNumber in Database.cardArts:
var newCardButton
if Settings.settings.OnlyEN:
var found_en_art = false
for art_code in Database.cardData[cardNumber]["cardArt"]:
if "en" in Database.cardData[cardNumber]["cardArt"][art_code] and !Database.cardData[cardNumber]["cardArt"][art_code]["en"]["proxy"]:
found_en_art = true
break
if !found_en_art:
continue
for art_code in Database.cardData[cardNumber]["cardArt"]:
if Settings.settings.OnlyEN and ("en" not in Database.cardData[cardNumber]["cardArt"][art_code] or Database.cardData[cardNumber]["cardArt"][art_code]["en"]["proxy"]):
continue
if !Settings.settings.OnlyEN and "ja" not in Database.cardData[cardNumber]["cardArt"][art_code]:
continue
newCardButton = add_to_collection(cardNumber,int(art_code))
if !newCardButton:
@@ -315,6 +323,11 @@ func _ready() -> void:
GameState.deck_to_import = null
pass
if OS.has_feature("web"):
$CanvasLayer/YourStuff/TAB_IMPORT/VBoxContainer/DownloadJSON.visible = true
else:
$CanvasLayer/YourStuff/TAB_IMPORT.queue_free()
%Loading.visible = false
#region Filter And Sort
@@ -376,7 +389,7 @@ func _holomem_filter(holomem_to_check) -> bool:
if holomem_filter.Advantage != null:
var found_art_with_correct_advantage = false
for possible_art in holomem_to_check.holomem_arts:
if possible_art[-1] == holomem_filter.Advantage:
if possible_art[5] == holomem_filter.Advantage:
found_art_with_correct_advantage = true
break
if !found_art_with_correct_advantage:
@@ -887,7 +900,9 @@ func add_holomem_or_support(card_added, amount=1) -> void:
func add_to_collection(number : String, art_code : int):
var newCollection
if number.begins_with("hBD"):
#Collect the BD Oshis together by color
var color = Database.cardData[number]["color"][0]
if color in bd_collections:
newCollection = bd_collections[color]
@@ -899,8 +914,11 @@ func add_to_collection(number : String, art_code : int):
bd_collections[color] = newCollection
oshi_cards.append(newCollection)
elif number in collections:
#We've already done at least one version of this card
#Add this one to the collection
newCollection = collections[number]
else:
#New card, new collection
newCollection = collection.instantiate()
newCollection.card_clicked.connect(_on_menu_card_clicked)
newCollection.card_right_clicked.connect(_on_menu_card_right_clicked)
@@ -1175,7 +1193,11 @@ func is_deck_legal():
if cardNumber in banlist and banlist[cardNumber] < in_deck_dictionary[cardNumber]:
$CanvasLayer/SaveDeck.tooltip_text += tr("DECKERROR_RESTRICTED").format({cardNum = cardNumber}) + "\n"
return $CanvasLayer/SaveDeck.tooltip_text == ""
var deck_is_legal = $CanvasLayer/SaveDeck.tooltip_text == ""
if OS.has_feature("web"):
$CanvasLayer/YourStuff/TAB_IMPORT/VBoxContainer/DownloadJSON.disabled = !deck_is_legal
return deck_is_legal
func update_analytics():
var result = ""
@@ -1214,13 +1236,13 @@ func _on_banlist_choice_item_selected(index: int) -> void:
0:
banlist = []
1:
banlist = Database.current_banlist
2:
banlist = Database.en_current_banlist
3:
banlist = Database.unreleased
4:
2:
banlist = Database.en_unreleased
3:
banlist = Database.current_banlist
4:
banlist = Database.en_current_banlist
for potential_card in all_cards:
if is_instance_valid(potential_card):
@@ -1246,8 +1268,6 @@ func _on_save_deck_pressed():
else:
print("An error occurred when trying to access the path.")
$CanvasLayer/SavePrompt.visible = true
if OS.has_feature("web"):
$CanvasLayer/SavePrompt/FileName/Download.visible = true
func _save_deck_to_file(path, download=false):
if !path.ends_with(".json"):
@@ -1291,7 +1311,8 @@ func _save_deck_to_file(path, download=false):
file_access.store_line(json_string)
file_access.close()
_hide_save_prompt()
if !download:
_hide_save_prompt()
func _on_save_pressed(confirmed=false):
var file_name = $CanvasLayer/SavePrompt/FileName.text

View File

@@ -35,14 +35,14 @@ func _all_decks() -> void:
if INTJSON.parse(FileAccess.get_file_as_string(path + "/" + file_name)) == 0:
if Settings.settings.OnlyEN:
var found_not_en = false
if !check_if_card_is_en(INTJSON.data.oshi[0],INTJSON.data.oshi[1]):
if !check_if_card_is_en(INTJSON.data.oshi[0]):
found_not_en = true
for card_info in INTJSON.data.deck:
if !check_if_card_is_en(card_info[0],card_info[2]):
if !check_if_card_is_en(card_info[0]):
found_not_en = true
break
for card_info in INTJSON.data.cheerDeck:
if !check_if_card_is_en(card_info[0],card_info[2]):
if !check_if_card_is_en(card_info[0]):
found_not_en = true
break
if found_not_en:
@@ -57,9 +57,9 @@ func _all_decks() -> void:
else:
print("An error occurred when trying to access the path.")
func check_if_card_is_en(cardNumber, artNum):
return cardNumber in Database.cardData and str(artNum) in Database.cardData[cardNumber]["cardArt"] and \
"en" in Database.cardData[cardNumber]["cardArt"][str(artNum)] and !Database.cardData[cardNumber]["cardArt"][str(artNum)]["en"]["proxy"]
func check_if_card_is_en(cardNumber):
return cardNumber in Database.cardData and \
Database.cardData[cardNumber]["cardArt"].keys().any(func(artNum): return "en" in Database.cardData[cardNumber]["cardArt"][artNum] and !Database.cardData[cardNumber]["cardArt"][artNum]["en"]["proxy"])
func _set_selected(deckInfo : Dictionary) -> void:

View File

@@ -23,10 +23,22 @@ var cheer_attached = {"White":[],"Green":[],"Red":[],"Blue":[],"Purple":[],"Yell
@export var allowed_to_scroll = true
var locked = false
var cheer = {"Blue":load("res://CheerIcons/Blue.webp"),"Red":load("res://CheerIcons/Red.webp"),
"Green":load("res://CheerIcons/Green.webp"),"White":load("res://CheerIcons/White.webp"),
"Purple":load("res://CheerIcons/Purple.webp"),"Yellow":load("res://CheerIcons/Yellow.webp"),
"Colorless":load("res://CheerIcons/Colorless.webp")}
var all_art_loaded = false
var cheer = {"Blue":preload("res://CheerIcons/Blue.webp"),"Red":preload("res://CheerIcons/Red.webp"),
"Green":preload("res://CheerIcons/Green.webp"),"White":preload("res://CheerIcons/White.webp"),
"Purple":preload("res://CheerIcons/Purple.webp"),"Yellow":preload("res://CheerIcons/Yellow.webp"),
"Colorless":preload("res://CheerIcons/Colorless.webp")}
var cheer_count_scene = preload("res://Scenes/cheer_count.tscn")
func _process(_delta: float) -> void:
if !all_art_loaded:
var found_unloaded_art = false
for entry in showing:
if entry[0].texture == null:
entry[0].texture = entry[2].cardFront
found_unloaded_art = true
all_art_loaded = !found_unloaded_art
func _new_info(top_card, card_to_show) -> void:
#Reads all of the proper info and passes it along to _set_showing to display
@@ -45,10 +57,10 @@ func _new_info(top_card, card_to_show) -> void:
#We add the cards in the order top_card, top_card.onTopOf, top_card.attached (skipping cheers)
showing_card_ids.append(top_card.cardID)
result.append([top_card.cardFront,top_card.full_desc()])
result.append([top_card.cardFront,top_card.full_desc(),top_card])
for stacked_card in top_card.onTopOf:
showing_card_ids.append(stacked_card.cardID)
result.append([stacked_card.cardFront,stacked_card.full_desc()])
result.append([stacked_card.cardFront,stacked_card.full_desc(),stacked_card])
for attached_card in top_card.attached:
if attached_card.cardType == "Cheer":
var preview = TextureRect.new()
@@ -60,6 +72,16 @@ func _new_info(top_card, card_to_show) -> void:
showing_card_ids.append(attached_card.cardID)
result.append([attached_card.cardFront,attached_card.full_desc()])
#If at least 5 cheer of the same color, condense into one cheer icon with number
for cheer_color in cheer_result:
if cheer_result[cheer_color].size() >= 5:
var cheer_count = cheer_count_scene.instantiate()
cheer_count.z_index = 1
cheer_count.scale = CHEER_SCALE
cheer_count.cheer_texture = cheer[cheer_color]
cheer_count.count = cheer_result[cheer_color].size()
cheer_result[cheer_color] = [cheer_count]
#If you hover over an attached cheer the index is -1, which just shows the last card
#That doesn't feel right, so we'll clamp to 0
var index_to_show = max(0, showing_card_ids.find(card_to_show.cardID))
@@ -103,7 +125,7 @@ func _set_showing(to_show : Array, cheer_show : Dictionary, start_index : int) -
preview.size = CARD_SIZE
preview.position = Vector2(starting_pos - (each_offset * i), NORMAL_Y)
preview.texture = entry[0]
showing.insert(0,[preview,entry[1]])
showing.insert(0,[preview,entry[1],entry[2]])
var gray = TextureRect.new()
%Preview.add_child(gray)
gray.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
@@ -167,6 +189,7 @@ func _clear_showing() -> void:
%CardText.text = ""
showing_card_ids = []
%ScrollIcon.visible = false
all_art_loaded = false
func update_word_wrap() -> void:
#For some reason, Japanese won't word wrap under word smart mode when exported

61
Scripts/look_at.gd Normal file
View File

@@ -0,0 +1,61 @@
#Yes I need to come back to this
#New LookAt object that comes with multi-select and a Tree to filter the cards shown
#Should also coincedentally fix the issue with cheer getting 'stuck' on the cheer deck.
#When/if I finish it of course
extends Control
var tree_root : TreeItem
var holomem_node : TreeItem
var holomem_level_node : TreeItem
var holomem_color_node : TreeItem
var holomem_name_node : TreeItem
var holomem_tag_node : TreeItem
var holomem_extra_node : TreeItem
var support_node : TreeItem
var support_type_node : TreeItem
var support_tag_node : TreeItem
var cheer_node : TreeItem
var cheer_color_node : TreeItem
var cards_to_show : Array
var all_cards : Array
var show_tree := true:
set(value):
show_tree = value
%Tree.visible = value
func _ready() -> void:
tree_root = %Tree.create_item()
func _create_new_node(base:TreeItem, text:String) -> TreeItem:
var new_node = %Tree.create_item(base)
new_node.set_cell_mode(0, 1)
new_node.set_editable(0, true)
new_node.set_text(0, text)
return new_node
func _clear() -> void:
cards_to_show = []
all_cards = []
for child in %HBoxContainer.get_children():
child.queue_free()
%Tree.clear()
holomem_node = null
holomem_level_node = null
holomem_color_node = null
holomem_name_node = null
holomem_tag_node = null
holomem_extra_node = null
support_node = null
support_type_node = null
support_tag_node = null
cheer_node = null
cheer_color_node = null
tree_root = %Tree.create_item()
func _show_cards(list_of_cards : Array) -> void:
all_cards = list_of_cards

1
Scripts/look_at.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://55w7a0chbkwm

View File

@@ -1,7 +1,6 @@
extends Node
const websocketURL = "holodelta.azurewebsites.net" # "127.0.0.1:8000" #
const websocketURL = "127.0.0.1:8000" # "holodelta.azurewebsites.net" #
# Called when the node enters the scene tree for the first time.
func _ready() -> void:

View File

@@ -420,6 +420,7 @@ func specialStart3(fmc):
$CanvasLayer/Question.visible = false
$CanvasLayer/Ready.visible = true
$CanvasLayer/OpponentLabel/ReadyGuide.visible = true
can_do_things = true
func _call_ready():
@@ -1033,7 +1034,7 @@ func showLookAt(list_of_cards):
if actualCard == null:
continue
var newButton = betterButton.instantiate()
newButton.set_texture(actualCard.cardFront)
newButton.set_art(actualCard.cardNumber, actualCard.artNum)
newButton.id = actualCard.cardID
newButton.pressed.connect(_on_list_card_clicked.bind(actualCard.cardID))
if actualCard.temporary:
@@ -1353,8 +1354,11 @@ func _on_card_clicked(card_id : int) -> void:
popup.add_item(tr("CARD_SUPPORT_ATTACH"), 121)
else:
var cantUseLimited = used_limited or (first_turn and player1)
if playing == null and !(actualCard.limited and cantUseLimited):
popup.add_item(tr("CARD_SUPPORT_PLAY"),120)
if playing == null:
if actualCard.limited and cantUseLimited:
popup.add_item(tr("CARD_SUPPORT_PLAY_ANYWAY"),120)
else:
popup.add_item(tr("CARD_SUPPORT_PLAY"),120)
elif playing == currentCard:
popup.add_item(tr("CARD_SUPPORT_ARCHIVE"),20)
"Oshi":
@@ -1788,7 +1792,10 @@ func _popup_from_id(id, metadata = null):
102: #Play Hidden to Center
preliminary_holomem_in_center = true
if mulligan_to_bottom == 0:
$CanvasLayer/OpponentLabel/ReadyGuide/Label.text = tr("READY_GUIDE_3")
$CanvasLayer/Ready.disabled = false
else:
$CanvasLayer/OpponentLabel/ReadyGuide/Label.text = tr("READY_GUIDE_2").format({"num":mulligan_to_bottom})
103: #Play Hidden to Back
var possibleZones = all_unoccupied_back_zones()
showZoneSelection(possibleZones)
@@ -1798,7 +1805,10 @@ func _popup_from_id(id, metadata = null):
if mulligan_to_bottom > 0:
mulligan_to_bottom -= 1
if mulligan_to_bottom == 0:
$CanvasLayer/OpponentLabel/ReadyGuide/Label.text = tr("READY_GUIDE_3")
$CanvasLayer/Ready.disabled = false
else:
$CanvasLayer/OpponentLabel/ReadyGuide/Label.text = tr("READY_GUIDE_2").format({"num":mulligan_to_bottom})
121: #Attach Support
var possibleZones = all_occupied_zones()
showZoneSelection(possibleZones)

View File

@@ -80,4 +80,7 @@ func show_damage() -> void:
%ZoneButton.visible = true
func add_note(new_note: String) -> void:
if notes_this_turn.size() == 0:
%ZoneButton.tooltip_text += "\n" + tr("GOLDFISH_NOTES_THIS_TURN")
notes_this_turn.append(new_note)
%ZoneButton.tooltip_text += "\n" + new_note

View File

@@ -1 +1 @@
{"hEB01-***":0}
{"hEB01-0**":0,"hBP09-***":0}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
25/6/2026
27/7/2026

View File

@@ -1 +1 @@
1.2.2.8
1.2.3.0

View File

@@ -18,7 +18,7 @@ def check_legal(deck, banlist = None, only_en = False):
if oshi_card["cardType"] == "Oshi":
if str(oshi_art) in oshi_card["cardArt"]:
if find_in_list(banlist, oshi_number) is None:
if only_en and not check_if_card_is_en(oshi_number, oshi_art):
if only_en and not check_if_card_is_en(oshi_number):
result["legal"] = False
result["reasons"].append(["DECKERROR_ONLYEN",oshi_number])
else:
@@ -46,6 +46,8 @@ def check_legal(deck, banlist = None, only_en = False):
found_debut = False
total_main = 0
found_of_each_number = {}
for main_row in deck_info:
main_number = main_row[0]
main_card = card_info(card_id=main_number)
@@ -58,19 +60,25 @@ def check_legal(deck, banlist = None, only_en = False):
if main_card["cardType"] in ["Holomem","Support"]:
if main_card["cardType"] == "Holomem" and main_card["level"] == 0:
found_debut = True
if main_card["cardLimit"] == -1 or main_count <= main_card["cardLimit"]:
if main_number in found_of_each_number:
found_of_each_number[main_number] += main_count
else:
found_of_each_number[main_number] = main_count
if main_card["cardLimit"] == -1 or found_of_each_number[main_number] <= main_card["cardLimit"]:
if main_count > 0:
if str(main_art) in main_card["cardArt"]:
banned_code = find_in_list(banlist, main_number)
if banned_code is None:
if only_en and not check_if_card_is_en(main_number, main_art):
if only_en and not check_if_card_is_en(main_number):
result["legal"] = False
result["reasons"].append(["DECKERROR_ONLYEN",main_number])
else:
if banlist[banned_code] == 0:
result["legal"] = False
result["reasons"].append(["DECKERROR_BANNED",main_number])
elif banlist[banned_code] < main_count:
elif banlist[banned_code] < found_of_each_number[main_number]:
result["legal"] = False
result["reasons"].append(["DECKERROR_RESTRICTED",main_number])
else:
@@ -128,7 +136,7 @@ def check_legal(deck, banlist = None, only_en = False):
if str(cheer_art) in cheer_card["cardArt"]:
banned_code = find_in_list(banlist, cheer_number)
if banned_code is None:
if only_en and not check_if_card_is_en(cheer_number, cheer_art):
if only_en and not check_if_card_is_en(cheer_number):
result["legal"] = False
result["reasons"].append(["DECKERROR_ONLYEN",cheer_number])
else:
@@ -172,7 +180,7 @@ def check_legal(deck, banlist = None, only_en = False):
return real_deck, result
def check_if_card_is_en(cardNumber, artNum):
def check_if_card_is_en(cardNumber):
card_data = get_data("card_data")
return cardNumber in card_data and str(artNum) in card_data[cardNumber]["cardArt"] and \
"en" in card_data[cardNumber]["cardArt"][str(artNum)] and not card_data[cardNumber]["cardArt"][str(artNum)]["en"]["proxy"]
return cardNumber in card_data and \
any("en" in card_data[cardNumber]["cardArt"][artNum] and not card_data[cardNumber]["cardArt"][artNum]["en"]["proxy"] for artNum in card_data[cardNumber]["cardArt"])

View File

@@ -25,8 +25,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -25,8 +25,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -115,6 +115,9 @@ corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
corner_detail = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fiq7h"]
bg_color = Color(0.063355684, 0.09938582, 0.14095011, 0.90588236)
[resource]
BoxContainer/constants/separation = 30
Button/colors/font_color = Color(0.384314, 0.356863, 0.576471, 1)
@@ -159,3 +162,6 @@ TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_ledp1")
TooltipLabel/colors/font_color = Color(0.875, 0.875, 0.875, 1)
TooltipLabel/fonts/font = ExtResource("1_qct6y")
TooltipPanel/styles/panel = SubResource("StyleBoxFlat_gv6e5")
Tree/colors/font_color = Color(0.9355364, 0.9355364, 0.93553627, 1)
Tree/fonts/font = ExtResource("1_qct6y")
Tree/styles/panel = SubResource("StyleBoxFlat_fiq7h")

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://vxfe3fkfuq14"
path.s3tc="res://.godot/imported/chat.png-2a304dcf89a61eb8e82872b1ddac79ef.s3tc.ctex"
path.etc2="res://.godot/imported/chat.png-2a304dcf89a61eb8e82872b1ddac79ef.etc2.ctex"
path="res://.godot/imported/chat.png-2a304dcf89a61eb8e82872b1ddac79ef.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://UI/chat.png"
dest_files=["res://.godot/imported/chat.png-2a304dcf89a61eb8e82872b1ddac79ef.s3tc.ctex", "res://.godot/imported/chat.png-2a304dcf89a61eb8e82872b1ddac79ef.etc2.ctex"]
dest_files=["res://.godot/imported/chat.png-2a304dcf89a61eb8e82872b1ddac79ef.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cy6rk1ewblrkk"
path.s3tc="res://.godot/imported/information.png-8e5bf193ebcd46769ad20f5b7481810b.s3tc.ctex"
path.etc2="res://.godot/imported/information.png-8e5bf193ebcd46769ad20f5b7481810b.etc2.ctex"
path="res://.godot/imported/information.png-8e5bf193ebcd46769ad20f5b7481810b.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://UI/information.png"
dest_files=["res://.godot/imported/information.png-8e5bf193ebcd46769ad20f5b7481810b.s3tc.ctex", "res://.godot/imported/information.png-8e5bf193ebcd46769ad20f5b7481810b.etc2.ctex"]
dest_files=["res://.godot/imported/information.png-8e5bf193ebcd46769ad20f5b7481810b.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

View File

@@ -3,30 +3,34 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cr17emtr7b78o"
path.s3tc="res://.godot/imported/settings.png-26a54802621e1d5c05eb02e59cdb05f0.s3tc.ctex"
path.etc2="res://.godot/imported/settings.png-26a54802621e1d5c05eb02e59cdb05f0.etc2.ctex"
path="res://.godot/imported/settings.png-26a54802621e1d5c05eb02e59cdb05f0.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://UI/settings.png"
dest_files=["res://.godot/imported/settings.png-26a54802621e1d5c05eb02e59cdb05f0.s3tc.ctex", "res://.godot/imported/settings.png-26a54802621e1d5c05eb02e59cdb05f0.etc2.ctex"]
dest_files=["res://.godot/imported/settings.png-26a54802621e1d5c05eb02e59cdb05f0.ctex"]
[params]
compress/mode=2
compress/mode=4
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
mipmaps/generate=true
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

File diff suppressed because one or more lines are too long

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-36f390c9d7a55d4a92001fd651362cb1.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-843891f98d1b0c8b59237978a5d1e823.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-264587d6f139dc160433c3ea8c6383fb.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-216574a236124f52a1c17984cc3e0b7e.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-7ddfc92612b4be193d4d1a6c7d47be8b.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-e59cdcca004bd365a16459614027ea04.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-658600d0ab0aa730502507316b059652.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-55cd8e83ce450ed5ce70e2c6a0a7c710.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-bb4fcdac7cf1b292ea2a779229985d54.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-2811f10b694c4514fe6c1b5c108b9328.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-d97ee7a6a0abeec8319d45498ceed7ce.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-7846dd9f93c1333dda588c67ac24d0fd.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-a9bad70af3bd52cef4fd2bd5110ce2ab.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-855c624835713713d79b52c808f094a7.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-a4ed080f47cb14d5f23505fdd53c49af.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-919d27b78f619c4b97641285a4051395.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-1260799e00b3ca48f3f824d1e81dffad.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-77cb5f9a3c8d3bec13c473437684a955.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-96e9aed639d0a412c542c441984e76ef.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-f081eeb4a8f71d68aa05f887d8412aee.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-2a4cfc96c87c8e6bf0479df61de8f097.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-8aab0c947009dd4f15ecd19f4cc8c0c4.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-be44cdf89a8d7239d46f25fa00eee517.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

View File

@@ -15,7 +15,7 @@ dest_files=["res://.godot/imported/0.webp-f6725cc39d606d3a7e3e98864414ecbe.ctex"
[params]
compress/mode=1
compress/mode=4
compress/high_quality=true
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,8 +23,8 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
mipmaps/generate=true
mipmaps/limit=1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0

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