Compare commits

..

No commits in common. "main" and "card-art" have entirely different histories.

118 changed files with 296 additions and 3445 deletions

BIN
assets/card_base/Illustrated BG.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dft4fbgoecbp4"
path="res://.godot/imported/Illustrated BG.png-181034664aa2e590183e18ee7ca1bfaa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Illustrated BG.png"
dest_files=["res://.godot/imported/Illustrated BG.png-181034664aa2e590183e18ee7ca1bfaa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/Monster-InnerFill.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2qyx2k50v2vv"
path="res://.godot/imported/Monster-InnerFill.png-93b412d347601958a4d2176fe728b492.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Monster-InnerFill.png"
dest_files=["res://.godot/imported/Monster-InnerFill.png-93b412d347601958a4d2176fe728b492.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/Pip.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjmxetjq82rl2"
path="res://.godot/imported/Pip.png-de8c266f2e2c9cd5a4519b7d5df4868e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Pip.png"
dest_files=["res://.godot/imported/Pip.png-de8c266f2e2c9cd5a4519b7d5df4868e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/RPS Panel.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0a2opcuwsko8"
path="res://.godot/imported/RPS Panel.png-ccba378cf0e54a7db466c513ef19441b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/RPS Panel.png"
dest_files=["res://.godot/imported/RPS Panel.png-ccba378cf0e54a7db466c513ef19441b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqladcrximh6"
path="res://.godot/imported/Screenshot 2025-01-25 211435.png-7837967bcc49e81c793d612b9d970963.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Screenshot 2025-01-25 211435.png"
dest_files=["res://.godot/imported/Screenshot 2025-01-25 211435.png-7837967bcc49e81c793d612b9d970963.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/Star.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqttp0i3vph37"
path="res://.godot/imported/Star.png-b9b4017ee1202aa95ea8c6ee772a751e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/Star.png"
dest_files=["res://.godot/imported/Star.png-b9b4017ee1202aa95ea8c6ee772a751e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/batu.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bywa8qlwvcksd"
path="res://.godot/imported/batu.png-45758b8e11a9ea003a7865de11dc4441.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/batu.png"
dest_files=["res://.godot/imported/batu.png-45758b8e11a9ea003a7865de11dc4441.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/gunting.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch04c20lkis6j"
path="res://.godot/imported/gunting.png-f8810080ad1e41ec3bcb0f8ff0d8b5f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/gunting.png"
dest_files=["res://.godot/imported/gunting.png-f8810080ad1e41ec3bcb0f8ff0d8b5f8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/illust bg 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://6trhu2r7h6g3"
path="res://.godot/imported/illust bg 1.png-7d6e961f3fef1ad5d8dcf698718d9c23.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/illust bg 1.png"
dest_files=["res://.godot/imported/illust bg 1.png-7d6e961f3fef1ad5d8dcf698718d9c23.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/card_base/kertas.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0pclmv0j0r12"
path="res://.godot/imported/kertas.png-fd031884ac9417a6b135672f3fcc1d7f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/card_base/kertas.png"
dest_files=["res://.godot/imported/kertas.png-fd031884ac9417a6b135672f3fcc1d7f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/Goldfish 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0f5rg5eqyym1"
path="res://.godot/imported/Goldfish 2.png-20495c3132cec5d0b0f2eb9e1b6f168f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/Goldfish 2.png"
dest_files=["res://.godot/imported/Goldfish 2.png-20495c3132cec5d0b0f2eb9e1b6f168f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/axolotl 3.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wdyu7txs2ijg"
path="res://.godot/imported/axolotl 3.png-66300d813b5cc2dfc432414b14c1f8bc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/axolotl 3.png"
dest_files=["res://.godot/imported/axolotl 3.png-66300d813b5cc2dfc432414b14c1f8bc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/capybara 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c72q2py2vj6j4"
path="res://.godot/imported/capybara 1.png-98187c93d8c784ac26a4fe6cdc81e3f0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/capybara 1.png"
dest_files=["res://.godot/imported/capybara 1.png-98187c93d8c784ac26a4fe6cdc81e3f0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/cat 3.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bcusdaqfhlv1b"
path="res://.godot/imported/cat 3.png-a083e2d16032d32908b04a46259e2c6a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/cat 3.png"
dest_files=["res://.godot/imported/cat 3.png-a083e2d16032d32908b04a46259e2c6a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/duck 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ujke0x73f77b"
path="res://.godot/imported/duck 1.png-e7d6d398a984b9ae6ba8f33dfe27e9dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/duck 1.png"
dest_files=["res://.godot/imported/duck 1.png-e7d6d398a984b9ae6ba8f33dfe27e9dd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/froggo 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8accn4e2ojau"
path="res://.godot/imported/froggo 1.png-9f147da84c624d2073b0c92236a84741.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/froggo 1.png"
dest_files=["res://.godot/imported/froggo 1.png-9f147da84c624d2073b0c92236a84741.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/jellyfish 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cstwubbj8l8fr"
path="res://.godot/imported/jellyfish 2.png-d36c6543a46308145decdddd5ae9a63d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/jellyfish 2.png"
dest_files=["res://.godot/imported/jellyfish 2.png-d36c6543a46308145decdddd5ae9a63d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/penguing 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://deneyvmke3qyl"
path="res://.godot/imported/penguing 2.png-80094e4bcdb64d08cfd28547f5dd45c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/penguing 2.png"
dest_files=["res://.godot/imported/penguing 2.png-80094e4bcdb64d08cfd28547f5dd45c7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/rabbit 1.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cu0ivvtvryq64"
path="res://.godot/imported/rabbit 1.png-53666927d04c30fffb92370a7482b673.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/rabbit 1.png"
dest_files=["res://.godot/imported/rabbit 1.png-53666927d04c30fffb92370a7482b673.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/monster/whale 2.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dw8cnu3lfblig"
path="res://.godot/imported/whale 2.png-8dca9b32eca20cb2feb31734e55de3f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/monster/whale 2.png"
dest_files=["res://.godot/imported/whale 2.png-8dca9b32eca20cb2feb31734e55de3f6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/Invisibility.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8hkgi1r8wpri"
path="res://.godot/imported/Invisibility.png-b1f5b6e24b6db1d63402e75c2d90b9f4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/Invisibility.png"
dest_files=["res://.godot/imported/Invisibility.png-b1f5b6e24b6db1d63402e75c2d90b9f4.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/absorb.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv5hjphfixv3o"
path="res://.godot/imported/absorb.png-e8458d89a69818053d3209e7228c83cd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/absorb.png"
dest_files=["res://.godot/imported/absorb.png-e8458d89a69818053d3209e7228c83cd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/all out attack.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bpmr8pa8cq3w0"
path="res://.godot/imported/all out attack.png-2872fd363fbff1bf0b089ac317139b0e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/all out attack.png"
dest_files=["res://.godot/imported/all out attack.png-2872fd363fbff1bf0b089ac317139b0e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/energy booster.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cd1mxacc3gfcy"
path="res://.godot/imported/energy booster.png-f846d83c962a9e077788e0d0ed5252dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/energy booster.png"
dest_files=["res://.godot/imported/energy booster.png-f846d83c962a9e077788e0d0ed5252dd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/insurance.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bwo6dfe1kpxhe"
path="res://.godot/imported/insurance.png-fa2ae7ef8a239dc0e4a4bd2c8f0b477b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/insurance.png"
dest_files=["res://.godot/imported/insurance.png-fa2ae7ef8a239dc0e4a4bd2c8f0b477b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/lifesteal.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bni2wr2vrg0fe"
path="res://.godot/imported/lifesteal.png-1fcf74a2a74d8a4381ce6310ccb999d8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/lifesteal.png"
dest_files=["res://.godot/imported/lifesteal.png-1fcf74a2a74d8a4381ce6310ccb999d8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/potion.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://48hblv72emyr"
path="res://.godot/imported/potion.png-1339ae9737d6625a795e518c852db261.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/potion.png"
dest_files=["res://.godot/imported/potion.png-1339ae9737d6625a795e518c852db261.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/reflection.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3uq5b2x2oacn"
path="res://.godot/imported/reflection.png-2ae705bc1d7282dacca1272db53a447a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/reflection.png"
dest_files=["res://.godot/imported/reflection.png-2ae705bc1d7282dacca1272db53a447a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/sword mastery.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ha5p3vpqn5jv"
path="res://.godot/imported/sword mastery.png-67026928e9b242f46437e6cfb6d95bee.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/sword mastery.png"
dest_files=["res://.godot/imported/sword mastery.png-67026928e9b242f46437e6cfb6d95bee.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
assets/support/tanker.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hiswkj2stt4l"
path="res://.godot/imported/tanker.png-de127e279370081587c7a5243fff4d1c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/support/tanker.png"
dest_files=["res://.godot/imported/tanker.png-de127e279370081587c7a5243fff4d1c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -1,4 +1,4 @@
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://is34t82g4jg"]
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://cj3vs5hq2mcbp"]
[ext_resource type="FontFile" uid="uid://ncoq4i61plvt" path="res://assets/Bohemian Soul.otf" id="1_yowck"]

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://di76avwc0gn8e"]
[ext_resource type="Texture2D" uid="uid://wdyu7txs2ijg" path="res://assets/monster/axolotl 3.png" id="1_j0l6n"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_s0p53"]
[resource]
script = ExtResource("1_s0p53")
rock = 20
paper = 30
scissors = 50
energy_cost = 1
base_health = 120
name = "Axoluna"
description = "Cute wanderer of the tank, Axoluna"
icon = ExtResource("1_j0l6n")

View file

@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://cs7q8i7bvohmj"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_v65bb"]
[resource]
script = ExtResource("1_v65bb")
rock = 100
paper = 100
scissors = 100
energy_cost = 3
base_health = 170

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://tgju8eodyuk1"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_3jfyg"]
[ext_resource type="Texture2D" uid="uid://cu0ivvtvryq64" path="res://assets/monster/rabbit 1.png" id="1_xibsw"]
[resource]
script = ExtResource("1_3jfyg")
rock = 10
paper = 30
scissors = 70
energy_cost = 1
base_health = 50
name = "Bunnaut"
description = "Run faster than tortoise."
icon = ExtResource("1_xibsw")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://cs7q8i7bvohmj"]
[ext_resource type="Texture2D" uid="uid://c72q2py2vj6j4" path="res://assets/monster/capybara 1.png" id="1_mulam"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_n3oql"]
[resource]
script = ExtResource("1_n3oql")
rock = 100
paper = 40
scissors = 80
energy_cost = 3
base_health = 170
name = "Capytain"
description = "A big, hungry capybara"
icon = ExtResource("1_mulam")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://bmst884k0myvd"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_hblhq"]
[ext_resource type="Texture2D" uid="uid://bcusdaqfhlv1b" path="res://assets/monster/cat 3.png" id="1_xles7"]
[resource]
script = ExtResource("1_hblhq")
rock = 10
paper = 10
scissors = 200
energy_cost = 3
base_health = 80
name = "Cattogato"
description = "Lovely cat wandering in the space."
icon = ExtResource("1_xles7")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://bt1ngixrq4sve"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_ayfld"]
[ext_resource type="Texture2D" uid="uid://b8accn4e2ojau" path="res://assets/monster/froggo 1.png" id="1_vlu3d"]
[resource]
script = ExtResource("1_ayfld")
rock = 20
paper = 30
scissors = 50
energy_cost = 1
base_health = 80
name = "Froguvo"
description = "Ribbit in space."
icon = ExtResource("1_vlu3d")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://myxgsyerrdla"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_1j36c"]
[ext_resource type="Texture2D" uid="uid://b0f5rg5eqyym1" path="res://assets/monster/Goldfish 2.png" id="1_62dnj"]
[resource]
script = ExtResource("1_1j36c")
rock = 40
paper = 10
scissors = 10
energy_cost = 1
base_health = 120
name = "Gilli"
description = "There is a huge monster looking at me everyday."
icon = ExtResource("1_62dnj")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://425ipxdapg8o"]
[ext_resource type="Texture2D" uid="uid://cstwubbj8l8fr" path="res://assets/monster/jellyfish 2.png" id="1_t6381"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_yvmeg"]
[resource]
script = ExtResource("1_yvmeg")
rock = 40
paper = 60
scissors = 50
energy_cost = 2
base_health = 110
name = "Jellova"
description = "I'm gonna whip you till' you .. nevermind."
icon = ExtResource("1_t6381")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://cakkx0o8mifmn"]
[ext_resource type="Texture2D" uid="uid://dw8cnu3lfblig" path="res://assets/monster/whale 2.png" id="1_4dsvt"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_xcdwy"]
[resource]
script = ExtResource("1_xcdwy")
rock = 30
paper = 30
scissors = 30
energy_cost = 2
base_health = 200
name = "Orcava"
description = "Human try to communicate with me. I simply block them."
icon = ExtResource("1_4dsvt")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://shri5ne51s74"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_70s4q"]
[ext_resource type="Texture2D" uid="uid://deneyvmke3qyl" path="res://assets/monster/penguing 2.png" id="1_75ppb"]
[resource]
script = ExtResource("1_70s4q")
rock = 60
paper = 60
scissors = 10
energy_cost = 2
base_health = 100
name = "Prankie"
description = "I'm not pranking anyone. Yet."
icon = ExtResource("1_75ppb")

View file

@ -1,15 +0,0 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://dnf3gpji5prlr"]
[ext_resource type="Texture2D" uid="uid://ujke0x73f77b" path="res://assets/monster/duck 1.png" id="1_4f7pv"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_a8rjn"]
[resource]
script = ExtResource("1_a8rjn")
rock = 50
paper = 20
scissors = 40
energy_cost = 1
base_health = 70
name = "Quackle"
description = "Quack! Quack! No one notice me."
icon = ExtResource("1_4f7pv")

View file

@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://di76avwc0gn8e"]
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_j4601"]
[resource]
script = ExtResource("1_j4601")
rock = 50
paper = 50
scissors = 50
energy_cost = 1
base_health = 120

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://be01tdq1fxlct"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_mhxdy"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_f6hay"]
[ext_resource type="Texture2D" uid="uid://cv5hjphfixv3o" path="res://assets/support/absorb.png" id="2_i2lgf"]
[resource]
script = ExtResource("2_f6hay")
scope = "turn"
type = "red"
effects = Array[ExtResource("1_mhxdy")]([])
name = "Absorb"
description = "Enemy damage converted to heal your Active Monster Field HP during this turn."
icon = ExtResource("2_i2lgf")

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://dgxcvdo6x6kst"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_fd50n"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_61mgn"]
[ext_resource type="Texture2D" uid="uid://bpmr8pa8cq3w0" path="res://assets/support/all out attack.png" id="2_a1iip"]
[resource]
script = ExtResource("2_61mgn")
scope = "turn"
type = "green"
effects = Array[ExtResource("1_fd50n")]([null])
name = "All-Out Attack"
description = "Combine all Rock Paper Scissor during this turn, and got additional damage from the lowest Rock Paper Scissor you got."
icon = ExtResource("2_a1iip")

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://dcimexx4twoe2"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_jl6i7"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_p06c1"]
[resource]
script = ExtResource("2_p06c1")
type = "green"
priority = 0
effects = Array[ExtResource("1_jl6i7")]([null])
name = "Attack Mode"
description = "If you have Prankie in your Active Monster Field, set all Rock Paper Scissor to 100 permanently."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://5n2o4m7xqd13"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_w4l0x"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_n7fiv"]
[resource]
script = ExtResource("2_n7fiv")
type = "green"
priority = 0
effects = Array[ExtResource("1_w4l0x")]([null])
name = "Caller"
description = "Get 1 monster of your choice to your hand. Shuffle it afterwards."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://bk6myqvoklhqp"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_7f5cd"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_prilx"]
[resource]
script = ExtResource("2_prilx")
type = "red"
priority = 0
effects = Array[ExtResource("1_7f5cd")]([null])
name = "Cash Back"
description = "If your monster died during this turn, Refund all the energy being used by the monster sent to graveyard."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://ca0fengr2xjps"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_r7m0a"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_g1u6x"]
[resource]
script = ExtResource("2_g1u6x")
type = "green"
priority = 0
effects = Array[ExtResource("1_r7m0a")]([null])
name = "Catcher"
description = "For one turn, swap your Active Enemy card with your Active Monster card. If the card you previously used died during this turn, you can keep the enemy monster card."

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://c0grh1y65e0f3"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_pkc1x"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_iq88n"]
[ext_resource type="Texture2D" uid="uid://cd1mxacc3gfcy" path="res://assets/support/energy booster.png" id="2_lxctl"]
[resource]
script = ExtResource("2_iq88n")
scope = "turn"
type = "green"
effects = Array[ExtResource("1_pkc1x")]([null])
name = "Energy Booster"
description = "Add 1 additional Energy."
icon = ExtResource("2_lxctl")

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://dfocg5yfh22e8"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_gtyqr"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_3ixor"]
[ext_resource type="Texture2D" uid="uid://bwo6dfe1kpxhe" path="res://assets/support/insurance.png" id="2_f7jjv"]
[resource]
script = ExtResource("2_3ixor")
scope = "turn"
type = "red"
effects = Array[ExtResource("1_gtyqr")]([null])
name = "Insurance"
description = "If your monster supposed to be dead in this turn, keep it alive at 10 HP."
icon = ExtResource("2_f7jjv")

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://by4yg81uqti3u"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_5tnpm"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_6c2xo"]
[ext_resource type="Texture2D" uid="uid://b8hkgi1r8wpri" path="res://assets/support/Invisibility.png" id="2_6occh"]
[resource]
script = ExtResource("2_6c2xo")
scope = "turn"
type = "green"
effects = Array[ExtResource("1_5tnpm")]([null])
name = "Invisibility"
description = "Ignore any damage to your monster in this turn."
icon = ExtResource("2_6occh")

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://bcrlaam8uq6xt"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_b33y4"]
[ext_resource type="Texture2D" uid="uid://bni2wr2vrg0fe" path="res://assets/support/lifesteal.png" id="2_arrkb"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_khaf1"]
[resource]
script = ExtResource("2_khaf1")
scope = "turn"
type = "green"
effects = Array[ExtResource("1_b33y4")]([null])
name = "Lifesteal"
description = "During this turn your attack also heals your HP."
icon = ExtResource("2_arrkb")

View file

@ -1,13 +0,0 @@
[gd_resource type="Resource" script_class="SimpleSupportCard" load_steps=3 format=3 uid="uid://cl0jcer7o04uc"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_awvxv"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_tr5ug"]
[resource]
script = ExtResource("2_tr5ug")
scope = "turn"
magnitude = 0
type = "red"
effects = Array[ExtResource("1_awvxv")]([null])
name = "Negate"
description = "Cancel 1 of the Support Card played by your opponent. This card will always be played last."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://crn3qovkygo6l"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_gqbio"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_rr70q"]
[resource]
script = ExtResource("2_rr70q")
type = "green"
priority = 0
effects = Array[ExtResource("1_gqbio")]([null])
name = "Force Paper"
description = "Forcing enemy to pick Paper during this turn."

View file

@ -1,9 +1,9 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=6 format=3 uid="uid://4eod3m0vc5a8"]
[gd_resource type="Resource" script_class="SupportCard" load_steps=6 format=3 uid="uid://4eod3m0vc5a8"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_ujm0o"]
[ext_resource type="Resource" uid="uid://cvu0rtt5nggf" path="res://data/support_effects/heal.tres" id="2_k1cnl"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="3_at5nt"]
[ext_resource type="Texture2D" uid="uid://48hblv72emyr" path="res://assets/support/potion.png" id="3_hk8kx"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="3_6r4k4"]
[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="3_kyx3v"]
[sub_resource type="Resource" id="Resource_88lmk"]
script = ExtResource("1_ujm0o")
@ -11,10 +11,10 @@ magnitude = 30
effect = ExtResource("2_k1cnl")
[resource]
script = ExtResource("3_at5nt")
scope = "turn"
script = ExtResource("3_6r4k4")
type = "green"
priority = 0
effects = Array[ExtResource("1_ujm0o")]([SubResource("Resource_88lmk")])
name = "Potion"
description = "Heal 30 HP"
icon = ExtResource("3_hk8kx")
icon = ExtResource("3_kyx3v")

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://c1gsrru1wa6ao"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_mk2or"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_igbok"]
[ext_resource type="Texture2D" uid="uid://b3uq5b2x2oacn" path="res://assets/support/reflection.png" id="2_jrr8g"]
[resource]
script = ExtResource("2_igbok")
scope = "turn"
type = "red"
effects = Array[ExtResource("1_mk2or")]([null])
name = "Reflection"
description = "Enemy got the same amount of damage as our monster in this turn."
icon = ExtResource("2_jrr8g")

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://cljmcpwa44j6b"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_2w2ve"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_r3faa"]
[resource]
script = ExtResource("2_r3faa")
type = "green"
priority = 0
effects = Array[ExtResource("1_2w2ve")]([null])
name = "Retreat"
description = "Swap your monster in Active Field with the one in your hand. The energy cost for summoning decreased by 1."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://c3o6lxj0m6yod"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_y5oux"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_7m5wu"]
[resource]
script = ExtResource("2_7m5wu")
type = "red"
priority = 0
effects = Array[ExtResource("1_y5oux")]([null])
name = "Reviver"
description = "Revive 1 Monster of your choice from your graveyard, and move it into your hand."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://defdobjmiloth"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_hx76y"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_oinlp"]
[resource]
script = ExtResource("2_oinlp")
type = "green"
priority = 0
effects = Array[ExtResource("1_hx76y")]([null])
name = "Force Rock"
description = "Forcing enemy to pick Rock during this turn."

View file

@ -1,12 +0,0 @@
[gd_resource type="Resource" script_class="SupportCard" load_steps=3 format=3 uid="uid://d304v2sfewmp5"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_q82mb"]
[ext_resource type="Script" path="res://tcg/card/support_card.gd" id="2_yklgt"]
[resource]
script = ExtResource("2_yklgt")
type = "red"
priority = 0
effects = Array[ExtResource("1_q82mb")]([null])
name = "Force Scissor"
description = "Forcing enemy to pick Scissor during this turn."

View file

@ -1,20 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=6 format=3 uid="uid://2xeb6keaoabo"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_y6yvj"]
[ext_resource type="Resource" uid="uid://bs4i85slalkgd" path="res://data/support_effects/sword_mastery.tres" id="2_omhdb"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="3_37rh4"]
[ext_resource type="Texture2D" uid="uid://ha5p3vpqn5jv" path="res://assets/support/sword mastery.png" id="3_rrvpt"]
[sub_resource type="Resource" id="Resource_wwv02"]
script = ExtResource("1_y6yvj")
magnitude = 20
effect = ExtResource("2_omhdb")
[resource]
script = ExtResource("3_37rh4")
scope = "monster"
type = "green"
effects = Array[ExtResource("1_y6yvj")]([SubResource("Resource_wwv02")])
name = "Sword Mastery"
description = "Permanently add 20 damage for all Rock Paper Scissor to 1 Active Monster."
icon = ExtResource("3_rrvpt")

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="ImplementedSupportCard" load_steps=4 format=3 uid="uid://dsmrqyxt8mdp5"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect_instance.gd" id="1_1fvcb"]
[ext_resource type="Script" path="res://tcg/card/implemented_support_card.gd" id="2_d0adk"]
[ext_resource type="Texture2D" uid="uid://hiswkj2stt4l" path="res://assets/support/tanker.png" id="2_hqv06"]
[resource]
script = ExtResource("2_d0adk")
scope = "turn"
type = "red"
effects = Array[ExtResource("1_1fvcb")]([null])
name = "Tanker"
description = "Add your HP with your selected (Rock Paper Scissor) during this turn, and reduce to max HP if current HP higher than max HP."
icon = ExtResource("2_hqv06")

View file

@ -1,6 +0,0 @@
[gd_resource type="Resource" script_class="SupportCardEffect" load_steps=2 format=3 uid="uid://bs4i85slalkgd"]
[ext_resource type="Script" path="res://tcg/card/support_card_effect.gd" id="1_43nry"]
[resource]
script = ExtResource("1_43nry")

View file

@ -1,135 +1,62 @@
extends Control
class_name DemoGame
signal own_played_card(card: Card)
signal opponent_played_card(card: Card)
signal own_played_rts(move: String)
signal opponent_played_rts(move: String)
@export var player_1_deck: Array[Card]
@export var player_2_deck: Array[Card]
@onready var match_manager: MatchManager = $MatchManager
@onready var match_manager = $MatchManager
@onready var own_side = $Own
@onready var opponent_side = $Opponent
@onready var start_game_btn = $StartGameButton
@onready var win_lose_tie_label: Label = $"Win-Lose-Tie"
var id_to_card: Dictionary = {}
var player_action_queue: Dictionary
var player_1_action: Action:
get:
return player_action_queue.get(own_side.player_id)
return player_action_queue.get(MatchManager.PLAYER_1_ID)
set(value):
player_action_queue[own_side.player_id] = value
player_action_queue[MatchManager.PLAYER_1_ID] = value
var player_2_action: Action:
get:
return player_action_queue.get(opponent_side.player_id)
return player_action_queue.get(MatchManager.PLAYER_2_ID)
set(value):
player_action_queue[opponent_side.player_id] = value
var id
var signal_connected := false
player_action_queue[MatchManager.PLAYER_2_ID] = value
func _ready() -> void:
_update_phase_info(Match.Phase.PREGAME)
func init(player_id: int) -> void:
id = player_id
own_side.player_id = player_id
opponent_side.player_id = MatchManager.PLAYER_2_ID if player_id == MatchManager.PLAYER_1_ID else MatchManager.PLAYER_1_ID
id_to_card.clear()
var cards = player_1_deck.duplicate()
cards.append_array(player_2_deck)
for card in cards:
if card.id not in id_to_card:
id_to_card[card.id] = card
print(match_manager.phase)
match_manager.init({
MatchManager.PLAYER_1_ID: player_1_deck,
MatchManager.PLAYER_2_ID: player_2_deck
}, own_side.player_id, opponent_side.player_id)
own_side.attach(match_manager, true)
opponent_side.attach(match_manager, false)
if !signal_connected:
match_manager.state_transitioned.connect(_on_match_manager_state_transitioned)
signal_connected = true
})
own_side.attach(match_manager)
opponent_side.attach(match_manager)
match_manager.state_transitioned.connect(_on_match_manager_state_transitioned)
var transition_history: Array[PhaseTransition] = []
func _on_match_manager_state_transitioned(transition: PhaseTransition):
start_game_btn.visible = match_manager.phase == Match.Phase.PREGAME
transition_history.append(transition)
_update_phase_info(transition.to)
if transition.to == Match.Phase.END:
var game_ended_event: EventGameEnded = transition.events.filter(func (it): return it is EventGameEnded)[0]
win_lose_tie_label.text = "TIE" if game_ended_event.winner_player_id == -1 else "YOU WON!" if game_ended_event.winner_player_id == id else "YOU LOST!"
win_lose_tie_label.visible = true
print("Phase: ", Match.phase_to_str(transition.from), " -> ", Match.phase_to_str(transition.to))
func _on_start_game_button_button_up() -> void:
#match_manager.resolve({})
pass
func rpc_start_game() -> void:
match_manager.resolve({})
func _on_own_play_card(card: Card) -> void:
if card:
player_1_action = ActionPlayCard.new(card)
own_played_card.emit(card)
else:
player_1_action = ActionSkipCard.new()
own_played_card.emit(null)
print(id, " _on_own_play_card", player_1_action, player_2_action)
player_1_action = ActionPlayCard.new(card)
if player_2_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func rpc_opponent_play_card(id: String) -> void:
if !id.is_empty():
var card = id_to_card[id]
player_2_action = ActionPlayCard.new(card)
else:
player_2_action = ActionSkipCard.new()
print(self.id , " rpc_opponent_play_card", player_1_action, player_2_action)
func _on_opponent_play_card(card: Card) -> void:
player_2_action = ActionPlayCard.new(card)
if player_1_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func _on_own_rps_move(move: String) -> void:
player_1_action = ActionRPSMove.new(move)
own_played_rts.emit(move)
print(id, " _on_own_rps_move", player_1_action, player_2_action, move)
if player_2_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func rpc_opponent_rps_move(move: String) -> void:
func _on_opponent_rps_move(move: String) -> void:
player_2_action = ActionRPSMove.new(move)
print(id, " rpc_opponent_rps_move", player_1_action, player_2_action, move)
if player_1_action:
match_manager.resolve(player_action_queue)
player_action_queue.clear()
func _update_phase_info(phase: Match.Phase):
var phaseHeaders: Container = get_node("%PhaseInfo/PhaseHeader")
for child: Label in phaseHeaders.get_children():
child.modulate = Color.DIM_GRAY
var target = phaseHeaders.get_node(Match.phase_to_str(phase))
phaseHeaders.visible = target != null
if target:
target.modulate = Color.WHITE

View file

@ -1,28 +1,12 @@
[gd_scene load_steps=24 format=3 uid="uid://bgc0u117jqyr1"]
[gd_scene load_steps=8 format=3 uid="uid://bgc0u117jqyr1"]
[ext_resource type="Script" path="res://demo_game.gd" id="1_jn16u"]
[ext_resource type="Script" path="res://player_side.gd" id="2_w4tnt"]
[ext_resource type="Script" path="res://tcg/card/card.gd" id="2_xuft0"]
[ext_resource type="PackedScene" uid="uid://cikstg43mudkn" path="res://tcg/match/match_manager.tscn" id="3_3yhrl"]
[ext_resource type="Resource" uid="uid://cs7q8i7bvohmj" path="res://data/cards/monster/capytain.tres" id="3_we1tk"]
[ext_resource type="Resource" uid="uid://cs7q8i7bvohmj" path="res://data/cards/monster/baraga.tres" id="3_we1tk"]
[ext_resource type="Resource" uid="uid://4eod3m0vc5a8" path="res://data/cards/support/potion.tres" id="4_kkhfk"]
[ext_resource type="Resource" uid="uid://deo8mj887rfx1" path="res://data/cards/monster/axoluna.tres" id="5_3cm5x"]
[ext_resource type="Resource" uid="uid://bcrlaam8uq6xt" path="res://data/cards/support/lifesteal.tres" id="6_potm8"]
[ext_resource type="PackedScene" uid="uid://bhrelvt51cbp2" path="res://ui/card_template/monster_card.tscn" id="7_4ah45"]
[ext_resource type="Resource" uid="uid://dgxcvdo6x6kst" path="res://data/cards/support/all_out_attack.tres" id="7_nvv8k"]
[ext_resource type="PackedScene" uid="uid://b60vuykleugjn" path="res://ui/card_template/skip_card.tscn" id="7_skjyk"]
[ext_resource type="PackedScene" uid="uid://dg5amjm1gqi06" path="res://ui/card_template/support_card_green.tscn" id="8_dytl5"]
[ext_resource type="Resource" uid="uid://be01tdq1fxlct" path="res://data/cards/support/absorb.tres" id="8_ewr4v"]
[ext_resource type="PackedScene" uid="uid://cds50kwwhlgam" path="res://ui/card_template/support_card_red.tscn" id="9_cabcc"]
[ext_resource type="Resource" uid="uid://dfocg5yfh22e8" path="res://data/cards/support/insurance.tres" id="9_ga5hf"]
[ext_resource type="Resource" uid="uid://c0grh1y65e0f3" path="res://data/cards/support/energy_booster.tres" id="10_3rg8q"]
[ext_resource type="Resource" uid="uid://2xeb6keaoabo" path="res://data/cards/support/sword_mastery.tres" id="11_seakd"]
[ext_resource type="Resource" uid="uid://bmst884k0myvd" path="res://data/cards/monster/cattogato.tres" id="12_xqqfn"]
[ext_resource type="Texture2D" uid="uid://6trhu2r7h6g3" path="res://assets/card_base/illust bg 1.png" id="13_bdgfp"]
[ext_resource type="Texture2D" uid="uid://b0pclmv0j0r12" path="res://assets/card_base/kertas.png" id="18_gwpy8"]
[ext_resource type="Theme" uid="uid://is34t82g4jg" path="res://cards.tres" id="19_3iovu"]
[ext_resource type="Texture2D" uid="uid://ch04c20lkis6j" path="res://assets/card_base/gunting.png" id="19_clnw6"]
[ext_resource type="Texture2D" uid="uid://bywa8qlwvcksd" path="res://assets/card_base/batu.png" id="20_672ya"]
[ext_resource type="Resource" uid="uid://di76avwc0gn8e" path="res://data/cards/monster/taiman.tres" id="5_3cm5x"]
[node name="DemoGame" type="Control"]
layout_mode = 3
@ -32,256 +16,134 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_jn16u")
player_1_deck = Array[ExtResource("2_xuft0")]([ExtResource("3_we1tk"), ExtResource("4_kkhfk"), ExtResource("5_3cm5x"), ExtResource("6_potm8"), ExtResource("7_nvv8k"), ExtResource("8_ewr4v"), ExtResource("9_ga5hf"), ExtResource("10_3rg8q"), ExtResource("11_seakd")])
player_2_deck = Array[ExtResource("2_xuft0")]([ExtResource("12_xqqfn"), ExtResource("4_kkhfk"), ExtResource("6_potm8"), ExtResource("7_nvv8k"), ExtResource("8_ewr4v"), ExtResource("9_ga5hf"), ExtResource("10_3rg8q"), ExtResource("11_seakd"), ExtResource("5_3cm5x")])
player_1_deck = Array[ExtResource("2_xuft0")]([ExtResource("3_we1tk"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk")])
player_2_deck = Array[ExtResource("2_xuft0")]([ExtResource("5_3cm5x"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk")])
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 0
offset_right = 1804.0
offset_bottom = 1224.0
scale = Vector2(1.1, 1.1)
texture = ExtResource("13_bdgfp")
[node name="Own" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label", "rps_button_container")]
[node name="Own" type="VBoxContainer" parent="." node_paths=PackedStringArray("deck", "monster_name_label", "monster_health_label", "incoming_damage_label", "energy_label")]
layout_mode = 1
anchor_top = 0.5
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -131.0
grow_horizontal = 2
grow_vertical = 2
grow_vertical = 0
alignment = 2
script = ExtResource("2_w4tnt")
deck = NodePath("Hand")
energy_label = NodePath("EnergyLabel")
skip_card_prefab = ExtResource("7_skjyk")
support_red_card_prefab = ExtResource("9_cabcc")
support_green_card_prefab = ExtResource("8_dytl5")
monster_card_prefab = ExtResource("7_4ah45")
rps_button_container = NodePath("HBoxContainer")
rps_grayed_color = Color(0.439216, 0.439216, 0.439216, 1)
monster_name_label = NodePath("Monster/VBoxContainer/NameLabel")
monster_health_label = NodePath("Monster/VBoxContainer/HealthLabel")
incoming_damage_label = NodePath("Monster/VBoxContainer/IncomingDamageLabel")
energy_label = NodePath("HBoxContainer/EnergyLabel")
[node name="MonsterCard" parent="Own" instance=ExtResource("7_4ah45")]
custom_minimum_size = Vector2(220, 330)
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
anchor_bottom = 0.0
offset_left = -110.0
offset_top = 20.0
offset_right = 110.0
offset_bottom = 350.0
grow_vertical = 1
pivot_offset = Vector2(110, 0)
[node name="Monster" type="HBoxContainer" parent="Own"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
alignment = 1
[node name="Support1GreenCard" parent="Own" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -310.0
offset_top = 75.0
offset_right = -90.0
offset_bottom = 395.0
grow_horizontal = 2
pivot_offset = Vector2(110, 0)
[node name="VBoxContainer" type="VBoxContainer" parent="Own/Monster"]
layout_mode = 2
[node name="Support2GreenCard" parent="Own" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = 90.0
offset_top = 75.0
offset_right = 310.0
offset_bottom = 395.0
grow_horizontal = 2
pivot_offset = Vector2(110, 0)
[node name="NameLabel" type="Label" parent="Own/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Name:"
[node name="Support2RedCard" parent="Own" instance=ExtResource("9_cabcc")]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = 90.0
offset_top = 75.0
offset_right = 310.0
offset_bottom = 395.0
grow_horizontal = 2
pivot_offset = Vector2(110, 0)
[node name="HealthLabel" type="Label" parent="Own/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Health:"
[node name="EnergyLabel" type="Label" parent="Own"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -90.0
offset_right = 1152.0
offset_bottom = -67.0
grow_vertical = 0
[node name="IncomingDamageLabel" type="Label" parent="Own/Monster/VBoxContainer"]
custom_minimum_size = Vector2(128, 0)
layout_mode = 2
size_flags_vertical = 3
text = "Incoming Damage:"
vertical_alignment = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Own"]
layout_mode = 2
[node name="EnergyLabel" type="Label" parent="Own/HBoxContainer"]
layout_mode = 2
text = "Energy:"
[node name="Hand" type="HBoxContainer" parent="Own"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -446.0
offset_top = -370.0
offset_right = 446.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(0, 150)
layout_mode = 2
alignment = 1
[node name="SkipCard" parent="Own/Hand" instance=ExtResource("7_skjyk")]
[node name="Button" type="Button" parent="Own/Hand"]
layout_mode = 2
text = "CARD_1"
[node name="MonsterCard" parent="Own/Hand" instance=ExtResource("7_4ah45")]
[node name="Button2" type="Button" parent="Own/Hand"]
layout_mode = 2
text = "CARD_2"
[node name="CardBase" parent="Own/Hand" instance=ExtResource("8_dytl5")]
[node name="Button3" type="Button" parent="Own/Hand"]
layout_mode = 2
text = "CARD_3"
[node name="CardBase2" parent="Own/Hand" instance=ExtResource("9_cabcc")]
layout_mode = 2
[node name="IncomingDamageLabel" type="Label" parent="Own"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = 84.0
offset_top = 24.0
offset_right = 251.0
offset_bottom = 47.0
grow_horizontal = 2
text = "HP +0"
[node name="HBoxContainer" type="HBoxContainer" parent="Own"]
visible = false
layout_mode = 0
offset_left = 665.0
offset_top = 299.0
offset_right = 1326.0
offset_bottom = 548.0
[node name="KertasButton" type="TextureButton" parent="Own/HBoxContainer"]
layout_mode = 2
texture_normal = ExtResource("18_gwpy8")
[node name="GuntingButton" type="TextureButton" parent="Own/HBoxContainer"]
layout_mode = 2
texture_normal = ExtResource("19_clnw6")
[node name="BatuButton" type="TextureButton" parent="Own/HBoxContainer"]
layout_mode = 2
texture_normal = ExtResource("20_672ya")
[node name="Opponent" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label")]
layout_mode = 1
anchor_right = 1.0
anchor_bottom = 0.5
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2_w4tnt")
player_id = 1
deck = NodePath("Hand")
energy_label = NodePath("EnergyLabel")
[node name="MonsterCard" parent="Opponent" instance=ExtResource("7_4ah45")]
custom_minimum_size = Vector2(220, 330)
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
offset_left = -110.0
offset_top = -350.0
offset_right = 110.0
offset_bottom = -20.0
grow_vertical = 0
pivot_offset = Vector2(110, 330)
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="Support1GreenCard" parent="Opponent" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -310.0
offset_top = -465.0
offset_right = -90.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(110, 320)
[node name="Support2GreenCard" parent="Opponent" instance=ExtResource("8_dytl5")]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 90.0
offset_top = -465.0
offset_right = 310.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(110, 320)
[node name="Support2RedCard" parent="Opponent" instance=ExtResource("9_cabcc")]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 90.0
offset_top = -465.0
offset_right = 310.0
offset_bottom = -145.0
grow_horizontal = 2
grow_vertical = 0
pivot_offset = Vector2(110, 320)
[node name="Hand" type="HBoxContainer" parent="Opponent"]
[node name="Opponent" type="VBoxContainer" parent="." node_paths=PackedStringArray("deck", "monster_name_label", "monster_health_label", "incoming_damage_label", "energy_label")]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_bottom = 31.0
offset_bottom = 190.0
grow_horizontal = 2
script = ExtResource("2_w4tnt")
player_id = 1
deck = NodePath("Hand")
monster_name_label = NodePath("Monster/VBoxContainer/NameLabel")
monster_health_label = NodePath("Monster/VBoxContainer/HealthLabel")
incoming_damage_label = NodePath("Monster/VBoxContainer/IncomingDamageLabel")
energy_label = NodePath("EnergyLabel")
[node name="Hand" type="HBoxContainer" parent="Opponent"]
layout_mode = 2
alignment = 1
[node name="Button" type="Button" parent="Opponent/Hand"]
layout_mode = 2
text = "CARD_1"
[node name="Button2" type="Button" parent="Opponent/Hand"]
layout_mode = 2
text = "CARD_2"
[node name="Button3" type="Button" parent="Opponent/Hand"]
layout_mode = 2
text = "CARD_3"
[node name="EnergyLabel" type="Label" parent="Opponent"]
layout_mode = 2
offset_top = 35.0
offset_right = 1152.0
offset_bottom = 58.0
text = "Energy:"
[node name="IncomingDamageLabel" type="Label" parent="Opponent"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 84.0
offset_top = -52.0
offset_right = 251.0
offset_bottom = -29.0
grow_horizontal = 2
grow_vertical = 0
text = "HP +0"
[node name="Monster" type="HBoxContainer" parent="Opponent"]
custom_minimum_size = Vector2(0, 128)
layout_mode = 2
size_flags_horizontal = 4
alignment = 1
[node name="VBoxContainer" type="VBoxContainer" parent="Opponent/Monster"]
layout_mode = 2
[node name="NameLabel" type="Label" parent="Opponent/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Name: "
[node name="HealthLabel" type="Label" parent="Opponent/Monster/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
text = "Health:"
[node name="IncomingDamageLabel" type="Label" parent="Opponent/Monster/VBoxContainer"]
custom_minimum_size = Vector2(128, 0)
layout_mode = 2
size_flags_vertical = 3
text = "Incoming Damage:"
vertical_alignment = 2
[node name="StartGameButton" type="Button" parent="."]
layout_mode = 1
@ -300,75 +162,8 @@ text = "Start Game"
[node name="MatchManager" parent="." instance=ExtResource("3_3yhrl")]
[node name="PhaseInfo" type="VBoxContainer" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 347.0
offset_top = -102.0
offset_right = 864.0
offset_bottom = 106.0
grow_horizontal = 2
grow_vertical = 2
[node name="PhaseHeader" type="VBoxContainer" parent="PhaseInfo"]
layout_mode = 2
theme_override_constants/separation = 24
alignment = 2
[node name="Summon" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Summon"
[node name="Support 1" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Support (1)"
[node name="RPS" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Rock, Paper, Scissors"
[node name="Support 2" type="Label" parent="PhaseInfo/PhaseHeader"]
layout_mode = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 24
text = "Support (2)"
[node name="Win-Lose-Tie" type="Label" parent="."]
visible = false
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -365.0
offset_top = -215.0
offset_right = 365.0
offset_bottom = 215.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("19_3iovu")
theme_override_font_sizes/font_size = 52
text = "YOU WON!"
horizontal_alignment = 1
vertical_alignment = 1
[connection signal="play_card" from="Own" to="." method="_on_own_play_card"]
[connection signal="rps_move" from="Own" to="." method="_on_own_rps_move"]
[connection signal="button_down" from="Own/HBoxContainer/KertasButton" to="Own" method="_on_kertas_button_button_down"]
[connection signal="button_down" from="Own/HBoxContainer/GuntingButton" to="Own" method="_on_gunting_button_button_down"]
[connection signal="button_down" from="Own/HBoxContainer/BatuButton" to="Own" method="_on_batu_button_button_down"]
[connection signal="play_card" from="Opponent" to="." method="_on_opponent_play_card"]
[connection signal="rps_move" from="Opponent" to="." method="_on_opponent_rps_move"]
[connection signal="button_up" from="StartGameButton" to="." method="_on_start_game_button_button_up"]

View file

@ -130,211 +130,3 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.2]
name="Android"
platform="Android"
runnable=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.2.options]
custom_template/debug=""
custom_template/release=""
gradle_build/use_gradle_build=false
gradle_build/gradle_build_directory=""
gradle_build/android_source_template=""
gradle_build/compress_native_libraries=false
gradle_build/export_format=0
gradle_build/min_sdk=""
gradle_build/target_sdk=""
architectures/armeabi-v7a=false
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
version/code=1
version/name=""
package/unique_name="com.example.$genname"
package/name=""
package/signed=true
package/app_category=2
package/retain_data_on_uninstall=false
package/exclude_from_recents=false
package/show_in_android_tv=false
package/show_in_app_library=true
package/show_as_launcher_app=false
launcher_icons/main_192x192=""
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
graphics/opengl_debug=false
xr_features/xr_mode=0
screen/immersive_mode=true
screen/support_small=true
screen/support_normal=true
screen/support_large=true
screen/support_xlarge=true
user_data_backup/allow=false
command_line/extra_args=""
apk_expansion/enable=false
apk_expansion/SALT=""
apk_expansion/public_key=""
permissions/custom_permissions=PackedStringArray()
permissions/access_checkin_properties=false
permissions/access_coarse_location=false
permissions/access_fine_location=false
permissions/access_location_extra_commands=false
permissions/access_mock_location=false
permissions/access_network_state=false
permissions/access_surface_flinger=false
permissions/access_wifi_state=false
permissions/account_manager=false
permissions/add_voicemail=false
permissions/authenticate_accounts=false
permissions/battery_stats=false
permissions/bind_accessibility_service=false
permissions/bind_appwidget=false
permissions/bind_device_admin=false
permissions/bind_input_method=false
permissions/bind_nfc_service=false
permissions/bind_notification_listener_service=false
permissions/bind_print_service=false
permissions/bind_remoteviews=false
permissions/bind_text_service=false
permissions/bind_vpn_service=false
permissions/bind_wallpaper=false
permissions/bluetooth=false
permissions/bluetooth_admin=false
permissions/bluetooth_privileged=false
permissions/brick=false
permissions/broadcast_package_removed=false
permissions/broadcast_sms=false
permissions/broadcast_sticky=false
permissions/broadcast_wap_push=false
permissions/call_phone=false
permissions/call_privileged=false
permissions/camera=false
permissions/capture_audio_output=false
permissions/capture_secure_video_output=false
permissions/capture_video_output=false
permissions/change_component_enabled_state=false
permissions/change_configuration=false
permissions/change_network_state=false
permissions/change_wifi_multicast_state=false
permissions/change_wifi_state=false
permissions/clear_app_cache=false
permissions/clear_app_user_data=false
permissions/control_location_updates=false
permissions/delete_cache_files=false
permissions/delete_packages=false
permissions/device_power=false
permissions/diagnostic=false
permissions/disable_keyguard=false
permissions/dump=false
permissions/expand_status_bar=false
permissions/factory_test=false
permissions/flashlight=false
permissions/force_back=false
permissions/get_accounts=false
permissions/get_package_size=false
permissions/get_tasks=false
permissions/get_top_activity_info=false
permissions/global_search=false
permissions/hardware_test=false
permissions/inject_events=false
permissions/install_location_provider=false
permissions/install_packages=false
permissions/install_shortcut=false
permissions/internal_system_window=false
permissions/internet=false
permissions/kill_background_processes=false
permissions/location_hardware=false
permissions/manage_accounts=false
permissions/manage_app_tokens=false
permissions/manage_documents=false
permissions/manage_external_storage=false
permissions/master_clear=false
permissions/media_content_control=false
permissions/modify_audio_settings=false
permissions/modify_phone_state=false
permissions/mount_format_filesystems=false
permissions/mount_unmount_filesystems=false
permissions/nfc=false
permissions/persistent_activity=false
permissions/post_notifications=false
permissions/process_outgoing_calls=false
permissions/read_calendar=false
permissions/read_call_log=false
permissions/read_contacts=false
permissions/read_external_storage=false
permissions/read_frame_buffer=false
permissions/read_history_bookmarks=false
permissions/read_input_state=false
permissions/read_logs=false
permissions/read_phone_state=false
permissions/read_profile=false
permissions/read_sms=false
permissions/read_social_stream=false
permissions/read_sync_settings=false
permissions/read_sync_stats=false
permissions/read_user_dictionary=false
permissions/reboot=false
permissions/receive_boot_completed=false
permissions/receive_mms=false
permissions/receive_sms=false
permissions/receive_wap_push=false
permissions/record_audio=false
permissions/reorder_tasks=false
permissions/restart_packages=false
permissions/send_respond_via_message=false
permissions/send_sms=false
permissions/set_activity_watcher=false
permissions/set_alarm=false
permissions/set_always_finish=false
permissions/set_animation_scale=false
permissions/set_debug_app=false
permissions/set_orientation=false
permissions/set_pointer_speed=false
permissions/set_preferred_applications=false
permissions/set_process_limit=false
permissions/set_time=false
permissions/set_time_zone=false
permissions/set_wallpaper=false
permissions/set_wallpaper_hints=false
permissions/signal_persistent_processes=false
permissions/status_bar=false
permissions/subscribed_feeds_read=false
permissions/subscribed_feeds_write=false
permissions/system_alert_window=false
permissions/transmit_ir=false
permissions/uninstall_shortcut=false
permissions/update_device_stats=false
permissions/use_credentials=false
permissions/use_sip=false
permissions/vibrate=false
permissions/wake_lock=false
permissions/write_apn_settings=false
permissions/write_calendar=false
permissions/write_call_log=false
permissions/write_contacts=false
permissions/write_external_storage=false
permissions/write_gservices=false
permissions/write_history_bookmarks=false
permissions/write_profile=false
permissions/write_secure_settings=false
permissions/write_settings=false
permissions/write_sms=false
permissions/write_social_stream=false
permissions/write_sync_settings=false
permissions/write_user_dictionary=false

BIN
icon.svg (Stored with Git LFS)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 B

After

Width:  |  Height:  |  Size: 994 B

Before After
Before After

226
main.gd
View file

@ -1,204 +1,76 @@
extends Node
class_name MainNode
const PORT = 25565
const PORT_RANGE := 10
const MAX_CONNECTIONS = 20
var counter = 0
@onready var before_connect_container = get_node("BeforeConnect") as Container
@onready var host_text_edit = get_node("%HostTextEdit") as TextEdit
@onready var connect_button = get_node("%ConnectButton") as Button
@onready var host_button = get_node("%HostButton") as Button
@onready var server_discovery = get_node("%ServerDiscovery") as ServerDiscovery
@onready var after_connect_container = get_node("%AfterConnect") as Node
@onready var disconnect_button = get_node("%DisconnectButton") as Button
@onready var demo_game = get_node("AfterConnect/DemoGame") as DemoGame
@onready var start_game_button = (get_node("AfterConnect/DemoGame") as DemoGame).start_game_btn
var active_port: int
var server_buttons: Dictionary = Dictionary()
var base_seed: int
func _clean_room():
# this is if someone left the room and we will just clean the game room again
# should only called on host
# need to clean for server
pass
func _on_start_game_clicked():
if !multiplayer.multiplayer_peer:
return
if !multiplayer.is_server():
return
if (multiplayer.get_peers().size() == 0):
return
# do start game here, should only run on host
_start_game.rpc()
pass
@onready var after_connect_container = get_node("%AfterConnect") as Container
@onready var counter_label = get_node("%CounterLabel") as Label
@onready var decrement_button = get_node("%DecrementButton") as Button
@onready var increment_button = get_node("%IncrementButton") as Button
func _ready() -> void:
host_button.button_up.connect(_on_host_pressed)
host_button.text = "Host (%s)" % server_discovery.id
start_game_button.button_up.connect(_on_start_game_clicked)
print("Attach client")
multiplayer.peer_connected.connect(_on_player_connected)
multiplayer.peer_disconnected.connect(_on_player_disconnected)
multiplayer.connected_to_server.connect(_on_connected_ok)
#multiplayer.connection_failed.connect(_on_connected_fail)
multiplayer.server_disconnected.connect(_on_server_disconnected)
disconnect_button.button_up.connect(_on_disconnect_clicked)
connect_button.get_parent().remove_child(connect_button)
server_discovery.server_added.connect(_on_server_added)
server_discovery.server_removed.connect(_on_server_removed)
demo_game.own_played_card.connect(func (card): _on_own_played_card.rpc(card.id if card else ""))
demo_game.own_played_rts.connect(func (move): _on_own_played_rts.rpc(move))
@rpc("any_peer", "call_remote", "reliable")
func _on_own_played_card(card_id: String):
demo_game.rpc_opponent_play_card(card_id)
@rpc("any_peer", "call_remote", "reliable")
func _on_own_played_rts(move: String):
demo_game.rpc_opponent_rps_move(move)
@rpc("authority", "call_local", "reliable")
func _sync_seed(seed: int):
seed(seed)
@rpc("authority", "call_local", "reliable")
func _start_game():
if multiplayer.is_server():
demo_game.init(MatchManager.PLAYER_1_ID)
else:
demo_game.init(MatchManager.PLAYER_2_ID)
demo_game.rpc_start_game()
func _on_disconnect_clicked():
if (multiplayer.is_server()):
server_discovery.disable_server()
for peer_id in multiplayer.get_peers():
multiplayer.disconnect_peer(peer_id)
multiplayer.multiplayer_peer = null
$BeforeConnect.visible = true
$AfterConnect.visible = false
func _on_server_added(id, ip, port):
print("%s | Server added %s %s" % [server_discovery.id, id, ip])
var button = connect_button.duplicate()
before_connect_container.add_child(button)
var key = "%s|%s" % [id,ip]
server_buttons[key] = button
button.text = "%s\nConnect\n%s:%d" % [id, ip, port]
for conn in button.button_down.get_connections():
button.button_down.disconnect(conn)
var _on_button_downed = func():
_do_connect(ip, port)
button.button_down.connect(_on_button_downed)
func _on_server_removed(id, ip):
print("%s | Server removed %s %s" % [server_discovery.id, id, ip])
var key = "%s|%s" % [id,ip]
var button = server_buttons[key]
button.queue_free()
server_buttons.erase(key)
func _do_connect(ip: String, port: int):
var peer = ENetMultiplayerPeer.new()
print("%s Connecting to %s:%d" % [server_discovery.id, ip, port])
var err = peer.create_client(ip, port)
print(err)
multiplayer.multiplayer_peer = peer
func _on_host_pressed():
print("%s | Starting dedicated server" % server_discovery.id)
var peer = ENetMultiplayerPeer.new()
for offset in range(PORT_RANGE):
if not is_port_available(PORT + offset):
continue
active_port = PORT + offset
var err = peer.create_server(active_port, MAX_CONNECTIONS)
if OS.has_feature("dedicated_server"):
print("Starting dedicated server")
var peer = ENetMultiplayerPeer.new()
var err = peer.create_server(PORT, MAX_CONNECTIONS)
if err:
print(err)
break
multiplayer.multiplayer_peer = peer
_on_connected_ok()
start_game_button.disabled = true
start_game_button.text = "Start Game (Not enough player)"
base_seed = randi()
_sync_seed.rpc(base_seed)
server_discovery.enable_server(active_port)
func is_port_available(port: int) -> bool:
var udp_peer = PacketPeerUDP.new()
var error = udp_peer.bind(port)
if error == OK:
udp_peer.close()
return true
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(_on_player_connected)
else:
return false
print("Game starting")
#multiplayer.peer_disconnected.connect(_on_player_disconnected)
multiplayer.connected_to_server.connect(_on_connected_ok)
#multiplayer.connection_failed.connect(_on_connected_fail)
#multiplayer.server_disconnected.connect(_on_server_disconnected)
increment_button.button_up.connect(func(): _increment.rpc())
decrement_button.button_up.connect(func(): _decrement.rpc())
connect_button.button_up.connect(_on_connect_pressed)
@rpc("any_peer", "call_local")
func _increment():
counter += 1
counter_label.text = str(counter)
@rpc("any_peer", "call_local")
func _decrement():
counter -= 1
counter_label.text = str(counter)
@rpc("authority", "call_remote")
func _set_counter(value: int):
counter = value
counter_label.text = str(counter)
func _on_connect_pressed():
var peer = ENetMultiplayerPeer.new()
var parsed: PackedStringArray = host_text_edit.text.split(":")
print("Connecting to ", parsed[0])
peer.create_client(parsed[0] if not parsed[0].is_empty() else "localhost", int(parsed[1]) if parsed.size() > 1 else PORT)
multiplayer.multiplayer_peer = peer
func _on_player_connected(id: int):
if multiplayer.get_unique_id() == 1:
_set_counter.rpc_id(id, counter)
_sync_seed.rpc(base_seed)
if (multiplayer.get_peers().size() > 0):
start_game_button.disabled = false
start_game_button.text = "Start Game"
server_discovery.disable_server()
func _on_player_disconnected(id):
print("%s | _on_player_disconnected %s" % [server_discovery.id, id])
if multiplayer.get_unique_id() == id:
$BeforeConnect.visible = true
$AfterConnect.visible = false
if (id != 1 and multiplayer.get_unique_id() == 1):
_clean_room()
start_game_button.disabled = true
start_game_button.text = "Start Game (Not enough player)"
server_discovery.enable_server(active_port)
func _on_player_disconnected():
pass
func _on_connected_ok():
$AfterConnect.visible = true
$BeforeConnect.visible = false
if (multiplayer.is_server()):
disconnect_button.text = "Disconnect (Host)"
start_game_button.visible = true
else:
disconnect_button.text = "Disconnect"
start_game_button.visible = false
counter_label.text = str(counter)
func _on_connected_fail():
pass
func _on_server_disconnected():
print("%s | _on_server_disconnected" % [server_discovery.id])
$AfterConnect.visible = false
$BeforeConnect.visible = true
pass

View file

@ -1,8 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://c7gn46af6whf8"]
[gd_scene load_steps=2 format=3 uid="uid://c7gn46af6whf8"]
[ext_resource type="Script" path="res://main.gd" id="1_e0ud3"]
[ext_resource type="Script" path="res://server_discovery.gd" id="2_hed18"]
[ext_resource type="PackedScene" uid="uid://bgc0u117jqyr1" path="res://demo_game.tscn" id="3_2ln6b"]
[node name="Main" type="Control"]
layout_mode = 3
@ -29,11 +27,11 @@ grow_horizontal = 2
grow_vertical = 2
alignment = 1
[node name="HostButton" type="Button" parent="BeforeConnect"]
[node name="HostTextEdit" type="TextEdit" parent="BeforeConnect"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 64)
layout_mode = 2
text = "Host"
size_flags_vertical = 3
placeholder_text = "192.168.*.*"
[node name="ConnectButton" type="Button" parent="BeforeConnect"]
unique_name_in_owner = true
@ -41,34 +39,42 @@ custom_minimum_size = Vector2(0, 64)
layout_mode = 2
text = "Connect"
[node name="DiscoveryTimer" type="Timer" parent="BeforeConnect"]
unique_name_in_owner = true
[node name="ServerDiscovery" type="Node" parent="BeforeConnect"]
unique_name_in_owner = true
script = ExtResource("2_hed18")
[node name="AfterConnect" type="Control" parent="."]
[node name="AfterConnect" type="VBoxContainer" parent="."]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -187.5
offset_top = -88.5
offset_right = 187.5
offset_bottom = 88.5
grow_horizontal = 2
grow_vertical = 2
[node name="DemoGame" parent="AfterConnect" instance=ExtResource("3_2ln6b")]
layout_mode = 1
[node name="DisconnectButton" type="Button" parent="AfterConnect"]
[node name="CounterLabel" type="Label" parent="AfterConnect"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -186.0
offset_bottom = 31.0
grow_horizontal = 0
size_flags_horizontal = 8
text = "Disconnect"
layout_mode = 2
size_flags_vertical = 3
theme_override_font_sizes/font_size = 64
text = "1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Actions" type="HBoxContainer" parent="AfterConnect"]
layout_mode = 2
[node name="DecrementButton" type="Button" parent="AfterConnect/Actions"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "-"
[node name="IncrementButton" type="Button" parent="AfterConnect/Actions"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "+"

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