Compare commits

..

109 Commits

Author SHA1 Message Date
jonathan edbd4a182b 🎨Removed comment 2025-11-11 10:19:37 +01:00
jonathan f51275ccc0 made dead fighters shrink to telegraph to the player that they are dead 2025-11-04 16:42:16 +01:00
Jonathan e864c62a3a Merge pull request 'Fight rework premature merge' (#22) from feature/fight_rework into develop
Reviewed-on: #22
2025-11-04 10:25:12 +01:00
jonathan f27f69c15f 🐛 Rebase fixing 2025-11-04 10:07:29 +01:00
jonathan 21b361f9d7 🎨 Live review changes 2025-11-04 10:07:19 +01:00
jonathan 83dc6bfd56 ♻️ Implemented FightersFormation to keep track of the fight entered state of the fighters 2025-11-04 05:59:19 +01:00
jonathan 0de3bcae22 ♻️Code cleanup 2025-11-04 05:59:19 +01:00
jonathan 3326bde40c 🐛Exiting fight happening when one side wins 2025-11-04 05:59:19 +01:00
jonathan 83c9dfc945 Added theme-based region colors 2025-11-04 05:59:19 +01:00
jonathan cd235248c6 Added minigame label for each region 2025-11-04 05:59:19 +01:00
jonathan 8bb1c22549 Added minigame to attack action 2025-11-04 05:59:18 +01:00
jonathan 8624e2aea8 Added minigame 2025-11-04 05:59:18 +01:00
jonathan fef1bcc3b6 cap health at minimum 0 2025-11-04 05:59:18 +01:00
jonathan f4d8ed87e2 Added blob attack action 2025-11-04 05:59:18 +01:00
jonathan 1f227f70a7 Added basic health bar 2025-11-04 05:59:18 +01:00
jonathan 9bf25640f6 Added basic action animation 2025-11-04 05:59:18 +01:00
jonathan 0e315396c9 Made fight fightable 2025-11-04 05:59:18 +01:00
jonathan f27dd199b8 Fight happening base setup 2025-11-04 05:27:34 +01:00
jonathan fd0e631b1f Bootstrap fight system
- Fight World data structure
- Generating basic fight world
- Opening correct fight room
- Block paths in fight rooms
- Transition between rooms
2025-11-04 05:25:22 +01:00
kziolkowski 759933c1cd Merge pull request 'feature/detection_cross' (#21) from feature/detection_cross into develop
Reviewed-on: #21
2025-10-31 10:47:20 +01:00
kziolkowski af8807610d :bug increased interaction area size for fence gates 2025-10-29 16:25:31 +01:00
kziolkowski 02b6584e44 🐛 fixed ObjectDisposedException from the Inventory when switching scenes. 2025-10-29 16:03:36 +01:00
kziolkowski e202534c6b 🐛 Vesnas Namensschild sieht nicht richtig aus FIXED 2025-10-29 15:00:30 +01:00
kziolkowski 1f13f3ea51 Merge branch 'develop' into feature/detection_cross
# Conflicts:
#	addons/dialogic/vesna_style.tres
#	dialog/NPC_narrative.tres
#	scenes/Babushka_scene_indoor_vesnas_room.tscn
2025-10-29 14:01:55 +01:00
kziolkowski 8b7afbcab6 Merge remote-tracking branch 'origin/feature/detection_cross' into feature/detection_cross 2025-10-29 13:32:57 +01:00
Jonathan afce4ad0b9 Merge pull request 'feature/events' (#19) from feature/events into develop
Reviewed-on: #19
2025-10-28 21:12:45 +01:00
kziolkowski 32ac007256 🎨 Exchanged Quest post it with ui sprite 2025-10-28 17:32:18 +01:00
kziolkowski d45deeb7ed 🔧 adjusted seed pickup positions and indoor collider sizes 2025-10-28 17:32:18 +01:00
kziolkowski 9e21b07271 🍱 Adjusted colliders in farm_outside scene and reactivated ground collider on Vesna 2025-10-28 17:32:18 +01:00
kziolkowski f94c2d0a50 :memo::fire:🔨
- removed a lot of unnecessary code
- Made a minimal working version
- Added documentation
2025-10-28 17:32:18 +01:00
kziolkowski 84b8938d1f 🚧 WIP first setup completed (still buggy!) 2025-10-28 17:32:18 +01:00
kziolkowski 8d421b58ec Implemented dialogue box design as described in mockups 2025-10-28 17:32:18 +01:00
kziolkowski ebe99c5f22 💄 Added new fonts and increased textbox size. Also added border line. 2025-10-28 17:32:18 +01:00
kziolkowski b32b483d09 upgraded project to 4.5 2025-10-28 17:32:18 +01:00
kziolkowski c6e9bc9336 scene updates after undoing changes to interactionArea 2025-10-28 17:32:17 +01:00
kziolkowski 5b0fed7816 sound autoimports 2025-10-28 17:31:10 +01:00
Nao 3bdd5aa873 SFX for Wolf added + redone reverb of footsteps (but not sure it worked?! - possible new upload/replacement possible) 2025-10-28 17:30:48 +01:00
kziolkowski 3fe79f2fd8 Added VariableGetter functionality and some Variable setting components. Also added them to test scene. 2025-10-28 13:09:36 +01:00
kziolkowski 8c1157c26e 🔥 removed indexed RaiseEvent-Call from EventRaiser 2025-10-28 12:04:41 +01:00
kziolkowski c96e6da78e Separated events from variables and adjusted test scene 2025-10-28 11:57:36 +01:00
kziolkowski 0fc1760b70 Merge pull request 'feature/animations_update' (#17) from feature/animations_update into develop
Reviewed-on: #17
2025-10-28 10:59:32 +01:00
kziolkowski 90b8dda16a Merge branch 'feature/dialogic_style_rework' into feature/detection_cross 2025-10-28 10:56:22 +01:00
kziolkowski ecff43d5c3 Merge branch 'develop' into feature/detection_cross 2025-10-28 10:46:02 +01:00
Jonathan 40b8c022fe Merge pull request 'feature/showcase_bugfixing_kathi_partII' (#16) from feature/showcase_bugfixing_kathi_partII into develop
Reviewed-on: #16
2025-10-24 18:31:55 +02:00
kziolkowski e1b1a2f447 🔧 adjusted seed pickup positions and indoor collider sizes 2025-10-24 15:57:14 +02:00
kziolkowski 2d4e853ec8 🍱 Adjusted colliders in farm_outside scene and reactivated ground collider on Vesna 2025-10-24 15:45:10 +02:00
kziolkowski 8f097de476 :memo::fire:🔨
- removed a lot of unnecessary code
- Made a minimal working version
- Added documentation
2025-10-24 15:13:35 +02:00
kziolkowski 109573fb1b 🎨 Exchanged Quest post it with ui sprite 2025-10-24 13:43:13 +02:00
kziolkowski 0e55394699 🚧 WIP first setup completed (still buggy!) 2025-10-22 19:30:33 +02:00
kziolkowski b1335d4b00 Merge branch 'feature/dialogic_style_rework' into feature/detection_cross 2025-10-22 14:46:55 +02:00
kziolkowski 078e26e868 Implemented dialogue box design as described in mockups 2025-10-22 14:23:48 +02:00
kziolkowski ffebe10593 💄 Added new fonts and increased textbox size. Also added border line. 2025-10-21 13:41:43 +02:00
kziolkowski 4c8406ba97 upgraded project to 4.5 2025-10-21 12:59:29 +02:00
kziolkowski 080ebaae47 removed redundant import statement 2025-10-21 12:50:48 +02:00
kziolkowski 5cf250b295 Added randomizer class for certain types of EventResources 2025-10-21 12:39:17 +02:00
kziolkowski ef56f79d5c Added event payload and Valuechange-handling 2025-10-21 12:39:01 +02:00
kziolkowski 5bcbee8865 created test scene and removed event test elements from start scene 2025-10-21 12:38:15 +02:00
kziolkowski a74abe684b Godot upgrade to 4.5 2025-10-21 12:33:38 +02:00
kziolkowski a593be8273 📝 added documentation and improved event scope 2025-10-18 17:15:35 +02:00
kziolkowski 1e004b62b8 Implemented first version of EventResources 2025-10-13 09:57:49 +02:00
kziolkowski 5fc7b3d563 scene updates after undoing changes to interactionArea 2025-10-03 17:02:07 +02:00
kziolkowski d4892e1aa4 sound autoimports 2025-10-03 16:52:17 +02:00
kziolkowski e0ea5ef5be Merge branch 'feature/sounds_update' into feature/bugfixing_kathi_partIII 2025-10-03 16:45:30 +02:00
kziolkowski 02ff401273 Merge branch 'feature/animations_update' into feature/bugfixing_kathi_partIII 2025-10-03 16:45:14 +02:00
kziolkowski c3e78b5db2 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/sounds_update 2025-10-03 16:39:30 +02:00
kziolkowski 09b2baab0a Merge remote-tracking branch 'origin/Animations' into feature/animations_update
# Conflicts:
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0021.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0022.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0023.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0024.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0025.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D08-Watering/0026.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0001.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0002.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0003.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0004.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0005.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0006.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0007.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0008.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0009.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0010.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0011.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0012.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0013.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0014.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0015.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0016.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0017.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0018.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0019.png.import
#	art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0020.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0001.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0002.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0003.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0004.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0005.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0006.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0007.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0008.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0009.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0010.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0011.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0012.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0013.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0014.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0015.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0016.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0017.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0018.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0019.png.import
#	art/animation/Yeli2D/F01-Yeli_Idle/0020.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0001.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0002.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0003.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0004.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0005.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0006.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0007.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0008.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0009.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0010.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0011.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0012.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0013.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0014.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0015.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0016.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0017.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0018.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0019.png.import
#	art/animation/Yeli2D/F02-Yeli_Talk/0020.png.import
#	project.godot
2025-10-03 16:20:23 +02:00
kziolkowski d6a2b586e4 🐛 fixed ducks counting bug 2025-09-27 17:38:23 +02:00
kziolkowski 936983e14f 💄 updated dialogic style to make it clearer who is talking and have vesna always on the left side 2025-09-27 17:24:01 +02:00
kziolkowski e73f13d7d4 🎨 💄 Created art template for farm plants and reworked existing plant prefabs and inventory resources 2025-09-27 16:54:17 +02:00
kziolkowski 0713e334b3 Fixed InventoryInstance behaviour 2025-09-26 00:31:11 +02:00
kziolkowski c56f654751 Set up second garden with beetroot, built transition from yard and back 2025-09-17 17:58:28 +02:00
kziolkowski 1f88f9b4b5 Added beetroot as growable plant 2025-09-17 16:53:57 +02:00
kziolkowski 06fd80f762 grass layering fix 2025-09-17 15:10:29 +02:00
kziolkowski 2cb605261e Fixed Tomato farming (again) 2025-09-17 15:07:17 +02:00
kziolkowski 975dd45c94 fixed item repository bug 2025-09-10 15:06:49 +02:00
kziolkowski d1a8ff0cbf WIP reworking the item repository 2025-09-09 23:57:55 +02:00
Nao cba6c09ca0 SFX for Wolf added + redone reverb of footsteps (but not sure it worked?! - possible new upload/replacement possible) 2025-09-08 16:51:21 +02:00
Felix Paul da7cd2f6f2 Small update 2025-09-01 19:52:11 +02:00
kziolkowski 9f50e1d293 WIP trying to implement pickup sounds 2025-08-27 18:21:28 +02:00
kziolkowski 652cac4232 Added typing sounds to dialogic characters 2025-08-27 18:00:26 +02:00
kziolkowski e44e06bace Added Footsteps SFX 2025-08-27 17:12:12 +02:00
kziolkowski 89313fd484 Merge remote-tracking branch 'origin/Nao's-Sounds' into feature/showcase_bugfixing_kathi_partII 2025-08-27 15:19:47 +02:00
Nao 6f340b54a4 SFX Footstep Gravel Added 2025-08-25 19:15:38 +02:00
Nao 8f3be823a4 Added Single Footstep SFX, added folders and moved files for better organization 2025-08-21 17:46:53 +02:00
kziolkowski eeb56fd7ad Added possibility to deactivate an interactionarea if there is no more timelines to play 2025-08-20 00:48:12 +02:00
kziolkowski 871e1856f1 Tools get deactivated from animation when switching to an empty slot in the inventory. Also fixed layering (AGAIN) 2025-08-20 00:26:58 +02:00
kziolkowski 378bf45c49 Implemented PR feedback + made sure initial farming quests run smoothly 2025-08-19 23:02:14 +02:00
kziolkowski f6e0c4e615 minor scene fixes 2025-08-18 00:10:20 +02:00
kziolkowski 6ae877f2ab Implemented first version of an interactable area that reacts to inventory selection 2025-08-17 23:49:04 +02:00
kziolkowski 3913143892 Added Hotkey-Info to inventory prefab 2025-08-17 23:21:45 +02:00
kziolkowski 4734ae953c Added option to play pickup animation for non-inventory items 2025-08-17 23:13:39 +02:00
kziolkowski 5992c390ee Reinstated plantgrowing animation 2025-08-17 23:07:22 +02:00
kziolkowski 283caf282b Added interaction on mouse click 2025-08-17 22:50:28 +02:00
kziolkowski 7c03964d33 changed watering can display to slider 2025-08-17 22:42:12 +02:00
kziolkowski 36c948f116 re-added watering animation and vfx 2025-08-17 22:18:39 +02:00
kziolkowski d0ba4076b3 planting, growing and watering a little less dependent than before 2025-08-17 22:11:18 +02:00
kziolkowski 7fd26ffed3 Fixed tomato farming again 2025-08-17 21:57:57 +02:00
kziolkowski ce2d7eb773 WIP moving seed to plant matching into separate system, making fields independent of specific plants. 2025-08-15 18:42:26 +02:00
kziolkowski 41365fb5d4 Fixed tool animation 2025-08-15 17:19:22 +02:00
kziolkowski 96c7d35aa7 Added word wrapping to quest post it. 2025-08-15 17:19:13 +02:00
kziolkowski c2f5359d0c changes after develop merge 2025-08-15 17:03:18 +02:00
Jonathan 9bebe1a44d Merge pull request 'Implemented first demo quest line' (#15) from feature/implement_quests into develop
Reviewed-on: #15
2025-08-14 23:28:09 +02:00
jonathan 06a270e916 Renamed function to not sound like a unity signal 2025-08-14 23:27:15 +02:00
jonathan b621df5435 removed invisible character 2025-08-14 23:16:52 +02:00
jonathan 03dbc08293 quest status name refactoring 2025-08-14 21:54:18 +02:00
Felix Paul 12842a37ff Rigged Chuga 2025-07-25 20:19:39 +02:00
Felix Paul ffc7ef2d61 Added Vesna and Yeli as 2D rigged chars, Chuga is still WIP 2025-07-06 20:22:12 +02:00
Felix Paul 20ed134628 Added Yeli Idle and Talk animations 2025-05-21 02:12:36 +02:00
Felix Paul 3eb35d4e7d Rerender Harvesting and added Watering animations 2025-05-18 21:22:27 +02:00
486 changed files with 20243 additions and 3062 deletions
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="RiderAndroidProjectSystem" />
</component>
</project>
+69
View File
@@ -0,0 +1,69 @@
extends Node
@export_node_path("Node2D")
var target_node_path = NodePath()
@export var flip_bend_direction = false
@export var joint_one_bone_index = -1
@export var joint_two_bone_index = -1
var _angle_a = 0.0
var _angle_b = 0.0
func _process(delta: float) -> void:
_update_two_bone_ik_angles()
func _update_two_bone_ik_angles():
assert(joint_one_bone_index != -1)
assert(joint_two_bone_index != -1)
if target_node_path.is_empty():
return
var target = get_node(target_node_path) as Node2D
var bone_a = get_parent().get_bone(joint_one_bone_index)
var bone_b = get_parent().get_bone(joint_two_bone_index)
var bone_a_len = bone_a.get_length()
var bone_b_len = bone_b.get_length()
var sin_angle2 = 0.0
var cos_angle2 = 1.0
_angle_b = 0.0
var cos_angle2_denom = 2.0 * bone_a_len * bone_b_len
if not is_zero_approx(cos_angle2_denom):
var target_len_sqr = _distance_squared_between(bone_a, target)
var bone_a_len_sqr = bone_a_len * bone_a_len
var bone_b_len_sqr = bone_b_len * bone_b_len
cos_angle2 = (target_len_sqr - bone_a_len_sqr - bone_b_len_sqr) / cos_angle2_denom
cos_angle2 = clamp(cos_angle2, -1.0, 1.0);
_angle_b = acos(cos_angle2)
if flip_bend_direction:
_angle_b = -_angle_b
sin_angle2 = sin(_angle_b)
var tri_adjacent = bone_a_len + bone_b_len * cos_angle2
var tri_opposite = bone_b_len * sin_angle2
var xform_inv = bone_a.get_parent().global_transform.affine_inverse()
var target_pos = xform_inv * target.global_position - bone_a.position
var tan_y = target_pos.y * tri_adjacent - target_pos.x * tri_opposite
var tan_x = target_pos.x * tri_adjacent + target_pos.y * tri_opposite
_angle_a = atan2(tan_y, tan_x)
var bone_a_angle = bone_a.get_bone_angle()
var bone_b_angle = bone_b.get_bone_angle()
bone_a.rotation = _angle_a - bone_a_angle
bone_b.rotation = _angle_b - angle_difference(bone_a_angle, bone_b_angle)
func _distance_squared_between(node_a: Node2D, node_b: Node2D) -> float:
return node_a.global_position.distance_squared_to(node_b.global_position)
+1
View File
@@ -0,0 +1 @@
uid://p5wxvjx24brs
+2 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Godot.NET.Sdk/4.4.0">
<Project Sdk="Godot.NET.Sdk/4.5.1">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
@@ -6,5 +6,6 @@
</PropertyGroup>
<ItemGroup>
<Folder Include="prefabs\UI\Inventory\" />
<Folder Include="scripts\CSharp\Low Code\Randomizer\" />
</ItemGroup>
</Project>
+1
View File
@@ -1,4 +1,5 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=53eecf85_002Dd821_002D40e8_002Dac97_002Dfdb734542b84/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Instance fields (not private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Description/@EntryValue">Godot Signal</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=0B2502BD29F5EC4798EEFD2950AA7E06/Text/@EntryValue">[Signal]
public delegate void $SignalName$EventHandler($END$);</s:String>
+27 -1
View File
@@ -1,12 +1,38 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fefbd3244e8e427e388f389cc304f90548d56b58a375097a197ac2eb8259990bb_003FArea2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea3D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8a54226fa2e1c9371a8091f24cfd744aef11fe6869527dc23b9b837623a29b9_003FArea3D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArray_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fa3_003Fe272a3a7_003FArray_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAudioStreamPlayer2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F848324b1c23114c3f5e8bbb5a42c4ade394c59a7a7a133a66b76581ca571_003FAudioStreamPlayer2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EFieldBehaviour2D_005FScriptMethods_002Egenerated_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F75d11718f1abbc2572fd32e4b83acbec9d79ac_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EFieldBehaviour2D_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FLocal_003FTemp_003FSourceGeneratedDocuments_003F9509A9D00FD8A232B5E86A84_003FGodot_002ESourceGenerators_003FGodot_002ESourceGenerators_002EScriptMethodsGenerator_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FLocal_003FTemp_003FSourceGeneratedDocuments_003F9509A9D00FD8A232B5E86A84_003FGodot_002ESourceGenerators_003FGodot_002ESourceGenerators_002EScriptPropertiesGenerator_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4298b0f293f987511fc1b7956ee691fd778f8378_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4298b0f293f987511fc1b7956ee691fd778f8378_003FBabushka_002Escripts_002ECSharp_002ECommon_002EFarming_002EVesnaBehaviour2D_005FScriptProperties_002Egenerated_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F48fad7e7f3c9e292b3fdbddf9d363f0d1752aa_003FBabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestListItemUi_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestManager_005FScriptSignals_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FLocal_003FTemp_003FSourceGeneratedDocuments_003F9509A9D00FD8A232B5E86A84_003FGodot_002ESourceGenerators_003FGodot_002ESourceGenerators_002EScriptSignalsGenerator_003FBabushka_002Escripts_002ECSharp_002ECommon_002EQuest_002EQuestManager_005FScriptSignals_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACanvasItem_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fef7b819b226fab796d1dfe66d415dd7510bcac87675020ddb8f03a828e763_003FCanvasItem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3c92637ae2e83da0a63791071c41eae291d594156062866d8621b7ed7245c_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastHelpers_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd111abf504bf42b5968a609b168fd093b2e200_003Fbb_003F1c116fcd_003FCastHelpers_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACharacterBody2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fbba0bbd7a98ee58286e9484fbe86e01afff6232283f6efd3556eb7116453_003FCharacterBody2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACount_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ffe5a7cee5a1771b89077bd73292de84439b4f816799e2ad6c2615c6ff5bd748e_003FCount_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADictionary_00602_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003Fhome_003Fjonathan_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fd4_003Fbd338aeb_003FDictionary_00602_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExportToolButtonAttribute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003F31_003F3e05ef15_003FExportToolButtonAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMustBeVariantAttribute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe37dc1faf08a4d5ea030ad59bdf77522523400_003Fda_003Fbb06d681_003FMustBeVariantAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGD_005Fconstants_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4ef0bac6437b6a9567d44f62ae567d854fa7b8513ef7139ef349b49768bc9df_003FGD_005Fconstants_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEnumerable_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F76fabf6f8acf4a0099cae0bcf8b218467f10_003F7e_003F28cee476_003FEnumerable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGD_005Fconstants_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F4ef0bac6437b6a9567d44f62ae567d854fa7b8513ef7139ef349b49768bc9df_003FGD_005Fconstants_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff1d69ec2da76ccf9bc8a75c8e0fdca9a7ba1adf8c8c9d5047e2fa5991c02eca_003FNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANullable_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F5acc345db3c207bc9d886a36ff14867ef8d65557432172c2a42f19aeac04d1b_003FNullable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResourceLoader_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9f4e8eb124d11f8219cb513a19bed22b2120ed29f9d6785ba56e3367b48d581_003FResourceLoader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneTree_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F8d6960554e939a669841b1ece03d27df4ab42f92bb80be3767eaec8cdaccf84b_003FSceneTree_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AShape2D_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3671dbbd9b17cdf2bf9075b468b6bd7e3ab13fc3be7a116484085d3b6cc9fe_003FShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003FJonathan_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=bc5a80e4_002D7ba6_002D4f7d_002Db896_002Dc591eec7ab12/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="Tests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;NUnit3x::A6EF2269-9E64-40D4-BA0A-33CB234E2503::net9.0::BabushkaTest.Tests&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String></wpf:ResourceDictionary>
@@ -0,0 +1,58 @@
[gd_resource type="Resource" script_class="DialogicStyle" load_steps=18 format=3 uid="uid://b2fmyjrydbg57"]
[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_hr3vo"]
[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_cpmol"]
[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="3_12uyf"]
[ext_resource type="PackedScene" uid="uid://by6waso0mjpjp" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_SpeakerPortraitTextbox/textbox_with_speaker_portrait.tscn" id="4_ncyk4"]
[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="5_qg2g4"]
[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="6_c5ex4"]
[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="7_bopa1"]
[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="8_oycnw"]
[ext_resource type="Script" uid="uid://b14h380mah4av" path="res://addons/dialogic/Resources/dialogic_style.gd" id="9_i6i1n"]
[sub_resource type="Resource" id="Resource_w535h"]
script = ExtResource("1_hr3vo")
[sub_resource type="Resource" id="Resource_j3dy5"]
script = ExtResource("1_hr3vo")
scene = ExtResource("2_cpmol")
[sub_resource type="Resource" id="Resource_d5o1r"]
script = ExtResource("1_hr3vo")
scene = ExtResource("3_12uyf")
[sub_resource type="Resource" id="Resource_g7mor"]
script = ExtResource("1_hr3vo")
scene = ExtResource("4_ncyk4")
[sub_resource type="Resource" id="Resource_wgjgg"]
script = ExtResource("1_hr3vo")
scene = ExtResource("5_qg2g4")
[sub_resource type="Resource" id="Resource_45hxc"]
script = ExtResource("1_hr3vo")
scene = ExtResource("6_c5ex4")
[sub_resource type="Resource" id="Resource_c53vn"]
script = ExtResource("1_hr3vo")
scene = ExtResource("7_bopa1")
[sub_resource type="Resource" id="Resource_n6k7j"]
script = ExtResource("1_hr3vo")
scene = ExtResource("8_oycnw")
[resource]
script = ExtResource("9_i6i1n")
name = "babushka_dialogue_style"
layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16"])
layer_info = {
"": SubResource("Resource_w535h"),
"10": SubResource("Resource_j3dy5"),
"11": SubResource("Resource_d5o1r"),
"12": SubResource("Resource_g7mor"),
"13": SubResource("Resource_wgjgg"),
"14": SubResource("Resource_45hxc"),
"15": SubResource("Resource_c53vn"),
"16": SubResource("Resource_n6k7j")
}
metadata/_latest_layer = ""
Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyfjhl5qp3lpj"
path="res://.godot/imported/next-indicator-dialogic-2.png-738692064a5e64a28dcba134b029afb9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-2.png"
dest_files=["res://.godot/imported/next-indicator-dialogic-2.png-738692064a5e64a28dcba134b029afb9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
@@ -1,11 +1,16 @@
[gd_resource type="StyleBoxFlat" format=3 uid="uid://dkv1pl1c1dq6"]
[resource]
content_margin_left = 15.0
content_margin_top = 15.0
content_margin_right = 15.0
content_margin_bottom = 15.0
content_margin_left = 100.0
content_margin_top = 80.0
content_margin_right = 100.0
content_margin_bottom = 30.0
bg_color = Color(1, 1, 1, 1)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color(0.14509805, 0.09411765, 0.07058824, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
+105
View File
@@ -0,0 +1,105 @@
[gd_resource type="Resource" script_class="DialogicStyle" load_steps=20 format=3 uid="uid://benfqi2myyn58"]
[ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_kc0s3"]
[ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_wjopr"]
[ext_resource type="PackedScene" uid="uid://cy1y14inwkplb" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Portraits/vn_portrait_layer.tscn" id="3_depsi"]
[ext_resource type="PackedScene" uid="uid://cn674foxwedqu" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Input/full_advance_input_layer.tscn" id="4_wy5ku"]
[ext_resource type="PackedScene" uid="uid://bquja8jyk8kbr" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_layer.tscn" id="5_6srh5"]
[ext_resource type="PackedScene" uid="uid://dsbwnp5hegnu3" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_Glossary/glossary_popup_layer.tscn" id="6_iipq0"]
[ext_resource type="PackedScene" uid="uid://dhk6j6eb6e3q" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Choices/vn_choice_layer.tscn" id="7_jxwbe"]
[ext_resource type="PackedScene" uid="uid://cvgf4c6gg0tsy" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_TextInput/text_input_layer.tscn" id="8_4ig6v"]
[ext_resource type="PackedScene" uid="uid://lx24i8fl6uo" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_History/history_layer.tscn" id="9_gni8k"]
[ext_resource type="Script" uid="uid://b14h380mah4av" path="res://addons/dialogic/Resources/dialogic_style.gd" id="10_l174f"]
[sub_resource type="Resource" id="Resource_qnla8"]
script = ExtResource("1_kc0s3")
overrides = {
"global_bg_color": "Color(0.898039, 0.917647, 0.835294, 1)",
"global_font": "\"res://fonts/ShantellSans/static/ShantellSans-Regular.ttf\"",
"global_font_color": "Color(0.258824, 0.12549, 0.054902, 1)",
"global_font_size": "45.0"
}
[sub_resource type="Resource" id="Resource_awdqn"]
script = ExtResource("1_kc0s3")
scene = ExtResource("2_wjopr")
[sub_resource type="Resource" id="Resource_5pou4"]
script = ExtResource("1_kc0s3")
scene = ExtResource("3_depsi")
overrides = {
"portrait_size_mode": "0"
}
[sub_resource type="Resource" id="Resource_6xrvb"]
script = ExtResource("1_kc0s3")
scene = ExtResource("4_wy5ku")
[sub_resource type="Resource" id="Resource_k1327"]
script = ExtResource("1_kc0s3")
scene = ExtResource("5_6srh5")
overrides = {
"bold_font": "\"res://fonts/ShantellSans/static/ShantellSans-Bold.ttf\"",
"bold_italics_font": "\"res://fonts/ShantellSans/static/ShantellSans-BoldItalic.ttf\"",
"box_animation_in": "1",
"box_animation_out": "1",
"box_color_custom": "Color(0.88, 0.6688, 0.73568, 1)",
"box_color_use_global": "false",
"box_panel": "\"vn_textbox_default_panel.tres\"",
"box_size": "Vector2(1920, 300)",
"italics_font": "\"res://fonts/ShantellSans/static/ShantellSans-Italic.ttf\"",
"name_label_box_modulate": "Color(1, 1, 1, 1)",
"name_label_box_offset": "Vector2(200, 0)",
"name_label_box_panel": "\"res://dialog/Babushka_NPC_Namebox_background.tres\"",
"name_label_custom_font_size": "40.0",
"name_label_font": "\"res://fonts/HomemadeApple/HomemadeApple-Regular.ttf\"",
"name_label_use_global_color": "false",
"name_label_use_global_font": "false",
"next_indicator_texture": "\"res://addons/dialogic/Example Assets/next-indicator/next-indicator-dialogic-2.png\"",
"normal_font": "\"res://fonts/ShantellSans/static/ShantellSans-Regular.ttf\"",
"text_alignment": "1",
"text_size": "40.0",
"typing_sounds_end_sound": "\"res://audio/sfx/UI/Dialog/SFX_Dialog_Open_01.wav\"",
"typing_sounds_sounds_folder": "\"res://audio/sfx/typing\""
}
[sub_resource type="Resource" id="Resource_qtijl"]
script = ExtResource("1_kc0s3")
scene = ExtResource("6_iipq0")
[sub_resource type="Resource" id="Resource_nalij"]
script = ExtResource("1_kc0s3")
scene = ExtResource("7_jxwbe")
overrides = {
"font_size_custom": "30.0",
"text_color_disabled": "Color(0.605469, 0.605469, 0.605469, 1)",
"text_color_focused": "Color(1, 0.628906, 0.628906, 1)",
"text_color_hovered": "Color(0.882353, 0.572549, 0.572549, 1)",
"text_color_pressed": "Color(1, 0.882812, 0.53125, 1)",
"text_color_use_global": "false"
}
[sub_resource type="Resource" id="Resource_ymn1b"]
script = ExtResource("1_kc0s3")
scene = ExtResource("8_4ig6v")
[sub_resource type="Resource" id="Resource_8j3qh"]
script = ExtResource("1_kc0s3")
scene = ExtResource("9_gni8k")
[resource]
script = ExtResource("10_l174f")
name = "vesna_style"
layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16", "17"])
layer_info = {
"": SubResource("Resource_qnla8"),
"10": SubResource("Resource_awdqn"),
"11": SubResource("Resource_5pou4"),
"12": SubResource("Resource_6xrvb"),
"13": SubResource("Resource_k1327"),
"14": SubResource("Resource_qtijl"),
"15": SubResource("Resource_nalij"),
"16": SubResource("Resource_ymn1b"),
"17": SubResource("Resource_8j3qh")
}
metadata/_latest_layer = "13"
@@ -9,7 +9,7 @@ var quest_resource: String
func _execute() -> void:
var resource = ResourceLoader.load(quest_resource)
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.AVAILABLE)
QuestManager.SetFollowQuest(resource)
QuestManager.SetActiveQuest(resource)
finish() # called to continue with the next event
@@ -9,7 +9,7 @@ var quest_resource: String
func _execute() -> void:
var resource = ResourceLoader.load(quest_resource)
QuestManager.ChangeQuestStatus(resource,QuestEventUtils.QuestStatus.DONE)
QuestManager.SetFollowQuest(null)
QuestManager.SetActiveQuest(null)
finish() # called to continue with the next event
@@ -23,9 +23,9 @@ func _execute() -> void:
var result: bool
if compare_status == QuestEventUtils.QuestStatusOrActive.ACTIVE:
result = QuestManager.GetFollowQuest() == resource
result = QuestManager.GetActiveQuest() == resource
elif compare_status == QuestEventUtils.QuestStatusOrActive.NOT_ACTIVE:
result = QuestManager.GetFollowQuest() != resource
result = QuestManager.GetActiveQuest() != resource
else:
result = QuestManager.GetQuestStatus(resource).status == compare_status
@@ -1,510 +0,0 @@
{
"swagger": "2.0",
"info": {
"title": "LanguageTool API",
"description": "Check texts for style and grammar issues with <a href='https://languagetool.org'>LanguageTool</a>. Please consider the following default limitations:<ul><li>your daily request limit depending on <a href='https://languagetool.org/editor/settings/access-tokens'>your plan</a> <li>maximum number of requests per minute: 20 (free) / 80 (Premium) <li>maximum number of characters per minute: 75,000 (free) / 300,000 (Premium) <li>maximum number of characters per request: 20,000 (free) / 60,000 (Premium) <li>for the free version, also consider the <a href='https://dev.languagetool.org/public-http-api'>limitations documented here</a> <li><b>Note:</b> any parameters or outputs not part of this documentation are internal and must not be relied on</ul> Need more generous limits? Just <a href='https://languagetool.org/proofreading-api'>contact us</a>.",
"version": "1.1.2"
},
"host": "api.languagetoolplus.com",
"schemes": [
"https"
],
"basePath": "/v2",
"produces": [
"application/json"
],
"paths": {
"/check": {
"post": {
"summary": "Check a text",
"description": "The main feature - check a text with LanguageTool for possible style and grammar issues.",
"parameters": [
{
"name": "text",
"in": "formData",
"type": "string",
"description": "The text to be checked. This or 'data' is required.",
"required": false
},
{
"name": "data",
"in": "formData",
"type": "string",
"description": "The text to be checked, given as a JSON document that specifies what's text and what's markup. This or 'text' is required. Markup will be ignored when looking for errors. Example text: <pre>A &lt;b>test&lt;/b></pre>JSON for the example text: <pre>{\"annotation\":[\n {\"text\": \"A \"},\n {\"markup\": \"&lt;b>\"},\n {\"text\": \"test\"},\n {\"markup\": \"&lt;/b>\"}\n]}</pre> <p>If you have markup that should be interpreted as whitespace, like <tt>&lt;p&gt;</tt> in HTML, you can have it interpreted like this: <pre>{\"markup\": \"&lt;p&gt;\", \"interpretAs\": \"\\n\\n\"}</pre><p>The 'data' feature is not limited to HTML or XML, it can be used for any kind of markup. Entities will need to be expanded in this input.",
"required": false
},
{
"name": "language",
"in": "formData",
"type": "string",
"description": "A language code like `en-US`, `de-DE`, `fr`, or `auto` to guess the language automatically (see `preferredVariants` below). For languages with variants (English, German, Portuguese) spell checking will only be activated when you specify the variant, e.g. `en-GB` instead of just `en`.",
"required": true
},
{
"name": "username",
"in": "formData",
"type": "string",
"description": "Set to get Premium API access: Your username/email as used to log in at languagetool.org."
},
{
"name": "apiKey",
"in": "formData",
"type": "string",
"format": "password",
"description": "Set to get Premium API access: <a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>your API key</a>"
},
{
"name": "dicts",
"in": "formData",
"type": "string",
"description": "Comma-separated list of dictionaries to include words from; uses special default dictionary if this is unset"
},
{
"name": "motherTongue",
"in": "formData",
"type": "string",
"description": "A language code of the user's native language, enabling false friends checks for some language pairs."
},
{
"name": "preferredVariants",
"in": "formData",
"type": "string",
"description": "Comma-separated list of preferred language variants. The language detector used with `language=auto` can detect e.g. English, but it cannot decide whether British English or American English is used. Thus this parameter can be used to specify the preferred variants like `en-GB` and `de-AT`. Only available with `language=auto`. You should set variants for at least German and English, as otherwise the spell checking will not work for those, as no spelling dictionary can be selected for just `en` or `de`."
},
{
"name": "enabledRules",
"in": "formData",
"type": "string",
"description": "IDs of rules to be enabled, comma-separated. Note that 'level' still applies, so the rule won't run unless 'level' is set to a level that activates the rule."
},
{
"name": "disabledRules",
"in": "formData",
"type": "string",
"description": "IDs of rules to be disabled, comma-separated"
},
{
"name": "enabledCategories",
"in": "formData",
"type": "string",
"description": "IDs of categories to be enabled, comma-separated"
},
{
"name": "disabledCategories",
"in": "formData",
"type": "string",
"description": "IDs of categories to be disabled, comma-separated"
},
{
"name": "enabledOnly",
"in": "formData",
"type": "boolean",
"default": false,
"description": "If true, only the rules and categories whose IDs are specified with `enabledRules` or `enabledCategories` are enabled."
},
{
"name": "level",
"in": "formData",
"type": "string",
"enum": ["default", "picky"],
"description": "If set to `picky`, additional rules will be activated, i.e. rules that you might only find useful when checking formal text."
}
],
"responses": {
"200": {
"description": "the result of checking the text",
"schema": {
"properties": {
"software": {
"type": "object",
"required": [
"name",
"version",
"buildDate",
"apiVersion"
],
"properties": {
"name": {
"type": "string",
"description": "Usually 'LanguageTool'."
},
"version": {
"type": "string",
"description": "A version string like '3.3' or '3.4-SNAPSHOT'."
},
"buildDate": {
"type": "string",
"description": "Date when the software was built, e.g. '2016-05-25'."
},
"apiVersion": {
"type": "integer",
"description": "Version of this API response. We don't expect to make incompatible changes, so this can also be increased for newly added fields."
},
"status": {
"type": "string",
"description": "An optional warning, e.g. when the API format is not stable."
},
"premium": {
"type": "boolean",
"description": "true if you're using a Premium account with all the premium text checks (since LanguageTool 4.2)"
}
}
},
"language": {
"type": "object",
"description": "The language used for checking the text.",
"required": [
"name",
"code",
"detectedLanguage"
],
"properties": {
"name": {
"type": "string",
"description": "Language name like 'French' or 'English (US)'."
},
"code": {
"type": "string",
"description": "ISO 639-1 code like 'en', 'en-US', or 'ca-ES-valencia'"
},
"detectedLanguage": {
"type": "object",
"description": "The automatically detected text language (might be different from the language actually used for checking).",
"required": [
"name",
"code"
],
"properties": {
"name": {
"type": "string",
"description": "Language name like 'French' or 'English (US)'."
},
"code": {
"type": "string",
"description": "ISO 639-1 code like 'en', 'en-US', or 'ca-ES-valencia'."
}
}
}
}
},
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"message",
"offset",
"length",
"replacements",
"context",
"sentence"
],
"properties": {
"message": {
"type": "string",
"description": "Message about the error displayed to the user."
},
"shortMessage": {
"type": "string",
"description": "An optional shorter version of 'message'."
},
"offset": {
"type": "integer",
"description": "The 0-based character offset of the error in the text."
},
"length": {
"type": "integer",
"description": "The length of the error in characters."
},
"replacements": {
"type": "array",
"description": "Replacements that might correct the error. The array can be empty, in this case there is no suggested replacement.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "the replacement string"
}
}
}
},
"context": {
"type": "object",
"required": [
"text",
"offset",
"length"
],
"properties": {
"text": {
"type": "string",
"description": "Context of the error, i.e. the error and some text to the left and to the left."
},
"offset": {
"type": "integer",
"description": "The 0-based character offset of the error in the context text."
},
"length": {
"type": "integer",
"description": "The length of the error in characters in the context."
}
}
},
"sentence": {
"type": "string",
"description": "The sentence the error occurred in (since LanguageTool 4.0 or later)"
},
"rule": {
"type": "object",
"required": [
"id",
"description",
"category"
],
"properties": {
"id": {
"type": "string",
"description": "An rule's identifier that's unique for this language."
},
"subId": {
"type": "string",
"description": "An optional sub identifier of the rule, used when several rules are grouped."
},
"description": {
"type": "string"
},
"urls": {
"type": "array",
"description": "An optional array of URLs with a more detailed description of the error.",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "the URL"
}
}
}
},
"issueType": {
"type": "string",
"description": "The <a href=\"http://www.w3.org/International/multilingualweb/lt/drafts/its20/its20.html#lqissue-typevalues\">Localization Quality Issue Type</a>. This is not defined for all languages, in which case it will always be 'Uncategorized'."
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A category's identifier that's unique for this language."
},
"name": {
"type": "string",
"description": "A short description of the category."
}
}
}
}
}
}
}
}
}
}
}
}
}
},
"/languages": {
"get": {
"summary": "Get a list of supported languages.",
"responses": {
"200": {
"description": "An array of language objects.",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"code",
"longCode"
],
"properties": {
"name": {
"type": "string",
"description": "a language name like 'French' or 'English (Australia)'"
},
"code": {
"type": "string",
"description": "a language code like 'en'"
},
"longCode": {
"type": "string",
"description": "a language code like 'en-US' or 'ca-ES-valencia'"
}
}
}
}
}
}
}
},
"/words": {
"get": {
"summary": "List words in dictionaries",
"description": "List words in the user's personal dictionaries.",
"parameters": [
{
"name": "offset",
"in": "query",
"type": "integer",
"description": "Offset of where to start in the list of words. Defaults to 0."
},
{
"name": "limit",
"in": "query",
"type": "integer",
"description": "Maximum number of words to return. Defaults to 10."
},
{
"name": "username",
"in": "query",
"type": "string",
"description": "Your username as used to log in at languagetool.org.",
"required": true
},
{
"name": "apiKey",
"in": "query",
"type": "string",
"format": "password",
"description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>",
"required": true
},
{
"name": "dicts",
"in": "query",
"type": "string",
"description": "Comma-separated list of dictionaries to include words from; uses special default dictionary if this is unset"
}
],
"responses": {
"200": {
"description": "the user's words from the given user dictionaries",
"schema": {
"properties": {
"words": {
"type": "array",
"description": "array of words",
"items": {
"type": "string"
}
}
}
}
}
}
}
},
"/words/add": {
"post": {
"summary": "Add word to a dictionary",
"description": "Add a word to one of the user's personal dictionaries. Please note that this feature is considered to be used for personal dictionaries which must not contain more than 500 words. If this is an issue for you, please contact us.",
"parameters": [
{
"name": "word",
"in": "formData",
"type": "string",
"description": "The word to be added. Must not be a phrase, i.e. cannot contain white space. The word is added to a global dictionary that applies to all languages.",
"required": true
},
{
"name": "username",
"in": "formData",
"type": "string",
"description": "Your username as used to log in at languagetool.org.",
"required": true
},
{
"name": "apiKey",
"in": "formData",
"type": "string",
"format": "password",
"description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>",
"required": true
},
{
"name": "dict",
"in": "formData",
"type": "string",
"description": "Name of the dictionary to add the word to; non-existent dictionaries are created after calling this; if unset, adds to special default dictionary"
}
],
"responses": {
"200": {
"description": "the result of adding the word",
"schema": {
"properties": {
"added": {
"type": "boolean",
"description": "true if the word has been added. false means the word hasn't been added because it had been added before."
}
}
}
}
}
}
},
"/words/delete": {
"post": {
"summary": "Remove word from a dictionary",
"description": "Remove a word from one of the user's personal dictionaries.",
"parameters": [
{
"name": "word",
"in": "formData",
"type": "string",
"description": "The word to be removed.",
"required": true
},
{
"name": "username",
"in": "formData",
"type": "string",
"description": "Your username as used to log in at languagetool.org.",
"required": true
},
{
"name": "apiKey",
"in": "formData",
"type": "string",
"format": "password",
"description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>",
"required": true
},
{
"name": "dict",
"in": "formData",
"type": "string",
"description": "Name of the dictionary to remove the word from; if the dictionary is empty upon calling this, it is deleted; if unset, removes from special default dictionary"
}
],
"responses": {
"200": {
"description": "the result of removing the word",
"schema": {
"properties": {
"deleted": {
"type": "boolean",
"description": "true if the word has been removed. false means the word hasn't been removed because it was not in the dictionary."
}
}
}
}
}
}
}
}
}
-18
View File
@@ -1,18 +0,0 @@
@tool
extends EditorPlugin
var plugin: LanguagetToolPlugin
func _enter_tree() -> void:
plugin = LanguagetToolPlugin.new()
add_child(plugin)
EditorInterface.get_inspector().edited_object_changed.connect(_inspector_edited_object_changed)
func _inspector_edited_object_changed():
plugin.check_new_inspector();
func _exit_tree() -> void:
pass
-1
View File
@@ -1 +0,0 @@
uid://fm32qkudo8sp
-7
View File
@@ -1,7 +0,0 @@
[plugin]
name="LanguageTool"
description="Check texts for style and grammar issues with LanguageTool. "
author="Jonathan @ Cozy Raven Interactive"
version=""
script="languagetool.gd"
@@ -1,110 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://dxalawvo2ji7p"]
[ext_resource type="Script" uid="uid://dkyiuvuc2w2xc" path="res://addons/languagetool/scripts/language_tool_correction_overlay_references.gd" id="1_rh5c2"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hdqxg"]
bg_color = Color(0.145098, 0.145098, 0.145098, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.0784314, 0.0784314, 0.0784314, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
[node name="CorrectionOverlay" type="VBoxContainer"]
offset_right = 408.0
offset_bottom = 181.0
size_flags_horizontal = 0
size_flags_vertical = 0
script = ExtResource("1_rh5c2")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 15
theme_override_constants/margin_right = 15
theme_override_constants/margin_bottom = 15
[node name="PanelContainer" type="PanelContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_hdqxg")
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="CategoryLabel" type="Label" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 11
text = "Rechtschreibung"
autowrap_mode = 3
[node name="CloseButton" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 11
text = "X"
[node name="Spacer" type="Control" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 4)
layout_mode = 2
[node name="DescriptionLabel" type="Label" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/paragraph_spacing = 0
text = "Ensure spelling is correct"
autowrap_mode = 3
[node name="Spacer2" type="Control" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 2)
layout_mode = 2
[node name="Replacements" type="HFlowContainer" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="Button" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button2" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button3" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button4" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Hello world!!!"
[node name="Button5" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button6" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
[node name="Button7" type="Button" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements"]
layout_mode = 2
size_flags_horizontal = 0
text = "Test 1"
@@ -1,41 +0,0 @@
@tool
extends Node
class_name LanguageToolCorrectionOverlay
const CORRECTION_OVERLAY = preload("res://addons/languagetool/scenes/correction_overlay.tscn")
var instantiatedOverlay: LanguageToolCorrectionOverlayReferences
func _enter_tree() -> void:
instantiatedOverlay = CORRECTION_OVERLAY.instantiate()
add_child(instantiatedOverlay)
hideOverlay()
func _ready():
instantiatedOverlay.close_button.pressed.connect(hideOverlay)
func _exit_tree() -> void:
pass
func hideOverlay():
instantiatedOverlay.hide()
func showOverlay(position:Vector2, width: float, _match:LanguageToolApiWrapper.LanguageToolCheckResponse.Match, replacement_clicked : Callable):
#print(instantiatedOverlay.test)
instantiatedOverlay.show()
instantiatedOverlay.global_position = position
instantiatedOverlay.size = Vector2(0,0)
instantiatedOverlay.custom_minimum_size = Vector2(width, 0)
instantiatedOverlay.category_label.text = _match.rule.category.name
instantiatedOverlay.description_label.text = _match.message
for c in instantiatedOverlay.replacements.get_children():
c.free()
for r in _match.replacements:
var replacementButton = Button.new()
replacementButton.text = r
replacementButton.size_flags_horizontal = Control.SIZE_EXPAND_FILL
replacementButton.pressed.connect(func():replacement_clicked.call(r))
instantiatedOverlay.replacements.add_child(replacementButton)
@@ -1 +0,0 @@
uid://ct2t8rr000prq
@@ -1,9 +0,0 @@
@tool
extends VBoxContainer
class_name LanguageToolCorrectionOverlayReferences
@onready var category_label: Label = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CategoryLabel
@onready var description_label: Label = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/DescriptionLabel
@onready var replacements: HFlowContainer = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/Replacements
@onready var close_button: Button = $MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CloseButton
@@ -1 +0,0 @@
uid://dkyiuvuc2w2xc
@@ -1,32 +0,0 @@
extends SyntaxHighlighter
class_name LanguageToolErrorSyntaxHighlighter
var check:LanguageToolApiWrapper.LanguageToolCheckResponse
func _init(check:LanguageToolApiWrapper.LanguageToolCheckResponse):
self.check = check
func _get_line_syntax_highlighting(line: int) -> Dictionary:
var normalColor = EditorInterface.get_base_control().get_theme_color("font_color", "Editor")
var errorColor = EditorInterface.get_base_control().get_theme_color("error_color", "Editor")
var warningColor = EditorInterface.get_base_control().get_theme_color("warning_color", "Editor")
var successColor = EditorInterface.get_base_control().get_theme_color("success_color", "Editor")
var retval = {}
for m:LanguageToolApiWrapper.LanguageToolCheckResponse.Match in check.matches:
var row_column = LanguageToolUtils.offset_to_row_column(m.offset,get_text_edit().text)
if row_column[0] != line:
continue
match m.rule.category.id:
"GRAMMAR":
retval[row_column[1]] = {"color":warningColor}
"TYPOS":
retval[row_column[1]] = {"color":errorColor}
_:
retval[row_column[1]] = {"color":successColor}
retval[row_column[1]+m.length] = {"color":normalColor}
return retval
@@ -1 +0,0 @@
uid://csxcr0bsetagc
@@ -1,112 +0,0 @@
extends Node
class_name LanguagetToolPlugin
var api: LanguageToolApiWrapper
var overlay: LanguageToolCorrectionOverlay
var checkDict: Dictionary[String,LanguageToolApiWrapper.LanguageToolCheckResponse] = {}
func _enter_tree() -> void:
api = LanguageToolApiWrapper.new()
add_child(api)
overlay = LanguageToolCorrectionOverlay.new()
add_child(overlay)
func _exit_tree() -> void:
pass
func check_new_inspector():
overlay.hideOverlay()
var textEdits: Array[TextEdit] = _find_multiline_text_edits()
for te: TextEdit in textEdits:
te.text_changed.connect(func():_on_text_changed(te))
te.focus_exited.connect(func():_on_focus_lost(te))
te.caret_changed.connect(func():_on_caret_changed(te))
_check_text(te)
_mark_errors_in_text(te)
func _on_text_changed(textEdit: TextEdit):
_mark_errors_in_text(textEdit)
overlay.hideOverlay()
func _on_focus_lost(textEdit: TextEdit):
_check_text(textEdit)
_mark_errors_in_text(textEdit)
func _on_caret_changed(textEdit: TextEdit):
if(!checkDict.has(textEdit.text)):
return
var check: LanguageToolApiWrapper.LanguageToolCheckResponse = checkDict[textEdit.text]
# find match at caret
var caret_offset:int = LanguageToolUtils.row_column_to_offset(textEdit.get_caret_line(), textEdit.get_caret_column(),textEdit.text)
var _match:LanguageToolApiWrapper.LanguageToolCheckResponse.Match = null
for m in check.matches:
if m.offset <= caret_offset and m.offset + m.length >= caret_offset:
_match = m
break
if _match != null:
var edit_global_rect = textEdit.get_global_rect()
overlay.showOverlay(
edit_global_rect.position + Vector2(0,edit_global_rect.size.y),
edit_global_rect.size.x,
_match,
func(newText):_apply_text_change(textEdit,newText,_match))
else:
overlay.hideOverlay()
pass
func _check_text(textEdit: TextEdit):
if textEdit.text == "":
return
if checkDict.has(textEdit.text):
return
var response = api.check(textEdit.text)
checkDict[textEdit.text] = response
func _mark_errors_in_text(textEdit: TextEdit):
if(!checkDict.has(textEdit.text)):
textEdit.syntax_highlighter=null
return
var check: LanguageToolApiWrapper.LanguageToolCheckResponse = checkDict[textEdit.text]
textEdit.syntax_highlighter = LanguageToolErrorSyntaxHighlighter.new(check)
func _apply_text_change(textEdit:TextEdit, newText: String, _match:LanguageToolApiWrapper.LanguageToolCheckResponse.Match):
var oldText = textEdit.text
var removedOldWord = oldText.erase(_match.offset,_match.length)
var newWordInserted = removedOldWord.insert(_match.offset,newText)
textEdit.text = newWordInserted
textEdit.text_changed.emit()
overlay.hideOverlay()
_check_text(textEdit)
_mark_errors_in_text(textEdit)
func _find_multiline_text_edits()->Array[TextEdit]:
var multilinteTexts:Array[Node] = _find_recursive(
EditorInterface.get_inspector().get_child(0).get_child(2),
"EditorPropertyMultilineText");
var textEditors:Array[TextEdit]
textEditors.assign( multilinteTexts.map(func(c):return c.get_child(0).get_child(0) as TextEdit))
return textEditors
func _find_recursive(node: Node, type: Variant) -> Array[Node]:
if type is String:
if node.get_class() == type:
return [node]
elif is_instance_of(node, type):
return [node]
var retval: Array[Node] = []
for child in node.get_children():
retval.append_array(_find_recursive(child, type))
return retval
@@ -1 +0,0 @@
uid://bi8yv26eglkso
@@ -1,32 +0,0 @@
@tool
extends Object
class_name LanguageToolUtils
static func offset_to_row_column(offset:int, text:String)->Vector2i:
var row:int = 0
var column:int = 0
if offset > text.length():
return Vector2i(-1,-1)
for i in offset:
if text[i] == "\n":
row+=1
column = 0
else:
column+=1
return Vector2i(row, column)
static func row_column_to_offset(row:int, column:int, text:String) -> int:
var current_row:int = 0
var current_column:int = 0
for i in text.length():
if current_row == row and current_column == column:
return i
if text[i] == "\n":
current_row += 1
current_column = 0
else:
current_column += 1
return -1
@@ -1 +0,0 @@
uid://q01v4f8pfgfe
@@ -1,211 +0,0 @@
@tool
class_name LanguageToolApiWrapper
extends Node
const BASE_URL := "https://api.languagetoolplus.com/v2"
func _make_request(endpoint: String, method: HTTPClient.Method = HTTPClient.METHOD_GET, data: Dictionary = {}, headers: Dictionary = {}):
var url = BASE_URL + endpoint
var scheme_split = url.split("://")
var scheme = scheme_split[0]
var rest = scheme_split[1]
var host_and_path = rest.split("/", false, 1)
var host = host_and_path[0]
var path = "/" + host_and_path[1] if host_and_path.size() > 1 else "/"
var port = 443 if scheme == "https" else 80
var client = HTTPClient.new()
var tlsOptions: TLSOptions = (TLSOptions.client() if scheme == "https" else null)
var err = client.connect_to_host(host, port, tlsOptions)
if err != OK:
push_error("Failed to connect to host: " + str(err))
return null
while client.get_status() in [HTTPClient.STATUS_CONNECTING, HTTPClient.STATUS_RESOLVING]:
client.poll()
OS.delay_msec(10)
var header_array = []
for k in headers.keys():
header_array.append(str(k) + ": " + str(headers[k]))
var body = ""
if method == HTTPClient.METHOD_POST:
body = ""
if data.size() > 0:
body = client.query_string_from_dict(data)
header_array.append("Content-Type: application/x-www-form-urlencoded")
header_array.append("Content-Length: " + str(body.length()))
client.request(HTTPClient.METHOD_POST, path, header_array, body)
else:
if data.size() > 0:
path += "?" + client.query_string_from_dict(data)
client.request(HTTPClient.METHOD_GET, path, header_array)
while client.get_status() == HTTPClient.STATUS_REQUESTING:
client.poll()
OS.delay_msec(10)
var response = ""
while client.get_status() == HTTPClient.STATUS_BODY or client.has_response():
client.poll()
var chunk = client.read_response_body_chunk()
if chunk.size() == 0:
break
response += chunk.get_string_from_utf8()
OS.delay_msec(10)
var resp_code = client.get_response_code()
if resp_code != 200:
push_error("HTTP error: " + str(resp_code) + "\\n" + response)
return null
var json = JSON.new()
var json_err = json.parse(response)
if json_err != OK:
push_error("JSON parse error: " + str(json_err) + "\\n" + response)
return null
return json.get_data()
func check(text: String, language: String = "auto", opts: Dictionary = {}) -> LanguageToolCheckResponse:
var data = {
"text": text,
"language": language
}
for k in opts.keys():
data[k] = opts[k]
print("Checking text: "+text)
return LanguageToolCheckResponse.new(_make_request("/check", HTTPClient.METHOD_POST, data))
func get_languages():
return _make_request("/languages", HTTPClient.METHOD_GET)
func list_words(username: String, apiKey: String, offset: int = 0, limit: int = 10, dicts: String = ""):
var data = {
"username": username,
"apiKey": apiKey,
"offset": offset,
"limit": limit
}
if dicts != "":
data["dicts"] = dicts
return _make_request("/words", HTTPClient.METHOD_GET, data)
func add_word(word: String, username: String, apiKey: String, dict: String = ""):
var data = {
"word": word,
"username": username,
"apiKey": apiKey
}
if dict != "":
data["dict"] = dict
return _make_request("/words/add", HTTPClient.METHOD_POST, data)
func delete_word(word: String, username: String, apiKey: String, dict: String = ""):
var data = {
"word": word,
"username": username,
"apiKey": apiKey
}
if dict != "":
data["dict"] = dict
return _make_request("/words/delete", HTTPClient.METHOD_POST, data)
static func percent_encode(text: String) -> String:
return text.uri_encode()
class LanguageToolCheckResponse:
# Software info
var software_name: String
var software_version: String
var software_build_date: String
var software_api_version: int
var software_status: String = ""
var software_premium: bool = false
# Language info
var language_name: String
var language_code: String
var detected_language_name: String
var detected_language_code: String
# Match structure
class Match:
var message: String
var short_message: String = ""
var offset: int
var length: int
var replacements: Array[String] = []
var context_text: String
var context_offset: int
var context_length: int
var sentence: String
class Rule:
var id: String
var sub_id: String = ""
var description: String
var urls: Array[String] = []
var issue_type: String = ""
class Category:
var id: String
var name: String
var category: Category
var rule: Rule
var matches: Array[Match] = []
func _init(response: Variant) -> void:
# Parse software
var sw = response.software if response.has("software") else {}
software_name = sw.name if sw.has("name") else ""
software_version = sw.version if sw.has("version") else ""
software_build_date = sw.buildDate if sw.has("buildDate") else ""
software_api_version = sw.apiVersion if sw.has("apiVersion") else 0
software_status = sw.status if sw.has("status") else ""
software_premium = sw.premium if sw.has("premium") else false
# Parse language
var lang = response.language if response.has("language") else {}
language_name = lang.name if lang.has("name") else ""
language_code = lang.code if lang.has("code") else ""
var det_lang = lang.detectedLanguage if lang.has("detectedLanguage") else {}
detected_language_name = det_lang.name if det_lang.has("name") else ""
detected_language_code = det_lang.code if det_lang.has("code") else ""
# Parse matches
matches = []
var matches_arr = response.matches if response.has("matches") else []
for m in matches_arr:
var _match = Match.new()
_match.message = m.message if m.has("message") else ""
_match.short_message = m.shortMessage if m.has("shortMessage") else ""
_match.offset = m.offset if m.has("offset") else 0
_match.length = m.length if m.has("length") else 0
#_match.replacements = []
var replacements_arr = m.replacements if m.has("replacements") else []
for r in replacements_arr:
_match.replacements.append(r.value if r.has("value") else "")
var ctx = m.context if m.has("context") else {}
_match.context_text = ctx.text if ctx.has("text") else ""
_match.context_offset = ctx.offset if ctx.has("offset") else 0
_match.context_length = ctx.length if ctx.has("length") else 0
_match.sentence = m.sentence if m.has("sentence") else ""
var rule_dict = m.rule if m.has("rule") else {}
var rule = Match.Rule.new()
rule.id = rule_dict.id if rule_dict.has("id") else ""
rule.sub_id = rule_dict.subId if rule_dict.has("subId") else ""
rule.description = rule_dict.description if rule_dict.has("description") else ""
#rule.urls = []
var urls_arr = rule_dict.urls if rule_dict.has("urls") else []
for u in urls_arr:
rule.urls.append(u.value if u.has("value") else "")
rule.issue_type = rule_dict.issueType if rule_dict.has("issueType") else ""
var cat = rule_dict.category if rule_dict.has("category") else {}
var category = Match.Rule.Category.new()
category.id = cat.id if cat.has("id") else ""
category.name = cat.name if cat.has("name") else ""
rule.category = category
_match.rule = rule
matches.append(_match)
@@ -1 +0,0 @@
uid://bkyd022t8ugkw
-8
View File
@@ -1,8 +0,0 @@
@tool
extends EditorScript
func _run():
var api = LanguageToolApiWrapper.new()
EditorInterface.get_base_control().add_child(api)
var result = api.check("Hello this is a santence how are you")
print(result.matches[0])
@@ -1 +0,0 @@
uid://77jt5suj0wdj
@@ -1,47 +0,0 @@
@tool
extends EditorScript
var testButton: Button
func _run():
#var selected: Node = EditorInterface.get_inspector().get_child(0).get_child(2)
#_print_info(selected)
#print((EditorInterface.get_inspector().get_child(0).get_child(2).get_child(-1) as Button).text)
#print((selected as LineEdit).text)
#(selected as LineEdit).insert_text_at_caret("hello")
#(selected as LineEdit).text_changed.emit((selected as LineEdit).text)
#print(selected.get_class())
#print(is_instance_of(selected, EditorPropertyText))
#print(_find_recursive(selected,"EditorPropertyMultilineText")[0].get_child(0).get_child(0).get_class())
#print(_find_recursive(selected,"EditorPropertyText")[0].get_child(0).get_child(0).get_class())
testButton = Button.new()
testButton.text = "Remove this button"
#testButton.global_position = Vector2(1904.0, 305.0)
testButton.pressed.connect(
func():
testButton.get_parent().remove_child(testButton)
testButton.queue_free()
)
EditorInterface.get_base_control().add_child(testButton)
pass
func _print_info(node: Control):
print("Name: "+node.name)
print("Children:")
for child in node.get_children():
print(" - "+child.name)
func _find_recursive(node: Node, type: Variant) -> Array[Node]:
if type is String:
if node.get_class() == type:
return [node]
elif is_instance_of(node, type):
return [node]
var retval: Array[Node] = []
for child in node.get_children():
retval.append_array(_find_recursive(child, type))
return retval
@@ -1 +0,0 @@
uid://t6f7snttaggn
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://stexru1hfl0g"
path="res://.godot/imported/chugeist_Arms.png-e020fdb3f00a7939c26a3c678f834a6f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Chuga/Chuga Parts 2D/chugeist_Arms.png"
dest_files=["res://.godot/imported/chugeist_Arms.png-e020fdb3f00a7939c26a3c678f834a6f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chedxr6kou034"
path="res://.godot/imported/chugeist_Hair.png-1f5d05ccd86a4a25b1dbda51024bd289.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Chuga/Chuga Parts 2D/chugeist_Hair.png"
dest_files=["res://.godot/imported/chugeist_Hair.png-1f5d05ccd86a4a25b1dbda51024bd289.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ldsllcwxhsgk"
path="res://.godot/imported/chugeist_Head.png-60572347a0b3f20c608ab120384e00ce.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Chuga/Chuga Parts 2D/chugeist_Head.png"
dest_files=["res://.godot/imported/chugeist_Head.png-60572347a0b3f20c608ab120384e00ce.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bpevmu5fq0j3c"
path="res://.godot/imported/chugeist_Legs.png-f5da318d8b316fb000d6b6c3a8b6b966.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Chuga/Chuga Parts 2D/chugeist_Legs.png"
dest_files=["res://.godot/imported/chugeist_Legs.png-f5da318d8b316fb000d6b6c3a8b6b966.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bq75ghtiefu28"
path="res://.godot/imported/chugeist_Torso.png-215ee6bbe3ab9ae64bdc98b299f677a7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Chuga/Chuga Parts 2D/chugeist_Torso.png"
dest_files=["res://.godot/imported/chugeist_Torso.png-215ee6bbe3ab9ae64bdc98b299f677a7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ce04nexh36uwe"
path="res://.godot/imported/icon-seed-tomatoe.png-f99f14181586ef4f8a8e12cfb3c0a0d0.ctex"
uid="uid://cfk0fey087wt2"
path="res://.godot/imported/ChugaBack.png-499f9c0a898bd4d03fb0c657c646f62c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/ui/UI/icons/icon-seed-tomatoe.png"
dest_files=["res://.godot/imported/icon-seed-tomatoe.png-f99f14181586ef4f8a8e12cfb3c0a0d0.ctex"]
source_file="res://art/animation/2D skeletial chars/Chuga/ChugaBack.png"
dest_files=["res://.godot/imported/ChugaBack.png-499f9c0a898bd4d03fb0c657c646f62c.ctex"]
[params]
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://20dlga08j4ai"
path="res://.godot/imported/chugeist.png-df36362fa038656d9b1f7eb4992012db.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Chuga/chugeist.png"
dest_files=["res://.godot/imported/chugeist.png-df36362fa038656d9b1f7eb4992012db.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://fbqsf00v1rfk"
path="res://.godot/imported/Arms-0000.png-1437a7dc61e123c45e36779cffff9e76.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Arms-0000.png"
dest_files=["res://.godot/imported/Arms-0000.png-1437a7dc61e123c45e36779cffff9e76.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dk63xeqwu23aq"
path="res://.godot/imported/Arms-0001.png-1d74e1911ee7220ed9a63a247cba4369.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Arms-0001.png"
dest_files=["res://.godot/imported/Arms-0001.png-1d74e1911ee7220ed9a63a247cba4369.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://e7e74uwnap7s"
path="res://.godot/imported/Arms-Extra-0000.png-8ae550b7d00be5033b2efd4e97cc0acb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Arms-Extra-0000.png"
dest_files=["res://.godot/imported/Arms-Extra-0000.png-8ae550b7d00be5033b2efd4e97cc0acb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bd2vd6wt37eps"
path="res://.godot/imported/Arms-Extra-0001.png-046adcd4a781de10d63c86ba06644cd0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Arms-Extra-0001.png"
dest_files=["res://.godot/imported/Arms-Extra-0001.png-046adcd4a781de10d63c86ba06644cd0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b74gm2dafhvjd"
path="res://.godot/imported/Equipment.png-b3c17ac62a77f54ac90e50af109b2e03.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Equipment.png"
dest_files=["res://.godot/imported/Equipment.png-b3c17ac62a77f54ac90e50af109b2e03.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c5hn34t6sn3np"
path="res://.godot/imported/Eyes.png-1f73c400229abba23d90de2a49b0b019.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Eyes.png"
dest_files=["res://.godot/imported/Eyes.png-1f73c400229abba23d90de2a49b0b019.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c85kvblf6131t"
path="res://.godot/imported/Fingers.png-a4a648cd7e89d299af6096cc57f90b99.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Fingers.png"
dest_files=["res://.godot/imported/Fingers.png-a4a648cd7e89d299af6096cc57f90b99.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://l6wgqa40ia6b"
path="res://.godot/imported/Fist.png-adea619304faec9368ff2c3e9bedef8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Fist.png"
dest_files=["res://.godot/imported/Fist.png-adea619304faec9368ff2c3e9bedef8a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgntreov1wb1y"
path="res://.godot/imported/Haare.png-bd08e4bc6030bdeeec53a2d7cf4e0815.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Haare.png"
dest_files=["res://.godot/imported/Haare.png-bd08e4bc6030bdeeec53a2d7cf4e0815.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8ju8auestosf"
path="res://.godot/imported/Head.png-6462484cfb6b9d3ad0bbd495deb0e98e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Head.png"
dest_files=["res://.godot/imported/Head.png-6462484cfb6b9d3ad0bbd495deb0e98e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 569 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://drqjng2136kn2"
path="res://.godot/imported/Legs.png-11a98449aff8f7ca42e89b59fc2cfba3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Legs.png"
dest_files=["res://.godot/imported/Legs.png-11a98449aff8f7ca42e89b59fc2cfba3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cht6io8h8krfl"
path="res://.godot/imported/Pupillen.png-61a476317dab8e596a6241a1068dc9d0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Pupillen.png"
dest_files=["res://.godot/imported/Pupillen.png-61a476317dab8e596a6241a1068dc9d0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c78sn4bgthkej"
path="res://.godot/imported/Rucksack.png-9a83219ea2501fe5379d24bad891e5fc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Rucksack.png"
dest_files=["res://.godot/imported/Rucksack.png-9a83219ea2501fe5379d24bad891e5fc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhubq74ck2ep7"
path="res://.godot/imported/Torso.png-9672286701ac9bce2f0cd92bf9878c25.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/Torso.png"
dest_files=["res://.godot/imported/Torso.png-9672286701ac9bce2f0cd92bf9878c25.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwlu4bgeoy7w1"
path="res://.godot/imported/creepy moth shape.png-d69b08e0f1f0b6fa1e724556331947cf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/creepy moth shape.png"
dest_files=["res://.godot/imported/creepy moth shape.png-d69b08e0f1f0b6fa1e724556331947cf.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 734 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dn2fvebssq8vs"
path="res://.godot/imported/vesna-more-tools.png-f74ef0c3556fadfff8abc4b58d51e40a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/Vesna_Parts/vesna-more-tools.png"
dest_files=["res://.godot/imported/vesna-more-tools.png-f74ef0c3556fadfff8abc4b58d51e40a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://lnwc1ojnpw47"
path="res://.godot/imported/image (2).png-7fb5f3cb35ee7eb17ff0300b469e413e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Vesna/image (2).png"
dest_files=["res://.godot/imported/image (2).png-7fb5f3cb35ee7eb17ff0300b469e413e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 641 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bmpy202sg7c8n"
path="res://.godot/imported/Yeli_Arms.png-2c9fc9da02cf909bbfa5eaed3cfbc5aa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Yeli/Yeli Parts/Yeli_Arms.png"
dest_files=["res://.godot/imported/Yeli_Arms.png-2c9fc9da02cf909bbfa5eaed3cfbc5aa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dl5um6p3dejqi"
path="res://.godot/imported/Yeli_Body.png-c387ade1c7f6d801d40890fafd8ce545.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Yeli/Yeli Parts/Yeli_Body.png"
dest_files=["res://.godot/imported/Yeli_Body.png-c387ade1c7f6d801d40890fafd8ce545.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cstgevlfj06lb"
path="res://.godot/imported/Yeli_Head.png-c3c2784d97b8871f2d1a953e8af87cbe.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Yeli/Yeli Parts/Yeli_Head.png"
dest_files=["res://.godot/imported/Yeli_Head.png-c3c2784d97b8871f2d1a953e8af87cbe.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ukw48owrkygy"
path="res://.godot/imported/Yeli_Legs.png-568b1ef7f0ac735c93249496ad897588.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Yeli/Yeli Parts/Yeli_Legs.png"
dest_files=["res://.godot/imported/Yeli_Legs.png-568b1ef7f0ac735c93249496ad897588.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bw5qjv458161u"
path="res://.godot/imported/Yeli_Mouth.png-db124cb9b6be4e4a0b81df050d8e5ff9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Yeli/Yeli Parts/Yeli_Mouth.png"
dest_files=["res://.godot/imported/Yeli_Mouth.png-db124cb9b6be4e4a0b81df050d8e5ff9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dg4ve6gm5cbct"
path="res://.godot/imported/yeli.png-5d40f305a5a927b68a21c8f50eac07b3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/animation/2D skeletial chars/Yeli/yeli.png"
dest_files=["res://.godot/imported/yeli.png-5d40f305a5a927b68a21c8f50eac07b3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

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