diff --git a/assets/card_base/Illustrated BG.png b/assets/card_base/Illustrated BG.png new file mode 100644 index 0000000..13f506e --- /dev/null +++ b/assets/card_base/Illustrated BG.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5db3ddf6b8519218ece058d4f169efc363d2aba02400b89b7eef1277c8e44ab +size 1973201 diff --git a/assets/card_base/Illustrated BG.png.import b/assets/card_base/Illustrated BG.png.import new file mode 100644 index 0000000..a704b8d --- /dev/null +++ b/assets/card_base/Illustrated BG.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/Monster-InnerFill.png b/assets/card_base/Monster-InnerFill.png new file mode 100644 index 0000000..e625751 --- /dev/null +++ b/assets/card_base/Monster-InnerFill.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c98a835ac49a78d6cdc44f867372f5405c6e935fa651c55455ad54603cf7f6f6 +size 121678 diff --git a/assets/card_base/Monster-InnerFill.png.import b/assets/card_base/Monster-InnerFill.png.import new file mode 100644 index 0000000..f7d395a --- /dev/null +++ b/assets/card_base/Monster-InnerFill.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/Pip.png b/assets/card_base/Pip.png new file mode 100644 index 0000000..e16ae38 --- /dev/null +++ b/assets/card_base/Pip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8571a2dcc30f164a811adfe3ffd51ca631fe17bfa5bbae4b3bea4aefe0b7c038 +size 1179 diff --git a/assets/card_base/Pip.png.import b/assets/card_base/Pip.png.import new file mode 100644 index 0000000..1e6c48e --- /dev/null +++ b/assets/card_base/Pip.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/RPS Panel.png b/assets/card_base/RPS Panel.png new file mode 100644 index 0000000..ce9a35a --- /dev/null +++ b/assets/card_base/RPS Panel.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2d6582bca3acbce0bc3e7179ee8864c9bf2bb7ed8afe1cdbe64b8fc3d0e596c +size 11713 diff --git a/assets/card_base/RPS Panel.png.import b/assets/card_base/RPS Panel.png.import new file mode 100644 index 0000000..f1a9ba3 --- /dev/null +++ b/assets/card_base/RPS Panel.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/Screenshot 2025-01-25 211435.png b/assets/card_base/Screenshot 2025-01-25 211435.png new file mode 100644 index 0000000..b3ed7e8 --- /dev/null +++ b/assets/card_base/Screenshot 2025-01-25 211435.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:694774dbbeaa32955325ca8159a81d21a6df10b9768e19dff254619f86a9e0af +size 242836 diff --git a/assets/card_base/Screenshot 2025-01-25 211435.png.import b/assets/card_base/Screenshot 2025-01-25 211435.png.import new file mode 100644 index 0000000..4347032 --- /dev/null +++ b/assets/card_base/Screenshot 2025-01-25 211435.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/Star.png b/assets/card_base/Star.png new file mode 100644 index 0000000..f1810d8 --- /dev/null +++ b/assets/card_base/Star.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69c3d97e1726b30f476327786f41c60aa448445f49098e3092f267ec75fbbacf +size 1246 diff --git a/assets/card_base/Star.png.import b/assets/card_base/Star.png.import new file mode 100644 index 0000000..eeabaf5 --- /dev/null +++ b/assets/card_base/Star.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/batu.png b/assets/card_base/batu.png new file mode 100644 index 0000000..8d1dc40 --- /dev/null +++ b/assets/card_base/batu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3073496f2b5cb651d0d6d03351a6f8392a23924d01472ab5d175ef150667e17e +size 25869 diff --git a/assets/card_base/batu.png.import b/assets/card_base/batu.png.import new file mode 100644 index 0000000..bdef9d8 --- /dev/null +++ b/assets/card_base/batu.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/gunting.png b/assets/card_base/gunting.png new file mode 100644 index 0000000..c069201 --- /dev/null +++ b/assets/card_base/gunting.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d14202c9b5043bdf561e8b9e6e899b0d964eed347f5d7fdb71cb5f6286a1561 +size 24283 diff --git a/assets/card_base/gunting.png.import b/assets/card_base/gunting.png.import new file mode 100644 index 0000000..24d6aac --- /dev/null +++ b/assets/card_base/gunting.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/illust bg 1.png b/assets/card_base/illust bg 1.png new file mode 100644 index 0000000..712628d --- /dev/null +++ b/assets/card_base/illust bg 1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4f66245934d9cb584395b647eab454b3e74351c3086b720bfaf3837c95d1dd2 +size 1744521 diff --git a/assets/card_base/illust bg 1.png.import b/assets/card_base/illust bg 1.png.import new file mode 100644 index 0000000..22253c2 --- /dev/null +++ b/assets/card_base/illust bg 1.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/card_base/kertas.png b/assets/card_base/kertas.png new file mode 100644 index 0000000..c49b7e1 --- /dev/null +++ b/assets/card_base/kertas.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52a0024d95f80cda1eea5a8dcdf7cd9f2204f73409ce8ae4999f75dfd402f3a3 +size 20378 diff --git a/assets/card_base/kertas.png.import b/assets/card_base/kertas.png.import new file mode 100644 index 0000000..c48a956 --- /dev/null +++ b/assets/card_base/kertas.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/Goldfish 2.png b/assets/monster/Goldfish 2.png new file mode 100644 index 0000000..ec6bc6e --- /dev/null +++ b/assets/monster/Goldfish 2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53c37fd23a318f64cdc2951918f4f4b06fa3a4d05ddb2b15c9fc722e4f217519 +size 108879 diff --git a/assets/monster/Goldfish 2.png.import b/assets/monster/Goldfish 2.png.import new file mode 100644 index 0000000..e14f3bd --- /dev/null +++ b/assets/monster/Goldfish 2.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/axolotl 3.png b/assets/monster/axolotl 3.png new file mode 100644 index 0000000..940328c --- /dev/null +++ b/assets/monster/axolotl 3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe4eaa932ae0e0f7363269bd39412aaaa3796dfcbcf2e5054b9d6f9d2aa4b8b8 +size 116315 diff --git a/assets/monster/axolotl 3.png.import b/assets/monster/axolotl 3.png.import new file mode 100644 index 0000000..8658cea --- /dev/null +++ b/assets/monster/axolotl 3.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/capybara 1.png b/assets/monster/capybara 1.png new file mode 100644 index 0000000..8eeddf2 --- /dev/null +++ b/assets/monster/capybara 1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae0ced57dd24cc221bd9f4b161aef907bf17962294167e6817e60017d484f76e +size 130901 diff --git a/assets/monster/capybara 1.png.import b/assets/monster/capybara 1.png.import new file mode 100644 index 0000000..74346a4 --- /dev/null +++ b/assets/monster/capybara 1.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/cat 3.png b/assets/monster/cat 3.png new file mode 100644 index 0000000..dcf2e11 --- /dev/null +++ b/assets/monster/cat 3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ad0cffd46c57d81ee56f43a2adf5d9a6e154a6dc9b76ed7a876ebd5bf19ef3d +size 123755 diff --git a/assets/monster/cat 3.png.import b/assets/monster/cat 3.png.import new file mode 100644 index 0000000..9b1df2e --- /dev/null +++ b/assets/monster/cat 3.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/duck 1.png b/assets/monster/duck 1.png new file mode 100644 index 0000000..e4710d0 --- /dev/null +++ b/assets/monster/duck 1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4db0c8f285a1523ea1d3fa2e3e18c834d70b215930f7139fee3efa25ac4aeedd +size 100811 diff --git a/assets/monster/duck 1.png.import b/assets/monster/duck 1.png.import new file mode 100644 index 0000000..86cfcf2 --- /dev/null +++ b/assets/monster/duck 1.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/froggo 1.png b/assets/monster/froggo 1.png new file mode 100644 index 0000000..958fea7 --- /dev/null +++ b/assets/monster/froggo 1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f7f76dda3d26c8b4ac1b88f6fa7b0d22da51f873ced793d7c6b666138445844 +size 102451 diff --git a/assets/monster/froggo 1.png.import b/assets/monster/froggo 1.png.import new file mode 100644 index 0000000..8f40732 --- /dev/null +++ b/assets/monster/froggo 1.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/jellyfish 2.png b/assets/monster/jellyfish 2.png new file mode 100644 index 0000000..04ae99f --- /dev/null +++ b/assets/monster/jellyfish 2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfd0f4cab6a3ed737816635416c9bb822e2b53028e35ea5cd79ba7e226a216ce +size 81602 diff --git a/assets/monster/jellyfish 2.png.import b/assets/monster/jellyfish 2.png.import new file mode 100644 index 0000000..6cd471a --- /dev/null +++ b/assets/monster/jellyfish 2.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/penguing 2.png b/assets/monster/penguing 2.png new file mode 100644 index 0000000..2598f19 --- /dev/null +++ b/assets/monster/penguing 2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a328047682a27c1b548405a2adf82738093c9a842e0c76defd7970cd178a5ac +size 101016 diff --git a/assets/monster/penguing 2.png.import b/assets/monster/penguing 2.png.import new file mode 100644 index 0000000..8f8858f --- /dev/null +++ b/assets/monster/penguing 2.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/rabbit 1.png b/assets/monster/rabbit 1.png new file mode 100644 index 0000000..023327d --- /dev/null +++ b/assets/monster/rabbit 1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:415cbcdf4136ad6a07b63f5aa055f84443f8909876858667708e0229b4795b68 +size 93375 diff --git a/assets/monster/rabbit 1.png.import b/assets/monster/rabbit 1.png.import new file mode 100644 index 0000000..ac94ff9 --- /dev/null +++ b/assets/monster/rabbit 1.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/monster/whale 2.png b/assets/monster/whale 2.png new file mode 100644 index 0000000..cbf8df0 --- /dev/null +++ b/assets/monster/whale 2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a704a38238c3991e1f0f3e250a988430393aa4b506ff7c72122a516c6dc0b139 +size 67821 diff --git a/assets/monster/whale 2.png.import b/assets/monster/whale 2.png.import new file mode 100644 index 0000000..29f0c19 --- /dev/null +++ b/assets/monster/whale 2.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/Invisibility.png b/assets/support/Invisibility.png new file mode 100644 index 0000000..1c77364 --- /dev/null +++ b/assets/support/Invisibility.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f65e230ede853aeba1650e8d569220585f3aa3a9d27f006e5a82ae300877b92b +size 135764 diff --git a/assets/support/Invisibility.png.import b/assets/support/Invisibility.png.import new file mode 100644 index 0000000..39e7e7a --- /dev/null +++ b/assets/support/Invisibility.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/absorb.png b/assets/support/absorb.png new file mode 100644 index 0000000..fc4ee91 --- /dev/null +++ b/assets/support/absorb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22ec3e0529bc2fef18223f893b2960a87b9b9ce827871a9d1440c9ac2d30d462 +size 238847 diff --git a/assets/support/absorb.png.import b/assets/support/absorb.png.import new file mode 100644 index 0000000..9a60646 --- /dev/null +++ b/assets/support/absorb.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/all out attack.png b/assets/support/all out attack.png new file mode 100644 index 0000000..f6eeb9e --- /dev/null +++ b/assets/support/all out attack.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06c2538f1c5f8a0e101f4b00a729279baa211ebfdc99707880135a02360f776f +size 177931 diff --git a/assets/support/all out attack.png.import b/assets/support/all out attack.png.import new file mode 100644 index 0000000..3e0cb0c --- /dev/null +++ b/assets/support/all out attack.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/energy booster.png b/assets/support/energy booster.png new file mode 100644 index 0000000..9d8ff7f --- /dev/null +++ b/assets/support/energy booster.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae23af87934d3d3057e00f7bc7e1576a87416bbe7a499048add4d9acbe9bc5b8 +size 88074 diff --git a/assets/support/energy booster.png.import b/assets/support/energy booster.png.import new file mode 100644 index 0000000..786ca67 --- /dev/null +++ b/assets/support/energy booster.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/insurance.png b/assets/support/insurance.png new file mode 100644 index 0000000..e92bb13 --- /dev/null +++ b/assets/support/insurance.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0e2ff619969c6fff98cecbd63ec954010298e434a5079c06d81e0afa5fd4d5e +size 213996 diff --git a/assets/support/insurance.png.import b/assets/support/insurance.png.import new file mode 100644 index 0000000..88ac73a --- /dev/null +++ b/assets/support/insurance.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/lifesteal.png b/assets/support/lifesteal.png new file mode 100644 index 0000000..74f4fb4 --- /dev/null +++ b/assets/support/lifesteal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa02a72c7208802bcf5882d4925add9707c281b0420ef823302674468b522ada +size 133540 diff --git a/assets/support/lifesteal.png.import b/assets/support/lifesteal.png.import new file mode 100644 index 0000000..ecf73eb --- /dev/null +++ b/assets/support/lifesteal.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/potion.png b/assets/support/potion.png new file mode 100644 index 0000000..1072f04 --- /dev/null +++ b/assets/support/potion.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2c6b61399220a4d5ed8a702737654d1465b1c1e1d02cdc015702575002f6c5b +size 271057 diff --git a/assets/support/potion.png.import b/assets/support/potion.png.import new file mode 100644 index 0000000..b7657e2 --- /dev/null +++ b/assets/support/potion.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/reflection.png b/assets/support/reflection.png new file mode 100644 index 0000000..bc699d4 --- /dev/null +++ b/assets/support/reflection.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22ca0b3919d5eb76eac7e7437285d3bbc508be3f354a9a310fb1727c7c5fae69 +size 217825 diff --git a/assets/support/reflection.png.import b/assets/support/reflection.png.import new file mode 100644 index 0000000..bf38332 --- /dev/null +++ b/assets/support/reflection.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/sword mastery.png b/assets/support/sword mastery.png new file mode 100644 index 0000000..8c14dd4 --- /dev/null +++ b/assets/support/sword mastery.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee9f3905c0ba6be4b0d609157d8008435c393b5529dfae45290cc69ce65fae88 +size 102278 diff --git a/assets/support/sword mastery.png.import b/assets/support/sword mastery.png.import new file mode 100644 index 0000000..a420ef0 --- /dev/null +++ b/assets/support/sword mastery.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/assets/support/tanker.png b/assets/support/tanker.png new file mode 100644 index 0000000..c9edcbb --- /dev/null +++ b/assets/support/tanker.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:487368fdb954eae97166906014ab24f92e100e4f34bf7498395ae5dd99ea8d54 +size 295201 diff --git a/assets/support/tanker.png.import b/assets/support/tanker.png.import new file mode 100644 index 0000000..361c8d1 --- /dev/null +++ b/assets/support/tanker.png.import @@ -0,0 +1,34 @@ +[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 diff --git a/cards.tres b/cards.tres index e4debd9..6222ae9 100644 --- a/cards.tres +++ b/cards.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=2 format=3 uid="uid://cj3vs5hq2mcbp"] +[gd_resource type="Theme" load_steps=2 format=3 uid="uid://is34t82g4jg"] [ext_resource type="FontFile" uid="uid://ncoq4i61plvt" path="res://assets/Bohemian Soul.otf" id="1_yowck"] diff --git a/data/cards/monster/axoluna.tres b/data/cards/monster/axoluna.tres new file mode 100644 index 0000000..a6f88da --- /dev/null +++ b/data/cards/monster/axoluna.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/baraga.tres b/data/cards/monster/baraga.tres deleted file mode 100644 index a979300..0000000 --- a/data/cards/monster/baraga.tres +++ /dev/null @@ -1,11 +0,0 @@ -[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 diff --git a/data/cards/monster/bunnaut.tres b/data/cards/monster/bunnaut.tres new file mode 100644 index 0000000..a70008a --- /dev/null +++ b/data/cards/monster/bunnaut.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/capytain.tres b/data/cards/monster/capytain.tres new file mode 100644 index 0000000..712ab1e --- /dev/null +++ b/data/cards/monster/capytain.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/cattogato.tres b/data/cards/monster/cattogato.tres new file mode 100644 index 0000000..7b4e72c --- /dev/null +++ b/data/cards/monster/cattogato.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/froguvo.tres b/data/cards/monster/froguvo.tres new file mode 100644 index 0000000..f9f900c --- /dev/null +++ b/data/cards/monster/froguvo.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/gilli.tres b/data/cards/monster/gilli.tres new file mode 100644 index 0000000..fe574ca --- /dev/null +++ b/data/cards/monster/gilli.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/jellova.tres b/data/cards/monster/jellova.tres new file mode 100644 index 0000000..ef9567f --- /dev/null +++ b/data/cards/monster/jellova.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/orcava.tres b/data/cards/monster/orcava.tres new file mode 100644 index 0000000..b45cafd --- /dev/null +++ b/data/cards/monster/orcava.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/prankie.tres b/data/cards/monster/prankie.tres new file mode 100644 index 0000000..4d64b66 --- /dev/null +++ b/data/cards/monster/prankie.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/quackle.tres b/data/cards/monster/quackle.tres new file mode 100644 index 0000000..0fe4658 --- /dev/null +++ b/data/cards/monster/quackle.tres @@ -0,0 +1,15 @@ +[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") diff --git a/data/cards/monster/taiman.tres b/data/cards/monster/taiman.tres deleted file mode 100644 index aa4681d..0000000 --- a/data/cards/monster/taiman.tres +++ /dev/null @@ -1,11 +0,0 @@ -[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 diff --git a/data/cards/support/absorb.tres b/data/cards/support/absorb.tres new file mode 100644 index 0000000..72c5c4a --- /dev/null +++ b/data/cards/support/absorb.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/all_out_attack.tres b/data/cards/support/all_out_attack.tres new file mode 100644 index 0000000..660a217 --- /dev/null +++ b/data/cards/support/all_out_attack.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/attack_mode.tres b/data/cards/support/attack_mode.tres new file mode 100644 index 0000000..b3de463 --- /dev/null +++ b/data/cards/support/attack_mode.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/caller.tres b/data/cards/support/caller.tres new file mode 100644 index 0000000..397af59 --- /dev/null +++ b/data/cards/support/caller.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/cash_back.tres b/data/cards/support/cash_back.tres new file mode 100644 index 0000000..b13212f --- /dev/null +++ b/data/cards/support/cash_back.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/catcher.tres b/data/cards/support/catcher.tres new file mode 100644 index 0000000..ea9d5d8 --- /dev/null +++ b/data/cards/support/catcher.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/energy_booster.tres b/data/cards/support/energy_booster.tres new file mode 100644 index 0000000..7a16144 --- /dev/null +++ b/data/cards/support/energy_booster.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/insurance.tres b/data/cards/support/insurance.tres new file mode 100644 index 0000000..f9211a0 --- /dev/null +++ b/data/cards/support/insurance.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/invisibility.tres b/data/cards/support/invisibility.tres new file mode 100644 index 0000000..3fb4c4e --- /dev/null +++ b/data/cards/support/invisibility.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/lifesteal.tres b/data/cards/support/lifesteal.tres new file mode 100644 index 0000000..2a0d994 --- /dev/null +++ b/data/cards/support/lifesteal.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/negate.tres b/data/cards/support/negate.tres new file mode 100644 index 0000000..38707fc --- /dev/null +++ b/data/cards/support/negate.tres @@ -0,0 +1,13 @@ +[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." diff --git a/data/cards/support/paper.tres b/data/cards/support/paper.tres new file mode 100644 index 0000000..71de883 --- /dev/null +++ b/data/cards/support/paper.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/potion.tres b/data/cards/support/potion.tres index 96ed2d7..36ea162 100644 --- a/data/cards/support/potion.tres +++ b/data/cards/support/potion.tres @@ -1,9 +1,9 @@ -[gd_resource type="Resource" script_class="SupportCard" load_steps=6 format=3 uid="uid://4eod3m0vc5a8"] +[gd_resource type="Resource" script_class="ImplementedSupportCard" 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/support_card.gd" id="3_6r4k4"] -[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="3_kyx3v"] +[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"] [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_6r4k4") +script = ExtResource("3_at5nt") +scope = "turn" type = "green" -priority = 0 effects = Array[ExtResource("1_ujm0o")]([SubResource("Resource_88lmk")]) name = "Potion" description = "Heal 30 HP" -icon = ExtResource("3_kyx3v") +icon = ExtResource("3_hk8kx") diff --git a/data/cards/support/reflection.tres b/data/cards/support/reflection.tres new file mode 100644 index 0000000..2e6e1eb --- /dev/null +++ b/data/cards/support/reflection.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/cards/support/retreat.tres b/data/cards/support/retreat.tres new file mode 100644 index 0000000..6582080 --- /dev/null +++ b/data/cards/support/retreat.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/reviver.tres b/data/cards/support/reviver.tres new file mode 100644 index 0000000..8295ec0 --- /dev/null +++ b/data/cards/support/reviver.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/rock.tres b/data/cards/support/rock.tres new file mode 100644 index 0000000..4237c53 --- /dev/null +++ b/data/cards/support/rock.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/scissor.tres b/data/cards/support/scissor.tres new file mode 100644 index 0000000..e9d5406 --- /dev/null +++ b/data/cards/support/scissor.tres @@ -0,0 +1,12 @@ +[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." diff --git a/data/cards/support/sword_mastery.tres b/data/cards/support/sword_mastery.tres new file mode 100644 index 0000000..1eb0399 --- /dev/null +++ b/data/cards/support/sword_mastery.tres @@ -0,0 +1,20 @@ +[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") diff --git a/data/cards/support/tanker.tres b/data/cards/support/tanker.tres new file mode 100644 index 0000000..817bd89 --- /dev/null +++ b/data/cards/support/tanker.tres @@ -0,0 +1,14 @@ +[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") diff --git a/data/support_effects/sword_mastery.tres b/data/support_effects/sword_mastery.tres new file mode 100644 index 0000000..1cb570e --- /dev/null +++ b/data/support_effects/sword_mastery.tres @@ -0,0 +1,6 @@ +[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") diff --git a/demo_game.gd b/demo_game.gd index 36c0914..b3d2308 100644 --- a/demo_game.gd +++ b/demo_game.gd @@ -8,31 +8,39 @@ 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 + +@onready var match_manager: MatchManager = $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(MatchManager.PLAYER_1_ID) + return player_action_queue.get(own_side.player_id) set(value): - player_action_queue[MatchManager.PLAYER_1_ID] = value + player_action_queue[own_side.player_id] = value var player_2_action: Action: get: - return player_action_queue.get(MatchManager.PLAYER_2_ID) + return player_action_queue.get(opponent_side.player_id) set(value): - player_action_queue[MatchManager.PLAYER_2_ID] = value + player_action_queue[opponent_side.player_id] = value var id var signal_connected := false +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() @@ -41,12 +49,13 @@ func init(player_id: int) -> void: 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.attach(match_manager, player_id == MatchManager.PLAYER_1_ID) - opponent_side.attach(match_manager, player_id == MatchManager.PLAYER_2_ID) + }, 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) @@ -56,8 +65,13 @@ 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 @@ -65,19 +79,6 @@ func _on_start_game_button_button_up() -> void: func rpc_start_game() -> void: match_manager.resolve({}) -func rpc_own_play_card(id: String) -> void: - if !id.is_empty(): - var card = id_to_card[id] - player_1_action = ActionPlayCard.new(card) - else: - player_1_action = ActionSkipCard.new() - - print(self.id, " rpc_own_play_card", player_1_action, player_2_action) - - if player_2_action: - match_manager.resolve(player_action_queue) - player_action_queue.clear() - func _on_own_play_card(card: Card) -> void: if card: player_1_action = ActionPlayCard.new(card) @@ -105,29 +106,6 @@ func rpc_opponent_play_card(id: String) -> void: match_manager.resolve(player_action_queue) player_action_queue.clear() -func _on_opponent_play_card(card: Card) -> void: - if card: - player_2_action = ActionPlayCard.new(card) - opponent_played_card.emit(card) - else: - player_2_action = ActionSkipCard.new() - opponent_played_card.emit(null) - - print(id, " _on_opponent_play_card", player_1_action, player_2_action) - - if player_1_action: - match_manager.resolve(player_action_queue) - player_action_queue.clear() - -func rpc_own_rps_move(move: String) -> void: - player_1_action = ActionRPSMove.new(move) - - print(id, " rpc_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 _on_own_rps_move(move: String) -> void: player_1_action = ActionRPSMove.new(move) own_played_rts.emit(move) @@ -147,12 +125,11 @@ func rpc_opponent_rps_move(move: String) -> void: match_manager.resolve(player_action_queue) player_action_queue.clear() -func _on_opponent_rps_move(move: String) -> void: - player_2_action = ActionRPSMove.new(move) - opponent_played_rts.emit(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 diff --git a/demo_game.tscn b/demo_game.tscn index 7120e03..b4261af 100644 --- a/demo_game.tscn +++ b/demo_game.tscn @@ -1,12 +1,28 @@ -[gd_scene load_steps=8 format=3 uid="uid://l2ehohbd1xhk"] +[gd_scene load_steps=24 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/baraga.tres" id="3_we1tk"] +[ext_resource type="Resource" uid="uid://cs7q8i7bvohmj" path="res://data/cards/monster/capytain.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://di76avwc0gn8e" path="res://data/cards/monster/taiman.tres" id="5_3cm5x"] +[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"] [node name="DemoGame" type="Control"] layout_mode = 3 @@ -16,134 +32,256 @@ 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("4_kkhfk"), ExtResource("4_kkhfk"), ExtResource("5_3cm5x")]) -player_2_deck = Array[ExtResource("2_xuft0")]([ExtResource("5_3cm5x"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk"), ExtResource("3_we1tk")]) +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")]) -[node name="Own" type="VBoxContainer" parent="." node_paths=PackedStringArray("deck", "monster_name_label", "monster_health_label", "incoming_damage_label", "energy_label")] +[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")] layout_mode = 1 -anchors_preset = 12 -anchor_top = 1.0 +anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 1.0 -offset_top = -131.0 grow_horizontal = 2 -grow_vertical = 0 -alignment = 2 +grow_vertical = 2 script = ExtResource("2_w4tnt") 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("HBoxContainer/EnergyLabel") +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) -[node name="Monster" type="HBoxContainer" parent="Own"] -custom_minimum_size = Vector2(0, 128) -layout_mode = 2 +[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) size_flags_horizontal = 4 -alignment = 1 +size_flags_vertical = 4 -[node name="VBoxContainer" type="VBoxContainer" parent="Own/Monster"] -layout_mode = 2 +[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="NameLabel" type="Label" parent="Own/Monster/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -text = "Name:" +[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="HealthLabel" type="Label" parent="Own/Monster/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -text = "Health:" +[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="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 +[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 text = "Energy:" [node name="Hand" type="HBoxContainer" parent="Own"] -layout_mode = 2 +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) alignment = 1 -[node name="Button" type="Button" parent="Own/Hand"] +[node name="SkipCard" parent="Own/Hand" instance=ExtResource("7_skjyk")] layout_mode = 2 -text = "CARD_1" -[node name="Button2" type="Button" parent="Own/Hand"] +[node name="MonsterCard" parent="Own/Hand" instance=ExtResource("7_4ah45")] layout_mode = 2 -text = "CARD_2" -[node name="Button3" type="Button" parent="Own/Hand"] +[node name="CardBase" parent="Own/Hand" instance=ExtResource("8_dytl5")] layout_mode = 2 -text = "CARD_3" -[node name="Opponent" type="VBoxContainer" parent="." node_paths=PackedStringArray("deck", "monster_name_label", "monster_health_label", "incoming_damage_label", "energy_label")] +[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 = 10 -anchor_right = 1.0 -offset_bottom = 190.0 +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") -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="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"] -layout_mode = 2 +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 31.0 +grow_horizontal = 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="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="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="StartGameButton" type="Button" parent="."] layout_mode = 1 @@ -162,8 +300,75 @@ 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"] diff --git a/icon.svg b/icon.svg index 9d8b7fa..2ead0cd 100644 --- a/icon.svg +++ b/icon.svg @@ -1 +1,3 @@ - \ No newline at end of file +version https://git-lfs.github.com/spec/v1 +oid sha256:f6369bae7e12e6d16019cd6214cf27a2fdb6f3f6d024bd6f23c322be4804474f +size 994 diff --git a/main.gd b/main.gd index 5ba3478..2e7b500 100644 --- a/main.gd +++ b/main.gd @@ -58,24 +58,14 @@ func _ready() -> void: 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.opponent_played_card.connect(func (card): _on_opponent_played_card.rpc(card.id if card else "")) demo_game.own_played_rts.connect(func (move): _on_own_played_rts.rpc(move)) - demo_game.opponent_played_rts.connect(func (move): _on_opponent_played_rts.rpc(move)) @rpc("any_peer", "call_remote", "reliable") func _on_own_played_card(card_id: String): - demo_game.rpc_own_play_card(card_id) - -@rpc("any_peer", "call_remote", "reliable") -func _on_opponent_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_own_rps_move(move) - -@rpc("any_peer", "call_remote", "reliable") -func _on_opponent_played_rts(move: String): demo_game.rpc_opponent_rps_move(move) @rpc("authority", "call_local", "reliable") @@ -130,7 +120,8 @@ func _on_server_removed(id, ip): func _do_connect(ip: String, port: int): var peer = ENetMultiplayerPeer.new() print("%s Connecting to %s:%d" % [server_discovery.id, ip, port]) - peer.create_client(ip, port) + var err = peer.create_client(ip, port) + print(err) multiplayer.multiplayer_peer = peer func _on_host_pressed(): diff --git a/main.tscn b/main.tscn index 523431c..46481fe 100644 --- a/main.tscn +++ b/main.tscn @@ -2,7 +2,7 @@ [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://l2ehohbd1xhk" path="res://demo_game.tscn" id="3_2ln6b"] +[ext_resource type="PackedScene" uid="uid://bgc0u117jqyr1" path="res://demo_game.tscn" id="3_2ln6b"] [node name="Main" type="Control"] layout_mode = 3 @@ -63,9 +63,12 @@ layout_mode = 1 [node name="DisconnectButton" type="Button" parent="AfterConnect"] unique_name_in_owner = true -layout_mode = 2 -offset_left = 966.0 -offset_right = 1152.0 +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" diff --git a/player_side.gd b/player_side.gd index d834319..5a88280 100644 --- a/player_side.gd +++ b/player_side.gd @@ -4,14 +4,32 @@ signal play_card(card: Card) signal rps_move(move: String) @export var player_id: int @export var deck: Container -@export var monster_name_label: Label -@export var monster_health_label: Label -@export var incoming_damage_label: Label @export var energy_label: Label +@export var skip_card_prefab: PackedScene +@export var support_red_card_prefab: PackedScene +@export var support_green_card_prefab: PackedScene +@export var monster_card_prefab: PackedScene +@export var rps_button_container: Container +@export var rps_grayed_color: Color + +@onready var monster_card_ui := $"MonsterCard" +@onready var support1_green := $"Support1GreenCard" +@onready var support2_green := $"Support2GreenCard" +@onready var support2_red := $"Support2RedCard" +@onready var incoming_damage_label := $"IncomingDamageLabel" var match_manager: MatchManager var show_buttons: bool var signal_connected: bool +var selected_card: Control +var focused_card: Control + +var hovering_cards_this_frame: Array[Control] = [] +var hovering_cards_duration: Dictionary = {} +const original_hover_position = 50 # hard coded idk what's a good way to find this value +const hover_animation_time = 0.1 +const hover_height_offset = -50 +const selected_height_offset = -100 func attach(match_manager: MatchManager, show_buttons: bool = true): self.show_buttons = show_buttons @@ -20,18 +38,55 @@ func attach(match_manager: MatchManager, show_buttons: bool = true): match_manager.state_transitioned.connect(_on_update) signal_connected = true +func _ready(): + monster_card_ui.visible = false + support1_green.visible = false + support2_green.visible = false + support2_red.visible = false + incoming_damage_label.visible = false + for child in deck.get_children(): + child.queue_free() + func _on_update(transition): + hovering_cards_duration.clear() + selected_card = null + incoming_damage_label.visible = true + for child in deck.get_children(): child.queue_free() var player: MatchPlayer = match_manager.players.get(player_id) as MatchPlayer if not player: return energy_label.text = "Energy: " + str(player.energy) + + if match_manager.players[player.id].active_support_cards.size() > 0: + support1_green.visible = true + support1_green.card = match_manager.players[player.id].active_support_cards[0] + else: + support1_green.visible = false + + if match_manager.players[player.id].active_support_cards.size() > 1: + var card: SupportCard = match_manager.players[player.id].active_support_cards[1] + if card.type == "green": + support2_green.visible = true + support2_green.card = card + else: + support2_red.visible = true + support2_red.card = card + else: + support2_green.visible = false + support2_red.visible = false + + var monster = player.monster + if monster: - monster_name_label.text = "Name: " + monster.card.id - monster_health_label.text = "Health: " + str(monster.health) - incoming_damage_label.text = "Incoming Damage: " + str(monster.health_delta) + monster_card_ui.visible = true + monster_card_ui.show_monster(monster) + incoming_damage_label.text = "HP " + ("+0" if monster.health_delta == 0 else str(monster.health_delta)) + + else: + monster_card_ui.visible = false if match_manager.phase in [Match.Phase.SUMMON, Match.Phase.SUPPORT_1, Match.Phase.SUPPORT_2]: if ( @@ -39,9 +94,11 @@ func _on_update(transition): ) or ( match_manager.phase == Match.Phase.SUMMON and player.monster and player.monster.health > 0 && show_buttons ): - var skip_btn = Button.new() - skip_btn.text = "Skip" - skip_btn.button_up.connect(func (): play_card.emit(null)) + var skip_btn:CardBase = skip_card_prefab.instantiate() + skip_btn.left_clicked.connect(func (): + _pop_this_card(skip_btn) + play_card.emit(null)) + skip_btn.hovering.connect(func (delta): _do_hover(skip_btn, delta)) deck.add_child(skip_btn) for card: Card in player.hand: @@ -55,10 +112,7 @@ func _on_update(transition): if !show_buttons : continue - var btn = Button.new() - btn.text = card.id - btn.button_up.connect(func (): play_card.emit(card)) - btn.disabled = ( + var is_disabled = ( card is MonsterCard and match_manager.phase != Match.Phase.SUMMON ) or ( card is SupportCard and match_manager.phase != Match.Phase.SUPPORT_1 and match_manager.phase != Match.Phase.SUPPORT_2 @@ -67,15 +121,119 @@ func _on_update(transition): ) or ( card is MonsterCard and match_manager.phase == Match.Phase.SUMMON and player.monster and player.monster.health > 0 ) - deck.add_child(btn) - if match_manager.phase == Match.Phase.RPS: - for move in ["rock", "paper", "scissors"]: - if !show_buttons: - continue - - var btn = Button.new() - btn.text = move - btn.button_up.connect(func (): rps_move.emit(move)) - deck.add_child(btn) + var btn: CardBase = null + if card is MonsterCard: + var monster_card:MonsterCardUI = monster_card_prefab.instantiate() + monster_card.show_monster(MatchMonster.new(card, card.base_health, 0)) + if !is_disabled: + monster_card.left_clicked.connect(func (): + _pop_this_card(monster_card) + play_card.emit(card)) + monster_card.hovering.connect(func (delta): _do_hover(monster_card, delta)) + monster_card.right_clicked.connect(func(): _do_zoom(monster_card)) + monster_card.un_right_clicked.connect(_do_unzoom) + deck.add_child(monster_card) + + elif card is SupportCard and card.type == "red": + btn = support_red_card_prefab.instantiate() + btn.card = card + deck.add_child(btn) + else: + btn = support_green_card_prefab.instantiate() + btn.card = card + deck.add_child(btn) + + if btn and !is_disabled: + btn.left_clicked.connect(func (): + _pop_this_card(btn) + play_card.emit(card)) + btn.hovering.connect(func (delta): _do_hover(btn, delta)) + btn.right_clicked.connect(func(): _do_zoom(btn)) + btn.un_right_clicked.connect(_do_unzoom) + if rps_button_container: + rps_button_container.visible = match_manager.phase == Match.Phase.RPS + for button: TextureButton in rps_button_container.get_children(): + button.modulate = rps_grayed_color + +func _do_zoom(card: Control): + if focused_card: + _do_unzoom() + + var new_card: Control = card.duplicate() + get_parent().add_child(new_card) + new_card.set_anchors_and_offsets_preset(Control.PRESET_CENTER) + new_card.scale = Vector2(2,2) + focused_card = new_card + +func _do_unzoom(): + if focused_card: + focused_card.queue_free() + focused_card = null + +func _pop_this_card(control: Control): + if selected_card: + selected_card.position = Vector2(selected_card.position.x, original_hover_position) + + selected_card = control + selected_card.position = Vector2(selected_card.position.x, original_hover_position + selected_height_offset) + +func _do_hover(control: Control, delta: float): + if control == selected_card: + if control in hovering_cards_duration: + hovering_cards_duration.erase(control) + return + + var duration: float + if control in hovering_cards_duration: + duration = hovering_cards_duration[control] + duration = clampf(duration + delta, 0, hover_animation_time) + hovering_cards_duration[control] = duration + else: + hovering_cards_duration[control] = delta + duration = delta + + var height = lerpf(0, hover_height_offset, duration / hover_animation_time) + original_hover_position + control.position = Vector2(control.position.x, height) + + hovering_cards_this_frame.append(control) + +func _process(delta): + for card in hovering_cards_duration.keys(): + if !card or card in hovering_cards_this_frame: + continue + + var duration = hovering_cards_duration[card] + duration = maxf(0, duration - delta) + + var height = lerpf(0, hover_height_offset, duration / hover_animation_time) + original_hover_position + card.position = Vector2(card.position.x, height) + + if duration == 0: + hovering_cards_duration.erase(card) + else: + hovering_cards_duration[card] = duration + + hovering_cards_this_frame.clear() + + +func _on_kertas_button_button_down() -> void: + rps_move.emit("paper") + for button: TextureButton in rps_button_container.get_children(): + button.modulate = rps_grayed_color + rps_button_container.get_node("KertasButton").modulate = Color.WHITE + + +func _on_gunting_button_button_down() -> void: + rps_move.emit("scissors") + for button: TextureButton in rps_button_container.get_children(): + button.modulate = rps_grayed_color + rps_button_container.get_node("GuntingButton").modulate = Color.WHITE + + +func _on_batu_button_button_down() -> void: + rps_move.emit("rock") + for button: TextureButton in rps_button_container.get_children(): + button.modulate = rps_grayed_color + rps_button_container.get_node("BatuButton").modulate = Color.WHITE diff --git a/project.godot b/project.godot index 3f421a3..c65b3ca 100644 --- a/project.godot +++ b/project.godot @@ -19,6 +19,12 @@ config/icon="res://icon.svg" Match="*res://tcg/match/match.gd" +[display] + +window/size/viewport_width=1920 +window/size/viewport_height=1080 +window/stretch/mode="viewport" + [rendering] renderer/rendering_method="mobile" diff --git a/tcg/card/card.gd b/tcg/card/card.gd index e14ff41..6fd69f3 100644 --- a/tcg/card/card.gd +++ b/tcg/card/card.gd @@ -2,7 +2,7 @@ extends Resource class_name Card @export var name: String -@export var description: String +@export_multiline var description: String @export var icon: Texture2D var id: String: diff --git a/tcg/card/implemented_support_card.gd b/tcg/card/implemented_support_card.gd new file mode 100644 index 0000000..9806f1c --- /dev/null +++ b/tcg/card/implemented_support_card.gd @@ -0,0 +1,4 @@ +extends SupportCard +class_name ImplementedSupportCard + +@export_enum("instant", "turn", "monster", "match") var scope = "instant" diff --git a/tcg/card/monster_card.gd b/tcg/card/monster_card.gd index 4b82987..16174b1 100644 --- a/tcg/card/monster_card.gd +++ b/tcg/card/monster_card.gd @@ -8,9 +8,9 @@ class_name MonsterCard @export var base_health: int = 100 var damage: Dictionary: - get: - return { - "rock": rock, - "paper": paper, - "scissors": scissors - } \ No newline at end of file + get: + return { + "rock": rock, + "paper": paper, + "scissors": scissors + } diff --git a/tcg/card/support_card.gd b/tcg/card/support_card.gd index 8ff5e3b..68eeba4 100644 --- a/tcg/card/support_card.gd +++ b/tcg/card/support_card.gd @@ -2,5 +2,4 @@ extends Card class_name SupportCard @export_enum("red", "green") var type = "green" -@export var priority: int = 0 @export var effects: Array[SupportCardEffectInstance] = [null] diff --git a/tcg/match/event/event_game_ended.gd b/tcg/match/event/event_game_ended.gd new file mode 100644 index 0000000..f9db6cc --- /dev/null +++ b/tcg/match/event/event_game_ended.gd @@ -0,0 +1,7 @@ +extends Event +class_name EventGameEnded + +var winner_player_id: int + +func _init(winner_player_id: int) -> void: + self.winner_player_id = winner_player_id diff --git a/tcg/match/match_manager.gd b/tcg/match/match_manager.gd index 814b138..9a25959 100644 --- a/tcg/match/match_manager.gd +++ b/tcg/match/match_manager.gd @@ -16,30 +16,34 @@ var rps_wins = { var players: Dictionary var player_1: MatchPlayer: get: - return players[PLAYER_1_ID] as MatchPlayer + return players[actual_p1_id] as MatchPlayer var player_2: MatchPlayer: get: - return players[PLAYER_2_ID] as MatchPlayer + return players[actual_p2_id] as MatchPlayer var phase: Match.Phase = Match.Phase.PREGAME +var actual_p1_id: int +var actual_p2_id: int + func _ready() -> void: cleanup() -func init(decks: Dictionary): +func init(decks: Dictionary, actual_p1_id: int, actual_p2_id: int): + self.actual_p1_id = actual_p1_id + self.actual_p2_id = actual_p2_id + cleanup() for player_id in [PLAYER_1_ID, PLAYER_2_ID]: var deck_shuffled = decks[player_id].duplicate() as Array[Card] - - var first_monster = deck_shuffled.filter(func (card): return card is MonsterCard)[0] + deck_shuffled.shuffle() + var first_monster = deck_shuffled.filter(func(card): return card is MonsterCard)[0] var first_monster_idx = deck_shuffled.find(first_monster) deck_shuffled.pop_at(first_monster_idx) - var zero_idx_card = deck_shuffled.pop_at(0) - deck_shuffled.insert(0, first_monster) - deck_shuffled.insert(first_monster_idx, zero_idx_card) + deck_shuffled.push_back(first_monster) - deck_shuffled.shuffle() players[player_id] = MatchPlayer.new(player_id, deck_shuffled) + func cleanup(): for player_id in [PLAYER_1_ID, PLAYER_2_ID]: var existing = players.get(player_id) @@ -50,8 +54,8 @@ func cleanup(): func resolve(action_by_player_id: Dictionary) -> PhaseTransition: var initial_phase = phase var events = [] as Array[Event] - var player_1_action = action_by_player_id.get(PLAYER_1_ID) as Action - var player_2_action = action_by_player_id.get(PLAYER_2_ID) as Action + var player_1_action = action_by_player_id.get(actual_p1_id) as Action + var player_2_action = action_by_player_id.get(actual_p2_id) as Action match phase: Match.Phase.PREGAME: var CARDS_TO_DRAW: int = 3 @@ -66,6 +70,7 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: ) phase = Match.Phase.SUMMON Match.Phase.SUMMON: + for player_id in action_by_player_id.keys(): var action = action_by_player_id[player_id] if action is ActionPlayCard: @@ -74,6 +79,7 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: players[player_id].monster = _monster_from_card(card) players[player_id].hand = players[player_id].hand.filter(func(card_in_hand): return card.id != card_in_hand.id) events.append(EventMonsterSummoned.new(card)) + players[player_id].energy = players[player_id].energy - card.energy_cost if players.values().all(func(player: MatchPlayer): return player.monster): phase = Match.Phase.SUPPORT_1 Match.Phase.SUPPORT_1: @@ -90,20 +96,35 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: "card": player_2_action.card }) player_2.hand.erase(player_2_action.card) - support_cards.sort_custom(func(a, b): return a.card.priority < b.card.priority) for played_card in support_cards: var player: MatchPlayer = played_card.player var card: SupportCard = played_card.card - events.append_array(_resolve_support_card_effects(player, card)) + if card is ImplementedSupportCard and card.scope != 'instant': + player.active_support_cards.append(card) + var executed_instant_effects_events = _execute_support_card_instant_effects(player, card) + events.append_array(executed_instant_effects_events) phase = Match.Phase.RPS Match.Phase.RPS: + var damage_pairs = [] var tie = player_1_action.move == player_2_action.move var player_1_win = rps_wins[player_1_action.move] == player_2_action.move var player_2_win = rps_wins[player_2_action.move] == player_1_action.move if tie or player_1_win: - player_2.monster.health_delta -= player_1.monster.card.damage[player_1_action.move] + damage_pairs.append({"from": player_1, "to": player_2}) if tie or player_2_win: - player_1.monster.health_delta -= player_2.monster.card.damage[player_2_action.move] + damage_pairs.append({"from": player_2, "to": player_1}) + for pair in damage_pairs: + var computed_damage = pair.from.monster.card.damage[action_by_player_id[pair.from.id].move] + if _player_has_active_support_card(pair.from, "all_out_attack"): + var rps = [pair.from.monster.card.rock, pair.from.monster.card.paper, pair.from.monster.card.scissors] + computed_damage = rps.reduce(func (a, b): return a + b, 0) + pair.from.monster.health_delta -= rps.min() + if _player_has_active_support_card(pair.from, "sword_mastery"): + computed_damage += 20 + if _player_has_active_support_card(pair.from, "lifesteal"): + pair.from.monster.health_delta += computed_damage + pair.to.monster.health_delta -= computed_damage + phase = Match.Phase.SUPPORT_2 Match.Phase.SUPPORT_2: var support_cards = [] @@ -119,33 +140,51 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: "card": player_2_action.card }) player_2.hand.erase(player_2_action.card) - support_cards.sort_custom(func(a, b): return a.card.priority < b.card.priority) for played_card in support_cards: var player: MatchPlayer = played_card.player var card: SupportCard = played_card.card - events.append_array(_resolve_support_card_effects(player, card)) + if card is ImplementedSupportCard and card.scope != 'instant': + player.active_support_cards.append(card) + events.append_array(_execute_support_card_instant_effects(player, card)) for player: MatchPlayer in players.values(): + if _player_has_active_support_card(player, "absorb") and player.monster.health_delta < 0: + player.monster.health_delta = -player.monster.health_delta var monster_final_health = player.monster.health + player.monster.health_delta + if _player_has_active_support_card(player, "invisibility"): + monster_final_health = player.monster.health + if _player_has_active_support_card(player, "insurance"): + monster_final_health = max(10, monster_final_health) if monster_final_health <= 0: player.monster = null + var card_expires_with_monster = func(card): return card is ImplementedSupportCard and card.scope == 'monster' + player.active_support_cards = player.active_support_cards.filter(func (card): return not card_expires_with_monster.call(card)) events.append(EventMonsterDied.new(player.id)) else: - player.monster.health += player.monster.health_delta + player.monster.health = monster_final_health player.monster.health_delta = 0 var drawn_card = player.deck.pop_back() if drawn_card: player.hand.append(drawn_card) events.append(EventCardDrawn.new(player.id, drawn_card)) - var players_without_monster = players.values().filter(func (player): return player.monster == null) + + var card_expires_this_turn = func(card): return card is ImplementedSupportCard and card.scope == 'turn' + player.active_support_cards = player.active_support_cards.filter(func (card): return not card_expires_this_turn.call(card)) + + var players_without_monster = players.values().filter(func(player): return player.monster == null) + var players_without_monster_ids = players_without_monster.map(func (it): return it.id) if players_without_monster.size() == 0: phase = Match.Phase.SUPPORT_1 elif players_without_monster.all( - func (player): return player.hand.any(func (it): return it is MonsterCard and it.energy_cost <= player.energy) + func(player): return player.hand.any(func(it): return it is MonsterCard and it.energy_cost <= player.energy) ): phase = Match.Phase.SUMMON else: + var player_1_lost = players_without_monster_ids.has(player_1.id) + var player_2_lost = players_without_monster_ids.has(player_2.id) + var winner_id = -1 if player_1_lost and player_2_lost else player_1.id if player_2_lost else player_2.id phase = Match.Phase.END + events.append(EventGameEnded.new(winner_id)) _: pass var transition = PhaseTransition.new(events, initial_phase, phase) @@ -155,13 +194,19 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: func _monster_from_card(card: MonsterCard) -> MatchMonster: return MatchMonster.new(card, card.base_health, 0) -func _resolve_support_card_effects(player: MatchPlayer, card: SupportCard) -> Array[Event]: +func _execute_support_card_instant_effects(player: MatchPlayer, card: SupportCard) -> Array[Event]: var events: Array[Event] - for effect_instance in card.effects: - var effect = effect_instance.effect - var magnitude = effect_instance.magnitude - match effect.id: - "heal": - player.monster.health_delta += magnitude - events.append(EventSupportEffectApplied.new(player.id, effect_instance)) + if card is ImplementedSupportCard: + match card.id: + "potion": + player.monster.health_delta += 20 + "energy_booster": + player.energy += 1 + # events.append(Event) return events + +func _player_has_active_support_card(player: MatchPlayer, card_id: String) -> bool: + return player.active_support_cards.any(func (card): return card.id == card_id) + +func _player_opponent(player: MatchPlayer) -> MatchPlayer: + return player_2 if player.id == PLAYER_1_ID else player_1 diff --git a/tcg/match/match_player.gd b/tcg/match/match_player.gd index 48c7a9e..5eaf6ce 100644 --- a/tcg/match/match_player.gd +++ b/tcg/match/match_player.gd @@ -6,6 +6,7 @@ var hand: Array[Card] = [] var deck: Array[Card] var energy: int = 5 var monster: MatchMonster = null +var active_support_cards: Array[SupportCard] = [] func _init(id: int, deck: Array[Card]) -> void: self.id = id diff --git a/test_card.tscn b/test_card.tscn index ccbb6d6..19770ef 100644 --- a/test_card.tscn +++ b/test_card.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=5 format=3 uid="uid://dhm4v4r7he0op"] +[gd_scene load_steps=6 format=3 uid="uid://lrb86kqjqt4v"] [ext_resource type="Script" path="res://test_card.gd" id="1_tqmas"] [ext_resource type="PackedScene" uid="uid://dg5amjm1gqi06" path="res://ui/card_template/support_card_green.tscn" id="2_22pto"] [ext_resource type="Resource" uid="uid://4eod3m0vc5a8" path="res://data/cards/support/potion.tres" id="2_tbbjy"] [ext_resource type="PackedScene" uid="uid://cds50kwwhlgam" path="res://ui/card_template/support_card_red.tscn" id="3_7wd2e"] +[ext_resource type="PackedScene" uid="uid://bhrelvt51cbp2" path="res://ui/card_template/monster_card.tscn" id="5_8mwjl"] [node name="TestCard" type="Control"] layout_mode = 3 @@ -26,3 +27,10 @@ offset_left = 699.0 offset_top = 168.0 offset_right = 919.0 offset_bottom = 488.0 + +[node name="MonsterCard" parent="." instance=ExtResource("5_8mwjl")] +layout_mode = 1 +offset_left = 461.0 +offset_top = 162.0 +offset_right = -471.0 +offset_bottom = -166.0 diff --git a/ui/card_template/card_base.gd b/ui/card_template/card_base.gd index 12acc63..2e623c6 100644 --- a/ui/card_template/card_base.gd +++ b/ui/card_template/card_base.gd @@ -1,4 +1,10 @@ extends Control +class_name CardBase + +signal left_clicked +signal right_clicked +signal un_right_clicked +signal hovering(delta: float) @export var card_name_label: Label @export var card_desc_label: Label @@ -17,4 +23,20 @@ func _update(card: SupportCard): card_desc_label.text = card.description icon_rect.texture = card.icon - +func _process(delta): + var mouse_position = get_global_mouse_position() + var rect = get_global_rect() + if rect.has_point(mouse_position) and get_window().has_focus(): + hovering.emit(delta) + +func _input(event): + if event is InputEventMouseButton: + var mouse_position = get_global_mouse_position() + var rect = get_global_rect() + + if rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed() and get_window().has_focus(): + left_clicked.emit() + elif rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed() and get_window().has_focus(): + right_clicked.emit() + elif event.button_index == MOUSE_BUTTON_RIGHT and !event.is_pressed(): + un_right_clicked.emit() diff --git a/ui/card_template/monster_card.gd b/ui/card_template/monster_card.gd new file mode 100644 index 0000000..1c154f6 --- /dev/null +++ b/ui/card_template/monster_card.gd @@ -0,0 +1,54 @@ +extends Control +class_name MonsterCardUI + +signal left_clicked +signal right_clicked +signal un_right_clicked +signal hovering(delta: float) + +@export var name_label : Label +@export var health_label : Label +@export var energy_pip_container :Container +@export var icon_texture_rect : TextureRect +@export var paper_damage : Label +@export var scissors_damage : Label +@export var rock_damage : Label + +func show_monster(monster: MatchMonster): + if !monster: + name_label.text = "" + health_label.text = "HP" + icon_texture_rect.texture = null + return + + name_label.text = monster.card.id + health_label.text = "HP %d/%d" % [monster.health, monster.card.base_health] + icon_texture_rect.texture = monster.card.icon + + paper_damage.text = str(monster.card.paper) + scissors_damage.text = str(monster.card.scissors) + rock_damage.text = str(monster.card.rock) + + var shown_stars = 0 + for child in energy_pip_container.get_children(): + var tr = child as TextureRect + tr.visible = shown_stars < monster.card.energy_cost + shown_stars += 1 + +func _process(delta): + var mouse_position = get_global_mouse_position() + var rect = get_global_rect() + if rect.has_point(mouse_position) and get_window().has_focus(): + hovering.emit(delta) + +func _input(event): + if event is InputEventMouseButton: + var mouse_position = get_global_mouse_position() + var rect = get_global_rect() + + if rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed() and get_window().has_focus(): + left_clicked.emit() + elif rect.has_point(mouse_position) and event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed() and get_window().has_focus(): + right_clicked.emit() + elif event.button_index == MOUSE_BUTTON_RIGHT and !event.is_pressed(): + un_right_clicked.emit() diff --git a/ui/card_template/monster_card.tscn b/ui/card_template/monster_card.tscn index 3d9e3de..d373404 100644 --- a/ui/card_template/monster_card.tscn +++ b/ui/card_template/monster_card.tscn @@ -1,9 +1,321 @@ -[gd_scene format=3 uid="uid://bhrelvt51cbp2"] +[gd_scene load_steps=14 format=3 uid="uid://bhrelvt51cbp2"] -[node name="MonsterCard" type="Control"] +[ext_resource type="Script" path="res://ui/card_template/monster_card.gd" id="1_xddej"] +[ext_resource type="Texture2D" uid="uid://l2nxxhh0pvh8" path="res://assets/card_base/Frame.png" id="2_lhxdu"] +[ext_resource type="Texture2D" uid="uid://crgrple0uik7x" path="res://assets/card_base/Stroke.png" id="4_kkcc6"] +[ext_resource type="Texture2D" uid="uid://c2qyx2k50v2vv" path="res://assets/card_base/Monster-InnerFill.png" id="5_a3gpd"] +[ext_resource type="Texture2D" uid="uid://b8accn4e2ojau" path="res://assets/monster/froggo 1.png" id="7_j2i0p"] +[ext_resource type="Texture2D" uid="uid://dft4fbgoecbp4" path="res://assets/card_base/Illustrated BG.png" id="7_qe8a1"] +[ext_resource type="Texture2D" uid="uid://cqttp0i3vph37" path="res://assets/card_base/Star.png" id="8_ophhb"] +[ext_resource type="Theme" uid="uid://is34t82g4jg" path="res://cards.tres" id="9_6x2vq"] +[ext_resource type="Texture2D" uid="uid://cjmxetjq82rl2" path="res://assets/card_base/Pip.png" id="10_14hhn"] +[ext_resource type="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="11_oy107"] +[ext_resource type="Texture2D" uid="uid://bywa8qlwvcksd" path="res://assets/card_base/batu.png" id="12_a4kkh"] +[ext_resource type="Texture2D" uid="uid://ch04c20lkis6j" path="res://assets/card_base/gunting.png" id="13_ifoc6"] +[ext_resource type="Texture2D" uid="uid://b0pclmv0j0r12" path="res://assets/card_base/kertas.png" id="14_gm7k7"] + +[node name="MonsterCard" type="Control" node_paths=PackedStringArray("name_label", "health_label", "energy_pip_container", "icon_texture_rect", "paper_damage", "scissors_damage", "rock_damage")] +custom_minimum_size = Vector2(220, 320) layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_right = -1700.0 +offset_bottom = -760.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(0.7, 0.7) +pivot_offset = Vector2(110, 160) +size_flags_vertical = 8 +script = ExtResource("1_xddej") +name_label = NodePath("MarginContainer/MonsterNameLabel") +health_label = NodePath("MarginContainer/HealthLabel") +energy_pip_container = NodePath("MarginContainer/EnergyStarsContainer") +icon_texture_rect = NodePath("MarginContainer/TextureRect2/IconTextureRect") +paper_damage = NodePath("MarginContainer/HBoxContainer/Rock2/PaperLabel") +scissors_damage = NodePath("MarginContainer/HBoxContainer/Rock3/ScissorsLabel") +rock_damage = NodePath("MarginContainer/HBoxContainer/Rock/RockLabel") + +[node name="Frame" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +texture = ExtResource("2_lhxdu") +expand_mode = 1 + +[node name="MarginContainer" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 3.0 +offset_right = -5.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="OuterStroke" type="NinePatchRect" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_kkcc6") + +[node name="InnerFill" type="TextureRect" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 43.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("5_a3gpd") +expand_mode = 1 + +[node name="InnerStroke" type="NinePatchRect" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 42.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_kkcc6") + +[node name="TextureRect2" type="TextureRect" parent="MarginContainer"] +layout_mode = 0 +offset_left = 9.0 +offset_top = 77.0 +offset_right = 199.0 +offset_bottom = 207.0 +pivot_offset = Vector2(95, 65) +texture = ExtResource("7_qe8a1") +expand_mode = 1 +stretch_mode = 5 + +[node name="IconTextureRect" type="TextureRect" parent="MarginContainer/TextureRect2"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("7_j2i0p") +expand_mode = 1 +stretch_mode = 5 + +[node name="EnergyStarsContainer" type="HBoxContainer" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 100.0 +offset_top = 54.0 +offset_right = 197.0 +offset_bottom = 69.0 +alignment = 2 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_ophhb") +expand_mode = 3 +stretch_mode = 5 + +[node name="TextureRect2" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_ophhb") +expand_mode = 3 +stretch_mode = 5 + +[node name="TextureRect3" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_ophhb") +expand_mode = 3 +stretch_mode = 5 + +[node name="TextureRect4" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_ophhb") +expand_mode = 3 +stretch_mode = 5 + +[node name="TextureRect5" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_ophhb") +expand_mode = 3 +stretch_mode = 5 + +[node name="HealthLabel" type="Label" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 14.0 +offset_top = 44.0 +offset_right = -99.0 +offset_bottom = 80.0 +grow_horizontal = 2 +theme = ExtResource("9_6x2vq") +theme_override_font_sizes/font_size = 16 +text = "HP 80/100" +vertical_alignment = 1 + +[node name="MonsterNameLabel" type="Label" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 31.0 +offset_top = 11.0 +offset_right = 26.0 +offset_bottom = 47.0 +grow_horizontal = 2 +theme = ExtResource("9_6x2vq") +theme_override_font_sizes/font_size = 26 +text = "Cattogato" +vertical_alignment = 1 + +[node name="CardNumber" type="TextureRect" parent="MarginContainer"] +layout_mode = 0 +offset_left = 7.0 +offset_top = 17.0 +offset_right = 26.0 +offset_bottom = 36.0 +texture = ExtResource("10_14hhn") +expand_mode = 1 +stretch_mode = 5 + +[node name="Label" type="Label" parent="MarginContainer/CardNumber"] +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 = -9.5 +offset_top = -7.0 +offset_right = 9.5 +offset_bottom = 7.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("9_6x2vq") +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("11_oy107") +theme_override_font_sizes/font_size = 6 +text = "#01" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -100.0 +offset_top = -102.143 +offset_right = 100.0 +offset_bottom = -7.1427 +grow_horizontal = 2 +grow_vertical = 0 +alignment = 1 + +[node name="Rock" type="Control" parent="MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 0) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="RockLabel" type="Label" parent="MarginContainer/HBoxContainer/Rock"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -32.0 +offset_right = 32.0 +offset_bottom = 26.0 +grow_horizontal = 2 +theme = ExtResource("9_6x2vq") +theme_override_font_sizes/font_size = 24 +text = "100" +horizontal_alignment = 1 +vertical_alignment = 2 + +[node name="Rock" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock"] +layout_mode = 2 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 30.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("12_a4kkh") +expand_mode = 1 +stretch_mode = 5 + +[node name="Rock2" type="Control" parent="MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 0) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="PaperLabel" type="Label" parent="MarginContainer/HBoxContainer/Rock2"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -32.0 +offset_right = 32.0 +offset_bottom = 26.0 +grow_horizontal = 2 +theme = ExtResource("9_6x2vq") +theme_override_font_sizes/font_size = 24 +text = "10" +horizontal_alignment = 1 +vertical_alignment = 2 + +[node name="Paper" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock2"] +layout_mode = 2 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 30.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("14_gm7k7") +expand_mode = 1 +stretch_mode = 5 + +[node name="Rock3" type="Control" parent="MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 0) +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ScissorsLabel" type="Label" parent="MarginContainer/HBoxContainer/Rock3"] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -32.0 +offset_right = 32.0 +offset_bottom = 26.0 +grow_horizontal = 2 +theme = ExtResource("9_6x2vq") +theme_override_font_sizes/font_size = 24 +text = "10" +horizontal_alignment = 1 +vertical_alignment = 2 + +[node name="Scissors" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock3"] +layout_mode = 2 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 30.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("13_ifoc6") +expand_mode = 1 +stretch_mode = 5 diff --git a/ui/card_template/skip_card.tscn b/ui/card_template/skip_card.tscn new file mode 100644 index 0000000..f5ff411 --- /dev/null +++ b/ui/card_template/skip_card.tscn @@ -0,0 +1,274 @@ +[gd_scene load_steps=14 format=3 uid="uid://b60vuykleugjn"] + +[ext_resource type="Script" path="res://ui/card_template/card_base.gd" id="1_ci66m"] +[ext_resource type="Texture2D" uid="uid://l2nxxhh0pvh8" path="res://assets/card_base/Frame.png" id="3_lbsr3"] +[ext_resource type="Texture2D" uid="uid://crgrple0uik7x" path="res://assets/card_base/Stroke.png" id="4_avv1r"] +[ext_resource type="Texture2D" uid="uid://c2qyx2k50v2vv" path="res://assets/card_base/Monster-InnerFill.png" id="5_3yv36"] +[ext_resource type="Texture2D" uid="uid://dft4fbgoecbp4" path="res://assets/card_base/Illustrated BG.png" id="6_cfl8c"] +[ext_resource type="Texture2D" uid="uid://b8accn4e2ojau" path="res://assets/monster/froggo 1.png" id="7_5xgn0"] +[ext_resource type="Texture2D" uid="uid://cqttp0i3vph37" path="res://assets/card_base/Star.png" id="8_gh78y"] +[ext_resource type="Theme" path="res://cards.tres" id="9_gwg6h"] +[ext_resource type="Texture2D" uid="uid://cjmxetjq82rl2" path="res://assets/card_base/Pip.png" id="10_kd76d"] +[ext_resource type="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="11_ofcpo"] +[ext_resource type="Texture2D" uid="uid://b0pclmv0j0r12" path="res://assets/card_base/kertas.png" id="12_dql2x"] +[ext_resource type="Texture2D" uid="uid://ch04c20lkis6j" path="res://assets/card_base/gunting.png" id="13_0vsuw"] +[ext_resource type="Texture2D" uid="uid://bywa8qlwvcksd" path="res://assets/card_base/batu.png" id="14_o8cdd"] + +[node name="SkipCard" type="Control"] +custom_minimum_size = Vector2(220, 320) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = -1700.0 +offset_bottom = -760.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(0.7, 0.7) +pivot_offset = Vector2(110, 160) +size_flags_vertical = 8 +script = ExtResource("1_ci66m") + +[node name="Frame" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("3_lbsr3") +expand_mode = 1 + +[node name="MarginContainer" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 4.0 +offset_top = 3.0 +offset_right = -5.0 +offset_bottom = -4.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="OuterStroke" type="NinePatchRect" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_avv1r") + +[node name="InnerFill" type="TextureRect" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 43.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("5_3yv36") +expand_mode = 1 + +[node name="InnerStroke" type="NinePatchRect" parent="MarginContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = 42.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_avv1r") + +[node name="TextureRect2" type="TextureRect" parent="MarginContainer"] +layout_mode = 0 +offset_left = 9.0 +offset_top = 77.0 +offset_right = 199.0 +offset_bottom = 207.0 +pivot_offset = Vector2(95, 65) +texture = ExtResource("6_cfl8c") +expand_mode = 1 +stretch_mode = 5 + +[node name="IconTextureRect" type="TextureRect" parent="MarginContainer/TextureRect2"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("7_5xgn0") +expand_mode = 1 +stretch_mode = 5 + +[node name="EnergyStarsContainer" type="HBoxContainer" parent="MarginContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 0 +offset_left = 141.0 +offset_top = 55.0 +offset_right = 200.0 +offset_bottom = 70.0 + +[node name="TextureRect3" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_gh78y") +expand_mode = 3 +stretch_mode = 5 + +[node name="TextureRect2" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_gh78y") +expand_mode = 3 +stretch_mode = 5 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +layout_mode = 2 +texture = ExtResource("8_gh78y") +expand_mode = 3 +stretch_mode = 5 + +[node name="HealthLabel" type="Label" parent="MarginContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 14.0 +offset_top = 44.0 +offset_right = -99.0 +offset_bottom = 80.0 +grow_horizontal = 2 +theme = ExtResource("9_gwg6h") +theme_override_font_sizes/font_size = 16 +text = "HP 80" +vertical_alignment = 1 + +[node name="MonsterNameLabel" type="Label" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 63.1429 +offset_top = 118.429 +offset_right = 58.1429 +offset_bottom = 154.429 +grow_horizontal = 2 +theme = ExtResource("9_gwg6h") +theme_override_font_sizes/font_size = 26 +text = "SKIP" +vertical_alignment = 1 + +[node name="CardNumber" type="TextureRect" parent="MarginContainer"] +visible = false +layout_mode = 0 +offset_left = 7.0 +offset_top = 17.0 +offset_right = 26.0 +offset_bottom = 36.0 +texture = ExtResource("10_kd76d") +expand_mode = 1 +stretch_mode = 5 + +[node name="Label" type="Label" parent="MarginContainer/CardNumber"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -9.5 +offset_top = -7.0 +offset_right = 9.5 +offset_bottom = 7.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("9_gwg6h") +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_fonts/font = ExtResource("11_ofcpo") +theme_override_font_sizes/font_size = 6 +text = "#01" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Paper" type="TextureRect" parent="MarginContainer"] +visible = false +layout_mode = 0 +offset_left = 109.0 +offset_top = 183.0 +offset_right = 222.0 +offset_bottom = 356.0 +texture = ExtResource("12_dql2x") +expand_mode = 1 +stretch_mode = 5 + +[node name="PaperDamage" type="Label" parent="MarginContainer/Paper"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 48.0 +offset_top = 32.0 +offset_right = -32.0 +offset_bottom = 73.0 +grow_horizontal = 2 +theme = ExtResource("9_gwg6h") +theme_override_font_sizes/font_size = 20 +text = "10" +vertical_alignment = 1 + +[node name="Scissors" type="TextureRect" parent="MarginContainer"] +visible = false +layout_mode = 0 +offset_left = 43.0 +offset_top = 182.0 +offset_right = 156.0 +offset_bottom = 355.0 +texture = ExtResource("13_0vsuw") +expand_mode = 1 +stretch_mode = 5 + +[node name="ScissorsDamage" type="Label" parent="MarginContainer/Scissors"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 48.0 +offset_top = 32.0 +offset_right = -32.0 +offset_bottom = 73.0 +grow_horizontal = 2 +theme = ExtResource("9_gwg6h") +theme_override_font_sizes/font_size = 20 +text = "10" +vertical_alignment = 1 + +[node name="Rock" type="TextureRect" parent="MarginContainer"] +visible = false +layout_mode = 0 +offset_left = -23.0 +offset_top = 181.0 +offset_right = 90.0 +offset_bottom = 354.0 +texture = ExtResource("14_o8cdd") +expand_mode = 1 +stretch_mode = 5 + +[node name="RockDamage" type="Label" parent="MarginContainer/Rock"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = 48.0 +offset_top = 32.0 +offset_right = -32.0 +offset_bottom = 73.0 +grow_horizontal = 2 +theme = ExtResource("9_gwg6h") +theme_override_font_sizes/font_size = 20 +text = "10" +vertical_alignment = 1 diff --git a/ui/card_template/support_card_green.tscn b/ui/card_template/support_card_green.tscn index 6bf7743..39569c0 100644 --- a/ui/card_template/support_card_green.tscn +++ b/ui/card_template/support_card_green.tscn @@ -6,16 +6,20 @@ [ext_resource type="Texture2D" uid="uid://crgrple0uik7x" path="res://assets/card_base/Stroke.png" id="3_qajq3"] [ext_resource type="Texture2D" uid="uid://blejyda8mendg" path="res://assets/card_base/InnerFill.png" id="4_pgomu"] [ext_resource type="Texture2D" uid="uid://by7ws88pn4tvb" path="res://assets/card_base/Separator.png" id="5_501uu"] +[ext_resource type="Texture2D" uid="uid://bwo6dfe1kpxhe" path="res://assets/support/insurance.png" id="6_bpwac"] [ext_resource type="Texture2D" uid="uid://0gxplli5krq2" path="res://assets/card_base/Pill.png" id="6_ce7hm"] -[ext_resource type="Theme" uid="uid://cj3vs5hq2mcbp" path="res://cards.tres" id="7_va1d7"] -[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="8_4yq42"] +[ext_resource type="Theme" uid="uid://is34t82g4jg" path="res://cards.tres" id="7_va1d7"] [ext_resource type="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="10_c2ugn"] [node name="CardBase" type="Control" node_paths=PackedStringArray("card_name_label", "card_desc_label", "icon_rect")] +custom_minimum_size = Vector2(220, 320) layout_mode = 3 anchors_preset = 0 offset_right = 220.0 offset_bottom = 320.0 +scale = Vector2(0.7, 0.7) +pivot_offset = Vector2(110, 160) +size_flags_vertical = 8 script = ExtResource("1_rpopv") card_name_label = NodePath("MarginContainer/Label") card_desc_label = NodePath("MarginContainer/DescriptionLabel") @@ -73,6 +77,17 @@ grow_vertical = 2 texture = ExtResource("4_pgomu") expand_mode = 1 +[node name="Icon" type="TextureRect" parent="MarginContainer"] +layout_mode = 0 +offset_left = 2.0 +offset_top = 63.0 +offset_right = 209.0 +offset_bottom = 203.0 +pivot_offset = Vector2(304.286, 120.143) +texture = ExtResource("6_bpwac") +expand_mode = 1 +stretch_mode = 6 + [node name="InnerStroke" type="NinePatchRect" parent="MarginContainer"] layout_mode = 1 anchors_preset = 15 @@ -143,16 +158,8 @@ text = "Green card" horizontal_alignment = 1 vertical_alignment = 1 -[node name="Icon" type="TextureRect" parent="MarginContainer"] -offset_left = 26.0 -offset_top = 74.0 -offset_right = 169.0 -offset_bottom = 179.0 -texture = ExtResource("8_4yq42") -expand_mode = 1 -stretch_mode = 6 - [node name="DescriptionLabel" type="Label" parent="MarginContainer"] +layout_mode = 0 offset_left = 11.0 offset_top = 224.0 offset_right = 200.0 diff --git a/ui/card_template/support_card_red.tscn b/ui/card_template/support_card_red.tscn index d06b8dc..60c9770 100644 --- a/ui/card_template/support_card_red.tscn +++ b/ui/card_template/support_card_red.tscn @@ -7,15 +7,19 @@ [ext_resource type="Texture2D" uid="uid://blejyda8mendg" path="res://assets/card_base/InnerFill.png" id="4_2fw8n"] [ext_resource type="Texture2D" uid="uid://by7ws88pn4tvb" path="res://assets/card_base/Separator.png" id="5_n3v14"] [ext_resource type="Texture2D" uid="uid://0gxplli5krq2" path="res://assets/card_base/Pill.png" id="6_wrd2a"] -[ext_resource type="Theme" uid="uid://cj3vs5hq2mcbp" path="res://cards.tres" id="7_fp6ys"] +[ext_resource type="Theme" uid="uid://is34t82g4jg" path="res://cards.tres" id="7_fp6ys"] [ext_resource type="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="9_vilw6"] [ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="10_2t0ey"] [node name="CardBase" type="Control" node_paths=PackedStringArray("card_name_label", "card_desc_label", "icon_rect")] +custom_minimum_size = Vector2(220, 320) layout_mode = 3 anchors_preset = 0 offset_right = 220.0 offset_bottom = 320.0 +scale = Vector2(0.7, 0.7) +pivot_offset = Vector2(110, 160) +size_flags_vertical = 8 script = ExtResource("1_d22a5") card_name_label = NodePath("MarginContainer/Title") card_desc_label = NodePath("MarginContainer/DescriptionLabel")