diff --git a/.gut_editor_config.json b/.gut_editor_config.json index 21cb8ad1..5e7d6722 100644 --- a/.gut_editor_config.json +++ b/.gut_editor_config.json @@ -15,7 +15,7 @@ "hide_orphans": false, "ignore_pause": true, "include_subdirs": false, - "inner_class": null, + "inner_class": "TestDreamFragment", "junit_xml_file": "", "junit_xml_timestamp": false, "log_level": 3, @@ -23,7 +23,7 @@ "post_run_script": "", "pre_run_script": "", "prefix": "test_", - "selected": "test_underwater_cave.gd", + "selected": "test_perturbations.gd", "should_exit": false, "should_exit_on_success": false, "should_maximize": true, diff --git a/README.md b/README.md index 52139b62..43184e51 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,11 @@ Hypnagonia is a 'spire-like' deckbuilder card game where you take the part of a dreamer captured in a nightmare realm in their recurring dreams and struggling to overcome their own issues to break out of this loop. -This an early release and the balance will be off. A very basic skeleton of encounters and a boss have been added, so it should be possible to make a complete run with what is there. +This an early release and the balance will be off. The User Interface still could use a lot of polish, but the game is playable end to end. -Feel free to [download or play online](https://dbzer0.itch.io/hypnagonia) +Hypnagonia attempts to seamlessy marry card game mechanics with AI generated content in illustrations and story. As such, a lot of what you will see and read has been automatically generated through artificial intelligence and some part of it might seem "off". This of course perfectly fits the surrealism theme of this game. + +Feel free to [download or play online](https://dbzer0.itch.io/hypnagonia), but browser version is not very performant. ## Story @@ -19,11 +21,11 @@ In every game you start, you represent someone who has been captured in the pull Your Dreamer represents the character guiding to have a breakthrough. Before you start the game, you choose the aspects of their personality, which will affect how they interact with the nightmare realm. As with all dreams, the manifestations of these aspects tend towards the surreal. -As part of your quest for your personal breakthrough, you will be enountering enemies (called "Torments") which are a mental manifestation of the things that caused your dreamer to be having these nightmares in the first place. +As part of your quest for your personal breakthrough, you will be enountering Torments (i.e. "enemies") which are a mental manifestation of the things that caused your dreamer to be having these nightmares in the first place. You short objective when facing a torment is to "interpret" it and therefore help you find meaning in your dreams. On the other hand, the torments you're facing will be causing you stress, as aspects of your real life problems are bleeding into your dreams. Accumulate enough Anxiety, and your dreamer will wake up in cold-sweats, and you'll have failed that run. -The game follows the typical gameplay of a deckbuilder. You draw 5 cards per turn, and you use them to deal with the current situation. Any cards you didn't use will be discarded, and you'll draw 5 new ones at the end of your turn. You will also have the capacity to draft new cards whenever you complete an Toroments encounter. +The game follows the typical gameplay of an StS-style deckbuilder. You draw 5 cards per turn, and you use them to deal with the current situation. Any cards you didn't use will be discarded, and you'll draw 5 new ones at the end of your turn. You will also have the capacity to draft new cards whenever you complete an Toroments encounter. ## Basic Terminology @@ -32,12 +34,11 @@ The game follows the typical gameplay of a deckbuilder. You draw 5 cards per tur * Interpret: The act of defeating the Torments. If a Torment's Interpretation reaches its max, it will be overcome. Overcome all of them to progress to the next encounter. * Anxiety/Stress: Interacting with your deeper fears is never a pleasant thing. The Torments you're facing will regularly be inducing stress to you, raising your Anxiety. If your Anxiety ever reaches the max amount, you will wake up from the dreams without achieving your breakthrough -Most other terms you'll encounter will be explained when mousing over cards or icons. +All other terms you'll encounter will be explained when mousing over cards or icons. ## Roadmap * Fancier card layout -* Card art * More Archetype Groups * More Enemies * More Encounters @@ -45,8 +46,7 @@ Most other terms you'll encounter will be explained when mousing over cards or i * More Bosses * Waking-world sections between runs * Campaign with Legacy elements -* Increased difficulties -* Balancing +* Better Balancing * More Curios See the issue tracker for progress and more ideas and feel free to suggest more. @@ -54,8 +54,8 @@ See the issue tracker for progress and more ideas and feel free to suggest more. ## Done * Three unique acts with different encounters and torments in each. -* 200+ cards -* 7 card pool groups +* 220+ cards +* 8 card pool groups * 50+ Curios * 25+ Memories * Shop @@ -63,6 +63,8 @@ See the issue tracker for progress and more ideas and feel free to suggest more. * Elite Torments * Surprise Ordeals * Pathos information display +* Increased difficulties +* Card art ## Credits @@ -72,11 +74,13 @@ Major influences from [Slay the Spire](https://www.megacrit.com/) and other deck [Lorenzo Andreozzi](https://tornioduva.itch.io/) for the card layout +See the credits inside the game for full list. + ## License Everything except Assets and Shaders is licensed under the AGPL3. However [an addendum](ADDENDUM1) has been added to allow distribution via Steam and integration with Steamworks SDK. -Assets and Shaders will list their individual licenses in their respective folders or code. +Assets and Shaders will list their individual licenses in their respective folders or code, but they're mostly CC-BY-SA 4.0 ## Help @@ -103,12 +107,10 @@ If you wish to support the development of this game, consider becoming a patron We're always on the lookout for more people to bring our vision to life. We're actively looking for +* UX Designer: The game suffers from some serious "programmer frontend" syndrome. We could use some polish on the way the GUI is represented * Lead Writer: Lead the campaign design and the main storyline -* Writers: Provide stories for encounters, and ideas for personal quests -* Lead Artist: Lead the overall look of the game's art -* Illustration Artists: We have hundreds of cards needing illustrations * Character Artists: We have dozens of Torments which will be displayed on the screen. Some animation would help -* GUI Designer: The game suffers from some serious "programmer art" syndrome. +* AI Writers: Provide prompts for the AI to generate interesting stories We have people doing the following, but we can always use more help: @@ -126,4 +128,5 @@ If any of these interest you, please contact us on [matrix](https://matrix.to/#/ ![Hypnagonia Screenshot 3](preview3.jpg "Hypnagonia Screenshot 3") ![Hypnagonia Screenshot 4](preview4.jpg "Hypnagonia Screenshot 4") ![Hypnagonia Screenshot 5](preview5.jpg "Hypnagonia Screenshot 5") +![Hypnagonia Screenshot 6](preview6.jpg "Hypnagonia Screenshot 6") ![Hypnagonia Card List Screenshot](preview_cards.jpg "Hypnagonia Card List Screenshot") diff --git a/addons/gut/icon.png.import b/addons/gut/icon.png.import index 848473e4..3f2dabea 100644 --- a/addons/gut/icon.png.import +++ b/addons/gut/icon.png.import @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/asset_lib_icon.png.import b/asset_lib_icon.png.import index 9701946b..4ab629dd 100644 --- a/asset_lib_icon.png.import +++ b/asset_lib_icon.png.import @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/assets/cards/Lotustus.png b/assets/cards/Lotustus.png new file mode 100644 index 00000000..5fe4d9a4 Binary files /dev/null and b/assets/cards/Lotustus.png differ diff --git a/assets/cards/Lotustus.png.import b/assets/cards/Lotustus.png.import new file mode 100644 index 00000000..0ac11bb4 --- /dev/null +++ b/assets/cards/Lotustus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Lotustus.png-ae8b5a6df0d3203c8644c70bb7440dd2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/cards/Lotustus.png" +dest_files=[ "res://.import/Lotustus.png-ae8b5a6df0d3203c8644c70bb7440dd2.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/enemies/Leviathan.png b/assets/enemies/Leviathan.png new file mode 100644 index 00000000..21755c83 Binary files /dev/null and b/assets/enemies/Leviathan.png differ diff --git a/assets/enemies/Leviathan.png.import b/assets/enemies/Leviathan.png.import new file mode 100644 index 00000000..dba68b73 --- /dev/null +++ b/assets/enemies/Leviathan.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Leviathan.png-2eebead7f617f6e47e31118f53a369d6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/enemies/Leviathan.png" +dest_files=[ "res://.import/Leviathan.png-2eebead7f617f6e47e31118f53a369d6.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/enemies/Lotustus.png b/assets/enemies/Lotustus.png new file mode 100644 index 00000000..773004e1 Binary files /dev/null and b/assets/enemies/Lotustus.png differ diff --git a/assets/enemies/Lotustus.png.import b/assets/enemies/Lotustus.png.import new file mode 100644 index 00000000..2ca8da2c --- /dev/null +++ b/assets/enemies/Lotustus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Lotustus.png-77728c77d1e76fac50a63ed9193de0ab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/enemies/Lotustus.png" +dest_files=[ "res://.import/Lotustus.png-77728c77d1e76fac50a63ed9193de0ab.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/GUI/plushie_icon/1.png b/assets/icons/GUI/plushie_icon/1.png new file mode 100644 index 00000000..da2f67e2 Binary files /dev/null and b/assets/icons/GUI/plushie_icon/1.png differ diff --git a/assets/icons/GUI/plushie_icon/1.png.import b/assets/icons/GUI/plushie_icon/1.png.import new file mode 100644 index 00000000..b6315164 --- /dev/null +++ b/assets/icons/GUI/plushie_icon/1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/1.png-eb87ab62c5c833529769f6f2b8027324.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/GUI/plushie_icon/1.png" +dest_files=[ "res://.import/1.png-eb87ab62c5c833529769f6f2b8027324.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/GUI/plushie_icon/2.png b/assets/icons/GUI/plushie_icon/2.png new file mode 100644 index 00000000..c35eda80 Binary files /dev/null and b/assets/icons/GUI/plushie_icon/2.png differ diff --git a/assets/icons/GUI/plushie_icon/2.png.import b/assets/icons/GUI/plushie_icon/2.png.import new file mode 100644 index 00000000..ef2fd3ab --- /dev/null +++ b/assets/icons/GUI/plushie_icon/2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2.png-8ebaf05aad08b4714e53318814b37fd1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/GUI/plushie_icon/2.png" +dest_files=[ "res://.import/2.png-8ebaf05aad08b4714e53318814b37fd1.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/GUI/plushie_icon/3.png b/assets/icons/GUI/plushie_icon/3.png new file mode 100644 index 00000000..0dcaa28d Binary files /dev/null and b/assets/icons/GUI/plushie_icon/3.png differ diff --git a/assets/icons/GUI/plushie_icon/3.png.import b/assets/icons/GUI/plushie_icon/3.png.import new file mode 100644 index 00000000..e156fd0b --- /dev/null +++ b/assets/icons/GUI/plushie_icon/3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/3.png-b8fe289239858709f5ace109636bde37.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/GUI/plushie_icon/3.png" +dest_files=[ "res://.import/3.png-b8fe289239858709f5ace109636bde37.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/GUI/plushie_icon/4.png b/assets/icons/GUI/plushie_icon/4.png new file mode 100644 index 00000000..97608a52 Binary files /dev/null and b/assets/icons/GUI/plushie_icon/4.png differ diff --git a/assets/icons/GUI/plushie_icon/4.png.import b/assets/icons/GUI/plushie_icon/4.png.import new file mode 100644 index 00000000..dd86879a --- /dev/null +++ b/assets/icons/GUI/plushie_icon/4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/4.png-4d96efdad43a507417e4b1e399a4d6c3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/GUI/plushie_icon/4.png" +dest_files=[ "res://.import/4.png-4d96efdad43a507417e4b1e399a4d6c3.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/GUI/plushie_icon/5.png b/assets/icons/GUI/plushie_icon/5.png new file mode 100644 index 00000000..351fe5d7 Binary files /dev/null and b/assets/icons/GUI/plushie_icon/5.png differ diff --git a/assets/icons/GUI/plushie_icon/5.png.import b/assets/icons/GUI/plushie_icon/5.png.import new file mode 100644 index 00000000..f4ef7b10 --- /dev/null +++ b/assets/icons/GUI/plushie_icon/5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/5.png-33ce7a8f02dbefce80750df9229365b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/GUI/plushie_icon/5.png" +dest_files=[ "res://.import/5.png-33ce7a8f02dbefce80750df9229365b9.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Abacus.png b/assets/icons/plushies/Abacus.png new file mode 100644 index 00000000..033767dd Binary files /dev/null and b/assets/icons/plushies/Abacus.png differ diff --git a/assets/tutorial/shop/curios.png.import b/assets/icons/plushies/Abacus.png.import similarity index 71% rename from assets/tutorial/shop/curios.png.import rename to assets/icons/plushies/Abacus.png.import index 5b99d9d4..ca70ca98 100644 --- a/assets/tutorial/shop/curios.png.import +++ b/assets/icons/plushies/Abacus.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/curios.png-384fc8d2aecc854ddd025996ef72ed2e.stex" +path="res://.import/Abacus.png-cd682c2000669a135417be1c69db55b9.stex" metadata={ "vram_texture": false } [deps] -source_file="res://assets/tutorial/shop/curios.png" -dest_files=[ "res://.import/curios.png-384fc8d2aecc854ddd025996ef72ed2e.stex" ] +source_file="res://assets/icons/plushies/Abacus.png" +dest_files=[ "res://.import/Abacus.png-cd682c2000669a135417be1c69db55b9.stex" ] [params] diff --git a/assets/icons/plushies/Alfa.png b/assets/icons/plushies/Alfa.png new file mode 100644 index 00000000..bcc5ec05 Binary files /dev/null and b/assets/icons/plushies/Alfa.png differ diff --git a/assets/icons/plushies/Alfa.png.import b/assets/icons/plushies/Alfa.png.import new file mode 100644 index 00000000..21cd05ba --- /dev/null +++ b/assets/icons/plushies/Alfa.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Alfa.png-afc16e615f08e445e0427aab4c0d4d1f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Alfa.png" +dest_files=[ "res://.import/Alfa.png-afc16e615f08e445e0427aab4c0d4d1f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Anguilla.png b/assets/icons/plushies/Anguilla.png new file mode 100644 index 00000000..bcb9a0a3 Binary files /dev/null and b/assets/icons/plushies/Anguilla.png differ diff --git a/assets/icons/plushies/Anguilla.png.import b/assets/icons/plushies/Anguilla.png.import new file mode 100644 index 00000000..175f03f5 --- /dev/null +++ b/assets/icons/plushies/Anguilla.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Anguilla.png-b60cfc5aa837a44b2927d92f20df61e9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Anguilla.png" +dest_files=[ "res://.import/Anguilla.png-b60cfc5aa837a44b2927d92f20df61e9.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Arimus.png b/assets/icons/plushies/Arimus.png new file mode 100644 index 00000000..bf3312c6 Binary files /dev/null and b/assets/icons/plushies/Arimus.png differ diff --git a/assets/icons/plushies/Arimus.png.import b/assets/icons/plushies/Arimus.png.import new file mode 100644 index 00000000..3159f09a --- /dev/null +++ b/assets/icons/plushies/Arimus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Arimus.png-5fbbe0376138d47a90bc629a1d2c4b93.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Arimus.png" +dest_files=[ "res://.import/Arimus.png-5fbbe0376138d47a90bc629a1d2c4b93.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Ataraxia.png b/assets/icons/plushies/Ataraxia.png new file mode 100644 index 00000000..f7820df6 Binary files /dev/null and b/assets/icons/plushies/Ataraxia.png differ diff --git a/assets/icons/plushies/Ataraxia.png.import b/assets/icons/plushies/Ataraxia.png.import new file mode 100644 index 00000000..c78e4d32 --- /dev/null +++ b/assets/icons/plushies/Ataraxia.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Ataraxia.png-c90c1667ccfe291c6e765ee535b1063d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Ataraxia.png" +dest_files=[ "res://.import/Ataraxia.png-c90c1667ccfe291c6e765ee535b1063d.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Athene.png b/assets/icons/plushies/Athene.png new file mode 100644 index 00000000..389005a8 Binary files /dev/null and b/assets/icons/plushies/Athene.png differ diff --git a/assets/icons/plushies/Athene.png.import b/assets/icons/plushies/Athene.png.import new file mode 100644 index 00000000..146fe11b --- /dev/null +++ b/assets/icons/plushies/Athene.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Athene.png-a3937b3e770b8db90c33c22e5f4f8c65.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Athene.png" +dest_files=[ "res://.import/Athene.png-a3937b3e770b8db90c33c22e5f4f8c65.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Azure.png b/assets/icons/plushies/Azure.png new file mode 100644 index 00000000..0dde8b79 Binary files /dev/null and b/assets/icons/plushies/Azure.png differ diff --git a/assets/icons/plushies/Azure.png.import b/assets/icons/plushies/Azure.png.import new file mode 100644 index 00000000..71445269 --- /dev/null +++ b/assets/icons/plushies/Azure.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Azure.png-6a92892fd906ee8d3f8a2a55bfa1054e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Azure.png" +dest_files=[ "res://.import/Azure.png-6a92892fd906ee8d3f8a2a55bfa1054e.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Bagsy.png b/assets/icons/plushies/Bagsy.png new file mode 100644 index 00000000..b96a5631 Binary files /dev/null and b/assets/icons/plushies/Bagsy.png differ diff --git a/assets/icons/plushies/Bagsy.png.import b/assets/icons/plushies/Bagsy.png.import new file mode 100644 index 00000000..366b29a0 --- /dev/null +++ b/assets/icons/plushies/Bagsy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Bagsy.png-d3916557a3b4be94c488895a3c1b7327.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Bagsy.png" +dest_files=[ "res://.import/Bagsy.png-d3916557a3b4be94c488895a3c1b7327.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Beear.png b/assets/icons/plushies/Beear.png new file mode 100644 index 00000000..edbf0b99 Binary files /dev/null and b/assets/icons/plushies/Beear.png differ diff --git a/assets/icons/plushies/Beear.png.import b/assets/icons/plushies/Beear.png.import new file mode 100644 index 00000000..e1d79b56 --- /dev/null +++ b/assets/icons/plushies/Beear.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Beear.png-a59b4bb8f54c1480f59e8378416d4e4d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Beear.png" +dest_files=[ "res://.import/Beear.png-a59b4bb8f54c1480f59e8378416d4e4d.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Beezly.png b/assets/icons/plushies/Beezly.png new file mode 100644 index 00000000..f6cc67d8 Binary files /dev/null and b/assets/icons/plushies/Beezly.png differ diff --git a/assets/icons/plushies/Beezly.png.import b/assets/icons/plushies/Beezly.png.import new file mode 100644 index 00000000..7295f4b0 --- /dev/null +++ b/assets/icons/plushies/Beezly.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Beezly.png-5cc5e1b3f94665469a503c9991e8abdc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Beezly.png" +dest_files=[ "res://.import/Beezly.png-5cc5e1b3f94665469a503c9991e8abdc.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Bokus.png b/assets/icons/plushies/Bokus.png new file mode 100644 index 00000000..a577457e Binary files /dev/null and b/assets/icons/plushies/Bokus.png differ diff --git a/assets/icons/plushies/Bokus.png.import b/assets/icons/plushies/Bokus.png.import new file mode 100644 index 00000000..a89f1f88 --- /dev/null +++ b/assets/icons/plushies/Bokus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Bokus.png-d8a69ade5028496b6408f3f9ff3e169b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Bokus.png" +dest_files=[ "res://.import/Bokus.png-d8a69ade5028496b6408f3f9ff3e169b.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Brains.png b/assets/icons/plushies/Brains.png new file mode 100644 index 00000000..b5afce43 Binary files /dev/null and b/assets/icons/plushies/Brains.png differ diff --git a/assets/icons/plushies/Brains.png.import b/assets/icons/plushies/Brains.png.import new file mode 100644 index 00000000..0ca267b3 --- /dev/null +++ b/assets/icons/plushies/Brains.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Brains.png-7050c2485f7d1fd788c6902c86f9eb41.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Brains.png" +dest_files=[ "res://.import/Brains.png-7050c2485f7d1fd788c6902c86f9eb41.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Buddhy.png b/assets/icons/plushies/Buddhy.png new file mode 100644 index 00000000..fd0f6197 Binary files /dev/null and b/assets/icons/plushies/Buddhy.png differ diff --git a/assets/icons/plushies/Buddhy.png.import b/assets/icons/plushies/Buddhy.png.import new file mode 100644 index 00000000..e77a211a --- /dev/null +++ b/assets/icons/plushies/Buddhy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Buddhy.png-20ba9d66647450775afcc6617cf4763f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Buddhy.png" +dest_files=[ "res://.import/Buddhy.png-20ba9d66647450775afcc6617cf4763f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Burglar.png b/assets/icons/plushies/Burglar.png new file mode 100644 index 00000000..76383bd6 Binary files /dev/null and b/assets/icons/plushies/Burglar.png differ diff --git a/assets/icons/plushies/Burglar.png.import b/assets/icons/plushies/Burglar.png.import new file mode 100644 index 00000000..56bdef05 --- /dev/null +++ b/assets/icons/plushies/Burglar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Burglar.png-a7df2504fc8893d8d46fccbcc3d5b3f3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Burglar.png" +dest_files=[ "res://.import/Burglar.png-a7df2504fc8893d8d46fccbcc3d5b3f3.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Cappuccino.png b/assets/icons/plushies/Cappuccino.png new file mode 100644 index 00000000..e743a00c Binary files /dev/null and b/assets/icons/plushies/Cappuccino.png differ diff --git a/assets/icons/plushies/Cappuccino.png.import b/assets/icons/plushies/Cappuccino.png.import new file mode 100644 index 00000000..22c7331b --- /dev/null +++ b/assets/icons/plushies/Cappuccino.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Cappuccino.png-d00f30771aaccac4b4bf04e17b6036cc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Cappuccino.png" +dest_files=[ "res://.import/Cappuccino.png-d00f30771aaccac4b4bf04e17b6036cc.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Cirrus.png b/assets/icons/plushies/Cirrus.png new file mode 100644 index 00000000..14552ebe Binary files /dev/null and b/assets/icons/plushies/Cirrus.png differ diff --git a/assets/icons/plushies/Cirrus.png.import b/assets/icons/plushies/Cirrus.png.import new file mode 100644 index 00000000..ab54d289 --- /dev/null +++ b/assets/icons/plushies/Cirrus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Cirrus.png-e827dd1deb57783c5111ab74b6f36879.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Cirrus.png" +dest_files=[ "res://.import/Cirrus.png-e827dd1deb57783c5111ab74b6f36879.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Coffee Bean.png b/assets/icons/plushies/Coffee Bean.png new file mode 100644 index 00000000..d727c9ce Binary files /dev/null and b/assets/icons/plushies/Coffee Bean.png differ diff --git a/assets/icons/plushies/Coffee Bean.png.import b/assets/icons/plushies/Coffee Bean.png.import new file mode 100644 index 00000000..8b51956c --- /dev/null +++ b/assets/icons/plushies/Coffee Bean.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Coffee Bean.png-cfbfbbe60b9b26ad00269c6e39c6cf30.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Coffee Bean.png" +dest_files=[ "res://.import/Coffee Bean.png-cfbfbbe60b9b26ad00269c6e39c6cf30.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Confoundus.png b/assets/icons/plushies/Confoundus.png new file mode 100644 index 00000000..9a0d1b15 Binary files /dev/null and b/assets/icons/plushies/Confoundus.png differ diff --git a/assets/icons/plushies/Confoundus.png.import b/assets/icons/plushies/Confoundus.png.import new file mode 100644 index 00000000..99851448 --- /dev/null +++ b/assets/icons/plushies/Confoundus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Confoundus.png-ca8b20a1d1a1b4cdf46613f78d5e9cd7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Confoundus.png" +dest_files=[ "res://.import/Confoundus.png-ca8b20a1d1a1b4cdf46613f78d5e9cd7.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Crackle.png b/assets/icons/plushies/Crackle.png new file mode 100644 index 00000000..60794d46 Binary files /dev/null and b/assets/icons/plushies/Crackle.png differ diff --git a/assets/icons/plushies/Crackle.png.import b/assets/icons/plushies/Crackle.png.import new file mode 100644 index 00000000..86b35fd4 --- /dev/null +++ b/assets/icons/plushies/Crackle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Crackle.png-19a5cb95db08435361c7fdabe5870428.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Crackle.png" +dest_files=[ "res://.import/Crackle.png-19a5cb95db08435361c7fdabe5870428.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Crownie.png b/assets/icons/plushies/Crownie.png new file mode 100644 index 00000000..30b2c7a6 Binary files /dev/null and b/assets/icons/plushies/Crownie.png differ diff --git a/assets/icons/plushies/Crownie.png.import b/assets/icons/plushies/Crownie.png.import new file mode 100644 index 00000000..a76c08b7 --- /dev/null +++ b/assets/icons/plushies/Crownie.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Crownie.png-5844fe75ee7a89456e58defc623bf2fa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Crownie.png" +dest_files=[ "res://.import/Crownie.png-5844fe75ee7a89456e58defc623bf2fa.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Cyclops.png b/assets/icons/plushies/Cyclops.png new file mode 100644 index 00000000..fb2ba92a Binary files /dev/null and b/assets/icons/plushies/Cyclops.png differ diff --git a/assets/icons/plushies/Cyclops.png.import b/assets/icons/plushies/Cyclops.png.import new file mode 100644 index 00000000..3eeab12a --- /dev/null +++ b/assets/icons/plushies/Cyclops.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Cyclops.png-6f398f13ed2474f9fa6e600ed053bc5f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Cyclops.png" +dest_files=[ "res://.import/Cyclops.png-6f398f13ed2474f9fa6e600ed053bc5f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Demeter.png b/assets/icons/plushies/Demeter.png new file mode 100644 index 00000000..c721f7af Binary files /dev/null and b/assets/icons/plushies/Demeter.png differ diff --git a/assets/icons/plushies/Demeter.png.import b/assets/icons/plushies/Demeter.png.import new file mode 100644 index 00000000..1ef6eeef --- /dev/null +++ b/assets/icons/plushies/Demeter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Demeter.png-6339bc28c636a9946446949efd4ff2c0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Demeter.png" +dest_files=[ "res://.import/Demeter.png-6339bc28c636a9946446949efd4ff2c0.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Des.png b/assets/icons/plushies/Des.png new file mode 100644 index 00000000..fb5a8ab7 Binary files /dev/null and b/assets/icons/plushies/Des.png differ diff --git a/assets/icons/plushies/Des.png.import b/assets/icons/plushies/Des.png.import new file mode 100644 index 00000000..59413833 --- /dev/null +++ b/assets/icons/plushies/Des.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Des.png-07b6eecdfafd9cdf96107b47ff4d5cc8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Des.png" +dest_files=[ "res://.import/Des.png-07b6eecdfafd9cdf96107b47ff4d5cc8.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Dip.png b/assets/icons/plushies/Dip.png new file mode 100644 index 00000000..0a5c56eb Binary files /dev/null and b/assets/icons/plushies/Dip.png differ diff --git a/assets/icons/plushies/Dip.png.import b/assets/icons/plushies/Dip.png.import new file mode 100644 index 00000000..4ed20645 --- /dev/null +++ b/assets/icons/plushies/Dip.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Dip.png-526f49a023087db2c8dc1c95a43c5f99.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Dip.png" +dest_files=[ "res://.import/Dip.png-526f49a023087db2c8dc1c95a43c5f99.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Donova.png b/assets/icons/plushies/Donova.png new file mode 100644 index 00000000..171700cd Binary files /dev/null and b/assets/icons/plushies/Donova.png differ diff --git a/assets/icons/plushies/Donova.png.import b/assets/icons/plushies/Donova.png.import new file mode 100644 index 00000000..58f5a448 --- /dev/null +++ b/assets/icons/plushies/Donova.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Donova.png-bde87fa36668b763c0beafc4bc9c8d57.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Donova.png" +dest_files=[ "res://.import/Donova.png-bde87fa36668b763c0beafc4bc9c8d57.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Emine.png b/assets/icons/plushies/Emine.png new file mode 100644 index 00000000..7f2e256d Binary files /dev/null and b/assets/icons/plushies/Emine.png differ diff --git a/assets/icons/plushies/Emine.png.import b/assets/icons/plushies/Emine.png.import new file mode 100644 index 00000000..345bcbc7 --- /dev/null +++ b/assets/icons/plushies/Emine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Emine.png-e6b3cf853a37a091a2ee30e4661a7687.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Emine.png" +dest_files=[ "res://.import/Emine.png-e6b3cf853a37a091a2ee30e4661a7687.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Enci.png b/assets/icons/plushies/Enci.png new file mode 100644 index 00000000..8aad3076 Binary files /dev/null and b/assets/icons/plushies/Enci.png differ diff --git a/assets/icons/plushies/Enci.png.import b/assets/icons/plushies/Enci.png.import new file mode 100644 index 00000000..072789ba --- /dev/null +++ b/assets/icons/plushies/Enci.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Enci.png-725b19d0ff50dde6745fdc2f0877a42a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Enci.png" +dest_files=[ "res://.import/Enci.png-725b19d0ff50dde6745fdc2f0877a42a.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Enycloworm.png b/assets/icons/plushies/Enycloworm.png new file mode 100644 index 00000000..5339fc9e Binary files /dev/null and b/assets/icons/plushies/Enycloworm.png differ diff --git a/assets/icons/plushies/Enycloworm.png.import b/assets/icons/plushies/Enycloworm.png.import new file mode 100644 index 00000000..2577f8f0 --- /dev/null +++ b/assets/icons/plushies/Enycloworm.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Enycloworm.png-751ac9143190d95f90bc2a4035d7c6c7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Enycloworm.png" +dest_files=[ "res://.import/Enycloworm.png-751ac9143190d95f90bc2a4035d7c6c7.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Epicurus.png b/assets/icons/plushies/Epicurus.png new file mode 100644 index 00000000..c167fc85 Binary files /dev/null and b/assets/icons/plushies/Epicurus.png differ diff --git a/assets/icons/plushies/Epicurus.png.import b/assets/icons/plushies/Epicurus.png.import new file mode 100644 index 00000000..a065b5fd --- /dev/null +++ b/assets/icons/plushies/Epicurus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Epicurus.png-ac47247cefd0c6fcc2fb05dbaf7b068b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Epicurus.png" +dest_files=[ "res://.import/Epicurus.png-ac47247cefd0c6fcc2fb05dbaf7b068b.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Euhemerist.png b/assets/icons/plushies/Euhemerist.png new file mode 100644 index 00000000..3c1345b0 Binary files /dev/null and b/assets/icons/plushies/Euhemerist.png differ diff --git a/assets/icons/plushies/Euhemerist.png.import b/assets/icons/plushies/Euhemerist.png.import new file mode 100644 index 00000000..392c776a --- /dev/null +++ b/assets/icons/plushies/Euhemerist.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Euhemerist.png-74cc6e328845ae0d6532b96edba0e518.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Euhemerist.png" +dest_files=[ "res://.import/Euhemerist.png-74cc6e328845ae0d6532b96edba0e518.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Evelyn.png b/assets/icons/plushies/Evelyn.png new file mode 100644 index 00000000..d66e0c68 Binary files /dev/null and b/assets/icons/plushies/Evelyn.png differ diff --git a/assets/icons/plushies/Evelyn.png.import b/assets/icons/plushies/Evelyn.png.import new file mode 100644 index 00000000..4b01849f --- /dev/null +++ b/assets/icons/plushies/Evelyn.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Evelyn.png-837001af640da65372c57db74fe95be7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Evelyn.png" +dest_files=[ "res://.import/Evelyn.png-837001af640da65372c57db74fe95be7.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Eyeballer.png b/assets/icons/plushies/Eyeballer.png new file mode 100644 index 00000000..061b1d4f Binary files /dev/null and b/assets/icons/plushies/Eyeballer.png differ diff --git a/assets/icons/plushies/Eyeballer.png.import b/assets/icons/plushies/Eyeballer.png.import new file mode 100644 index 00000000..eccf6dc2 --- /dev/null +++ b/assets/icons/plushies/Eyeballer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Eyeballer.png-e43b9c14987ff74d74163dc3da399f0e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Eyeballer.png" +dest_files=[ "res://.import/Eyeballer.png-e43b9c14987ff74d74163dc3da399f0e.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fabuloso.png b/assets/icons/plushies/Fabuloso.png new file mode 100644 index 00000000..269cc610 Binary files /dev/null and b/assets/icons/plushies/Fabuloso.png differ diff --git a/assets/icons/plushies/Fabuloso.png.import b/assets/icons/plushies/Fabuloso.png.import new file mode 100644 index 00000000..3883260a --- /dev/null +++ b/assets/icons/plushies/Fabuloso.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fabuloso.png-04f4e24adecb738accc1cccf10ebc594.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fabuloso.png" +dest_files=[ "res://.import/Fabuloso.png-04f4e24adecb738accc1cccf10ebc594.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fereta.png b/assets/icons/plushies/Fereta.png new file mode 100644 index 00000000..7984f638 Binary files /dev/null and b/assets/icons/plushies/Fereta.png differ diff --git a/assets/icons/plushies/Fereta.png.import b/assets/icons/plushies/Fereta.png.import new file mode 100644 index 00000000..e2a8c504 --- /dev/null +++ b/assets/icons/plushies/Fereta.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fereta.png-570c9ca0681565635598fe793930638b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fereta.png" +dest_files=[ "res://.import/Fereta.png-570c9ca0681565635598fe793930638b.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fiona.png b/assets/icons/plushies/Fiona.png new file mode 100644 index 00000000..37646699 Binary files /dev/null and b/assets/icons/plushies/Fiona.png differ diff --git a/assets/icons/plushies/Fiona.png.import b/assets/icons/plushies/Fiona.png.import new file mode 100644 index 00000000..9dfae1c8 --- /dev/null +++ b/assets/icons/plushies/Fiona.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fiona.png-72ad5c5ab2853c41ff6fa89b469c64a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fiona.png" +dest_files=[ "res://.import/Fiona.png-72ad5c5ab2853c41ff6fa89b469c64a8.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fischer.png b/assets/icons/plushies/Fischer.png new file mode 100644 index 00000000..4dfc0f9e Binary files /dev/null and b/assets/icons/plushies/Fischer.png differ diff --git a/assets/icons/plushies/Fischer.png.import b/assets/icons/plushies/Fischer.png.import new file mode 100644 index 00000000..02926b31 --- /dev/null +++ b/assets/icons/plushies/Fischer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fischer.png-0f6962912256ce3e8ed1c2e85714cdab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fischer.png" +dest_files=[ "res://.import/Fischer.png-0f6962912256ce3e8ed1c2e85714cdab.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Flamenco.png b/assets/icons/plushies/Flamenco.png new file mode 100644 index 00000000..823f40a3 Binary files /dev/null and b/assets/icons/plushies/Flamenco.png differ diff --git a/assets/icons/plushies/Flamenco.png.import b/assets/icons/plushies/Flamenco.png.import new file mode 100644 index 00000000..15e43fbe --- /dev/null +++ b/assets/icons/plushies/Flamenco.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Flamenco.png-bf03cb772530ac270c547b16128c4361.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Flamenco.png" +dest_files=[ "res://.import/Flamenco.png-bf03cb772530ac270c547b16128c4361.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Flouncer.png b/assets/icons/plushies/Flouncer.png new file mode 100644 index 00000000..1591e2ed Binary files /dev/null and b/assets/icons/plushies/Flouncer.png differ diff --git a/assets/icons/plushies/Flouncer.png.import b/assets/icons/plushies/Flouncer.png.import new file mode 100644 index 00000000..f5398deb --- /dev/null +++ b/assets/icons/plushies/Flouncer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Flouncer.png-adf3f8fe32f60e0c64a3bec0afeee796.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Flouncer.png" +dest_files=[ "res://.import/Flouncer.png-adf3f8fe32f60e0c64a3bec0afeee796.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fortress.png b/assets/icons/plushies/Fortress.png new file mode 100644 index 00000000..ff2b911a Binary files /dev/null and b/assets/icons/plushies/Fortress.png differ diff --git a/assets/icons/plushies/Fortress.png.import b/assets/icons/plushies/Fortress.png.import new file mode 100644 index 00000000..c652cf40 --- /dev/null +++ b/assets/icons/plushies/Fortress.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fortress.png-8a85e841ebdb2ea79b6e82385f5dc119.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fortress.png" +dest_files=[ "res://.import/Fortress.png-8a85e841ebdb2ea79b6e82385f5dc119.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fortune.png b/assets/icons/plushies/Fortune.png new file mode 100644 index 00000000..32e71dbc Binary files /dev/null and b/assets/icons/plushies/Fortune.png differ diff --git a/assets/icons/plushies/Fortune.png.import b/assets/icons/plushies/Fortune.png.import new file mode 100644 index 00000000..b50333b3 --- /dev/null +++ b/assets/icons/plushies/Fortune.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fortune.png-ed50a1e9d8456a731f3e44e715a27323.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fortune.png" +dest_files=[ "res://.import/Fortune.png-ed50a1e9d8456a731f3e44e715a27323.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fred.png b/assets/icons/plushies/Fred.png new file mode 100644 index 00000000..cadbcdde Binary files /dev/null and b/assets/icons/plushies/Fred.png differ diff --git a/assets/icons/plushies/Fred.png.import b/assets/icons/plushies/Fred.png.import new file mode 100644 index 00000000..4a378a6a --- /dev/null +++ b/assets/icons/plushies/Fred.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fred.png-85443aaae1f67667e75c0a66f0edcfb2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fred.png" +dest_files=[ "res://.import/Fred.png-85443aaae1f67667e75c0a66f0edcfb2.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Fruscination.png b/assets/icons/plushies/Fruscination.png new file mode 100644 index 00000000..c5387188 Binary files /dev/null and b/assets/icons/plushies/Fruscination.png differ diff --git a/assets/icons/plushies/Fruscination.png.import b/assets/icons/plushies/Fruscination.png.import new file mode 100644 index 00000000..12b35978 --- /dev/null +++ b/assets/icons/plushies/Fruscination.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Fruscination.png-675d2d68c4ad07f2704379d5460aaf43.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Fruscination.png" +dest_files=[ "res://.import/Fruscination.png-675d2d68c4ad07f2704379d5460aaf43.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Gage.png b/assets/icons/plushies/Gage.png new file mode 100644 index 00000000..7314ce9d Binary files /dev/null and b/assets/icons/plushies/Gage.png differ diff --git a/assets/icons/plushies/Gage.png.import b/assets/icons/plushies/Gage.png.import new file mode 100644 index 00000000..2e94825f --- /dev/null +++ b/assets/icons/plushies/Gage.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Gage.png-8afffc60c2ad2e29b9a3e7134eed9127.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Gage.png" +dest_files=[ "res://.import/Gage.png-8afffc60c2ad2e29b9a3e7134eed9127.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Gaius.png b/assets/icons/plushies/Gaius.png new file mode 100644 index 00000000..ae871b70 Binary files /dev/null and b/assets/icons/plushies/Gaius.png differ diff --git a/assets/icons/plushies/Gaius.png.import b/assets/icons/plushies/Gaius.png.import new file mode 100644 index 00000000..81f009ee --- /dev/null +++ b/assets/icons/plushies/Gaius.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Gaius.png-89659b388629a37c47388009ced1638f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Gaius.png" +dest_files=[ "res://.import/Gaius.png-89659b388629a37c47388009ced1638f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Gru.png b/assets/icons/plushies/Gru.png new file mode 100644 index 00000000..d745183d Binary files /dev/null and b/assets/icons/plushies/Gru.png differ diff --git a/assets/icons/plushies/Gru.png.import b/assets/icons/plushies/Gru.png.import new file mode 100644 index 00000000..bf4042c8 --- /dev/null +++ b/assets/icons/plushies/Gru.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Gru.png-25231283073767cb3f5e3e10158029bd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Gru.png" +dest_files=[ "res://.import/Gru.png-25231283073767cb3f5e3e10158029bd.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Guardian.png b/assets/icons/plushies/Guardian.png new file mode 100644 index 00000000..14868c47 Binary files /dev/null and b/assets/icons/plushies/Guardian.png differ diff --git a/assets/icons/plushies/Guardian.png.import b/assets/icons/plushies/Guardian.png.import new file mode 100644 index 00000000..b85ddaa9 --- /dev/null +++ b/assets/icons/plushies/Guardian.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Guardian.png-7bba1e7babe25c2f901fe7c41cb8a618.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Guardian.png" +dest_files=[ "res://.import/Guardian.png-7bba1e7babe25c2f901fe7c41cb8a618.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Hammond.png b/assets/icons/plushies/Hammond.png new file mode 100644 index 00000000..b1e4ba42 Binary files /dev/null and b/assets/icons/plushies/Hammond.png differ diff --git a/assets/icons/plushies/Hammond.png.import b/assets/icons/plushies/Hammond.png.import new file mode 100644 index 00000000..bb0be502 --- /dev/null +++ b/assets/icons/plushies/Hammond.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Hammond.png-de6c66c68631e83fdce4330d36c90a60.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Hammond.png" +dest_files=[ "res://.import/Hammond.png-de6c66c68631e83fdce4330d36c90a60.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Hemlock.png b/assets/icons/plushies/Hemlock.png new file mode 100644 index 00000000..e2ca8060 Binary files /dev/null and b/assets/icons/plushies/Hemlock.png differ diff --git a/assets/icons/plushies/Hemlock.png.import b/assets/icons/plushies/Hemlock.png.import new file mode 100644 index 00000000..d35eee0a --- /dev/null +++ b/assets/icons/plushies/Hemlock.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Hemlock.png-f81cb46aa1adba0ebb01495b4e637f75.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Hemlock.png" +dest_files=[ "res://.import/Hemlock.png-f81cb46aa1adba0ebb01495b4e637f75.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Herman.png b/assets/icons/plushies/Herman.png new file mode 100644 index 00000000..0e9871bb Binary files /dev/null and b/assets/icons/plushies/Herman.png differ diff --git a/assets/icons/plushies/Herman.png.import b/assets/icons/plushies/Herman.png.import new file mode 100644 index 00000000..2d7c453b --- /dev/null +++ b/assets/icons/plushies/Herman.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Herman.png-c5205d3263e15fb43a2806d43d6e339e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Herman.png" +dest_files=[ "res://.import/Herman.png-c5205d3263e15fb43a2806d43d6e339e.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Hypnos.png b/assets/icons/plushies/Hypnos.png new file mode 100644 index 00000000..1cdfc9bb Binary files /dev/null and b/assets/icons/plushies/Hypnos.png differ diff --git a/assets/icons/plushies/Hypnos.png.import b/assets/icons/plushies/Hypnos.png.import new file mode 100644 index 00000000..ba5666b0 --- /dev/null +++ b/assets/icons/plushies/Hypnos.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Hypnos.png-c8ef56f46f3cf0751bb983b3ade24546.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Hypnos.png" +dest_files=[ "res://.import/Hypnos.png-c8ef56f46f3cf0751bb983b3ade24546.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Ingmar.png b/assets/icons/plushies/Ingmar.png new file mode 100644 index 00000000..ca37f670 Binary files /dev/null and b/assets/icons/plushies/Ingmar.png differ diff --git a/assets/icons/plushies/Ingmar.png.import b/assets/icons/plushies/Ingmar.png.import new file mode 100644 index 00000000..c6d28168 --- /dev/null +++ b/assets/icons/plushies/Ingmar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Ingmar.png-0527401659b07370a259d0e2918fb824.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Ingmar.png" +dest_files=[ "res://.import/Ingmar.png-0527401659b07370a259d0e2918fb824.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Isabelle.png b/assets/icons/plushies/Isabelle.png new file mode 100644 index 00000000..e5e81af4 Binary files /dev/null and b/assets/icons/plushies/Isabelle.png differ diff --git a/assets/icons/plushies/Isabelle.png.import b/assets/icons/plushies/Isabelle.png.import new file mode 100644 index 00000000..def18016 --- /dev/null +++ b/assets/icons/plushies/Isabelle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Isabelle.png-76ca05b86fd2821e688ab8e8dbe4a3da.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Isabelle.png" +dest_files=[ "res://.import/Isabelle.png-76ca05b86fd2821e688ab8e8dbe4a3da.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Jojo.png b/assets/icons/plushies/Jojo.png new file mode 100644 index 00000000..4efa07ab Binary files /dev/null and b/assets/icons/plushies/Jojo.png differ diff --git a/assets/icons/plushies/Jojo.png.import b/assets/icons/plushies/Jojo.png.import new file mode 100644 index 00000000..a7efa2fa --- /dev/null +++ b/assets/icons/plushies/Jojo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Jojo.png-916aa72c2866363d8b7e2f5dd621a1d1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Jojo.png" +dest_files=[ "res://.import/Jojo.png-916aa72c2866363d8b7e2f5dd621a1d1.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Ju-On.png b/assets/icons/plushies/Ju-On.png new file mode 100644 index 00000000..acdeafc5 Binary files /dev/null and b/assets/icons/plushies/Ju-On.png differ diff --git a/assets/icons/plushies/Ju-On.png.import b/assets/icons/plushies/Ju-On.png.import new file mode 100644 index 00000000..a69a0073 --- /dev/null +++ b/assets/icons/plushies/Ju-On.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Ju-On.png-5437b7021c0374201a04843037456056.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Ju-On.png" +dest_files=[ "res://.import/Ju-On.png-5437b7021c0374201a04843037456056.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Kaleidy.png b/assets/icons/plushies/Kaleidy.png new file mode 100644 index 00000000..45d442cd Binary files /dev/null and b/assets/icons/plushies/Kaleidy.png differ diff --git a/assets/icons/plushies/Kaleidy.png.import b/assets/icons/plushies/Kaleidy.png.import new file mode 100644 index 00000000..856d9ec8 --- /dev/null +++ b/assets/icons/plushies/Kaleidy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Kaleidy.png-67090d9cfffb7779fa469135900c8668.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Kaleidy.png" +dest_files=[ "res://.import/Kaleidy.png-67090d9cfffb7779fa469135900c8668.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Kali.png b/assets/icons/plushies/Kali.png new file mode 100644 index 00000000..170937a5 Binary files /dev/null and b/assets/icons/plushies/Kali.png differ diff --git a/assets/icons/plushies/Kali.png.import b/assets/icons/plushies/Kali.png.import new file mode 100644 index 00000000..2205a794 --- /dev/null +++ b/assets/icons/plushies/Kali.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Kali.png-aa9ee3765e3cbd9d2f170a08e092f1ed.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Kali.png" +dest_files=[ "res://.import/Kali.png-aa9ee3765e3cbd9d2f170a08e092f1ed.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Kiway.png b/assets/icons/plushies/Kiway.png new file mode 100644 index 00000000..44b53da0 Binary files /dev/null and b/assets/icons/plushies/Kiway.png differ diff --git a/assets/icons/plushies/Kiway.png.import b/assets/icons/plushies/Kiway.png.import new file mode 100644 index 00000000..d677158a --- /dev/null +++ b/assets/icons/plushies/Kiway.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Kiway.png-3e9b34fa31dd590e253a8ba1ec407340.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Kiway.png" +dest_files=[ "res://.import/Kiway.png-3e9b34fa31dd590e253a8ba1ec407340.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Leyna.png b/assets/icons/plushies/Leyna.png new file mode 100644 index 00000000..c4c5a355 Binary files /dev/null and b/assets/icons/plushies/Leyna.png differ diff --git a/assets/icons/plushies/Leyna.png.import b/assets/icons/plushies/Leyna.png.import new file mode 100644 index 00000000..bce69914 --- /dev/null +++ b/assets/icons/plushies/Leyna.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Leyna.png-39301eeb7aa2e31e822ebb6e8d809b15.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Leyna.png" +dest_files=[ "res://.import/Leyna.png-39301eeb7aa2e31e822ebb6e8d809b15.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/LilSprout.png b/assets/icons/plushies/LilSprout.png new file mode 100644 index 00000000..10cdce18 Binary files /dev/null and b/assets/icons/plushies/LilSprout.png differ diff --git a/assets/icons/plushies/LilSprout.png.import b/assets/icons/plushies/LilSprout.png.import new file mode 100644 index 00000000..8bc198b5 --- /dev/null +++ b/assets/icons/plushies/LilSprout.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/LilSprout.png-f6395be32e64bc75f8ef56f44cec093f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/LilSprout.png" +dest_files=[ "res://.import/LilSprout.png-f6395be32e64bc75f8ef56f44cec093f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Lina.png b/assets/icons/plushies/Lina.png new file mode 100644 index 00000000..fe48beca Binary files /dev/null and b/assets/icons/plushies/Lina.png differ diff --git a/assets/icons/plushies/Lina.png.import b/assets/icons/plushies/Lina.png.import new file mode 100644 index 00000000..39df6091 --- /dev/null +++ b/assets/icons/plushies/Lina.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Lina.png-d0ef4087e6258d1b3374aaedae5f9a97.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Lina.png" +dest_files=[ "res://.import/Lina.png-d0ef4087e6258d1b3374aaedae5f9a97.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Lucky.png b/assets/icons/plushies/Lucky.png new file mode 100644 index 00000000..1517cad4 Binary files /dev/null and b/assets/icons/plushies/Lucky.png differ diff --git a/assets/icons/plushies/Lucky.png.import b/assets/icons/plushies/Lucky.png.import new file mode 100644 index 00000000..6f2ca911 --- /dev/null +++ b/assets/icons/plushies/Lucky.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Lucky.png-5cd4afd2ed6158fafa8436f1d11fbd23.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Lucky.png" +dest_files=[ "res://.import/Lucky.png-5cd4afd2ed6158fafa8436f1d11fbd23.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Lululoo.png b/assets/icons/plushies/Lululoo.png new file mode 100644 index 00000000..f44938c8 Binary files /dev/null and b/assets/icons/plushies/Lululoo.png differ diff --git a/assets/icons/plushies/Lululoo.png.import b/assets/icons/plushies/Lululoo.png.import new file mode 100644 index 00000000..2a81608e --- /dev/null +++ b/assets/icons/plushies/Lululoo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Lululoo.png-2f370b007ccc713a2bfa3fa3adb0cddc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Lululoo.png" +dest_files=[ "res://.import/Lululoo.png-2f370b007ccc713a2bfa3fa3adb0cddc.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Macchiato.png b/assets/icons/plushies/Macchiato.png new file mode 100644 index 00000000..0d9cd157 Binary files /dev/null and b/assets/icons/plushies/Macchiato.png differ diff --git a/assets/icons/plushies/Macchiato.png.import b/assets/icons/plushies/Macchiato.png.import new file mode 100644 index 00000000..3628f3a7 --- /dev/null +++ b/assets/icons/plushies/Macchiato.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Macchiato.png-5e98ccbc62876a6cd4d2829caf9acbfa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Macchiato.png" +dest_files=[ "res://.import/Macchiato.png-5e98ccbc62876a6cd4d2829caf9acbfa.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Mage.png b/assets/icons/plushies/Mage.png new file mode 100644 index 00000000..084f3f6b Binary files /dev/null and b/assets/icons/plushies/Mage.png differ diff --git a/assets/icons/plushies/Mage.png.import b/assets/icons/plushies/Mage.png.import new file mode 100644 index 00000000..5647f573 --- /dev/null +++ b/assets/icons/plushies/Mage.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Mage.png-fccdb567b1758c278ca45edeff9eb05c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Mage.png" +dest_files=[ "res://.import/Mage.png-fccdb567b1758c278ca45edeff9eb05c.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Mataro.png b/assets/icons/plushies/Mataro.png new file mode 100644 index 00000000..00243d75 Binary files /dev/null and b/assets/icons/plushies/Mataro.png differ diff --git a/assets/icons/plushies/Mataro.png.import b/assets/icons/plushies/Mataro.png.import new file mode 100644 index 00000000..ce617054 --- /dev/null +++ b/assets/icons/plushies/Mataro.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Mataro.png-df7c40813081c0f9161d44bb3c83ebbb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Mataro.png" +dest_files=[ "res://.import/Mataro.png-df7c40813081c0f9161d44bb3c83ebbb.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Mauricio.png b/assets/icons/plushies/Mauricio.png new file mode 100644 index 00000000..1ee599cf Binary files /dev/null and b/assets/icons/plushies/Mauricio.png differ diff --git a/assets/icons/plushies/Mauricio.png.import b/assets/icons/plushies/Mauricio.png.import new file mode 100644 index 00000000..fcdc1cad --- /dev/null +++ b/assets/icons/plushies/Mauricio.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Mauricio.png-b9ced2d360dfb08a77c2f9d1e58df2aa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Mauricio.png" +dest_files=[ "res://.import/Mauricio.png-b9ced2d360dfb08a77c2f9d1e58df2aa.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Mcarthy.png b/assets/icons/plushies/Mcarthy.png new file mode 100644 index 00000000..08bcb40c Binary files /dev/null and b/assets/icons/plushies/Mcarthy.png differ diff --git a/assets/icons/plushies/Mcarthy.png.import b/assets/icons/plushies/Mcarthy.png.import new file mode 100644 index 00000000..4edf5f4d --- /dev/null +++ b/assets/icons/plushies/Mcarthy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Mcarthy.png-692e31fc4f3672e85bb1ee3699afb096.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Mcarthy.png" +dest_files=[ "res://.import/Mcarthy.png-692e31fc4f3672e85bb1ee3699afb096.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Moka.png b/assets/icons/plushies/Moka.png new file mode 100644 index 00000000..3559959b Binary files /dev/null and b/assets/icons/plushies/Moka.png differ diff --git a/assets/icons/plushies/Moka.png.import b/assets/icons/plushies/Moka.png.import new file mode 100644 index 00000000..887d7fe5 --- /dev/null +++ b/assets/icons/plushies/Moka.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Moka.png-3b666aa2b8b1aa40894eff7c2afe302c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Moka.png" +dest_files=[ "res://.import/Moka.png-3b666aa2b8b1aa40894eff7c2afe302c.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/MrBeard.png b/assets/icons/plushies/MrBeard.png new file mode 100644 index 00000000..41066100 Binary files /dev/null and b/assets/icons/plushies/MrBeard.png differ diff --git a/assets/icons/plushies/MrBeard.png.import b/assets/icons/plushies/MrBeard.png.import new file mode 100644 index 00000000..7578f98c --- /dev/null +++ b/assets/icons/plushies/MrBeard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/MrBeard.png-2ea7cab1ccf05b68c6b2303f874b4a28.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/MrBeard.png" +dest_files=[ "res://.import/MrBeard.png-2ea7cab1ccf05b68c6b2303f874b4a28.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/MrMustache.png b/assets/icons/plushies/MrMustache.png new file mode 100644 index 00000000..b6ca9113 Binary files /dev/null and b/assets/icons/plushies/MrMustache.png differ diff --git a/assets/icons/plushies/MrMustache.png.import b/assets/icons/plushies/MrMustache.png.import new file mode 100644 index 00000000..26aa5f5b --- /dev/null +++ b/assets/icons/plushies/MrMustache.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/MrMustache.png-c2c8947504beb5036856fa8611eb2d66.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/MrMustache.png" +dest_files=[ "res://.import/MrMustache.png-c2c8947504beb5036856fa8611eb2d66.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Muumuu.png b/assets/icons/plushies/Muumuu.png new file mode 100644 index 00000000..06a23e81 Binary files /dev/null and b/assets/icons/plushies/Muumuu.png differ diff --git a/assets/icons/plushies/Muumuu.png.import b/assets/icons/plushies/Muumuu.png.import new file mode 100644 index 00000000..894c17fe --- /dev/null +++ b/assets/icons/plushies/Muumuu.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Muumuu.png-f3715294318b12736ff62c2cd2f1fb05.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Muumuu.png" +dest_files=[ "res://.import/Muumuu.png-f3715294318b12736ff62c2cd2f1fb05.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Nereas.png b/assets/icons/plushies/Nereas.png new file mode 100644 index 00000000..20e1df2a Binary files /dev/null and b/assets/icons/plushies/Nereas.png differ diff --git a/assets/icons/plushies/Nereas.png.import b/assets/icons/plushies/Nereas.png.import new file mode 100644 index 00000000..268db33f --- /dev/null +++ b/assets/icons/plushies/Nereas.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Nereas.png-c2f28d2b65f5e805afb9f911dc72641b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Nereas.png" +dest_files=[ "res://.import/Nereas.png-c2f28d2b65f5e805afb9f911dc72641b.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Nikola.png b/assets/icons/plushies/Nikola.png new file mode 100644 index 00000000..b34df389 Binary files /dev/null and b/assets/icons/plushies/Nikola.png differ diff --git a/assets/icons/plushies/Nikola.png.import b/assets/icons/plushies/Nikola.png.import new file mode 100644 index 00000000..a639cc6f --- /dev/null +++ b/assets/icons/plushies/Nikola.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Nikola.png-242a5c47ad55ad6e9b2c59b4fc3aaf7f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Nikola.png" +dest_files=[ "res://.import/Nikola.png-242a5c47ad55ad6e9b2c59b4fc3aaf7f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Nodelain.png b/assets/icons/plushies/Nodelain.png new file mode 100644 index 00000000..5bc47596 Binary files /dev/null and b/assets/icons/plushies/Nodelain.png differ diff --git a/assets/icons/plushies/Nodelain.png.import b/assets/icons/plushies/Nodelain.png.import new file mode 100644 index 00000000..e4ba09ac --- /dev/null +++ b/assets/icons/plushies/Nodelain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Nodelain.png-4276cb17c36a5e1fb7dcc66273a78326.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Nodelain.png" +dest_files=[ "res://.import/Nodelain.png-4276cb17c36a5e1fb7dcc66273a78326.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Nostalgia.png b/assets/icons/plushies/Nostalgia.png new file mode 100644 index 00000000..4e10896b Binary files /dev/null and b/assets/icons/plushies/Nostalgia.png differ diff --git a/assets/icons/plushies/Nostalgia.png.import b/assets/icons/plushies/Nostalgia.png.import new file mode 100644 index 00000000..d858c16b --- /dev/null +++ b/assets/icons/plushies/Nostalgia.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Nostalgia.png-55a37442e1cdc3473a0e969337cca161.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Nostalgia.png" +dest_files=[ "res://.import/Nostalgia.png-55a37442e1cdc3473a0e969337cca161.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Numb.png b/assets/icons/plushies/Numb.png new file mode 100644 index 00000000..9473ff89 Binary files /dev/null and b/assets/icons/plushies/Numb.png differ diff --git a/assets/icons/plushies/Numb.png.import b/assets/icons/plushies/Numb.png.import new file mode 100644 index 00000000..04eb3c50 --- /dev/null +++ b/assets/icons/plushies/Numb.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Numb.png-11c4c7dc581c716c479979264ea2fb83.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Numb.png" +dest_files=[ "res://.import/Numb.png-11c4c7dc581c716c479979264ea2fb83.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Omegus.png b/assets/icons/plushies/Omegus.png new file mode 100644 index 00000000..7e0b1ec8 Binary files /dev/null and b/assets/icons/plushies/Omegus.png differ diff --git a/assets/icons/plushies/Omegus.png.import b/assets/icons/plushies/Omegus.png.import new file mode 100644 index 00000000..1d0e8766 --- /dev/null +++ b/assets/icons/plushies/Omegus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Omegus.png-53ea092c7faa18a4941c036d862c6239.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Omegus.png" +dest_files=[ "res://.import/Omegus.png-53ea092c7faa18a4941c036d862c6239.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Omen.png b/assets/icons/plushies/Omen.png new file mode 100644 index 00000000..8a64096a Binary files /dev/null and b/assets/icons/plushies/Omen.png differ diff --git a/assets/icons/plushies/Omen.png.import b/assets/icons/plushies/Omen.png.import new file mode 100644 index 00000000..ba076471 --- /dev/null +++ b/assets/icons/plushies/Omen.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Omen.png-313641156a63436da2ba90b353da5f1c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Omen.png" +dest_files=[ "res://.import/Omen.png-313641156a63436da2ba90b353da5f1c.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Packer.png b/assets/icons/plushies/Packer.png new file mode 100644 index 00000000..c5840996 Binary files /dev/null and b/assets/icons/plushies/Packer.png differ diff --git a/assets/icons/plushies/Packer.png.import b/assets/icons/plushies/Packer.png.import new file mode 100644 index 00000000..9701b06c --- /dev/null +++ b/assets/icons/plushies/Packer.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Packer.png-88ad533cdb5adf4eee72180c5ad5026b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Packer.png" +dest_files=[ "res://.import/Packer.png-88ad533cdb5adf4eee72180c5ad5026b.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Poof.png b/assets/icons/plushies/Poof.png new file mode 100644 index 00000000..3eb34bc6 Binary files /dev/null and b/assets/icons/plushies/Poof.png differ diff --git a/assets/icons/plushies/Poof.png.import b/assets/icons/plushies/Poof.png.import new file mode 100644 index 00000000..dd137856 --- /dev/null +++ b/assets/icons/plushies/Poof.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Poof.png-d6f917c50e55ff21e0d140469ae483ea.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Poof.png" +dest_files=[ "res://.import/Poof.png-d6f917c50e55ff21e0d140469ae483ea.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Porodoro.png b/assets/icons/plushies/Porodoro.png new file mode 100644 index 00000000..2625ae13 Binary files /dev/null and b/assets/icons/plushies/Porodoro.png differ diff --git a/assets/icons/plushies/Porodoro.png.import b/assets/icons/plushies/Porodoro.png.import new file mode 100644 index 00000000..dd76edaa --- /dev/null +++ b/assets/icons/plushies/Porodoro.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Porodoro.png-adadc3140804aef0f62e5d4f2664caa8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Porodoro.png" +dest_files=[ "res://.import/Porodoro.png-adadc3140804aef0f62e5d4f2664caa8.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Pyrrhuloxia.png b/assets/icons/plushies/Pyrrhuloxia.png new file mode 100644 index 00000000..371d279e Binary files /dev/null and b/assets/icons/plushies/Pyrrhuloxia.png differ diff --git a/assets/icons/plushies/Pyrrhuloxia.png.import b/assets/icons/plushies/Pyrrhuloxia.png.import new file mode 100644 index 00000000..4e1d3320 --- /dev/null +++ b/assets/icons/plushies/Pyrrhuloxia.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Pyrrhuloxia.png-e9826475e69c6af4db8262acd564a050.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Pyrrhuloxia.png" +dest_files=[ "res://.import/Pyrrhuloxia.png-e9826475e69c6af4db8262acd564a050.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Replicator.png b/assets/icons/plushies/Replicator.png new file mode 100644 index 00000000..7c3e6d57 Binary files /dev/null and b/assets/icons/plushies/Replicator.png differ diff --git a/assets/icons/plushies/Replicator.png.import b/assets/icons/plushies/Replicator.png.import new file mode 100644 index 00000000..837646ce --- /dev/null +++ b/assets/icons/plushies/Replicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Replicator.png-8151b429ab11e18114dd03786e5c15b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Replicator.png" +dest_files=[ "res://.import/Replicator.png-8151b429ab11e18114dd03786e5c15b7.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Romeo.png b/assets/icons/plushies/Romeo.png new file mode 100644 index 00000000..0f54f42d Binary files /dev/null and b/assets/icons/plushies/Romeo.png differ diff --git a/assets/icons/plushies/Romeo.png.import b/assets/icons/plushies/Romeo.png.import new file mode 100644 index 00000000..aadc7afb --- /dev/null +++ b/assets/icons/plushies/Romeo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Romeo.png-e82ac81f601837086ea44b558c0c3a8f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Romeo.png" +dest_files=[ "res://.import/Romeo.png-e82ac81f601837086ea44b558c0c3a8f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Rosa.png b/assets/icons/plushies/Rosa.png new file mode 100644 index 00000000..a0bbb7dc Binary files /dev/null and b/assets/icons/plushies/Rosa.png differ diff --git a/assets/icons/plushies/Rosa.png.import b/assets/icons/plushies/Rosa.png.import new file mode 100644 index 00000000..98d0b022 --- /dev/null +++ b/assets/icons/plushies/Rosa.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Rosa.png-b8cbd7a97369927badafa12491b7331d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Rosa.png" +dest_files=[ "res://.import/Rosa.png-b8cbd7a97369927badafa12491b7331d.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Rosetta.png b/assets/icons/plushies/Rosetta.png new file mode 100644 index 00000000..3abec079 Binary files /dev/null and b/assets/icons/plushies/Rosetta.png differ diff --git a/assets/icons/plushies/Rosetta.png.import b/assets/icons/plushies/Rosetta.png.import new file mode 100644 index 00000000..5d7fbe6b --- /dev/null +++ b/assets/icons/plushies/Rosetta.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Rosetta.png-d4e5e311e9008d5dae989cda912e914b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Rosetta.png" +dest_files=[ "res://.import/Rosetta.png-d4e5e311e9008d5dae989cda912e914b.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Sam.png b/assets/icons/plushies/Sam.png new file mode 100644 index 00000000..4f501879 Binary files /dev/null and b/assets/icons/plushies/Sam.png differ diff --git a/assets/icons/plushies/Sam.png.import b/assets/icons/plushies/Sam.png.import new file mode 100644 index 00000000..418c1622 --- /dev/null +++ b/assets/icons/plushies/Sam.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Sam.png-14d67a24fbceee0cc7f21676cf2d09f0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Sam.png" +dest_files=[ "res://.import/Sam.png-14d67a24fbceee0cc7f21676cf2d09f0.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Scotty.png b/assets/icons/plushies/Scotty.png new file mode 100644 index 00000000..94d1ea95 Binary files /dev/null and b/assets/icons/plushies/Scotty.png differ diff --git a/assets/icons/plushies/Scotty.png.import b/assets/icons/plushies/Scotty.png.import new file mode 100644 index 00000000..4c336474 --- /dev/null +++ b/assets/icons/plushies/Scotty.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Scotty.png-01e3f11e5547361ff9350560202de89f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Scotty.png" +dest_files=[ "res://.import/Scotty.png-01e3f11e5547361ff9350560202de89f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Serene.png b/assets/icons/plushies/Serene.png new file mode 100644 index 00000000..b78cbde1 Binary files /dev/null and b/assets/icons/plushies/Serene.png differ diff --git a/assets/icons/plushies/Serene.png.import b/assets/icons/plushies/Serene.png.import new file mode 100644 index 00000000..2076a735 --- /dev/null +++ b/assets/icons/plushies/Serene.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Serene.png-e39925ed0b4b89e054fef2dac3d267bf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Serene.png" +dest_files=[ "res://.import/Serene.png-e39925ed0b4b89e054fef2dac3d267bf.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Shamrock.png b/assets/icons/plushies/Shamrock.png new file mode 100644 index 00000000..6d8b0d3e Binary files /dev/null and b/assets/icons/plushies/Shamrock.png differ diff --git a/assets/icons/plushies/Shamrock.png.import b/assets/icons/plushies/Shamrock.png.import new file mode 100644 index 00000000..c273cbfd --- /dev/null +++ b/assets/icons/plushies/Shamrock.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Shamrock.png-698c726897bf3a5f0eca652ba38e8c70.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Shamrock.png" +dest_files=[ "res://.import/Shamrock.png-698c726897bf3a5f0eca652ba38e8c70.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Shelly.png b/assets/icons/plushies/Shelly.png new file mode 100644 index 00000000..d2156b3a Binary files /dev/null and b/assets/icons/plushies/Shelly.png differ diff --git a/assets/icons/plushies/Shelly.png.import b/assets/icons/plushies/Shelly.png.import new file mode 100644 index 00000000..b5248556 --- /dev/null +++ b/assets/icons/plushies/Shelly.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Shelly.png-1257f9160a775614c9664c720fe42208.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Shelly.png" +dest_files=[ "res://.import/Shelly.png-1257f9160a775614c9664c720fe42208.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Snek.png b/assets/icons/plushies/Snek.png new file mode 100644 index 00000000..a3d434a2 Binary files /dev/null and b/assets/icons/plushies/Snek.png differ diff --git a/assets/icons/plushies/Snek.png.import b/assets/icons/plushies/Snek.png.import new file mode 100644 index 00000000..d602b9a6 --- /dev/null +++ b/assets/icons/plushies/Snek.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Snek.png-c69e46a35bcb6eba6d855da43b43ba59.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Snek.png" +dest_files=[ "res://.import/Snek.png-c69e46a35bcb6eba6d855da43b43ba59.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Sneyel.png b/assets/icons/plushies/Sneyel.png new file mode 100644 index 00000000..92598fc9 Binary files /dev/null and b/assets/icons/plushies/Sneyel.png differ diff --git a/assets/icons/plushies/Sneyel.png.import b/assets/icons/plushies/Sneyel.png.import new file mode 100644 index 00000000..12bd3e51 --- /dev/null +++ b/assets/icons/plushies/Sneyel.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Sneyel.png-6c9e1dddc38c3304493277da697363e7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Sneyel.png" +dest_files=[ "res://.import/Sneyel.png-6c9e1dddc38c3304493277da697363e7.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Somnus.png b/assets/icons/plushies/Somnus.png new file mode 100644 index 00000000..3d20bd20 Binary files /dev/null and b/assets/icons/plushies/Somnus.png differ diff --git a/assets/icons/plushies/Somnus.png.import b/assets/icons/plushies/Somnus.png.import new file mode 100644 index 00000000..3e0dd2c5 --- /dev/null +++ b/assets/icons/plushies/Somnus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Somnus.png-209653db0589392648bde30d1b833120.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Somnus.png" +dest_files=[ "res://.import/Somnus.png-209653db0589392648bde30d1b833120.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Sphinx.png b/assets/icons/plushies/Sphinx.png new file mode 100644 index 00000000..6ca966b2 Binary files /dev/null and b/assets/icons/plushies/Sphinx.png differ diff --git a/assets/icons/plushies/Sphinx.png.import b/assets/icons/plushies/Sphinx.png.import new file mode 100644 index 00000000..099fa8fd --- /dev/null +++ b/assets/icons/plushies/Sphinx.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Sphinx.png-3b21aede2aea8a5a5958f18e64fecabf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Sphinx.png" +dest_files=[ "res://.import/Sphinx.png-3b21aede2aea8a5a5958f18e64fecabf.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Stress Ball.png b/assets/icons/plushies/Stress Ball.png new file mode 100644 index 00000000..6b71d1d5 Binary files /dev/null and b/assets/icons/plushies/Stress Ball.png differ diff --git a/assets/icons/plushies/Stress Ball.png.import b/assets/icons/plushies/Stress Ball.png.import new file mode 100644 index 00000000..b6eb5ddc --- /dev/null +++ b/assets/icons/plushies/Stress Ball.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Stress Ball.png-79dc8a437702fc991b3eaa4ebbaa5329.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Stress Ball.png" +dest_files=[ "res://.import/Stress Ball.png-79dc8a437702fc991b3eaa4ebbaa5329.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Stressy.png b/assets/icons/plushies/Stressy.png new file mode 100644 index 00000000..6b71d1d5 Binary files /dev/null and b/assets/icons/plushies/Stressy.png differ diff --git a/assets/icons/plushies/Stressy.png.import b/assets/icons/plushies/Stressy.png.import new file mode 100644 index 00000000..9cde1d47 --- /dev/null +++ b/assets/icons/plushies/Stressy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Stressy.png-473a5b4e855ec366bcab81578468f243.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Stressy.png" +dest_files=[ "res://.import/Stressy.png-473a5b4e855ec366bcab81578468f243.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Sweeney.png b/assets/icons/plushies/Sweeney.png new file mode 100644 index 00000000..9156645d Binary files /dev/null and b/assets/icons/plushies/Sweeney.png differ diff --git a/assets/icons/plushies/Sweeney.png.import b/assets/icons/plushies/Sweeney.png.import new file mode 100644 index 00000000..940b90e9 --- /dev/null +++ b/assets/icons/plushies/Sweeney.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Sweeney.png-5436d064867847a3c778d12e9d5b12d6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Sweeney.png" +dest_files=[ "res://.import/Sweeney.png-5436d064867847a3c778d12e9d5b12d6.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Theo.png b/assets/icons/plushies/Theo.png new file mode 100644 index 00000000..af2ed62e Binary files /dev/null and b/assets/icons/plushies/Theo.png differ diff --git a/assets/icons/plushies/Theo.png.import b/assets/icons/plushies/Theo.png.import new file mode 100644 index 00000000..ef01dd09 --- /dev/null +++ b/assets/icons/plushies/Theo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Theo.png-369e275126c051a31abbd78435544055.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Theo.png" +dest_files=[ "res://.import/Theo.png-369e275126c051a31abbd78435544055.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Tick-Tock.png b/assets/icons/plushies/Tick-Tock.png new file mode 100644 index 00000000..10747c62 Binary files /dev/null and b/assets/icons/plushies/Tick-Tock.png differ diff --git a/assets/icons/plushies/Tick-Tock.png.import b/assets/icons/plushies/Tick-Tock.png.import new file mode 100644 index 00000000..bf79b6e0 --- /dev/null +++ b/assets/icons/plushies/Tick-Tock.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Tick-Tock.png-45c1ec32932f6fe9907e860b895ac04f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Tick-Tock.png" +dest_files=[ "res://.import/Tick-Tock.png-45c1ec32932f6fe9907e860b895ac04f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Tonkus.png b/assets/icons/plushies/Tonkus.png new file mode 100644 index 00000000..4270c142 Binary files /dev/null and b/assets/icons/plushies/Tonkus.png differ diff --git a/assets/icons/plushies/Tonkus.png.import b/assets/icons/plushies/Tonkus.png.import new file mode 100644 index 00000000..08b71d00 --- /dev/null +++ b/assets/icons/plushies/Tonkus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Tonkus.png-0386933024966a1120f65ca170fed6c9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Tonkus.png" +dest_files=[ "res://.import/Tonkus.png-0386933024966a1120f65ca170fed6c9.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Ucho.png b/assets/icons/plushies/Ucho.png new file mode 100644 index 00000000..2717ae4b Binary files /dev/null and b/assets/icons/plushies/Ucho.png differ diff --git a/assets/icons/plushies/Ucho.png.import b/assets/icons/plushies/Ucho.png.import new file mode 100644 index 00000000..5b57acb8 --- /dev/null +++ b/assets/icons/plushies/Ucho.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Ucho.png-0060aa89926bd74a48a186e1903b4eff.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Ucho.png" +dest_files=[ "res://.import/Ucho.png-0060aa89926bd74a48a186e1903b4eff.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Urley.png b/assets/icons/plushies/Urley.png new file mode 100644 index 00000000..d0a240d6 Binary files /dev/null and b/assets/icons/plushies/Urley.png differ diff --git a/assets/icons/plushies/Urley.png.import b/assets/icons/plushies/Urley.png.import new file mode 100644 index 00000000..635d99ef --- /dev/null +++ b/assets/icons/plushies/Urley.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Urley.png-03b66c7340739078efc9fd3eb06f7a6f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Urley.png" +dest_files=[ "res://.import/Urley.png-03b66c7340739078efc9fd3eb06f7a6f.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Voido.png b/assets/icons/plushies/Voido.png new file mode 100644 index 00000000..612a1d00 Binary files /dev/null and b/assets/icons/plushies/Voido.png differ diff --git a/assets/icons/plushies/Voido.png.import b/assets/icons/plushies/Voido.png.import new file mode 100644 index 00000000..66b815f5 --- /dev/null +++ b/assets/icons/plushies/Voido.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Voido.png-b682ce53c6f2debe35fd409fe585fa53.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Voido.png" +dest_files=[ "res://.import/Voido.png-b682ce53c6f2debe35fd409fe585fa53.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/icons/plushies/Xibam.png b/assets/icons/plushies/Xibam.png new file mode 100644 index 00000000..9304c28a Binary files /dev/null and b/assets/icons/plushies/Xibam.png differ diff --git a/assets/icons/plushies/Xibam.png.import b/assets/icons/plushies/Xibam.png.import new file mode 100644 index 00000000..6b6c74d1 --- /dev/null +++ b/assets/icons/plushies/Xibam.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Xibam.png-82ff088c34eb6c6d340261a891050f23.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/plushies/Xibam.png" +dest_files=[ "res://.import/Xibam.png-82ff088c34eb6c6d340261a891050f23.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/journal/advanced/Leviathan.png b/assets/journal/advanced/Leviathan.png new file mode 100644 index 00000000..991e1fae Binary files /dev/null and b/assets/journal/advanced/Leviathan.png differ diff --git a/assets/journal/advanced/Leviathan.png.import b/assets/journal/advanced/Leviathan.png.import new file mode 100644 index 00000000..0814f19c --- /dev/null +++ b/assets/journal/advanced/Leviathan.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Leviathan.png-659979970df50650137406eaf283b826.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/journal/advanced/Leviathan.png" +dest_files=[ "res://.import/Leviathan.png-659979970df50650137406eaf283b826.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/assets/tutorial/shop/card_pool.png b/assets/tutorial/shop/card_pool.png index 60db1a1d..30c4666e 100644 Binary files a/assets/tutorial/shop/card_pool.png and b/assets/tutorial/shop/card_pool.png differ diff --git a/assets/tutorial/shop/curios.png b/assets/tutorial/shop/curios.png deleted file mode 100644 index 6414e314..00000000 Binary files a/assets/tutorial/shop/curios.png and /dev/null differ diff --git a/assets/tutorial/shop/plushies.png b/assets/tutorial/shop/plushies.png new file mode 100644 index 00000000..0f1e9852 Binary files /dev/null and b/assets/tutorial/shop/plushies.png differ diff --git a/assets/tutorial/shop/plushies.png.import b/assets/tutorial/shop/plushies.png.import new file mode 100644 index 00000000..1cce840f --- /dev/null +++ b/assets/tutorial/shop/plushies.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/plushies.png-5a27955a10c3a2da026795fa916a2d2d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/tutorial/shop/plushies.png" +dest_files=[ "res://.import/plushies.png-5a27955a10c3a2da026795fa916a2d2d.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/payload.json b/payload.json new file mode 100644 index 00000000..27abfa1e --- /dev/null +++ b/payload.json @@ -0,0 +1 @@ +{"uid":[58], "input": "I found myself in an philosophical argument with a clown"} diff --git a/preview.jpg b/preview.jpg index 4f926b5f..1e49e3e7 100644 Binary files a/preview.jpg and b/preview.jpg differ diff --git a/preview2.jpg b/preview2.jpg index a4124ff5..37bdedd2 100644 Binary files a/preview2.jpg and b/preview2.jpg differ diff --git a/preview3.jpg b/preview3.jpg index d1037f17..e3a5f435 100644 Binary files a/preview3.jpg and b/preview3.jpg differ diff --git a/preview4.jpg b/preview4.jpg index b941c551..497bb814 100644 Binary files a/preview4.jpg and b/preview4.jpg differ diff --git a/preview5.jpg b/preview5.jpg index 5f750782..436dd631 100644 Binary files a/preview5.jpg and b/preview5.jpg differ diff --git a/preview6.jpg b/preview6.jpg new file mode 100644 index 00000000..ed4fc174 Binary files /dev/null and b/preview6.jpg differ diff --git a/preview6.jpg.import b/preview6.jpg.import new file mode 100644 index 00000000..b07cfc71 --- /dev/null +++ b/preview6.jpg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/preview6.jpg-d03cb547b421d7eecd5f501edfad57ab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://preview6.jpg" +dest_files=[ "res://.import/preview6.jpg-d03cb547b421d7eecd5f501edfad57ab.stex" ] + +[params] + +compress/mode=1 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/preview_cards.jpg b/preview_cards.jpg index 785de372..974200da 100644 Binary files a/preview_cards.jpg and b/preview_cards.jpg differ diff --git a/project.godot b/project.godot index bf258e59..7c7af6ca 100644 --- a/project.godot +++ b/project.godot @@ -534,6 +534,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://src/dreamscape/CardBack.gd" }, { +"base": "ScriptingBus", +"class": "HypnagoniaScriptingBus", +"language": "GDScript", +"path": "res://src/dreamscape/Globals/ScriptingBus.gd" +}, { "base": "Reference", "class": "IconAnimMessage", "language": "GDScript", @@ -749,6 +754,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://src/core/ScriptingEngine/ScriptTask.gd" }, { +"base": "Node", +"class": "ScriptingBus", +"language": "GDScript", +"path": "res://src/core/ScriptingBus.gd" +}, { "base": "Reference", "class": "ScriptingEngine", "language": "GDScript", @@ -1000,6 +1010,7 @@ _global_script_class_icons={ "Hand": "", "Highlight": "", "HypnagoniaCardBack": "", +"HypnagoniaScriptingBus": "", "IconAnimMessage": "", "ImageLibrary": "", "IntegerLineEdit": "", @@ -1043,6 +1054,7 @@ _global_script_class_icons={ "ScriptPer": "", "ScriptProperties": "", "ScriptTask": "", +"ScriptingBus": "", "ScriptingEngine": "", "SecondaryChoiceSlide": "", "SelectionDeck": "", @@ -1087,6 +1099,7 @@ cfc="*res://src/core/CFControl.gd" globals="*res://src/dreamscape/Globals/Globals.gd" SoundManager="*res://addons/sound_manager/module/SoundManager.tscn" EventBus="*res://src/dreamscape/Globals/EventBus.gd" +scripting_bus="*res://src/dreamscape/Globals/ScriptingBus.gd" [display] diff --git a/shaders/dissolve.tres b/shaders/dissolve.tres index 8795d0da..6ef3402f 100644 --- a/shaders/dissolve.tres +++ b/shaders/dissolve.tres @@ -1,19 +1,19 @@ [gd_resource type="ShaderMaterial" load_steps=4 format=2] [sub_resource type="Shader" id=1] -code = "shader_type canvas_item; - -// https://godotshaders.com/shader/simple-2d-dissolve/ -// Licence: CC0 - -uniform sampler2D dissolve_texture : hint_albedo; -uniform float dissolve_value : hint_range(0,1); - -void fragment(){ - vec4 main_texture = texture(TEXTURE, UV); - vec4 noise_texture = texture(dissolve_texture, UV); - main_texture.a *= floor(dissolve_value + min(1, noise_texture.x)); - COLOR = main_texture; +code = "shader_type canvas_item; + +// https://godotshaders.com/shader/simple-2d-dissolve/ +// Licence: CC0 + +uniform sampler2D dissolve_texture : hint_albedo; +uniform float dissolve_value : hint_range(0,1); + +void fragment(){ + vec4 main_texture = texture(TEXTURE, UV); + vec4 noise_texture = texture(dissolve_texture, UV); + main_texture.a *= floor(dissolve_value + min(1, noise_texture.x)); + COLOR = main_texture; }" [sub_resource type="OpenSimplexNoise" id=2] diff --git a/src/core/CFControl.gd b/src/core/CFControl.gd index 2f2f8b27..be544f81 100644 --- a/src/core/CFControl.gd +++ b/src/core/CFControl.gd @@ -53,8 +53,6 @@ var card_definitions := {} var set_scripts := {} # This will store all card scripts, including their format placeholders var unmodified_set_scripts := {} -# A class to propagate script triggers to all cards. -var signal_propagator = SignalPropagator.new() # A dictionary of all our container nodes for easy access var NMAP: Dictionary # The card actively being dragged @@ -421,57 +419,3 @@ func _exit_tree(): # The SignalPropagator is responsible for collecting all card signals # and asking all cards to check if there's any automation they need to perform -class SignalPropagator: - - # This propagates a signal generally, so everything else knows to pick it up from here. - # This means signals caught by the signal propagator can be used by anything else, not just cards. - signal signal_received(trigger_card, trigger, details) - # The working signals cards might send depending on their status changes - # this array can be extended by signals added by other games - var known_card_signals := [ - "card_rotated", - "card_flipped", - "card_viewed", - "card_moved_to_board", - "card_moved_to_pile", - "card_moved_to_hand", - "card_token_modified", - "card_attached", - "card_unattached", - "card_targeted", - "card_properties_modified", - ] - - # When a new card is instanced, it connects all its known signals - # to the SignalPropagator - func connect_new_card(card): - for sgn in known_card_signals: - card.connect(sgn, self, "_on_signal_received") - - - # When a known signal is received, it asks all existing cards to check - # If this triggers an automation for them - # - # This method requirses that each signal also passes its own name in the - # trigger variable, is this is the key sought in the CardScriptDefinitions - func _on_signal_received( - trigger_card: Card, trigger: String, details: Dictionary): - # We use Godot groups to ask every card to check if they - # have [ScriptingEngine] triggers for this signal. - # - # I don't know why, but if I use simply call_group(), this will - # not execute on a "self" subject - # when the trigger card has a grid_autoplacement set, and the player - # drags the card on the grid itself. If the player drags the card - # To an empty spot, it works fine - # It also fails to execute if I use any other flag than GROUP_CALL_UNIQUE - for card in cfc.get_tree().get_nodes_in_group("cards"): - card.execute_scripts(trigger_card,trigger,details) - # If we need other objects than cards to trigger scripts via signals - # add them to the 'scriptables' group ang ensure they have - # an "execute_scripts" function - for card in cfc.get_tree().get_nodes_in_group("scriptables"): - card.execute_scripts(trigger_card,trigger,details) -# cfc.get_tree().call_group_flags(SceneTree.GROUP_CALL_UNIQUE ,"cards", -# "execute_scripts",trigger_card,trigger,details) - emit_signal("signal_received", trigger_card, trigger, details) diff --git a/src/core/Card/TargetingArrow.gd b/src/core/Card/TargetingArrow.gd index e43cb3f9..9361e9b0 100644 --- a/src/core/Card/TargetingArrow.gd +++ b/src/core/Card/TargetingArrow.gd @@ -59,7 +59,7 @@ func complete_targeting() -> void: if owner_object.get_parent() != null \ and owner_object.get_parent().name != "Viewport": # We make the targeted card also emit a targeting signal for automation - tc.emit_signal("card_targeted", tc, "card_targeted", + scripting_bus.emit_signal("card_targeted", tc, {"targeting_source": owner_object}) target_object = tc emit_signal("target_selected",target_object) diff --git a/src/core/CardContainer.gd b/src/core/CardContainer.gd index cf709b8b..9dfb0461 100644 --- a/src/core/CardContainer.gd +++ b/src/core/CardContainer.gd @@ -5,6 +5,7 @@ extends Area2D # warning-ignore:unused_signal signal shuffle_completed +signal card_added(card) # The various automatic Anchors possible for a CardContainer # NONE means the container will not stay anchored to the screen @@ -414,3 +415,9 @@ func re_place(): # Finally, we move to the right location. position = place call_deferred("_init_control_size") + + +func add_child(node, _legible_unique_name=false) -> void: + if node is Card: + .add_child(node) + emit_signal("card_added", node) diff --git a/src/core/CardTemplate.gd b/src/core/CardTemplate.gd index 46d1fccb..a871a5a7 100644 --- a/src/core/CardTemplate.gd +++ b/src/core/CardTemplate.gd @@ -69,38 +69,6 @@ const _TARGETING_SCENE_FILE = CFConst.PATH_CORE + "Card/TargetingArrow.tscn" const _TARGETING_SCENE = preload(_TARGETING_SCENE_FILE) -# Emitted whenever the card is rotated -# The signal must send its name as well (in the trigger var) -# Because it's sent by the SignalPropagator to all cards and they use it -# To filter. -signal card_rotated(card,trigger,details) -# Emitted whenever the card flips up/down -signal card_flipped(card,trigger,details) -# Emitted whenever the card is viewed while face-down -signal card_viewed(card,trigger,details) -# Emited whenever the card is moved to the board -signal card_moved_to_board(card,trigger,details) -# Emited whenever the card is moved to a pile -signal card_moved_to_pile(card,trigger,details) -# Emited whenever the card is moved to a hand -signal card_moved_to_hand(card,trigger,details) -# Emited whenever the card's tokens are modified -# warning-ignore:unused_signal -signal card_token_modified(card,trigger,details) -# Emited whenever the card attaches to another -signal card_attached(card,trigger,details) -# Emited whenever the card unattaches from another -signal card_unattached(card,trigger,details) -# Emited whenever the card properties are modified -signal card_properties_modified(card,trigger,details) -# Emited whenever the card is targeted by another card. -# This signal is not fired by this card directly, but by the card -# doing the targeting. -# warning-ignore:unused_signal -signal card_targeted(card,trigger,details) -## These signals are not connected to the signal propagator and are expected to be -## used internally from this object - # Sent when the player start dragging the card signal dragging_started(card) # Sent when the card's state changes @@ -278,7 +246,7 @@ var _original_layouts:= {} # This flag not used in the core CGF, but games build on it can use # This flag to prevent the player from "double-dipping" on a script # while animations are playing. -var is_executing_scripts := false +var is_executing_scripts = false # If this card is freshly spawned, this variable will hold the CardContainer # which is the final constainer to put it in var spawn_destination @@ -320,7 +288,7 @@ func _ready() -> void: $Control.connect("gui_input", self, "_on_Card_gui_input") # warning-ignore:return_value_discarded $Control.connect("tree_exiting", self, "_on_tree_exiting") - cfc.signal_propagator.connect_new_card(self) + scripting_bus.connect("scripting_event_triggered", self, "execute_scripts") func _init_card_layout() -> void: # Because we duplicate the card when adding to the viewport focus @@ -641,10 +609,9 @@ func modify_property( retcode = CFConst.ReturnCode.FAILED else: if not is_init: - emit_signal( + scripting_bus.emit_signal( "card_properties_modified", self, - "card_properties_modified", { "property_name": property, "new_property_value": value, @@ -905,10 +872,9 @@ func set_is_faceup( # When the faceup has the instant switch, it's typically a built-in # action, which we don't want trigerring scripts if not instant: - emit_signal( + scripting_bus.emit_signal( "card_flipped", self, - "card_flipped", { "is_faceup": value, "tags": tags, @@ -951,7 +917,7 @@ func set_is_viewed(value: bool) -> int: retcode = CFConst.ReturnCode.CHANGED # We only emit a signal when we view the card # not when we unview it as that happens naturally - emit_signal("card_viewed", self, "card_viewed", {"is_viewed": true}) + scripting_bus.emit_signal("card_viewed", self, {"is_viewed": true}) else: if value == is_viewed: retcode = CFConst.ReturnCode.OK @@ -1084,9 +1050,8 @@ func set_card_rotation( #$Control/Tokens.rotation_degrees = -value # need to figure this out # When the card actually changes orientation # We report that it changed. - emit_signal( + scripting_bus.emit_signal( "card_rotated", self, - "card_rotated", { "degrees": value, "tags": tags, @@ -1227,9 +1192,8 @@ func move_to(targetHost: Node, card_rotation = 0 _target_rotation = _recalculate_rotation() set_state(CardState.MOVING_TO_CONTAINER) - emit_signal("card_moved_to_hand", + scripting_bus.emit_signal("card_moved_to_hand", self, - "card_moved_to_hand", { "destination": targetHost.name, "source": parentHost.name, @@ -1267,9 +1231,8 @@ func move_to(targetHost: Node, _target_position = targetHost.get_stack_position(self) _target_rotation = 0.0 set_state(CardState.MOVING_TO_CONTAINER) - emit_signal("card_moved_to_pile", + scripting_bus.emit_signal("card_moved_to_pile", self, - "card_moved_to_pile", { "destination": targetHost.name, "source": parentHost.name, @@ -1311,9 +1274,8 @@ func move_to(targetHost: Node, _determine_target_position_from_mouse() raise() set_state(CardState.DROPPING_TO_BOARD) - emit_signal("card_moved_to_board", + scripting_bus.emit_signal("card_moved_to_board", self, - "card_moved_to_board", { "destination": targetHost.name, "source": parentHost.name, @@ -1433,6 +1395,8 @@ func execute_scripts( # We select which scripts to run from the card, based on it state var state_exec := get_state_exec() var any_state_scripts = card_scripts.get('all', []) + if trigger == 'autoplay': + pass state_scripts = card_scripts.get(state_exec, any_state_scripts) # Here we check for confirmation of optional trigger effects # There should be an SP.KEY_IS_OPTIONAL definition per state @@ -1468,7 +1432,7 @@ func execute_scripts( # We do not statically type it as this causes a circular reference var sceng = null if len(state_scripts): - is_executing_scripts = true + is_executing_scripts = trigger # This evocation of the ScriptingEngine, checks the card for # cost-defined tasks, and performs a dry-run on them # to ascertain whether they can all be paid, @@ -1588,9 +1552,8 @@ func attach_to_host( # also became an attachment here. if current_host_card and not is_following_previous_host: current_host_card.attachments.erase(self) - emit_signal("card_unattached", + scripting_bus.emit_signal("card_unattached", self, - "card_unattached", {"host": current_host_card, "tags": tags}) # If card was on a grid slot, we clear that occupation if _placement_slot: @@ -1619,10 +1582,7 @@ func attach_to_host( * CFConst.ATTACHMENT_OFFSET[attachment_offset].x, (attach_index + 1)* card_size.y * CFConst.ATTACHMENT_OFFSET[attachment_offset].y)) - emit_signal("card_attached", - self, - "card_attached", - {"host": host, "tags": tags}) + scripting_bus.emit_signal("card_attached", self, {"host": host, "tags": tags}) # Overrides the built-in get_class to @@ -2075,9 +2035,8 @@ func _tween_interpolate_visibility(visibility: float, time: float) -> void: # It is typically called when a card is removed from the table func _clear_attachment_status(tags := ["Manual"]) -> void: if current_host_card: - emit_signal("card_unattached", + scripting_bus.emit_signal("card_unattached", self, - "card_unattached", {"host": current_host_card, "tags": tags}) current_host_card.attachments.erase(self) current_host_card = null @@ -2671,7 +2630,8 @@ func _process_card_state() -> void: _tween.start() yield(_tween, "tween_all_completed") _tween_stuck_time = 0 - move_to(spawn_destination) + move_to(spawn_destination, -1, null, ["Scripted", "Spawned"]) + scripting_bus.emit_signal("card_spawned", self, {"tags": ["Scripted", "Spawned"]}) spawn_destination = null diff --git a/src/core/CardViewer/CVPreviewPopup.gd b/src/core/CardViewer/CVPreviewPopup.gd index 38883604..4baaf913 100644 --- a/src/core/CardViewer/CVPreviewPopup.gd +++ b/src/core/CardViewer/CVPreviewPopup.gd @@ -6,6 +6,8 @@ extends Popup signal placement_initialized # The card currently being shown in a popup. var preview_card: Card +# A seondary preview which is shown for example when the card is spawning a different card +var secondary_preview_card: Card var _tween_wait := 0 var _placement_initialized := false var _visible = true @@ -51,6 +53,9 @@ func _set_placement() -> void: focus_info.rect_size.x = 0.0 focus_info.rect_position.y = 0 focus_info.rect_position.x = preview_card.canonical_size.x * preview_card.preview_scale * cfc.curr_scale + if secondary_preview_card: + secondary_preview_card.position.y = preview_card.canonical_size.y * preview_card.preview_scale * cfc.curr_scale + secondary_preview_card.position.x = 20 if not _placement_initialized: _placement_initialized = true emit_signal("placement_initialized") @@ -76,19 +81,24 @@ func get_preview_placement() -> Vector2: ret.x = get_global_mouse_position().x - card_size.x - 20 - focus_panel_offset else: ret.x = get_global_mouse_position().x + 20 + var secondary_card_y = 0 + if secondary_preview_card: + var secondary_card_size : Vector2 = secondary_preview_card.canonical_size * secondary_preview_card.preview_scale * cfc.curr_scale + secondary_card_y = secondary_card_size.y var card_offscreen_y = get_global_mouse_position().y\ - + card_size.y + + card_size.y\ + + secondary_card_y var focus_offscreen_y = get_global_mouse_position().y + focus_info.rect_size.y if card_offscreen_y > focus_offscreen_y\ and is_instance_valid(preview_card)\ and card_offscreen_y > get_viewport().size.y: ret.y = get_viewport().size.y\ - card_size.y\ - + 30 + - secondary_card_y elif card_offscreen_y < focus_offscreen_y\ and focus_offscreen_y > get_viewport().size.y: ret.y = get_viewport().size.y\ - - focus_info.rect_size.y + 30 + - focus_info.rect_size.y else: ret.y = get_global_mouse_position().y + 30 # print_debug(ret) @@ -113,7 +123,16 @@ func show_preview_card(card) -> void: if CFConst.VIEWPORT_FOCUS_ZOOM_TYPE == "resize": preview_card.resize_recursively(preview_card._control, preview_card.preview_scale * cfc.curr_scale) preview_card.card_front.scale_to(preview_card.preview_scale * cfc.curr_scale) - cfc.ov_utils.populate_info_panels(preview_card,focus_info) + var linked_terms : Dictionary = cfc.ov_utils.populate_info_panels(preview_card,focus_info) + var sec_pr_card_name = preview_card.get_property("_secondary_preview_card") + if sec_pr_card_name: + if not has_secondary_preview_card(): + secondary_preview_card = cfc.instance_card(sec_pr_card_name) + add_child(secondary_preview_card) + if CFConst.VIEWPORT_FOCUS_ZOOM_TYPE == "resize": + secondary_preview_card.resize_recursively(secondary_preview_card._control, secondary_preview_card.preview_scale * cfc.curr_scale) + secondary_preview_card.card_front.scale_to(secondary_preview_card.preview_scale * cfc.curr_scale) + cfc.ov_utils.populate_info_panels(secondary_preview_card,focus_info, linked_terms) call_deferred("_set_placement") mouse_filter = Control.MOUSE_FILTER_IGNORE visible = true @@ -145,3 +164,8 @@ func _on_viewport_resized() -> void: # else returns false func has_preview_card() -> bool: return(is_instance_valid(preview_card)) + +# Returns true if the preview_card variable has a valid Card instance +# else returns false +func has_secondary_preview_card() -> bool: + return(is_instance_valid(secondary_preview_card)) diff --git a/src/core/CardViewer/CVPreviewPopup.tscn b/src/core/CardViewer/CVPreviewPopup.tscn index e092ef2e..6891d526 100644 --- a/src/core/CardViewer/CVPreviewPopup.tscn +++ b/src/core/CardViewer/CVPreviewPopup.tscn @@ -4,7 +4,6 @@ [ext_resource path="res://src/core/DetailPanels.gd" type="Script" id=2] [node name="PreviewPopup" type="Popup" groups=["card_preview"]] -visible = true modulate = Color( 1, 1, 1, 0 ) margin_right = 40.0 margin_bottom = 40.0 diff --git a/src/core/Counters.gd b/src/core/Counters.gd index 2ba5d75e..041b3a7a 100644 --- a/src/core/Counters.gd +++ b/src/core/Counters.gd @@ -7,8 +7,6 @@ class_name Counters extends Control -signal counter_modified(card,trigger,details) - # Hold the actual values of the various counters requested var counters := {} # Holds the label nodes which display the counter values to the user @@ -51,10 +49,7 @@ var value_node: String func _ready() -> void: - # For the counter signal, we "push" connect it instead from this node. - # warning-ignore:return_value_discarded - self.connect("counter_modified", cfc.signal_propagator, "_on_signal_received") - + pass # This function should be called by the _ready() function of the script which # extends thic class, after it has set all the necessary variables. @@ -119,10 +114,9 @@ func mod_counter(counter_name: String, _set_counter(counter_name,value) else: _set_counter(counter_name, counters[counter_name] + value) - emit_signal( + scripting_bus.emit_signal( "counter_modified", requesting_object, - "counter_modified", { SP.TRIGGER_COUNTER_NAME: counter_name, SP.TRIGGER_PREV_COUNT: prev_value, @@ -203,6 +197,7 @@ func set_temp_counter_modifiers(sceng, task, requesting_object, modifier) -> voi sceng.connect("single_task_completed", self, "_on_single_task_completed") func _on_single_task_completed(script_task) -> void: + # warning-ignore:return_value_discarded temp_count_modifiers.erase(script_task) # Overridable function to update the various counters. diff --git a/src/core/Hand.gd b/src/core/Hand.gd index e9d64d86..847fba2b 100644 --- a/src/core/Hand.gd +++ b/src/core/Hand.gd @@ -12,6 +12,8 @@ enum ExcessCardsBehaviour { DISCARD_OLDEST } +signal card_drawn(card) + # The maximum amount of cards allowed to draw in this hand # Offsets the hand position based on the configuration var bottom_margin: float = card_size.y * CFConst.BOTTOM_MARGIN_MULTIPLIER @@ -96,6 +98,7 @@ func draw_card(pile : Pile = cfc.NMAP.deck) -> Card: # A basic function to pull a card from out deck into our hand. if card: card.move_to(self) + emit_signal("card_drawn",card) return(card) diff --git a/src/core/Highlight.gd b/src/core/Highlight.gd index 48f497bd..acf7ee22 100644 --- a/src/core/Highlight.gd +++ b/src/core/Highlight.gd @@ -4,8 +4,9 @@ extends Control # Stores a reference to the Card that is hosting this node onready var owner_node = get_parent().get_parent() -onready var _left_right := $LeftRight -onready var _top_bottom := $TopBottom +# We use find_node as these nodes might not always exist and are then not used +onready var _left_right := find_node("LeftRight") +onready var _top_bottom := find_node("TopBottom") func _ready() -> void: pass diff --git a/src/core/OverridableUtils.gd b/src/core/OverridableUtils.gd index a5cf7b99..4788548a 100644 --- a/src/core/OverridableUtils.gd +++ b/src/core/OverridableUtils.gd @@ -11,8 +11,9 @@ const _CARD_SELECT_SCENE = preload(_CARD_SELECT_SCENE_FILE) # Populates the info panels under the card, when it is shown in the # viewport focus or deckbuilder -func populate_info_panels(card: Card, focus_info: DetailPanels) -> void: - focus_info.hide_all_info() +func populate_info_panels(card: Card, focus_info: DetailPanels, linked_terms := {}) -> Dictionary: + if linked_terms.empty(): + focus_info.hide_all_info() var card_illustration = card.get_property("_illustration") if card_illustration: focus_info.show_illustration("Illustration by: " + card_illustration) @@ -26,6 +27,7 @@ func populate_info_panels(card: Card, focus_info: DetailPanels) -> void: for keyword in card_keywords: if CardConfig.EXPLANATIONS.has(keyword): focus_info.add_info(keyword, CardConfig.EXPLANATIONS[keyword]) + return(linked_terms) func get_subjects(_subject_request, _stored_integer : int = 0) -> Array: return([]) diff --git a/src/core/Pile.gd b/src/core/Pile.gd index d50d2c09..8d510f1e 100644 --- a/src/core/Pile.gd +++ b/src/core/Pile.gd @@ -5,7 +5,6 @@ extends CardContainer signal popup_closed - var is_popup_open := false # Used to avoid performance-heavy checks in process var _has_cards := false @@ -52,15 +51,6 @@ func _ready(): # warning-ignore:return_value_discarded $ViewPopup.connect("about_to_show",self,'_on_ViewPopup_about_to_show') set_pile_name(pile_name) - # warning-ignore:return_value_discarded - connect( - "shuffle_completed", - cfc.signal_propagator, - "_on_signal_received", - [ - "shuffle_completed", - {"source": name} - ]) func _process(_delta) -> void: @@ -460,7 +450,7 @@ func shuffle_cards(animate = true) -> void: .shuffle_cards() reorganize_stack() emit_signal("shuffle_completed", self) - + scripting_bus.emit_signal("shuffle_completed", self, {"source": name}) # Overrides the re_place() function of [Pile] in order # to also restack the cards diff --git a/src/core/ScriptingBus.gd b/src/core/ScriptingBus.gd new file mode 100644 index 00000000..2201937c --- /dev/null +++ b/src/core/ScriptingBus.gd @@ -0,0 +1,88 @@ +class_name ScriptingBus +extends Node + +# Emitted whenever a card is rotated +# warning-ignore:unused_signal +signal card_rotated(card,details) +# Emitted whenever a card flips up/down +# warning-ignore:unused_signal +signal card_flipped(card,details) +# Emitted whenever a card is viewed while face-down +# warning-ignore:unused_signal +signal card_viewed(card,details) +# Emited whenever a card is moved to the board +# warning-ignore:unused_signal +signal card_moved_to_board(card,details) +# Emited whenever a card is moved to a pile +# warning-ignore:unused_signal +signal card_moved_to_pile(card,details) +# Emited whenever a card is moved to a hand +# warning-ignore:unused_signal +signal card_moved_to_hand(card,details) +# Emited whenever a card's tokens are modified +# warning-ignore:unused_signal +signal card_token_modified(card,details) +# Emited whenever a card attaches to another +# warning-ignore:unused_signal +signal card_attached(card,details) +# Emited whenever a card unattaches from another +# warning-ignore:unused_signal +signal card_unattached(card,details) +# Emited whenever a card properties are modified +# warning-ignore:unused_signal +signal card_properties_modified(card,details) +# Emited whenever a new card has finished being added to the gane through the scripting engine +# warning-ignore:unused_signal +signal card_spawned(card,details) +# Emited whenever a card is targeted by another card. +# This signal is not fired by this card directly like all the others, +# but instead by the card doing the targeting. +# warning-ignore:unused_signal +signal card_targeted(card,details) +# warning-ignore:unused_signal +signal counter_modified(card,details) +# warning-ignore:unused_signal +signal shuffle_completed(card_container,details) + + +# This signal is not triggerring init_scripting_event() +# It is used to trigger the execute_scripts functions on the various scriptable objects +signal scripting_event_triggered(trigger_card, trigger, details) + +func _ready(): + for s in get_signal_list(): + if s.name == "scripting_event_triggered": + continue + if s.args.size() == 2: + # warning-ignore:return_value_discarded + connect(s.name, self, "init_scripting_event", [s.name]) + elif s.args.size() == 1: + # This means the signal has no details being sent by defult, so we connect it using a dummy dictionary instead + connect(s.name, self, "init_scripting_event", [{}, s.name]) + elif s.args.size() == 0: + # This means the signal sends no args by default, so we just provide dummy vars + connect(s.name, self, "init_scripting_event", [null, {}, s.name]) + +func init_scripting_event(trigger_object: Card = null, details: Dictionary = {}, trigger: String = '') -> void: + if trigger == '': + push_error("WARN: scripting event received with empty trigger name") + return + # We use Godot groups to ask every card to check if they + # have [ScriptingEngine] triggers for this signal. + # + # I don't know why, but if I use simply call_group(), this will + # not execute on a "self" subject + # when the trigger card has a grid_autoplacement set, and the player + # drags the card on the grid itself. If the player drags the card + # To an empty spot, it works fine + # It also fails to execute if I use any other flag than GROUP_CALL_UNIQUE +# for card in cfc.get_tree().get_nodes_in_group("cards"): +# card.execute_scripts(trigger_object,trigger,details) +# # If we need other objects than cards to trigger scripts via signals +# # add them to the 'scriptables' group ang ensure they have +# # an "execute_scripts" function +# for card in cfc.get_tree().get_nodes_in_group("scriptables"): +# card.execute_scripts(trigger_object,trigger,details) +# cfc.get_tree().call_group_flags(SceneTree.GROUP_CALL_UNIQUE ,"cards", +# "execute_scripts",trigger_card,trigger,details) + emit_signal("scripting_event_triggered", trigger_object, trigger, details) diff --git a/src/core/ScriptingEngine/ScriptingEngine.gd b/src/core/ScriptingEngine/ScriptingEngine.gd index 24410c52..96814e58 100644 --- a/src/core/ScriptingEngine/ScriptingEngine.gd +++ b/src/core/ScriptingEngine/ScriptingEngine.gd @@ -447,6 +447,7 @@ func spawn_card(script: ScriptTask) -> void: var alteration = 0 var canonical_name: String = script.get_property(SP.KEY_CARD_NAME) var grid_name: String = script.get_property(SP.KEY_GRID_NAME) + var tags: Array = ["Scripted"] + script.get_property(SP.KEY_TAGS) if str(script.get_property(SP.KEY_OBJECT_COUNT)) == SP.VALUE_RETRIEVE_INTEGER: count = stored_integer if script.get_property(SP.KEY_IS_INVERTED): @@ -484,6 +485,7 @@ func spawn_card(script: ScriptTask) -> void: slot.occupying_card = card card.state = Card.CardState.ON_PLAY_BOARD spawned_cards.append(card) + scripting_bus.emit_signal("card_spawned", card, {"tags": tags}) else: for iter in range(count + alteration): card = cfc.instance_card(canonical_name) @@ -497,6 +499,7 @@ func spawn_card(script: ScriptTask) -> void: card.state = Card.CardState.ON_PLAY_BOARD card.set_to_idle() spawned_cards.append(card) + scripting_bus.emit_signal("card_spawned", card, {"tags": tags}) # We set the spawned cards as the subjects, so that they can be # used by other followup scripts script.subjects = spawned_cards @@ -522,6 +525,7 @@ func spawn_card_to_container(script: ScriptTask) -> void: var alteration = 0 var canonical_name = script.get_property(SP.KEY_CARD_NAME) var card_filters = script.get_property(SP.KEY_CARD_FILTERS) + var tags: Array = ["Scripted"] + script.get_property(SP.KEY_TAGS) if card_filters: var selection_amount = script.get_property(SP.KEY_SELECTION_CHOICES_AMOUNT) var compiled_filters := [] @@ -538,7 +542,7 @@ func spawn_card_to_container(script: ScriptTask) -> void: selection_amount = filtered_cards.size() CFUtils.shuffle_array(filtered_cards) if filtered_cards.size() == 0: - printerr("WARN: Cannot find any cards to spawn with the selected filter for script:\n" + str(script.script_definition)) + push_warning("WARN: Cannot find any cards to spawn with the selected filter for script:\n" + str(script.script_definition)) return if selection_amount < 0: return @@ -591,6 +595,7 @@ func spawn_card_to_container(script: ScriptTask) -> void: else: dest_container.add_child(card) card.set_to_idle() + scripting_bus.emit_signal("card_spawned", card, {"tags": tags}) # We set the drawn cards as the subjects, so that they can be # used by other followup scripts var yield_time = script.get_property(SP.KEY_YIELD_TIME) diff --git a/src/core/SelectionWindow.gd b/src/core/SelectionWindow.gd index d97b8847..03227325 100644 --- a/src/core/SelectionWindow.gd +++ b/src/core/SelectionWindow.gd @@ -1,8 +1,6 @@ class_name SelectionWindow extends AcceptDialog -signal selection_window_opened(selection_window, signal_name, details) -signal card_selected(selection_window, signal_name, details) # The path to the GridCardObject scene. const _GRID_CARD_OBJECT_SCENE_FILE = CFConst.PATH_CORE\ @@ -27,11 +25,6 @@ onready var _tween = $Tween func _ready() -> void: - # For the counter signal, we "push" connect it instead from this node. - # warning-ignore:return_value_discarded - connect("selection_window_opened", cfc.signal_propagator, "_on_signal_received") - # warning-ignore:return_value_discarded - connect("card_selected", cfc.signal_propagator, "_on_signal_received") # warning-ignore:return_value_discarded connect("confirmed", self, "_on_card_selection_confirmed") @@ -171,10 +164,9 @@ func initiate_selection( 0, 1, 0.5, Tween.TRANS_SINE, Tween.EASE_IN) _tween.start() - emit_signal( + scripting_bus.emit_signal( "selection_window_opened", self, - "selection_window_opened", {"card_selection_options": _card_dupe_map.keys()} ) if OS.has_feature("debug") and not cfc.is_testing: @@ -236,9 +228,8 @@ func _on_cancel_pressed() -> void: func _on_card_selection_confirmed() -> void: if is_cancelled: return - emit_signal( + scripting_bus.emit_signal( "card_selected", self, - "card_selected", {"selected_cards": selected_cards} ) diff --git a/src/dreamscape/AI/AIRatings.gd b/src/dreamscape/AI/AIRatings.gd index b3623e7f..7414aa11 100644 --- a/src/dreamscape/AI/AIRatings.gd +++ b/src/dreamscape/AI/AIRatings.gd @@ -24,6 +24,7 @@ func story_rated(classification :int) -> void: return var thread: Thread = Thread.new() threads.append(thread) +# warning-ignore:return_value_discarded thread.start(self, "submit", classification) @@ -39,18 +40,20 @@ func submit(classification: int): "soft_prompt": globals.ai_stories.current_soft_prompt, "kai_instance": "%s:%s" % [cfc.game_settings.get("kai_url",'http://127.0.0.1'),cfc.game_settings.get("kai_port", 5000)], } - var ret = _initiate_rest(HTTPClient.METHOD_POST, "/generation/", data) + var _ret = _initiate_rest(HTTPClient.METHOD_POST, "/generation/", data) func retrieve_evaluating_gens() -> void: var thread: Thread = Thread.new() threads.append(thread) +# warning-ignore:return_value_discarded thread.start(self, "retrieve_gens", true) func retrieve_finalized_gens() -> void: var thread: Thread = Thread.new() threads.append(thread) +# warning-ignore:return_value_discarded thread.start(self, "retrieve_gens", false) @@ -61,6 +64,9 @@ func retrieve_gens(evaluating:= true) -> void: var ret = _initiate_rest(HTTPClient.METHOD_GET, endpoint) if typeof(ret) == TYPE_DICTIONARY: emit_signal("ratings_retrieved", ret, evaluating) + else: + var blah = endpoint.replace("/generations/",'').replace("/",'') + CFUtils.dprint("AIRatings:Could not retrieve %s stories from %s:%s" % [blah,TELEMETRY_URI,TELEMETRY_PORT]) func _initiate_rest(method, endpoint: String, data: Dictionary = {}): diff --git a/src/dreamscape/AI/AIStories.gd b/src/dreamscape/AI/AIStories.gd index 095f3565..4d390b93 100644 --- a/src/dreamscape/AI/AIStories.gd +++ b/src/dreamscape/AI/AIStories.gd @@ -30,13 +30,17 @@ func _ready(): if cfc.is_testing: return add_child(ai_ratings) + # warning-ignore:return_value_discarded ai_ratings.connect("ratings_retrieved", self, "_on_ratings_received") ai_ratings.retrieve_evaluating_gens() ai_ratings.retrieve_finalized_gens() + # warning-ignore:return_value_discarded EventBus.connect("kobodoldai_server_changed", self, "_on_koboldai_server_changed") - var thread: Thread = Thread.new() - thread.start(self, "_init_koboldai_story") - threads.append(thread) + if cfc.game_settings.get("generate_ai", false): + var thread: Thread = Thread.new() + # warning-ignore:return_value_discarded + thread.start(self, "_init_koboldai_story") + threads.append(thread) @@ -53,6 +57,7 @@ func retrieve_story(encounter_story) -> Dictionary: CFUtils.dprint("AIStories:Using evaluating story for " + encounter_story.name) elif stories.has(encounter_story.name): story = stories[encounter_story.name] + # warning-ignore:return_value_discarded stories.erase(encounter_story.name) emit_signal("story_used",StoryTypes.GENERATED) CFUtils.dprint("AIStories:Using generated story for " + encounter_story.name) @@ -71,6 +76,7 @@ func retrieve_story(encounter_story) -> Dictionary: # We don't want to generate a story if there's an unused one already if cfc.game_settings.generate_ai and not stories.has(encounter_story.name): var thread: Thread = Thread.new() + # warning-ignore:return_value_discarded thread.start(self, "regenerate_torment_story", encounter_story) threads.append(thread) return(story) @@ -178,7 +184,7 @@ func _init_koboldai_story() -> void: return if wi.has("entries"): if wi.entries.empty(): - var ret = KoboldAI.put_story() + var _ret = KoboldAI.put_story() CFUtils.dprint("AIStories:Hypnagonia world info loaded.") else: CFUtils.dprint("AIStories:Hypnagonia world info already loaded.") @@ -196,7 +202,7 @@ func _init_koboldai_story() -> void: push_warning("KoboldAI instance not found") return if not model_to_sp.values().has(sp): - var ret = KoboldAI.put_soft_prompt(model_to_sp[model]) + var _ret = KoboldAI.put_soft_prompt(model_to_sp[model]) CFUtils.dprint("AIStories:Hypnagonia soft prompt %s loaded." % [model_to_sp[model]]) current_model = model current_soft_prompt = model_to_sp[model] @@ -211,3 +217,8 @@ func _on_koboldai_server_changed() -> void: var thread: Thread = Thread.new() thread.start(self, "_init_koboldai_story") threads.append(thread) + +# Thread must be disposed (or "joined"), for portability. +func _exit_tree(): + for thread in threads: + thread.wait_to_finish() diff --git a/src/dreamscape/AI/KoboldAI.gd b/src/dreamscape/AI/KoboldAI.gd index 7d850b06..9c4d1fc9 100644 --- a/src/dreamscape/AI/KoboldAI.gd +++ b/src/dreamscape/AI/KoboldAI.gd @@ -12,7 +12,6 @@ static func generate(prompt: String, max_length: int): "disable_output_formatting": false, } # print("generate():" + str(data)) -# print(data) var ret = _initiate_rest(HTTPClient.METHOD_POST, "/api/latest/generate/", data) if ret: return(ret.results[0].text) @@ -85,6 +84,7 @@ static func post_gui_story(prompt: String): static func _initiate_rest(method, endpoint: String, data: Dictionary = {}): +# print([method, endpoint, data]) var http = HTTPClient.new() # Connect to host/port. var err = http.connect_to_host( diff --git a/src/dreamscape/Archetypes.gd b/src/dreamscape/Archetypes.gd index aba57bbd..55fb2dc1 100644 --- a/src/dreamscape/Archetypes.gd +++ b/src/dreamscape/Archetypes.gd @@ -14,14 +14,8 @@ const FLYER:= { Terms.ACTIVE_EFFECTS.impervious.name, Terms.GENERIC_TAGS.relax.name, ], - "Artifacts": [ - ArtifactDefinitions.ImproveImpervious, - ArtifactDefinitions.ConstantImpervious - ], - "Memories": [ - MemoryDefinitions.ImperviousSelf, - MemoryDefinitions.RegenerateSelf, - ], + "Artifacts": [], + "Memories": [], "Perturbations": [ ], @@ -63,13 +57,8 @@ const MAD_SCIENTIST := { Terms.GENERIC_TAGS.spark.name, Terms.ACTIVE_EFFECTS.buffer.name, ], - "Artifacts": [ - ArtifactDefinitions.IncreaseBufferStacks - ], - "Memories": [ - MemoryDefinitions.ReshuffleHand, - MemoryDefinitions.BufferSelf, - ], + "Artifacts": [], + "Memories": [], "Perturbations": [ "Apathy", ], @@ -163,16 +152,8 @@ const FEARLESS:= { Terms.ACTIVE_EFFECTS.poison.name, Terms.ACTIVE_EFFECTS.fortify.name, ], - "Artifacts": [ - ArtifactDefinitions.ImprovePoison, - ArtifactDefinitions.ImproveFortify, - ArtifactDefinitions.IncreasePoisonStacks, - ArtifactDefinitions.StartingFortify, - ], - "Memories": [ - MemoryDefinitions.PoisonEnemy, - MemoryDefinitions.FortifySelf, - ], + "Artifacts": [], + "Memories": [], "Perturbations": [ "Self-Centered", ], @@ -214,14 +195,8 @@ const VINDICTIVE:= { Terms.GENERIC_TAGS.frozen.name, Terms.ACTIVE_EFFECTS.thorns.name, ], - "Artifacts": [ - ArtifactDefinitions.ImproveThorns, - ArtifactDefinitions.StartingThorns, - ], - "Memories": [ - MemoryDefinitions.ThornsSelf, - MemoryDefinitions.FreezeCard, - ], + "Artifacts": [], + "Memories": [], "Perturbations": [ "Self-Centered", ], @@ -280,12 +255,8 @@ const RUBBER_CHICKEN := { Terms.ACTIVE_EFFECTS.disempower.name, Terms.ACTIVE_EFFECTS.buffer.name, ], - "Artifacts": [ - ArtifactDefinitions.IncreaseConfusionStacks - ], - "Memories": [ - MemoryDefinitions.DisempowerEnemy, - ], + "Artifacts": [], + "Memories": [], "Perturbations": [ ], @@ -326,13 +297,8 @@ const LASER_CANNON := { Terms.GENERIC_TAGS.fusion.name, Terms.GENERIC_TAGS.startup.name, ], - "Artifacts": [ - ArtifactDefinitions.DoubleFirstStartup, - ArtifactDefinitions.DoubleFusion, - ], - "Memories": [ - MemoryDefinitions.ActivateStartups, - ], + "Artifacts": [], + "Memories": [], "Perturbations": [ ], @@ -385,15 +351,8 @@ const ABUSIVE_RELATIONSHIP := { Terms.GENERIC_TAGS.purpose.name, Terms.GENERIC_TAGS.exert.name, ], - "Artifacts": [ - ArtifactDefinitions.IncreaseImmersionGain, - ArtifactDefinitions.DecreaseExertStacks, - ArtifactDefinitions.LimitMaxExert, - ], - "Memories": [ - MemoryDefinitions.ExertRecovery, - MemoryDefinitions.ExertSelf, - ], + "Artifacts": [], + "Memories": [], "Starting Artifacts": [ ArtifactDefinitions.EndingHeal ], @@ -438,13 +397,13 @@ const EXPLOITED := { "Tags": [ Terms.GENERIC_TAGS.slumber.name, Terms.ACTIVE_EFFECTS.armor.name, + Terms.GENERIC_TAGS.spawn.name, ], - "Artifacts": [ - ], + "Artifacts": [], "Memories": [ ], "Starting Artifacts": [ - ArtifactDefinitions.SavedForgets + ArtifactDefinitions.SavedForgets, ], "Perturbations": [ diff --git a/src/dreamscape/ArtifactPrep.gd b/src/dreamscape/ArtifactPrep.gd index 2bfcdd53..5938a6eb 100644 --- a/src/dreamscape/ArtifactPrep.gd +++ b/src/dreamscape/ArtifactPrep.gd @@ -84,8 +84,13 @@ func _add_artifact(current_artifact: Dictionary) -> void: format(artifact_format) # This key is used when the artifact is being displayed in-line in the # artifact NCE + var icon_resource_path: String + if typeof(current_artifact.icon) == TYPE_STRING: + icon_resource_path = current_artifact.icon + else: + icon_resource_path = current_artifact.icon.resource_path current_artifact["bbformat"] = { - "icon": current_artifact.icon.resource_path, + "icon": icon_resource_path, "description": current_artifact.description.format(bbcode_formats).format(artifact_format) } selected_artifacts.append(current_artifact) diff --git a/src/dreamscape/Artifacts/AccumulateEnemy.gd b/src/dreamscape/Artifacts/AccumulateEnemy.gd index 870e61ed..140f2319 100644 --- a/src/dreamscape/Artifacts/AccumulateEnemy.gd +++ b/src/dreamscape/Artifacts/AccumulateEnemy.gd @@ -4,5 +4,5 @@ func _on_artifact_added() -> void: var pathos_type : PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.enemy] pathos_type.repressed += pathos_type.get_progression_average()\ * ArtifactDefinitions.AccumulateEnemy.amounts.pathos_avg_multiplier - globals.player.damage -= ArtifactDefinitions.AccumulateEnemy.amounts.relax_amount + globals.player.damage -= ArtifactDefinitions.AccumulateEnemy.amounts.heal_amount _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/ArtifactDefinitions.gd b/src/dreamscape/Artifacts/ArtifactDefinitions.gd index 75eed7b6..6ddc051b 100644 --- a/src/dreamscape/Artifacts/ArtifactDefinitions.gd +++ b/src/dreamscape/Artifacts/ArtifactDefinitions.gd @@ -22,9 +22,9 @@ const GENERIC_BOSS_ARTIFACT_ICON = preload("res://assets/icons/artifacts/boss-ke const MaxHealth := { "canonical_name": "MaxHealth", - "name": "Stress-Ball", + "name": "Stressy", "description": "{artifact_name}: max {anxiety} inreased by {health_amount}", - "icon": preload("res://assets/icons/artifacts/ball-heart.png"), + "icon": "res://assets/icons/plushies/Stress Ball.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -37,9 +37,9 @@ const MaxHealth := { const StartingHeal := { "canonical_name": "StartingHeal", - "name": "Hot Water Bottle", + "name": "Hemlock", "description": "{artifact_name}: At the start of each Ordeal, {relax} for {heal_amount}.", - "icon": preload("res://assets/icons/artifacts/water-flask.png"), + "icon": "res://assets/icons/plushies/Hemlock.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -52,9 +52,9 @@ const StartingHeal := { const EndingHeal := { "canonical_name": "EndingHeal", - "name": "Coffee Beans", + "name": "Hypnos", "description": "{artifact_name}: At the end of each Ordeal, {relax} for {heal_amount}.", - "icon": preload("res://assets/icons/artifacts/coffee-beans.png"), + "icon": "res://assets/icons/plushies/Hypnos.png", "context": EffectContext.BATTLE, "rarity": "Starting", "amounts": { @@ -67,9 +67,9 @@ const EndingHeal := { const FirstPowerAttack := { "canonical_name": "FirstPowerAttack", - "name": "Rosetta Stone", + "name": "Rosetta", "description": "{artifact_name}: Your first {attack} each encounter is increased by {effect_amount}", - "icon": preload("res://assets/icons/artifacts/stone-tablet.png"), + "icon": "res://assets/icons/plushies/Rosetta.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -83,9 +83,9 @@ const FirstPowerAttack := { const StartingCards := { "canonical_name": "StartingCards", - "name": "Knapsack", + "name": "Bagsy", "description": "{artifact_name}: At the start of each Ordeal, draw {draw_amount} cards.", - "icon": preload("res://assets/icons/artifacts/knapsack.png"), + "icon": "res://assets/icons/plushies/Bagsy.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -96,10 +96,10 @@ const StartingCards := { const RepressedEnemyBuff := { "canonical_name": "RepressedEnemyBuff", - "name": "Fruscination", + "name": "Fruscinator", "description": "{artifact_name}: At the start of each Ordeal,"\ + " Gain {effect_stacks} {buffer} for each {mastery_amount} Frustration Mastery you have.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Fruscination.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -114,9 +114,9 @@ const RepressedEnemyBuff := { const StartingImmersion := { "canonical_name": "StartingImmersion", - "name": "Tiny Coala Friend", + "name": "Jojo", "description": "{artifact_name}: At the start of each Ordeal, gain {immersion_amount} {energy}.", - "icon": preload("res://assets/icons/artifacts/koala.png"), + "icon": "res://assets/icons/plushies/Jojo.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -130,9 +130,9 @@ const StartingImmersion := { const StartingStrength := { "canonical_name": "StartingStrength", - "name": "Mechanical Eyeball", + "name": "Eyeballer", "description": "{artifact_name}: At the start of each Ordeal, gain {effect_stacks} {strengthen}.", - "icon": preload("res://assets/icons/artifacts/eyeball.png"), + "icon": "res://assets/icons/plushies/Eyeballer.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -146,9 +146,9 @@ const StartingStrength := { const StartingThorns := { "canonical_name": "StartingThorns", - "name": "Crown of Thorns", + "name": "Crownie", "description": "{artifact_name}: At the start of each Ordeal, gain {effect_stacks} {thorns}.", - "icon": preload("res://assets/icons/artifacts/crown-of-thorns.png"), + "icon": "res://assets/icons/plushies/Crownie.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -162,9 +162,9 @@ const StartingThorns := { const StartingConfidence := { "canonical_name": "StartingConfidence", - "name": "Epic Mustache", + "name": "Mr.Mustache", "description": "{artifact_name}: At the start of each Ordeal, gain {defence_amount} {defence}.", - "icon": preload("res://assets/icons/artifacts/mustache.png"), + "icon": "res://assets/icons/plushies/MrMustache.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -178,10 +178,10 @@ const StartingConfidence := { const ThickImmersion := { "canonical_name": "ThickImmersion", - "name": "Weighted Blanket", + "name": "Capuccino", "description": "{artifact_name}: At that start of each Ordeal turn, gain {immersion_amount} {energy}. "\ + "This effects ends when your deck is reshuffled and you gain {effect_stacks} {vulnerable}.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Cappuccino.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -197,10 +197,10 @@ const ThickImmersion := { const ThickStrength := { "canonical_name": "ThickStrength", - "name": "Extending Eye", + "name": "Sneyel", "description": "{artifact_name}: At that start of each Ordeal turn, gain {effect_stacks} {strengthen}. "\ + "This effects and all added {strengthen} ends when your deck is reshuffled.", - "icon": preload("res://assets/icons/artifacts/eyestalk.png"), + "icon": "res://assets/icons/plushies/Sneyel.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -214,9 +214,9 @@ const ThickStrength := { const UpgradedAction := { "canonical_name": "UpgradedAction", - "name": "Flashlight", + "name": "Gaius", "description": "{artifact_name}: {action} cards added to your deck receive {progress_amount} progress.", - "icon": preload("res://assets/icons/artifacts/flashlight.png"), + "icon": "res://assets/icons/plushies/Gaius.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -227,9 +227,9 @@ const UpgradedAction := { const UpgradedControl := { "canonical_name": "UpgradedControl", - "name": "Candle", + "name": "Arimus", "description": "{artifact_name}: {control} cards added to your deck receive {progress_amount} progress.", - "icon": preload("res://assets/icons/artifacts/candle-light.png"), + "icon": "res://assets/icons/plushies/Arimus.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -240,9 +240,9 @@ const UpgradedControl := { const UpgradedUnderstanding := { "canonical_name": "UpgradedUnderstanding", - "name": "Laser Pointer", + "name": "Emine", "description": "{artifact_name}: {understanding} cards added to your deck receive {progress_amount} progress.", - "icon": preload("res://assets/icons/artifacts/target-laser.png"), + "icon": "res://assets/icons/plushies/Emine.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -253,9 +253,9 @@ const UpgradedUnderstanding := { const UpgradedConcentration := { "canonical_name": "UpgradedConcentration", - "name": "Lantern", + "name": "Evelyn", "description": "{artifact_name}: {concentration} cards added to your deck receive {progress_amount} progress.", - "icon": preload("res://assets/icons/artifacts/old-lantern.png"), + "icon": "res://assets/icons/plushies/Evelyn.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -266,10 +266,10 @@ const UpgradedConcentration := { const ThinCardDraw := { "canonical_name": "ThinCardDraw", - "name": "Light Backpack", + "name": "Packer", "description": "{artifact_name}: Every time you reshuffle the deck, draw {draw_amount} card.\n"\ + "This effect stops for the turn after you draw the same card two times.", - "icon": preload("res://assets/icons/artifacts/light-backpack.png"), + "icon": "res://assets/icons/plushies/Packer.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -280,9 +280,9 @@ const ThinCardDraw := { const ResistDisempower := { "canonical_name": "ResistDisempower", - "name": "ResistConfusion", + "name": "Cyclops", "description": "{artifact_name}: You cannot receive {disempower} anymore.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Cyclops.png", "context": EffectContext.BATTLE, "rarity": "Rare", "linked_terms": [ @@ -293,9 +293,9 @@ const ResistDisempower := { const ResistPoison := { "canonical_name": "ResistPoison", - "name": "Encyclopedia", + "name": "Enycloworm", "description": "{artifact_name}: Any time you would receive {poison} reduce it by {alteration_amount}.", - "icon": preload("res://assets/icons/artifacts/book-pile.png"), + "icon": "res://assets/icons/plushies/Enycloworm.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -309,9 +309,9 @@ const ResistPoison := { const ResistBurn := { "canonical_name": "ResistBurn", - "name": "ResistEnvy", + "name": "Lil' Sprout", "description": "{artifact_name}: Any time you would receive {burn} reduce it by {alteration_amount}.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/LilSprout.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -325,9 +325,9 @@ const ResistBurn := { const ResistVulnerable := { "canonical_name": "ResistVulnerable", - "name": "ResistShaken", + "name": "Nereas", "description": "{artifact_name}: You cannot receive {vulnerable} anymore.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Nereas.png", "context": EffectContext.BATTLE, "rarity": "Rare", "linked_terms": [ @@ -338,9 +338,9 @@ const ResistVulnerable := { const ImproveThorns := { "canonical_name": "ImproveThorns", - "name": "White Rose", + "name": "Ju-On", "description": "{artifact_name}: Any time you would gain {thorns}, gain {alteration_amount} more.", - "icon": preload("res://assets/icons/artifacts/rose.png"), + "icon": "res://assets/icons/plushies/Ju-On.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -354,9 +354,9 @@ const ImproveThorns := { const ImprovePoison := { "canonical_name": "ImprovePoison", - "name": "ImproveDoubt", + "name": "Theo", "description": "{artifact_name}: Any time you would inflict {poison}, inflict {alteration_amount} more.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Theo.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -370,9 +370,9 @@ const ImprovePoison := { const ImproveBurn := { "canonical_name": "ImproveBurn", - "name": "Fancy Lipstick", + "name": "Isabelle", "description": "{artifact_name}: Any time you would inflict {burn}, inflict {alteration_amount} more.", - "icon": preload("res://assets/icons/artifacts/lipstick.png"), + "icon": "res://assets/icons/plushies/Isabelle.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -386,10 +386,10 @@ const ImproveBurn := { const ThickExplosion := { "canonical_name": "ThickExplosion", - "name": "ThickExplosion", + "name": "Tick-Tock", "description": "{artifact_name}: The first time you reshuffle your deck because it run out of cards, "\ - + "{attack} to all enemies for an amount equal to your discard pile size.", - "icon": GENERIC_ARTIFACT_ICON, + + "{attack} all torments for an amount equal to your discard pile size.", + "icon": "res://assets/icons/plushies/Tick-Tock.png", "context": EffectContext.BATTLE, "rarity": "Rare", "linked_terms": [ @@ -400,14 +400,14 @@ const ThickExplosion := { const AccumulateEnemy := { "canonical_name": "AccumulateEnemy", - "name": "Repressed Frustration", - "description": "{artifact_name}: Increase your repressed Frustration. {relax} for {relax_amount}", - "icon": GENERIC_ARTIFACT_ICON, + "name": "Fred", + "description": "{artifact_name}: Increase your repressed Frustration. {relax} for {heal_amount}", + "icon": "res://assets/icons/plushies/Fred.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { "pathos_avg_multiplier": 4, - "relax_amount": 30 + "heal_amount": 30 }, "linked_terms": [ "relax", @@ -415,9 +415,9 @@ const AccumulateEnemy := { } const AccumulateRest := { "canonical_name": "AccumulateRest", - "name": "Repressed Lethargy", + "name": "Flouncer", "description": "{artifact_name}: Increase your repressed Lethargy", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Flouncer.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -426,10 +426,10 @@ const AccumulateRest := { } const AccumulateNCE := { "canonical_name": "AccumulateNCE", - "name": "Repressed Curiosity", + "name": "Mcarthy", "description": "{artifact_name}: Increase your repressed Curiosity"\ + "Increase max {anxiety} by {anxiety_amount}", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Mcarthy.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -439,9 +439,9 @@ const AccumulateNCE := { } const AccumulateShop := { "canonical_name": "AccumulateShop", - "name": "Repress Loneliness", + "name": "Sam", "description": "{artifact_name}: Increase your repressed Loneliness", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Sam.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -450,10 +450,10 @@ const AccumulateShop := { } const AccumulateElite := { "canonical_name": "AccumulateElite", - "name": "Repressed Foreboding", + "name": "Omen", "description": "{artifact_name}: Increase your repressed Foreboding."\ + "Increase max {anxiety} by {anxiety_amount}", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Omen.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -463,9 +463,9 @@ const AccumulateElite := { } const AccumulateArtifact := { "canonical_name": "AccumulateArtifact", - "name": "Repressed Desire", + "name": "Romeo", "description": "{artifact_name}: Increase your repressed Desire", - "icon": preload("res://assets/icons/artifacts/Repressed Desire.png"), + "icon": "res://assets/icons/plushies/Romeo.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -475,9 +475,9 @@ const AccumulateArtifact := { const PowerHeal := { "canonical_name": "PowerHeal", - "name": "Concentrated Rest", + "name": "Crackle", "description": "{artifact_name}: Whenever you play a {power_card}, {relax} for {healing_amount}.", - "icon": preload("res://assets/icons/artifacts/nested-hearts.png"), + "icon": "res://assets/icons/plushies/Crackle.png", "context": EffectContext.BATTLE, "rarity": "Rare", "amounts": { @@ -490,9 +490,9 @@ const PowerHeal := { const PerturbationHeal := { "canonical_name": "PerturbationHeal", - "name": "A taste for liquorice", + "name": "Sweeney", "description": "{artifact_name}: At the start of each Ordeal, {relax} for {heal_amount} per {condition_card} in your draw pile.", - "icon": preload("res://assets/icons/artifacts/pretzel.png"), + "icon": "res://assets/icons/plushies/Sweeney.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -505,9 +505,9 @@ const PerturbationHeal := { const ImproveImpervious := { "canonical_name": "ImproveImpervious", - "name": "Pet Eel", + "name": "Anguilla", "description": "{artifact_name}: {impervious} {stress} reduction on the dreamer is increased by 3% per stack.", - "icon": preload("res://assets/icons/artifacts/Pet Eel.png"), + "icon": "res://assets/icons/plushies/Anguilla.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -521,8 +521,8 @@ const ImproveImpervious := { const ImproveFortify := { "canonical_name": "ImproveFortify", "name": "Ataraxia", - "description": "{artifact_name}: Whenever you lose {fortify}, gain that many stacks {armor}.", - "icon": GENERIC_ARTIFACT_ICON, + "description": "{artifact_name}: Whenever you lose {fortify}, gain that twice that many stacks {armor}.", + "icon": "res://assets/icons/plushies/Ataraxia.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "linked_terms": [ @@ -533,18 +533,18 @@ const ImproveFortify := { const PorcelainDoll := { "canonical_name": "PorcelainDoll", - "name": "Porcelain Doll", + "name": "Porcelain doll", "description": "{colour} {artifact_name} ({progress}): The next {threshold} {card_type} cards you gain, are used to finish colouring the doll.", - "icon": preload("res://assets/icons/artifacts/person.png"), + "icon": "res://assets/icons/artifacts/person.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", } const RedWave := { "canonical_name": "RedWave", - "name": "Inquisite Vibes", + "name": "Gage", "description": "{artifact_name}: At the start of your turn, if your hand has {threshold}+ {attack_card} cards, gain {defence_amount} {defence}", - "icon": preload("res://assets/icons/artifacts/waves_red.png"), + "icon": "res://assets/icons/plushies/Gage.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -558,9 +558,9 @@ const RedWave := { const BlueWave := { "canonical_name": "BlueWave", - "name": "Cool Vibes", + "name": "Azure", "description": "{artifact_name}: At the start of your turn, if your hand has {threshold}+ {skill_card} cards, {attack} all Torments for {damage_amount}.", - "icon": preload("res://assets/icons/artifacts/waves_blue.png"), + "icon": "res://assets/icons/plushies/Azure.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -574,9 +574,9 @@ const BlueWave := { const PurpleWave := { "canonical_name": "PurpleWave", - "name": "Chill Vibes", + "name": "Serene", "description": "{artifact_name}: At the start of your turn, if your hand has {threshold}+ {understanding_card} cards, {relax} for {heal_amount}.", - "icon": preload("res://assets/icons/artifacts/waves_purple.png"), + "icon": "res://assets/icons/plushies/Serene.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -590,10 +590,10 @@ const PurpleWave := { const ProgressiveImmersion := { "canonical_name": "ProgressiveImmersion", - "name": "Progressive Immersion", + "name": "Macchiato", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "You cannot progress cards by playing them during ordeals anymore.", - "icon": GENERIC_BOSS_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Macchiato.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -606,9 +606,9 @@ const ProgressiveImmersion := { const BossCardDraw := { "canonical_name": "BossCardDraw", - "name": "Squishy Brain Toy", + "name": "Brains", "description": "{artifact_name}: Draw {draw_amount} card at the start of each turn", - "icon": GENERIC_BOSS_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Brains.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -618,10 +618,10 @@ const BossCardDraw := { const RandomUpgrades := { "canonical_name": "RandomUpgrades", - "name": "20-sided die", + "name": "Lucky", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "Your card upgrades are chosen randomly.", - "icon": preload("res://assets/icons/artifacts/dice-twenty-faces-twenty.png"), + "icon": "res://assets/icons/plushies/Lucky.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -634,9 +634,9 @@ const RandomUpgrades := { const BetterRareChance := { "canonical_name": "BetterRareChance", - "name": "The Gruyere of Insight", + "name": "Gru", "description": "{artifact_name}: Your chance of finding Rare cards is doubled.", - "icon": preload("res://assets/icons/artifacts/cheese-wedge.png"), + "icon": "res://assets/icons/plushies/Gru.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -646,10 +646,10 @@ const BetterRareChance := { const BossDraft := { "canonical_name": "BossDraft", - "name": "Cool Draft Beer", + "name": "Beear", "description": "{artifact_name}: Choose one of your archetypes. "\ + "Get {draft_amount} card draft choices from it. They all start with {progress_amount} progress.", - "icon": preload("res://assets/icons/artifacts/beer-stein.png"), + "icon": "res://assets/icons/plushies/Beear.png", "context": EffectContext.OVERWORLD, "rarity": "Boss", "amounts": { @@ -660,9 +660,9 @@ const BossDraft := { const FreeCard := { "canonical_name": "FreeCard", - "name": "A Nice Warm Meal", + "name": "Des", "description": "{artifact_name}: A random card in your deck, costing 1 or more {energy}, becomes free.", - "icon": preload("res://assets/icons/artifacts/camp-cooking-pot.png"), + "icon": "res://assets/icons/plushies/Des.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "linked_terms": [ @@ -672,9 +672,9 @@ const FreeCard := { const AddAlphaTag := { "canonical_name": "AddAlphaTag", - "name": "Crystal Ball", + "name": "Alfa", "description": "{artifact_name}: Choose a card in your deck. It gains {alpha}.", - "icon": preload("res://assets/icons/artifacts/crystal-ball.png"), + "icon": "res://assets/icons/plushies/Alfa.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "linked_terms": [ @@ -684,9 +684,9 @@ const AddAlphaTag := { const AddOmegaTag := { "canonical_name": "AddOmegaTag", - "name": "Jigsaw Piece", + "name": "Omegus", "description": "{artifact_name}: Choose a card in your deck. It gains {omega}.", - "icon": preload("res://assets/icons/artifacts/jigsaw-piece.png"), + "icon": "res://assets/icons/plushies/Omegus.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "linked_terms": [ @@ -696,9 +696,9 @@ const AddOmegaTag := { const AddFrozenTag := { "canonical_name": "AddFrozenTag", - "name": "Earworm", + "name": "Numb", "description": "{artifact_name}: Choose a card in your deck. It gains {frozen}.", - "icon": preload("res://assets/icons/artifacts/leeching-worm.png"), + "icon": "res://assets/icons/plushies/Numb.png", "context": EffectContext.OVERWORLD, "rarity": "Rare", "linked_terms": [ @@ -708,9 +708,9 @@ const AddFrozenTag := { const IncreaseRandomDamage := { "canonical_name": "IncreaseRandomDamage", - "name": "Masterwork Looking Glass", + "name": "Mage", "description": "{artifact_name}: A random card doing {attack} in your deck, will increase its {attack} by 1.", - "icon": preload("res://assets/icons/artifacts/Masterwork Looking Glass.png"), + "icon": "res://assets/icons/plushies/Mage.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "linked_terms": [ @@ -720,9 +720,9 @@ const IncreaseRandomDamage := { const IncreaseRandomDefence := { "canonical_name": "IncreaseRandomDefence", - "name": "Fancy Nail Coat", + "name": "Snecko", "description": "{artifact_name}: A random card giving {defence} in your deck, will increase its {defence} by 1.", - "icon": preload("res://assets/icons/artifacts/Fancy Nail Coat.png"), + "icon": "res://assets/icons/plushies/Snek.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "linked_terms": [ @@ -732,9 +732,9 @@ const IncreaseRandomDefence := { const IncreaseConfusionStacks := { "canonical_name": "IncreaseConfusionStacks", - "name": "Smoke Bomb", + "name": "Abacus", "description": "{artifact_name}: Choose a {disempower} card in your deck. Increase the amount of {disempower} stacks it is applying by 1.", - "icon": preload("res://assets/icons/artifacts/smoke-bomb.png"), + "icon": "res://assets/icons/plushies/Abacus.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "linked_terms": [ @@ -744,9 +744,9 @@ const IncreaseConfusionStacks := { const IncreaseImmersionGain := { "canonical_name": "IncreaseImmersionGain", - "name": "Bookmark", + "name": "Dip", "description": "{artifact_name}: Choose an {energy} card in your deck. Increase the amount of {energy} it is providing by 1.", - "icon": preload("res://assets/icons/artifacts/bookmark.png"), + "icon": "res://assets/icons/plushies/Dip.png", "context": EffectContext.OVERWORLD, "rarity": "Rare", "linked_terms": [ @@ -756,9 +756,9 @@ const IncreaseImmersionGain := { const BetterArtifactChance := { "canonical_name": "BetterArtifactChance", - "name": "Supportive Plushie", - "description": "{artifact_name}: The quality of the curios your find is increased.", - "icon": preload("res://assets/icons/artifacts/Supportive Plushie.png"), + "name": "Fortune", + "description": "{artifact_name}: The quality of the {artifacts} your find is increased.", + "icon": "res://assets/icons/plushies/Fortune.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -770,9 +770,9 @@ const BetterArtifactChance := { const StartingDisempower := { "canonical_name": "StartingDisempower", - "name": "StartingDisempower", + "name": "Confoundus", "description": "{artifact_name}: At the start of each Ordeal, apply {effect_stacks} {disempower} to all Torments.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Confoundus.png", "context": EffectContext.BATTLE, "rarity": "Encounter", "amounts": { @@ -785,9 +785,9 @@ const StartingDisempower := { const StartingVulnerable := { "canonical_name": "StartingVulnerable", - "name": "StartingVulnerable", + "name": "Herman", "description": "{artifact_name}: At the start of each Ordeal, apply {effect_stacks} {vulnerable} to all Torments.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Herman.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -800,9 +800,9 @@ const StartingVulnerable := { const ProgressEverything := { "canonical_name": "ProgressEverything", - "name": "ProgressEverything", + "name": "Shelly", "description": "{artifact_name}: All cards added to your deck receive {progress_amount} progress.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Shelly.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -812,9 +812,9 @@ const ProgressEverything := { const IncreaseBufferStacks := { "canonical_name": "IncreaseBufferStacks", - "name": "Increase Fascination Stacks", + "name": "Beezly", "description": "{artifact_name}: Choose a {buffer} card in your deck. Increase the amount of {buffer} stacks it is providing by 1.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Beezly.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "linked_terms": [ @@ -824,9 +824,9 @@ const IncreaseBufferStacks := { const IncreasePoisonStacks := { "canonical_name": "IncreasePoisonStacks", - "name": "Increase Doubt Stacks", + "name": "Scotty", "description": "{artifact_name}: Choose a {doubt} card in your deck. Increase the amount of {doubt} stacks it is providing by 1.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Scotty.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "linked_terms": [ @@ -836,21 +836,22 @@ const IncreasePoisonStacks := { const DecreaseExertStacks := { "canonical_name": "DecreaseExertStacks", - "name": "Decrease Rationalization Stacks", + "name": "Guardian", "description": "{artifact_name}: Choose a {exert} card in your deck. Decrease the amount of {player_health} it is giving by 2.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Guardian.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "linked_terms": [ "player_health", + "exert", ], } const DoubleFirstStartup := { "canonical_name": "DoubleFirstStartup", - "name": "Birthday Gift", + "name": "Kali", "description": "{artifact_name}: One random {startup} effect is triggered twice.", - "icon": preload("res://assets/icons/artifacts/Birthday Gift.png"), + "icon": "res://assets/icons/plushies/Kali.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "linked_terms": [ @@ -860,9 +861,9 @@ const DoubleFirstStartup := { const StrengthenUp := { "canonical_name": "StrengthenUp", - "name": "Buddha Figurine", + "name": "Athene", "description": "{artifact_name}: You can gain {strengthen} during deep torpor.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Athene.png", "context": EffectContext.BATTLE, "rarity": "Rare", "amount": 0, @@ -874,9 +875,9 @@ const StrengthenUp := { const QuickenUp := { "canonical_name": "QuickenUp", - "name": "Chess Set", + "name": "Fortress", "description": "{artifact_name}: You can gain {quicken} during deep torpor.", - "icon": preload("res://assets/icons/artifacts/empty-chessboard.png"), + "icon": "res://assets/icons/plushies/Fortress.png", "context": EffectContext.BATTLE, "rarity": "Rare", "amount": 0, @@ -888,9 +889,9 @@ const QuickenUp := { const EnhanceOnRest := { "canonical_name": "EnhanceOnRest", - "name": "Dream Catcher", + "name": "Somnus", "description": "{artifact_name}: You can enhance cards during deep torpor.", - "icon": preload("res://assets/icons/artifacts/dream-catcher.png"), + "icon": "res://assets/icons/plushies/Somnus.png", "context": EffectContext.OVERWORLD, "rarity": "Rare", "amount": 0, @@ -902,9 +903,9 @@ const EnhanceOnRest := { const UpgradeMemoryOnRest := { "canonical_name": "UpgradeMemoryOnRest", - "name": "Portable Photo Camera", + "name": "Cirrus", "description": "{artifact_name}: You can upgrade your memories during deep torpor.", - "icon": preload("res://assets/icons/artifacts/photo-camera.png"), + "icon": "res://assets/icons/plushies/Cirrus.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amount": 0, @@ -914,8 +915,8 @@ const UpgradeMemoryOnRest := { const ReduceCurioRerollPerturbChance := { # TODO: Tests "canonical_name": "ReduceCurioRerollPerturbChance", "name": "Shamrock", - "description": "{artifact_name}: Reduces the chance to get a {condition_card} when rerolling a Desire curio.", - "icon": preload("res://assets/icons/artifacts/shamrock.png"), + "description": "{artifact_name}: Reduces the chance to get a {condition_card} when rerolling a Desire {artifact}.", + "icon": "res://assets/icons/plushies/Shamrock.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -925,9 +926,9 @@ const ReduceCurioRerollPerturbChance := { # TODO: Tests const IncreaseUpgradedDraftChance := { # TODO: Tests "canonical_name": "IncreaseUpgradedDraftChance", - "name": "Ancient Literature", + "name": "Sphinx", "description": "{artifact_name}: Increases the chance to find an upgraded card when drafting cards.", - "icon": preload("res://assets/icons/artifacts/Ancient Literature.png"), + "icon": "res://assets/icons/plushies/Sphinx.png", "context": EffectContext.OVERWORLD, "rarity": "Uncommon", "amounts": { @@ -937,10 +938,10 @@ const IncreaseUpgradedDraftChance := { # TODO: Tests const NoRest := { "canonical_name": "NoRest", - "name": "Moka Pot", + "name": "Moka", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "You cannot rest during deep torpor anymore.", - "icon": preload("res://assets/icons/artifacts/moka-pot.png"), + "icon": "res://assets/icons/plushies/Moka.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -953,10 +954,10 @@ const NoRest := { const SmallerDrafts := { "canonical_name": "SmallerDrafts", - "name": "Smaller Drafts", + "name": "Voido", "description": "{artifact_name}: You have {immersion_amount} extra {immersion} per turn.\n"\ + "Your choice of cards to draft is reduced by 2 (min 1).", - "icon": GENERIC_BOSS_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Voido.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -969,16 +970,15 @@ const SmallerDrafts := { } - const BirdHouse := { "canonical_name": "BirdHouse", - "name": "Bird House", + "name": "Bokus", "description": "{artifact_name}: Gain or upgrade one random memory\n"\ + "Gain {draft_amount} card\n"\ + "Gain {pathos_masteries} pathos masteries\n"\ + "Gain {health_amount} max {anxiety}\n"\ + "Progress the card requiring the most progress by {progress_amount}\n", - "icon": preload("res://assets/icons/artifacts/bird-house.png"), + "icon": "res://assets/icons/plushies/Bokus.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -994,9 +994,9 @@ const BirdHouse := { const LimitMaxExert := { "canonical_name": "LimitMaxExert", - "name": "Limit Maximum Rationalization", + "name": "Urley", "description": "{artifact_name}: If you've taken at least {exert_amount} during your turn, {exert} cards do not give {anxiety} anymore.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Urley.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -1006,9 +1006,9 @@ const LimitMaxExert := { const ConstantImpervious := { "canonical_name": "ConstantImpervious", - "name": "Golden Feather", + "name": "Fabuloso", "description": "{artifact_name}: At the start of each turn, gain {effect_stacks} {impervious}", - "icon": preload("res://assets/icons/artifacts/Golden Feather.png"), + "icon": "res://assets/icons/plushies/Fabuloso.png", "context": EffectContext.BATTLE, "rarity": "Rare", "amounts": { @@ -1022,9 +1022,9 @@ const ConstantImpervious := { const StartingFortify := { "canonical_name": "StartingFortify", - "name": "Epic Beard", + "name": "Mr.Beard", "description": "{artifact_name}: At the start of each ordeal, gain {effect_stacks} {fortify}.", - "icon": preload("res://assets/icons/artifacts/beard.png"), + "icon": "res://assets/icons/plushies/MrBeard.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -1037,9 +1037,9 @@ const StartingFortify := { const ThickHeal := { "canonical_name": "ThickHeal", - "name": "Fluffy Pillow", + "name": "Poof", "description": "{artifact_name}: Every turn, {relax} for {heal_amount}. Every time you reshuffle your deck, take {exert_amount} {player_health}.", - "icon": preload("res://assets/icons/artifacts/Fluffy Pillow.png"), + "icon": "res://assets/icons/plushies/Poof.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -1054,9 +1054,9 @@ const ThickHeal := { const DoubleProgress := { "canonical_name": "DoubleProgress", - "name": "Search Engine", + "name": "Porodoro", "description": "{artifact_name}: If your deck has {card_amount} or more cards, your card progression in ordeals is doubled.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Porodoro.png", "context": EffectContext.BATTLE, "rarity": "Common", "amounts": { @@ -1069,7 +1069,7 @@ const ThickDeckRareChance := { "canonical_name": "ThickDeckRareChance", "name": "Muumuu", "description": "{artifact_name}: If your deck has {card_amount} or more cards, your chance of finding Rare cards is doubled.", - "icon": preload("res://assets/icons/artifacts/Muumuu.png"), + "icon": "res://assets/icons/plushies/Muumuu.png", "context": EffectContext.OVERWORLD, "rarity": "Common", "amounts": { @@ -1080,9 +1080,9 @@ const ThickDeckRareChance := { const MoreShopMasteries := { "canonical_name": "MoreShopMasteries", - "name": "Passionate Loneliness", + "name": "Donova", "description": "{artifact_name}: Whenever you visit the shop, gain {masteries_amount} {pathos} masteries.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Donova.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -1093,9 +1093,9 @@ const MoreShopMasteries := { const MoreArtifactMasteries := { "canonical_name": "MoreArtifactMasteries", - "name": "Passionate Desire", - "description": "{artifact_name}: Whenever you find a curio, gain {masteries_amount} {pathos} masteries.", - "icon": GENERIC_ARTIFACT_ICON, + "name": "Lina", + "description": "{artifact_name}: Whenever you find a {artifact}, gain {masteries_amount} {pathos} masteries.", + "icon": "res://assets/icons/plushies/Lina.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -1105,9 +1105,9 @@ const MoreArtifactMasteries := { const MoreRestMasteries := { "canonical_name": "MoreRestMasteries", - "name": "Passionate Desire", + "name": "Euhemerist", "description": "{artifact_name}: Whenever you fall in deep torpor, gain {masteries_amount} {pathos} masteries.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Euhemerist.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -1117,9 +1117,9 @@ const MoreRestMasteries := { const MoreEliteMasteries := { "canonical_name": "MoreEliteMasteries", - "name": "Passionate Foreboding", + "name": "Fischer", "description": "{artifact_name}: Whenever you encounter an elite torment, gain {masteries_amount} {pathos} masteries.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Fischer.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -1129,9 +1129,9 @@ const MoreEliteMasteries := { const MoreNCEMasteries := { "canonical_name": "MoreNCEMasteries", - "name": "Passionate Curiosity", + "name": "Demeter", "description": "{artifact_name}: Whenever you encounter a non-ordeal encounter, gain {masteries_amount} {pathos} masteries.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Demeter.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -1141,9 +1141,9 @@ const MoreNCEMasteries := { const MoreEnemyMasteries := { "canonical_name": "MoreEnemyMasteries", - "name": "Passionate Frustration", + "name": "Nikola", "description": "{artifact_name}: Whenever you encounter a normal torment encounter, gain {masteries_amount} {pathos} mastery.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Nikola.png", "context": EffectContext.OVERWORLD, "rarity": "Encounter", "amounts": { @@ -1153,9 +1153,9 @@ const MoreEnemyMasteries := { const LightningMarble := { "canonical_name": "LightningMarble", - "name": "Lightning Marble", + "name": "Pyrrhuloxia", "description": "{artifact_name}: At the end of each turn turn, {attack} one random Torment for {damage_amount}.", - "icon": preload("res://assets/icons/artifacts/Lightning Marble.png"), + "icon": "res://assets/icons/plushies/Pyrrhuloxia.png", "context": EffectContext.BATTLE, "rarity": "Uncommon", "amounts": { @@ -1168,7 +1168,7 @@ const DoubleFusion := { "canonical_name": "DoubleFusion", "name": "Replicator", "description": "{artifact_name}: Whenever you draft a fusion card, gain an extra copy.", - "icon": preload("res://assets/icons/artifacts/tumor.png"), + "icon": "res://assets/icons/plushies/Replicator.png", "context": EffectContext.OVERWORLD, "rarity": "Rare", } @@ -1176,10 +1176,10 @@ const DoubleFusion := { const ThickThorns := { "canonical_name": "ThickThorns", - "name": "Black Rose", + "name": "Rosa", "description": "{artifact_name}: At that start of each Ordeal turn, gain {effect_stacks} {thorns}. "\ + "Lose {detrimental_integer} {thorns} whenever your deck is reshuffled.", - "icon": preload("res://assets/icons/artifacts/Black Rose.png"), + "icon": "res://assets/icons/plushies/Rosa.png", "context": EffectContext.BATTLE, "rarity": "Rare", "amounts": { @@ -1194,10 +1194,10 @@ const ThickThorns := { const ThickBoss := { "canonical_name": "ThickBoss", - "name": "Buddha Figurine", + "name": "Buddhy", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "At the start of each ordeal, add a number of Perturbations in your discard pile until your deck size is {min_deck_size}", - "icon": preload("res://assets/icons/artifacts/Buddha Figurine.png"), + "icon": "res://assets/icons/plushies/Buddhy.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -1212,10 +1212,10 @@ const ThickBoss := { const NoChoice := { # TODO: Tests "canonical_name": "NoChoice", - "name": "Funky Compass", + "name": "Kiway", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "You only ever get 1 choice for each journal page", - "icon": preload("res://assets/icons/artifacts/Funky Compass.png"), + "icon": "res://assets/icons/plushies/Kiway.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -1229,10 +1229,10 @@ const NoChoice := { # TODO: Tests const CostlyUpgrades := { "canonical_name": "CostlyUpgrades", - "name": "Costly Upgrades", + "name": "Burglar", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "Reduce the amount of masteries gained from torment encounters by 30%", - "icon": preload("res://assets/icons/artifacts/Mnemonic Ritual.png"), + "icon": "res://assets/icons/plushies/Burglar.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -1246,10 +1246,10 @@ const CostlyUpgrades := { const NoSmith := { # TODO: Tests "canonical_name": "NoSmith", - "name": "Espresso Machine", + "name": "Ucho", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + "You cannot progress cards during deep torpor anymore.", - "icon": preload("res://assets/icons/artifacts/moka-pot.png"), + "icon": "res://assets/icons/plushies/Ucho.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -1262,10 +1262,10 @@ const NoSmith := { # TODO: Tests const CursedCurios := { # TODO: Tests "canonical_name": "CursedCurios", - "name": "Disturbing Curios", + "name": "Flamenco", "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ - + "All recalled curios, always give 1 extra {perturbation}", - "icon": GENERIC_BOSS_ARTIFACT_ICON, + + "All recalled {artifacts}, always give 1 extra {perturbation}", + "icon": "res://assets/icons/plushies/Flamenco.png", "context": EffectContext.BATTLE, "rarity": "Boss", "amounts": { @@ -1279,10 +1279,10 @@ const CursedCurios := { # TODO: Tests const SavedForgets := { "canonical_name": "SavedForgets", - "name": "Mnemonic Ritual", + "name": "Nodelain", "description": "{artifact_name}: The first time you {forget} a card in an ordeal, \n"\ + "it is discarded instead.", - "icon": GENERIC_ARTIFACT_ICON, + "icon": "res://assets/icons/plushies/Nodelain.png", "context": EffectContext.BATTLE, "rarity": "Starting", "amounts": {}, @@ -1291,6 +1291,196 @@ const SavedForgets := { ], } + +const StartingStartup := { + "canonical_name": "StartingStartup", + "name": "Mataro", + "description": "{artifact_name}: At the start of each ordeal, shuffle {card_amount} random {startup} cards to your draw pile.", + "icon": "res://assets/icons/plushies/Mataro.png", + "context": EffectContext.BATTLE, + "rarity": "Uncommon", + "amounts": { + "card_amount": 1, + }, + "linked_terms": [ + "startup", + ], +} + +const StartupDraw := { + "canonical_name": "StartupDraw", + "name": "Lululoo", + "description": "{artifact_name}: Every time you play a {startup} card, draw {draw_amount} card.", + "icon": "res://assets/icons/plushies/Lululoo.png", + "context": EffectContext.BATTLE, + "rarity": "Common", + "amounts": { + "draw_amount": 1 + }, + "linked_terms": [ + "startup", + ], +} + + +const RandomForgottenCards := { + "canonical_name": "RandomForgottenCards", + "name": "Ingmar", + "description": "{artifact_name}: Every time you {forget} a card, spawn {card_amount} random card in your hand.", + "icon": "res://assets/icons/plushies/Ingmar.png", + "context": EffectContext.BATTLE, + "rarity": "Rare", + "amounts": { + "card_amount": 1 + }, + "linked_terms": [ + "forget", + ], +} + + +const WeakerElites := { + "canonical_name": "WeakerElites", + "name": "Fereta", + "description": "{artifact_name}: Foreboding Torments have {health_reduction}% less {comprehension}", + "icon": "res://assets/icons/plushies/Fereta.png", + "context": EffectContext.BATTLE, + "rarity": "Common", + "amounts": { + "health_reduction": 25 + }, + "linked_terms": [ + "comprehension", + ], +} + + +const ConstantMark := { + "canonical_name": "ConstantMark", + "name": "Leyna", + "description": "{artifact_name}: At the start of each turn, apply {effect_stacks} {marked} to a random torment", + "icon": "res://assets/icons/plushies/Leyna.png", + "context": EffectContext.BATTLE, + "rarity": "Uncommon", + "amounts": { + "effect_stacks": 1 + }, + "linked_terms": [ + "marked", + ], +} + +const ImproveArmor := { + "canonical_name": "ImproveArmor", + "name": "Xibam", + "description": "{artifact_name}: Your {armor} starts decreasing only after {threshold_amount} stacks.", + "icon": "res://assets/icons/plushies/Xibam.png", + "context": EffectContext.BATTLE, + "rarity": "Uncommon", + "amounts": { + "threshold_amount": 3 + }, + "linked_terms": [ + "armor", + ], +} + +const SwiftPerturbations := { + "canonical_name": "SwiftPerturbations", + "name": "Epicurus", + "description": "{artifact_name}: Whenever you draw a {perturbation}, draw {draw_amount} card", + "icon": "res://assets/icons/plushies/Epicurus.png", + "context": EffectContext.BATTLE, + "rarity": "Uncommon", + "amounts": { + "draw_amount": 1 + }, + "linked_terms": [ + "perturbation", + "swift", + ], +} + +const HealThickDecks := { + "canonical_name": "HealThickDecks", + "name": "Hammond", + "description": "{artifact_name}: Whenever you add a card to your deck, {relax} for {heal_amount}", + "icon": "res://assets/icons/plushies/Hammond.png", + "context": EffectContext.OVERWORLD, + "rarity": "Common", + "amounts": { + "heal_amount": 5 + }, + "linked_terms": [ + "relax", + ], +} + +const BufferedSpawns := { + "canonical_name": "BufferedSpawns", + "name": "Tonkus", + "description": "{artifact_name}: Whenever any card is spawned in the game during an ordeal, gain {effect_stacks} {buffer}", + "icon": "res://assets/icons/plushies/Tonkus.png", + "context": EffectContext.BATTLE, + "rarity": "Uncommon", + "amounts": { + "effect_stacks": 1 + }, + "linked_terms": [ + "buffer", + ], +} + +const BossExert := { + "canonical_name": "BossExert", + "name": "Fiona", + "description": "{artifact_name}: You have {immersion_amount} extra {energy} per turn.\n"\ + + "Take {exert_amount} {anxiety} at the start of each turn.", + "icon": "res://assets/icons/plushies/Fiona.png", + "context": EffectContext.BATTLE, + "rarity": "Boss", + "amounts": { + "exert_amount": 1, + "immersion_amount": 1, + }, + "linked_terms": [ + "player_health", + "energy", + ], +} + +const BossRandomDiscount := { + "canonical_name": "BossRandomDiscount", + "name": "Mauricio", + "description": "{artifact_name}: At the start of your turn, decrease the cost of a random card in your hand by {immersion_amount} until played.", + "icon": "res://assets/icons/plushies/Mauricio.png", + "context": EffectContext.BATTLE, + "rarity": "Boss", + "amounts": { + "immersion_amount": 1, + }, + "linked_terms": [ + "energy", + ], +} + + +const BossDoubling := { + "canonical_name": "BossDoubling", + "name": "Kaleidy", + "description": "{artifact_name}: The first card you play each turn, is played an extra time.", + "icon": "res://assets/icons/plushies/Kaleidy.png", + "context": EffectContext.BATTLE, + "rarity": "Boss", + "amounts": { + }, + "linked_terms": [ + ], +} + + + + ## TODO: Artifact which increases chance to find Fusion cards ## TODO. Scipt base doesn't exist yet #const DoubleMemory := { @@ -1352,31 +1542,73 @@ const GENERIC := [ ThickDeckRareChance, LightningMarble, ThickThorns, + WeakerElites, + ConstantMark, + SwiftPerturbations, + HealThickDecks, ] # Archetype-specific artifacts which only appear in runs in which -# Their tied archetype is selected. +# their tied archetype is selected. const ARCHETYPE := [ - ImproveThorns, - ImprovePoison, - ImproveBurn, - ImproveImpervious, - ImproveFortify, - StartingThorns, EndingHeal, - IncreaseConfusionStacks, - IncreaseImmersionGain, - IncreaseBufferStacks, - IncreasePoisonStacks, - DecreaseExertStacks, - LimitMaxExert, - DoubleFirstStartup, - ConstantImpervious, - StartingFortify, - DoubleFusion, SavedForgets, ] +# Artifact-specific artifacts which only appear in runs which +# an archetype with that specific tag is used +const TAG := { + Terms.ACTIVE_EFFECTS.thorns.name: [ + ImproveThorns, + StartingThorns, + ], + Terms.ACTIVE_EFFECTS.poison.name: [ + ImprovePoison, + IncreasePoisonStacks, + ], + Terms.ACTIVE_EFFECTS.burn.name: [ + ImproveBurn, + ], + Terms.ACTIVE_EFFECTS.impervious.name: [ + ImproveImpervious, + ConstantImpervious, + ], + Terms.ACTIVE_EFFECTS.fortify.name: [ + ImproveFortify, + StartingFortify, + ], + Terms.ACTIVE_EFFECTS.armor.name: [ + ImproveArmor, + ], + Terms.ACTIVE_EFFECTS.disempower.name: [ + IncreaseConfusionStacks, + ], + Terms.ACTIVE_EFFECTS.buffer.name: [ + IncreaseBufferStacks, + ], + Terms.GENERIC_TAGS.purpose.name: [ + IncreaseImmersionGain, + ], + Terms.GENERIC_TAGS.startup.name: [ + DoubleFirstStartup, + StartingStartup, + StartupDraw, + ], + Terms.GENERIC_TAGS.fusion.name: [ + DoubleFusion, + ], + Terms.GENERIC_TAGS.exert.name: [ + DecreaseExertStacks, + LimitMaxExert, + ], + Terms.GENERIC_TAGS.slumber.name: [ + RandomForgottenCards, + ], + Terms.GENERIC_TAGS.spawn.name: [ + BufferedSpawns + ], +} + # These artifacts are only found in non-combat encounters const ENCOUNTER := [ PorcelainDoll, @@ -1406,6 +1638,9 @@ const BOSS := [ CostlyUpgrades, NoSmith, CursedCurios, + BossExert, + BossRandomDiscount, + BossDoubling, ] @@ -1444,7 +1679,10 @@ static func get_artifact_bbcode_format(artifact_definition: Dictionary) -> Dicti return(format) static func get_complete_artifacts_array() -> Array: - return(GENERIC + ARCHETYPE + ENCOUNTER + BOSS) + var tag_artifacts := [] + for tag in TAG: + tag_artifacts += TAG[tag] + return(GENERIC + ARCHETYPE + ENCOUNTER + BOSS + tag_artifacts) static func find_artifact_from_canonical_name(artifact_canonical_name: String): for artifact_def in get_complete_artifacts_array(): diff --git a/src/dreamscape/Artifacts/ArtifactTemplate.gd b/src/dreamscape/Artifacts/ArtifactTemplate.gd index df21f66d..053884f4 100644 --- a/src/dreamscape/Artifacts/ArtifactTemplate.gd +++ b/src/dreamscape/Artifacts/ArtifactTemplate.gd @@ -37,7 +37,7 @@ func _ready() -> void: var turn: Turn = cfc.NMAP.board.turn for turn_signal in Turn.ALL_SIGNALS: # warning-ignore:return_value_discarded - turn.connect(turn_signal, self, "_on_" + turn_signal) + scripting_bus.connect(turn_signal, self, "_on_" + turn_signal) setup(artifact_object.definition, artifact_object.canonical_name) # warning-ignore:return_value_discarded artifact_object.connect("removed", self, "_on_artifact_removed") @@ -45,6 +45,8 @@ func _ready() -> void: if artifact_object.get_class() == "ArtifactObject": # warning-ignore:return_value_discarded artifact_object.connect("counter_modified", self, "_on_artifact_counter_modified") + scripting_bus.connect("scripting_event_triggered", self, "execute_scripts") + func setup_artifact(_artifact_object, _is_active: bool, new_addition: bool) -> void: diff --git a/src/dreamscape/Artifacts/ArtifactTemplate.tscn b/src/dreamscape/Artifacts/ArtifactTemplate.tscn index 60678254..cb8f506f 100644 --- a/src/dreamscape/Artifacts/ArtifactTemplate.tscn +++ b/src/dreamscape/Artifacts/ArtifactTemplate.tscn @@ -16,6 +16,9 @@ effect_context = 0 [node name="ExtraContainer" parent="Signifier" index="2"] visible = false +[node name="Icon" parent="Signifier" index="3"] +stretch_mode = 6 + [node name="VBC" parent="Description" index="0"] margin_bottom = 35.0 diff --git a/src/dreamscape/Artifacts/BossDoubling.gd b/src/dreamscape/Artifacts/BossDoubling.gd new file mode 100644 index 00000000..3e5dfc37 --- /dev/null +++ b/src/dreamscape/Artifacts/BossDoubling.gd @@ -0,0 +1,32 @@ +extends Artifact + + +func _ready() -> void: + if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: + scripting_bus.connect("scripting_event_triggered", self, "_on_signal_received") + + +func _on_signal_received(trigger_card, trigger, details) -> void: + if trigger != "card_played": + return + if not _activate(): + return + trigger_card.abort_deck_removal() + if cfc.NMAP.board.turn.wants_to_end_turn == trigger_card: + cfc.NMAP.board.turn.abort_request_end_player_turn() + var script = [ + { + "name": "autoplay_card", + "subject": "trigger", + "tags": ["Curio"], + }, + ] + execute_script(script,trigger_card) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() + +func _on_player_turn_started(_turn: Turn = null) -> void: + # Can be used once per turn + _is_activated = false diff --git a/src/dreamscape/Artifacts/BossExert.gd b/src/dreamscape/Artifacts/BossExert.gd new file mode 100644 index 00000000..4583da46 --- /dev/null +++ b/src/dreamscape/Artifacts/BossExert.gd @@ -0,0 +1,22 @@ +extends Artifact + + +func _on_player_turn_started(_turn: Turn = null) -> void: + var script = [ + { + "name": "modify_damage", + "subject": "dreamer", + "amount": ArtifactDefinitions.BossExert.amounts.exert_amount, + "tags": ["Exert", "Curio"], + }, + { + "name": "mod_counter", + "counter_name": "immersion", + "tags": ["Curio", "New Turn"], + "modification": ArtifactDefinitions.BossExert.amounts.immersion_amount, + }, + ] + execute_script(script) + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/BossRandomDiscount.gd b/src/dreamscape/Artifacts/BossRandomDiscount.gd new file mode 100644 index 00000000..17bfc9b8 --- /dev/null +++ b/src/dreamscape/Artifacts/BossRandomDiscount.gd @@ -0,0 +1,39 @@ +extends Artifact + + +func _on_player_turn_started(_turn: Turn = null) -> void: + var script = [ + { + "name": "modify_properties", + "tags": ["Curio"], + "set_properties": + { + "Cost": '-' + str(ArtifactDefinitions.BossRandomDiscount.amounts.immersion_amount) + }, + "subject": "tutor", + "filter_state_tutor": [{ + "filter_cardfilters": [ + { + "property": "Cost", + "value": 1, + "comparison": "ge", + } + ], + }], + "subject_count": 1, + "sort_by": "random", + "src_container": "hand", + "up_to": true, + "is_cost": true, + }, + { + "name": "enable_rider", + "tags": ["Curio"], + "rider": "reset_cost_after_play", + "subject": "previous", + }, + ] + execute_script(script) + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/BufferedSpawns.gd b/src/dreamscape/Artifacts/BufferedSpawns.gd new file mode 100644 index 00000000..ba3b9752 --- /dev/null +++ b/src/dreamscape/Artifacts/BufferedSpawns.gd @@ -0,0 +1,24 @@ +extends Artifact + +func execute_scripts( + trigger_card: Card = null, + trigger: String = "manual", + trigger_details: Dictionary = {}, + only_cost_check := false): + if is_active\ + and effect_context == ArtifactDefinitions.EffectContext.BATTLE\ + and trigger == "card_spawned": + var script = [ + { + "name": "apply_effect", + "tags": ["Card"], + "effect_name": Terms.ACTIVE_EFFECTS.buffer.name, + "subject": "dreamer", + "modification": ArtifactDefinitions.BufferedSpawns.amounts.effect_stacks, + } + ] + execute_script(script) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/ConstantMark.gd b/src/dreamscape/Artifacts/ConstantMark.gd new file mode 100644 index 00000000..b84c654c --- /dev/null +++ b/src/dreamscape/Artifacts/ConstantMark.gd @@ -0,0 +1,22 @@ +extends Artifact + + +func _on_player_turn_started(_turn: Turn) -> void: + var script = [ + { + "name": "apply_effect", + "tags": ["Card"], + "effect_name": Terms.ACTIVE_EFFECTS.marked.name, + "subject": "boardseek", + "sort_by": "random", + "modification": ArtifactDefinitions.ConstantMark.amounts.effect_stacks, + "filter_state_seek": [{ + "filter_group": "EnemyEntities", + },], + }, + ] + execute_script(script) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/EndingHeal.gd b/src/dreamscape/Artifacts/EndingHeal.gd index 6a4f9b69..f85fde4a 100644 --- a/src/dreamscape/Artifacts/EndingHeal.gd +++ b/src/dreamscape/Artifacts/EndingHeal.gd @@ -2,6 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: + # warning-ignore:return_value_discarded EventBus.connect("battle_ended", self, "_on_battle_ended") func _on_battle_ended() -> void: diff --git a/src/dreamscape/Artifacts/HealThickDecks.gd b/src/dreamscape/Artifacts/HealThickDecks.gd new file mode 100644 index 00000000..5314dc75 --- /dev/null +++ b/src/dreamscape/Artifacts/HealThickDecks.gd @@ -0,0 +1,9 @@ +extends Artifact + +func _ready() -> void: + if is_active and effect_context == ArtifactDefinitions.EffectContext.OVERWORLD: + globals.player.deck.connect("card_added", self, "_on_card_added") + + +func _on_card_added(card_entry: CardEntry) -> void: + globals.player.damage -= ArtifactDefinitions.HealThickDecks.amounts.heal_amount diff --git a/src/dreamscape/Artifacts/ImproveFortify.gd b/src/dreamscape/Artifacts/ImproveFortify.gd index 33623ee2..14465b93 100644 --- a/src/dreamscape/Artifacts/ImproveFortify.gd +++ b/src/dreamscape/Artifacts/ImproveFortify.gd @@ -19,7 +19,7 @@ func _on_effect_modified( "name": "apply_effect", "effect_name": Terms.ACTIVE_EFFECTS.armor.name, "subject": "dreamer", - "modification": lost_fortify, + "modification": 2 * lost_fortify, "tags": ["Curio"], }, ] diff --git a/src/dreamscape/Artifacts/QuickenUp.gd b/src/dreamscape/Artifacts/QuickenUp.gd index 28646758..1b45dde2 100644 --- a/src/dreamscape/Artifacts/QuickenUp.gd +++ b/src/dreamscape/Artifacts/QuickenUp.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func setup(signifier_details: Dictionary, signifier_name: String): .setup(signifier_details,signifier_name) diff --git a/src/dreamscape/Artifacts/RandomForgottenCards.gd b/src/dreamscape/Artifacts/RandomForgottenCards.gd new file mode 100644 index 00000000..b6e01a66 --- /dev/null +++ b/src/dreamscape/Artifacts/RandomForgottenCards.gd @@ -0,0 +1,35 @@ +extends Artifact + + +func _ready() -> void: + if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: + scripting_bus.connect("scripting_event_triggered", self, "_on_signal_received") + + +func _on_signal_received(trigger_card, trigger, details) -> void: + if trigger != "card_moved_to_pile": + return + if details.destination.to_lower() != "forgotten": + return + if "Spawned" in details.tags: + return + var script = [ + { + "name": "spawn_card_to_container", + "card_filters": [ + { + 'property': '_is_upgrade', + 'value': false, + } + ], + "dest_container": "hand", + "object_count": ArtifactDefinitions.RandomForgottenCards.amounts.card_amount, + "tags": ["Curio"], + }, + ] + + execute_script(script,trigger_card) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/RepressedEnemyBuff.gd b/src/dreamscape/Artifacts/RepressedEnemyBuff.gd index d6113ea5..ae743846 100644 --- a/src/dreamscape/Artifacts/RepressedEnemyBuff.gd +++ b/src/dreamscape/Artifacts/RepressedEnemyBuff.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_battle_start(): diff --git a/src/dreamscape/Artifacts/SavedForgets.gd b/src/dreamscape/Artifacts/SavedForgets.gd index faafaae2..9f209341 100644 --- a/src/dreamscape/Artifacts/SavedForgets.gd +++ b/src/dreamscape/Artifacts/SavedForgets.gd @@ -3,7 +3,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - cfc.signal_propagator.connect("signal_received", self, "_on_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_signal_received") func _on_signal_received(trigger_card, trigger, details) -> void: @@ -11,8 +11,9 @@ func _on_signal_received(trigger_card, trigger, details) -> void: return if details.destination.to_lower() != "forgotten": return + # warning-ignore:return_value_discarded _activate() - cfc.signal_propagator.disconnect("signal_received", self, "_on_signal_received") + scripting_bus.disconnect("scripting_event_triggered", self, "_on_signal_received") var script = [{ "name": "move_card_to_container", "subject": "trigger", diff --git a/src/dreamscape/Artifacts/StartingDisempower.gd b/src/dreamscape/Artifacts/StartingDisempower.gd index 3476624c..89d45797 100644 --- a/src/dreamscape/Artifacts/StartingDisempower.gd +++ b/src/dreamscape/Artifacts/StartingDisempower.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_battle_start(): diff --git a/src/dreamscape/Artifacts/StartingStartup.gd b/src/dreamscape/Artifacts/StartingStartup.gd new file mode 100644 index 00000000..a06fa6ae --- /dev/null +++ b/src/dreamscape/Artifacts/StartingStartup.gd @@ -0,0 +1,39 @@ +extends Artifact + +func _ready() -> void: + if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: + cfc.connect("all_nodes_mapped", self, "_on_all_nodes_mapped") + + +func _on_all_nodes_mapped(): + if not _activate(): + return + var script = [ + { + "name": "spawn_card_to_container", + "card_filters": [ + { + 'property': 'Tags', + 'value': Terms.GENERIC_TAGS.startup.name, + }, + { + 'property': '_is_upgrade', + 'value': false, + } + ], + "immediate_placement": true, + "dest_container": "deck", + "object_count": ArtifactDefinitions.StartingStartup.amounts.card_amount, + "tags": ["Curio"], + }, + { + "name": "shuffle_container", + "tags": ["Curio"], + "dest_container": "deck", + }, + ] + execute_script(script) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/StartingStrength.gd b/src/dreamscape/Artifacts/StartingStrength.gd index 3e141b58..36436a69 100644 --- a/src/dreamscape/Artifacts/StartingStrength.gd +++ b/src/dreamscape/Artifacts/StartingStrength.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_battle_start(): diff --git a/src/dreamscape/Artifacts/StartingThorns.gd b/src/dreamscape/Artifacts/StartingThorns.gd index 509cf37a..d073b73b 100644 --- a/src/dreamscape/Artifacts/StartingThorns.gd +++ b/src/dreamscape/Artifacts/StartingThorns.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_battle_start(): diff --git a/src/dreamscape/Artifacts/StartingVulnerable.gd b/src/dreamscape/Artifacts/StartingVulnerable.gd index c46ae7fa..6cd2cb60 100644 --- a/src/dreamscape/Artifacts/StartingVulnerable.gd +++ b/src/dreamscape/Artifacts/StartingVulnerable.gd @@ -2,7 +2,8 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + # warning-ignore:return_value_discarded + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_battle_start(): diff --git a/src/dreamscape/Artifacts/StartupDraw.gd b/src/dreamscape/Artifacts/StartupDraw.gd new file mode 100644 index 00000000..500ee6ea --- /dev/null +++ b/src/dreamscape/Artifacts/StartupDraw.gd @@ -0,0 +1,23 @@ +extends Artifact + +func execute_scripts( + trigger_card: Card = null, + trigger: String = "manual", + trigger_details: Dictionary = {}, + only_cost_check := false): + if is_active\ + and effect_context == ArtifactDefinitions.EffectContext.BATTLE\ + and trigger == "card_played"\ + and Terms.GENERIC_TAGS.startup.name in trigger_card.get_property("Tags"): + var script = [ + { + "name": "draw_cards", + "card_count": ArtifactDefinitions.StartupDraw.amounts.draw_amount, + "tags": ["Curio"], + }, + ] + execute_script(script) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/StrengthenUp.gd b/src/dreamscape/Artifacts/StrengthenUp.gd index 99b2f392..6214f2aa 100644 --- a/src/dreamscape/Artifacts/StrengthenUp.gd +++ b/src/dreamscape/Artifacts/StrengthenUp.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func setup(signifier_details: Dictionary, signifier_name: String): .setup(signifier_details,signifier_name) diff --git a/src/dreamscape/Artifacts/SwiftPerturbations.gd b/src/dreamscape/Artifacts/SwiftPerturbations.gd new file mode 100644 index 00000000..e20959b3 --- /dev/null +++ b/src/dreamscape/Artifacts/SwiftPerturbations.gd @@ -0,0 +1,25 @@ +extends Artifact + + +func execute_scripts( + trigger_card: Card = null, + trigger: String = "manual", + trigger_details: Dictionary = {}, + only_cost_check := false): + if is_active\ + and effect_context == ArtifactDefinitions.EffectContext.BATTLE\ + and trigger == "card_moved_to_hand"\ + and trigger_card.get_property("Type") == "Perturbation": + print_debug(trigger_details) + var script = [ + { + "name": "draw_cards", + "card_count": ArtifactDefinitions.SwiftPerturbations.amounts.draw_amount, + "tags": ["Curio"], + }, + ] + execute_script(script) + + +func _on_scripting_completed(_artifact, _sceng) -> void: + _send_trigger_signal() diff --git a/src/dreamscape/Artifacts/ThickExplosion.gd b/src/dreamscape/Artifacts/ThickExplosion.gd index 30f05537..89c9ccdd 100644 --- a/src/dreamscape/Artifacts/ThickExplosion.gd +++ b/src/dreamscape/Artifacts/ThickExplosion.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") # Connecting the signal here ensures the artifact will not be disabled at the start of combat diff --git a/src/dreamscape/Artifacts/ThickHeal.gd b/src/dreamscape/Artifacts/ThickHeal.gd index 88c67fd0..0e87d76a 100644 --- a/src/dreamscape/Artifacts/ThickHeal.gd +++ b/src/dreamscape/Artifacts/ThickHeal.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_player_turn_started(_turn: Turn = null) -> void: diff --git a/src/dreamscape/Artifacts/ThickImmersion.gd b/src/dreamscape/Artifacts/ThickImmersion.gd index 6ab02a0c..10fd6374 100644 --- a/src/dreamscape/Artifacts/ThickImmersion.gd +++ b/src/dreamscape/Artifacts/ThickImmersion.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_player_turn_started(_turn: Turn = null) -> void: diff --git a/src/dreamscape/Artifacts/ThickStrength.gd b/src/dreamscape/Artifacts/ThickStrength.gd index ce0eaef6..4a9e81d1 100644 --- a/src/dreamscape/Artifacts/ThickStrength.gd +++ b/src/dreamscape/Artifacts/ThickStrength.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_player_turn_started(_turn: Turn = null) -> void: diff --git a/src/dreamscape/Artifacts/ThickThorns.gd b/src/dreamscape/Artifacts/ThickThorns.gd index 952cf460..0f5ee93d 100644 --- a/src/dreamscape/Artifacts/ThickThorns.gd +++ b/src/dreamscape/Artifacts/ThickThorns.gd @@ -2,7 +2,7 @@ extends Artifact func _ready() -> void: if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: - EventBus.connect("battle_begun", self, "_on_battle_start") + scripting_bus.connect("battle_begun", self, "_on_battle_start") func _on_player_turn_started(_turn: Turn = null) -> void: diff --git a/src/dreamscape/Artifacts/WeakerElites.gd b/src/dreamscape/Artifacts/WeakerElites.gd new file mode 100644 index 00000000..76579f79 --- /dev/null +++ b/src/dreamscape/Artifacts/WeakerElites.gd @@ -0,0 +1,12 @@ +extends Artifact + +func _ready() -> void: + if is_active and effect_context == ArtifactDefinitions.EffectContext.BATTLE: + scripting_bus.connect("battle_begun", self, "_on_battle_begun") + + +func _on_battle_begun(): + for enemy in get_tree().get_nodes_in_group("EnemyEntities"): + if enemy._properties.get("Rank", "Basic") == "Elite": + enemy.health -= enemy.health * float(ArtifactDefinitions.WeakerElites.amounts.health_reduction) / 100.0 + _send_trigger_signal() diff --git a/src/dreamscape/Board.gd b/src/dreamscape/Board.gd index 126f146c..22bf3c11 100644 --- a/src/dreamscape/Board.gd +++ b/src/dreamscape/Board.gd @@ -123,7 +123,7 @@ func begin_encounter() -> void: while not cfc.NMAP.hand.is_hand_refilled: yield(cfc.NMAP.hand, "hand_refilled") turn.encounter_event_count.clear() - EventBus.emit_signal("battle_begun") + scripting_bus.emit_signal("battle_begun") turn.start_player_turn() if not cfc.game_settings.get('first_ordeal_tutorial_done'): player_info._on_Help_pressed() @@ -264,17 +264,20 @@ func get_all_scriptables() -> Array: # Loads the player's deck func load_deck() -> void: + # This is only true for testing directly from the boarf scene if not globals.player.deck: # warning-ignore:return_value_discarded cfc.game_rng_seed = CFUtils.generate_random_seed() NewGameMenu.randomize_aspect_choices() globals.player.setup() globals.encounters.prepare_next_act() + # This prepsres the normal player deck for card in globals.player.deck.instance_cards(): cfc.NMAP.deck.add_child(card) #card.set_is_faceup(false,true) card._determine_idle_state() - cfc.NMAP.deck.shuffle_cards(false) + cfc.NMAP.deck.shuffle_cards(false) + EventBus.emit_signal("deck_loaded") func _on_player_turn_started(_turn: Turn) -> void: @@ -468,11 +471,11 @@ func _input(event): var _torment1 var _torment2 var _torment3 -# _torment1 = spawn_enemy(EnemyDefinitions.SHAMELING) - _torment1 = spawn_enemy(EnemyDefinitions.THE_CRITIC) + _torment1 = spawn_enemy(EnemyDefinitions.SHAMELING) +# _torment1 = spawn_enemy(EnemyDefinitions.LOTUSTUS) # _torment1 = spawn_enemy(EnemyDefinitions.VOID) # _torment2 = spawn_enemy(EnemyDefinitions.SHAMELING) - _torment2 = spawn_enemy(EnemyDefinitions.GASLIGHTER) +# _torment2 = spawn_enemy(EnemyDefinitions.GASLIGHTER) # _torment3 = spawn_enemy(EnemyDefinitions.CLOWN) # _torment3 = spawn_enemy(EnemyDefinitions.THE_CRITIC) # _torment3 = spawn_enemy(EnemyDefinitions.THE_LAUGHING_ONE) @@ -502,7 +505,7 @@ func _input(event): dreamer.damage = 11 # warning-ignore:return_value_discarded # globals.player.add_artifact(ArtifactDefinitions.SavedForgets.canonical_name) -# globals.player.add_artifact(ArtifactDefinitions.PurpleWave.canonical_name) + globals.player.add_artifact(ArtifactDefinitions.BossDoubling.canonical_name) # warning-ignore:return_value_discarded # globals.player.add_artifact(ArtifactDefinitions.RedWave.canonical_name) # warning-ignore:return_value_discarded @@ -510,10 +513,10 @@ func _input(event): # warning-ignore:return_value_discarded # globals.player.add_memory(MemoryDefinitions.BufferSelf.canonical_name) dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.buffer.name, 1) - dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.armor.name, 46) +# dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.armor.name, 46) # dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.absurdity_unleashed.name, 1) - dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.creative_block.name, 1) - dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.laugh_at_danger.name, 1) +# dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.creative_block.name, 1) +# dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.laugh_at_danger.name, 1) # dreamer.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.heat_venting.name, 1, false, false, ['Debug'], 'high') # Performance Tests # for iter in 100: @@ -525,8 +528,11 @@ func _input(event): # Hand Cards for c in [ - "! Moving On !", - "! Moving On !", + "Butterfly", + "Exhaustion", + "Exhaustion", + "Exhaustion", + "Nothing to Fear", # "Solid Work Ethic", # Need to look into these two later # "Fowl Language", @@ -557,18 +563,18 @@ func _input(event): func _debug_advanced_enemy(): pass - var advanced_entity: EnemyEntity =\ - load("res://src/dreamscape/CombatElements/Enemies/Bosses/SurrealBoss.tscn").instance() # var advanced_entity: EnemyEntity =\ -# load("res://src/dreamscape/CombatElements/Enemies/Bosses/Narcissus.tscn").instance() +# load("res://src/dreamscape/CombatElements/Enemies/Bosses/SurrealBoss.tscn").instance() # var advanced_entity: EnemyEntity =\ -# load("res://src/dreamscape/CombatElements/Enemies/Elites/IndescribableAbsurdity.tscn").instance() - advanced_entity.setup_advanced("hard") +# load("res://src/dreamscape/CombatElements/Enemies/Bosses/Narcissus.tscn").instance() + var advanced_entity: EnemyEntity =\ + load("res://src/dreamscape/CombatElements/Enemies/Elites/Leviathan.tscn").instance() + advanced_entity.setup_advanced("medium") _enemy_area.add_child(advanced_entity) advanced_entity.connect("finished_activation", self, "_on_finished_enemy_activation") emit_signal("enemy_spawned", advanced_entity) # advanced_entity.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.self_cleaning.name, 3) - advanced_entity.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.disempower.name, 11) +# advanced_entity.active_effects.mod_effect(Terms.ACTIVE_EFFECTS.disempower.name, 11) # warning-ignore:return_value_discarded diff --git a/src/dreamscape/Board.tscn b/src/dreamscape/Board.tscn index d22b97c3..931a3552 100644 --- a/src/dreamscape/Board.tscn +++ b/src/dreamscape/Board.tscn @@ -15,20 +15,20 @@ [ext_resource path="res://src/dreamscape/IconAnims.gd" type="Script" id=15] [sub_resource type="GDScript" id=5] -script/source = "extends Label - - -func _ready(): - hide() - -func _process(delta): - if visible: - text = 'FPS: ' + str(Engine.get_frames_per_second()) - -func _input(event): - if event.is_action_pressed(\"Show FPS\"): - show() - +script/source = "extends Label + + +func _ready(): + hide() + +func _process(delta): + if visible: + text = 'FPS: ' + str(Engine.get_frames_per_second()) + +func _input(event): + if event.is_action_pressed(\"Show FPS\"): + show() + " [sub_resource type="StyleBoxFlat" id=4] diff --git a/src/dreamscape/BoardSignalConnector.gd b/src/dreamscape/BoardSignalConnector.gd index c200d007..e15c4b5e 100644 --- a/src/dreamscape/BoardSignalConnector.gd +++ b/src/dreamscape/BoardSignalConnector.gd @@ -18,5 +18,5 @@ func _connect_turn_signals(entity) -> void: var turn: Turn = board.turn for turn_signal in Turn.ALL_SIGNALS: # warning-ignore:return_value_discarded - turn.connect(turn_signal, entity, "_on_" + turn_signal) + scripting_bus.connect(turn_signal, entity, "_on_" + turn_signal) diff --git a/src/dreamscape/CardBack.gd b/src/dreamscape/CardBack.gd index e2e9b845..9def7ce1 100644 --- a/src/dreamscape/CardBack.gd +++ b/src/dreamscape/CardBack.gd @@ -1,7 +1,7 @@ class_name HypnagoniaCardBack extends CardBackTexture -func _prepare_back_from_texture(true_random := false) -> void: +func _prepare_back_from_texture(_true_random := false) -> void: card_texture.texture = CFUtils.convert_texture_to_image(globals.encounters.card_back_texture, true) static func get_random_card_back() -> String: diff --git a/src/dreamscape/CardTemplate.gd b/src/dreamscape/CardTemplate.gd index 9cb822fb..5c064b7e 100644 --- a/src/dreamscape/CardTemplate.gd +++ b/src/dreamscape/CardTemplate.gd @@ -1,11 +1,6 @@ class_name DreamCard extends Card -# Emited whenever the card is played manually or via card effect. -# Since a card might be "played" from any source and to many possible targets -# we use a specialized signal to trigger effects which fire after playing cards -signal card_played(card,trigger,details) -signal card_removed(card,trigger,details) # Going negative to avoid conflicting with CGF in case it extends its own card states enum ExtendedCardState { @@ -14,6 +9,8 @@ enum ExtendedCardState { SPAWNED_PERTURBATION } +signal ready_to_remove + var shader_progress := 1.0 var attempted_action_drop_to_board := false var tutorial_disabled := false @@ -28,14 +25,14 @@ var enabled_riders := [] var printed_properties := {} var check_front_refresh := false var front_refresh_delta_wait := 0 +# I use this to allow me to autoplay the same card more than 1 time +# as further autoplays, need to wait until this flag is cleared +var queued_autoplays := [] func _ready() -> void: - # warning-ignore:return_value_discarded - connect("card_played", cfc.signal_propagator, "_on_signal_received") - # warning-ignore:return_value_discarded - connect("card_removed", cfc.signal_propagator, "_on_signal_received") # warning-ignore:return_value_discarded connect("state_changed", self, "_on_state_changed") + # warning-ignore:return_value_discarded cfc.connect("cache_cleared", self, "_on_cache_cleared") @@ -70,6 +67,8 @@ func _process(delta: float) -> void: # card_front.tag_container2.visible = false # card_front.card_design.visible = false # card_front.art.visible = false + if shader_progress < 0.15: + emit_signal("ready_to_remove") if shader_progress < 0.1: if cfc.NMAP.board.mouse_pointer.current_focused_card == self: cfc.NMAP.board.mouse_pointer.current_focused_card = null @@ -227,9 +226,8 @@ func common_post_move_scripts(new_container: String, old_container: String, tags var firsts = cfc.NMAP.board.turn.firsts if firsts.empty() or not firsts.get(properties.Type): firsts[properties.Type] = self - emit_signal("card_played", + scripting_bus.emit_signal("card_played", self, - "card_played", { "destination": new_container, "source": old_container, @@ -361,7 +359,7 @@ func execute_scripts( trigger: String = "manual", trigger_details: Dictionary = {}, only_cost_check := false): - if is_executing_scripts: + if is_executing_scripts and trigger == "manual": return if trigger == "player_turn_started": pass @@ -404,36 +402,59 @@ func common_pre_run(sceng) -> void: # This means the card is also removed permanently from the player's deck # This change stays for all further encounters func remove_from_deck(permanent := true, tags := []) -> void: +# card_front.apply_shader("res://shaders/consume.shader") + card_front.material = preload("res://shaders/dissolve.tres") +# card_front.material.shader = CFConst.REMOVE_FROM_GAME_SHADER + set_state(ExtendedCardState.REMOVE_FROM_GAME) + # I am using a signal here so that I can abort the card removal If I need to + connect("ready_to_remove", self, "_perform_remove_cleanup", [permanent, tags]) if "Played" in tags: var firsts = cfc.NMAP.board.turn.firsts if firsts.empty() or not firsts.get(properties.Type): firsts[properties.Type] = self - emit_signal("card_played", + scripting_bus.emit_signal("card_played", self, - "card_played", { "destination": null, "source": get_parent().name, "tags": tags } ) -# card_front.apply_shader("res://shaders/consume.shader") - card_front.material = preload("res://shaders/dissolve.tres") -# card_front.material.shader = CFConst.REMOVE_FROM_GAME_SHADER - set_state(ExtendedCardState.REMOVE_FROM_GAME) + +func abort_deck_removal() -> void: + if state != ExtendedCardState.REMOVE_FROM_GAME: + return + # Hardcoding the state change because normally if the card is being removed from the game + # set_state() prevents changing state anymore. But in this instance this is exactly what we need + if get_parent().is_in_group("hands"): + state = CardState.IN_HAND + # The extra if is in case the ViewPopup is currently active when the card + # is being moved into the container + elif get_parent().is_in_group("piles"): + state = CardState.IN_PILE + elif "CardPopUpSlot" in get_parent().name: + state = CardState.IN_POPUP + else: + state = CardState.ON_PLAY_BOARD + card_front.material = null + shader_progress = 1.0 + + +# THis function performs the cleanup of the card about to be removed from the board. +func _perform_remove_cleanup(ipermanent: bool, tags: Array) -> void: cfc.flush_cache() - emit_signal("card_removed", + scripting_bus.emit_signal("card_removed", self, - "card_removed", { "tags": tags } ) # If this is a permanent removal, we also remove the card from the # whole run - if deck_card_entry and permanent and not properties.get("_is_unremovable", false): + if deck_card_entry and ipermanent and not properties.get("_is_unremovable", false): globals.player.deck.remove_card(deck_card_entry) + func reorganize_self() ->void: if state == ExtendedCardState.REMOVE_FROM_GAME: return @@ -484,7 +505,7 @@ func enable_rider(rider: String) -> void: # Resets the card's cost to its printed value after being played. "reset_cost_after_play": # warning-ignore:return_value_discarded - connect("card_played", self, "_on_self_played") + scripting_bus.connect("card_played", self, "_on_self_played") func connect_card_entry(card_entry) -> void: @@ -496,13 +517,16 @@ func on_card_entry_modified(card_entry) -> void: properties = card_entry.properties.duplicate(true) refresh_card_front() + func set_state(value: int) -> void: if state == ExtendedCardState.REMOVE_FROM_GAME: return .set_state(value) -func _on_self_played(_card,_trigger,_details) -> void: +func _on_self_played(card, _details) -> void: + if card != self: + return if "reset_cost_after_play" in enabled_riders: # warning-ignore:return_value_discarded modify_property("Cost", printed_properties['Cost']) @@ -510,8 +534,6 @@ func _on_self_played(_card,_trigger,_details) -> void: - - # Overridable function for formatting card text func _get_formatted_text(value) -> String: var text = str(value) @@ -598,3 +620,7 @@ func _on_state_changed(_card: Card, old_state: int, _new_state: int) -> void: func _on_cache_cleared() -> void: check_front_refresh = true +func _determine_idle_state() -> void: + if state == ExtendedCardState.AUTOPLAY_DISPLAY: + return + ._determine_idle_state() diff --git a/src/dreamscape/CombatElements/CombatEffects/armor.gd b/src/dreamscape/CombatElements/CombatEffects/armor.gd index 945cd0b7..0206c156 100644 --- a/src/dreamscape/CombatElements/CombatEffects/armor.gd +++ b/src/dreamscape/CombatElements/CombatEffects/armor.gd @@ -33,5 +33,10 @@ func get_effect_alteration( func _decrease_stacks() -> void: var script : Array = [] - var extra_reduction = floor(stacks / 5) - set_stacks(stacks - 1 - extra_reduction, ["Turn Decrease"]) + var calculated_stacks = stacks + 5 + if globals.player.find_artifact(ArtifactDefinitions.ImproveArmor.canonical_name): + calculated_stacks -= 4 + if calculated_stacks < 0: + calculated_stacks = 0 + var total_reduction = floor(calculated_stacks / 5) + set_stacks(stacks - total_reduction, ["Turn Decrease"]) diff --git a/src/dreamscape/CombatElements/CombatEffects/cheek_pinching.gd b/src/dreamscape/CombatElements/CombatEffects/cheek_pinching.gd index 0905cbd8..72419577 100644 --- a/src/dreamscape/CombatElements/CombatEffects/cheek_pinching.gd +++ b/src/dreamscape/CombatElements/CombatEffects/cheek_pinching.gd @@ -2,11 +2,11 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, details) -> void: if trigger != "counter_modified": return if "New Turn" in details.tags: diff --git a/src/dreamscape/CombatElements/CombatEffects/enraged.gd b/src/dreamscape/CombatElements/CombatEffects/enraged.gd index 25cdfd93..2a7e83ff 100644 --- a/src/dreamscape/CombatElements/CombatEffects/enraged.gd +++ b/src/dreamscape/CombatElements/CombatEffects/enraged.gd @@ -1,9 +1,9 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received( +func _on_scripting_event_triggered( trigger_card: Card, trigger: String, _details: Dictionary) -> void: if trigger == "card_played" and trigger_card.get_property("Type") == "Control": var amount = stacks diff --git a/src/dreamscape/CombatElements/CombatEffects/exhaustion.gd b/src/dreamscape/CombatElements/CombatEffects/exhaustion.gd index 35d60c96..25e3a536 100644 --- a/src/dreamscape/CombatElements/CombatEffects/exhaustion.gd +++ b/src/dreamscape/CombatElements/CombatEffects/exhaustion.gd @@ -1,9 +1,9 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, details) -> void: if stacks <= 0: return if trigger != "card_moved_to_pile": @@ -24,7 +24,7 @@ func _on_cfc_signal_received(trigger_card, trigger, details) -> void: "name": "move_card_to_container", "subject": "trigger", "dest_container": "forgotten", - "tags": ["Combat Effect", "Concentration"], + "tags": ["Combat Effect", "Concentration", "Played"], }, ] execute_script(script,trigger_card) diff --git a/src/dreamscape/CombatElements/CombatEffects/heat_venting.gd b/src/dreamscape/CombatElements/CombatEffects/heat_venting.gd index 2e027d9b..8151ba7d 100644 --- a/src/dreamscape/CombatElements/CombatEffects/heat_venting.gd +++ b/src/dreamscape/CombatElements/CombatEffects/heat_venting.gd @@ -1,10 +1,10 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(_trigger_card, trigger, _details) -> void: +func _on_scripting_event_triggered(_trigger_card, trigger, _details) -> void: if not trigger == "cards_fused": return var multiplier = cfc.card_definitions[name]\ diff --git a/src/dreamscape/CombatElements/CombatEffects/jumbletron.gd b/src/dreamscape/CombatElements/CombatEffects/jumbletron.gd index d0ecfb69..a625cbf5 100644 --- a/src/dreamscape/CombatElements/CombatEffects/jumbletron.gd +++ b/src/dreamscape/CombatElements/CombatEffects/jumbletron.gd @@ -1,9 +1,9 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, _details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, _details) -> void: if trigger == "card_played"\ and trigger_card.get_property("Type") == "Understanding"\ and trigger_card.deck_card_entry: diff --git a/src/dreamscape/CombatElements/CombatEffects/keep_em_coming.gd b/src/dreamscape/CombatElements/CombatEffects/keep_em_coming.gd index 17d0d53f..a9d71c1b 100644 --- a/src/dreamscape/CombatElements/CombatEffects/keep_em_coming.gd +++ b/src/dreamscape/CombatElements/CombatEffects/keep_em_coming.gd @@ -1,9 +1,9 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, details) -> void: if trigger != "card_moved_to_pile": return if details.destination.to_lower() != "forgotten": diff --git a/src/dreamscape/CombatElements/CombatEffects/know_your_limits.gd b/src/dreamscape/CombatElements/CombatEffects/know_your_limits.gd index 7aabca6b..ad7be2c5 100644 --- a/src/dreamscape/CombatElements/CombatEffects/know_your_limits.gd +++ b/src/dreamscape/CombatElements/CombatEffects/know_your_limits.gd @@ -1,9 +1,9 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, details) -> void: if trigger != "card_moved_to_pile": return if details.destination.to_lower() != "forgotten": diff --git a/src/dreamscape/CombatElements/CombatEffects/life_path.gd b/src/dreamscape/CombatElements/CombatEffects/life_path.gd index 3f34fb80..c4274c1c 100644 --- a/src/dreamscape/CombatElements/CombatEffects/life_path.gd +++ b/src/dreamscape/CombatElements/CombatEffects/life_path.gd @@ -1,7 +1,7 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") func _get_effect_description() -> String: var default_desc : String @@ -14,7 +14,7 @@ func _get_effect_description() -> String: default_desc = "{effect_name}: Any time the dreamer plays a {concentration} card, this tormen gains {amount} {strengthen}" return(default_desc) -func _on_cfc_signal_received( +func _on_scripting_event_triggered( trigger_card: Card, trigger: String, _details: Dictionary) -> void: if trigger == "card_played": var amount = stacks diff --git a/src/dreamscape/CombatElements/CombatEffects/streamlining.gd b/src/dreamscape/CombatElements/CombatEffects/streamlining.gd index df67d59e..9b39e5c5 100644 --- a/src/dreamscape/CombatElements/CombatEffects/streamlining.gd +++ b/src/dreamscape/CombatElements/CombatEffects/streamlining.gd @@ -1,10 +1,10 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(_trigger_card, trigger, _details) -> void: +func _on_scripting_event_triggered(_trigger_card, trigger, _details) -> void: if not trigger == "cards_fused": return var script = [{ diff --git a/src/dreamscape/CombatElements/CombatEffects/the_exam.gd b/src/dreamscape/CombatElements/CombatEffects/the_exam.gd index 753abd7a..009f9092 100644 --- a/src/dreamscape/CombatElements/CombatEffects/the_exam.gd +++ b/src/dreamscape/CombatElements/CombatEffects/the_exam.gd @@ -2,7 +2,7 @@ extends CombatEffect func _ready(): # warning-ignore:return_value_discarded - cfc.signal_propagator.connect("signal_received", self, "_on_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_signal_received") func _on_signal_received(trigger_card, trigger, details) -> void: diff --git a/src/dreamscape/CombatElements/CombatEffects/void.gd b/src/dreamscape/CombatElements/CombatEffects/void.gd index 82581bc9..cdfda088 100644 --- a/src/dreamscape/CombatElements/CombatEffects/void.gd +++ b/src/dreamscape/CombatElements/CombatEffects/void.gd @@ -2,11 +2,11 @@ extends CombatEffect func _ready() -> void: - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, _details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, _details) -> void: if trigger == "card_played"\ and trigger_card.get_property("Type") == "Understanding": var perturb_task := [{ diff --git a/src/dreamscape/CombatElements/CombatEffects/wage_slavery.gd b/src/dreamscape/CombatElements/CombatEffects/wage_slavery.gd index 8221aa65..f1be2153 100644 --- a/src/dreamscape/CombatElements/CombatEffects/wage_slavery.gd +++ b/src/dreamscape/CombatElements/CombatEffects/wage_slavery.gd @@ -4,9 +4,9 @@ var filter := DreamCardFilter.new("Type", "Control") func _ready() -> void: add_to_group("scriptables") - cfc.signal_propagator.connect("signal_received", self, "_on_cfc_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") -func _on_cfc_signal_received(trigger_card, trigger, details) -> void: +func _on_scripting_event_triggered(trigger_card, trigger, details) -> void: if trigger != "card_moved_to_pile": return if not "Played" in details.tags: diff --git a/src/dreamscape/CombatElements/Enemies/Bosses/FearBoss.gd b/src/dreamscape/CombatElements/Enemies/Bosses/FearBoss.gd index 593a1fe7..c306fd6c 100644 --- a/src/dreamscape/CombatElements/Enemies/Bosses/FearBoss.gd +++ b/src/dreamscape/CombatElements/Enemies/Bosses/FearBoss.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Deepest Fear", + "Rank": "Boss", "Health": 255, "Type": "Fear", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Bosses/Narcissus.gd b/src/dreamscape/CombatElements/Enemies/Bosses/Narcissus.gd index b794ad86..50f34d0a 100644 --- a/src/dreamscape/CombatElements/Enemies/Bosses/Narcissus.gd +++ b/src/dreamscape/CombatElements/Enemies/Bosses/Narcissus.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Narcissus", + "Rank": "Boss", "Health": 200, "Type": "Abuse", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Bosses/SurrealBoss.gd b/src/dreamscape/CombatElements/Enemies/Bosses/SurrealBoss.gd index 992df9a0..a3e29496 100644 --- a/src/dreamscape/CombatElements/Enemies/Bosses/SurrealBoss.gd +++ b/src/dreamscape/CombatElements/Enemies/Bosses/SurrealBoss.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Surreality", + "Rank": "Boss", "Health": 400, "Type": "Absurdity", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/Bully.gd b/src/dreamscape/CombatElements/Enemies/Elites/Bully.gd index 9c92b6ae..a50c5191 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/Bully.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/Bully.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "The Bully", + "Rank": "Elite", "Health": 80, "Type": "Context", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/Dentist.gd b/src/dreamscape/CombatElements/Enemies/Elites/Dentist.gd index 3ecd774e..ff3c1107 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/Dentist.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/Dentist.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Dentist", + "Rank": "Elite", "Health": 153, "Type": "Phobia", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/IndescribableAbsurdity.gd b/src/dreamscape/CombatElements/Enemies/Elites/IndescribableAbsurdity.gd index dd9fbcd6..f0486858 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/IndescribableAbsurdity.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/IndescribableAbsurdity.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Fractalization", + "Rank": "Elite", "Health": 180, "Type": "Absurdity", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/InfiniteCorridor.gd b/src/dreamscape/CombatElements/Enemies/Elites/InfiniteCorridor.gd index 2984e068..bfadb12e 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/InfiniteCorridor.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/InfiniteCorridor.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Infinite Corridor", + "Rank": "Elite", "Health": 200, "Type": "Absurdity", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/Jumbletron.gd b/src/dreamscape/CombatElements/Enemies/Elites/Jumbletron.gd index f83b8ad3..c3c0dfce 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/Jumbletron.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/Jumbletron.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Jumbletron", + "Rank": "Elite", "Health": 90, "Type": "Absurdity", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/Leviathan.gd b/src/dreamscape/CombatElements/Enemies/Elites/Leviathan.gd new file mode 100644 index 00000000..d66e0b48 --- /dev/null +++ b/src/dreamscape/CombatElements/Enemies/Elites/Leviathan.gd @@ -0,0 +1,37 @@ +extends AdvancedEnemyEntity + +const PROPERTIES := { + "name": "Leviathan", + "Rank": "Elite", + "Health": 70, + "Type": "Existential", + "Damage": 0, + "_texture_size_x": 160, + "_texture_size_y": 160, + "_character_art": 'Silberfarben via midjourney.com', + "_is_ordered": true, + "_health_variability": 7, +} + +func _ready() -> void: +# ._ready() + match get_property("_difficulty"): + "easy": + health -= 20 + "hard": + health += 20 + cfc.NMAP.board.connect("enemy_spawned", self, "_on_enemy_spawned") + var spawn_act = [ + { + "name": "spawn_enemy", + "enemy": EnemyDefinitions.IMMOBILITY, + "object_count": 2, + "set_spawn_as_minion": true, + "tags": ['init'], + } + ] + intents.execute_special_script(spawn_act, self, self) + +func _on_enemy_spawned(torment: CombatEntity) -> void: + cfc.NMAP.board.disconnect("enemy_spawned", self, "_on_enemy_spawned") + get_parent().move_child(self, 1) diff --git a/src/dreamscape/CombatElements/Enemies/Elites/Leviathan.tscn b/src/dreamscape/CombatElements/Enemies/Elites/Leviathan.tscn new file mode 100644 index 00000000..1ff5231f --- /dev/null +++ b/src/dreamscape/CombatElements/Enemies/Elites/Leviathan.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://shaders/invert.shader" type="Shader" id=1] +[ext_resource path="res://src/dreamscape/CombatElements/Enemies/EnemyIntents.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/dreamscape/CombatElements/CombatEntity.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/dreamscape/CombatElements/Enemies/Elites/LeviathanIntents.gd" type="Script" id=4] +[ext_resource path="res://src/dreamscape/CombatElements/Enemies/Elites/Leviathan.gd" type="Script" id=5] +[ext_resource path="res://assets/enemies/Leviathan.png" type="Texture" id=6] + +[sub_resource type="ShaderMaterial" id=1] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/is_active = false + +[node name="Leviathan" groups=["BossEntities", "EnemyEntities"] instance=ExtResource( 3 )] +script = ExtResource( 5 ) +character_art_texture = ExtResource( 6 ) + +[node name="Push" parent="." index="0"] +margin_bottom = 0.0 + +[node name="Intents" parent="." index="1" instance=ExtResource( 2 )] +margin_top = 4.0 +margin_right = 69.0 +margin_bottom = 47.0 +rect_min_size = Vector2( 0, 43 ) + +[node name="IntentBackground" parent="Intents" index="0"] +margin_right = 69.0 +margin_bottom = 43.0 + +[node name="MC" parent="Intents" index="1"] +margin_right = 69.0 +margin_bottom = 43.0 + +[node name="EnemyIntents" parent="Intents/MC" index="0"] +margin_right = 59.0 +margin_bottom = 18.0 +script = ExtResource( 4 ) + +[node name="CenterContainer" parent="." index="2"] +margin_top = 51.0 +margin_bottom = 87.0 +rect_min_size = Vector2( 0, 36 ) + +[node name="Art" parent="." index="3"] +margin_top = 91.0 +margin_bottom = 91.0 + +[node name="Texture" parent="Art" index="0"] +material = SubResource( 1 ) + +[node name="Name" parent="." index="4"] +margin_top = 91.0 +margin_bottom = 121.0 +rect_min_size = Vector2( 0, 30 ) + +[node name="HP" parent="." index="5"] +margin_top = 95.0 +margin_bottom = 104.0 + +[node name="HBC" parent="." index="6"] +margin_top = 108.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 0, 15 ) + +[node name="ActiveEffects" parent="." index="7"] +margin_top = 148.0 +margin_bottom = 184.0 + +[editable path="Intents"] diff --git a/src/dreamscape/CombatElements/Enemies/Elites/LeviathanIntents.gd b/src/dreamscape/CombatElements/Enemies/Elites/LeviathanIntents.gd new file mode 100644 index 00000000..c02f090b --- /dev/null +++ b/src/dreamscape/CombatElements/Enemies/Elites/LeviathanIntents.gd @@ -0,0 +1,104 @@ +extends BossIntents + +const INTENTS := [ + { + "intent_scripts": ["Your Place"], + "reshuffle": false, + }, + { + "intent_scripts": ["Pondering"], + "reshuffle": false, + }, + { + "intent_scripts": ["Pondering"], + "reshuffle": false, + }, + { + "intent_scripts": ["Ennui"], + "reshuffle": false, + }, + { + "intent_scripts": ["Existential Anguish"], + "reshuffle": true, + }, +] + +func _ready() -> void: + all_intents = INTENTS.duplicate(true) + + +func _get_intent_scripts(intent_name: String) -> Array: + return(_get_elite_scripts(intent_name)) + + +func _get_elite_scripts(intent_name: String) -> Array: + var intent_scripts := [] + var script : Dictionary + var difficulty + match combat_entity.get_property("_difficulty"): + "easy": + difficulty = 2 + "medium": + difficulty = 3 + "hard": + difficulty = 4 + match intent_name: + "Existential Anguish": + script = { + "name": "modify_damage", + "tags": ["Attack", "Intent"], + "subject": "dreamer", + "amount": difficulty * 10, + "icon": all_intent_scripts.ICON_ATTACK, + "description": "Stress: Will cause the dreamer to take the specified amount of {anxiety}.", + } + intent_scripts.append(script) + match intent_name: + "Pondering": + script = { + "name": "assign_defence", + "tags": ["Intent"], + "subject": "boardseek", + "amount": difficulty, + "subject_count": "all", + "filter_state_seek": [{ + "filter_group": "EnemyEntities", + },], + "icon": all_intent_scripts.ICON_DEFEND, + "description": "Perplex Group: Will give all Torments the specified amount of {perplexity}." + } + intent_scripts.append(script) + if get_tree().get_nodes_in_group("EnemyEntities").size() == 1: + script = { + "name": "modify_damage", + "tags": ["Attack", "Intent"], + "subject": "dreamer", + "amount": difficulty * 3, + "icon": all_intent_scripts.ICON_ATTACK, + "description": "Stress: Will cause the dreamer to take the specified amount of {anxiety}.", + } + intent_scripts.append(script) + match intent_name: + "Ennui": + script = { + "name": "spawn_card_to_container", + "card_name": "Inescepable Conclusion", + "dest_container": "hand", + "object_count": 1, + "tags": ["Intent"], + "icon": all_intent_scripts.ICON_SPAWN_CARD, + "description": "This Torment is planning to give you a card." + } + intent_scripts.append(script) + match intent_name: + "Your Place": + script = { + "name": "modify_damage", + "tags": ["Attack", "Intent"], + "subject": "dreamer", + "amount": (difficulty * 3) + 4, + "icon": all_intent_scripts.ICON_ATTACK, + "description": "Stress: Will cause the dreamer to take the specified amount of {anxiety}.", + } + intent_scripts.append(script) + return(intent_scripts) diff --git a/src/dreamscape/CombatElements/Enemies/Elites/Recurrence.gd b/src/dreamscape/CombatElements/Enemies/Elites/Recurrence.gd index bfd773db..fc6a9d4b 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/Recurrence.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/Recurrence.gd @@ -4,6 +4,7 @@ signal learning_finished(reports) const PROPERTIES := { "name": "The Recurrence", + "Rank": "Elite", "Health": 107, "Type": "Fear", "Damage": 0, @@ -38,12 +39,12 @@ func setup_advanced(difficulty: String = "medium") -> void: func _ready() -> void: if not cfc.NMAP.board.dreamer: - yield(EventBus, "battle_begun") + yield(scripting_bus, "battle_begun") cfc.NMAP.board.dreamer.connect("effect_modified", self, "_on_dreamer_effect_modified") cfc.NMAP.board.dreamer.connect("entity_defence_modified", self, "_on_dreamer_defended") cfc.NMAP.board.dreamer.connect("entity_healed", self, "_on_dreamer_healed") cfc.NMAP.board.dreamer.connect("entity_damaged", self, "_on_dreamer_damaged") - cfc.signal_propagator.connect("signal_received", self, "_on_card_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_scripting_event_triggered") # warning-ignore:return_value_discarded connect("effect_modified", self, "_on_self_effect_modified") # warning-ignore:return_value_discarded @@ -109,7 +110,7 @@ func _on_self_attacked(_entity, amount, _trigger, _tags) -> void: # print_debug("Attack learned: %s" % [amount]) -func _on_card_signal_received(_trigger_card, trigger, _details) -> void: +func _on_scripting_event_triggered(_trigger_card, trigger, _details) -> void: if is_learning and trigger == "card_played": cards_played += 1 # print_debug("Card played") diff --git a/src/dreamscape/CombatElements/Enemies/Elites/RushElite.gd b/src/dreamscape/CombatElements/Enemies/Elites/RushElite.gd index eb2e0ad2..16b2a22c 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/RushElite.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/RushElite.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "The Labyrinth", + "Rank": "Elite", "Health": 85, "Type": "Context", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/TheGatherer.gd b/src/dreamscape/CombatElements/Enemies/Elites/TheGatherer.gd index a06e7a13..bf4f0a93 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/TheGatherer.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/TheGatherer.gd @@ -2,6 +2,7 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "The Gatherer", + "Rank": "Elite", "Health": 300, "Type": "Fear", "Damage": 0, diff --git a/src/dreamscape/CombatElements/Enemies/Elites/TheatrePlay.gd b/src/dreamscape/CombatElements/Enemies/Elites/TheatrePlay.gd index 2a6fa2f4..155805b9 100644 --- a/src/dreamscape/CombatElements/Enemies/Elites/TheatrePlay.gd +++ b/src/dreamscape/CombatElements/Enemies/Elites/TheatrePlay.gd @@ -2,7 +2,8 @@ extends AdvancedEnemyEntity const PROPERTIES := { "name": "Theatre Play", - "Health": 108, + "Rank": "Elite", + "Health": 168, "Type": "Fear", "Damage": 0, "_texture_size_x": 180, @@ -39,6 +40,5 @@ func _on_enemy_spawned(torment: CombatEntity) -> void: torment.connect("entity_killed", self, "_on_theatre_act_overcome") func _on_theatre_act_overcome(final_damage: int, final_health: int) -> void: - print_debug(final_damage, health) if final_damage >= final_health: set_damage(damage + 10) diff --git a/src/dreamscape/CombatElements/Enemies/Enemies.gd b/src/dreamscape/CombatElements/Enemies/Enemies.gd index 66f0b26c..1eef8205 100644 --- a/src/dreamscape/CombatElements/Enemies/Enemies.gd +++ b/src/dreamscape/CombatElements/Enemies/Enemies.gd @@ -912,3 +912,82 @@ const SHAMELING := { "_character_art": "SkylarkGSH" } +const LOTUSTUS := { + "Name": "Lotustus", + "Type": "Phobia", + "Health": 130, + "Intents": [ + { + "intent_scripts": ["Stress: 2","Stress: 2","Stress: 1","Stress: 2","Stress: 2","Stress: 2"], + "reshuffle": true, + "max_in_a_row": 1, + }, + { + "intent_scripts": ["Debuff:1:strengthen", "SpawnCard:Disgust:Deck","SpawnCard:Disgust:Discard","SpawnCard:Disgust:Forgotten", "Perplex:10"], + "reshuffle": false, + "sets_up_intent": "hives", + }, + { + "id": "hives", + "intent_scripts": ["Buff:2:thorns","SpawnCard:Disgust:Deck", "Perplex:8"], + "reshuffle": true, + "max_in_a_row": 1, + }, + { + "intent_scripts": ["Buff:1:quicken","Buff:2:thorns", "Perplex:13"], + "reshuffle": false, + "sets_up_intent": "hives", + }, + { + "intent_scripts": ["Debuff:1:strengthen","Stress:30", "Perplex:10"], + "reshuffle": false, + "sets_up_intent": "hives", + }, + ], + "_health_variability": 8, + "_texture_size_x": "120", + "_texture_size_y": "120", + "_texture": "res://assets/enemies/Lotustus.png", + "_character_art": "SkylarkGSH" +} + +const IMMOBILITY := { + "Name": "Immobility", + "Type": "Extistential", + "Health": 20, + "Intents": [ + { + "intent_scripts": ["Stress:3", "Perplex:4", "Lethargy:1"], + "reshuffle": true, + "max_in_a_row": 1, + }, + { + "intent_scripts": ["Stress:2", "Perplex:5", "Lethargy:1"], + "reshuffle": false, + }, + { + "intent_scripts": ["Stress:1", "Perplex:6", "Lethargy:1"], + "reshuffle": false, + }, + { + "intent_scripts": ["Stress:4", "Perplex:3", "Lethargy:1"], + "reshuffle": false, + }, + { + "intent_scripts": ["Stress:5", "Perplex:2", "Lethargy:1"], + "reshuffle": false, + }, + { + "intent_scripts": ["SpawnCard:Inescepable Conclusion:Hand"], + "reshuffle": false, + "max_uses": 1, + }, + ], + "_health_variability": 2, + "_texture_size_x": "60", + "_texture_size_y": "60", +# "_texture": "res://assets/enemies/Overworked Servus.jpg", + "_character_art": "Nobody", + "_description": "", +} + diff --git a/src/dreamscape/CombatElements/Enemies/IntentScripts.gd b/src/dreamscape/CombatElements/Enemies/IntentScripts.gd index 33406a4a..67f18cff 100644 --- a/src/dreamscape/CombatElements/Enemies/IntentScripts.gd +++ b/src/dreamscape/CombatElements/Enemies/IntentScripts.gd @@ -177,7 +177,6 @@ const LETHARGY := [ "tags": ["Intent"], "icon": preload("res://assets/icons/shrug.png"), "description": "Lethargy: Next turn you will have this amount less {immersion}\n"\ - + "[i]I need to see behind it...[/i]" } ] const EVIDENT := [ diff --git a/src/dreamscape/CostDiscount.gd b/src/dreamscape/CostDiscount.gd index 589acb19..6fde4657 100644 --- a/src/dreamscape/CostDiscount.gd +++ b/src/dreamscape/CostDiscount.gd @@ -24,9 +24,9 @@ func _init( func _ready() -> void: add_to_group("scriptables") add_to_group("cost_discounts") - cfc.signal_propagator.connect("signal_received", self, "_on_signal_received") + scripting_bus.connect("scripting_event_triggered", self, "_on_signal_received") if not is_permanent: - cfc.NMAP.board.turn.connect("enemy_turn_started", self, "_enemy_turn_started") + scripting_bus.connect("enemy_turn_started", self, "_enemy_turn_started") func retrieve_scripts(trigger: String) -> Dictionary: if uses == 0: diff --git a/src/dreamscape/Counter.gd b/src/dreamscape/Counter.gd index f495de7d..3cb3969c 100644 --- a/src/dreamscape/Counter.gd +++ b/src/dreamscape/Counter.gd @@ -22,7 +22,6 @@ func set_rotation_speed(_immersion) -> void: 4: c = 1.20 5: c = 1.35 _: c = 1.40 - var new_color = Color(c,c,c,c) $Tween.remove_all() $Tween.interpolate_property($ImmersionIcon, "self_modulate:a", $ImmersionIcon.self_modulate.a, c, 1,Tween.TRANS_SINE,Tween.EASE_OUT) $Tween.start() @@ -32,7 +31,6 @@ func set_rotation_speed(_immersion) -> void: p.emitting = false else: p.emitting = true - var rot var amount = immersion * 5 var lifetime = 0.7 + immersion * 0.1 if lifetime > 1.5: diff --git a/src/dreamscape/Globals/EventBus.gd b/src/dreamscape/Globals/EventBus.gd index 3cc41d29..2b5c610f 100644 --- a/src/dreamscape/Globals/EventBus.gd +++ b/src/dreamscape/Globals/EventBus.gd @@ -3,14 +3,10 @@ extends Node # warning-ignore:unused_signal signal card_drafted(card_entity) # warning-ignore:unused_signal -signal battle_begun -# warning-ignore:unused_signal signal battle_ended # warning-ignore:unused_signal signal game_over -signal kobodoldai_server_changed - -func _ready(): - # warning-ignore:return_value_discarded - connect("battle_begun", cfc.signal_propagator, "_on_signal_received", [self, "battle_begun", {}]) - +# warning-ignore:unused_signal +signal deck_loaded +# warning-ignore:unused_signal +signal kobodoldai_server_changed diff --git a/src/dreamscape/Globals/Globals.gd b/src/dreamscape/Globals/Globals.gd index 8c51666f..69ab0ef8 100644 --- a/src/dreamscape/Globals/Globals.gd +++ b/src/dreamscape/Globals/Globals.gd @@ -18,6 +18,7 @@ var ai_stories:= AIStories.new() # to avoid writing always the same thing var unused_journal_texts := {} #var utils := DeckbuilderUtils.new() + # For Unit Testing var test_flags := { ### REFERENCES ### diff --git a/src/dreamscape/Globals/MemoryObject.gd b/src/dreamscape/Globals/MemoryObject.gd index b596e4e1..57f6a00f 100644 --- a/src/dreamscape/Globals/MemoryObject.gd +++ b/src/dreamscape/Globals/MemoryObject.gd @@ -131,18 +131,17 @@ static func get_cost_format(memory_name: String, upgrades := 0) -> Dictionary: print_debug("WARNING: Memory Definition '%s' could not be found!" % [memory_name]) return({}) var progress_modifier : float = memory_definition.get("pathos_progress_multiplier", 0.0) - var recharge_time : int = memory_definition.get("recharge_time", 2) - var pathos_type: PathosType = globals.player.pathos.pathi[memory_definition.pathos] + var static_recharge_time : int = memory_definition.get("recharge_time", 2) var is_threshold_upgrade := false - var is_recharge_upgrade := false + var _is_recharge_upgrade := false if "pathos_progress_multiplier" in memory_definition.get("keys_modified_by_upgrade", []): progress_modifier += float(upgrades) * float(memory_definition.amounts["upgrade_multiplier"]) * 0.01 is_threshold_upgrade = true if "recharge_time" in memory_definition.get("keys_modified_by_upgrade", []): - recharge_time -= upgrades * memory_definition.amounts["upgrade_multiplier"] - is_recharge_upgrade = true - var pathos_desc_fmt: Dictionary - var turns_needed = recharge_time + static_recharge_time -= upgrades * memory_definition.amounts["upgrade_multiplier"] + _is_recharge_upgrade = true + var pathos_desc_fmt: Dictionary = {} + var turns_needed = static_recharge_time var pathos_description:= "This memory {verb} chance of {encounter_type} encounters by {pct}%" var decrease_bad: bool match memory_definition.pathos: diff --git a/src/dreamscape/Globals/Pathos/Pathos.gd b/src/dreamscape/Globals/Pathos/Pathos.gd index d59137d8..3dc589b1 100644 --- a/src/dreamscape/Globals/Pathos/Pathos.gd +++ b/src/dreamscape/Globals/Pathos/Pathos.gd @@ -23,8 +23,10 @@ signal released_pathos_gained(pathos, amount) # warning-ignore:unused_signal signal pathos_leveled(pathos, level) # Send when a pathos is selected for an encounter +# warning-ignore:unused_signal signal pathos_selected(pathos) # Send when a pathos is not selected for an encounter +# warning-ignore:unused_signal signal pathos_ignored(pathos) signal advancements_modified(new_value, old_value) @@ -93,6 +95,7 @@ func _init() -> void: # warning-ignore:return_value_discarded connect("pathos_selected",self,"_on_pathos_selected") # Every run, starts the player with a bunch of pathos masteries +# warning-ignore:narrowing_conversion available_masteries = STARTING_MASTERIES * globals.difficulty.starting_masteries diff --git a/src/dreamscape/Globals/Pathos/PathosType.gd b/src/dreamscape/Globals/Pathos/PathosType.gd index bf10095a..dc82a23c 100644 --- a/src/dreamscape/Globals/Pathos/PathosType.gd +++ b/src/dreamscape/Globals/Pathos/PathosType.gd @@ -95,7 +95,7 @@ func repress() -> void: # and increases the released pathos by the same amount func release(amount: float) -> void: if amount <= 0: - printerr("ERROR: release_pathos() only takes a positive integer") +# printerr("ERROR: release_pathos() only takes a positive integer") return # if we try to repress more than we have, we repress only as much as we have if amount > repressed: diff --git a/src/dreamscape/Globals/PlayerObject.gd b/src/dreamscape/Globals/PlayerObject.gd index db63f6be..9de24979 100644 --- a/src/dreamscape/Globals/PlayerObject.gd +++ b/src/dreamscape/Globals/PlayerObject.gd @@ -37,7 +37,7 @@ func setup() -> void: for group in deck_groups: # Each deck group can modify the player's max health health += Aspects[group.to_upper()][deck_groups[group]].get(Terms.PLAYER_TERMS.health,0) - # We typically avoid starting curios during testing + # We typically avoid starting artifacts during testing if globals.test_flags.get("disable_starting_artifacts", false): continue # Each deck group might provide one or more starting artifacts @@ -267,14 +267,21 @@ func get_archetype_artifacts(boss_artifacts := false) -> Array: for a in Aspects.get_archetype_value(arch, "Artifacts"): if boss_artifacts == (a.rarity == "Boss"): artifact_list.append(a) + for tag in Aspects.get_archetype_value(arch, "Tags"): + for a in ArtifactDefinitions.TAG.get(tag, []): + if boss_artifacts == (a.rarity == "Boss"): + artifact_list.append(a) return(artifact_list) + # Goes through all archetypes and gathers all artifacts specified # Returns a list with all artifacts tied to all archetypes of the player. func get_archetype_memories() -> Array: var memories_list := [] for arch in get_current_archetypes(): memories_list += Aspects.get_archetype_value(arch, "Memories") + for tag in Aspects.get_archetype_value(arch, "Tags"): + memories_list += MemoryDefinitions.TAG.get(tag, []) return(memories_list) diff --git a/src/dreamscape/Globals/ScriptingBus.gd b/src/dreamscape/Globals/ScriptingBus.gd new file mode 100644 index 00000000..83f1d6e2 --- /dev/null +++ b/src/dreamscape/Globals/ScriptingBus.gd @@ -0,0 +1,26 @@ +class_name HypnagoniaScriptingBus +extends ScriptingBus + +# Emited whenever the card is played manually or via card effect. +# Since a card might be "played" from any source and to many possible targets +# we use a specialized signal to trigger effects which fire after playing cards +# warning-ignore:unused_signal +signal card_played(card,details) +# warning-ignore:unused_signal +signal card_removed(card,details) +# warning-ignore:unused_signal +signal selection_window_opened(selection_window, details) +# warning-ignore:unused_signal +signal card_selected(selection_window, details) +# warning-ignore:unused_signal +signal battle_begun +# warning-ignore:unused_signal +signal player_turn_started(turn) +# warning-ignore:unused_signal +signal player_turn_ended(turn) +# warning-ignore:unused_signal +signal enemy_turn_started(turn) +# warning-ignore:unused_signal +signal enemy_turn_ended(turn) +# warning-ignore:unused_signal +signal cards_fused(card) diff --git a/src/dreamscape/Hand.gd b/src/dreamscape/Hand.gd index b6b2b388..26a9c3dd 100644 --- a/src/dreamscape/Hand.gd +++ b/src/dreamscape/Hand.gd @@ -2,17 +2,12 @@ extends Hand signal hand_refilled signal hand_emptied -signal cards_fused(card,trigger,details) var is_hand_refilled := false var refill_amount := 5 var discard_at_turn_end := true var cards_in_fusion := [] -func _ready() -> void: -# warning-ignore:return_value_discarded - connect("cards_fused", cfc.signal_propagator, "_on_signal_received") - func empty_hand() -> void: is_hand_refilled = false for card in get_all_cards(): @@ -56,6 +51,7 @@ func draw_card(pile : Pile = cfc.NMAP.deck) -> Card: card = pile.get_top_card() if card: card.move_to(self) + emit_signal("card_drawn",card) _check_for_fusion(card) return card @@ -132,11 +128,7 @@ func _check_for_fusion(card) -> void: fused_card.global_position = c.global_position fused_card.spawn_destination = self fused_card.state = Card.CardState.MOVING_TO_SPAWN_DESTINATION - emit_signal("cards_fused", - fused_card, - "cards_fused", - {} - ) + scripting_bus.emit_signal("cards_fused", fused_card) # warning-ignore:return_value_discarded TurnEventMessage.new("card_fused", +1) diff --git a/src/dreamscape/IconAnims.gd b/src/dreamscape/IconAnims.gd index 8df48de2..325d6dc5 100644 --- a/src/dreamscape/IconAnims.gd +++ b/src/dreamscape/IconAnims.gd @@ -9,6 +9,7 @@ var fast_icon_speed := { } func _ready(): + # warning-ignore:return_value_discarded connect("timeout",self,"_next_icon_animation") diff --git a/src/dreamscape/InfoPanel.tscn b/src/dreamscape/InfoPanel.tscn index cead3fb6..343fa38b 100644 --- a/src/dreamscape/InfoPanel.tscn +++ b/src/dreamscape/InfoPanel.tscn @@ -16,8 +16,8 @@ margin_bottom = 92.0 rect_min_size = Vector2( 250, 13 ) mouse_filter = 2 bbcode_enabled = true -bbcode_text = "[img=16x16]res://fonts/rich_text_icons/magnifying-glass.png[/img]: Increases interpretation on Torments by the specified amount. +bbcode_text = "[img=16x16]res://fonts/rich_text_icons/magnifying-glass.png[/img]: Increases interpretation on Torments by the specified amount. When this exceeds the Torment's max, it is overcome and removed from the encounter." -text = ": Increases interpretation on Torments by the specified amount. +text = ": Increases interpretation on Torments by the specified amount. When this exceeds the Torment's max, it is overcome and removed from the encounter." fit_content_height = true diff --git a/src/dreamscape/MainMenu/CreditLabel.gd b/src/dreamscape/MainMenu/CreditLabel.gd index 013a3e10..98a11f2b 100644 --- a/src/dreamscape/MainMenu/CreditLabel.gd +++ b/src/dreamscape/MainMenu/CreditLabel.gd @@ -49,7 +49,7 @@ const BBCODE_TEXT = """ {card_illustrators} -[color=#FF6700]Curio/Memory Illustration[/color] +[color=#FF6700]Plushie/Memory Illustration[/color] {curio_memory_designers} @@ -87,7 +87,7 @@ var game_designers := { "Db0": "Lead Game Design", "DioBal": "Game Design", "QuestLion#8467": "Archetype Design", -# "SkylarkGSH": "Archetype Design", + "SkylarkGSH": "Miscellaneous Designs", } var developers := { "Db0": "Programming Lead" @@ -120,10 +120,11 @@ var playtesters := { "SkylarkGSH": '', } var ai := { - "Db0": "Softprompt development, AI prompts", - "Liriel": "AI Prompts", + "Db0": "Softprompts, AI prompts", "VE FORBRYDERNE#6568": "KoboldAI API Development", "mr_seeker#1337": "KoboldAI Model Training", + "Liriel": "AI Prompts", + "SkylarkGSH": "AI Prompts", } func _ready() -> void: @@ -196,7 +197,7 @@ func _gather_icon_illustrators() -> Array: continue found_illustrators.append(illustrator) for a in ArtifactDefinitions.get_complete_artifacts_array(): - var illustrator : String = a.get("illustration", "game-icons.net") + var illustrator : String = a.get("illustration", "Db0") if found_illustrators.has(illustrator): continue found_illustrators.append(illustrator) diff --git a/src/dreamscape/MainMenu/SettingsMenu.gd b/src/dreamscape/MainMenu/SettingsMenu.gd index 55cb86f0..051909f1 100644 --- a/src/dreamscape/MainMenu/SettingsMenu.gd +++ b/src/dreamscape/MainMenu/SettingsMenu.gd @@ -3,17 +3,17 @@ extends CenterContainer var koboldai_server_changed := false var koboldai_changed_timer : float = 0 -onready var back_button = find_node('Back') -onready var focus_style = find_node('FocusStyle') -onready var expand_linked_terms = find_node('ExpandLinkedTerms') -onready var fast_icon_speed = find_node('FastIconSpeed') -onready var async_icon_animations = find_node('AsyncIconAnimations') -onready var fancy_movement = find_node('FancyAnimations') -onready var animated_text_backgrounds = find_node('AnimatedTextBackgrounds') -onready var enable_glow = find_node('EnableGlow') -onready var interrupt_music = find_node('InterruptMusic') -onready var main_vol_slider = find_node('MainVolSlider') -onready var music_vol_slider = find_node('MusicVolSlider') +onready var back_button = $"%Back" +onready var focus_style = $"%FocusStyle" +onready var expand_linked_terms = $"%ExpandLinkedTerms" +onready var fast_icon_speed = $"%FastIconSpeed" +onready var async_icon_animations = $"%AsyncIconAnimations" +onready var fancy_movement = $"%FancyAnimations" +onready var animated_text_backgrounds = $"%AnimatedTextBackgrounds" +onready var enable_glow = $"%EnableGlow" +onready var interrupt_music = $"%InterruptMusic" +onready var main_vol_slider = $"%MainVolSlider" +onready var music_vol_slider = $"%MusicVolSlider" onready var use_ai = $"%UseAI" onready var judge_ai = $"%JudgeAI" onready var generate_ai = $"%GenerateAI" @@ -38,7 +38,7 @@ func _ready() -> void: cfc.game_settings['interrupt_music'] = cfc.game_settings.get('interrupt_music', true) cfc.game_settings['expand_linked_terms'] = cfc.game_settings.get('expand_linked_terms', true) cfc.game_settings['fast_icon_speed'] = cfc.game_settings.get('fast_icon_speed', false) - cfc.game_settings['async_icon_animations'] = cfc.game_settings.get('async_icon_animations', false) + cfc.game_settings['async_icon_animations'] = cfc.game_settings.get('async_icon_animations', true) # We disable the AI stuff on HTML as it requires connecting to other sites # and that runs into XSS protections and shit which I don't want to deal with cfc.game_settings['use_ai'] = cfc.game_settings.get('use_ai', OS.get_name() != "HTML5") diff --git a/src/dreamscape/MainMenu/SettingsMenu.tscn b/src/dreamscape/MainMenu/SettingsMenu.tscn index de421115..ebffd11a 100644 --- a/src/dreamscape/MainMenu/SettingsMenu.tscn +++ b/src/dreamscape/MainMenu/SettingsMenu.tscn @@ -86,6 +86,7 @@ items = [ "Large Card Preview", null, false, 2, null, "Info Panels Only", null, selected = 0 [node name="ExpandLinkedTerms" type="CheckButton" parent="PC/VBC/HBC/VBC2/InfoPanelMC/VBC"] +unique_name_in_owner = true margin_top = 28.0 margin_right = 211.0 margin_bottom = 49.0 @@ -111,29 +112,34 @@ margin_right = 221.0 margin_bottom = 117.0 [node name="FancyAnimations" type="CheckButton" parent="PC/VBC/HBC/VBC2/PerformanceMC/VBC"] +unique_name_in_owner = true margin_right = 211.0 margin_bottom = 21.0 text = "Fancy Animations" [node name="AnimatedTextBackgrounds" type="CheckButton" parent="PC/VBC/HBC/VBC2/PerformanceMC/VBC"] +unique_name_in_owner = true margin_top = 24.0 margin_right = 211.0 margin_bottom = 45.0 text = "Anim. Text Background" [node name="EnableGlow" type="CheckButton" parent="PC/VBC/HBC/VBC2/PerformanceMC/VBC"] +unique_name_in_owner = true margin_top = 48.0 margin_right = 211.0 margin_bottom = 69.0 text = "Enable Glow" [node name="FastIconSpeed" type="CheckButton" parent="PC/VBC/HBC/VBC2/PerformanceMC/VBC"] +unique_name_in_owner = true margin_top = 72.0 margin_right = 211.0 margin_bottom = 93.0 text = "Fast Icon Speed" [node name="AsyncIconAnimations" type="CheckButton" parent="PC/VBC/HBC/VBC2/PerformanceMC/VBC"] +unique_name_in_owner = true margin_top = 96.0 margin_right = 211.0 margin_bottom = 117.0 @@ -165,6 +171,7 @@ margin_right = 167.0 margin_bottom = 141.0 [node name="InterruptMusic" type="CheckButton" parent="PC/VBC/HBC/VBC/SoundMC/VBC"] +unique_name_in_owner = true margin_right = 157.0 margin_bottom = 21.0 pressed = true @@ -177,6 +184,7 @@ margin_bottom = 45.0 text = "Main Volume" [node name="MainVolSlider" type="HSlider" parent="PC/VBC/HBC/VBC/SoundMC/VBC"] +unique_name_in_owner = true margin_top = 48.0 margin_right = 157.0 margin_bottom = 61.0 @@ -194,6 +202,7 @@ margin_bottom = 85.0 text = "Music Volume" [node name="MusicVolSlider" type="HSlider" parent="PC/VBC/HBC/VBC/SoundMC/VBC"] +unique_name_in_owner = true margin_top = 88.0 margin_right = 157.0 margin_bottom = 101.0 @@ -338,6 +347,7 @@ margin_right = 682.0 margin_bottom = 378.0 [node name="Back" type="Button" parent="PC/VBC/HBoxContainer"] +unique_name_in_owner = true margin_right = 682.0 margin_bottom = 50.0 rect_min_size = Vector2( 0, 50 ) diff --git a/src/dreamscape/Memories/MemoryDefinitions.gd b/src/dreamscape/Memories/MemoryDefinitions.gd index f2f529a0..ecad6131 100644 --- a/src/dreamscape/Memories/MemoryDefinitions.gd +++ b/src/dreamscape/Memories/MemoryDefinitions.gd @@ -79,7 +79,7 @@ const BossFaster := { "name": "A Sense of Closure", "description": "{memory_name} ({upgrades}): Recall this memory during the Dream Journal "\ + "to increased your repressed %s by {pathos_amount}\n" % [Terms.RUN_ACCUMULATION_NAMES.boss]\ - + "While this memory is charging, you have an increased chance for rarer cards and curios", + + "While this memory is charging, you have an increased chance for rarer cards and {artifacts}", "icon": "res://assets/icons/memories/a_sense_of_closure.png", "illustration": "SkylarkGSH", "context": EffectContext.OVERWORLD, @@ -610,20 +610,58 @@ const GENERIC := [ # Archetype-specific memories which only appear in runs in which # Their tied archetype is selected. const ARCHETYPE := [ - ReshuffleHand, - PoisonEnemy, - DisempowerEnemy, - ImperviousSelf, - FortifySelf, - ExertRecovery, - ExertSelf, - RegenerateSelf, - BufferSelf, - ActivateStartups, - ThornsSelf, - FreezeCard, ] +# Artifact-specific artifacts which only appear in runs which +# an archetype with that specific tag is used +const TAG := { + Terms.ACTIVE_EFFECTS.thorns.name: [ + ThornsSelf, + ], + Terms.ACTIVE_EFFECTS.poison.name: [ + PoisonEnemy, + ], + Terms.ACTIVE_EFFECTS.burn.name: [ + ], + Terms.ACTIVE_EFFECTS.impervious.name: [ + ImperviousSelf, + ], + Terms.ACTIVE_EFFECTS.fortify.name: [ + FortifySelf, + ], + Terms.ACTIVE_EFFECTS.armor.name: [ + ], + Terms.ACTIVE_EFFECTS.buffer.name: [ + BufferSelf, + ], + Terms.ACTIVE_EFFECTS.disempower.name: [ + DisempowerEnemy, + ], + Terms.GENERIC_TAGS.purpose.name: [ + ], + Terms.GENERIC_TAGS.startup.name: [ + ActivateStartups, + ], + Terms.GENERIC_TAGS.fusion.name: [ + ], + Terms.GENERIC_TAGS.exert.name: [ + ExertRecovery, + ExertSelf, + ], + Terms.GENERIC_TAGS.slumber.name: [ + ], + Terms.GENERIC_TAGS.frozen.name: [ + FreezeCard, + ], + Terms.GENERIC_TAGS.spark.name: [ + ReshuffleHand, + ], + Terms.GENERIC_TAGS.relax.name: [ + RegenerateSelf, + ], +} + + # These memories are only found in non-combat encounters const ENCOUNTER := [ RemoveDebuff, @@ -657,7 +695,10 @@ static func get_memory_bbcode_format(memory_definition: Dictionary, upgrades := static func get_complete_memories_array() -> Array: - return(GENERIC + ARCHETYPE + ENCOUNTER) + var tag_memories := [] + for tag in TAG: + tag_memories += TAG[tag] + return(GENERIC + ARCHETYPE + ENCOUNTER + tag_memories) static func find_memory_from_canonical_name(memory_canonical_name: String): diff --git a/src/dreamscape/Memories/RerollDraft.gd b/src/dreamscape/Memories/RerollDraft.gd index f6fcf01f..ba9b21fd 100644 --- a/src/dreamscape/Memories/RerollDraft.gd +++ b/src/dreamscape/Memories/RerollDraft.gd @@ -15,6 +15,7 @@ func _on_memory_ready(_memory: Reference) -> void: else: while not is_instance_valid(globals.journal): yield(get_tree(), "idle_frame") + # warning-ignore:return_value_discarded globals.journal.connect("card_draft_started", self, "_on_card_draft_started") _switch_highlight_to(inactive_highlight) @@ -35,6 +36,7 @@ func _get_active_card_drafts() -> Array: func _on_card_draft_started(draft_node: Node) -> void: if artifact_object.is_ready: ._on_memory_ready(artifact_object) + # warning-ignore:return_value_discarded draft_node.connect("card_drafted", self, "_on_card_drafted") diff --git a/src/dreamscape/OverridableUtils.gd b/src/dreamscape/OverridableUtils.gd index d403f511..0e67b0ad 100644 --- a/src/dreamscape/OverridableUtils.gd +++ b/src/dreamscape/OverridableUtils.gd @@ -13,13 +13,14 @@ func get_subjects(subject_request, _stored_integer: int = 0) -> Array: # Populates the info panels under the card, when it is shown in the # viewport focus or deckbuilder -func populate_info_panels(card: Card, focus_info: DetailPanels) -> void: - focus_info.hide_all_info() - var linked_terms = { - "already_added": [], - "dreamer": [], - "torment": [], - } +func populate_info_panels(card: Card, focus_info: DetailPanels, linked_terms := {}) -> Dictionary: + if linked_terms.empty(): + focus_info.hide_all_info() + linked_terms = { + "already_added": [], + "dreamer": [], + "torment": [], + } if card.deck_card_entry: if card.deck_card_entry.upgrade_threshold > 0: var upgrade_format := { @@ -95,6 +96,7 @@ func populate_info_panels(card: Card, focus_info: DetailPanels) -> void: focus_info.show_illustration("Illustration by: " + card_illustration) else: focus_info.hide_illustration() + return(linked_terms) func add_linked_terms(focus_info: DetailPanels, linked_terms: Dictionary) -> void: if not cfc.game_settings.get('expand_linked_terms', true): diff --git a/src/dreamscape/Overworld/CardDraft.gd b/src/dreamscape/Overworld/CardDraft.gd index 66e996bb..4e5dbade 100644 --- a/src/dreamscape/Overworld/CardDraft.gd +++ b/src/dreamscape/Overworld/CardDraft.gd @@ -77,6 +77,7 @@ func reroll_card_draft() -> void: func _on_card_draft_selected(option: int, draft_card_object) -> void: for child in get_children(): + if child is Tween: continue if child != draft_card_object: $Tween.interpolate_property(child, 'modulate:a', 1, 0, 0.7, diff --git a/src/dreamscape/Overworld/CustomEntries/Artifact_BossDraft.gd b/src/dreamscape/Overworld/CustomEntries/Artifact_BossDraft.gd index 3e600d41..740d752e 100644 --- a/src/dreamscape/Overworld/CustomEntries/Artifact_BossDraft.gd +++ b/src/dreamscape/Overworld/CustomEntries/Artifact_BossDraft.gd @@ -3,7 +3,7 @@ extends JournalCustomDraft func _setup() -> void: custom_draft_name = "artifact_boss_draft" draft_amount = ArtifactDefinitions.BossDraft.amounts.draft_amount - description.bbcode_text = "It was time to drink that curious beer that I discovered.\n"\ + description.bbcode_text = "I found the secret compartment in the Beear. It was full of fresh beer!\n"\ + "[Draft %s cards from one of your aspects]" % [draft_amount] diff --git a/src/dreamscape/Overworld/Journal.gd b/src/dreamscape/Overworld/Journal.gd index f824aaf2..51a18a03 100644 --- a/src/dreamscape/Overworld/Journal.gd +++ b/src/dreamscape/Overworld/Journal.gd @@ -561,14 +561,16 @@ func _input(event): # if c.card_name == "Noisy Whip": # globals.player.deck.remove_card(c) # _reveal_entry(upgrade_journal, true) -# globals.player.deck.add_new_card("Guilt") +# d globals.player.deck.add_new_card("Guilt") # globals.player.deck.add_new_card("Catatonia") -# globals.player.add_artifact(ArtifactDefinitions.CursedCurios.canonical_name) + globals.player.add_artifact(ArtifactDefinitions.BufferedSpawns.canonical_name) # globals.player.add_artifact(ArtifactDefinitions.EnhanceOnRest.canonical_name) # globals.player.add_artifact(ArtifactDefinitions.PerturbationHeal.canonical_name) # globals.player.add_artifact(ArtifactDefinitions.CostlyUpgrades.canonical_name) -# globals.player.add_memory(MemoryDefinitions.DamageAll.canonical_name) + globals.player.add_memory(MemoryDefinitions.DamageAll.canonical_name) # globals.player.add_memory(MemoryDefinitions.BossFaster.canonical_name) +# globals.player.add_memory(MemoryDefinitions.RerollDraft.canonical_name) +# globals.player.add_memory(MemoryDefinitions.ImmerseSelf.canonical_name) # warning-ignore:return_value_discarded # globals.player.add_memory(MemoryDefinitions.FreezeCard.canonical_name) # var card_entry = globals.player.deck.add_new_card("Towering Presence") @@ -585,25 +587,26 @@ func _input(event): # globals.player.pathos.available_masteries += 6 var debug_encounters = [ # EnemyEncounter.new(Act1.Clown, "hard"), -# EnemyEncounter.new(Act2.ENEMIES.GuiltyTreatment, "easy"), +# EnemyEncounter.new(Act2.ENEMIES.Lotustus, "medium"), # EnemyEncounter.new(Act3.Cringelord, "hard"), # load(AllActs.NCE.risky.OstrichEggs).new(), -# load(Act1.NCE.risky.Highwire).new(), -# load(Act1.NCE.easy.CrystalShattering).new(), +# load(Act1.NCE.risky.Spider).new(), +# load(Act1.NCE.easy.MonsterTrain).new(), # load(Act2.NCE.easy.Subconscious).new(), # load(Act3.NCE.easy.BeastMirror).new(), + load(Act3.NCE.risky.UnderwaterCave).new(), # load("res://src/dreamscape/Run/NCE/Artifact.gd").new(), # load("res://src/dreamscape/Run/NCE/Rest.gd").new(), # load("res://src/dreamscape/Run/NCE/Shop.gd").new(), # BossEncounter.new(Act1.BOSSES["Narcissus"]), # BossEncounter.new(Act2.BOSSES["Surreality"]), # BossEncounter.new(Act3.BOSSES["Fear_and_Phobia"]), -# EliteEncounter.new(Act1.Bully, "medium"), +# EliteEncounter.new(Act1.Leviathan, "hard"), # EliteEncounter.new(Act2.IndescribableAbsurdity, "medium"), -# EliteEncounter.new(Act3.InfiniteCorridor, "medium"), +# EliteEncounter.new(Act3.TheGatherer, "medium"), # load("res://src/dreamscape/Run/NCE/Shop.gd").new(), # load("res://src/dreamscape/Run/NCE/Rest.gd").new(), -# load("res://src/dreamscape/Run/NCE/Artifact.gd").new(), + load("res://src/dreamscape/Run/NCE/Artifact.gd").new(), ] for encounter in debug_encounters: var journal_choice_scene = JOURNAL_ENCOUNTER_CHOICE_SCENE.instance() diff --git a/src/dreamscape/Overworld/JournalChoice.gd b/src/dreamscape/Overworld/JournalChoice.gd index a50ff59f..dad712f6 100644 --- a/src/dreamscape/Overworld/JournalChoice.gd +++ b/src/dreamscape/Overworld/JournalChoice.gd @@ -57,5 +57,6 @@ func _on_gui_input(event) -> void: disconnect("gui_input", self, "_on_gui_input") disconnect("meta_hover_started", journal, "_on_meta_hover_started") disconnect("meta_hover_ended", journal, "_on_meta_hover_ended") - remove_from_group("secondary_choices") + if is_in_group("secondary_choices"): + remove_from_group("secondary_choices") diff --git a/src/dreamscape/PathosEntryInfo.gd b/src/dreamscape/PathosEntryInfo.gd index 2ac94451..fcc16a34 100644 --- a/src/dreamscape/PathosEntryInfo.gd +++ b/src/dreamscape/PathosEntryInfo.gd @@ -48,6 +48,7 @@ func setup(_name: String, pathos_description: Label) -> void: func update_labels() -> void: var chance : int if name == Terms.RUN_ACCUMULATION_NAMES.boss: + # warning-ignore:narrowing_conversion chance = round(globals.player.pathos.pathi[name].repressed / globals.player.pathos.get_boss_threshold() * 100) else: chance = globals.player.pathos.calculate_chance_for_encounter(name) diff --git a/src/dreamscape/PlayerInfo.gd b/src/dreamscape/PlayerInfo.gd index 2df9d67b..7b3f9a68 100644 --- a/src/dreamscape/PlayerInfo.gd +++ b/src/dreamscape/PlayerInfo.gd @@ -29,7 +29,7 @@ onready var _deck_preview_grid := $DeckPreview/ScrollContainer/GridContainer onready var _encounter_label := $HBC/Encounter onready var _deck_button := $HBC/Deck onready var _artifact_popup := $ArtifactsPopup -onready var _artifact_button := $HBC/Curios +onready var _artifact_button := $HBC/Plushies onready var _tutorial_button := $HBC/Help onready var _settings_button := $HBC/Settings onready var _button_desc_popup := $ButtonDescriptionPopup @@ -89,6 +89,7 @@ func _ready() -> void: globals.encounters.connect("encounter_changed", self, "_update_encounter_label") if globals.encounters.current_act: _update_encounter_label(globals.encounters.current_act.get_act_name(), globals.encounters.encounter_number) + _set_random_plushie_button_art() # cfc.game_settings['show_artifacts'] = cfc.game_settings.get('show_artifacts', false) # _artifact_button.pressed = cfc.game_settings.show_artifacts # _on_ArtifactsShowButton_toggled(_artifact_button.pressed, false) @@ -279,3 +280,8 @@ func _clear_decklist_cache(_card_entry) -> void: func _on_pathos_advancements_modified(value: int, _old_value: int) -> void: _pathos_button.text = str(value) + +func _set_random_plushie_button_art(): + var all_options = CFUtils.list_imported_in_directory("res://assets/icons/GUI/plushie_icon/", true) + CFUtils.shuffle_array(all_options, true) + _artifact_button.icon = CFUtils.convert_texture_to_image(all_options[0]) diff --git a/src/dreamscape/PlayerInfo.tscn b/src/dreamscape/PlayerInfo.tscn index f5dd9859..7441fad9 100644 --- a/src/dreamscape/PlayerInfo.tscn +++ b/src/dreamscape/PlayerInfo.tscn @@ -97,7 +97,7 @@ text = "0/90" root_node = NodePath("../Texture") anims/Beating = SubResource( 10 ) -[node name="Curios" type="Button" parent="HBC"] +[node name="Plushies" type="Button" parent="HBC"] margin_left = 96.0 margin_right = 131.0 margin_bottom = 39.0 @@ -306,7 +306,7 @@ margin_right = 40.0 margin_bottom = 14.0 custom_styles/normal = SubResource( 8 ) -[connection signal="pressed" from="HBC/Curios" to="." method="_on_ArtifactsShowButton_pressed"] +[connection signal="pressed" from="HBC/Plushies" to="." method="_on_ArtifactsShowButton_pressed"] [connection signal="pressed" from="HBC/Pathos" to="." method="_on_Pathos_pressed"] [connection signal="pressed" from="HBC/Deck" to="." method="_on_Deck_pressed"] [connection signal="pressed" from="HBC/Help" to="." method="_on_Help_pressed"] diff --git a/src/dreamscape/Run/Act1.gd b/src/dreamscape/Run/Act1.gd index 624e65fd..a4e79de6 100644 --- a/src/dreamscape/Run/Act1.gd +++ b/src/dreamscape/Run/Act1.gd @@ -741,9 +741,24 @@ const Bully = { ], } +const Leviathan = { + "name": "Leviathan", + "title": "My Tiny Place in the Cosmos", + "scenes": [preload("res://src/dreamscape/CombatElements/Enemies/Elites/Leviathan.tscn")], + "journal_description":\ +"""A great shadow loomed above. It did not notice me, not because it was senseless, for it could feel all of the universe. It did not notice me, not because it was unintelligent, for it had an intellect larger than I could comprehend. It did not notice me, not because it was sightless, but because I am simply too small. It is coming for my house, my village, my whole world. No, it is not. my whole existence is far too small for the Sky Leviathan to set goals by it. With a mere tensing of a muscle, it can destroy the whole universe. Without even a thought, it puts all mundane struggles to shame. If it's too big for anything to stop... then why try?""", + "journal_reward":\ +"""While there was nothing I could do, I realized that up to that moment, I had already been living in the face of impossibility. The world is far too large and far too impossible to understand, or overcome. Nevertheless, we still try. Recognizing this impossibly large Leviathan was only a reflection of an uncaring world, I went back to living as all humans do, worrying and still trying to do the best with what little I have.""", + 'journal_art': "res://assets/journal/advanced/Leviathan.png", + "ai_prompts": [ + "The manifestation of the my own universal insignificancy loomed over me like a sky leviathan", + ], +} + const ELITES = { "RushElite": RushElite, - "Bully": Bully + "Bully": Bully, + "Leviathan": Leviathan } const Narcissus = { diff --git a/src/dreamscape/Run/Act2.gd b/src/dreamscape/Run/Act2.gd index e419ab1a..4af10556 100644 --- a/src/dreamscape/Run/Act2.gd +++ b/src/dreamscape/Run/Act2.gd @@ -42,9 +42,12 @@ const TrafficJam = { "journal_art": "res://assets/journal/torments/Traffic Jam.jpg", "ai_prompts": [ "I was stuck in traffic, in a bottleneck that stretched accross the horizon", + "I was caught in the never-ending traffic jam before me. I had places to go, things to do!", + "The traffic jam was an endless torture. Was it even worth", + "The traffic jam of anger blocked the stairway to happiness. I was at a dead end", ], "replacement_keywords": { - "torment_tag1": ["Traffic Jam","traffic","jam","bottleneck"], + "torment_tag1": ["[Tt]raffic Jam","[Tt]raffic","[Jj]am","[Bb]ottleneck","[Bb]oredom"], }, "enemies": { "easy": [ @@ -87,6 +90,9 @@ const Mouse = { "journal_art": "res://assets/journal/torments/Mouse.jpg", "ai_prompts": [ "I was having polite tea with a mouse, discussing political theory", + "The squeaky voice of the mouse rattled my brain around with its hyperactive intelligence. I understood nothing", + "The teacups shattered onto the floor as the words began to spill out of the mouse's erratic mouth", + "The mouse was too smart for me. It predicted every word I said, transforming them inton a convoluted theory", ], "replacement_keywords": { "torment_tag1": ["mouse","rodent","discussing"], @@ -538,11 +544,12 @@ It was frustrating and upsetting, making me feel guilty and ashamed. I couldn't ], }, } + const Void = { "name": "Void", "title": "A Black Hole in your mind", "journal_description":\ -"""Initially I felt like my dreams were fading. But as the void of everything grew larger and more distinct, it occurred to me it was far worse. You see, what a dream that could never be repeated. An endless black space opens, coming together with your mind, reaching towards you like a powerful claw. +"""Initially I felt like my dreams were fading. But as [url={torment_tag1}the void of everything[/url] grew larger and more distinct, it occurred to me it was far worse. You see, what a dream that could never be repeated. An endless black space opens, coming together with your mind, reaching towards you like a powerful claw. From your perspective, it feels cold, it stretches out, wants to penetrate you and capture you for eternity. Yet when you look down onto the threshold, what do you see?""", "journal_reward":\ """When you read these words now, there's going to be something else occupying the void inside of you; an invisible "you" staring back from deep within yourself... But that shouldn't matter. Right?""", @@ -594,6 +601,49 @@ From your perspective, it feels cold, it stretches out, wants to penetrate you a ], }, } +const Lotustus = { + "name": "Lotustus", + "title": "A dizzying array of holes", + "journal_description":\ +"""I remember my legs submerged in the murky water. I dredged through the endless misty swamp as my worry began to grow. +Soon my vision cleated, and to my dismay I saw [url={torment_tag1}]thousands of holes[/url] (or were they tiny nests?), all around me. An endless pit of agitation.""", + "journal_reward":\ +"""Even though I could feel and see the irritating blood red pores across my skin, I had to reassure myself that it couldn't hurt me physically. I denied my primal subconcious assumptions within me, and stormed away from the hideous amalgamations before me, and continued my trek through the bog.""", +# "journal_art": "res://assets/journal/torments/The Void.jpg", + "ai_prompts": [ + "My skin crawled as I beheld dozens on tiny holes arrayed", + ], + "replacement_keywords": { + "torment_tag1": ["trypophobia","holes?"], + }, + "enemies": { + "easy": [ + { + "definition": EnemyDefinitions.LOTUSTUS, + "health_modifier": -30, + }, + ], + "medium": [ + { + "definition": EnemyDefinitions.LOTUSTUS, + }, + ], + "hard": [ + { + "definition": EnemyDefinitions.LOTUSTUS, + "rebalancing": { + "Perplex": +2, + }, + "starting_effects": [ + { + "name": Terms.ACTIVE_EFFECTS.thorns.name, + "stacks": 4 + }, + ] + }, + ], + }, +} const ENEMIES = { "TrafficJam": TrafficJam, "Mouse": Mouse, @@ -604,6 +654,7 @@ const ENEMIES = { "ImpossibleConstruction": ImpossibleConstruction, "GuiltyTreatment": GuiltyTreatment, "Void":Void, + "Lotustus": Lotustus, } const IndescribableAbsurdity = { diff --git a/src/dreamscape/Run/CombatEncounter.gd b/src/dreamscape/Run/CombatEncounter.gd index 207ba5b4..d8c99e41 100644 --- a/src/dreamscape/Run/CombatEncounter.gd +++ b/src/dreamscape/Run/CombatEncounter.gd @@ -26,7 +26,9 @@ func start_ordeal() -> void: func _on_board_instanced() -> void: cfc.disconnect("all_nodes_mapped", self, "_on_board_instanced") + # warning-ignore:return_value_discarded EventBus.connect("battle_ended", self, "end") + # warning-ignore:return_value_discarded EventBus.connect("game_over", self, "game_over") # We hide the journal black cover, so that when the board fades out # The journal appears behind it diff --git a/src/dreamscape/Run/EncounterStory.gd b/src/dreamscape/Run/EncounterStory.gd index b901b318..149a65a8 100644 --- a/src/dreamscape/Run/EncounterStory.gd +++ b/src/dreamscape/Run/EncounterStory.gd @@ -57,6 +57,8 @@ func setup_with_vars( default_stories = _default_stories.duplicate() elif typeof(_default_stories) == TYPE_STRING: default_stories = [_default_stories] + for iter in range(default_stories.size()): + default_stories[iter] = default_stories[iter].format(Terms.get_bbcode_formats(18)) ai_prompts = _ai_prompts replacement_keywords = _replacement_kws diff --git a/src/dreamscape/Run/Encounters.gd b/src/dreamscape/Run/Encounters.gd index c1b638e1..1e66e311 100644 --- a/src/dreamscape/Run/Encounters.gd +++ b/src/dreamscape/Run/Encounters.gd @@ -82,8 +82,6 @@ func generate_journal_choices() -> Array: var pathos_type_enemy: PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.enemy] var pathos_type_elite: PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.elite] var pathos_type_boss: PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.boss] - var enemy_pathos_avg = pathos_type_enemy.get_progression_average() - var elite_pathos_avg = pathos_type_elite.get_progression_average() var boss_pathos_avg = pathos_type_boss.get_progression_average() var normal_difficulty := 'N/A' var elite_difficulty := 'N/A' diff --git a/src/dreamscape/Run/NCE/Act1/CrystalShattering.gd b/src/dreamscape/Run/NCE/Act1/CrystalShattering.gd index 51575ce8..31efe469 100644 --- a/src/dreamscape/Run/NCE/Act1/CrystalShattering.gd +++ b/src/dreamscape/Run/NCE/Act1/CrystalShattering.gd @@ -13,7 +13,9 @@ It took an immense amount of feeling to make each blow, but the resulting releas I grabbed the tool, ready to strike another blow at the next crystal. It's been a long time coming... """ const ai_prompts:= [ - "I remember myself breaking apart the Crystalized snapshots of myself with" + "I remember myself breaking apart the Crystalized snapshots of myself with", + "I took a deep breath as I shattered the crystal looking like my face", + "The crystal formation groaned as if alive, while I dug deep into the fascimiles of my face", ] var secondary_choices := { diff --git a/src/dreamscape/Run/NCE/Act1/Highwire.gd b/src/dreamscape/Run/NCE/Act1/Highwire.gd index 6e10653e..35152ba0 100644 --- a/src/dreamscape/Run/NCE/Act1/Highwire.gd +++ b/src/dreamscape/Run/NCE/Act1/Highwire.gd @@ -8,7 +8,7 @@ const ai_prompts:= [ ] var secondary_choices := { - 'accept': '[Accept]: 40% chance to gain a random curio. [color=#FF3333]Become {perturbation}[/color].', + 'accept': '[Accept]: 40% chance to gain a random {artifact}. [color=#FF3333]Become {perturbation}[/color].', 'decline': '[Decline]: [color=#FF3333]+10[/color] {anxiety_up}. [color=#FF3333]Lose some {repressed_pathos}.', } diff --git a/src/dreamscape/Run/NCE/Act1/SlayTheSpire.gd b/src/dreamscape/Run/NCE/Act1/SlayTheSpire.gd index 7eeb750d..873a898c 100644 --- a/src/dreamscape/Run/NCE/Act1/SlayTheSpire.gd +++ b/src/dreamscape/Run/NCE/Act1/SlayTheSpire.gd @@ -4,6 +4,11 @@ const SLAY_MASTERIES := 3 const LEAVE_MASTERIES := 1 const journal_description = "I dreamt of a long spire, disappearing into the pregnant clouds above. "\ + "I realized I was now holding a weapon and could feel the need to slay whatever is within..." +const ai_prompts:= [ + "I dreamt of a long spire, disappearing into the clouds aboveI dreamt of a long spire, disappearing into the clouds above", + "I was standing in front of a spire full of monsters. I needed to decide if I would climb up to slay them", + "The stairway to the massive spire above was ominous, but I was here to slay", +] var secondary_choices := { 'slay': '[Slay]: {bcolor:+10 {anxiety_up}:}. Gain some {bcolor:{repressed_enemy}:}. {gcolor:Gain {slay_amount}:} {masteries}', @@ -19,7 +24,7 @@ var nce_result_fluff := { func _init(): - introduction.setup_with_vars("Slay The Spire",journal_description, "A Tower Full Of Monsters") + introduction.setup_with_vars("Slay The Spire",journal_description, "A Tower Full Of Monsters",ai_prompts) prepare_journal_art(load("res://assets/journal/nce/Slay the Spire.jpg")) var pathos_type_enemy : PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.enemy] diff --git a/src/dreamscape/Run/NCE/Act1/SleepOfOblivion.gd b/src/dreamscape/Run/NCE/Act1/SleepOfOblivion.gd index 5b0e26ab..11f5a4dc 100644 --- a/src/dreamscape/Run/NCE/Act1/SleepOfOblivion.gd +++ b/src/dreamscape/Run/NCE/Act1/SleepOfOblivion.gd @@ -3,6 +3,10 @@ extends NonCombatEncounter const journal_description = "I dreamed of a large endless abyss. I could not see the bottom but I felt its pull. What did I do..?" +const ai_prompts:= [ + "I dreamed of a large endless abyss. I could not see the bottom but I felt its pull", + "The yawning pit in the ground was strangely welcoming. I could feel oblivion itself pulling", +] var secondary_choices := { @@ -16,7 +20,7 @@ var nce_resul_fluff := { func _init(): - introduction.setup_with_vars("Sleep of Oblivion",journal_description, "") + introduction.setup_with_vars("Sleep of Oblivion",journal_description, "",ai_prompts) prepare_journal_art(load("res://assets/journal/nce/Sleep of Oblivion.jpg")) func begin() -> void: diff --git a/src/dreamscape/Run/NCE/Act1/Spider.gd b/src/dreamscape/Run/NCE/Act1/Spider.gd index 21e49656..a7adc631 100644 --- a/src/dreamscape/Run/NCE/Act1/Spider.gd +++ b/src/dreamscape/Run/NCE/Act1/Spider.gd @@ -1,6 +1,10 @@ extends NonCombatEncounter const journal_description = "A spider was looking at me with a thousand eyes. Its intentions are unfathomable." +const ai_prompts:= [ + "A spider was looking at me with a thousand eyes. Its intentions are unfathomable", + "The spider did not appear hostile, but rather casually curious about me", +] var secondary_choices := { 'eat': '[Eat the spider]: {gcolor:-10 {anxiety_down}:}. Gain {bcolor:{boss_amount} {boss_pathos}:}', @@ -19,7 +23,7 @@ var pathos_type_boss: PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMUL var pathos_type_elite: PathosType = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.elite] func _init(): - introduction.setup_with_vars("Spider",journal_description, "One Curious Arachnid") + introduction.setup_with_vars("Spider",journal_description, "One Curious Arachnid",ai_prompts) prepare_journal_art(load("res://assets/journal/nce/Spider.jpg")) func begin() -> void: diff --git a/src/dreamscape/Run/NCE/Act2/AlphaKappaOmega.gd b/src/dreamscape/Run/NCE/Act2/AlphaKappaOmega.gd index bf289c2d..55ed7b77 100644 --- a/src/dreamscape/Run/NCE/Act2/AlphaKappaOmega.gd +++ b/src/dreamscape/Run/NCE/Act2/AlphaKappaOmega.gd @@ -8,6 +8,10 @@ const MASTERIES_AMOUNT := { const journal_description = "I came across a faceless monk with an undeterminable amount of arms." \ + " \"I am the monk Chance,\" the monk seemed to say from nowhere, \"disciple of the goddess Lady Luck.\"" \ + "\"Would you like the power to control your fate?\"" +const ai_prompts:= [ + "The infinite arms of the monk before me seemed to fade into shadows, as my fate went on the line", + "The faceless monk shrugged. \"You only have one chance to decide your fate.\"", +] var secondary_choices := { @@ -24,7 +28,7 @@ var card_choice_descriptions := { } func _init(): - introduction.setup_with_vars("Alpha-Kappa-Omega",journal_description, "That Is One Way to Control One's Fate") + introduction.setup_with_vars("The Faceless Monk with a Thousand Arms",journal_description, "That Is One Way to Control One's Fate",ai_prompts) prepare_journal_art(load("res://assets/journal/nce/AlphaKappaOmega.jpg")) func begin() -> void: diff --git a/src/dreamscape/Run/NCE/Act2/Blanket.gd b/src/dreamscape/Run/NCE/Act2/Blanket.gd index 34d3572b..20ecc35b 100644 --- a/src/dreamscape/Run/NCE/Act2/Blanket.gd +++ b/src/dreamscape/Run/NCE/Act2/Blanket.gd @@ -7,6 +7,11 @@ My blanket was my only friend, but it has been giving me strange vibes. Every night when I got home it got absurdly clingy, especially when we were watching movies in bed together. Today, I felt the heat stifling me. """ +const ai_prompts:= [ + "My blanket was my only friend, but it has been giving me strange vibes", + "I've been completely enamored with my blanked lately, but things started going sour", +] + var pathos_gained : float var pathos_type = globals.player.pathos.pathi[PATHOS_TYPE] @@ -22,7 +27,7 @@ var nce_result_fluff := { } func _init(): - introduction.setup_with_vars("Blanket",journal_description, "The Comforting Feeling Can Easily Become Oppressive") + introduction.setup_with_vars("Blanket",journal_description, "A Comforting Feeling Can Easily Become Oppressive", ai_prompts) prepare_journal_art(load("res://assets/journal/nce/Blanket.jpg")) func begin() -> void: diff --git a/src/dreamscape/Run/NCE/Act2/Griftlands2.gd b/src/dreamscape/Run/NCE/Act2/Griftlands2.gd index a233e181..a582bc33 100644 --- a/src/dreamscape/Run/NCE/Act2/Griftlands2.gd +++ b/src/dreamscape/Run/NCE/Act2/Griftlands2.gd @@ -8,6 +8,9 @@ var secondary_choices := { const journal_description = "Once again, I found myself in the fantasy western world. "\ + "This time I was some sort of amphibian humanoid with a drinking problem, ."\ + "and I found out my rich elders has passed away in mysterious circumstances" +const ai_prompts:= [ + "Once again, I found myself in the fantasy western world. This time I was some sort of amphibian humanoid with a drinking problem", +] var nce_result_fluff := { diff --git a/src/dreamscape/Run/NCE/Act3/UnderwaterCave.gd b/src/dreamscape/Run/NCE/Act3/UnderwaterCave.gd index 5fb5bb78..152bdec9 100644 --- a/src/dreamscape/Run/NCE/Act3/UnderwaterCave.gd +++ b/src/dreamscape/Run/NCE/Act3/UnderwaterCave.gd @@ -26,11 +26,11 @@ const ADVANCED_COMBAT_ENCOUNTER_DEFINITION = { }, ] } -const journal_description = "I was deep diving and came upon the edge of an underwater cave. The sign warned people not to try and recover the Curio within due to danger of drowning. I had to have it!" +const journal_description = "I was deep diving and came upon the edge of an underwater cave. The sign warned people not to try and recover the {artifact} within due to danger of drowning. I had to have it!" var journal_draft_script = load("res://src/dreamscape/Overworld/CustomEntries/NCE_UnderwaterCave.gd") var secondary_choices := { - 'explore': '[Explore the Cave]: {gcolor:Gain 1 rare Curio. Gain/Upgrade a memory. Draft a card. Gain {masteries_amount} {masteries}:}.', + 'explore': '[Explore the Cave]: {gcolor:Gain 1 rare {artifact}. Gain/Upgrade a memory. Draft a card. Gain {masteries_amount} {masteries}:}.', 'leave': '[Leave]: Lose {bcolor:all {masteries}:}.', } @@ -89,7 +89,7 @@ func end() -> void: "unlocked unexpected memrories"), "curio": _prepare_artifact_popup_bbcode( artifact_prep.selected_artifacts[0].canonical_name, - "I took the curio back out") + "I took the {artifact} back out") } - reward_text = reward_text.format(fmt) + reward_text = reward_text.format(fmt).format(Terms.get_bbcode_formats(18)) globals.journal.display_nce_rewards(reward_text) diff --git a/src/dreamscape/Run/NCE/Artifact.gd b/src/dreamscape/Run/NCE/Artifact.gd index 667f98d2..27aadbf7 100644 --- a/src/dreamscape/Run/NCE/Artifact.gd +++ b/src/dreamscape/Run/NCE/Artifact.gd @@ -1,9 +1,9 @@ class_name ArtifactEncounter extends NonCombatEncounter -const journal_description = "I recall I had specific curio with me, but I struggle to remember what. This recollection is painful..." +const journal_description = "I recall I had specific {artifact} with me, but I struggle to remember what. This recollection is painful..." const ai_prompts:= [ - "I recall I had specific curio with me, but I struggle to remember what", + "I recall I had specific plushie with me, but I struggle to remember what", "What a strange little bauble this is. How did it end up here", ] diff --git a/src/dreamscape/Run/NCE/Shop.gd b/src/dreamscape/Run/NCE/Shop.gd index 8316a6fb..094c75ba 100644 --- a/src/dreamscape/Run/NCE/Shop.gd +++ b/src/dreamscape/Run/NCE/Shop.gd @@ -4,7 +4,7 @@ extends NonCombatEncounter const SHOP_SCENE := preload("res://src/dreamscape/Shop/Shop.tscn") const journal_description := "I saw a friend mine becking me over. We certainly had much to catch up on." const ai_prompts:= [ - "I saw a friend mine becking me over. We certainly had much to catch up on.", + "I saw a friend mine beckoning me over. We certainly had much to catch up on.", "As I arrived at the cafe a dear old friend waved at me", "I hadn't seen that face for a couple of years, but as I approached it was like we last met yesterday", ] diff --git a/src/dreamscape/ScriptingEngine/ScriptingEngine.gd b/src/dreamscape/ScriptingEngine/ScriptingEngine.gd index 47b36d0c..dbec9ad2 100644 --- a/src/dreamscape/ScriptingEngine/ScriptingEngine.gd +++ b/src/dreamscape/ScriptingEngine/ScriptingEngine.gd @@ -435,6 +435,10 @@ func autoplay_card(script: ScriptTask) -> int: var tags: Array = ["Scripted"] + script.get_property(SP.KEY_TAGS) for card in script.subjects: if not costs_dry_run(): + card.queued_autoplays.append(self) +# print_debug([self, card.queued_autoplays]) + while card.queued_autoplays[0] != self: + yield(card.get_tree().create_timer(0.1), "timeout") # We store this to send it later with a signal var prev_pos = card.global_position card.get_parent().remove_child(card) @@ -455,7 +459,8 @@ func autoplay_card(script: ScriptTask) -> int: yield(card._tween, "tween_all_completed") yield(card.get_tree().create_timer(1), "timeout") var card_scripts = card.retrieve_scripts("manual") - var autoplay_exec : String = card.get_state_exec() + var autoplay_exec : String = "hand" +# var autoplay_exec : String = card.get_state_exec() if not card_scripts.get("hand"): if card.get_property("Type") == "Concentration" or card.get_property("_is_concentration"): card_scripts[autoplay_exec] = card.generate_remove_from_deck_tasks(false, tags) @@ -488,6 +493,7 @@ func autoplay_card(script: ScriptTask) -> int: # We still want to discard it if card.state == card.ExtendedCardState.AUTOPLAY_DISPLAY: card.move_to(cfc.NMAP.discard, -1, null, ["scripted"]) + card.queued_autoplays.erase(self) return(retcode) @@ -853,10 +859,10 @@ func confirm_play(script: ScriptTask) -> int: return(retcode) -func end_turn(_script_task: ScriptTask) -> int: +func end_turn(script_task: ScriptTask) -> int: var retcode: int = CFConst.ReturnCode.CHANGED if not costs_dry_run(): - cfc.NMAP.board.turn.end_player_turn() + cfc.NMAP.board.turn.request_end_player_turn(script_task.owner) return(retcode) diff --git a/src/dreamscape/Shop/Shop.gd b/src/dreamscape/Shop/Shop.gd index 4ca4eb92..4d511a25 100644 --- a/src/dreamscape/Shop/Shop.gd +++ b/src/dreamscape/Shop/Shop.gd @@ -84,13 +84,13 @@ func _ready() -> void: # globals.player.deck.add_new_card("+ Confidence +") # # warning-ignore:return_value_discarded # globals.player.deck.add_new_card("+ Confidence +") - globals.player.pathos.available_masteries = 10 + globals.player.pathos.available_masteries = 100 # warning-ignore:return_value_discarded - var newmem1 = globals.player.add_memory(MemoryDefinitions.RerollShop.canonical_name) -# newmem1.upgrades_amount = 6 + var _newmem1 = globals.player.add_memory(MemoryDefinitions.RerollShop.canonical_name) +# _newmem1.upgrades_amount = 6 # warning-ignore:return_value_discarded - var newmem2 = globals.player.add_memory(MemoryDefinitions.ThornsSelf.canonical_name) -# newmem2.upgrades_amount = 6 + var _newmem2 = globals.player.add_memory(MemoryDefinitions.ThornsSelf.canonical_name) +# _newmem2.upgrades_amount = 6 # globals.player.find_memory(MemoryDefinitions.RerollShop.canonical_name).upgrades_amount += 5 # We're doing a connect here, because the globals.deck will not exist during its ready # warning-ignore:return_value_discarded diff --git a/src/dreamscape/Shop/ShopCardChoice.gd b/src/dreamscape/Shop/ShopCardChoice.gd index 51a2c910..565a3353 100644 --- a/src/dreamscape/Shop/ShopCardChoice.gd +++ b/src/dreamscape/Shop/ShopCardChoice.gd @@ -8,6 +8,7 @@ onready var shop_card_cost := find_node('Cost') onready var shop_cost_icon := find_node('CostIcon') func _ready(): + # warning-ignore:return_value_discarded globals.player.pathos.connect("advancements_modified", self, "_on_advancements_modified") shop_cost_icon.texture = CFUtils.convert_texture_to_image(shop_cost_icon.texture) diff --git a/src/dreamscape/Terms.gd b/src/dreamscape/Terms.gd index 82725ae1..db702397 100644 --- a/src/dreamscape/Terms.gd +++ b/src/dreamscape/Terms.gd @@ -72,8 +72,8 @@ const PATHOS_DESCRIPTIONS := { "released": "Fill the bar to receive 3 pathos masteries to use in the shop." }, RUN_ACCUMULATION_NAMES.artifact: { - "repressed": "Increases the chance that Curios will appear as encounters. "\ - + "The more this is skipped, the better chance for higher rarity curio", + "repressed": "Increases the chance that plushies will appear as encounters. "\ + + "The more this is skipped, the better chance for higher rarity plushie", "released": "Fill the bar to receive a pathos mastery to use in the shop." }, RUN_ACCUMULATION_NAMES.rest: { @@ -108,7 +108,7 @@ const ENEMY_ACTIONS := "Intents" const ENEMY_ACTIONS_VERB := "used" const PLAYER_ATTACK := "{interpretation}" const ENEMY_ATTACK := "{stress}" -const ARTIFACTS := "Curios" +const ARTIFACT := "Plushie" const PLAYER_TERMS := { "enemy": "Torment", @@ -1137,6 +1137,12 @@ const GENERIC_TAGS := { "rich_text_icon": "res://fonts/rich_text_icons/burning-passion.png", "generic_description": "[color=#A020F0]{effect_name} ({effect_icon}): This card cannot be played, if another card with the same name (including upgrades) has been played this turn.[/color]", }, + "spawn": { + "name": "Spawn", + "icon": preload("res://assets/icons/card-joker.png"), + "rich_text_icon": "res://assets/icons/card-joker.png", + "generic_description": "{effect_name} ({effect_icon}): This card will spawn another card into the game as part of its effect", + }, } @@ -1238,6 +1244,14 @@ const GENERIC_CARD_BBCODE := { "name": "End Turn", "rich_text_color": "teal", }, + "artifact": { + "name": ARTIFACT, + "rich_text_color": "white", + }, + "artifacts": { + "name": ARTIFACT + 's', + "rich_text_color": "white", + }, } diff --git a/src/dreamscape/Turn.gd b/src/dreamscape/Turn.gd index baccd907..74ad3452 100644 --- a/src/dreamscape/Turn.gd +++ b/src/dreamscape/Turn.gd @@ -16,10 +16,6 @@ const ENEMY_SIGNALS := [ const ALL_SIGNALS := PLAYER_SIGNALS + ENEMY_SIGNALS -signal player_turn_started(turn) -signal player_turn_ended(turn) -signal enemy_turn_started(turn) -signal enemy_turn_ended(turn) # Tracks the first of each card to have been played each turn var firsts := {} # Tracks how much of each effect has been applied this turn @@ -39,6 +35,10 @@ var turn_cards_played := {} var encounter_cards_played := {} # Tracks whose turn it currently is, the player's, or the enemies. var current_turn : int = Turns.PLAYER_TURN +# Stores which node wants to end the turn +var wants_to_end_turn = null +var end_turn_timer := 0.2 + onready var board = get_parent() @@ -47,19 +47,27 @@ func _ready() -> void: yield(cfc, "all_nodes_mapped") cfc.NMAP.deck.connect("shuffle_completed", self, "_on_deck_shuffled") + +func _process(delta): + if wants_to_end_turn: + end_turn_timer -= delta + if end_turn_timer <= 0: + end_turn_timer = 0.2 + end_player_turn() + +# Connecting all signals for the turn +# I should probably mobe these to each indibidual _ready() func +# Now that I'm using an event bus approah func setup() -> void: board.end_turn.connect("pressed", self, "end_player_turn") for obj in [board]: for turn_signal in ALL_SIGNALS: # warning-ignore:return_value_discarded - connect(turn_signal, obj, "_on_" + turn_signal) - for turn_signal in ALL_SIGNALS: - # warning-ignore:return_value_discarded - connect(turn_signal, cfc.signal_propagator, "_on_signal_received", [turn_signal, {"turn": self}]) + scripting_bus.connect(turn_signal, obj, "_on_" + turn_signal) for obj in [board.counters, cfc.NMAP.hand]: for turn_signal in PLAYER_SIGNALS: # warning-ignore:return_value_discarded - connect(turn_signal, obj, "_on_" + turn_signal) + scripting_bus.connect(turn_signal, obj, "_on_" + turn_signal) func start_player_turn() -> void: _reset_turn() @@ -67,22 +75,30 @@ func start_player_turn() -> void: cfc.flush_cache() # warning-ignore:return_value_discarded TurnEventMessage.new("new_turn", 1) - emit_signal("player_turn_started", self) + scripting_bus.emit_signal("player_turn_started", self) func end_player_turn() -> void: for pile in cfc.get_tree().get_nodes_in_group("piles"): if pile.is_popup_open: yield(pile,"popup_closed") + abort_request_end_player_turn() SoundManager.play_se('end_turn') - emit_signal("player_turn_ended", self) + scripting_bus.emit_signal("player_turn_ended", self) func start_enemy_turn() -> void: _reset_turn() current_turn = Turns.ENEMY_TURN - emit_signal("enemy_turn_started", self) + scripting_bus.emit_signal("enemy_turn_started", self) func end_enemy_turn() -> void: - emit_signal("enemy_turn_ended", self) + scripting_bus.emit_signal("enemy_turn_ended", self) + +func request_end_player_turn(trigger) -> void: + wants_to_end_turn = trigger + +func abort_request_end_player_turn() -> void: + wants_to_end_turn = null + end_turn_timer = 0.2 func _reset_turn() -> void: firsts.clear() diff --git a/src/dreamscape/TurnEventMessage.gd b/src/dreamscape/TurnEventMessage.gd index 3c20d74e..01e3a410 100644 --- a/src/dreamscape/TurnEventMessage.gd +++ b/src/dreamscape/TurnEventMessage.gd @@ -12,7 +12,7 @@ func _init(event_name: String, modification: int, is_delayed := false) -> void: # This is for example useful to record events to be used in the opposing # turn, such as leftover immersion if is_delayed: - yield(cfc.NMAP.board.turn, "enemy_turn_started") + yield(scripting_bus, "enemy_turn_started") var turn_event_count = cfc.NMAP.board.turn.turn_event_count var existing_turn_count = turn_event_count.get(event_name,0) turn_event_count[event_name] = existing_turn_count + modification diff --git a/src/dreamscape/Tutorials/ShopHelpPage2.tscn b/src/dreamscape/Tutorials/ShopHelpPage2.tscn index c57316c9..9f700d76 100644 --- a/src/dreamscape/Tutorials/ShopHelpPage2.tscn +++ b/src/dreamscape/Tutorials/ShopHelpPage2.tscn @@ -28,9 +28,6 @@ margin_right = 1404.34 margin_bottom = 328.563 rect_scale = Vector2( 0.5, 0.5 ) texture = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="Tutorial" type="RichTextLabel" parent="."] margin_left = 121.162 diff --git a/src/dreamscape/Tutorials/ShopHelpPage3.tscn b/src/dreamscape/Tutorials/ShopHelpPage3.tscn index c24cea38..446cc532 100644 --- a/src/dreamscape/Tutorials/ShopHelpPage3.tscn +++ b/src/dreamscape/Tutorials/ShopHelpPage3.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://assets/tutorial/shop/curios.png" type="Texture" id=1] +[ext_resource path="res://assets/tutorial/shop/plushies.png" type="Texture" id=1] [ext_resource path="res://themes/darktheme/darktheme.theme" type="Theme" id=3] [node name="ShopHelpPage3" type="Control"] @@ -21,16 +21,16 @@ margin_right = 145.0 margin_bottom = 24.0 text = "Shop Curios" -[node name="Curios" type="TextureRect" parent="."] +[node name="Plushies" type="TextureRect" parent="."] margin_left = 36.379 margin_top = 36.5223 margin_right = 363.379 margin_bottom = 398.522 +rect_min_size = Vector2( 327, 362 ) rect_scale = Vector2( 0.8, 0.8 ) texture = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} +expand = true +stretch_mode = 3 [node name="Tutorial" type="RichTextLabel" parent="."] margin_left = 330.0 @@ -46,6 +46,3 @@ text = "The Shop also has available some curios to receive directly. They tend t You can mouse over any of them to see their abilities. " -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/src/dreamscape/cards/PerturbationFrontNew.tscn b/src/dreamscape/cards/PerturbationFrontNew.tscn index 68a55e6c..1d7f236c 100644 --- a/src/dreamscape/cards/PerturbationFrontNew.tscn +++ b/src/dreamscape/cards/PerturbationFrontNew.tscn @@ -3,8 +3,7 @@ [ext_resource path="res://src/dreamscape/CardFrontNew.tscn" type="PackedScene" id=1] [ext_resource path="res://shaders/Dreambox.shader" type="Shader" id=2] -[sub_resource type="StyleBoxFlat" id=2] -bg_color = Color( 0, 0, 0, 1 ) +[sub_resource type="StyleBoxEmpty" id=2] [sub_resource type="ShaderMaterial" id=1] resource_local_to_scene = true diff --git a/src/dreamscape/cards/sets/ImageLibrary.gd b/src/dreamscape/cards/sets/ImageLibrary.gd index a0e4312b..0c2c2c1b 100644 --- a/src/dreamscape/cards/sets/ImageLibrary.gd +++ b/src/dreamscape/cards/sets/ImageLibrary.gd @@ -232,6 +232,7 @@ const BETA_IMAGES := { "Submerged": "res://assets/journal/torments/submerged.jpg", "Influencer": "res://assets/enemies/influencer.jpg", "Handsy Aunt": "res://assets/enemies/handsy_aunt.jpeg", + "Lotustus": "res://assets/cards/Lotustus.png", } static func get_multiple_art_option(card_name: String) -> String: diff --git a/src/dreamscape/cards/sets/SetDefinition_Core.gd b/src/dreamscape/cards/sets/SetDefinition_Core.gd index 6402d383..f38ce518 100644 --- a/src/dreamscape/cards/sets/SetDefinition_Core.gd +++ b/src/dreamscape/cards/sets/SetDefinition_Core.gd @@ -15,7 +15,7 @@ const CARDS := { "Confidence": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}", + "Abilities": "Gain {defence_amount} {defence}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Basic", @@ -33,7 +33,7 @@ const CARDS := { "+ Confidence +": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}", + "Abilities": "Gain {defence_amount} {defence}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Basic", @@ -46,7 +46,7 @@ const CARDS := { "@ Confidence @": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}", + "Abilities": "Gain {defence_amount} {defence}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Basic", @@ -59,7 +59,7 @@ const CARDS := { "- Confidence -": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}. {release}", + "Abilities": "Gain {defence_amount} {defence}. {release}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Basic", @@ -180,7 +180,7 @@ const CARDS := { "Dive-in": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.risky.name], - "Abilities": "Gain {effect_stacks} {shaken}\nGain {effect_stacks2} {advantage}.", + "Abilities": "Gain {effect_stacks} {vulnerable}\nGain {effect_stacks2} {advantage}.", "Cost": 1, "_illustration": "SkylarkGSH", "_rarity": "Common", @@ -206,7 +206,7 @@ const CARDS := { "Enhanced Dive-in": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.risky.name], - "Abilities": "Gain {effect_stacks} {shaken}\nGain {effect_stacks2} {advantage}.", + "Abilities": "Gain {effect_stacks} {vulnerable}\nGain {effect_stacks2} {advantage}.", "Cost": 1, "_illustration": "SkylarkGSH", "_rarity": "Common", @@ -228,7 +228,7 @@ const CARDS := { "* Dive-in *": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.risky.name], - "Abilities": "Gain {effect_stacks} {shaken}\nGain {effect_stacks2} {advantage}.", + "Abilities": "Gain {effect_stacks} {vulnerable}\nGain {effect_stacks2} {advantage}.", "Cost": 1, "_illustration": "SkylarkGSH", "_rarity": "Common", @@ -344,7 +344,7 @@ const CARDS := { "Confounding Movements": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {confusion} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {disempower} to target Torment.", "Cost": 1, "_illustration": "SkylarkGSH", "_effects_info": { @@ -365,7 +365,7 @@ const CARDS := { "+ Confounding Movements +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {confusion} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {disempower} to target Torment.", "Cost": 1, "_illustration": "SkylarkGSH", "_effects_info": { @@ -382,7 +382,7 @@ const CARDS := { "* Confounding Movements *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {confusion} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {disempower} to target Torment.", "Cost": 1, "_illustration": "SkylarkGSH", "_effects_info": { @@ -399,7 +399,7 @@ const CARDS := { "Noisy Whip": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {disempower}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -422,7 +422,7 @@ const CARDS := { "@ Noisy Whip @": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {disempower}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -439,7 +439,7 @@ const CARDS := { "+ Noisy Whip +": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {disempower}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -456,7 +456,7 @@ const CARDS := { "* Noisy Whip *": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {disempower}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -473,7 +473,7 @@ const CARDS := { "- Noisy Whip -": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {confusion}\n{release}", + "Abilities": "{damage} for {damage_amount}.\nApply {effect_stacks} {disempower}\n{release}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -642,7 +642,7 @@ const CARDS := { "Rubber Eggs": { "Type": "Concentration", "Tags": [], - "Abilities": "At the start of your turn, {damage} a random Torment with {confusion} for {concentration_damage}.", + "Abilities": "At the start of your turn, {damage} a random Torment with {disempower} for {concentration_damage}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -663,7 +663,7 @@ const CARDS := { "@ Rubber Eggs @": { "Type": "Concentration", "Tags": [], - "Abilities": "At the start of your turn, {damage} a random Torment with {confusion} for {concentration_damage}.", + "Abilities": "At the start of your turn, {damage} a random Torment with {disempower} for {concentration_damage}.", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -679,7 +679,7 @@ const CARDS := { "Hard Rubber Eggs": { "Type": "Concentration", "Tags": [], - "Abilities": "At the start of your turn, {damage} a random Torment with {confusion} for {concentration_damage}.", + "Abilities": "At the start of your turn, {damage} a random Torment with {disempower} for {concentration_damage}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -695,7 +695,7 @@ const CARDS := { "Bouncy Rubber Eggs": { "Type": "Concentration", "Tags": [], - "Abilities": "At the start of your turn, {damage} all Torments with {confusion} for {concentration_damage}.", + "Abilities": "At the start of your turn, {damage} all Torments with {disempower} for {concentration_damage}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -711,8 +711,8 @@ const CARDS := { "The Joke": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Target a Torment. If it doesn't have {confusion} Apply {effect_stacks} {confusion}"\ - + " If it has {confusion}, {damage} for {damage_amount}.", + "Abilities": "Target a Torment. If it doesn't have {disempower} Apply {effect_stacks} {disempower}"\ + + " If it has {disempower}, {damage} for {damage_amount}.", "Cost": 2, "_illustration": "SkylarkGSH", "_effects_info": { @@ -735,8 +735,8 @@ const CARDS := { "* The Joke *": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Target a Torment. If it doesn't have {confusion} Apply {effect_stacks} {confusion}"\ - + " If it has {confusion}, {damage} for {damage_amount}.", + "Abilities": "Target a Torment. If it doesn't have {disempower} Apply {effect_stacks} {disempower}"\ + + " If it has {disempower}, {damage} for {damage_amount}.", "Cost": 2, "_illustration": "SkylarkGSH", "_effects_info": { @@ -754,8 +754,8 @@ const CARDS := { "+ The Joke +": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Target a Torment. If it doesn't have {confusion} Apply {effect_stacks} {confusion}"\ - + " If it has {confusion}, {damage} for {damage_amount}.", + "Abilities": "Target a Torment. If it doesn't have {disempower} Apply {effect_stacks} {disempower}"\ + + " If it has {disempower}, {damage} for {damage_amount}.", "Cost": 2, "_illustration": "SkylarkGSH", "_effects_info": { @@ -773,8 +773,8 @@ const CARDS := { "= The Joke =": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], - "Abilities": "Target a Torment. If it doesn't have {confusion} Apply {effect_stacks} {confusion}"\ - + " If it has {confusion}, {damage} for {damage_amount}.", + "Abilities": "Target a Torment. If it doesn't have {disempower} Apply {effect_stacks} {disempower}"\ + + " If it has {disempower}, {damage} for {damage_amount}.", "Cost": 2, "_illustration": "SkylarkGSH", "_effects_info": { @@ -792,7 +792,7 @@ const CARDS := { "Nunclucks": { "Type": "Concentration", "Tags": [], - "Abilities": "Increase your {damage} by {concentration_damage} for each stack of {confusion} on the Torment.", + "Abilities": "Increase your {damage} by {concentration_damage} for each stack of {disempower} on the Torment.", "Cost": 1, "_illustration": "axilirate", "_effects_info": { @@ -812,7 +812,7 @@ const CARDS := { "@ Nunclucks @": { "Type": "Concentration", "Tags": [], - "Abilities": "Increase your {damage} by {concentration_damage} for each stack of {confusion} on the Torment.", + "Abilities": "Increase your {damage} by {concentration_damage} for each stack of {disempower} on the Torment.", "Cost": 0, "_illustration": "axilirate", "_effects_info": { @@ -828,7 +828,7 @@ const CARDS := { "Massive Nunclucks": { "Type": "Concentration", "Tags": [], - "Abilities": "Increase your {damage} by {concentration_damage} for each stack of {confusion} on the Torment.", + "Abilities": "Increase your {damage} by {concentration_damage} for each stack of {disempower} on the Torment.", "Cost": 1, "_illustration": "axilirate", "_effects_info": { @@ -909,7 +909,7 @@ const CARDS := { "Cocky Retort": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {defence_amount} {confidence}\n Draw {draw_amount} card.", + "Abilities": "Gain {defence_amount} {defence}\n Draw {draw_amount} card.", "Cost": 1, "_illustration": "Robert Paraguassu via midjourney.com", "_rarity": "Common", @@ -927,7 +927,7 @@ const CARDS := { "+ Cocky Retort +": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {defence_amount} {confidence}\n Draw {draw_amount} card.", + "Abilities": "Gain {defence_amount} {defence}\n Draw {draw_amount} card.", "Cost": 1, "_illustration": "Robert Paraguassu via midjourney.com", "_rarity": "Common", @@ -941,7 +941,7 @@ const CARDS := { "! Cocky Retort !": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {defence_amount} {confidence}\n Draw {draw_amount} cards.", + "Abilities": "Gain {defence_amount} {defence}\n Draw {draw_amount} cards.", "Cost": 1, "_illustration": "Robert Paraguassu via midjourney.com", "_rarity": "Common", @@ -955,7 +955,7 @@ const CARDS := { "Rapid Encirclement": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.vulnerable.name], - "Abilities": "Apply {effect_stacks} {shaken} to all Torments.", + "Abilities": "Apply {effect_stacks} {vulnerable} to all Torments.", "Cost": 1, "_illustration": "SkylarkGSH", "_effects_info": { @@ -974,7 +974,7 @@ const CARDS := { "* Rapid Encirclement *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.vulnerable.name], - "Abilities": "Apply {effect_stacks} {shaken} to all Torments.", + "Abilities": "Apply {effect_stacks} {vulnerable} to all Torments.", "Cost": 1, "_illustration": "SkylarkGSH", "_effects_info": { @@ -989,7 +989,7 @@ const CARDS := { "~ Rapid Encirclement ~": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.vulnerable.name], - "Abilities": "Apply {effect_stacks} {shaken} to all Torments. {forget}.", + "Abilities": "Apply {effect_stacks} {vulnerable} to all Torments. {forget}.", "Cost": 1, "_illustration": "SkylarkGSH", "_effects_info": { @@ -1004,7 +1004,7 @@ const CARDS := { "Barrel Through": { "Type": "Action", "Tags": [Terms.GENERIC_TAGS.chain.name], - "Abilities": "{damage} for {damage_amount}.\nIf the Torment has {shaken}, "\ + "Abilities": "{damage} for {damage_amount}.\nIf the Torment has {vulnerable}, "\ + "{damage} all other Torments for {damage_amount2}.", "Cost": 1, "_illustration": "SkylarkGSH", @@ -1026,7 +1026,7 @@ const CARDS := { "+ Barrel Through +": { "Type": "Action", "Tags": [Terms.GENERIC_TAGS.chain.name], - "Abilities": "{damage} for {damage_amount}.\nIf the Torment has {shaken}, "\ + "Abilities": "{damage} for {damage_amount}.\nIf the Torment has {vulnerable}, "\ + "{damage} all other Torments for {damage_amount2}.", "Cost": 1, "_illustration": "SkylarkGSH", @@ -1044,7 +1044,7 @@ const CARDS := { "= Barrel Through =": { "Type": "Action", "Tags": [Terms.GENERIC_TAGS.chain.name], - "Abilities": "{damage} for {damage_amount}.\nIf the Torment has {shaken}, "\ + "Abilities": "{damage} for {damage_amount}.\nIf the Torment has {vulnerable}, "\ + "{damage} all other Torments for {damage_amount2}.", "Cost": 1, "_illustration": "SkylarkGSH", @@ -1062,7 +1062,7 @@ const CARDS := { "Intimidate": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Apply {effect_stacks} {doubt} to all Torments", + "Abilities": "Apply {effect_stacks} {poison} to all Torments", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1081,7 +1081,7 @@ const CARDS := { "@ Intimidate @": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Apply {effect_stacks} {doubt} to all Torments", + "Abilities": "Apply {effect_stacks} {poison} to all Torments", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1096,7 +1096,7 @@ const CARDS := { "* Intimidate *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Apply {effect_stacks} {doubt} to all Torments", + "Abilities": "Apply {effect_stacks} {poison} to all Torments", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1111,7 +1111,7 @@ const CARDS := { "Cheeky Approach": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {poison} to target Torment.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1133,7 +1133,7 @@ const CARDS := { "= Cheeky Approach =": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {poison} to target Torment.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1150,7 +1150,7 @@ const CARDS := { "+ Cheeky Approach +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {poison} to target Torment.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1167,7 +1167,7 @@ const CARDS := { "* Cheeky Approach *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {poison} to target Torment.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1184,7 +1184,7 @@ const CARDS := { "Laugh at Danger": { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "After a Torment performs {stress}, it gains {concentration_stacks} {doubt}", + "Abilities": "After a Torment performs {stress}, it gains {concentration_stacks} {poison}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1204,7 +1204,7 @@ const CARDS := { "@ Laugh at Danger @": { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "After a Torment performs {stress}, it gains {concentration_stacks} {doubt}", + "Abilities": "After a Torment performs {stress}, it gains {concentration_stacks} {poison}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1220,7 +1220,7 @@ const CARDS := { "Roaring Laugh at Danger": { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "After a Torment performs {stress}, it gains {concentration_stacks} {doubt}", + "Abilities": "After a Torment performs {stress}, it gains {concentration_stacks} {poison}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1236,7 +1236,7 @@ const CARDS := { "Towering Presence": { "Type": "Action", "Tags": [], - "Abilities": "{damage} equal to your current {confidence}", + "Abilities": "{damage} equal to your current {defence}", "Cost": 1, "_illustration": "SkylarkGSH", "_rarity": "Common", @@ -1253,7 +1253,7 @@ const CARDS := { "@ Towering Presence @": { "Type": "Action", "Tags": [], - "Abilities": "{damage} equal to your current {confidence}", + "Abilities": "{damage} equal to your current {defence}", "Cost": 0, "_illustration": "SkylarkGSH", "_rarity": "Common", @@ -1263,7 +1263,7 @@ const CARDS := { "+ Towering Presence +": { "Type": "Action", "Tags": [], - "Abilities": "{damage} equal to your current {confidence} + {damage_amount}", + "Abilities": "{damage} equal to your current {defence} + {damage_amount}", "Cost": 1, "_illustration": "SkylarkGSH", "_rarity": "Common", @@ -1276,7 +1276,7 @@ const CARDS := { "Unassailable": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you apply {doubt}, gain {concentration_defence} {confidence}", + "Abilities": "Whenever you apply {poison}, gain {concentration_defence} {defence}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", @@ -1293,7 +1293,7 @@ const CARDS := { "@ Unassailable @": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you apply {doubt}, gain {concentration_defence} {confidence}", + "Abilities": "Whenever you apply {poison}, gain {concentration_defence} {defence}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", @@ -1306,7 +1306,7 @@ const CARDS := { "Completely Unassailable": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you apply {doubt}, gain {concentration_defence} {confidence}", + "Abilities": "Whenever you apply {poison}, gain {concentration_defence} {defence}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", @@ -1319,7 +1319,7 @@ const CARDS := { "Audacity": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {courage}", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1340,7 +1340,7 @@ const CARDS := { "+ Audacity +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {courage}", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1357,7 +1357,7 @@ const CARDS := { "* Audacity *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nApply {effect_stacks} {courage}", + "Abilities": "Gain {defence_amount} {defence}\nApply {effect_stacks} {fortify}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1374,7 +1374,7 @@ const CARDS := { "Boast": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Double your {confidence}\nRemove all {courage}\n{forget}.", + "Abilities": "Double your {defence}\nRemove all {fortify}\n{forget}.", "Cost": 2, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -1392,7 +1392,7 @@ const CARDS := { "@ Boast @": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Double your {confidence}\nRemove all {courage}\n{forget}.", + "Abilities": "Double your {defence}\nRemove all {fortify}\n{forget}.", "Cost": 1, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -1405,7 +1405,7 @@ const CARDS := { "Massive Boast": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain 4 {confidence}\nDouble your {confidence}\nRemove all {courage}\n{forget}.", + "Abilities": "Gain 4 {defence}\nDouble your {defence}\nRemove all {fortify}\n{forget}.", "Cost": 2, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -1421,7 +1421,7 @@ const CARDS := { "Sustained Boast": { "Type": "Control", "Tags": [], - "Abilities": "Double your {confidence}\nRemove all {courage}", + "Abilities": "Double your {defence}\nRemove all {fortify}", "Cost": 2, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -1434,7 +1434,7 @@ const CARDS := { "Solid Understanding": { "Type": "Action", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n{damage} for {damage_amount}.", + "Abilities": "Gain {defence_amount} {defence}\n{damage} for {damage_amount}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -1453,7 +1453,7 @@ const CARDS := { "+ Solid Understanding +": { "Type": "Action", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n{damage} for {damage_amount}.", + "Abilities": "Gain {defence_amount} {defence}\n{damage} for {damage_amount}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -1467,7 +1467,7 @@ const CARDS := { "% Solid Understanding %": { "Type": "Action", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n{damage} for {damage_amount}.", + "Abilities": "Gain {defence_amount} {defence}\n{damage} for {damage_amount}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -1481,7 +1481,7 @@ const CARDS := { "= Solid Understanding =": { "Type": "Action", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n{damage} for {damage_amount}.", + "Abilities": "Gain {defence_amount} {defence}\n{damage} for {damage_amount}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -1495,7 +1495,7 @@ const CARDS := { "No Second Thoughts": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {effect_stacks} {courage}", + "Abilities": "Gain {effect_stacks} {fortify}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1514,7 +1514,7 @@ const CARDS := { "@ No Second Thoughts @": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {effect_stacks} {courage}", + "Abilities": "Gain {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1529,7 +1529,7 @@ const CARDS := { "~ No Second Thoughts ~": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {effect_stacks} {courage}\n{forget}.", + "Abilities": "Gain {effect_stacks} {fortify}\n{forget}.", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1544,7 +1544,7 @@ const CARDS := { "High Morale": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {courage} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {fortify} card.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1565,7 +1565,7 @@ const CARDS := { "+ High Morale +": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {courage} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {fortify} card.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1582,7 +1582,7 @@ const CARDS := { "! High Morale !": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {courage} cards.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {fortify} cards.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1599,7 +1599,7 @@ const CARDS := { "Confident Slap": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Apply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Apply {effect_stacks} {poison} to target Torment.", "Cost": 1, "_illustration": "axilirate", "_effects_info": { @@ -1618,7 +1618,7 @@ const CARDS := { "* Confident Slap *": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Apply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Apply {effect_stacks} {poison} to target Torment.", "Cost": 1, "_illustration": "axilirate", "_effects_info": { @@ -1633,7 +1633,7 @@ const CARDS := { "@ Confident Slap @": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Apply {effect_stacks} {doubt} to target Torment.", + "Abilities": "Apply {effect_stacks} {poison} to target Torment.", "Cost": 0, "_illustration": "axilirate", "_effects_info": { @@ -1648,7 +1648,7 @@ const CARDS := { "Careful Observation": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}. If you have {untouchable}, {damage} for {damage_amount2} instead.", + "Abilities": "{damage} for {damage_amount}. If you have {impervious}, {damage} for {damage_amount2} instead.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1669,7 +1669,7 @@ const CARDS := { "+ Careful Observation +": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}. If you have {untouchable}, {damage} for {damage_amount2} instead.", + "Abilities": "{damage} for {damage_amount}. If you have {impervious}, {damage} for {damage_amount2} instead.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1686,7 +1686,7 @@ const CARDS := { "% Careful Observation %": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}. If you have {untouchable}, {damage} for {damage_amount2} instead.", + "Abilities": "{damage} for {damage_amount}. If you have {impervious}, {damage} for {damage_amount2} instead.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1703,7 +1703,7 @@ const CARDS := { "Drag and Drop": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name], - "Abilities": "{damage} for {damage_amount}. If Torment is {overcome}, gain {effect_stacks} {untouchable}", + "Abilities": "{damage} for {damage_amount}. If Torment is {overcome}, gain {effect_stacks} {impervious}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1724,7 +1724,7 @@ const CARDS := { "+ Drag and Drop +": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name], - "Abilities": "{damage} for {damage_amount}. If Torment is {overcome}, gain {effect_stacks} {untouchable}", + "Abilities": "{damage} for {damage_amount}. If Torment is {overcome}, gain {effect_stacks} {impervious}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1741,7 +1741,7 @@ const CARDS := { "@ Drag and Drop @": { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name], - "Abilities": "{damage} for {damage_amount}. If Torment is {overcome}, gain {effect_stacks} {untouchable}", + "Abilities": "{damage} for {damage_amount}. If Torment is {overcome}, gain {effect_stacks} {impervious}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1758,7 +1758,7 @@ const CARDS := { "Running Start": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {untouchable} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {impervious} card.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1780,7 +1780,7 @@ const CARDS := { "+ Running Start +": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {untouchable} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {impervious} card.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1797,7 +1797,7 @@ const CARDS := { "! Running Start !": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {untouchable} cards.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {impervious} cards.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1814,7 +1814,7 @@ const CARDS := { "@ Running Start @": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {untouchable} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {impervious} card.", "Cost": 0, "_illustration": "Nobody", "_effects_info": { @@ -1831,7 +1831,7 @@ const CARDS := { "Master of Skies": { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Whenever you gain {untouchable}, Gain {concentration_stacks} {buffer}", + "Abilities": "Whenever you gain {impervious}, Gain {concentration_stacks} {buffer}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1851,7 +1851,7 @@ const CARDS := { "@ Master of Skies @": { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Whenever you gain {untouchable}, Gain {concentration_stacks} {buffer}", + "Abilities": "Whenever you gain {impervious}, Gain {concentration_stacks} {buffer}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1867,7 +1867,7 @@ const CARDS := { "Glorious Master of Skies": { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Whenever you gain {untouchable}, Gain {concentration_stacks} {buffer}", + "Abilities": "Whenever you gain {impervious}, Gain {concentration_stacks} {buffer}", "Cost": 3, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1884,7 +1884,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.GENERIC_TAGS.relax.name], "Abilities": "At the end of the next {turns_amount} turns, {relax} for {concentration_healing}.\n"\ - + "If you have {untouchable}, {relax} {concentration_healing} extra.", + + "If you have {impervious}, {relax} {concentration_healing} extra.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1905,7 +1905,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.GENERIC_TAGS.relax.name], "Abilities": "At the end of the next {turns_amount} turns, {relax} for {concentration_healing}.\n"\ - + "If you have {untouchable}, {relax} {concentration_healing} extra.", + + "If you have {impervious}, {relax} {concentration_healing} extra.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1922,7 +1922,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.GENERIC_TAGS.relax.name], "Abilities": "At the end of the next {turns_amount} turns, {relax} for {concentration_healing}.\n"\ - + "If you have {untouchable}, {relax} {concentration_healing} extra.", + + "If you have {impervious}, {relax} {concentration_healing} extra.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1938,7 +1938,7 @@ const CARDS := { "Loop de loop": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fascination}", + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fascination}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1959,7 +1959,7 @@ const CARDS := { "+ Loop de loop +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fascination}", + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fascination}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -1976,7 +1976,7 @@ const CARDS := { "* Loop de loop *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fascination}", + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fascination}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2058,7 +2058,7 @@ const CARDS := { "Utterly Ridiculous": { "Type": "Action", "Tags": [], - "Abilities": "Can only be played if there's a total of {filter_amount} or more {confusion} among Torments\n"\ + "Abilities": "Can only be played if there's a total of {filter_amount} or more {disempower} among Torments\n"\ + "{damage} all Torments for {damage_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -2079,7 +2079,7 @@ const CARDS := { "@ Utterly Ridiculous @": { "Type": "Action", "Tags": [], - "Abilities": "Can only be played if there's a total of {filter_amount} or more {confusion} among Torments\n"\ + "Abilities": "Can only be played if there's a total of {filter_amount} or more {disempower} among Torments\n"\ + "{damage} all Torments for {damage_amount}", "Cost": 0, "_illustration": "Db0 via midjourney.com", @@ -2094,7 +2094,7 @@ const CARDS := { "+ Utterly Ridiculous +": { "Type": "Action", "Tags": [], - "Abilities": "Can only be played if there's a total of {filter_amount} or more {confusion} among Torments\n"\ + "Abilities": "Can only be played if there's a total of {filter_amount} or more {disempower} among Torments\n"\ + "{damage} all Torments for {damage_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -2109,7 +2109,7 @@ const CARDS := { "% Utterly Ridiculous %": { "Type": "Action", "Tags": [], - "Abilities": "Can only be played if there's a total of {filter_amount} or more {confusion} among Torments\n"\ + "Abilities": "Can only be played if there's a total of {filter_amount} or more {disempower} among Torments\n"\ + "{damage} all Torments for {damage_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -2124,7 +2124,7 @@ const CARDS := { "= Utterly Ridiculous =": { "Type": "Action", "Tags": [], - "Abilities": "Can only be played if there's a total of {filter_amount} or more {confusion} among Torments\n"\ + "Abilities": "Can only be played if there's a total of {filter_amount} or more {disempower} among Torments\n"\ + "{damage} all Torments for {damage_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -2139,7 +2139,7 @@ const CARDS := { "Ventriloquism": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {confusion} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {disempower} card.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2161,7 +2161,7 @@ const CARDS := { "@ Ventriloquism @": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {confusion} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {disempower} card.", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2178,7 +2178,7 @@ const CARDS := { "+ Ventriloquism +": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {confusion} card.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {disempower} card.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2195,7 +2195,7 @@ const CARDS := { "! Ventriloquism !": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {confusion} cards.", + "Abilities": "{damage} for {damage_amount}.\nDraw {draw_amount} {disempower} cards.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2269,7 +2269,7 @@ const CARDS := { "Fowl Language": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Each Torment is applied {doubt} equals to its {confusion}x{multiplier_amount}", + "Abilities": "Each Torment is applied {poison} equals to its {disempower}x{multiplier_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2290,7 +2290,7 @@ const CARDS := { "@ Fowl Language @": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Each Torment is applied {doubt} equals to its {confusion}x{multiplier_amount}", + "Abilities": "Each Torment is applied {poison} equals to its {disempower}x{multiplier_amount}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2306,7 +2306,7 @@ const CARDS := { "* Fowl Language *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Each Torment is applied {doubt} equals to its {confusion}x{multiplier_amount}", + "Abilities": "Each Torment is applied {poison} equals to its {disempower}x{multiplier_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2322,7 +2322,7 @@ const CARDS := { "% Fowl Language %": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "Each Torment is applied {doubt} equals to its ({confusion}+1)x{multiplier_amount}", + "Abilities": "Each Torment is applied {poison} equals to its ({disempower}+1)x{multiplier_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2381,7 +2381,7 @@ const CARDS := { "Absurdity Unleashed": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you apply {confusion} to a Torment, {damage} it for {concentration_damage}", + "Abilities": "Whenever you apply {disempower} to a Torment, {damage} it for {concentration_damage}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2402,7 +2402,7 @@ const CARDS := { "@ Absurdity Unleashed @": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you apply {confusion} to a Torment, {damage} it for {concentration_damage}", + "Abilities": "Whenever you apply {disempower} to a Torment, {damage} it for {concentration_damage}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2418,7 +2418,7 @@ const CARDS := { "^ Absurdity Unleashed ^": { "Type": "Concentration", "Tags": [Terms.GENERIC_TAGS.alpha.name], - "Abilities": "Whenever you apply {confusion} to a Torment, {damage} it for {concentration_damage}", + "Abilities": "Whenever you apply {disempower} to a Torment, {damage} it for {concentration_damage}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2434,7 +2434,7 @@ const CARDS := { "Total Absurdity Unleashed": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you apply {confusion} to a Torment, {damage} it for {concentration_damage}", + "Abilities": "Whenever you apply {disempower} to a Torment, {damage} it for {concentration_damage}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_effects_info": { @@ -2497,7 +2497,7 @@ const CARDS := { "Brilliance": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {confidence}.", + "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -2515,7 +2515,7 @@ const CARDS := { "@ Brilliance @": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {confidence}.", + "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {defence}.", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -2528,7 +2528,7 @@ const CARDS := { "^ Brilliance ^": { "Type": "Concentration", "Tags": [Terms.GENERIC_TAGS.alpha.name], - "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {confidence}.", + "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -2541,7 +2541,7 @@ const CARDS := { "Blinding Brilliance": { "Type": "Concentration", "Tags": [], - "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {confidence}.", + "Abilities": "Whenever you {shuffle} your draw pile, gain {concentration_defence} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -2554,9 +2554,9 @@ const CARDS := { "Rapid Theorizing": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name, Terms.GENERIC_TAGS.chain.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If you've {shuffle}d your draw pile this turn, "\ - + "gain {defence_amount2} {confidence} and draw {draw_amount} card.", + + "gain {defence_amount2} {defence} and draw {draw_amount} card.", "Cost": 1, "_illustration": "Maria Thoukydidou", "_rarity": "Uncommon", @@ -2576,9 +2576,9 @@ const CARDS := { "+ Rapid Theorizing +": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If you've {shuffle}d your draw pile this turn, "\ - + "gain {defence_amount2} {confidence} and draw {draw_amount} card.", + + "gain {defence_amount2} {defence} and draw {draw_amount} card.", "Cost": 1, "_illustration": "Nobody", "_rarity": "Uncommon", @@ -2593,9 +2593,9 @@ const CARDS := { "! Rapid Theorizing !": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If you've {shuffle}d your draw pile this turn, "\ - + "gain {defence_amount2} {confidence} and draw {draw_amount} card.", + + "gain {defence_amount2} {defence} and draw {draw_amount} card.", "Cost": 1, "_illustration": "Nobody", "_rarity": "Uncommon", @@ -2610,9 +2610,9 @@ const CARDS := { "% Rapid Theorizing %": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If you've {shuffle}d your draw pile this turn, "\ - + "gain {defence_amount2} {confidence} and draw {draw_amount} card.", + + "gain {defence_amount2} {defence} and draw {draw_amount} card.", "Cost": 1, "_illustration": "Nobody", "_rarity": "Uncommon", @@ -3144,7 +3144,7 @@ const CARDS := { "Dodge": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name], - "Abilities": "Gain {effect_stacks} {untouchable}", + "Abilities": "Gain {effect_stacks} {impervious}", "Cost": 0, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -3163,7 +3163,7 @@ const CARDS := { "Dancing Dodge": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name,Terms.GENERIC_TAGS.swift.name], - "Abilities": "Gain {effect_stacks} {untouchable}. Draw {draw_amount} card.", + "Abilities": "Gain {effect_stacks} {impervious}. Draw {draw_amount} card.", "Cost": 0, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -3179,7 +3179,7 @@ const CARDS := { "* Dodge *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name], - "Abilities": "Gain {effect_stacks} {untouchable}", + "Abilities": "Gain {effect_stacks} {impervious}", "Cost": 0, "_illustration": "Friendlyguy#3543", "_effects_info": { @@ -4091,7 +4091,7 @@ const CARDS := { "Type": "Action", "Tags": [], "Abilities": "{damage} all Torments for X * {damage_amount}\n"\ - + "All Torments gain X {confusion}", + + "All Torments gain X {disempower}", "Cost": 'X', "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -4112,7 +4112,7 @@ const CARDS := { "Type": "Action", "Tags": [], "Abilities": "{damage} all Torments for X * {damage_amount}\n"\ - + "All Torments gain X {confusion}", + + "All Torments gain X {disempower}", "Cost": 'X', "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -4129,7 +4129,7 @@ const CARDS := { "Type": "Action", "Tags": [], "Abilities": "{damage} all Torments for (X + 1) * {damage_amount}\n"\ - + "All Torments gain (X + 1) {confusion}", + + "All Torments gain (X + 1) {disempower}", "Cost": 'X', "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -4146,7 +4146,7 @@ const CARDS := { "Hyperfocus": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Gain X * {defence_amount} {confidence}\n"\ + "Abilities": "Gain X * {defence_amount} {defence}\n"\ + "Gain X * {effect_stacks} {buffer}\n"\ + "If you gained immersion through {buffer} this turn. {forget}.", "Cost": 'X', @@ -4172,7 +4172,7 @@ const CARDS := { "+ Hyperfocus +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Gain X * {defence_amount} {confidence}\n"\ + "Abilities": "Gain X * {defence_amount} {defence}\n"\ + "Gain X * {effect_stacks} {buffer}\n"\ + "If you gained immersion through {buffer} this turn. {forget}.", "Cost": 'X', @@ -4191,7 +4191,7 @@ const CARDS := { "* Hyperfocus *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], - "Abilities": "Gain X * {defence_amount} {confidence}\n"\ + "Abilities": "Gain X * {defence_amount} {defence}\n"\ + "Gain X * {effect_stacks} {buffer}\n"\ + "If you gained immersion through {buffer} this turn. {forget}.", "Cost": 'X', @@ -4210,7 +4210,7 @@ const CARDS := { "Misunderstood": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.exert.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "You may take {exert_amount} {anxiety} "\ + "to {shuffle} this card into your draw pile.", "Cost": 1, @@ -4231,7 +4231,7 @@ const CARDS := { "+ Misunderstood +": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.exert.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "You may take {exert_amount} {anxiety} "\ + "to {shuffle} this card into your draw pile.", "Cost": 1, @@ -4248,7 +4248,7 @@ const CARDS := { "% Misunderstood %": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.exert.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "You may take {exert_amount} {anxiety} "\ + "to {shuffle} this card into your draw pile.", "Cost": 1, @@ -4340,7 +4340,7 @@ const CARDS := { "Tags": [], "Abilities": "At the start of your turn, "\ + "if your discard pile has at most {concentration_threshold} cards, "\ - + "gain {concentration_defence} {confidence}.", + + "gain {concentration_defence} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_avoid_normal_discard": true, @@ -4361,7 +4361,7 @@ const CARDS := { "Tags": [], "Abilities": "At the start of your turn, "\ + "if your discard pile has at most {concentration_threshold} cards, "\ - + "gain {concentration_defence} {confidence}.", + + "gain {concentration_defence} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_avoid_normal_discard": true, @@ -4378,7 +4378,7 @@ const CARDS := { "Tags": [], "Abilities": "At the start of your turn, "\ + "if your discard pile has at most {concentration_threshold} cards, "\ - + "gain {concentration_defence} {confidence}.", + + "gain {concentration_defence} {defence}.", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_avoid_normal_discard": true, @@ -4674,7 +4674,7 @@ const CARDS := { "Excogitate": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.spark.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Shuffle {card_amount} random card from the forgotten pile into the draw pile.", "Cost": 2, "_illustration": "Miikka Veijola", @@ -4693,7 +4693,7 @@ const CARDS := { "! Excogitate !": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.spark.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Shuffle up to {card_amount} random cards from the forgotten pile into the draw pile.", "Cost": 2, "_illustration": "Miikka Veijola", @@ -4708,7 +4708,7 @@ const CARDS := { "Ω Excogitate Ω": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.omega.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Shuffle {card_amount} random card from the forgotten pile into the draw pile.", "Cost": 2, "_illustration": "Miikka Veijola", @@ -4872,7 +4872,7 @@ const CARDS := { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], "Abilities": "{damage} for {damage_amount}. "\ - + "If the target has {confusion}, Gain {effect_stacks} {buffer} and {defence_amount} {confidence}.", + + "If the target has {disempower}, Gain {effect_stacks} {buffer} and {defence_amount} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -4896,7 +4896,7 @@ const CARDS := { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], "Abilities": "{damage} for {damage_amount}. "\ - + "If the target has {confusion}, Gain {effect_stacks} {buffer} and {defence_amount} {confidence}.", + + "If the target has {disempower}, Gain {effect_stacks} {buffer} and {defence_amount} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -4915,7 +4915,7 @@ const CARDS := { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], "Abilities": "{damage} for {damage_amount}. "\ - + "If the target has {confusion}, Gain {effect_stacks} {buffer} and {defence_amount} {confidence}.", + + "If the target has {disempower}, Gain {effect_stacks} {buffer} and {defence_amount} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -4934,7 +4934,7 @@ const CARDS := { "Type": "Action", "Tags": [Terms.ACTIVE_EFFECTS.buffer.name], "Abilities": "{damage} for {damage_amount}. "\ - + "If the target has {confusion}, Gain {defence_amount} {confidence}.", + + "If the target has {disempower}, Gain {defence_amount} {defence}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -4956,7 +4956,7 @@ const CARDS := { Terms.ACTIVE_EFFECTS.marked.name, Terms.GENERIC_TAGS.slumber.name ], - "Abilities": "All Torments gain {effect_stacks} {confusion} and {effect_stacks2} {marked}. {forget}", + "Abilities": "All Torments gain {effect_stacks} {disempower} and {effect_stacks2} {marked}. {forget}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -4987,7 +4987,7 @@ const CARDS := { Terms.GENERIC_TAGS.slumber.name ], - "Abilities": "All Torments gain {effect_stacks} {confusion} and {effect_stacks2} {marked}. {forget}", + "Abilities": "All Torments gain {effect_stacks} {disempower} and {effect_stacks2} {marked}. {forget}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -5014,7 +5014,7 @@ const CARDS := { Terms.GENERIC_TAGS.slumber.name ], - "Abilities": "All Torments gain {effect_stacks} {confusion} and {effect_stacks2} {marked}. {forget}", + "Abilities": "All Torments gain {effect_stacks} {disempower} and {effect_stacks2} {marked}. {forget}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -5036,7 +5036,7 @@ const CARDS := { "One With The Poultry": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.armor.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "If you have {buffer}, gain {effect_stacks} {armor}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -5060,7 +5060,7 @@ const CARDS := { "* One With The Poultry *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.armor.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "If you have {buffer}, gain {effect_stacks} {armor}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -5079,7 +5079,7 @@ const CARDS := { "+ One With The Poultry +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.armor.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "If you have {buffer}, gain {effect_stacks} {armor}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -5098,7 +5098,7 @@ const CARDS := { "% One With The Poultry %": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.armor.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "If you have {buffer}, gain {effect_stacks} {armor}", "Cost": 3, "_illustration": "Db0 via midjourney.com", @@ -5118,7 +5118,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], "Abilities": "Whenever you succesfully {damage} a Torment with a card or memory effect, "\ - + "it gains it {concentration_stacks} {confusion}.", + + "it gains it {concentration_stacks} {disempower}.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", @@ -5139,7 +5139,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], "Abilities": "Whenever you succesfully {damage} a Torment with a card or memory effect, "\ - + "it gains it {concentration_stacks} {confusion}.", + + "it gains it {concentration_stacks} {disempower}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", @@ -5156,7 +5156,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.GENERIC_TAGS.alpha.name], "Abilities": "Whenever you succesfully {damage} a Torment with a card or memory effect, "\ - + "it gains it {concentration_stacks} {confusion}.", + + "it gains it {concentration_stacks} {disempower}.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", @@ -5172,8 +5172,8 @@ const CARDS := { "Sensuous": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.ACTIVE_EFFECTS.thorns.name], - "Abilities": "Apply {effect_stacks} {confusion} to Target Torment, "\ - + "then gain {thorns} equal to the target's {confusion}.", + "Abilities": "Apply {effect_stacks} {disempower} to Target Torment, "\ + + "then gain {thorns} equal to the target's {disempower}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -5194,8 +5194,8 @@ const CARDS := { "* Sensuous *": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.ACTIVE_EFFECTS.thorns.name], - "Abilities": "Apply {effect_stacks} {confusion} to Target Torment, "\ - + "then gain {thorns} equal to the target's {confusion}.", + "Abilities": "Apply {effect_stacks} {disempower} to Target Torment, "\ + + "then gain {thorns} equal to the target's {disempower}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -5212,8 +5212,8 @@ const CARDS := { "Ω Sensuous Ω": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.ACTIVE_EFFECTS.thorns.name, Terms.GENERIC_TAGS.omega.name], - "Abilities": "Apply {effect_stacks} {confusion} to Target Torment, "\ - + "then gain {thorns} equal to the target's {confusion}.", + "Abilities": "Apply {effect_stacks} {disempower} to Target Torment, "\ + + "then gain {thorns} equal to the target's {disempower}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", @@ -5230,7 +5230,7 @@ const CARDS := { "Massive Eggression": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}. Gain {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}. Gain {effect_stacks} {disempower}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -5251,7 +5251,7 @@ const CARDS := { "+ Massive Eggression +": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}. Gain {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}. Gain {effect_stacks} {disempower}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -5268,7 +5268,7 @@ const CARDS := { "% Massive Eggression %": { "Type": "Action", "Tags": [], - "Abilities": "{damage} for {damage_amount}. Gain {effect_stacks} {confusion}", + "Abilities": "{damage} for {damage_amount}. Gain {effect_stacks} {disempower}", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", @@ -5802,7 +5802,7 @@ const CARDS := { "A Chick of the Light": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If no Torment is going to be inflicting more than {max_requirements_amount} {stress}"\ + "this turn, gain {effect_stacks} {fortify}.", "Cost": 2, @@ -5826,7 +5826,7 @@ const CARDS := { "+ A Chick of the Light +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If no Torment is going to be inflicting more than {max_requirements_amount} "\ + "this turn, gain {effect_stacks} {fortify}.", "Cost": 2, @@ -5846,7 +5846,7 @@ const CARDS := { "% A Chick of the Light %": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "If no Torment is going to be inflicting more than {max_requirements_amount} "\ + "this turn, gain {effect_stacks} {fortify}.", "Cost": 2, diff --git a/src/dreamscape/cards/sets/SetDefinition_Enemies.gd b/src/dreamscape/cards/sets/SetDefinition_Enemies.gd index b19933a4..4e8188fe 100644 --- a/src/dreamscape/cards/sets/SetDefinition_Enemies.gd +++ b/src/dreamscape/cards/sets/SetDefinition_Enemies.gd @@ -87,7 +87,7 @@ const CARDS := { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.burn.name], "Abilities": "Apply {effect_stacks} {burn} to a Torment.\n"\ - + "Remove all {envy} from the dreamer.", + + "Remove all {burn} from the dreamer.", "Cost": 0, "_illustration": "Ierenisrt#0318", "_rarity": "Received", @@ -155,7 +155,7 @@ const CARDS := { "Fearmonger": { "Type": "Understanding", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "{forget} a {perturbation} from your deck or discard pile.", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -175,7 +175,7 @@ const CARDS := { "+ Fearmonger +": { "Type": "Understanding", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "{forget} a {perturbation} from your deck or discard pile.", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -189,7 +189,7 @@ const CARDS := { "Ω Fearmonger Ω": { "Type": "Understanding", "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.omega.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "{forget} a {perturbation} from your deck or discard pile.", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -203,7 +203,7 @@ const CARDS := { "~ Fearmonger ~": { "Type": "Understanding", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "{forget} a {perturbation} from your deck or discard pile.\n{forget}.", "Cost": 0, "_illustration": "Db0 via midjourney.com", @@ -217,7 +217,7 @@ const CARDS := { "Fearmonger Exposed": { "Type": "Understanding", "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "{shuffle} a random {perturbation} from your hand into your deck.\n"\ + "{forget} a {perturbation} from your deck or discard pile.", "Cost": 1, @@ -232,7 +232,7 @@ const CARDS := { "The Laughing One": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {effect_stacks} {untouchable}. {forget}", + "Abilities": "Gain {effect_stacks} {impervious}. {forget}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", @@ -252,7 +252,7 @@ const CARDS := { "* The Laughing One *": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {effect_stacks} {untouchable}. {forget}", + "Abilities": "Gain {effect_stacks} {impervious}. {forget}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", @@ -268,8 +268,8 @@ const CARDS := { "ROFLMAO": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.impervious.name, Terms.GENERIC_TAGS.relax.name], - "Abilities": "Gain {effect_stacks} {untouchable}.\n"\ - + "{relax} 1 per {confidence}.\nRemove all {confidence}\n"\ + "Abilities": "Gain {effect_stacks} {impervious}.\n"\ + + "{relax} 1 per {defence}.\nRemove all {defence}\n"\ + "{forget}", "Cost": 2, "_illustration": "Db0 via midjourney.com", @@ -286,7 +286,7 @@ const CARDS := { "The Critic": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.vulnerable.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Apply {effect_stacks} {shaken} to a Torment. {forget}", + "Abilities": "Apply {effect_stacks} {vulnerable} to a Torment. {forget}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", @@ -306,7 +306,7 @@ const CARDS := { "^ The Critic ^": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.vulnerable.name, Terms.GENERIC_TAGS.alpha.name], - "Abilities": "Apply {effect_stacks} {shaken} to a Torment. {forget}", + "Abilities": "Apply {effect_stacks} {vulnerable} to a Torment. {forget}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", @@ -322,7 +322,7 @@ const CARDS := { "The Critic Unleashed": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.vulnerable.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Apply {effect_stacks} {shaken} to all Torments. {forget}", + "Abilities": "Apply {effect_stacks} {vulnerable} to all Torments. {forget}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", @@ -338,7 +338,7 @@ const CARDS := { "Clown": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Apply {effect_stacks} {confusion} to all Torments. {forget}", + "Abilities": "Apply {effect_stacks} {disempower} to all Torments. {forget}", "Cost": 0, "_illustration": "snowdrop via midjourney.com", "_rarity": "Received", @@ -358,7 +358,7 @@ const CARDS := { "* Clown *": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Apply {effect_stacks} {confusion} to all Torments. {forget}", + "Abilities": "Apply {effect_stacks} {disempower} to all Torments. {forget}", "Cost": 0, "_illustration": "snowdrop via midjourney.com", "_rarity": "Received", @@ -374,7 +374,7 @@ const CARDS := { "^ Clown ^": { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name, Terms.GENERIC_TAGS.alpha.name, Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Apply {effect_stacks} {confusion} to all Torments. {forget}", + "Abilities": "Apply {effect_stacks} {disempower} to all Torments. {forget}", "Cost": 0, "_illustration": "snowdrop via midjourney.com", "_rarity": "Received", @@ -391,7 +391,7 @@ const CARDS := { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.strengthen.name, Terms.GENERIC_TAGS.slumber.name], "Abilities": "Gain {effect_stacks} {strengthen}.\n{forget}", - "Cost": 0, + "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", "_effects_info": { @@ -412,7 +412,7 @@ const CARDS := { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.strengthen.name, Terms.GENERIC_TAGS.slumber.name], "Abilities": "Gain {effect_stacks} {strengthen}.\n{forget}", - "Cost": 0, + "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", "_effects_info": { @@ -428,7 +428,7 @@ const CARDS := { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.strengthen.name, Terms.GENERIC_TAGS.alpha.name], "Abilities": "Gain {effect_stacks} {strengthen}.\n{forget}", - "Cost": 0, + "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", "_effects_info": { @@ -444,7 +444,7 @@ const CARDS := { "Type": "Understanding", "Tags": [Terms.ACTIVE_EFFECTS.strengthen.name], "Abilities": "Gain {effect_stacks} {strengthen}", - "Cost": 0, + "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Received", "_effects_info": { @@ -1884,4 +1884,62 @@ const CARDS := { "_upgrade_threshold_modifier": -50, "_upgrades": [], }, + "Lotustus": { + "Type": "Understanding", + "Tags": [Terms.ACTIVE_EFFECTS.thorns.name,Terms.GENERIC_TAGS.spawn.name], + "Abilities": "Add {detrimental_integer} Disgust into your hand.\nApply {effect_stacks} {thorns}.", + "Cost": 1, + "_illustration": "SkylarkGSH", + "_rarity": "Received", + "_effects_info": { + Terms.ACTIVE_EFFECTS.thorns.name: Terms.PLAYER + }, + "_keywords": [], + "_secondary_preview_card": "Disgust", + "_amounts": { + "detrimental_integer": 1, + "effect_stacks": 7, + }, + "_upgrade_threshold_modifier": 0, + "_upgrades": [ + "* Lotustus *", + "% Lotustus %", + ], + }, + "* Lotustus *": { + "Type": "Understanding", + "Tags": [Terms.ACTIVE_EFFECTS.thorns.name,Terms.GENERIC_TAGS.spawn.name], + "Abilities": "Add {detrimental_integer} Disgust into your hand.\nApply {effect_stacks} {thorns}.", + "Cost": 1, + "_illustration": "SkylarkGSH", + "_rarity": "Received", + "_effects_info": { + Terms.ACTIVE_EFFECTS.thorns.name: Terms.PLAYER + }, + "_secondary_preview_card": "Disgust", + "_keywords": [], + "_amounts": { + "detrimental_integer": 1, + "effect_stacks": 8, + }, + "_is_upgrade": true, + }, + "% Lotustus %": { + "Type": "Understanding", + "Tags": [Terms.ACTIVE_EFFECTS.thorns.name,Terms.GENERIC_TAGS.spawn.name], + "Abilities": "Add {detrimental_integer} Disgust into your hand.\nGain {effect_stacks} {thorns}.", + "Cost": 1, + "_illustration": "SkylarkGSH", + "_rarity": "Received", + "_effects_info": { + Terms.ACTIVE_EFFECTS.thorns.name: Terms.PLAYER + }, + "_secondary_preview_card": "Disgust", + "_keywords": [], + "_amounts": { + "detrimental_integer": 2, + "effect_stacks": 10, + }, + "_is_upgrade": true, + }, } diff --git a/src/dreamscape/cards/sets/SetDefinition_Exploited.gd b/src/dreamscape/cards/sets/SetDefinition_Exploited.gd index e73acdfa..230c4e4b 100644 --- a/src/dreamscape/cards/sets/SetDefinition_Exploited.gd +++ b/src/dreamscape/cards/sets/SetDefinition_Exploited.gd @@ -7,7 +7,7 @@ const CARDS := { "Type": "Concentration", "Tags": [Terms.GENERIC_TAGS.end_turn.name, Terms.GENERIC_TAGS.slumber.name], "Abilities": "The next {concentration_stacks} played card which goes in the discard pile "\ - + "is played again, then is {forgotten}.\n{end_turn}", + + "is played an extra time, then is {forgotten}.\n{end_turn}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Basic", @@ -258,7 +258,7 @@ const CARDS := { "Work Ethic": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "{forget} {detrimental_integer} random card in your hand", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -278,7 +278,7 @@ const CARDS := { "+ Work Ethic +": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "{forget} {detrimental_integer} random card in your hand", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -293,7 +293,7 @@ const CARDS := { "% Work Ethic %": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "{forget} {detrimental_integer} random card in your hand", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -308,7 +308,7 @@ const CARDS := { "Solid Work Ethic": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.slumber.name], - "Abilities": "Gain {defence_amount} {confidence}.\n"\ + "Abilities": "Gain {defence_amount} {defence}.\n"\ + "choose and {forget} {detrimental_integer} card in your hand", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -490,12 +490,13 @@ const CARDS := { }, "The Grind": { "Type": "Action", - "Tags": [], + "Tags": [Terms.GENERIC_TAGS.spawn.name], "Abilities": "Add {detrimental_integer} Lacuna into your hand.\n"\ + "{damage} for {damage_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", + "_secondary_preview_card": "Lacuna", "_keywords": ["interpretation"], "_amounts": { "detrimental_integer": 2, @@ -509,12 +510,13 @@ const CARDS := { }, "+ The Grind +": { "Type": "Action", - "Tags": [], + "Tags": [Terms.GENERIC_TAGS.spawn.name], "Abilities": "Add {detrimental_integer} Lacuna into your hand.\n"\ + "{damage} for {damage_amount}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", + "_secondary_preview_card": "Lacuna", "_keywords": ["interpretation"], "_amounts": { "detrimental_integer": 2, @@ -524,12 +526,13 @@ const CARDS := { }, "@ The Grind @": { "Type": "Action", - "Tags": [], + "Tags": [Terms.GENERIC_TAGS.spawn.name], "Abilities": "Add {detrimental_integer} Lacuna into your hand.\n"\ + "{damage} for {damage_amount}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Uncommon", + "_secondary_preview_card": "Lacuna", "_keywords": ["interpretation"], "_amounts": { "detrimental_integer": 3, @@ -585,12 +588,13 @@ const CARDS := { }, "Stimulants": { "Type": "Action", - "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name], + "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.spawn.name], "Abilities": "{damage} all Torments for {damage_amount}. "\ + "Shuffle {detrimental_integer} Stimulated into your deck.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", + "_secondary_preview_card": "Stimulated", "_keywords": ["interpretation"], "_amounts": { "detrimental_integer": 1, @@ -604,12 +608,13 @@ const CARDS := { }, "+ Stimulants +": { "Type": "Action", - "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name], + "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.spawn.name], "Abilities": "{damage} all Torments for {damage_amount}. "\ + "Shuffle {detrimental_integer} Stimulated into your deck.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", + "_secondary_preview_card": "Stimulated", "_keywords": ["interpretation"], "_amounts": { "detrimental_integer": 1, @@ -619,12 +624,13 @@ const CARDS := { }, "++ Stimulants ++": { "Type": "Action", - "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name], + "Tags": [Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.spawn.name], "Abilities": "{damage} all Torments for {damage_amount}. "\ + "Shuffle {detrimental_integer} Stimulated into your deck.", "Cost": 2, "_illustration": "Db0 via midjourney.com", "_rarity": "Rare", + "_secondary_preview_card": "Stimulated", "_keywords": ["interpretation"], "_amounts": { "detrimental_integer": 2, @@ -760,12 +766,13 @@ const CARDS := { }, "Chewed Out": { "Type": "Control", - "Tags": [Terms.GENERIC_TAGS.spark.name], + "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.spawn.name], "Abilities": "Shuffle {detrimental_integer} Languor into your draw pile.\n"\ - + "Gain {defence_amount} {confidence}", + + "Gain {defence_amount} {defence}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", + "_secondary_preview_card": "Languor", "_keywords": ["confidence"], "_amounts": { "detrimental_integer": 1, @@ -779,12 +786,13 @@ const CARDS := { }, "+ Chewed Out +": { "Type": "Control", - "Tags": [Terms.GENERIC_TAGS.spark.name], + "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.spawn.name], "Abilities": "Shuffle {detrimental_integer} Languor into your draw pile.\n"\ - + "Gain {defence_amount} {confidence}", + + "Gain {defence_amount} {defence}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", + "_secondary_preview_card": "Languor", "_keywords": ["confidence"], "_amounts": { "detrimental_integer": 1, @@ -794,12 +802,13 @@ const CARDS := { }, "% Chewed Out %": { "Type": "Control", - "Tags": [Terms.GENERIC_TAGS.spark.name], + "Tags": [Terms.GENERIC_TAGS.spark.name, Terms.GENERIC_TAGS.spawn.name], "Abilities": "Shuffle {detrimental_integer} Languor into your draw pile.\n"\ - + "Gain {defence_amount} {confidence}", + + "Gain {defence_amount} {defence}", "Cost": 0, "_illustration": "Db0 via midjourney.com", "_rarity": "Common", + "_secondary_preview_card": "Languor", "_keywords": ["confidence"], "_amounts": { "detrimental_integer": 2, @@ -856,8 +865,8 @@ const CARDS := { "The Crunch": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n"\ - + "If this card is {forgotten}, gain {defence_amount2} {confidence} "\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + + "If this card is {forgotten}, gain {defence_amount2} {defence} "\ + "and {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -880,8 +889,8 @@ const CARDS := { "+ The Crunch +": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n"\ - + "If this card is {forgotten}, gain {defence_amount2} {confidence} "\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + + "If this card is {forgotten}, gain {defence_amount2} {defence} "\ + "and {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -900,8 +909,8 @@ const CARDS := { "* The Crunch *": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n"\ - + "If this card is {forgotten}, gain {defence_amount2} {confidence} "\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + + "If this card is {forgotten}, gain {defence_amount2} {defence} "\ + "and {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", diff --git a/src/dreamscape/cards/sets/SetDefinition_LaserCannon.gd b/src/dreamscape/cards/sets/SetDefinition_LaserCannon.gd index b8454290..31ccf4a5 100644 --- a/src/dreamscape/cards/sets/SetDefinition_LaserCannon.gd +++ b/src/dreamscape/cards/sets/SetDefinition_LaserCannon.gd @@ -311,7 +311,7 @@ const CARDS := { "Photon Shield": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.fusion.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Fuse {fuse_amount} -> Lumen Shield", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -332,7 +332,7 @@ const CARDS := { "+ Photon Shield +": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.fusion.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Fuse {fuse_amount} -> Lumen Shield", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -348,7 +348,7 @@ const CARDS := { "@ Photon Shield @": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.fusion.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Fuse {fuse_amount} -> Lumen Shield", "Cost": 0, "_illustration": "Db0 via midjourney.com", @@ -364,7 +364,7 @@ const CARDS := { "Ω Photon Shield Ω": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.fusion.name, Terms.GENERIC_TAGS.omega.name], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Fuse {fuse_amount} -> Lumen Shield", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -380,7 +380,7 @@ const CARDS := { "Lumen Shield": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.fusion.name, Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fortify}\n"\ + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fortify}\n"\ + "Fuse {fuse_amount} -> Plasma Shield", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -403,7 +403,7 @@ const CARDS := { "+ Lumen Shield +": { "Type": "Control", "Tags": [Terms.GENERIC_TAGS.fusion.name, Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fortify}\n"\ + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fortify}\n"\ + "Fuse {fuse_amount} -> Plasma Shield", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -423,7 +423,7 @@ const CARDS := { "Plasma Shield": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fortify}", + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Special", @@ -443,7 +443,7 @@ const CARDS := { "+ Plasma Shield +": { "Type": "Control", "Tags": [Terms.ACTIVE_EFFECTS.fortify.name], - "Abilities": "Gain {defence_amount} {confidence}\nGain {effect_stacks} {fortify}", + "Abilities": "Gain {defence_amount} {defence}\nGain {effect_stacks} {fortify}", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_rarity": "Special", @@ -1341,7 +1341,7 @@ const CARDS := { "Light Jump": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Put {discard_amount} cards to the bottom of the draw pile.", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -1360,7 +1360,7 @@ const CARDS := { "+ Light Jump +": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Put {discard_amount} cards to the bottom of the draw pile.", "Cost": 1, "_illustration": "Db0 via midjourney.com", @@ -1375,7 +1375,7 @@ const CARDS := { "@ Light Jump @": { "Type": "Control", "Tags": [], - "Abilities": "Gain {defence_amount} {confidence}\n"\ + "Abilities": "Gain {defence_amount} {defence}\n"\ + "Put {discard_amount} cards to the bottom of the draw pile.", "Cost": 0, "_illustration": "Db0 via midjourney.com", diff --git a/src/dreamscape/cards/sets/SetDefinition_Perturbations.gd b/src/dreamscape/cards/sets/SetDefinition_Perturbations.gd index a3a1f9e1..2183a4c3 100644 --- a/src/dreamscape/cards/sets/SetDefinition_Perturbations.gd +++ b/src/dreamscape/cards/sets/SetDefinition_Perturbations.gd @@ -26,7 +26,7 @@ const CARDS := { "Unease": { "Type": "Perturbation", "Tags": [Terms.ACTIVE_EFFECTS.poison.name], - "Abilities": "If this card is in your hand at the end of the turn, gain {effect_stacks} {poison}", + "Abilities": "If this card is in your hand at the end of the turn, gain {effect_stacks} {poison}\nPlay: {forget}", "Cost": 2, "_illustration": "Robert Paraguassu via midjourney.com", "_rarity": "Perturbation", @@ -38,6 +38,21 @@ const CARDS := { Terms.ACTIVE_EFFECTS.poison.name: Terms.PLAYER }, }, + "Disgust": { + "Type": "Perturbation", + "Tags": [Terms.ACTIVE_EFFECTS.thorns.name], + "Abilities": "Whenever you draw this card, give all torments {effect_stacks} {thorns}\nPlay: {forget}", + "Cost": 2, + "_illustration": "Nobody", + "_rarity": "Perturbation", + "_amounts": { + "effect_stacks": 2 + }, + "_keywords": [], + "_effects_info": { + Terms.ACTIVE_EFFECTS.thorns.name: Terms.ENEMY + }, + }, "Discombobulation": { "Type": "Perturbation", "Tags": [Terms.ACTIVE_EFFECTS.disempower.name], @@ -141,17 +156,19 @@ const CARDS := { }, "Scattered Dreams": { "Type": "Perturbation", - "Tags": [Terms.ACTIVE_EFFECTS.drain.name], - "Abilities": "If this card is in your hand at the end of the turn, gain {effect_stacks} {drain}", - "Cost": 2, + "Tags": [Terms.ACTIVE_EFFECTS.marked.name], + "Abilities": "If this card is in your hand at the end of the turn, gain {effect_stacks} {marked} and {effect_stacks2} {delighted}", + "Cost": 1, "_illustration": "Robert Paraguassu via midjourney.com", "_rarity": "Perturbation", "_amounts": { - "effect_stacks": 1 + "effect_stacks": 3, + "effect_stacks2": 1 }, "_keywords": [], "_effects_info": { - Terms.ACTIVE_EFFECTS.drain.name: Terms.PLAYER + Terms.ACTIVE_EFFECTS.marked.name: Terms.PLAYER, + Terms.ACTIVE_EFFECTS.delighted.name: Terms.PLAYER }, }, "Cringeworthy Memory": { diff --git a/src/dreamscape/cards/sets/SetDefinition_Vindictive.gd b/src/dreamscape/cards/sets/SetDefinition_Vindictive.gd index d4945453..b735e064 100644 --- a/src/dreamscape/cards/sets/SetDefinition_Vindictive.gd +++ b/src/dreamscape/cards/sets/SetDefinition_Vindictive.gd @@ -941,7 +941,7 @@ const CARDS := { Terms.GENERIC_TAGS.fading.name, Terms.GENERIC_TAGS.slumber.name, ], - "Abilities": "Gain {defence_amount} {confidence}\n{forget}.", + "Abilities": "Gain {defence_amount} {defence}\n{forget}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_avoid_normal_discard": true, @@ -962,7 +962,7 @@ const CARDS := { Terms.GENERIC_TAGS.fading.name, Terms.GENERIC_TAGS.slumber.name, ], - "Abilities": "Gain {defence_amount} {confidence}\n{forget}.", + "Abilities": "Gain {defence_amount} {defence}\n{forget}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_avoid_normal_discard": true, @@ -980,7 +980,7 @@ const CARDS := { Terms.GENERIC_TAGS.slumber.name, Terms.GENERIC_TAGS.alpha.name, ], - "Abilities": "Gain {defence_amount} {confidence}\n{forget}.", + "Abilities": "Gain {defence_amount} {defence}\n{forget}.", "Cost": 1, "_illustration": "Db0 via midjourney.com", "_avoid_normal_discard": true, diff --git a/src/dreamscape/cards/sets/SetScripts_Enemies.gd b/src/dreamscape/cards/sets/SetScripts_Enemies.gd index d3f945f2..c060c2ba 100644 --- a/src/dreamscape/cards/sets/SetScripts_Enemies.gd +++ b/src/dreamscape/cards/sets/SetScripts_Enemies.gd @@ -157,6 +157,35 @@ const Recurrence = { }, } +const Lotustus = { + "manual": { + "hand": [ + { + "name": "spawn_card_to_container", + "card_name": "Disgust", + "dest_container": "hand", + "object_count": { + "lookup_property": "_amounts", + "value_key": "detrimental_integer", + }, + "tags": ["Card"], + "yield_time": 0.05, + }, + { + "name": "apply_effect", + "tags": ["Card"], + "effect_name": Terms.ACTIVE_EFFECTS.thorns.name, + "subject": "dreamer", + "modification": { + "lookup_property": "_amounts", + "value_key": "effect_stacks", + }, + }, + ], + }, +} + + const scripts := { "Gaslighter": { "manual": { @@ -1772,6 +1801,7 @@ const scripts := { "Recurrence": Recurrence, "Influencer": Influencer, "Shameling": Shameling, + "Lotustus": Lotustus, } # This fuction returns all the scripts of the specified card name. diff --git a/src/dreamscape/cards/sets/SetScripts_Perturbations.gd b/src/dreamscape/cards/sets/SetScripts_Perturbations.gd index 211a158d..ca419e47 100644 --- a/src/dreamscape/cards/sets/SetScripts_Perturbations.gd +++ b/src/dreamscape/cards/sets/SetScripts_Perturbations.gd @@ -38,6 +38,48 @@ const scripts := { } ], }, + "manual": { + "hand": [ + { + "name": "move_card_to_container", + "subject": "self", + "dest_container": "forgotten", + "tags": ["Played", "Card"], + }, + ], + }, + }, + "Disgust": { + "card_moved_to_hand": { + "hand": [ + { + "name": "apply_effect", + "tags": ["Card"], + "trigger": "self", + "effect_name": Terms.ACTIVE_EFFECTS.thorns.name, + "subject": "boardseek", + "subject_count": "all", + "modification": { + "lookup_property": "_amounts", + "value_key": "effect_stacks", + }, + "filter_state_seek": [{ + "filter_group": "EnemyEntities", + },], + } + ], + "filter_source": "deck", + }, + "manual": { + "hand": [ + { + "name": "move_card_to_container", + "subject": "self", + "dest_container": "forgotten", + "tags": ["Played", "Card"], + }, + ], + }, }, "Discombobulation": { "player_turn_ended": { @@ -70,6 +112,16 @@ const scripts := { } ], }, + "manual": { + "hand": [ + { + "name": "move_card_to_container", + "subject": "self", + "dest_container": "forgotten", + "tags": ["Played", "Card"], + }, + ], + }, }, "Prejudice": { "player_turn_ended": { @@ -173,13 +225,23 @@ const scripts := { "hand": [ { "name": "apply_effect", - "tags": ["Card"], - "effect_name": Terms.ACTIVE_EFFECTS.drain.name, + "tags": ["Card", "Delayed"], + "effect_name": Terms.ACTIVE_EFFECTS.marked.name, "subject": "dreamer", "modification": { "lookup_property": "_amounts", "value_key": "effect_stacks", } + }, + { + "name": "apply_effect", + "tags": ["Card", "Delayed"], + "effect_name": Terms.ACTIVE_EFFECTS.delighted.name, + "subject": "dreamer", + "modification": { + "lookup_property": "_amounts", + "value_key": "effect_stacks2", + } } ], }, diff --git a/tests/HUTCommon.gd b/tests/HUTCommon.gd index 42f32da6..30dfc255 100644 --- a/tests/HUTCommon.gd +++ b/tests/HUTCommon.gd @@ -195,6 +195,7 @@ func before_each(): cfc._setup_testing() setup_hypnagonia_testing() watch_signals(EventBus) + watch_signals(scripting_bus) if not globals.test_flags.has("disable_board_background"): globals.test_flags["disable_board_background"] = true if not globals.test_flags.has("disable_starting_artifacts"): diff --git a/tests/HUTCommon_Ordeal.gd b/tests/HUTCommon_Ordeal.gd index 34c899a7..a0ea7243 100644 --- a/tests/HUTCommon_Ordeal.gd +++ b/tests/HUTCommon_Ordeal.gd @@ -62,9 +62,14 @@ func before_each(): card.scripts = test_scripts artifacts = setup_test_artifacts(test_artifact_names) memories = setup_test_memories(test_memories_names) + var retries := 0 if globals.test_flags.get("start_ordeal_before_each", true): while board.counters.counters.immersion == 0: - yield(yield_to(board.turn, "player_turn_started", 1), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 1), YIELD) + retries += 1 + if retries >=5: + gut.p("ERROR: Immersion never increased!") + break AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), -80) extra_board_setup() @@ -194,7 +199,7 @@ func activate_quick_intent(intents_script: Array) -> void: test_torment.intents.refresh_intents() yield(yield_for(0.1), YIELD) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started", 3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 3), YIELD) func set_all_cards_to_script(script_to_use: Dictionary, modify_cost := 0) -> void: for c in cards: diff --git a/tests/HUT_Journal_CombatEncounterTestClass.gd b/tests/HUT_Journal_CombatEncounterTestClass.gd index 88336531..b524dd9f 100644 --- a/tests/HUT_Journal_CombatEncounterTestClass.gd +++ b/tests/HUT_Journal_CombatEncounterTestClass.gd @@ -66,7 +66,7 @@ func begin_enemy_encounter() -> void: assert_has(cfc.NMAP, "board") if not cfc.NMAP.has("board"): return - yield(yield_to(EventBus, "battle_begun", 2), YIELD) + yield(yield_to(scripting_bus, "battle_begun", 2), YIELD) test_torments = get_tree().get_nodes_in_group("EnemyEntities") if test_torments.size() > 0: test_torment = get_tree().get_nodes_in_group("EnemyEntities")[0] diff --git a/tests/HUT_Ordeal_IntentScriptsTestClass.gd b/tests/HUT_Ordeal_IntentScriptsTestClass.gd index 698816e2..972c868b 100644 --- a/tests/HUT_Ordeal_IntentScriptsTestClass.gd +++ b/tests/HUT_Ordeal_IntentScriptsTestClass.gd @@ -18,4 +18,4 @@ func before_each(): test_torment.intents.refresh_intents() yield(yield_to(get_tree(), "idle_frame", 0.1), YIELD) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) diff --git a/tests/integration/cards/test_LaserCannon.gd b/tests/integration/cards/test_LaserCannon.gd index aa693f05..b9eb7202 100644 --- a/tests/integration/cards/test_LaserCannon.gd +++ b/tests/integration/cards/test_LaserCannon.gd @@ -197,7 +197,7 @@ class TestPhotonBlade: assert_eq(cd.uses, get_amount("discount_uses")) assert_eq(cd.discount_amount, -get_amount("discount_amount")) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(get_tree().get_nodes_in_group("cost_discounts").size(), 1, "One Discounter is permanent") class TestChargedShot: @@ -414,7 +414,7 @@ class TestSpareLens: func test_spare_lens_gen(): globals.player.deck_groups[Terms.CARD_GROUP_TERMS.item] = "Laser Cannon" turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) yield(yield_for(1), YIELD) assert_eq(deck.get_card_count(), 2) if deck.get_card_count() == 0: @@ -590,12 +590,12 @@ class TestFocusCalibration: func test_effect(): var last_card : DreamCard = deck.get_bottom_card() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion every turn") assert_eq(last_card.get_parent(), forgotten, "Last card forgotten") last_card = deck.get_bottom_card() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion every turn") assert_eq(last_card.get_parent(), forgotten, "Last card forgotten") assert_eq(dreamer.active_effects.get_effect_stacks(effect), 2) diff --git a/tests/integration/cards/test_Vindictive.gd b/tests/integration/cards/test_Vindictive.gd index a93b15d1..e73283ae 100644 --- a/tests/integration/cards/test_Vindictive.gd +++ b/tests/integration/cards/test_Vindictive.gd @@ -199,7 +199,7 @@ class TestVestigeOfWarmth: func test_vestige(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "enemy_turn_started",1), YIELD) + yield(yield_to(scripting_bus, "enemy_turn_started",1), YIELD) var amount = cfc.card_definitions[effect]\ .get("_amounts",{}).get("concentration_effect") assert_eq(dreamer.defence, hand.get_card_count() * amount) @@ -242,14 +242,14 @@ class TestNothingForgotten: func test_vestige(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) var frozens := 0 for c in hand.get_all_cards(): if c.get_property("Tags").has(Terms.GENERIC_TAGS.frozen.name): frozens += 1 assert_eq(frozens, 1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) frozens = 0 for c in hand.get_all_cards(): if c.get_property("Tags").has(Terms.GENERIC_TAGS.frozen.name): @@ -269,7 +269,7 @@ class TestStewing: func test_card_results(): assert_has_amounts() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) var sceng = execute_with_yield(card) if sceng is GDScriptFunctionState: sceng = yield(sceng, "completed") @@ -345,7 +345,7 @@ class TestNoteTaking: func test_effect(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.thorns.name), amount, "%s stacks on Dreamer increased by correct amount" % [Terms.ACTIVE_EFFECTS.thorns.name]) @@ -434,7 +434,7 @@ class TestShadenfreude: func test_effect(): spawn_effect(test_torment, Terms.ACTIVE_EFFECTS.poison.name, 14, '') turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.armor.name), int(floor(amount * 14.0 / 5.0)), "%s stacks on Dreamer increased by correct amount" % [Terms.ACTIVE_EFFECTS.armor.name]) diff --git a/tests/integration/cards/test_concentrations.gd b/tests/integration/cards/test_concentrations.gd index 5ce716ed..f938186a 100644 --- a/tests/integration/cards/test_concentrations.gd +++ b/tests/integration/cards/test_concentrations.gd @@ -33,7 +33,7 @@ class TestExcuses: assert_eq(test_torment.damage, starting_torment_dgm + modified_dmg, "Torment should take damage") assert_eq(dreamer.damage, 1, "Dreamer damage reduced to 1") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 1, "%s stacks do not decrease" % [effect]) @@ -45,7 +45,7 @@ class TestExcuses: sceng = yield(sceng, "completed") turn.call_deferred("end_player_turn") assert_eq(test_torment.damage, starting_torment_dgm + modified_dmg, "Torment should take damage") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 7, "%s stops DoTs" % [effect]) diff --git a/tests/integration/cards/test_perturbations.gd b/tests/integration/cards/test_perturbations.gd index a0e1bca3..f0032616 100644 --- a/tests/integration/cards/test_perturbations.gd +++ b/tests/integration/cards/test_perturbations.gd @@ -3,11 +3,13 @@ extends "res://tests/HUT_Ordeal_CardTestClass.gd" class TestScatteredDreams: extends "res://tests/HUT_Ordeal_CardTestClass.gd" - var effect: String = Terms.ACTIVE_EFFECTS.drain.name + var effect: String = Terms.ACTIVE_EFFECTS.marked.name + var effect2: String = Terms.ACTIVE_EFFECTS.delighted.name func _init() -> void: testing_card_name = "Scattered Dreams" expected_amount_keys = [ - "effect_stacks" + "effect_stacks", + "effect_stacks2" ] func test_card_results(): @@ -19,20 +21,37 @@ class TestScatteredDreams: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 0, "%s stacks on dreamer not increased when card played" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(counters.get_counter("immersion"), 3, "Immersion not affected by %s" % [testing_card_name]) func test_card_results_remaining_on_hand(): assert_has_amounts() + var intents_to_test = [ + { + "intent_scripts": ["Stress:10"], + "reshuffle": true, + }, + ] + test_torment.intents.replace_intents(intents_to_test) + test_torment.intents.refresh_intents() yield(yield_for(0.1), YIELD) turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "enemy_turn_started",3 ), YIELD) - assert_eq(dreamer.active_effects.get_effect_stacks(effect), 1, - "%s stacks on dreamer not increased when card played" % [effect]) - yield(yield_to(turn, "player_turn_started",3 ), YIELD) - assert_eq(counters.get_counter("immersion"), 2, - "Immersion affected by %s" % [testing_card_name]) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_eq(dreamer.active_effects.get_effect_stacks(effect), get_amount("effect_stacks"), + "%s stacks on dreamer increased when left in hand" % [effect]) + assert_eq(dreamer.active_effects.get_effect_stacks(effect2), get_amount("effect_stacks2"), + "%s stacks on dreamer increased when left in hand" % [effect2]) + assert_eq(dreamer.damage, 10, "Damage not increased by delayed marked") + test_torment.intents.replace_intents(intents_to_test) + test_torment.intents.refresh_intents() + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_eq(dreamer.active_effects.get_effect_stacks(effect), get_amount("effect_stacks") - 1, + "%s stacks on dreamer increased when left in hand" % [effect]) + assert_eq(dreamer.active_effects.get_effect_stacks(effect2), 0, + "%s stacks 0 out on subsequent application" % [effect2]) + assert_eq(dreamer.damage, 28, "Damage increased by marked") class TestCringeworthyMemory: @@ -71,7 +90,6 @@ class TestDreamFragment: if sceng is GDScriptFunctionState: sceng = yield(sceng, "completed") # yield(yield_to(cfc, "new_card_instanced", 0.2), YIELD) - assert_signal_emitted(card, "card_removed") assert_signal_emitted(cfc, "new_card_instanced") assert_eq(dreamer.damage, 1, "Perturbation did damage") # We're saving as vars here because the original card will be queue cleared @@ -81,7 +99,7 @@ class TestDreamFragment: "Card removed but new one took its place") assert_eq(hand.get_card_count(), 1 + draw_amount, "%s drew correct amount of cards" % [testing_card_name]) - gut.p(hand.get_card_count()) + assert_signal_emitted(scripting_bus, "card_removed") class TestDistracted: @@ -123,7 +141,7 @@ class TestSuffocation: if sceng is GDScriptFunctionState: sceng = yield(sceng, "completed") turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "enemy_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "enemy_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 3, "Only 1 Perturbation did damage") assert_eq(card.get_parent(), forgotten, "Pertubration forgotten") @@ -142,7 +160,7 @@ class TestInescepableConclusion: if sceng is GDScriptFunctionState: sceng = yield(sceng, "completed") turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "enemy_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "enemy_turn_started",3 ), YIELD) assert_signal_emit_count(cfc, "new_card_instanced", 1) assert_eq(count_card_names("Inescepable Conclusion"), 3, "1 New Inescepable Conclusion Added") @@ -162,7 +180,7 @@ class TestCockroachInfestation: if sceng is GDScriptFunctionState: sceng = yield(sceng, "completed") turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "enemy_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "enemy_turn_started",3 ), YIELD) assert_signal_emit_count(globals.player.deck, "card_entry_modified", 1) class TestSelfCentered: @@ -207,7 +225,7 @@ class TestSelfCentered: sceng = yield(sceng, "completed") assert_eq(test_torment.damage, tdamage(torment_added_damage), "Torment should take expected damage") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 10, "Dreamer should take damage from intents") assert_eq(test_torment.damage, tdamage(torment_added_damage + 4), "Torment should take reducted damage from poison") diff --git a/tests/integration/cards/test_understandings.gd b/tests/integration/cards/test_understandings.gd index 91c6bd05..402c7662 100644 --- a/tests/integration/cards/test_understandings.gd +++ b/tests/integration/cards/test_understandings.gd @@ -232,4 +232,27 @@ class TestHandsyAunt: if sceng is GDScriptFunctionState: sceng = yield(sceng, "completed") assert_eq(test_torment.damage, tdamage(get_amount("beneficial_float") * 5)) + +class TestLotustus: + extends "res://tests/HUT_Ordeal_CardTestClass.gd" + var effect: String = Terms.ACTIVE_EFFECTS.thorns.name + func _init() -> void: + testing_card_name = "Lotustus" + expected_amount_keys = [ + "effect_stacks", + "detrimental_integer" + ] + + + func test_card_results(): + assert_has_amounts() + yield(yield_for(0.1), YIELD) + var sceng = execute_with_yield(card) +# if sceng is GDScriptFunctionState: +# sceng = yield(sceng, "completed") + yield(yield_to(hand, "card_added", 1), YIELD) + assert_eq(dreamer.active_effects.get_effect_stacks(effect), get_amount("effect_stacks"), + "%s stacks on dreamer increased to %s" % [effect,get_amount("effect_stacks")]) + assert_eq(count_card_names("Disgust"), 1,"Perturbation spawned") + diff --git a/tests/integration/journal/test_onceoff_artifacts.gd b/tests/integration/journal/test_onceoff_artifacts.gd index b2ab45fd..0a9775ed 100644 --- a/tests/integration/journal/test_onceoff_artifacts.gd +++ b/tests/integration/journal/test_onceoff_artifacts.gd @@ -22,7 +22,7 @@ class TestAccumulateEnemy: testing_artifact_name = "AccumulateEnemy" expected_amount_keys = [ "pathos_avg_multiplier", - "relax_amount" + "heal_amount" ] func test_artifact_results(): @@ -31,7 +31,7 @@ class TestAccumulateEnemy: var ptype = globals.player.pathos.pathi[Terms.RUN_ACCUMULATION_NAMES.enemy] assert_eq(ptype.repressed, float(ptype.get_progression_average() * get_amount("pathos_avg_multiplier")), "%s increased repressed pathos" % [artifact.canonical_name]) - assert_eq(globals.player.damage, dreamer_starting_damage - get_amount("relax_amount")) + assert_eq(globals.player.damage, dreamer_starting_damage - get_amount("heal_amount")) diff --git a/tests/integration/journal/test_recurrence.gd b/tests/integration/journal/test_recurrence.gd index 5e5f6184..ff4335d7 100644 --- a/tests/integration/journal/test_recurrence.gd +++ b/tests/integration/journal/test_recurrence.gd @@ -11,7 +11,7 @@ class TestNCE: assert_has(cfc.NMAP, "board") if not cfc.NMAP.has("board"): return - yield(yield_to(EventBus, "battle_begun", 2), YIELD) + yield(yield_to(scripting_bus, "battle_begun", 2), YIELD) watch_signals(globals.encounters.run_changes) watch_signals(globals.player) var recurrence @@ -28,8 +28,8 @@ class TestNCE: "entity_healed", "_on_dreamer_healed") assert_connected(cfc.NMAP.board.dreamer, recurrence, "entity_damaged", "_on_dreamer_damaged") - assert_connected(cfc.signal_propagator, recurrence, - "signal_received", "_on_card_signal_received") + assert_connected(scripting_bus, recurrence, + "scripting_event_triggered", "_on_scripting_event_triggered") assert_eq(recurrence.get_property("_difficulty"), "easy", "Difficulty set correctly") end_surprise_encounter() assert_nce_unlocked(load("res://src/dreamscape/Run/NCE/AllActs/Recurrence.gd")) @@ -60,7 +60,7 @@ class TestNCE: assert_has(cfc.NMAP, "board") if not cfc.NMAP.has("board"): return - yield(yield_to(EventBus, "battle_begun", 2), YIELD) + yield(yield_to(scripting_bus, "battle_begun", 2), YIELD) watch_signals(globals.encounters.run_changes) watch_signals(globals.player) end_surprise_encounter() @@ -84,7 +84,7 @@ class TestNCE: assert_has(cfc.NMAP, "board") if not cfc.NMAP.has("board"): return - yield(yield_to(EventBus, "battle_begun", 2), YIELD) + yield(yield_to(scripting_bus, "battle_begun", 2), YIELD) board = cfc.NMAP.board hand = cfc.NMAP.hand deck = cfc.NMAP.deck @@ -125,7 +125,7 @@ class TestNCE: if sceng is GDScriptFunctionState and sceng.is_valid(): sceng = yield(sceng, "completed") board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(surprise_combat_encounter.lessons_learned.get("attacks", []), [[6,6,6]], "Attacks learned") assert_eq(surprise_combat_encounter.lessons_learned.get("defences", []), [25], "Defences learned") assert_eq(surprise_combat_encounter.lessons_learned.get("heals", []), [-5], "Heals learned") @@ -278,7 +278,7 @@ class TestWildAttacksEasy: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -300,7 +300,7 @@ class TestWildAttacksMedium: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -312,7 +312,7 @@ class TestWildAttacksMedium: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.impervious.name] = 1 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -327,7 +327,7 @@ class TestWildAttacksMedium: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.armor.name] = 1 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -343,7 +343,7 @@ class TestWildAttacksMedium: spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.thorns.name, 10) advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -359,7 +359,7 @@ class TestWildAttacksMedium: advanced_torment.intents.prepare_intents(0) dreamer.defence = 100 turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -371,7 +371,7 @@ class TestWildAttacksMedium: advanced_torment.cm_flags["average_attacks"] = 1 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -385,7 +385,7 @@ class TestWildAttacksMedium: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.empower.name] = 1 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -399,7 +399,7 @@ class TestWildAttacksMedium: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.buffer.name] = 1 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -422,7 +422,7 @@ class TestWildAttacksHard: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -435,7 +435,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.impervious.name] = 2 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -451,7 +451,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.armor.name] = 2 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -468,7 +468,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.impervious.name] = 1 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -484,7 +484,7 @@ class TestWildAttacksHard: advanced_torment.intents.prepare_intents(0) dreamer.defence = 100 turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.damage, @@ -502,7 +502,7 @@ class TestWildAttacksHard: dreamer.defence = 100 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.burn.name), @@ -520,7 +520,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags["high_attacks"] = 2 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -533,7 +533,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags["average_attacks"] = 2 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -546,7 +546,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.empower.name] = 2 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -559,7 +559,7 @@ class TestWildAttacksHard: advanced_torment.cm_flags[Terms.ACTIVE_EFFECTS.buffer.name] = 2 advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty # warning-ignore:unused_variable var wa = advanced_torment.intents.WILD_AMOUNTS[difficulty] @@ -592,7 +592,7 @@ class TestLearnEasy: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty assert_eq(advanced_torment.defence, advanced_torment.intents.LEARNING_DEFENCE[difficulty], @@ -626,7 +626,7 @@ class TestLearnEasy: # sceng = yield(sceng, "completed") # gut.p([advanced_torment.dreamer_attacks,advanced_torment.dreamer_defences]) # turn.call_deferred("end_player_turn") -# yield(yield_to(turn, "player_turn_started",3 ), YIELD) +# yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # # The wild attack amount for this difficulty # assert_eq(advanced_torment.defence, # advanced_torment.intents.LEARNING_DEFENCE[difficulty], @@ -662,7 +662,7 @@ class TestLearnMedium: advanced_torment._prepare_countermeasures() advanced_torment.intents.prepare_intents(1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty assert_eq(advanced_torment.defence, advanced_torment.intents.LEARNING_DEFENCE[difficulty], @@ -682,6 +682,9 @@ class TestLearnMedium: # warning-ignore:return_value_discarded cards[0].scripts = EXERT_SCRIPT cards[1].scripts = EFFECT_SCRIPT + # We set the cost to 0 so that we leave an unspect immersion, which will be turned into + # stress by the recurrence + cards[1].modify_property('Cost', 0) var sceng for exec_card in cards: sceng = execute_with_yield(exec_card) @@ -690,13 +693,13 @@ class TestLearnMedium: advanced_torment.countermeasures = ["high_attacks"] advanced_torment._prepare_countermeasures() advanced_torment.intents.prepare_intents(1) + yield(yield_for(2), YIELD) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) - # The wild attack amount for this difficulty + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) var intents = advanced_torment.intents.get_children() assert_eq(intents.size(), 3, "Recurrence copying all intents") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(advanced_torment.damage, 5, "Recurrence took exert damage") @@ -734,7 +737,7 @@ class TestLearnHard: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # The wild attack amount for this difficulty assert_eq(advanced_torment.defence, advanced_torment.intents.LEARNING_DEFENCE[difficulty], @@ -763,7 +766,7 @@ class TestLearnHard: # if sceng is GDScriptFunctionState and sceng.is_valid(): # sceng = yield(sceng, "completed") # turn.call_deferred("end_player_turn") -# yield(yield_to(turn, "player_turn_started",3 ), YIELD) +# yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # var intents = advanced_torment.intents.get_children() # assert_eq(intents.size(), 1, "Recurrence is consolidating attacks as countermeasure to thorns") # for iindex in range(intents.size()): @@ -785,7 +788,7 @@ class TestLearnHard: # if sceng is GDScriptFunctionState and sceng.is_valid(): # sceng = yield(sceng, "completed") # turn.call_deferred("end_player_turn") -# yield(yield_to(turn, "player_turn_started",3 ), YIELD) +# yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # var intents = advanced_torment.intents.get_children() # assert_eq(intents.size(), cards.size(), "Recurrence is setting up piercing as countermeasure to high defences") # for iindex in range(intents.size()): @@ -793,7 +796,7 @@ class TestLearnHard: # str(6), # "Attack copied and piercing") # turn.call_deferred("end_player_turn") -# yield(yield_to(turn, "player_turn_started",3 ), YIELD) +# yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # assert_eq(dreamer.damage, # cards.size() * 6, # "Dreamer took the expected amount of piercing damage")imic_cm_pierce(): @@ -809,7 +812,7 @@ class TestLearnHard: # if sceng is GDScriptFunctionState and sceng.is_valid(): # sceng = yield(sceng, "completed") # turn.call_deferred("end_player_turn") -# yield(yield_to(turn, "player_turn_started",3 ), YIELD) +# yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # var intents = advanced_torment.intents.get_children() # assert_eq(intents.size(), cards.size(), "Recurrence is setting up piercing as countermeasure to high defences") # for iindex in range(intents.size()): @@ -817,7 +820,7 @@ class TestLearnHard: # str(6), # "Attack copied and piercing") # turn.call_deferred("end_player_turn") -# yield(yield_to(turn, "player_turn_started",3 ), YIELD) +# yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # assert_eq(dreamer.damage, # cards.size() * 6, # "Dreamer took the expected amount of piercing damage") diff --git a/tests/integration/journal/test_underwater_cave.gd b/tests/integration/journal/test_underwater_cave.gd index 1c28d004..15e5cc4e 100644 --- a/tests/integration/journal/test_underwater_cave.gd +++ b/tests/integration/journal/test_underwater_cave.gd @@ -14,7 +14,7 @@ class TestNCE: assert_has(cfc.NMAP, "board") if not cfc.NMAP.has("board"): return - yield(yield_to(EventBus, "battle_begun", 2), YIELD) + yield(yield_to(scripting_bus, "battle_begun", 2), YIELD) watch_signals(globals.encounters.run_changes) watch_signals(globals.player) watch_signals(globals.player.pathos) diff --git a/tests/integration/ordeal/test_bosses.gd b/tests/integration/ordeal/test_bosses.gd index 73f14028..c87748fe 100644 --- a/tests/integration/ordeal/test_bosses.gd +++ b/tests/integration/ordeal/test_bosses.gd @@ -24,7 +24,7 @@ class TestSurrealBoss: assert_eq(advanced_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 1, "%s gained %s due to massive damage" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.strengthen.name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(advanced_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 2, "%s gained %s due to not doing any stres" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.strengthen.name]) @@ -38,7 +38,7 @@ class TestSurrealBoss: assert_eq(advanced_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 0, "%s not gained %s due to damage being in normal range" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.strengthen.name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(advanced_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 0, "%s not gained %s due stress being taken" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.strengthen.name]) @@ -56,7 +56,7 @@ class TestNarcissus: func test_surreal_has_poison_at_low_anxiety(): # warning-ignore:return_value_discarded turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_gt(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.poison.name), 0, "%s inflicted %s due player having low anxiety" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.poison.name]) @@ -65,7 +65,7 @@ class TestNarcissus: advanced_torment.intents.prepare_intents(0) # warning-ignore:return_value_discarded turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_gt(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.drain.name), 0, "%s inflicted %s due player having hight anxiety" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.drain.name]) @@ -87,7 +87,7 @@ class TestFearAndPhobia: # warning-ignore:return_value_discarded watch_signals(dreamer) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_signal_emit_count(dreamer, "entity_attacked", 4) assert_eq(get_filtered_cards('Name', "Scattered Dreams").size(), 1) for t in advanced_torments: @@ -101,7 +101,7 @@ class TestFearAndPhobia: # warning-ignore:return_value_discarded watch_signals(dreamer) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_signal_emit_count(dreamer, "entity_attacked", 1) assert_eq(get_filtered_cards('Name', "Scattered Dreams").size(), 0) for t in advanced_torments: diff --git a/tests/integration/ordeal/test_effects_buffs.gd b/tests/integration/ordeal/test_effects_buffs.gd index 4259f7aa..2a9d3e53 100644 --- a/tests/integration/ordeal/test_effects_buffs.gd +++ b/tests/integration/ordeal/test_effects_buffs.gd @@ -81,7 +81,7 @@ class TestAdvantage: for intent in intents: assert_eq(intent.signifier_amount.text, '6', "%s Stress intent hitting should be doubled" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 18, "%s doubled stress" % [effect]) assert_eq(test_torment.active_effects.get_effect_stacks(effect), 1) @@ -105,14 +105,14 @@ class TestBuffer: func test_buffer_general(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, "Dreamer should not have used delayed %s stacks" % [effect]) assert_eq(counters.counters.immersion, 3, "Dreamer's energy not increased") assert_eq(cfc.NMAP.board.turn.turn_event_count.get("buffer_immersion_gained", 0), 0, "Not increased due to Delayed") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 0, "Dreamer should have already used %s stacks" % [effect]) assert_eq(counters.counters.immersion, 7, @@ -159,7 +159,7 @@ class TestEmpower: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, effect + " stacks don't reduce on use") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 3, "%s stacks should reduce" % [effect]) @@ -187,7 +187,7 @@ class TestFortify: func test_fortify_general(): dreamer.defence = 30 turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), int(floor(amount / 2.0)), "Dreamer should have used half %s stacks" % [effect]) assert_eq(dreamer.defence, 30, @@ -196,11 +196,11 @@ class TestFortify: func test_fortify_end_turn(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 1, "Dreamer should have used half %s stacks" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 0, "Dreamer should have used half %s stacks to go to 0" % [effect]) @@ -239,7 +239,7 @@ class TestImpervious: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, "%s stacks not modified by own attacks" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), amount / 2, "Stacks %s should be halved" % [effect]) @@ -272,7 +272,7 @@ class TestImpervious: spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.poison.name, 5, '') spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.burn.name, 5, '') turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 10, "%s doesn't stop DoTs" % [effect]) @@ -310,7 +310,7 @@ class TestImpervious: else: assert_eq(intents[iindex].signifier_amount.text, '4', "Stress intent should be 4") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 4 * 5 + 3 + 2 + 1 + 1, "%s prevented stress" % [effect]) @@ -348,7 +348,7 @@ class TestThorns: test_torment.intents.replace_intents(intents_to_test) test_torment.intents.refresh_intents() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.damage, starting_torment_dgm + expected_thorns_dmg, "%s caused %s stress" % [effect, expected_thorns_dmg]) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 5, @@ -391,7 +391,7 @@ class TestThorns: test_torment.intents.replace_intents(intents_to_test) test_torment.intents.refresh_intents() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) if is_instance_valid(test_torment): assert_true(test_torment.is_dead, "Test torment dies due to thorns") assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.disempower.name), 0, @@ -448,7 +448,7 @@ class TestArmor: remaining_armor = 0 assert_eq(intent.signifier_amount.text, str(9 - remaining_armor), "Intent DMG hitting %s should be reduced by %s" % [effect, remaining_armor]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, expected_armor_dmg, "%s prevented %s stress" % [effect, expected_armor_dmg]) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 1, @@ -534,14 +534,14 @@ class TestArmor: spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.poison.name, 5, '') spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.burn.name, 5, '') turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 10, "%s doesn't stop DoTs" % [effect]) func test_armor_turn_reduction(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), amount - 2, "%s should have reduced extra due to amount on dreamer" % [effect]) @@ -626,7 +626,7 @@ class TestProtection: func test_protection_end_turn(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), amount, "%s stacks do not reduce at turn end" % [effect]) turn.call_deferred("end_player_turn") diff --git a/tests/integration/ordeal/test_effects_debuffs.gd b/tests/integration/ordeal/test_effects_debuffs.gd index 0e55fe01..1f992098 100644 --- a/tests/integration/ordeal/test_effects_debuffs.gd +++ b/tests/integration/ordeal/test_effects_debuffs.gd @@ -20,7 +20,7 @@ class TestDrain: func test_drain_general(): turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 0, "Dreamer should have already used %s stacks" % [effect]) assert_eq(counters.counters.immersion, 1, @@ -68,7 +68,7 @@ class TestDisempower: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, effect + " stacks don't reduce on use") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 3, "%s stacks should reduce" % [effect]) @@ -97,7 +97,7 @@ class TestPoison: func test_poison_general(): dreamer.defence = 10 turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 3, "%s stacks decreased by 1" % [effect]) assert_eq(dreamer.damage, 4, @@ -118,7 +118,7 @@ class TestPoison: test_torment.intents.replace_intents(intents_to_test) test_torment.intents.refresh_intents() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) if is_instance_valid(test_torment): assert_true(test_torment.is_dead, "test torment died from %s" % [effect]) assert_eq(test_torments[0].damage, starting_torment_dgm + 12, @@ -133,7 +133,7 @@ class TestPoison: spawn_effect(dreamer, effect, 100, '') watch_signals(globals.player.pathos) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, dreamer.health - 1, "%s left the dreamer at 1 HP" % [effect]) assert_eq(globals.player.pathos.available_masteries, 4, @@ -158,7 +158,7 @@ class TestBurn: func test_burn_general(): dreamer.defence = 10 turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 13, "%s stacks decreased by 1" % [effect]) assert_eq(dreamer.damage, 4, @@ -177,7 +177,7 @@ class TestBurn: test_torment.intents.replace_intents(intents_to_test) test_torment.intents.refresh_intents() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) if is_instance_valid(test_torment): assert_true(test_torment.is_dead, "test torment died from %s" % [effect]) assert_eq(test_torments[0].damage, starting_torment_dgm + 12, @@ -208,7 +208,7 @@ class TestVulnerable: func test_vulnerable_general(): # We're testing it delayed to make sure the delayed is removed as well turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) card._start_dragging(Vector2(card.global_position)) yield(yield_to(get_tree(), "idle_frame", 0.1), YIELD) assert_eq(dreamer.incoming.get_child_count(), 1, @@ -227,7 +227,7 @@ class TestVulnerable: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, effect + " stacks don't reduce on use") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 3, "%s stacks should reduce" % [effect]) @@ -250,7 +250,7 @@ class TestVulnerable: else: assert_eq(intents[iindex].signifier_amount.text, str(int(round(8*0.75))), "Perplex intent with %s should be decreated" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.defence, int(round(5*0.75)) + int(round(8*0.75)), "%s decreated perplexity" % [effect]) @@ -288,7 +288,7 @@ class TestMarked: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, "%s stacks not modified by own attacks" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), 2, "Dreamer should halved stack %s" % [effect]) @@ -321,7 +321,7 @@ class TestMarked: spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.poison.name, 5, '') spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.burn.name, 5, '') turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 10, "%s doesn't increase DoTs" % [effect]) @@ -358,7 +358,7 @@ class TestMarked: else: assert_eq(intents[iindex].signifier_amount.text, '4', "Stress intent should be 4") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 4 * 5 + 7 + 7 + 6 + 5, "%s increased stress" % [effect]) diff --git a/tests/integration/ordeal/test_effects_special.gd b/tests/integration/ordeal/test_effects_special.gd index f4e50b5b..e45f9982 100644 --- a/tests/integration/ordeal/test_effects_special.gd +++ b/tests/integration/ordeal/test_effects_special.gd @@ -85,13 +85,13 @@ class TestSelfCleaning: func test_self_cleaning(): board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.poison.name), 5 - amount, "%s reduced %s" % [effect, Terms.ACTIVE_EFFECTS.poison.name]) assert_eq(abs(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name)), 4, "%s did not reduce %s" % [effect, Terms.ACTIVE_EFFECTS.disempower.name]) board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(abs(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name)), 4 - amount, "%s reduced %s" % [effect, Terms.ACTIVE_EFFECTS.strengthen.name]) assert_eq(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.poison.name), 4 - amount, @@ -285,10 +285,10 @@ class TestDoom: return watch_signals(test_torment) board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_signal_not_emitted(test_torment, "entity_killed") board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_signal_emitted(test_torment, "entity_killed") yield(yield_to(ce, 'encounter_end', 5), YIELD) journal.card_draft.display("card_draft") @@ -396,7 +396,7 @@ class TestActLength: spawn_effect(test_torment, Terms.ACTIVE_EFFECTS.poison.name, 5, '') spawn_effect(test_torment, Terms.ACTIVE_EFFECTS.burn.name, 5, '') board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.damage, tdamage(2), "%s stops DoTs" % [effect]) @@ -405,7 +405,7 @@ class TestActLength: spawn_effect(test_torment, Terms.ACTIVE_EFFECTS.disempower.name, 1, '') spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.rubber_eggs.name, 1, '') board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.damage, tdamage(1), "%s stops Rubber Eggs" % [effect]) @@ -413,7 +413,7 @@ class TestActLength: spawn_effect(test_torment, effect, 1, '') watch_signals(test_torment) board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_signal_emitted(test_torment, "entity_killed") @@ -461,7 +461,7 @@ class TestCheekPinching: assert_eq(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 1, "%s added %s" % [effect, Terms.ACTIVE_EFFECTS.poison.name]) board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.defence, 0) assert_eq(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 1, "%s added %s" % [effect, Terms.ACTIVE_EFFECTS.poison.name]) @@ -494,7 +494,7 @@ class TestVictim: assert_eq(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), -1, "%s added %s" % [effect, Terms.ACTIVE_EFFECTS.the_victim.name]) board.turn.call_deferred("end_player_turn") - yield(yield_to(board.turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.strengthen.name), 0, "%s removed %s" % [effect, Terms.ACTIVE_EFFECTS.the_victim.name]) assert_eq(dreamer.damage, 9, "Dreamer took reduced damage due to %s" % [effect]) diff --git a/tests/integration/ordeal/test_effects_versatile.gd b/tests/integration/ordeal/test_effects_versatile.gd index c01e4668..a1dfc39a 100644 --- a/tests/integration/ordeal/test_effects_versatile.gd +++ b/tests/integration/ordeal/test_effects_versatile.gd @@ -31,7 +31,7 @@ class TestStrengthen: assert_eq(dreamer.active_effects.get_effect_stacks(effect), 4, "%s stacks not modified" % [effect]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), amount, "Stacks %s not reduced" % [effect]) @@ -52,7 +52,7 @@ class TestStrengthen: for iindex in range(intents.size()): assert_eq(intents[iindex].signifier_amount.text, "10", "Stress intent should be 10") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 10 * 3, "%s increased stress" % [effect]) @@ -73,7 +73,7 @@ class TestStrengthen: for iindex in range(intents.size()): assert_eq(intents[iindex].signifier_amount.text, "2", "Stress intent should be 2") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 2 * 3, "%s increased stress" % [effect]) @@ -93,7 +93,7 @@ class TestStrengthen: for iindex in range(intents.size()): assert_eq(intents[iindex].signifier_amount.text, "0", "Stress intent should be 0") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 0, "%s at 0 did not increase stress" % [effect]) @@ -129,7 +129,7 @@ class TestQuicken: "%s stacks not modified" % [effect]) assert_eq(dreamer.defence, 5 + amount) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect), amount, "Stacks %s not reduced" % [effect]) @@ -150,7 +150,7 @@ class TestQuicken: for iindex in range(intents.size()): assert_eq(intents[iindex].signifier_amount.text, "10", "Perplex intent should be 10") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.defence, 10 * 3, "%s increased perplex" % [effect]) @@ -171,7 +171,7 @@ class TestQuicken: for iindex in range(intents.size()): assert_eq(intents[iindex].signifier_amount.text, "2", "Perplex intent should be 2") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.defence, 2 * 3, "%s increased perplex" % [effect]) @@ -191,7 +191,7 @@ class TestQuicken: for iindex in range(intents.size()): assert_eq(intents[iindex].signifier_amount.text, "0", "Perplex intent should be 0") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.defence, 0, "%s at 0 did not increase perplex" % [effect]) diff --git a/tests/integration/ordeal/test_elites.gd b/tests/integration/ordeal/test_elites.gd index 7a99eddb..01ff5fa0 100644 --- a/tests/integration/ordeal/test_elites.gd +++ b/tests/integration/ordeal/test_elites.gd @@ -15,7 +15,7 @@ class TestBully: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq( get_tree().get_nodes_in_group("MinionEnemyEntities").size(), 2, "All Buddies Summoned") func test_spawn_less_buddies_on_partial_block(): @@ -23,7 +23,7 @@ class TestBully: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq( get_tree().get_nodes_in_group("MinionEnemyEntities").size(), 1, "Partial Buddies Summoned") func test_spawn_no_buddies_on_full_block(): @@ -31,7 +31,7 @@ class TestBully: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(1) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq( get_tree().get_nodes_in_group("MinionEnemyEntities").size(), 0, "No Buddies Summoned") class TestIndescribableAbsurdity: @@ -51,7 +51,7 @@ class TestIndescribableAbsurdity: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(0) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) var total_stacks := 0 for effect in dreamer.active_effects.get_all_effects_nodes(): assert_has(Terms.get_all_effect_types("Debuff"), effect.canonical_name) @@ -71,7 +71,7 @@ class TestIndescribableAbsurdity: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(2) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) var total_stacks := 0 for effect in advanced_torment.active_effects.get_all_effects_nodes(): if effect.canonical_name == "Self Cleaning": continue @@ -93,7 +93,7 @@ class TestIndescribableAbsurdity: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(4) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) var total_stacks := 0 for effect in dreamer.active_effects.get_all_effects_nodes(): total_stacks += abs(effect.stacks) @@ -110,7 +110,7 @@ class TestIndescribableAbsurdity: # warning-ignore:return_value_discarded advanced_torment.intents.prepare_intents(4) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 4 * 5, "Dreamer took the expected amount of damage") assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.quicken.name), -3, "%s not dispelled negative %s" % [advanced_torment.canonical_name, Terms.ACTIVE_EFFECTS.quicken.name]) @@ -130,12 +130,12 @@ class TestTheatrePlay: # warning-ignore:return_value_discarded assert_eq(get_tree().get_nodes_in_group("MinionEnemyEntities").size(), 2, "All Acts Summoned") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_ne(dreamer.damage, 0, "Initial intent is always Stage Fright") assert_eq(count_card_names("Lacuna"), 2, "Initial intent is always Stage Fright") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(count_card_names("Lacuna"), 2, "Stage Fright not used twice in a row") @@ -145,5 +145,5 @@ class TestTheatrePlay: yield(yield_for(1.1), YIELD) advanced_torment.intents.prepare_intents() turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq( get_tree().get_nodes_in_group("MinionEnemyEntities").size(), 2, "Acts Respawned") diff --git a/tests/integration/ordeal/test_functional_card_tags.gd b/tests/integration/ordeal/test_functional_card_tags.gd index d178dad8..bc57799e 100644 --- a/tests/integration/ordeal/test_functional_card_tags.gd +++ b/tests/integration/ordeal/test_functional_card_tags.gd @@ -22,7 +22,7 @@ class TestTags: assert_true(hand.has_card(alpha2.card_object), "Alpha cards should start in hand") assert_eq(deck.get_bottom_card(), omega1.card_object, "Omega cards should start at the deck bottom") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started", 3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 3), YIELD) assert_true(hand.has_card(alpha1.card_object), "Frozen cards should stay in hand") assert_eq(hand.get_card_count(), 6, "Hand refill ignores frozen cards") diff --git a/tests/integration/ordeal/test_fusion.gd b/tests/integration/ordeal/test_fusion.gd index d0414863..8938d34a 100644 --- a/tests/integration/ordeal/test_fusion.gd +++ b/tests/integration/ordeal/test_fusion.gd @@ -8,24 +8,24 @@ class TestNormalFusion: for iter in 4: add_single_card('Cannon', deck) turn.call_deferred("end_player_turn") - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn yield(yield_for(1), YIELD) assert_true(hand.has_card_name("HiCannon"), "Cards should fuse") assert_eq(hand.get_card_count(), 2, "Old cards removed") - assert_signal_emit_count(hand, "cards_fused", 2) + assert_signal_emit_count(scripting_bus, "cards_fused", 2) func test_upgraded_fusion(): watch_signals(hand) for iter in 4: add_single_card('+ Cannon +', deck) turn.call_deferred("end_player_turn") - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn yield(yield_for(1), YIELD) assert_true(hand.has_card_name("+ HiCannon +"), "Cards should fuse to upgraded version") assert_eq(hand.get_card_count(), 2, "Old cards removed") - assert_signal_emit_count(hand, "cards_fused", 2) + assert_signal_emit_count(scripting_bus, "cards_fused", 2) func test_half_upgraded_fusion(): watch_signals(hand) @@ -34,12 +34,12 @@ class TestNormalFusion: for iter in 1: add_single_card('+ Cannon +', deck) turn.call_deferred("end_player_turn") - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn yield(yield_for(1), YIELD) assert_true(hand.has_card_name("HiCannon"), "Cards should fuse to normal version") assert_eq(hand.get_card_count(), 1, "Old cards removed") - assert_signal_emit_count(hand, "cards_fused", 1) + assert_signal_emit_count(scripting_bus, "cards_fused", 1) class TestUniversalComponent: extends "res://tests/HUT_Ordeal_GenericTestClass.gd" @@ -53,28 +53,28 @@ class TestUniversalComponent: add_single_card('Cannon', deck) add_single_card('Universal Component', deck) turn.call_deferred("end_player_turn") - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn yield(yield_for(1), YIELD) assert_true(hand.has_card_name("HiCannon"), "Cards should fuse") assert_eq(hand.get_card_count(), 4, "Old cards removed") assert_eq(counters.get_counter("immersion"), 4, "Immersion increased by Universal Component") - assert_signal_emit_count(hand, "cards_fused", 2) + assert_signal_emit_count(scripting_bus, "cards_fused", 2) func test_double_uc(): watch_signals(hand) for iter in 2: add_single_card('Universal Component', deck) turn.call_deferred("end_player_turn") - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn yield(yield_for(1), YIELD) assert_true(hand.has_card_name("Fusion Grenade"), "Cards should fuse") assert_eq(hand.get_card_count(), 6, "Old cards removed") assert_eq(counters.get_counter("immersion"), 5, "Immersion increased by Universal Component") - assert_signal_emit_count(hand, "cards_fused", 1) + assert_signal_emit_count(scripting_bus, "cards_fused", 1) func test_single_uc_drawn_during_turn(): watch_signals(hand) @@ -82,13 +82,13 @@ class TestUniversalComponent: add_single_card('Cannon', hand) add_single_card('Universal Component', deck) hand.draw_card() - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn assert_true(hand.has_card_name("HiCannon"), "Cards should fuse") assert_eq(hand.get_card_count(), 2, "Old cards removed") assert_eq(counters.get_counter("immersion"), 4, "Immersion increased by Universal Component") - assert_signal_emit_count(hand, "cards_fused", 1) + assert_signal_emit_count(scripting_bus, "cards_fused", 1) func test_upgraded_uc_drawn_during_turn(): watch_signals(hand) @@ -96,19 +96,19 @@ class TestUniversalComponent: add_single_card('Photon Shield', hand) add_single_card('! Universal Component !', deck) hand.draw_card() - yield(yield_to(hand, "cards_fused", 3), YIELD) + yield(yield_to(scripting_bus, "cards_fused", 3), YIELD) # Wait one more sec to allow cards to despawn assert_true(hand.has_card_name("Lumen Shield"), "Cards should fuse") assert_eq(hand.get_card_count(), 4, "Old cards removed") assert_eq(counters.get_counter("immersion"), 4, "Immersion increased by Universal Component") - assert_signal_emit_count(hand, "cards_fused", 1) + assert_signal_emit_count(scripting_bus, "cards_fused", 1) func test_single_uc_with_normal_cards(): watch_signals(hand) add_single_card('Universal Component', deck) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) # Wait one more sec to allow cards to despawn yield(yield_for(1), YIELD) - assert_signal_not_emitted(hand,"cards_fused") + assert_signal_not_emitted(scripting_bus, "cards_fused") diff --git a/tests/integration/ordeal/test_intent_scripts.gd b/tests/integration/ordeal/test_intent_scripts.gd index fcf5ee58..b6f2c2b7 100644 --- a/tests/integration/ordeal/test_intent_scripts.gd +++ b/tests/integration/ordeal/test_intent_scripts.gd @@ -232,7 +232,7 @@ class TestDishearten: assert_eq(globals.player.pathos.available_masteries, Pathos.STARTING_MASTERIES - 2, "Available masteries should decrease") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(globals.player.pathos.available_masteries, Pathos.STARTING_MASTERIES - 4, "Available masteries should decrease") @@ -320,7 +320,7 @@ class TestIncreaseComplexity: assert_eq(test_torment.damage, 20, "Torment should heal damage") dreamer.defence = 5 turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 15, "Dreamer should take less damage") assert_eq(test_torment.damage, 15, "Torment should heal less damage") @@ -356,7 +356,7 @@ class TestArmorTheBoss: torment.intents.refresh_intents() var boss_torment = board.spawn_enemy(EnemyDefinitions.ADMINISTRATION) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) # Boss loses 1 armor stack at the start of its turn assert_eq(boss_torment.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.armor.name), 2, "Boss torment got expected amount of armor") @@ -395,7 +395,7 @@ class TestAwkwardCompliments: test_torment.intents.refresh_intents() TurnEventMessage.new("new_turn", 3) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(dreamer.damage, 3 * 6, "Dreamer should take damage") class TestCheckBrowserHistory: @@ -426,7 +426,7 @@ class TestCheckBrowserHistory: yield(yield_for(0.2), YIELD) assert_eq(dreamer.incoming_dmg_signifier.signifier_amount.text, str(2)) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(dreamer.damage, dmg + 2, "Dreamer should take a bit of damage") assert_eq(test_torments[0].health, t_health[test_torments[0]] + 10, "First Torment should increase its health") assert_eq(test_torments[1].health, t_health[test_torments[1]], "Second Torment should not increase its health") @@ -453,7 +453,7 @@ class TestCheckUnderwearDrawer: spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.quicken.name, 4, '') yield(yield_for(0.2), YIELD) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.fortify.name), 0) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.quicken.name), 2) assert_eq(test_torments[0].active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.quicken.name), 0) diff --git a/tests/integration/ordeal/test_ordeal_artifacts.gd b/tests/integration/ordeal/test_ordeal_artifacts.gd index 27a41e25..6173e2d5 100644 --- a/tests/integration/ordeal/test_ordeal_artifacts.gd +++ b/tests/integration/ordeal/test_ordeal_artifacts.gd @@ -26,7 +26,7 @@ class TestThickImmersion: "%s gives %s when deck shuffled" % [artifact.name, Terms.ACTIVE_EFFECTS.vulnerable.name]) assert_true(artifact.is_active, "Artifact should be disabled after shuffling") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(board.counters.get_counter("immersion"), 3) assert_eq(turn.encounter_event_count.get("immersion_increased",0 ), 0, "Turn Start immersion should not counted as being gained during the turn") @@ -49,7 +49,7 @@ class TestThickStrength: get_amount("effect_stacks"), "%s gives %s first turn" % [artifact.name, effect_name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect_name), get_amount("effect_stacks") * 2, "%s gives %s every turn" % [artifact.name, effect_name]) @@ -472,10 +472,10 @@ class TestImproveFortify: var modification = 5 spawn_effect(dreamer, effect_name, modification) turn.call("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.armor.name), - modification - modification/2, - "%s also added same amount of %s stacks" % [artifact.name, Terms.ACTIVE_EFFECTS.armor.name]) + 2 * (modification - modification/2), + "%s also added double the amount of %s stacks" % [artifact.name, Terms.ACTIVE_EFFECTS.armor.name]) class TestRedWave: extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" @@ -508,7 +508,7 @@ class TestRedWave: cards.append("Interpretation") setup_test_cards(cards) board.call_deferred("begin_encounter") - yield(yield_to(turn, "player_turn_started", 1), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 1), YIELD) assert_signal_not_emitted(artifact, "artifact_triggered") assert_eq(dreamer.defence, 0, "%s did not add defence due to not hitting threshold" % [artifact.name]) @@ -548,7 +548,7 @@ class TestBlueWave: cards.append("Confidence") setup_test_cards(cards) board.call_deferred("begin_encounter") - yield(yield_to(turn, "player_turn_started", 1), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 1), YIELD) assert_signal_not_emitted(artifact, "artifact_triggered") for t in test_torments: assert_eq(t.damage, tdamage(0), @@ -586,7 +586,7 @@ class TestPurpleWave: cards.append("Gaslighter") setup_test_cards(cards) board.call_deferred("begin_encounter") - yield(yield_to(turn, "player_turn_started", 1), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 1), YIELD) assert_signal_not_emitted(artifact, "artifact_triggered") assert_eq(dreamer.damage, dreamer_starting_damage, "%s did not heale dreamer due to not hitting threshold" % [artifact.name]) @@ -607,7 +607,7 @@ class TestProgressiveImmersion: assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.creative_block.name), 1, "%s prevents all card upgrades" % [artifact.name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion per turn") class TestBossCardDraw: @@ -626,7 +626,7 @@ class TestBossCardDraw: return assert_eq(hand.get_card_count(), 6, "Dreamer gets +1 card on first turn") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(hand.get_card_count(), 6, "Dreamer gets +1 card per turn") class TestRandomUpgrades: @@ -643,7 +643,7 @@ class TestRandomUpgrades: return assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion on first turn") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion per turn") @@ -690,7 +690,7 @@ class TestNoRest: return assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion on first turn") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion per turn") @@ -708,7 +708,7 @@ class TestSmallerDrafts: return assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion on first turn") turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion per turn") class TestConstantImpervious: @@ -727,7 +727,7 @@ class TestConstantImpervious: get_amount("effect_stacks"), "%s gives Dreamer +1 %s on first turn" % [artifact.name, Terms.ACTIVE_EFFECTS.impervious.name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.impervious.name), get_amount("effect_stacks"), "%s gives Dreamer +1 %s on every turn" % [artifact.name, Terms.ACTIVE_EFFECTS.impervious.name]) @@ -750,13 +750,13 @@ class TestThickHeal: return assert_eq(dreamer.damage, 9) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 8) deck.shuffle_cards() yield(yield_to(deck, "shuffle_completed", 0.5), YIELD) assert_eq(dreamer.damage, 11) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.damage, 10) @@ -805,7 +805,7 @@ class TestLightningMarble: if not assert_has_amounts(): return turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(test_torment.damage, tdamage(dmg), "Torment Damaged at end of turn") class TestLimitMaxExert: @@ -866,17 +866,17 @@ class TestThickThorns: get_amount("effect_stacks"), "%s gives %s first turn" % [artifact.name, effect_name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect_name), get_amount("effect_stacks") * 2 - 1, "%s gives %s every turn" % [artifact.name, effect_name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect_name), get_amount("effect_stacks") * 3 - 2, "%s gives %s every turn" % [artifact.name, effect_name]) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(effect_name), get_amount("effect_stacks") * 4 - 3, "%s gives %s every turn" % [artifact.name, effect_name]) @@ -913,3 +913,209 @@ class TestSavedForgets: yield(yield_to(artifact, "artifact_triggered", 0.2), YIELD) assert_eq(cards[1].get_parent(), forgotten) assert_signal_emit_count(artifact, "artifact_triggered", 1) + + +class TestStartupDraw: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.StartupDraw.canonical_name + expected_amount_keys = [ + "draw_amount", + ] + test_card_names = [ + "GUT", + "GUT", + ] + globals.test_flags["test_initial_hand"] = true + + func test_artifact_effect(): + if not assert_has_amounts(): + return + for c in cards: + var tcard: DreamCard = c + tcard.modify_property('Tags', Terms.GENERIC_TAGS.startup.name) + tcard.execute_scripts() + yield(yield_to(artifact, "artifact_triggered", 0.2), YIELD) + yield(yield_to(artifact, "artifact_triggered", 0.2), YIELD) + assert_eq(hand.get_card_count(), get_amount("draw_amount") * cards.size(), "Each played startup draws a card") + assert_signal_emit_count(artifact, "artifact_triggered", 2) + +class TestRandomForgottenCards: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.RandomForgottenCards.canonical_name + expected_amount_keys = [ + "card_amount", + ] + test_card_names = [ + "GUT", + "Exhaustion", + "GUT", + ] + + func test_artifact_effect(): + if not assert_has_amounts(): + return + card.scripts = FORGET_CARD_SCRIPT + card.execute_scripts() + yield(yield_to(hand, "card_added", 1), YIELD) + assert_eq(hand.get_card_count(), get_amount("card_amount") + 2, "Each forgotten card generates a card") + cards[1].execute_scripts() + yield(yield_to(scripting_bus, "player_turn_started",3), YIELD) + cards[2].execute_scripts() + yield(yield_to(hand, "card_added", 3), YIELD) + assert_signal_emit_count(artifact, "artifact_triggered", 2) + assert_eq(hand.get_card_count(), get_amount("card_amount") * 2, "Each forgotten card generates a card") + + +class TestConstantMark: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.ConstantMark.canonical_name + expected_amount_keys = [ + "effect_stacks", + ] + torments_amount = 3 + + func test_artifact_effect(): + if not assert_has_amounts(): + return + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + var marked_count := 0 + for t in test_torments: + marked_count += t.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.marked.name) + assert_eq(marked_count, 1) + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + marked_count = 0 + for t in test_torments: + marked_count += t.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.marked.name) + assert_eq(marked_count, 1) + + +class TestImproveArmor: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.ImproveArmor.canonical_name + expected_amount_keys = [ + "threshold_amount", + ] + + func test_artifact_effect(): + if not assert_has_amounts(): + return + spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.armor.name, 2) + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.armor.name), 2) + spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.armor.name, 4) + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.armor.name), 5) + + +class TestSwiftPerturbations: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + globals.test_flags["test_initial_hand"] = true + testing_artifact_name = ArtifactDefinitions.SwiftPerturbations.canonical_name + expected_amount_keys = [ + "draw_amount", + ] + + func test_artifact_effect(): + if not assert_has_amounts(): + return + add_single_card("Lacuna", deck) + add_single_card("Lacuna", deck) + hand.draw_card() + yield(yield_to(hand, "card_drawn", 1), YIELD) + assert_eq(hand.get_card_count(), 3) + + +class TestBufferedSpawns: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.BufferedSpawns.canonical_name + expected_amount_keys = [ + "effect_stacks", + ] + test_card_names = [ + 'GUT', + ] + + func test_artifact_effect(): + if not assert_has_amounts(): + return + card.scripts = SPAWN_CARD_SCRIPT + var sceng = execute_with_yield(card) + if sceng is GDScriptFunctionState: + sceng = yield(sceng, "completed") + yield(yield_to(artifact, "artifact_triggered", 2), YIELD) + assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.buffer.name), + get_amount("effect_stacks"), + "%s does not gives %s when non-perturbation card spawned" % [artifact.name, Terms.ACTIVE_EFFECTS.buffer.name]) + + +class TestBossExert: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.BossExert.canonical_name + pre_init_artifacts.append(testing_artifact_name) + expected_amount_keys = [ + "immersion_amount", + "exert_amount", + ] + + func test_artifact_effect(): + if not assert_has_amounts(): + return + assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion on first turn") + assert_eq(dreamer.damage, get_amount("exert_amount"), "Dreamer gets 1 anxiety on first turn") + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_eq(counters.get_counter("immersion"), 4, "Dreamer gets +1 immersion per turn") + assert_eq(dreamer.damage, get_amount("exert_amount") * 2, "Dreamer gets 1 anxiety per turn") + + +class TestBossRandomDiscount: + extends "res://tests/HUT_Ordeal_ArtifactsTestClass.gd" + func _init() -> void: + testing_artifact_name = ArtifactDefinitions.BossRandomDiscount.canonical_name + pre_init_artifacts.append(testing_artifact_name) + expected_amount_keys = [ + "immersion_amount", + ] + test_card_names = [ + 'Confidence', + 'GUT', + 'Confrontation', + 'Lacuna', + ] + + func test_artifact_effect(): + if not assert_has_amounts(): + return + + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_signal_emit_count(scripting_bus, "card_properties_modified", 1) + var comp_dict = { + "immersion_amount": 3, + "new_property_value": "-1", + "previous_property_value": 1, + "property_name": "Cost", + "tags": ["Scripted", "Curio"], + } + assert_signal_emitted_with_parameters(scripting_bus, "card_properties_modified", [card,comp_dict]) + assert_eq(card.get_property('Cost'), 0, "Card's Cost reduced to 0") + var sceng = execute_with_yield(card) + if sceng is GDScriptFunctionState: + sceng = yield(sceng, "completed") + yield(yield_to(scripting_bus,"card_properties_modified", 1), YIELD) + assert_eq(card.get_property('Cost'), 1, "Card's Cost reset") + assert_signal_emit_count(scripting_bus, "card_properties_modified", 2) + turn.call_deferred("end_player_turn") + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) + assert_signal_emit_count(scripting_bus, "card_properties_modified", 3) diff --git a/tests/integration/ordeal/test_ordeal_generic.gd b/tests/integration/ordeal/test_ordeal_generic.gd index f2ba162a..559bbf05 100644 --- a/tests/integration/ordeal/test_ordeal_generic.gd +++ b/tests/integration/ordeal/test_ordeal_generic.gd @@ -29,12 +29,11 @@ class TestInit: assert_connected(dreamer, player_info.health_icon, "entity_healed", "_on_player_health_changed") assert_connected(dreamer, player_info.health_icon, "entity_health_modified", "_on_player_health_changed") for turn_signal in turn.ALL_SIGNALS: - assert_connected(turn, board, turn_signal, "_on_" + turn_signal) - assert_connected(turn, cfc.signal_propagator, turn_signal, "_on_signal_received") + assert_connected(scripting_bus, board, turn_signal, "_on_" + turn_signal) for obj in [counters, hand]: for turn_signal in turn.PLAYER_SIGNALS: # warning-ignore:return_value_discarded - assert_connected(turn, obj, turn_signal, "_on_" + turn_signal) + assert_connected(scripting_bus, obj, turn_signal, "_on_" + turn_signal) class TestGeneric: @@ -81,9 +80,8 @@ class TestRounds: assert_true(board.end_turn.disabled, "End Turn Button Enabled") assert_signal_emitted(hand, "hand_emptied") assert_signal_emitted(hand, "hand_refilled") -# yield(yield_to(turn, "enemy_turn_started", 0.5), YIELD) assert_eq(test_torment.defence, 0, "Torment Defense clears up at start of turn") - yield(yield_to(turn, "player_turn_started", 3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 3), YIELD) assert_eq(dreamer.defence, 0, "Dreamer Defense clears up at start of turn") assert_eq(counters.get_counter("immersion"), 3, "Dreamer starts each turn with 3 immersion") assert_false(board.end_turn.disabled, "End Turn Button Enabled") @@ -92,7 +90,7 @@ class TestRounds: assert_eq(deck.get_card_count(), 2, "Cards taken from deck") assert_eq(forgotten.get_card_count(), 0, "Nothing automatically forgotten") for turn_signal in turn.ALL_SIGNALS: - assert_signal_emitted(turn, turn_signal, "All turn signals emited") + assert_signal_emitted(scripting_bus, turn_signal, "All turn signals emited") assert_eq(turn.current_turn, turn.Turns.PLAYER_TURN, "Turn returns on player's") for t in test_torments: assert_signal_emit_count(t, "started_activation", 1) @@ -224,7 +222,7 @@ class TestTorments: test_torments[i].health = 34 spawn_effect(dreamer, Terms.ACTIVE_EFFECTS.thorns.name, 15) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started", 3), YIELD) + yield(yield_to(scripting_bus, "player_turn_started", 3), YIELD) assert_eq(turn.current_turn, turn.Turns.PLAYER_TURN, "Turn back to the player") assert_eq(counters.get_counter("immersion"), 3, "Dreamer starts with 3 immersion") assert_false(board.end_turn.disabled, "End Turn Button Enabled") diff --git a/tests/integration/ordeal/test_ordeal_start_artifacts.gd b/tests/integration/ordeal/test_ordeal_start_artifacts.gd index eaf7f0c8..eb699d90 100644 --- a/tests/integration/ordeal/test_ordeal_start_artifacts.gd +++ b/tests/integration/ordeal/test_ordeal_start_artifacts.gd @@ -129,7 +129,7 @@ class TestStartingConfidence: return assert_eq(dreamer.defence, get_amount("defence_amount")) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.defence, 0, "no extra defence on next turn") class TestPerturbationHeal: @@ -301,7 +301,7 @@ class TestStartingFortify: return assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.fortify.name), get_amount("effect_stacks")) turn.call_deferred("end_player_turn") - yield(yield_to(turn, "player_turn_started",3 ), YIELD) + yield(yield_to(scripting_bus, "player_turn_started",3 ), YIELD) assert_eq(dreamer.active_effects.get_effect_stacks(Terms.ACTIVE_EFFECTS.fortify.name), 0)