Compare commits
25 commits
sword_mast
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e8dc34646 | ||
|
|
83df3047f7 | ||
| 72a1418914 | |||
| e7c0782099 | |||
| 4d041be88d | |||
| 728d848e5b | |||
|
|
cd9f7c7679 | ||
|
|
7b6be434a8 | ||
| abd2feaab8 | |||
|
|
41a72709df | ||
| bd9b9a35d8 | |||
| 7903af9463 | |||
| 02ee129b42 | |||
|
|
0d261242b3 | ||
| a0475c8588 | |||
|
|
5395f971cb | ||
| 46e4ba0fbb | |||
| 3220f4937f | |||
|
|
64e79704bf | ||
|
|
ca9c7b8e50 | ||
| 064559130c | |||
| fc70d205b3 | |||
| 152ade51da | |||
|
|
3f99175dfe | ||
|
|
3141066258 |
88 changed files with 1516 additions and 235 deletions
BIN
assets/card_base/batu.png
(Stored with Git LFS)
BIN
assets/card_base/batu.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/card_base/gunting.png
(Stored with Git LFS)
BIN
assets/card_base/gunting.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/card_base/illust bg 1.png
(Stored with Git LFS)
Normal file
BIN
assets/card_base/illust bg 1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/card_base/illust bg 1.png.import
Normal file
34
assets/card_base/illust bg 1.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/card_base/kertas.png
(Stored with Git LFS)
BIN
assets/card_base/kertas.png
(Stored with Git LFS)
Binary file not shown.
BIN
assets/monster/Goldfish 2.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/Goldfish 2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/Goldfish 2.png.import
Normal file
34
assets/monster/Goldfish 2.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/axolotl 3.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/axolotl 3.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/axolotl 3.png.import
Normal file
34
assets/monster/axolotl 3.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/capybara 1.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/capybara 1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/capybara 1.png.import
Normal file
34
assets/monster/capybara 1.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/cat 3.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/cat 3.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/cat 3.png.import
Normal file
34
assets/monster/cat 3.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/duck 1.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/duck 1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/duck 1.png.import
Normal file
34
assets/monster/duck 1.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/jellyfish 2.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/jellyfish 2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/jellyfish 2.png.import
Normal file
34
assets/monster/jellyfish 2.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/penguing 2.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/penguing 2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/penguing 2.png.import
Normal file
34
assets/monster/penguing 2.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/rabbit 1.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/rabbit 1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/rabbit 1.png.import
Normal file
34
assets/monster/rabbit 1.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/monster/whale 2.png
(Stored with Git LFS)
Normal file
BIN
assets/monster/whale 2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/monster/whale 2.png.import
Normal file
34
assets/monster/whale 2.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/Invisibility.png
(Stored with Git LFS)
Normal file
BIN
assets/support/Invisibility.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/Invisibility.png.import
Normal file
34
assets/support/Invisibility.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/absorb.png
(Stored with Git LFS)
Normal file
BIN
assets/support/absorb.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/absorb.png.import
Normal file
34
assets/support/absorb.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/all out attack.png
(Stored with Git LFS)
Normal file
BIN
assets/support/all out attack.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/all out attack.png.import
Normal file
34
assets/support/all out attack.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/energy booster.png
(Stored with Git LFS)
Normal file
BIN
assets/support/energy booster.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/energy booster.png.import
Normal file
34
assets/support/energy booster.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/insurance.png
(Stored with Git LFS)
Normal file
BIN
assets/support/insurance.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/insurance.png.import
Normal file
34
assets/support/insurance.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/lifesteal.png
(Stored with Git LFS)
Normal file
BIN
assets/support/lifesteal.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/lifesteal.png.import
Normal file
34
assets/support/lifesteal.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/potion.png
(Stored with Git LFS)
Normal file
BIN
assets/support/potion.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/potion.png.import
Normal file
34
assets/support/potion.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/reflection.png
(Stored with Git LFS)
Normal file
BIN
assets/support/reflection.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/reflection.png.import
Normal file
34
assets/support/reflection.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/sword mastery.png
(Stored with Git LFS)
Normal file
BIN
assets/support/sword mastery.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/sword mastery.png.import
Normal file
34
assets/support/sword mastery.png.import
Normal file
|
|
@ -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
|
||||||
BIN
assets/support/tanker.png
(Stored with Git LFS)
Normal file
BIN
assets/support/tanker.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/support/tanker.png.import
Normal file
34
assets/support/tanker.png.import
Normal file
|
|
@ -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
|
||||||
|
|
@ -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"]
|
[ext_resource type="FontFile" uid="uid://ncoq4i61plvt" path="res://assets/Bohemian Soul.otf" id="1_yowck"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_s0p53"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
|
@ -12,4 +12,4 @@ energy_cost = 1
|
||||||
base_health = 120
|
base_health = 120
|
||||||
name = "Axoluna"
|
name = "Axoluna"
|
||||||
description = "Cute wanderer of the tank, Axoluna"
|
description = "Cute wanderer of the tank, Axoluna"
|
||||||
icon = ExtResource("1_dyw44")
|
icon = ExtResource("1_j0l6n")
|
||||||
|
|
|
||||||
|
|
@ -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="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]
|
[resource]
|
||||||
script = ExtResource("1_3jfyg")
|
script = ExtResource("1_3jfyg")
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 1
|
||||||
base_health = 50
|
base_health = 50
|
||||||
name = "Bunnaut"
|
name = "Bunnaut"
|
||||||
description = "Run faster than tortoise."
|
description = "Run faster than tortoise."
|
||||||
|
icon = ExtResource("1_xibsw")
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_n3oql"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 3
|
||||||
base_health = 170
|
base_health = 170
|
||||||
name = "Capytain"
|
name = "Capytain"
|
||||||
description = "A big, hungry capybara"
|
description = "A big, hungry capybara"
|
||||||
|
icon = ExtResource("1_mulam")
|
||||||
|
|
|
||||||
|
|
@ -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="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]
|
[resource]
|
||||||
script = ExtResource("1_hblhq")
|
script = ExtResource("1_hblhq")
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 3
|
||||||
base_health = 80
|
base_health = 80
|
||||||
name = "Cattogato"
|
name = "Cattogato"
|
||||||
description = "Lovely cat wandering in the space."
|
description = "Lovely cat wandering in the space."
|
||||||
|
icon = ExtResource("1_xles7")
|
||||||
|
|
|
||||||
|
|
@ -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="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]
|
[resource]
|
||||||
script = ExtResource("1_1j36c")
|
script = ExtResource("1_1j36c")
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 1
|
||||||
base_health = 120
|
base_health = 120
|
||||||
name = "Gilli"
|
name = "Gilli"
|
||||||
description = "There is a huge monster looking at me everyday."
|
description = "There is a huge monster looking at me everyday."
|
||||||
|
icon = ExtResource("1_62dnj")
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_yvmeg"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 2
|
||||||
base_health = 110
|
base_health = 110
|
||||||
name = "Jellova"
|
name = "Jellova"
|
||||||
description = "I'm gonna whip you till' you .. nevermind."
|
description = "I'm gonna whip you till' you .. nevermind."
|
||||||
|
icon = ExtResource("1_t6381")
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_xcdwy"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 2
|
||||||
base_health = 200
|
base_health = 200
|
||||||
name = "Orcava"
|
name = "Orcava"
|
||||||
description = "Human try to communicate with me. I simply block them."
|
description = "Human try to communicate with me. I simply block them."
|
||||||
|
icon = ExtResource("1_4dsvt")
|
||||||
|
|
|
||||||
|
|
@ -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="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]
|
[resource]
|
||||||
script = ExtResource("1_70s4q")
|
script = ExtResource("1_70s4q")
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 2
|
||||||
base_health = 100
|
base_health = 100
|
||||||
name = "Prankie"
|
name = "Prankie"
|
||||||
description = "I'm not pranking anyone. Yet."
|
description = "I'm not pranking anyone. Yet."
|
||||||
|
icon = ExtResource("1_75ppb")
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
[ext_resource type="Script" path="res://tcg/card/monster_card.gd" id="1_a8rjn"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
|
@ -11,3 +12,4 @@ energy_cost = 1
|
||||||
base_health = 70
|
base_health = 70
|
||||||
name = "Quackle"
|
name = "Quackle"
|
||||||
description = "Quack! Quack! No one notice me."
|
description = "Quack! Quack! No one notice me."
|
||||||
|
icon = ExtResource("1_4f7pv")
|
||||||
|
|
|
||||||
14
data/cards/support/absorb.tres
Normal file
14
data/cards/support/absorb.tres
Normal file
|
|
@ -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")
|
||||||
14
data/cards/support/all_out_attack.tres
Normal file
14
data/cards/support/all_out_attack.tres
Normal file
|
|
@ -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")
|
||||||
12
data/cards/support/attack_mode.tres
Normal file
12
data/cards/support/attack_mode.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/caller.tres
Normal file
12
data/cards/support/caller.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/cash_back.tres
Normal file
12
data/cards/support/cash_back.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/catcher.tres
Normal file
12
data/cards/support/catcher.tres
Normal file
|
|
@ -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."
|
||||||
14
data/cards/support/energy_booster.tres
Normal file
14
data/cards/support/energy_booster.tres
Normal file
|
|
@ -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")
|
||||||
14
data/cards/support/insurance.tres
Normal file
14
data/cards/support/insurance.tres
Normal file
|
|
@ -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")
|
||||||
14
data/cards/support/invisibility.tres
Normal file
14
data/cards/support/invisibility.tres
Normal file
|
|
@ -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")
|
||||||
14
data/cards/support/lifesteal.tres
Normal file
14
data/cards/support/lifesteal.tres
Normal file
|
|
@ -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")
|
||||||
13
data/cards/support/negate.tres
Normal file
13
data/cards/support/negate.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/paper.tres
Normal file
12
data/cards/support/paper.tres
Normal file
|
|
@ -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."
|
||||||
|
|
@ -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="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="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="Script" path="res://tcg/card/implemented_support_card.gd" id="3_at5nt"]
|
||||||
[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="3_kyx3v"]
|
[ext_resource type="Texture2D" uid="uid://48hblv72emyr" path="res://assets/support/potion.png" id="3_hk8kx"]
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_88lmk"]
|
[sub_resource type="Resource" id="Resource_88lmk"]
|
||||||
script = ExtResource("1_ujm0o")
|
script = ExtResource("1_ujm0o")
|
||||||
|
|
@ -11,10 +11,10 @@ magnitude = 30
|
||||||
effect = ExtResource("2_k1cnl")
|
effect = ExtResource("2_k1cnl")
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource("3_6r4k4")
|
script = ExtResource("3_at5nt")
|
||||||
|
scope = "turn"
|
||||||
type = "green"
|
type = "green"
|
||||||
priority = 0
|
|
||||||
effects = Array[ExtResource("1_ujm0o")]([SubResource("Resource_88lmk")])
|
effects = Array[ExtResource("1_ujm0o")]([SubResource("Resource_88lmk")])
|
||||||
name = "Potion"
|
name = "Potion"
|
||||||
description = "Heal 30 HP"
|
description = "Heal 30 HP"
|
||||||
icon = ExtResource("3_kyx3v")
|
icon = ExtResource("3_hk8kx")
|
||||||
|
|
|
||||||
14
data/cards/support/reflection.tres
Normal file
14
data/cards/support/reflection.tres
Normal file
|
|
@ -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")
|
||||||
12
data/cards/support/retreat.tres
Normal file
12
data/cards/support/retreat.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/reviver.tres
Normal file
12
data/cards/support/reviver.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/rock.tres
Normal file
12
data/cards/support/rock.tres
Normal file
|
|
@ -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."
|
||||||
12
data/cards/support/scissor.tres
Normal file
12
data/cards/support/scissor.tres
Normal file
|
|
@ -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."
|
||||||
20
data/cards/support/sword_mastery.tres
Normal file
20
data/cards/support/sword_mastery.tres
Normal file
|
|
@ -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")
|
||||||
14
data/cards/support/tanker.tres
Normal file
14
data/cards/support/tanker.tres
Normal file
|
|
@ -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")
|
||||||
6
data/support_effects/sword_mastery.tres
Normal file
6
data/support_effects/sword_mastery.tres
Normal file
|
|
@ -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")
|
||||||
22
demo_game.gd
22
demo_game.gd
|
|
@ -8,10 +8,12 @@ signal opponent_played_rts(move: String)
|
||||||
|
|
||||||
@export var player_1_deck: Array[Card]
|
@export var player_1_deck: Array[Card]
|
||||||
@export var player_2_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 own_side = $Own
|
||||||
@onready var opponent_side = $Opponent
|
@onready var opponent_side = $Opponent
|
||||||
@onready var start_game_btn = $StartGameButton
|
@onready var start_game_btn = $StartGameButton
|
||||||
|
@onready var win_lose_tie_label: Label = $"Win-Lose-Tie"
|
||||||
|
|
||||||
var id_to_card: Dictionary = {}
|
var id_to_card: Dictionary = {}
|
||||||
|
|
||||||
|
|
@ -30,6 +32,9 @@ var player_2_action: Action:
|
||||||
var id
|
var id
|
||||||
var signal_connected := false
|
var signal_connected := false
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
_update_phase_info(Match.Phase.PREGAME)
|
||||||
|
|
||||||
func init(player_id: int) -> void:
|
func init(player_id: int) -> void:
|
||||||
id = player_id
|
id = player_id
|
||||||
|
|
||||||
|
|
@ -44,6 +49,7 @@ func init(player_id: int) -> void:
|
||||||
if card.id not in id_to_card:
|
if card.id not in id_to_card:
|
||||||
id_to_card[card.id] = card
|
id_to_card[card.id] = card
|
||||||
|
|
||||||
|
print(match_manager.phase)
|
||||||
match_manager.init({
|
match_manager.init({
|
||||||
MatchManager.PLAYER_1_ID: player_1_deck,
|
MatchManager.PLAYER_1_ID: player_1_deck,
|
||||||
MatchManager.PLAYER_2_ID: player_2_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):
|
func _on_match_manager_state_transitioned(transition: PhaseTransition):
|
||||||
start_game_btn.visible = match_manager.phase == Match.Phase.PREGAME
|
start_game_btn.visible = match_manager.phase == Match.Phase.PREGAME
|
||||||
transition_history.append(transition)
|
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))
|
print("Phase: ", Match.phase_to_str(transition.from), " -> ", Match.phase_to_str(transition.to))
|
||||||
|
|
||||||
func _on_start_game_button_button_up() -> void:
|
func _on_start_game_button_button_up() -> void:
|
||||||
|
|
@ -113,3 +124,12 @@ func rpc_opponent_rps_move(move: String) -> void:
|
||||||
if player_1_action:
|
if player_1_action:
|
||||||
match_manager.resolve(player_action_queue)
|
match_manager.resolve(player_action_queue)
|
||||||
player_action_queue.clear()
|
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
|
||||||
|
|
|
||||||
163
demo_game.tscn
163
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://demo_game.gd" id="1_jn16u"]
|
||||||
[ext_resource type="Script" path="res://player_side.gd" id="2_w4tnt"]
|
[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://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://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://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="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://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="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="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"]
|
[node name="DemoGame" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
|
@ -20,10 +32,17 @@ anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_jn16u")
|
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_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("5_3cm5x"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk"), ExtResource("4_kkhfk"), ExtResource("3_we1tk")])
|
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
|
layout_mode = 1
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|
@ -37,6 +56,8 @@ skip_card_prefab = ExtResource("7_skjyk")
|
||||||
support_red_card_prefab = ExtResource("9_cabcc")
|
support_red_card_prefab = ExtResource("9_cabcc")
|
||||||
support_green_card_prefab = ExtResource("8_dytl5")
|
support_green_card_prefab = ExtResource("8_dytl5")
|
||||||
monster_card_prefab = ExtResource("7_4ah45")
|
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")]
|
[node name="MonsterCard" parent="Own" instance=ExtResource("7_4ah45")]
|
||||||
custom_minimum_size = Vector2(220, 330)
|
custom_minimum_size = Vector2(220, 330)
|
||||||
|
|
@ -95,19 +116,22 @@ layout_mode = 1
|
||||||
anchors_preset = 2
|
anchors_preset = 2
|
||||||
anchor_top = 1.0
|
anchor_top = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_top = -23.0
|
offset_top = -90.0
|
||||||
offset_right = 1152.0
|
offset_right = 1152.0
|
||||||
|
offset_bottom = -67.0
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "Energy:"
|
text = "Energy:"
|
||||||
|
|
||||||
[node name="Hand" type="HBoxContainer" parent="Own"]
|
[node name="Hand" type="HBoxContainer" parent="Own"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 12
|
anchors_preset = 7
|
||||||
|
anchor_left = 0.5
|
||||||
anchor_top = 1.0
|
anchor_top = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 0.5
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_top = -240.0
|
offset_left = -446.0
|
||||||
offset_bottom = 130.0
|
offset_top = -370.0
|
||||||
|
offset_right = 446.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
pivot_offset = Vector2(0, 150)
|
pivot_offset = Vector2(0, 150)
|
||||||
|
|
@ -130,13 +154,32 @@ layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -83.5
|
offset_left = 84.0
|
||||||
offset_top = 300.0
|
offset_top = 24.0
|
||||||
offset_right = 83.5
|
offset_right = 251.0
|
||||||
offset_bottom = 323.0
|
offset_bottom = 47.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
text = "Incoming Damage: 0"
|
text = "HP +0"
|
||||||
horizontal_alignment = 1
|
|
||||||
|
[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")]
|
[node name="Opponent" type="Control" parent="." node_paths=PackedStringArray("deck", "energy_label")]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
@ -218,18 +261,6 @@ offset_bottom = 31.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
alignment = 1
|
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"]
|
[node name="EnergyLabel" type="Label" parent="Opponent"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
offset_top = 35.0
|
offset_top = 35.0
|
||||||
|
|
@ -244,14 +275,13 @@ anchor_left = 0.5
|
||||||
anchor_top = 1.0
|
anchor_top = 1.0
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
offset_left = -83.5
|
offset_left = 84.0
|
||||||
offset_top = -325.0
|
offset_top = -52.0
|
||||||
offset_right = 83.5
|
offset_right = 251.0
|
||||||
offset_bottom = -302.0
|
offset_bottom = -29.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 0
|
grow_vertical = 0
|
||||||
text = "Incoming Damage: 0"
|
text = "HP +0"
|
||||||
horizontal_alignment = 1
|
|
||||||
|
|
||||||
[node name="StartGameButton" type="Button" parent="."]
|
[node name="StartGameButton" type="Button" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
@ -270,8 +300,75 @@ text = "Start Game"
|
||||||
|
|
||||||
[node name="MatchManager" parent="." instance=ExtResource("3_3yhrl")]
|
[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="play_card" from="Own" to="." method="_on_own_play_card"]
|
||||||
[connection signal="rps_move" from="Own" to="." method="_on_own_rps_move"]
|
[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="play_card" from="Opponent" to="." method="_on_opponent_play_card"]
|
||||||
[connection signal="rps_move" from="Opponent" to="." method="_on_opponent_rps_move"]
|
[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"]
|
[connection signal="button_up" from="StartGameButton" to="." method="_on_start_game_button_button_up"]
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://main.gd" id="1_e0ud3"]
|
[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="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"]
|
[node name="Main" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
|
|
||||||
120
player_side.gd
120
player_side.gd
|
|
@ -9,6 +9,8 @@ signal rps_move(move: String)
|
||||||
@export var support_red_card_prefab: PackedScene
|
@export var support_red_card_prefab: PackedScene
|
||||||
@export var support_green_card_prefab: PackedScene
|
@export var support_green_card_prefab: PackedScene
|
||||||
@export var monster_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 monster_card_ui := $"MonsterCard"
|
||||||
@onready var support1_green := $"Support1GreenCard"
|
@onready var support1_green := $"Support1GreenCard"
|
||||||
|
|
@ -20,6 +22,14 @@ var match_manager: MatchManager
|
||||||
var show_buttons: bool
|
var show_buttons: bool
|
||||||
var signal_connected: bool
|
var signal_connected: bool
|
||||||
var selected_card: Control
|
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):
|
func attach(match_manager: MatchManager, show_buttons: bool = true):
|
||||||
self.show_buttons = show_buttons
|
self.show_buttons = show_buttons
|
||||||
|
|
@ -33,11 +43,14 @@ func _ready():
|
||||||
support1_green.visible = false
|
support1_green.visible = false
|
||||||
support2_green.visible = false
|
support2_green.visible = false
|
||||||
support2_red.visible = false
|
support2_red.visible = false
|
||||||
|
incoming_damage_label.visible = false
|
||||||
for child in deck.get_children():
|
for child in deck.get_children():
|
||||||
child.queue_free()
|
child.queue_free()
|
||||||
|
|
||||||
func _on_update(transition):
|
func _on_update(transition):
|
||||||
|
hovering_cards_duration.clear()
|
||||||
selected_card = null
|
selected_card = null
|
||||||
|
incoming_damage_label.visible = true
|
||||||
|
|
||||||
for child in deck.get_children():
|
for child in deck.get_children():
|
||||||
child.queue_free()
|
child.queue_free()
|
||||||
|
|
@ -46,14 +59,14 @@ func _on_update(transition):
|
||||||
return
|
return
|
||||||
energy_label.text = "Energy: " + str(player.energy)
|
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.visible = true
|
||||||
support1_green.card = match_manager.support_cards_1[player]
|
support1_green.card = match_manager.players[player.id].active_support_cards[0]
|
||||||
else:
|
else:
|
||||||
support1_green.visible = false
|
support1_green.visible = false
|
||||||
|
|
||||||
if match_manager.support_cards_2.has(player):
|
if match_manager.players[player.id].active_support_cards.size() > 1:
|
||||||
var card: SupportCard = match_manager.support_cards_2[player]
|
var card: SupportCard = match_manager.players[player.id].active_support_cards[1]
|
||||||
if card.type == "green":
|
if card.type == "green":
|
||||||
support2_green.visible = true
|
support2_green.visible = true
|
||||||
support2_green.card = card
|
support2_green.card = card
|
||||||
|
|
@ -70,7 +83,8 @@ func _on_update(transition):
|
||||||
if monster:
|
if monster:
|
||||||
monster_card_ui.visible = true
|
monster_card_ui.visible = true
|
||||||
monster_card_ui.show_monster(monster)
|
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:
|
else:
|
||||||
monster_card_ui.visible = false
|
monster_card_ui.visible = false
|
||||||
if match_manager.phase in [Match.Phase.SUMMON, Match.Phase.SUPPORT_1, Match.Phase.SUPPORT_2]:
|
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 ():
|
skip_btn.left_clicked.connect(func ():
|
||||||
_pop_this_card(skip_btn)
|
_pop_this_card(skip_btn)
|
||||||
play_card.emit(null))
|
play_card.emit(null))
|
||||||
|
skip_btn.hovering.connect(func (delta): _do_hover(skip_btn, delta))
|
||||||
deck.add_child(skip_btn)
|
deck.add_child(skip_btn)
|
||||||
|
|
||||||
for card: Card in player.hand:
|
for card: Card in player.hand:
|
||||||
|
|
@ -111,11 +126,13 @@ func _on_update(transition):
|
||||||
if card is MonsterCard:
|
if card is MonsterCard:
|
||||||
var monster_card:MonsterCardUI = monster_card_prefab.instantiate()
|
var monster_card:MonsterCardUI = monster_card_prefab.instantiate()
|
||||||
monster_card.show_monster(MatchMonster.new(card, card.base_health, 0))
|
monster_card.show_monster(MatchMonster.new(card, card.base_health, 0))
|
||||||
|
|
||||||
if !is_disabled:
|
if !is_disabled:
|
||||||
monster_card.left_clicked.connect(func ():
|
monster_card.left_clicked.connect(func ():
|
||||||
_pop_this_card(monster_card)
|
_pop_this_card(monster_card)
|
||||||
play_card.emit(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)
|
deck.add_child(monster_card)
|
||||||
|
|
||||||
elif card is SupportCard and card.type == "red":
|
elif card is SupportCard and card.type == "red":
|
||||||
|
|
@ -131,21 +148,92 @@ func _on_update(transition):
|
||||||
btn.left_clicked.connect(func ():
|
btn.left_clicked.connect(func ():
|
||||||
_pop_this_card(btn)
|
_pop_this_card(btn)
|
||||||
play_card.emit(card))
|
play_card.emit(card))
|
||||||
|
btn.hovering.connect(func (delta): _do_hover(btn, delta))
|
||||||
|
btn.right_clicked.connect(func(): _do_zoom(btn))
|
||||||
|
btn.un_right_clicked.connect(_do_unzoom)
|
||||||
|
|
||||||
if match_manager.phase == Match.Phase.RPS:
|
if rps_button_container:
|
||||||
for move in ["rock", "paper", "scissors"]:
|
rps_button_container.visible = match_manager.phase == Match.Phase.RPS
|
||||||
|
for button: TextureButton in rps_button_container.get_children():
|
||||||
|
button.modulate = rps_grayed_color
|
||||||
|
|
||||||
if !show_buttons:
|
func _do_zoom(card: Control):
|
||||||
continue
|
if focused_card:
|
||||||
|
_do_unzoom()
|
||||||
|
|
||||||
var btn = Button.new()
|
var new_card: Control = card.duplicate()
|
||||||
btn.text = move
|
get_parent().add_child(new_card)
|
||||||
btn.button_up.connect(func (): rps_move.emit(move))
|
new_card.set_anchors_and_offsets_preset(Control.PRESET_CENTER)
|
||||||
deck.add_child(btn)
|
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):
|
func _pop_this_card(control: Control):
|
||||||
if selected_card:
|
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 = 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
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ extends Resource
|
||||||
class_name Card
|
class_name Card
|
||||||
|
|
||||||
@export var name: String
|
@export var name: String
|
||||||
@export var description: String
|
@export_multiline var description: String
|
||||||
@export var icon: Texture2D
|
@export var icon: Texture2D
|
||||||
|
|
||||||
var id: String:
|
var id: String:
|
||||||
|
|
|
||||||
4
tcg/card/implemented_support_card.gd
Normal file
4
tcg/card/implemented_support_card.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
extends SupportCard
|
||||||
|
class_name ImplementedSupportCard
|
||||||
|
|
||||||
|
@export_enum("instant", "turn", "monster", "match") var scope = "instant"
|
||||||
|
|
@ -2,5 +2,4 @@ extends Card
|
||||||
class_name SupportCard
|
class_name SupportCard
|
||||||
|
|
||||||
@export_enum("red", "green") var type = "green"
|
@export_enum("red", "green") var type = "green"
|
||||||
@export var priority: int = 0
|
|
||||||
@export var effects: Array[SupportCardEffectInstance] = [null]
|
@export var effects: Array[SupportCardEffectInstance] = [null]
|
||||||
|
|
|
||||||
7
tcg/match/event/event_game_ended.gd
Normal file
7
tcg/match/event/event_game_ended.gd
Normal file
|
|
@ -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
|
||||||
|
|
@ -22,9 +22,6 @@ var player_2: MatchPlayer:
|
||||||
return players[actual_p2_id] as MatchPlayer
|
return players[actual_p2_id] as MatchPlayer
|
||||||
var phase: Match.Phase = Match.Phase.PREGAME
|
var phase: Match.Phase = Match.Phase.PREGAME
|
||||||
|
|
||||||
var support_cards_1: Dictionary = {}
|
|
||||||
var support_cards_2: Dictionary = {}
|
|
||||||
|
|
||||||
var actual_p1_id: int
|
var actual_p1_id: int
|
||||||
var actual_p2_id: int
|
var actual_p2_id: int
|
||||||
|
|
||||||
|
|
@ -38,17 +35,15 @@ func init(decks: Dictionary, actual_p1_id: int, actual_p2_id: int):
|
||||||
cleanup()
|
cleanup()
|
||||||
for player_id in [PLAYER_1_ID, PLAYER_2_ID]:
|
for player_id in [PLAYER_1_ID, PLAYER_2_ID]:
|
||||||
var deck_shuffled = decks[player_id].duplicate() as Array[Card]
|
var deck_shuffled = decks[player_id].duplicate() as Array[Card]
|
||||||
|
deck_shuffled.shuffle()
|
||||||
var first_monster = deck_shuffled.filter(func(card): return card is MonsterCard)[0]
|
var first_monster = deck_shuffled.filter(func(card): return card is MonsterCard)[0]
|
||||||
var first_monster_idx = deck_shuffled.find(first_monster)
|
var first_monster_idx = deck_shuffled.find(first_monster)
|
||||||
deck_shuffled.pop_at(first_monster_idx)
|
deck_shuffled.pop_at(first_monster_idx)
|
||||||
var zero_idx_card = deck_shuffled.pop_at(0)
|
deck_shuffled.push_back(first_monster)
|
||||||
deck_shuffled.insert(0, first_monster)
|
|
||||||
deck_shuffled.insert(first_monster_idx, zero_idx_card)
|
|
||||||
|
|
||||||
deck_shuffled.shuffle()
|
|
||||||
players[player_id] = MatchPlayer.new(player_id, deck_shuffled)
|
players[player_id] = MatchPlayer.new(player_id, deck_shuffled)
|
||||||
|
|
||||||
|
|
||||||
func cleanup():
|
func cleanup():
|
||||||
for player_id in [PLAYER_1_ID, PLAYER_2_ID]:
|
for player_id in [PLAYER_1_ID, PLAYER_2_ID]:
|
||||||
var existing = players.get(player_id)
|
var existing = players.get(player_id)
|
||||||
|
|
@ -75,8 +70,6 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition:
|
||||||
)
|
)
|
||||||
phase = Match.Phase.SUMMON
|
phase = Match.Phase.SUMMON
|
||||||
Match.Phase.SUMMON:
|
Match.Phase.SUMMON:
|
||||||
support_cards_1.clear()
|
|
||||||
support_cards_2.clear()
|
|
||||||
|
|
||||||
for player_id in action_by_player_id.keys():
|
for player_id in action_by_player_id.keys():
|
||||||
var action = action_by_player_id[player_id]
|
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].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)
|
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))
|
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):
|
if players.values().all(func(player: MatchPlayer): return player.monster):
|
||||||
phase = Match.Phase.SUPPORT_1
|
phase = Match.Phase.SUPPORT_1
|
||||||
Match.Phase.SUPPORT_1:
|
Match.Phase.SUPPORT_1:
|
||||||
support_cards_1.clear()
|
|
||||||
support_cards_2.clear()
|
|
||||||
|
|
||||||
var support_cards = []
|
var support_cards = []
|
||||||
if player_1_action is ActionPlayCard:
|
if player_1_action is ActionPlayCard:
|
||||||
support_cards.append({
|
support_cards.append({
|
||||||
"player": player_1,
|
"player": player_1,
|
||||||
"card": player_1_action.card
|
"card": player_1_action.card
|
||||||
})
|
})
|
||||||
support_cards_1[player_1] = player_1_action.card
|
|
||||||
player_1.hand.erase(player_1_action.card)
|
player_1.hand.erase(player_1_action.card)
|
||||||
if player_2_action is ActionPlayCard:
|
if player_2_action is ActionPlayCard:
|
||||||
support_cards.append({
|
support_cards.append({
|
||||||
"player": player_2,
|
"player": player_2,
|
||||||
"card": player_2_action.card
|
"card": player_2_action.card
|
||||||
})
|
})
|
||||||
support_cards_1[player_2] = player_2_action.card
|
|
||||||
player_2.hand.erase(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:
|
for played_card in support_cards:
|
||||||
var player: MatchPlayer = played_card.player
|
var player: MatchPlayer = played_card.player
|
||||||
var card: SupportCard = played_card.card
|
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
|
phase = Match.Phase.RPS
|
||||||
Match.Phase.RPS:
|
Match.Phase.RPS:
|
||||||
|
var damage_pairs = []
|
||||||
var tie = player_1_action.move == player_2_action.move
|
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_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
|
var player_2_win = rps_wins[player_2_action.move] == player_1_action.move
|
||||||
if tie or player_1_win:
|
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:
|
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
|
phase = Match.Phase.SUPPORT_2
|
||||||
Match.Phase.SUPPORT_2:
|
Match.Phase.SUPPORT_2:
|
||||||
var support_cards = []
|
var support_cards = []
|
||||||
|
|
@ -129,35 +133,46 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition:
|
||||||
"player": player_1,
|
"player": player_1,
|
||||||
"card": player_1_action.card
|
"card": player_1_action.card
|
||||||
})
|
})
|
||||||
support_cards_2[player_1] = player_1_action.card
|
|
||||||
player_1.hand.erase(player_1_action.card)
|
player_1.hand.erase(player_1_action.card)
|
||||||
if player_2_action is ActionPlayCard:
|
if player_2_action is ActionPlayCard:
|
||||||
support_cards.append({
|
support_cards.append({
|
||||||
"player": player_2,
|
"player": player_2,
|
||||||
"card": player_2_action.card
|
"card": player_2_action.card
|
||||||
})
|
})
|
||||||
support_cards_2[player_2] = player_2_action.card
|
|
||||||
player_2.hand.erase(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:
|
for played_card in support_cards:
|
||||||
var player: MatchPlayer = played_card.player
|
var player: MatchPlayer = played_card.player
|
||||||
var card: SupportCard = played_card.card
|
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():
|
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
|
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:
|
if monster_final_health <= 0:
|
||||||
player.monster = null
|
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))
|
events.append(EventMonsterDied.new(player.id))
|
||||||
else:
|
else:
|
||||||
player.monster.health += player.monster.health_delta
|
player.monster.health = monster_final_health
|
||||||
player.monster.health_delta = 0
|
player.monster.health_delta = 0
|
||||||
var drawn_card = player.deck.pop_back()
|
var drawn_card = player.deck.pop_back()
|
||||||
if drawn_card:
|
if drawn_card:
|
||||||
player.hand.append(drawn_card)
|
player.hand.append(drawn_card)
|
||||||
events.append(EventCardDrawn.new(player.id, drawn_card))
|
events.append(EventCardDrawn.new(player.id, drawn_card))
|
||||||
|
|
||||||
|
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 = 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:
|
if players_without_monster.size() == 0:
|
||||||
phase = Match.Phase.SUPPORT_1
|
phase = Match.Phase.SUPPORT_1
|
||||||
elif players_without_monster.all(
|
elif players_without_monster.all(
|
||||||
|
|
@ -165,7 +180,11 @@ func resolve(action_by_player_id: Dictionary) -> PhaseTransition:
|
||||||
):
|
):
|
||||||
phase = Match.Phase.SUMMON
|
phase = Match.Phase.SUMMON
|
||||||
else:
|
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
|
phase = Match.Phase.END
|
||||||
|
events.append(EventGameEnded.new(winner_id))
|
||||||
_:
|
_:
|
||||||
pass
|
pass
|
||||||
var transition = PhaseTransition.new(events, initial_phase, phase)
|
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:
|
func _monster_from_card(card: MonsterCard) -> MatchMonster:
|
||||||
return MatchMonster.new(card, card.base_health, 0)
|
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]
|
var events: Array[Event]
|
||||||
for effect_instance in card.effects:
|
if card is ImplementedSupportCard:
|
||||||
var effect = effect_instance.effect
|
match card.id:
|
||||||
var magnitude = effect_instance.magnitude
|
"potion":
|
||||||
match effect.id:
|
player.monster.health_delta += 20
|
||||||
"heal":
|
"energy_booster":
|
||||||
player.monster.health_delta += magnitude
|
player.energy += 1
|
||||||
events.append(EventSupportEffectApplied.new(player.id, effect_instance))
|
# events.append(Event)
|
||||||
"sword_mastery":
|
|
||||||
player.active_support_cards.append(card)
|
|
||||||
events.append(EventSupportEffectApplied.new(player.id, effect_instance))
|
|
||||||
return events
|
return events
|
||||||
|
|
||||||
func _resolve_damage_delta(player: MatchPlayer):
|
func _player_has_active_support_card(player: MatchPlayer, card_id: String) -> bool:
|
||||||
var final_delta: int = 0
|
return player.active_support_cards.any(func (card): return card.id == card_id)
|
||||||
for card in player.active_support_cards:
|
|
||||||
match card.id:
|
func _player_opponent(player: MatchPlayer) -> MatchPlayer:
|
||||||
"sword_mastery":
|
return player_2 if player.id == PLAYER_1_ID else player_1
|
||||||
final_delta += card.magnitude
|
|
||||||
return final_delta
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ class_name CardBase
|
||||||
|
|
||||||
signal left_clicked
|
signal left_clicked
|
||||||
signal right_clicked
|
signal right_clicked
|
||||||
|
signal un_right_clicked
|
||||||
signal hovering(delta: float)
|
signal hovering(delta: float)
|
||||||
|
|
||||||
@export var card_name_label: Label
|
@export var card_name_label: Label
|
||||||
|
|
@ -25,20 +26,17 @@ func _update(card: SupportCard):
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
var mouse_position = get_global_mouse_position()
|
var mouse_position = get_global_mouse_position()
|
||||||
var rect = get_global_rect()
|
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)
|
hovering.emit(delta)
|
||||||
|
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if !event.is_pressed():
|
|
||||||
return
|
|
||||||
|
|
||||||
var mouse_position = get_global_mouse_position()
|
var mouse_position = get_global_mouse_position()
|
||||||
var rect = get_global_rect()
|
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()
|
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()
|
right_clicked.emit()
|
||||||
|
elif event.button_index == MOUSE_BUTTON_RIGHT and !event.is_pressed():
|
||||||
|
un_right_clicked.emit()
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ class_name MonsterCardUI
|
||||||
|
|
||||||
signal left_clicked
|
signal left_clicked
|
||||||
signal right_clicked
|
signal right_clicked
|
||||||
|
signal un_right_clicked
|
||||||
signal hovering(delta: float)
|
signal hovering(delta: float)
|
||||||
|
|
||||||
@export var name_label : Label
|
@export var name_label : Label
|
||||||
|
|
@ -21,7 +22,7 @@ func show_monster(monster: MatchMonster):
|
||||||
return
|
return
|
||||||
|
|
||||||
name_label.text = monster.card.id
|
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
|
icon_texture_rect.texture = monster.card.icon
|
||||||
|
|
||||||
paper_damage.text = str(monster.card.paper)
|
paper_damage.text = str(monster.card.paper)
|
||||||
|
|
@ -37,20 +38,17 @@ func show_monster(monster: MatchMonster):
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
var mouse_position = get_global_mouse_position()
|
var mouse_position = get_global_mouse_position()
|
||||||
var rect = get_global_rect()
|
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)
|
hovering.emit(delta)
|
||||||
|
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if !event.is_pressed():
|
|
||||||
return
|
|
||||||
|
|
||||||
var mouse_position = get_global_mouse_position()
|
var mouse_position = get_global_mouse_position()
|
||||||
var rect = get_global_rect()
|
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()
|
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()
|
right_clicked.emit()
|
||||||
|
elif event.button_index == MOUSE_BUTTON_RIGHT and !event.is_pressed():
|
||||||
|
un_right_clicked.emit()
|
||||||
|
|
|
||||||
|
|
@ -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="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://l2nxxhh0pvh8" path="res://assets/card_base/Frame.png" id="2_lhxdu"]
|
||||||
[ext_resource type="Texture2D" uid="uid://crgrple0uik7x" path="res://assets/card_base/Stroke.png" id="4_kkcc6"]
|
[ext_resource type="Texture2D" uid="uid://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://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://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="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="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="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="11_oy107"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bywa8qlwvcksd" path="res://assets/card_base/batu.png" id="12_a4kkh"]
|
[ext_resource type="Texture2D" uid="uid://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")
|
health_label = NodePath("MarginContainer/HealthLabel")
|
||||||
energy_pip_container = NodePath("MarginContainer/EnergyStarsContainer")
|
energy_pip_container = NodePath("MarginContainer/EnergyStarsContainer")
|
||||||
icon_texture_rect = NodePath("MarginContainer/TextureRect2/IconTextureRect")
|
icon_texture_rect = NodePath("MarginContainer/TextureRect2/IconTextureRect")
|
||||||
paper_damage = NodePath("MarginContainer/Paper/PaperDamage")
|
paper_damage = NodePath("MarginContainer/HBoxContainer/Rock2/PaperLabel")
|
||||||
scissors_damage = NodePath("MarginContainer/Scissors/ScissorsDamage")
|
scissors_damage = NodePath("MarginContainer/HBoxContainer/Rock3/ScissorsLabel")
|
||||||
rock_damage = NodePath("MarginContainer/Rock/RockDamage")
|
rock_damage = NodePath("MarginContainer/HBoxContainer/Rock/RockLabel")
|
||||||
|
|
||||||
[node name="Screenshot2025-01-25211435" type="Sprite2D" parent="."]
|
|
||||||
visible = false
|
|
||||||
position = Vector2(355, 157)
|
|
||||||
scale = Vector2(0.625, 0.625)
|
|
||||||
texture = ExtResource("1_nvo50")
|
|
||||||
|
|
||||||
[node name="Frame" type="TextureRect" parent="."]
|
[node name="Frame" type="TextureRect" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
@ -121,12 +114,13 @@ stretch_mode = 5
|
||||||
[node name="EnergyStarsContainer" type="HBoxContainer" parent="MarginContainer"]
|
[node name="EnergyStarsContainer" type="HBoxContainer" parent="MarginContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 141.0
|
offset_left = 100.0
|
||||||
offset_top = 55.0
|
offset_top = 54.0
|
||||||
offset_right = 200.0
|
offset_right = 197.0
|
||||||
offset_bottom = 70.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
|
layout_mode = 2
|
||||||
texture = ExtResource("8_ophhb")
|
texture = ExtResource("8_ophhb")
|
||||||
expand_mode = 3
|
expand_mode = 3
|
||||||
|
|
@ -138,7 +132,19 @@ texture = ExtResource("8_ophhb")
|
||||||
expand_mode = 3
|
expand_mode = 3
|
||||||
stretch_mode = 5
|
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
|
layout_mode = 2
|
||||||
texture = ExtResource("8_ophhb")
|
texture = ExtResource("8_ophhb")
|
||||||
expand_mode = 3
|
expand_mode = 3
|
||||||
|
|
@ -156,7 +162,7 @@ offset_bottom = 80.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
theme = ExtResource("9_6x2vq")
|
theme = ExtResource("9_6x2vq")
|
||||||
theme_override_font_sizes/font_size = 16
|
theme_override_font_sizes/font_size = 16
|
||||||
text = "HP 80"
|
text = "HP 80/100"
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="MonsterNameLabel" type="Label" parent="MarginContainer"]
|
[node name="MonsterNameLabel" type="Label" parent="MarginContainer"]
|
||||||
|
|
@ -185,6 +191,7 @@ expand_mode = 1
|
||||||
stretch_mode = 5
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="MarginContainer/CardNumber"]
|
[node name="Label" type="Label" parent="MarginContainer/CardNumber"]
|
||||||
|
visible = false
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 8
|
anchors_preset = 8
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
|
|
@ -205,77 +212,110 @@ text = "#01"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="Paper" type="TextureRect" parent="MarginContainer"]
|
[node name="HBoxContainer" type="HBoxContainer" 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
|
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 10
|
anchors_preset = 7
|
||||||
anchor_right = 1.0
|
anchor_left = 0.5
|
||||||
offset_left = 48.0
|
anchor_top = 1.0
|
||||||
offset_top = 32.0
|
anchor_right = 0.5
|
||||||
offset_right = -32.0
|
anchor_bottom = 1.0
|
||||||
offset_bottom = 73.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
|
grow_horizontal = 2
|
||||||
theme = ExtResource("9_6x2vq")
|
theme = ExtResource("9_6x2vq")
|
||||||
theme_override_font_sizes/font_size = 20
|
theme_override_font_sizes/font_size = 24
|
||||||
text = "10"
|
text = "100"
|
||||||
vertical_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 2
|
||||||
|
|
||||||
[node name="Scissors" type="TextureRect" parent="MarginContainer"]
|
[node name="Rock" type="TextureRect" parent="MarginContainer/HBoxContainer/Rock"]
|
||||||
layout_mode = 0
|
layout_mode = 2
|
||||||
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
|
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
offset_left = 48.0
|
anchor_bottom = 1.0
|
||||||
offset_top = 32.0
|
offset_top = 30.0
|
||||||
offset_right = -32.0
|
|
||||||
offset_bottom = 73.0
|
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
theme = ExtResource("9_6x2vq")
|
grow_vertical = 2
|
||||||
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
|
|
||||||
texture = ExtResource("12_a4kkh")
|
texture = ExtResource("12_a4kkh")
|
||||||
expand_mode = 1
|
expand_mode = 1
|
||||||
stretch_mode = 5
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="RockDamage" type="Label" parent="MarginContainer/Rock"]
|
[node name="Rock2" type="Control" parent="MarginContainer/HBoxContainer"]
|
||||||
unique_name_in_owner = true
|
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
|
layout_mode = 1
|
||||||
anchors_preset = 10
|
anchors_preset = 5
|
||||||
anchor_right = 1.0
|
anchor_left = 0.5
|
||||||
offset_left = 48.0
|
anchor_right = 0.5
|
||||||
offset_top = 32.0
|
offset_left = -32.0
|
||||||
offset_right = -32.0
|
offset_right = 32.0
|
||||||
offset_bottom = 73.0
|
offset_bottom = 26.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
theme = ExtResource("9_6x2vq")
|
theme = ExtResource("9_6x2vq")
|
||||||
theme_override_font_sizes/font_size = 20
|
theme_override_font_sizes/font_size = 24
|
||||||
text = "10"
|
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
|
||||||
|
|
|
||||||
|
|
@ -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://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://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://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="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="Theme" uid="uid://is34t82g4jg" 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="FontFile" uid="uid://08q3kkwmd4u6" path="res://assets/Inter-Regular.otf" id="10_c2ugn"]
|
[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")]
|
[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")
|
texture = ExtResource("4_pgomu")
|
||||||
expand_mode = 1
|
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"]
|
[node name="InnerStroke" type="NinePatchRect" parent="MarginContainer"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
@ -147,16 +158,6 @@ text = "Green card"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_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"]
|
[node name="DescriptionLabel" type="Label" parent="MarginContainer"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_left = 11.0
|
offset_left = 11.0
|
||||||
|
|
|
||||||
|
|
@ -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://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://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="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="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"]
|
[ext_resource type="Texture2D" uid="uid://rh3aswb0p7ri" path="res://assets/energy.png" id="10_2t0ey"]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue