diff --git a/assets/card_base/batu.png b/assets/card_base/batu.png index 7899aa9..8d1dc40 100644 --- a/assets/card_base/batu.png +++ b/assets/card_base/batu.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3ebc26aaf3c87de9ce48e9a4f9e22db8944b9c304f9dbda9cf21c3636f013e9 -size 24379 +oid sha256:3073496f2b5cb651d0d6d03351a6f8392a23924d01472ab5d175ef150667e17e +size 25869 diff --git a/assets/card_base/gunting.png b/assets/card_base/gunting.png index 553ae4d..c069201 100644 --- a/assets/card_base/gunting.png +++ b/assets/card_base/gunting.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5679d2d3e778ec2d3142eaf0f5603b3a144e87f7f26e1e2d78974462db69f75 -size 33308 +oid sha256:4d14202c9b5043bdf561e8b9e6e899b0d964eed347f5d7fdb71cb5f6286a1561 +size 24283 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 index 6507ea0..c49b7e1 100644 --- a/assets/card_base/kertas.png +++ b/assets/card_base/kertas.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3aa28478cb7241ff59fe191f1aca345eccd60d8a9cb8f9c1058874b3fc0606ff -size 17766 +oid sha256:52a0024d95f80cda1eea5a8dcdf7cd9f2204f73409ce8ae4999f75dfd402f3a3 +size 20378 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/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 e5f7591..6222ae9 100644 --- a/cards.tres +++ b/cards.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=2 format=3 uid="uid://qe383ytjm3v"] +[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 index 1743622..a6f88da 100644 --- a/data/cards/monster/axoluna.tres +++ b/data/cards/monster/axoluna.tres @@ -1,6 +1,6 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://deo8mj887rfx1"] +[gd_resource type="Resource" script_class="MonsterCard" load_steps=3 format=3 uid="uid://di76avwc0gn8e"] -[ext_resource type="Texture2D" uid="uid://b8accn4e2ojau" path="res://assets/monster/froggo 1.png" id="1_dyw44"] +[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] @@ -12,4 +12,4 @@ energy_cost = 1 base_health = 120 name = "Axoluna" description = "Cute wanderer of the tank, Axoluna" -icon = ExtResource("1_dyw44") +icon = ExtResource("1_j0l6n") diff --git a/data/cards/monster/bunnaut.tres b/data/cards/monster/bunnaut.tres index 6d478e3..a70008a 100644 --- a/data/cards/monster/bunnaut.tres +++ b/data/cards/monster/bunnaut.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://tgju8eodyuk1"] +[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") @@ -11,3 +12,4 @@ 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 index d11bf4d..712ab1e 100644 --- a/data/cards/monster/capytain.tres +++ b/data/cards/monster/capytain.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://cs7q8i7bvohmj"] +[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] @@ -11,3 +12,4 @@ 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 index 7fee1c0..7b4e72c 100644 --- a/data/cards/monster/cattogato.tres +++ b/data/cards/monster/cattogato.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://bmst884k0myvd"] +[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") @@ -11,3 +12,4 @@ 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/gilli.tres b/data/cards/monster/gilli.tres index 30da6af..fe574ca 100644 --- a/data/cards/monster/gilli.tres +++ b/data/cards/monster/gilli.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://myxgsyerrdla"] +[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") @@ -11,3 +12,4 @@ 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 index df0e747..ef9567f 100644 --- a/data/cards/monster/jellova.tres +++ b/data/cards/monster/jellova.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://425ipxdapg8o"] +[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] @@ -11,3 +12,4 @@ 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 index b1c212e..b45cafd 100644 --- a/data/cards/monster/orcava.tres +++ b/data/cards/monster/orcava.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://cakkx0o8mifmn"] +[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] @@ -11,3 +12,4 @@ 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 index 5cea32c..4d64b66 100644 --- a/data/cards/monster/prankie.tres +++ b/data/cards/monster/prankie.tres @@ -1,6 +1,7 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://shri5ne51s74"] +[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") @@ -11,3 +12,4 @@ 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 index f774842..0fe4658 100644 --- a/data/cards/monster/quackle.tres +++ b/data/cards/monster/quackle.tres @@ -1,5 +1,6 @@ -[gd_resource type="Resource" script_class="MonsterCard" load_steps=2 format=3 uid="uid://dnf3gpji5prlr"] +[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] @@ -11,3 +12,4 @@ energy_cost = 1 base_health = 70 name = "Quackle" description = "Quack! Quack! No one notice me." +icon = ExtResource("1_4f7pv") 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 fdf9321..b3d2308 100644 --- a/demo_game.gd +++ b/demo_game.gd @@ -8,10 +8,12 @@ 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 = {} @@ -30,6 +32,9 @@ var player_2_action: Action: var id var signal_connected := false +func _ready() -> void: + _update_phase_info(Match.Phase.PREGAME) + func init(player_id: int) -> void: id = player_id @@ -44,6 +49,7 @@ 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 @@ -59,6 +65,11 @@ 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: @@ -113,3 +124,12 @@ func rpc_opponent_rps_move(move: String) -> void: 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 d4c8e2d..b4261af 100644 --- a/demo_game.tscn +++ b/demo_game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 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"] @@ -7,10 +7,22 @@ [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://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 @@ -20,10 +32,17 @@ 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="Control" parent="." node_paths=PackedStringArray("deck", "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 anchor_top = 0.5 anchor_right = 1.0 @@ -37,6 +56,8 @@ 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="MonsterCard" parent="Own" instance=ExtResource("7_4ah45")] custom_minimum_size = Vector2(220, 330) @@ -95,19 +116,22 @@ layout_mode = 1 anchors_preset = 2 anchor_top = 1.0 anchor_bottom = 1.0 -offset_top = -23.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 = 1 -anchors_preset = 12 +anchors_preset = 7 +anchor_left = 0.5 anchor_top = 1.0 -anchor_right = 1.0 +anchor_right = 0.5 anchor_bottom = 1.0 -offset_top = -240.0 -offset_bottom = 130.0 +offset_left = -446.0 +offset_top = -370.0 +offset_right = 446.0 grow_horizontal = 2 grow_vertical = 0 pivot_offset = Vector2(0, 150) @@ -130,13 +154,32 @@ layout_mode = 1 anchors_preset = 5 anchor_left = 0.5 anchor_right = 0.5 -offset_left = -83.5 -offset_top = 300.0 -offset_right = 83.5 -offset_bottom = 323.0 +offset_left = 84.0 +offset_top = 24.0 +offset_right = 251.0 +offset_bottom = 47.0 grow_horizontal = 2 -text = "Incoming Damage: 0" -horizontal_alignment = 1 +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 @@ -218,18 +261,6 @@ 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 @@ -244,14 +275,13 @@ anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 -offset_left = -83.5 -offset_top = -325.0 -offset_right = 83.5 -offset_bottom = -302.0 +offset_left = 84.0 +offset_top = -52.0 +offset_right = 251.0 +offset_bottom = -29.0 grow_horizontal = 2 grow_vertical = 0 -text = "Incoming Damage: 0" -horizontal_alignment = 1 +text = "HP +0" [node name="StartGameButton" type="Button" parent="."] layout_mode = 1 @@ -270,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/main.tscn b/main.tscn index e0e520e..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 diff --git a/player_side.gd b/player_side.gd index 5bfcd9e..5a88280 100644 --- a/player_side.gd +++ b/player_side.gd @@ -9,6 +9,8 @@ signal rps_move(move: String) @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" @@ -20,6 +22,14 @@ 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 @@ -33,11 +43,14 @@ func _ready(): 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() @@ -46,14 +59,14 @@ func _on_update(transition): return energy_label.text = "Energy: " + str(player.energy) - if match_manager.support_cards_1.has(player): + if match_manager.players[player.id].active_support_cards.size() > 0: support1_green.visible = true - support1_green.card = match_manager.support_cards_1[player] + support1_green.card = match_manager.players[player.id].active_support_cards[0] else: support1_green.visible = false - if match_manager.support_cards_2.has(player): - var card: SupportCard = match_manager.support_cards_2[player] + 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 @@ -70,7 +83,8 @@ func _on_update(transition): if monster: monster_card_ui.visible = true monster_card_ui.show_monster(monster) - incoming_damage_label.text = "Incoming Damage: " + str(monster.health_delta) + 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]: @@ -84,6 +98,7 @@ func _on_update(transition): 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: @@ -111,11 +126,13 @@ func _on_update(transition): 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": @@ -131,21 +148,92 @@ func _on_update(transition): btn.left_clicked.connect(func (): _pop_this_card(btn) play_card.emit(card)) - - 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) + 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.size_flags_vertical = Control.SIZE_SHRINK_END + selected_card.position = Vector2(selected_card.position.x, original_hover_position) - control.size_flags_vertical = Control.SIZE_SHRINK_BEGIN 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/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/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 1bff5e2..9a25959 100644 --- a/tcg/match/match_manager.gd +++ b/tcg/match/match_manager.gd @@ -22,9 +22,6 @@ var player_2: MatchPlayer: return players[actual_p2_id] as MatchPlayer var phase: Match.Phase = Match.Phase.PREGAME -var support_cards_1: Dictionary = {} -var support_cards_2: Dictionary = {} - var actual_p1_id: int var actual_p2_id: int @@ -38,17 +35,15 @@ func init(decks: Dictionary, actual_p1_id: int, actual_p2_id: int): 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) @@ -75,8 +70,6 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: ) phase = Match.Phase.SUMMON Match.Phase.SUMMON: - support_cards_1.clear() - support_cards_2.clear() for player_id in action_by_player_id.keys(): var action = action_by_player_id[player_id] @@ -86,41 +79,52 @@ 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: - support_cards_1.clear() - support_cards_2.clear() - var support_cards = [] if player_1_action is ActionPlayCard: support_cards.append({ "player": player_1, "card": player_1_action.card }) - support_cards_1[player_1] = player_1_action.card player_1.hand.erase(player_1_action.card) if player_2_action is ActionPlayCard: support_cards.append({ "player": player_2, "card": player_2_action.card }) - support_cards_1[player_2] = 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] + _resolve_damage_delta(player_1) + 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] + _resolve_damage_delta(player_2) + 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 = [] @@ -129,43 +133,58 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition: "player": player_1, "card": player_1_action.card }) - support_cards_2[player_1] = player_1_action.card player_1.hand.erase(player_1_action.card) if player_2_action is ActionPlayCard: support_cards.append({ "player": player_2, "card": player_2_action.card }) - support_cards_2[player_2] = 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 - player.active_support_cards = [] + 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) @@ -175,24 +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)) - "sword_mastery": - player.active_support_cards.append(card) - 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 _resolve_damage_delta(player: MatchPlayer): - var final_delta: int = 0 - for card in player.active_support_cards: - match card.id: - "sword_mastery": - final_delta += card.magnitude - return final_delta +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/ui/card_template/card_base.gd b/ui/card_template/card_base.gd index 96bc2d1..2e623c6 100644 --- a/ui/card_template/card_base.gd +++ b/ui/card_template/card_base.gd @@ -3,6 +3,7 @@ class_name CardBase signal left_clicked signal right_clicked +signal un_right_clicked signal hovering(delta: float) @export var card_name_label: Label @@ -25,20 +26,17 @@ func _update(card: SupportCard): func _process(delta): var mouse_position = get_global_mouse_position() var rect = get_global_rect() - if rect.has_point(mouse_position): + if rect.has_point(mouse_position) and get_window().has_focus(): hovering.emit(delta) func _input(event): if event is InputEventMouseButton: - if !event.is_pressed(): - return - var mouse_position = get_global_mouse_position() var rect = get_global_rect() - if not rect.has_point(mouse_position): - return - if event.button_index == MOUSE_BUTTON_LEFT: + 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 event.button_index == MOUSE_BUTTON_RIGHT: + 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 index 4e72542..1c154f6 100644 --- a/ui/card_template/monster_card.gd +++ b/ui/card_template/monster_card.gd @@ -3,6 +3,7 @@ class_name MonsterCardUI signal left_clicked signal right_clicked +signal un_right_clicked signal hovering(delta: float) @export var name_label : Label @@ -21,7 +22,7 @@ func show_monster(monster: MatchMonster): return name_label.text = monster.card.id - health_label.text = "HP %d" % [monster.health] + 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) @@ -37,20 +38,17 @@ func show_monster(monster: MatchMonster): func _process(delta): var mouse_position = get_global_mouse_position() var rect = get_global_rect() - if rect.has_point(mouse_position): + if rect.has_point(mouse_position) and get_window().has_focus(): hovering.emit(delta) func _input(event): if event is InputEventMouseButton: - if !event.is_pressed(): - return - var mouse_position = get_global_mouse_position() var rect = get_global_rect() - if not rect.has_point(mouse_position): - return - if event.button_index == MOUSE_BUTTON_LEFT: + 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 event.button_index == MOUSE_BUTTON_RIGHT: + 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 9d8a797..d373404 100644 --- a/ui/card_template/monster_card.tscn +++ b/ui/card_template/monster_card.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=15 format=3 uid="uid://bhrelvt51cbp2"] +[gd_scene load_steps=14 format=3 uid="uid://bhrelvt51cbp2"] -[ext_resource type="Texture2D" uid="uid://cqladcrximh6" path="res://assets/card_base/Screenshot 2025-01-25 211435.png" id="1_nvo50"] [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"] @@ -8,7 +7,7 @@ [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" path="res://cards.tres" id="9_6x2vq"] +[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"] @@ -33,15 +32,9 @@ 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/Paper/PaperDamage") -scissors_damage = NodePath("MarginContainer/Scissors/ScissorsDamage") -rock_damage = NodePath("MarginContainer/Rock/RockDamage") - -[node name="Screenshot2025-01-25211435" type="Sprite2D" parent="."] -visible = false -position = Vector2(355, 157) -scale = Vector2(0.625, 0.625) -texture = ExtResource("1_nvo50") +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 @@ -121,12 +114,13 @@ stretch_mode = 5 [node name="EnergyStarsContainer" type="HBoxContainer" parent="MarginContainer"] unique_name_in_owner = true layout_mode = 0 -offset_left = 141.0 -offset_top = 55.0 -offset_right = 200.0 -offset_bottom = 70.0 +offset_left = 100.0 +offset_top = 54.0 +offset_right = 197.0 +offset_bottom = 69.0 +alignment = 2 -[node name="TextureRect3" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] layout_mode = 2 texture = ExtResource("8_ophhb") expand_mode = 3 @@ -138,7 +132,19 @@ texture = ExtResource("8_ophhb") expand_mode = 3 stretch_mode = 5 -[node name="TextureRect" type="TextureRect" parent="MarginContainer/EnergyStarsContainer"] +[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 @@ -156,7 +162,7 @@ offset_bottom = 80.0 grow_horizontal = 2 theme = ExtResource("9_6x2vq") theme_override_font_sizes/font_size = 16 -text = "HP 80" +text = "HP 80/100" vertical_alignment = 1 [node name="MonsterNameLabel" type="Label" parent="MarginContainer"] @@ -185,6 +191,7 @@ 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 @@ -205,77 +212,110 @@ text = "#01" horizontal_alignment = 1 vertical_alignment = 1 -[node name="Paper" type="TextureRect" parent="MarginContainer"] -layout_mode = 0 -offset_left = 109.0 -offset_top = 183.0 -offset_right = 222.0 -offset_bottom = 356.0 -texture = ExtResource("14_gm7k7") -expand_mode = 1 -stretch_mode = 5 - -[node name="PaperDamage" type="Label" parent="MarginContainer/Paper"] -unique_name_in_owner = true +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] 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 +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 = 20 -text = "10" -vertical_alignment = 1 +theme_override_font_sizes/font_size = 24 +text = "100" +horizontal_alignment = 1 +vertical_alignment = 2 -[node name="Scissors" type="TextureRect" parent="MarginContainer"] -layout_mode = 0 -offset_left = 43.0 -offset_top = 182.0 -offset_right = 156.0 -offset_bottom = 355.0 -texture = ExtResource("13_ifoc6") -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 +[node name="Rock" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock"] +layout_mode = 2 anchor_right = 1.0 -offset_left = 48.0 -offset_top = 32.0 -offset_right = -32.0 -offset_bottom = 73.0 +anchor_bottom = 1.0 +offset_top = 30.0 grow_horizontal = 2 -theme = ExtResource("9_6x2vq") -theme_override_font_sizes/font_size = 20 -text = "10" -vertical_alignment = 1 - -[node name="Rock" type="TextureRect" parent="MarginContainer"] -layout_mode = 0 -offset_left = -23.0 -offset_top = 181.0 -offset_right = 90.0 -offset_bottom = 354.0 +grow_vertical = 2 texture = ExtResource("12_a4kkh") expand_mode = 1 stretch_mode = 5 -[node name="RockDamage" type="Label" parent="MarginContainer/Rock"] -unique_name_in_owner = true +[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 = 10 -anchor_right = 1.0 -offset_left = 48.0 -offset_top = 32.0 -offset_right = -32.0 -offset_bottom = 73.0 +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 = 20 +theme_override_font_sizes/font_size = 24 text = "10" -vertical_alignment = 1 +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/support_card_green.tscn b/ui/card_template/support_card_green.tscn index a367d4b..39569c0 100644 --- a/ui/card_template/support_card_green.tscn +++ b/ui/card_template/support_card_green.tscn @@ -6,9 +6,9 @@ [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" 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")] @@ -77,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 @@ -147,16 +158,6 @@ text = "Green card" horizontal_alignment = 1 vertical_alignment = 1 -[node name="Icon" type="TextureRect" parent="MarginContainer"] -layout_mode = 0 -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 diff --git a/ui/card_template/support_card_red.tscn b/ui/card_template/support_card_red.tscn index c84cdc5..60c9770 100644 --- a/ui/card_template/support_card_red.tscn +++ b/ui/card_template/support_card_red.tscn @@ -7,7 +7,7 @@ [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" 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"]